@hey-api/openapi-ts 0.53.11 → 0.53.12

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../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.3/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/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.3/node_modules/cross-spawn/lib/util/readShebang.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","../src/index.ts","../src/utils/config.ts","../src/generate/class.ts","../src/utils/getHttpRequestName.ts","../src/utils/sort.ts","../src/generate/utils.ts","../src/generate/client.ts","../src/generate/core.ts","../src/utils/regexp.ts","../src/compiler/utils.ts","../src/utils/escape.ts","../src/compiler/types.ts","../src/compiler/module.ts","../src/compiler/classes.ts","../src/compiler/convert.ts","../src/compiler/return.ts","../src/compiler/transform.ts","../src/compiler/typedef.ts","../src/compiler/index.ts","../src/generate/indexFile.ts","../src/generate/plugins.ts","../src/openApi/3.0.3/parser/index.ts","../src/openApi/3.1/parser/operation.ts","../src/openApi/3.1/parser/index.ts","../src/openApi/config.ts","../src/openApi/common/parser/service.ts","../src/utils/const.ts","../src/utils/camelCase.ts","../src/utils/transform.ts","../src/openApi/v3/parser/inferType.ts","../src/openApi/common/parser/sanitize.ts","../src/openApi/common/parser/stripNamespace.ts","../src/openApi/common/parser/type.ts","../src/utils/unique.ts","../src/openApi/common/parser/getEnums.ts","../src/openApi/common/parser/getPattern.ts","../src/openApi/v2/parser/getModelProperties.ts","../src/openApi/common/parser/getRef.ts","../src/openApi/v2/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v2/parser/getModelComposition.ts","../src/openApi/v2/parser/getModel.ts","../src/openApi/v2/parser/getModels.ts","../src/openApi/common/parser/operation.ts","../src/openApi/common/parser/getDefault.ts","../src/openApi/v2/parser/getOperationParameter.ts","../src/openApi/v2/parser/getOperationParameters.ts","../src/openApi/common/parser/sort.ts","../src/openApi/v2/parser/getOperationResponse.ts","../src/openApi/v2/parser/getOperationResponses.ts","../src/openApi/v2/parser/operation.ts","../src/openApi/v2/parser/getOperations.ts","../src/openApi/v2/parser/getServer.ts","../src/openApi/v2/index.ts","../src/utils/meta.ts","../src/utils/enum.ts","../src/openApi/v3/parser/discriminator.ts","../src/openApi/v3/parser/getModelProperties.ts","../src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v3/parser/getModelComposition.ts","../src/openApi/v3/parser/getModel.ts","../src/openApi/v3/parser/parameter.ts","../src/openApi/v3/parser/getModels.ts","../src/openApi/v3/parser/getOperationParameter.ts","../src/openApi/v3/parser/getOperationParameters.ts","../src/openApi/v3/parser/getContent.ts","../src/openApi/v3/parser/getOperationRequestBody.ts","../src/openApi/v3/parser/getOperationResponse.ts","../src/openApi/v3/parser/getOperationResponses.ts","../src/openApi/v3/parser/operation.ts","../src/openApi/v3/parser/getOperations.ts","../src/openApi/v3/parser/getServer.ts","../src/openApi/v3/index.ts","../src/openApi/index.ts","../src/generate/schemas.ts","../src/utils/type.ts","../src/generate/services.ts","../src/generate/transformers.ts","../src/generate/types.ts","../src/generate/output.ts","../src/plugins/@hey-api/schemas/config.ts","../src/plugins/@hey-api/services/config.ts","../src/plugins/@hey-api/types/config.ts","../src/plugins/@tanstack/query-core/plugin.ts","../src/plugins/@tanstack/react-query/config.ts","../src/plugins/@tanstack/solid-query/config.ts","../src/plugins/@tanstack/svelte-query/config.ts","../src/plugins/@tanstack/vue-query/config.ts","../src/plugins/zod/plugin.ts","../src/plugins/zod/config.ts","../src/plugins/index.ts","../src/types/config.ts","../src/utils/getOpenApiSpec.ts","../src/utils/handlebars.ts","../src/legacy/handlebars/compiled/client.js","../src/legacy/handlebars/compiled/core/angular/getHeaders.js","../src/legacy/handlebars/compiled/core/angular/getRequestBody.js","../src/legacy/handlebars/compiled/core/angular/getResponseBody.js","../src/legacy/handlebars/compiled/core/angular/getResponseHeader.js","../src/legacy/handlebars/compiled/core/angular/request.js","../src/legacy/handlebars/compiled/core/angular/sendRequest.js","../src/legacy/handlebars/compiled/core/ApiError.js","../src/legacy/handlebars/compiled/core/ApiRequestOptions.js","../src/legacy/handlebars/compiled/core/ApiResult.js","../src/legacy/handlebars/compiled/core/axios/getHeaders.js","../src/legacy/handlebars/compiled/core/axios/getRequestBody.js","../src/legacy/handlebars/compiled/core/axios/getResponseBody.js","../src/legacy/handlebars/compiled/core/axios/getResponseHeader.js","../src/legacy/handlebars/compiled/core/axios/request.js","../src/legacy/handlebars/compiled/core/axios/sendRequest.js","../src/legacy/handlebars/compiled/core/BaseHttpRequest.js","../src/legacy/handlebars/compiled/core/CancelablePromise.js","../src/legacy/handlebars/compiled/core/fetch/getHeaders.js","../src/legacy/handlebars/compiled/core/fetch/getRequestBody.js","../src/legacy/handlebars/compiled/core/fetch/getResponseBody.js","../src/legacy/handlebars/compiled/core/fetch/getResponseHeader.js","../src/legacy/handlebars/compiled/core/fetch/request.js","../src/legacy/handlebars/compiled/core/fetch/sendRequest.js","../src/legacy/handlebars/compiled/core/functions/base64.js","../src/legacy/handlebars/compiled/core/functions/catchErrorCodes.js","../src/legacy/handlebars/compiled/core/functions/getFormData.js","../src/legacy/handlebars/compiled/core/functions/getQueryString.js","../src/legacy/handlebars/compiled/core/functions/getUrl.js","../src/legacy/handlebars/compiled/core/functions/isBlob.js","../src/legacy/handlebars/compiled/core/functions/isFormData.js","../src/legacy/handlebars/compiled/core/functions/isString.js","../src/legacy/handlebars/compiled/core/functions/isStringWithValue.js","../src/legacy/handlebars/compiled/core/functions/isSuccess.js","../src/legacy/handlebars/compiled/core/functions/resolve.js","../src/legacy/handlebars/compiled/core/HttpRequest.js","../src/legacy/handlebars/compiled/core/OpenAPI.js","../src/legacy/handlebars/compiled/core/request.js","../src/legacy/handlebars/compiled/core/xhr/getHeaders.js","../src/legacy/handlebars/compiled/core/xhr/getRequestBody.js","../src/legacy/handlebars/compiled/core/xhr/getResponseBody.js","../src/legacy/handlebars/compiled/core/xhr/getResponseHeader.js","../src/legacy/handlebars/compiled/core/xhr/request.js","../src/legacy/handlebars/compiled/core/xhr/sendRequest.js","../src/utils/parse.ts","../src/utils/performance.ts","../src/utils/postprocess.ts"],"names":["require_windows","__commonJSMin","exports","module","isexe","sync","fs","checkPathExt","path","options","pathext","i","p","checkStat","stat","cb","er","require_mode","checkMode","mod","uid","gid","myUid","myGid","u","g","o","ug","ret","require_isexe","core","resolve","reject","is","require_which","isWindows","COLON","getNotFoundError","cmd","getPathInfo","opt","colon","pathEnv","pathExtExe","pathExt","which","found","step","ppRaw","pathPart","pCmd","subStep","ii","ext","res","whichSync","j","cur","require_path_key","pathKey","environment","key","require_resolveCommand","getPathKey","resolveCommandAttempt","parsed","withoutPathExt","env","cwd","hasCustomCwd","shouldSwitchCwd","resolved","resolveCommand","require_escape","metaCharsRegExp","escapeCommand","arg","escapeArgument","doubleEscapeMetaChars","require_shebang_regex","require_shebang_command","shebangRegex","string","match","argument","binary","require_readShebang","shebangCommand","readShebang","command","buffer","fd","require_parse","escape","isWin","isExecutableRegExp","isCmdShimRegExp","detectShebang","shebang","parseNonShell","commandFile","needsShell","needsDoubleEscapeMetaChars","shellCommand","parse","args","require_enoent","notFoundError","original","syscall","hookChildProcess","cp","originalEmit","name","arg1","err","verifyENOENT","status","verifyENOENTSync","require_cross_spawn","enoent","spawn","spawned","spawnSync","result","import_cross_spawn","_config","getConfig","setConfig","config","isLegacyClient","getHttpRequestName","client","sort","a","b","nameA","nameB","sorterByName","sortByName","items","ensureDirSync","existsSync","mkdirSync","relativeModulePath","moduleOutput","sourceOutput","outputParts","generateClientClass","openApi","outputPath","templates","templateResult","writeFileSync","clientModulePath","clientOptionsTypeName","generateClient","moduleName","dirPath","clientModulePathComponents","__require","clientSrcPath","file","copyFileSync","generateCore","context","rmSync","requestFile","illegalStartCharactersRegExp","reservedWordsRegExp","validTypescriptIdentifierRegExp","escapeName","value","unescapeName","escapeComment","_l","w","EOL","CONFIG","ts","printer","createSourceFile","sourceText","blankSourceFile","unescapeUnicode","_","hex","tsNodeToString","node","unescape","stringToTsNodes","createIdentifier","text","ots","alias","asType","nameNode","aliasNode","hasBothQuotes","hasNewlines","hasUnescapedBackticks","isBacktickEscaped","isTsNode","isType","processCommentObject","commentObject","lines","line","jsdocTexts","index","jsdoc","cleanedJsdoc","addLeadingComments","comments","isObjectStyle","comment","commentObjects","createTypeNode","base","createTypeReferenceNode","createPropertyAccessChain","expression","createPropertyAccessExpression","isOptional","nodeExpression","nodeName","toExpression","identifiers","isValueAccess","shorthand","createArrayLiteralExpression","createObjectType","parts","toAccessLevelModifiers","access","keyword","modifiers","toParameterDeclarations","parameters","parameter","param","createKeywordTypeNode","kind","toTypeParameters","types","type","createArrowFunction","async","multiLine","returnType","statements","createAnonymousFunction","elements","createAwaitExpression","obj","properties","canShorthand","assignment","nameIdentifier","initializer","createEnumDeclaration","leadingComment","declaration","createNamespaceDeclaration","createIndexedAccessTypeNode","indexType","objectType","createStringLiteral","createConditionalExpression","condition","whenFalse","whenTrue","createTypeOfExpression","createTypeAliasDeclaration","exportType","typeParameters","typeArguments","typeName","createTypeParenthesizedNode","createExportAllDeclaration","createCallExpression","functionName","argumentsArray","createNamedExportDeclarations","exportedTypes","hasNonTypeExport","item","exportClause","moduleSpecifier","createConstVariable","assertion","destructure","exportConst","statement","createNamedImportDeclarations","imports","importedTypes","hasNonTypeImport","namedBindings","importClause","createConstructorDeclaration","accessLevel","createMethodDeclaration","isStatic","createClassDeclaration","decorator","members","m","member","expressionToStatement","createReturnStatement","createReturnFunctionCall","createReturnVariable","createSafeAccessExpression","element","createAccessExpression","createPropertyAccessExpressions","expressions","createBinaryExpression","left","operator","right","createIfStatement","thenStatement","elseStatement","createDateTransformMutation","safeAccessExpression","accessExpression","createFunctionTransformMutation","transformerName","createArrayTransformMutation","createDateTransformerExpression","parameterName","createArrayMapTransform","transformExpression","nullNode","maybeNullable","isNullable","createTypeInterfaceNode","property","questionToken","signature","createTypeUnionNode","nodes","createTypeIntersectionNode","createTypeTupleNode","createTypeRecordNode","keys","values","keyNode","valueNode","createTypeArrayNode","splitNameAndExtension","fileName","extension","TypeScriptFile","dir","header","importedItem","moduleMap","withExtension","separator","output","importsStringArray","_module","compiler","generateIndexFile","files","generatePlugins","plugin","outputDir","parseV3_0_3","spec","parseOperation","method","operation","operationIds","operationKey","regexp","parseV3_1","pathItem","allowedServiceMethods","getServiceVersion","version","refParametersPartial","refSchemasPartial","UPPERCASE","LOWERCASE","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","preserveCamelCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","isLastLastCharPreserved","character","camelCase","input","pascalCase","offset","identifier","transformServiceName","transformTypeName","cleanAndTransformTypeName","transformed","ensureValidTypeScriptJavaScriptIdentifier","inferType","definition","definitionTypes","isDefinitionTypeNullable","getDefinitionTypes","isDefinitionNullable","replaceInvalidTypeScriptJavaScriptIdentifier","sanitizeNamespaceIdentifier","sanitizeOperationParameterName","withoutBrackets","stripNamespace","getMappedType","format","hasSquareBracketsRegExp","getType","debug","joinedType","mapped","typeWithoutNamespace","matches","match1","match2","encodedType","unique","arr","getEnums","descriptions","names","getPattern","pattern","getModelProperties","getModel","models","propertyName","propertyRequired","model","ESCAPED_REF_SLASH","ESCAPED_REF_TILDE","getRef","paths","decodedPath","getRequiredPropertiesFromComposition","definitions","required","schema","getModelComposition","composition","hasProperties","hasEnums","requiredProperties","requiredProperty","modelProperties","modelProperty","isDefinition","meta","definitionRef","enums","arrayItems","additionalProperties","definitionType","getModels","definitionName","getOperationKey","getOperationResponseHeader","operationResponses","isOperationParameterRequired","parseResponseStatusCode","code","sorterByResponseStatusCode","isErrorStatusCode","isSuccessStatusCode","inferDefaultResponseTypes","response","responses","addResponseType","description","$refs","errorKeywords","tagResponseTypes","getDefault","getOperationParameter","operationParameterWithoutName","operationParameter","allowedIn","getOperationParameters","operationParameters","parameterOrReference","parameterDef","skip","toSortedByRequired","aNeedsValue","bNeedsValue","getOperationResponse","operationResponse","getOperationResponses","responseCode","responseOrReference","getOperation","op","pathParams","url","operationWithoutName","successResponses","getOperations","operations","pathParameters","getServer","scheme","host","basePath","server","getParametersMeta","getSchemasMeta","enumKey","customName","enumUnionType","enumerator","enumValue","union","enumEntry","enumMeta","serialized","inverseDictionary","map","m2","findOneOfParentDiscriminator","parent","mapPropertyValue","discriminator","mapping","getAdditionalPropertiesModel","ap","apModel","apType","additionalPropertiesType","propertyValues","findModelComposition","def","foundComposition","propertiesProperty","initialValues","parentDefinition","inferredType","acc","arrayItemsDefinition","definitionConst","modelConst","getParameterSchema","contents","mediaTypeObject","mediaType","BASIC_MEDIA_TYPES","getContent","content","basicMediaTypeWithSchema","cleanMediaType","firstMediaTypeWithSchema","getOperationRequestBody","body","requestBody","mergeParameters","opParams","globalParams","mergedParameters","pendingParameters","pendingParam","requestBodyDef","variables","variable","parseExperimental","s","ensureValidSchemaOutput","parentKey","toSchemaName","validName","generateSchemas","addSchema","isModelDate","typeReference","typeNode","typeArray","toType","typeEnum","typeDict","typeUnionOrIntersection","style","typeInterface","isLegacy","maybeRequired","transformTypeKeyName","setUniqueTypeName","count","create","nameTransformer","unsetUniqueTypeName","generateImport","onImport","setUniqueTypeNameArgs","created","modelResponseTransformerTypeName","operationDataTypeName","operationErrorTypeName","operationResponseTransformerTypeName","operationResponseTypeName","operationOptionsType","importedType","throwOnError","optionsName","toOperationParamType","isRequired","getDefaultPrintable","typePath","toOperationReturnType","toOperationComment","params","toRequestOptions","onClientImport","operationName","responseTransformerName","toObj","prev","curr","errorResponses","errors","toOperationName","handleIllegal","toOperationStatements","errorType","responseType","processService","onNode","service","throwOnErrorTypeGeneric","compileFunctionParams","checkPrerequisites","generateServices","servicesOutput","imported","treeName","emptyModel","generateEnum","generateType","onCreated","processComposition","props","enumDeclarations","processType","processEnum","processScopedEnum","processModel","processServiceTypes","pathsMap","pathMap","methodMap","bodyParameters","bodyParameter","headerParameters","queryParameters","operationProperties","_method","methodParameters","reqKey","reqResParameters","resKey","generateTypes","dataVariableName","isVoidResponse","getRefModels","ref","refModel","ensureModelResponseTransformerExists","modelName","generateResponseTransformer","processArray","refModels","nameModelResponseTransformer","processProperty","onRemoveNode","generateResponseTransformers","nonVoidResponses","nameCreated","generateOutput","defaultConfig","toInfiniteQueryOptionsName","toMutationOptionsName","toQueryOptionsName","toQueryKeyName","isInfinite","getPaginationIn","paginationWordsRegExp","createInfiniteParamsFn","createQueryKeyFn","infiniteQueryOptionsFn","mutationOptionsFn","queryKeyName","queryOptionsFn","TOptionsType","getClientBaseUrlKey","createInfiniteParamsFunction","fn","createQueryKeyFunction","infiniteIdentifier","createQueryKeyType","queryKeyType","createTypeData","typesModulePath","nameTypeData","createTypeError","pluginName","nameTypeError","typeError","axiosError","createTypeResponse","nameTypeResponse","createQueryKeyLiteral","handler","mutationsType","typeInfiniteData","hasCreateInfiniteParamsFunction","hasCreateQueryKeyParamsFunction","hasInfiniteQueries","hasMutations","hasQueries","processedOperations","queryFn","hasUsedQueryFn","typeData","queryKeyStatement","paginationField","paginationParameter","typeResponse","typeQueryKey","typePageObjectParam","typePageParam","servicesModulePath","defaultPluginConfigs","CLIENTS","getOpenApiSpec","location","absolutePathOrUrl","$RefParser","client_default","container","depth0","helpers","partials","data","stack1","alias1","alias2","lookupProperty","alias3","getHeaders_default","getRequestBody_default","getResponseBody_default","getResponseHeader_default","request_default","sendRequest_default","ApiError_default","ApiRequestOptions_default","ApiResult_default","BaseHttpRequest_default","CancelablePromise_default","base64_default","catchErrorCodes_default","getFormData_default","getQueryString_default","getUrl_default","isBlob_default","isFormData_default","isString_default","isStringWithValue_default","isSuccess_default","resolve_default","HttpRequest_default","OpenAPI_default","registerHandlebarHelpers","Handlebars","registerHandlebarTemplates","operationFilterFn","operationParameterFilterFn","operationNameFn","urlWithoutPlaceholders","operationParameterNameFn","idEnd","id","idLength","idStart","Performance","PerformanceReport","totalMark","marks","totalDuration","totalName","mark","markMeasure","markDuration","percentage","postProcessClient","postProcessModel","postProcessOperations","postProcessService","services","parserOperation","tag","getServiceName","getNewService","clone","postProcessServiceOperations","formatters","linters","processOutput","logClientMessage","getClient","userConfig","getOutput","getPlugins","getSchemas","schemas","getServices","getTypes","initConfigs","configurationFile","configFromFile","loadConfig","configFile","dryRun","exportCore","experimental_parser","request","useOptions","plugins","createClient","configs","pCreateClient","clients","pClients","pClient","defineConfig","src_default"],"mappings":"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","file":"index.js","sourcesContent":["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\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/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');\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, 'spawn');\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 path from 'node:path';\n\nimport { loadConfig } from 'c12';\nimport { sync } from 'cross-spawn';\n\nimport { generateOutput } from './generate/output';\nimport { parse, parseExperimental } from './openApi';\nimport { defaultPluginConfigs } from './plugins';\nimport type { Client } from './types/client';\nimport type { ClientConfig, Config, UserConfig } from './types/config';\nimport { CLIENTS } from './types/config';\nimport { getConfig, isLegacyClient, setConfig } from './utils/config';\nimport { getOpenApiSpec } from './utils/getOpenApiSpec';\nimport { registerHandlebarTemplates } from './utils/handlebars';\nimport {\n operationFilterFn,\n operationNameFn,\n operationParameterFilterFn,\n operationParameterNameFn,\n} from './utils/parse';\nimport { Performance, PerformanceReport } from './utils/performance';\nimport { postProcessClient } from './utils/postprocess';\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<\n Extract<Config['output']['format'], string>,\n OutputProcessor\n> = {\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<\n Extract<Config['output']['lint'], string>,\n OutputProcessor\n> = {\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};\n\nconst processOutput = () => {\n const config = getConfig();\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 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\nconst logClientMessage = () => {\n const { client } = getConfig();\n switch (client.name) {\n case 'legacy/angular':\n return console.log('✨ Creating Angular client');\n case '@hey-api/client-axios':\n case 'legacy/axios':\n return console.log('✨ Creating Axios client');\n case '@hey-api/client-fetch':\n case 'legacy/fetch':\n return console.log('✨ Creating Fetch client');\n case 'legacy/node':\n return console.log('✨ Creating Node.js client');\n case 'legacy/xhr':\n return console.log('✨ Creating XHR client');\n }\n};\n\nconst getClient = (userConfig: ClientConfig): Config['client'] => {\n let client: Config['client'] = {\n bundle: false,\n name: '' as Config['client']['name'],\n };\n if (typeof userConfig.client === 'string') {\n client.name = userConfig.client;\n } else if (userConfig.client) {\n client = {\n ...client,\n ...userConfig.client,\n };\n }\n return client;\n};\n\nconst getOutput = (userConfig: ClientConfig): Config['output'] => {\n let output: Config['output'] = {\n format: false,\n lint: false,\n path: '',\n };\n if (typeof userConfig.output === 'string') {\n output.path = userConfig.output;\n } else {\n output = {\n ...output,\n ...userConfig.output,\n };\n }\n return output;\n};\n\nconst getPlugins = (userConfig: ClientConfig): Config['plugins'] => {\n const plugins: Config['plugins'] = (userConfig.plugins ?? []).map((plugin) =>\n typeof plugin === 'string'\n ? defaultPluginConfigs[plugin]\n : {\n ...defaultPluginConfigs[plugin.name],\n ...(plugin as (typeof defaultPluginConfigs)[(typeof plugin)['name']]),\n },\n ) as unknown as Config['plugins'];\n return plugins;\n};\n\nconst getSchemas = (userConfig: ClientConfig): Config['schemas'] => {\n let schemas: Config['schemas'] = {\n export: true,\n type: 'json',\n };\n if (typeof userConfig.schemas === 'boolean') {\n schemas.export = userConfig.schemas;\n } else {\n schemas = {\n ...schemas,\n ...userConfig.schemas,\n };\n }\n return schemas;\n};\n\nconst getServices = (userConfig: ClientConfig): Config['services'] => {\n let services: Config['services'] = {\n asClass: false,\n export: true,\n name: '{{name}}Service',\n operationId: true,\n response: 'body',\n };\n if (typeof userConfig.services === 'boolean') {\n services.export = userConfig.services;\n } else if (typeof userConfig.services === 'string') {\n services.include = userConfig.services;\n } else {\n services = {\n ...services,\n ...userConfig.services,\n };\n }\n return services;\n};\n\nconst getTypes = (\n userConfig: ClientConfig,\n services: Config['services'],\n): Config['types'] => {\n let types: Config['types'] = {\n dates: false,\n enums: false,\n export: true,\n name: 'preserve',\n tree: !services.export,\n };\n if (typeof userConfig.types === 'boolean') {\n types.export = userConfig.types;\n } else if (typeof userConfig.types === 'string') {\n types.include = userConfig.types;\n } else {\n types = {\n ...types,\n ...userConfig.types,\n };\n }\n return types;\n};\n\nconst initConfigs = async (userConfig: UserConfig): Promise<Config[]> => {\n let configurationFile: string | undefined = undefined;\n if (userConfig.configFile) {\n const parts = userConfig.configFile.split('.');\n configurationFile = parts.slice(0, parts.length - 1).join('.');\n }\n\n const { config: configFromFile } = await loadConfig<UserConfig>({\n configFile: configurationFile,\n name: 'openapi-ts',\n });\n\n const userConfigs: ClientConfig[] = Array.isArray(userConfig)\n ? userConfig\n : Array.isArray(configFromFile)\n ? configFromFile.map((config) => ({\n ...config,\n ...userConfig,\n }))\n : [{ ...(configFromFile ?? {}), ...userConfig }];\n\n return userConfigs.map((userConfig) => {\n const {\n base,\n configFile = '',\n debug = false,\n dryRun = false,\n exportCore = true,\n experimental_parser = false,\n input,\n name,\n request,\n useOptions = true,\n } = userConfig;\n\n if (debug) {\n console.warn('userConfig:', userConfig);\n }\n\n const output = getOutput(userConfig);\n\n if (!input) {\n throw new Error(\n '🚫 missing input - which OpenAPI specification should we use to generate your client?',\n );\n }\n\n if (!output.path) {\n throw new Error(\n '🚫 missing output - where should we generate your client?',\n );\n }\n\n const client = getClient(userConfig);\n\n if (client.name && !CLIENTS.includes(client.name)) {\n throw new Error('🚫 invalid client - select a valid client value');\n }\n\n if (!useOptions) {\n console.warn(\n '❗️ Deprecation warning: useOptions set to false. This setting will be removed in future versions. Please migrate useOptions to true https://heyapi.dev/openapi-ts/migrating.html#v0-27-38',\n );\n }\n\n const plugins = getPlugins(userConfig);\n const schemas = getSchemas(userConfig);\n const services = getServices(userConfig);\n const types = getTypes(userConfig, services);\n\n output.path = path.resolve(process.cwd(), output.path);\n\n const config = setConfig({\n base,\n client,\n configFile,\n debug,\n dryRun,\n experimental_parser,\n exportCore: isLegacyClient(client) ? exportCore : false,\n input,\n name,\n output,\n plugins,\n request,\n schemas,\n services,\n types,\n useOptions,\n });\n\n if (debug) {\n console.warn('config:', config);\n }\n\n return config;\n });\n};\n\n/**\n * Generate the OpenAPI client. This method will read the OpenAPI specification and based on the\n * given language it will generate the client, including the typed models, validation schemas,\n * service layer, etc.\n * @param userConfig {@link UserConfig} passed to the `createClient()` method\n */\nexport async function createClient(\n userConfig: UserConfig,\n): Promise<ReadonlyArray<Client>> {\n Performance.start('createClient');\n\n Performance.start('config');\n const configs = await initConfigs(userConfig);\n Performance.end('config');\n\n Performance.start('handlebars');\n const templates = registerHandlebarTemplates();\n Performance.end('handlebars');\n\n const pCreateClient = (config: Config) => async () => {\n Performance.start('openapi');\n const openApi =\n typeof config.input === 'string'\n ? await getOpenApiSpec(config.input)\n : (config.input as unknown as Awaited<\n ReturnType<typeof getOpenApiSpec>\n >);\n Performance.end('openapi');\n\n if (config.experimental_parser) {\n Performance.start('experimental_parser');\n parseExperimental({\n spec: openApi,\n });\n Performance.end('experimental_parser');\n } else {\n Performance.start('parser');\n const parsed = parse({\n config: {\n filterFn: {\n operation: operationFilterFn,\n operationParameter: operationParameterFilterFn,\n },\n nameFn: {\n operation: operationNameFn,\n operationParameter: operationParameterNameFn,\n },\n },\n openApi,\n });\n const client = postProcessClient(parsed);\n Performance.end('parser');\n\n logClientMessage();\n\n Performance.start('generator');\n await generateOutput(openApi, client, templates);\n Performance.end('generator');\n\n Performance.start('postprocess');\n if (!config.dryRun) {\n processOutput();\n\n console.log('✨ Done! Your client is located in:', config.output.path);\n }\n Performance.end('postprocess');\n\n return client;\n }\n };\n\n const clients: Array<Client> = [];\n\n const pClients = configs.map((config) => pCreateClient(config));\n for (const pClient of pClients) {\n const client = await pClient();\n if (client) {\n clients.push(client);\n }\n }\n\n Performance.end('createClient');\n\n if (userConfig.debug) {\n const perfReport = new PerformanceReport({\n totalMark: 'createClient',\n });\n perfReport.report({\n marks: [\n 'config',\n 'openapi',\n 'handlebars',\n 'parser',\n 'generator',\n 'postprocess',\n ],\n });\n }\n\n return clients;\n}\n\n/**\n * Type helper for openapi-ts.config.ts, returns {@link UserConfig} object\n */\nexport const defineConfig = (config: UserConfig): UserConfig => config;\n\nexport default {\n createClient,\n defineConfig,\n};\n\nexport type { OpenApiV3_0_3 } from './openApi/3.0.3';\nexport type { OpenApiV3_1 } from './openApi/3.1';\nexport type { UserConfig } from './types/config';\n","import type { Config } from '../types/config';\n\nlet _config: Config;\n\nexport const getConfig = () => _config;\n\nexport const setConfig = (config: Config) => {\n _config = config;\n return getConfig();\n};\n\nexport const isLegacyClient = (config: Config | Config['client']) => {\n const client = 'client' in config ? config.client.name : config.name;\n return client.startsWith('legacy/');\n};\n","import { writeFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport type { OpenApi } from '../openApi';\nimport type { Client } from '../types/client';\nimport { getConfig } from '../utils/config';\nimport { getHttpRequestName } from '../utils/getHttpRequestName';\nimport type { Templates } from '../utils/handlebars';\nimport { sortByName } from '../utils/sort';\nimport { ensureDirSync } from './utils';\n\n/**\n * Generate the OpenAPI client index file using the Handlebar template and write it to disk.\n * The index file just contains all the exports you need to use the client as a standalone\n * library. But you can also import individual models and services directly.\n * @param openApi {@link OpenApi} Dereferenced OpenAPI specification\n * @param outputPath Directory to write the generated files to\n * @param client Client containing models, schemas, and services\n * @param templates The loaded handlebar templates\n */\nexport const generateClientClass = async (\n openApi: OpenApi,\n outputPath: string,\n client: Client,\n templates: Templates,\n) => {\n const config = getConfig();\n\n const templateResult = templates.client({\n $config: config,\n ...client,\n httpRequest: getHttpRequestName(config.client),\n models: sortByName(client.models),\n services: sortByName(client.services),\n });\n\n if (config.name) {\n ensureDirSync(outputPath);\n writeFileSync(\n path.resolve(outputPath, `${config.name}.ts`),\n templateResult,\n );\n }\n};\n","import type { Config } from '../types/config';\n\n/**\n * Generate the HttpRequest filename based on the selected client\n * @param client HTTP client to generate\n */\nexport const getHttpRequestName = (client: Config['client']): string => {\n switch (client.name) {\n case 'legacy/angular':\n return 'AngularHttpRequest';\n case 'legacy/axios':\n return 'AxiosHttpRequest';\n case 'legacy/fetch':\n return 'FetchHttpRequest';\n case 'legacy/node':\n return 'NodeHttpRequest';\n case 'legacy/xhr':\n return 'XHRHttpRequest';\n default:\n return '';\n }\n};\n","export function sort(a: string, b: string): number {\n const nameA = a.toLocaleLowerCase();\n const nameB = b.toLocaleLowerCase();\n return nameA.localeCompare(nameB, 'en');\n}\n\nexport const sorterByName = <T extends { name: string }>(a: T, b: T) =>\n sort(a.name, b.name);\n\nexport function sortByName<T extends { name: string }>(items: T[]): T[] {\n return items.sort(sorterByName);\n}\n","import { existsSync, mkdirSync, type PathLike } from 'node:fs';\n\nexport const ensureDirSync = (path: PathLike) => {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n};\n\n/**\n * Construct a relative import path to modules. This is used for example\n * in plugins to import types or services module.\n */\nexport const relativeModulePath = ({\n moduleOutput,\n sourceOutput,\n}: {\n /**\n * Output path to the imported module.\n * @example\n * 'types'\n */\n moduleOutput: string;\n /**\n * Output path to the source module.\n * @example\n * '@tanstack/react-query'\n */\n sourceOutput: string;\n}): string => {\n const outputParts = sourceOutput.split('/');\n const relativePath =\n new Array(outputParts.length).fill('').join('../') || './';\n return `${relativePath}${moduleOutput}`;\n};\n","import { copyFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { ensureDirSync, relativeModulePath } from './utils';\n\nexport const clientModulePath = ({\n sourceOutput,\n}: {\n sourceOutput: string;\n}) => {\n const config = getConfig();\n\n if (config.client.bundle) {\n return relativeModulePath({\n moduleOutput: 'client',\n sourceOutput,\n });\n }\n\n return config.client.name;\n};\n\nexport const clientOptionsTypeName = () => 'Options';\n\n/**\n * (optional) Creates a `client.ts` file containing the same exports as a\n * standalone client package. Creates a `client` directory containing the modules\n * from standalone client. These files are generated only when `client.bundle`\n * is set to true.\n */\nexport const generateClient = async (\n outputPath: string,\n moduleName: string,\n) => {\n const config = getConfig();\n\n if (isLegacyClient(config) || !config.client.bundle) {\n return;\n }\n\n // create directory for client modules\n const dirPath = path.resolve(outputPath, 'client');\n ensureDirSync(dirPath);\n\n const clientModulePath = path.normalize(require.resolve(moduleName));\n const clientModulePathComponents = clientModulePath.split(path.sep);\n const clientSrcPath = [\n ...clientModulePathComponents.slice(\n 0,\n clientModulePathComponents.indexOf('dist'),\n ),\n 'src',\n ].join(path.sep);\n\n // copy client modules\n const files = ['index.ts', 'types.ts', 'utils.ts'];\n files.forEach((file) => {\n copyFileSync(\n path.resolve(clientSrcPath, file),\n path.resolve(dirPath, file),\n );\n });\n};\n","import {\n copyFileSync,\n existsSync,\n mkdirSync,\n rmSync,\n writeFileSync,\n} from 'node:fs';\nimport path from 'node:path';\n\nimport type { Client } from '../types/client';\nimport { getConfig } from '../utils/config';\nimport { getHttpRequestName } from '../utils/getHttpRequestName';\nimport type { Templates } from '../utils/handlebars';\n\n/**\n * Generate OpenAPI core files, this includes the basic boilerplate code to handle requests.\n * @param outputPath Directory to write the generated files to\n * @param client Client containing models, schemas, and services\n * @param templates The loaded handlebar templates\n */\nexport const generateCore = async (\n outputPath: string,\n client: Client,\n templates: Templates,\n): Promise<void> => {\n const config = getConfig();\n\n if (config.exportCore) {\n const context = {\n httpRequest: getHttpRequestName(config.client),\n server: config.base !== undefined ? config.base : client.server,\n version: client.version,\n };\n\n rmSync(path.resolve(outputPath), {\n force: true,\n recursive: true,\n });\n mkdirSync(path.resolve(outputPath), {\n recursive: true,\n });\n\n await writeFileSync(\n path.resolve(outputPath, 'OpenAPI.ts'),\n templates.core.settings({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, 'ApiError.ts'),\n templates.core.apiError({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, 'ApiRequestOptions.ts'),\n templates.core.apiRequestOptions({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, 'ApiResult.ts'),\n templates.core.apiResult({\n $config: config,\n ...context,\n }),\n );\n if (config.client.name !== 'legacy/angular') {\n await writeFileSync(\n path.resolve(outputPath, 'CancelablePromise.ts'),\n templates.core.cancelablePromise({\n $config: config,\n ...context,\n }),\n );\n }\n await writeFileSync(\n path.resolve(outputPath, 'request.ts'),\n templates.core.request({\n $config: config,\n ...context,\n }),\n );\n\n if (config.name) {\n await writeFileSync(\n path.resolve(outputPath, 'BaseHttpRequest.ts'),\n templates.core.baseHttpRequest({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, `${context.httpRequest}.ts`),\n templates.core.httpRequest({\n $config: config,\n ...context,\n }),\n );\n }\n\n if (config.request) {\n const requestFile = path.resolve(process.cwd(), config.request);\n const requestFileExists = await existsSync(requestFile);\n if (!requestFileExists) {\n throw new Error(`Custom request file \"${requestFile}\" does not exists`);\n }\n await copyFileSync(requestFile, path.resolve(outputPath, 'request.ts'));\n }\n }\n};\n","/**\n * Matches characters from the start as long as they're not allowed.\n */\nexport const illegalStartCharactersRegExp = /^[^$_\\p{ID_Start}]+/u;\n\n/**\n * Matches the whole value if it's one of the reserved words.\n */\nexport const reservedWordsRegExp =\n /^(arguments|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g;\n\n/**\n * Javascript identifier regexp pattern retrieved from\n * {@link} https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nexport const validTypescriptIdentifierRegExp =\n /^[$_\\p{ID_Start}][$\\u200c\\u200d\\p{ID_Continue}]*$/u;\n","import ts from 'typescript';\n\nimport { getConfig } from '../utils/config';\nimport { unescapeName } from '../utils/escape';\n\nexport interface ImportExportItemObject {\n alias?: string;\n asType?: boolean;\n name: string;\n}\n\nexport const CONFIG = {\n newLine: ts.NewLineKind.LineFeed,\n scriptKind: ts.ScriptKind.TS,\n scriptTarget: ts.ScriptTarget.ES2015,\n useSingleQuotes: true,\n};\n\nconst printer = ts.createPrinter({ newLine: CONFIG.newLine });\n\nexport const createSourceFile = (sourceText: string) =>\n ts.createSourceFile(\n '',\n sourceText,\n CONFIG.scriptTarget,\n undefined,\n CONFIG.scriptKind,\n );\n\nconst blankSourceFile = createSourceFile('');\n\nconst unescapeUnicode = (value: string) =>\n value.replace(/\\\\u([0-9a-fA-F]{4})/g, (_, hex: string) =>\n String.fromCharCode(Number.parseInt(hex, 16)),\n );\n\n/**\n * Print a TypeScript node to a string.\n * @param node the node to print\n * @returns string\n */\nexport function tsNodeToString({\n node,\n unescape = false,\n}: {\n node: ts.Node;\n unescape?: boolean;\n}): string {\n const result = printer.printNode(\n ts.EmitHint.Unspecified,\n node,\n blankSourceFile,\n );\n\n if (!unescape) {\n return result;\n }\n\n try {\n /**\n * TypeScript Compiler API escapes unicode characters by default and there\n * is no way to disable this behavior\n * {@link https://github.com/microsoft/TypeScript/issues/36174}\n */\n return unescapeUnicode(result);\n } catch {\n if (getConfig().debug) {\n console.warn('Could not decode value:', result);\n }\n return result;\n }\n}\n\n/**\n * Convert a string to a TypeScript Node\n * @param value the string to convert.\n * @returns ts.Node\n */\nexport function stringToTsNodes(value: string): ts.Node {\n const file = createSourceFile(value);\n return file.statements[0];\n}\n\nexport const createIdentifier = ({ text }: { text: string }) => {\n const identifier = ts.factory.createIdentifier(text);\n return identifier;\n};\n\n/**\n * ots for @hey-api/openapi-ts are helpers to reduce repetition of basic TypeScript\n * factory functions.\n */\nexport const ots = {\n /**\n * Create a boolean expression based on value.\n */\n boolean: (value: boolean) =>\n value ? ts.factory.createTrue() : ts.factory.createFalse(),\n export: ({ alias, asType = false, name }: ImportExportItemObject) => {\n const nameNode = createIdentifier({ text: name });\n if (alias) {\n const aliasNode = createIdentifier({ text: alias });\n return ts.factory.createExportSpecifier(asType, nameNode, aliasNode);\n }\n return ts.factory.createExportSpecifier(asType, undefined, nameNode);\n },\n import: ({ alias, asType = false, name }: ImportExportItemObject) => {\n const nameNode = createIdentifier({ text: name });\n if (alias) {\n const aliasNode = createIdentifier({ text: alias });\n return ts.factory.createImportSpecifier(asType, nameNode, aliasNode);\n }\n return ts.factory.createImportSpecifier(asType, undefined, nameNode);\n },\n /**\n * Create a numeric expression, handling negative numbers.\n */\n number: (value: number) => {\n if (value < 0) {\n return ts.factory.createPrefixUnaryExpression(\n ts.SyntaxKind.MinusToken,\n ts.factory.createNumericLiteral(Math.abs(value)),\n );\n }\n return ts.factory.createNumericLiteral(value);\n },\n /**\n * Create a string literal. This handles strings that start with '`' or \"'\".\n */\n string: (value: string, unescape = false) => {\n let text = value;\n if (unescape) {\n text = unescapeName(text);\n }\n const hasBothQuotes = text.includes(\"'\") && text.includes('\"');\n const hasNewlines = text.includes('\\n');\n const hasUnescapedBackticks = text.startsWith('`');\n const isBacktickEscaped = text.startsWith('\\\\`') && text.endsWith('\\\\`');\n if (\n (hasNewlines || hasBothQuotes || hasUnescapedBackticks) &&\n !isBacktickEscaped\n ) {\n text = `\\`${text.replace(/(?<!\\\\)`/g, '\\\\`').replace(/\\${/g, '\\\\${')}\\``;\n }\n if (text.startsWith('`')) {\n return createIdentifier({ text });\n }\n return ts.factory.createStringLiteral(\n text,\n text.includes(\"'\") ? false : CONFIG.useSingleQuotes,\n );\n },\n};\n\nexport const isTsNode = (node: any): node is ts.Expression =>\n node !== null &&\n typeof node === 'object' &&\n typeof node.kind === 'number' &&\n typeof node.flags === 'number' &&\n typeof node.pos === 'number' &&\n typeof node.end === 'number';\n\nexport const isType = <T>(value: T | undefined): value is T =>\n value !== undefined;\n\ntype CommentLines = Array<string | null | false | undefined>;\ntype CommentObject = {\n jsdoc?: boolean;\n lines: CommentLines;\n};\nexport type Comments = CommentLines | Array<CommentObject>;\n\nconst processCommentObject = ({\n commentObject,\n node,\n}: {\n commentObject: CommentObject;\n node: ts.Node;\n}) => {\n const lines = commentObject.lines.filter(\n (line) => Boolean(line) || line === '',\n ) as string[];\n if (!lines.length) {\n return;\n }\n\n if (!commentObject.jsdoc) {\n for (const line of lines) {\n ts.addSyntheticLeadingComment(\n node,\n ts.SyntaxKind.SingleLineCommentTrivia,\n ` ${line}`,\n true,\n );\n }\n return;\n }\n\n const jsdocTexts = lines.map((line, index) => {\n let text = line;\n if (index !== lines.length) {\n text = `${text}\\n`;\n }\n const jsdocText = ts.factory.createJSDocText(text);\n return jsdocText;\n });\n\n const jsdoc = ts.factory.createJSDocComment(\n ts.factory.createNodeArray(jsdocTexts),\n undefined,\n );\n\n const cleanedJsdoc = tsNodeToString({ node: jsdoc, unescape: true })\n .replace('/*', '')\n .replace('* */', '');\n\n ts.addSyntheticLeadingComment(\n node,\n ts.SyntaxKind.MultiLineCommentTrivia,\n cleanedJsdoc,\n true,\n );\n};\n\nexport const addLeadingComments = ({\n comments = [],\n node,\n}: {\n comments?: Comments;\n node: ts.Node;\n}) => {\n const isObjectStyle = Boolean(\n comments.find((comment) => typeof comment === 'object' && comment),\n );\n\n let commentObjects = comments as Array<CommentObject>;\n if (!isObjectStyle) {\n commentObjects = [\n {\n jsdoc: true,\n lines: comments as CommentLines,\n },\n ];\n }\n\n for (const commentObject of commentObjects) {\n processCommentObject({\n commentObject,\n node,\n });\n }\n};\n","import { EOL } from 'os';\n\nimport { validTypescriptIdentifierRegExp } from './regexp';\n\nexport const escapeName = (value: string): string => {\n if (value || value === '') {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n const validName = validTypescriptIdentifierRegExp.test(value);\n if (!validName) {\n return `'${value}'`;\n }\n }\n return value;\n};\n\nexport const unescapeName = (value: string): string => {\n if (value && value.startsWith(\"'\") && value.endsWith(\"'\")) {\n return value.slice(1, value.length - 1);\n }\n return value;\n};\n\nexport const escapeComment = (value: string) =>\n value\n .replace(/\\*\\//g, '*')\n .replace(/\\/\\*/g, '*')\n .replace(/\\r?\\n(.*)/g, (_l, w) => EOL + w.trim());\n","import ts from 'typescript';\n\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n isTsNode,\n isType,\n ots,\n} from './utils';\n\nexport type AccessLevel = 'public' | 'protected' | 'private';\n\nexport type FunctionParameter =\n | {\n accessLevel?: AccessLevel;\n default?: any;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name: string;\n type?: any | ts.TypeNode;\n }\n | {\n destructure: FunctionParameter[];\n };\n\nexport interface FunctionTypeParameter {\n default?: any;\n extends?: string | ts.TypeNode;\n name: string | ts.Identifier;\n}\n\nexport const createTypeNode = (\n base: any | ts.TypeNode,\n args?: (any | ts.TypeNode)[],\n): ts.TypeNode => {\n if (ts.isTypeNode(base)) {\n return base;\n }\n\n if (typeof base === 'number') {\n return ts.factory.createLiteralTypeNode(ots.number(base));\n }\n\n return createTypeReferenceNode({\n typeArguments: args?.map((arg) => createTypeNode(arg)),\n typeName: base,\n });\n};\n\nexport const createPropertyAccessChain = ({\n expression,\n name,\n}: {\n expression: ts.Expression;\n name: string | ts.MemberName;\n}) => {\n const node = ts.factory.createPropertyAccessChain(\n expression,\n ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),\n name,\n );\n return node;\n};\n\nexport const createPropertyAccessExpression = ({\n expression,\n isOptional,\n name,\n}: {\n expression: string | ts.Expression;\n isOptional?: boolean;\n name: string | ts.MemberName;\n}):\n | ts.PropertyAccessChain\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression => {\n const nodeExpression =\n typeof expression === 'string'\n ? createIdentifier({ text: expression })\n : expression;\n\n if (isOptional) {\n const node = createPropertyAccessChain({\n expression: nodeExpression,\n name,\n });\n return node;\n }\n\n const nodeName =\n typeof name === 'string' ? createIdentifier({ text: name }) : name;\n\n if (typeof name === 'string') {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n if (!validTypescriptIdentifierRegExp.test(name)) {\n const node = ts.factory.createElementAccessExpression(\n nodeExpression,\n nodeName,\n );\n return node;\n }\n }\n\n const node = ts.factory.createPropertyAccessExpression(\n nodeExpression,\n nodeName,\n );\n return node;\n};\n\n/**\n * Convert an unknown value to an expression.\n * @param identifiers - list of keys that are treated as identifiers.\n * @param shorthand - if shorthand syntax is allowed.\n * @param unescape - if string should be unescaped.\n * @param value - the unknown value.\n * @returns ts.Expression\n */\nexport const toExpression = <T = unknown>({\n identifiers = [],\n isValueAccess,\n shorthand,\n unescape,\n value,\n}: {\n identifiers?: string[];\n isValueAccess?: boolean;\n shorthand?: boolean;\n unescape?: boolean;\n value: T;\n}): ts.Expression | undefined => {\n if (value === null) {\n return ts.factory.createNull();\n }\n\n if (Array.isArray(value)) {\n return createArrayLiteralExpression({ elements: value });\n }\n\n if (typeof value === 'object') {\n return createObjectType({\n identifiers,\n obj: value,\n shorthand,\n });\n }\n\n if (typeof value === 'number') {\n return ots.number(value);\n }\n\n if (typeof value === 'boolean') {\n return ots.boolean(value);\n }\n\n if (typeof value === 'string') {\n if (isValueAccess) {\n // TODO; handle more than single nested level, i.e. foo.bar.baz\n const parts = value.split('.');\n return createPropertyAccessExpression({\n expression: parts[0],\n name: parts[1],\n });\n }\n return ots.string(value, unescape);\n }\n};\n\n/**\n * Convert AccessLevel to proper TypeScript compiler API modifier.\n * @param access - the access level.\n * @returns ts.ModifierLike[]\n */\nexport const toAccessLevelModifiers = (\n access?: AccessLevel,\n): ts.ModifierLike[] => {\n const keyword =\n access === 'public'\n ? ts.SyntaxKind.PublicKeyword\n : access === 'protected'\n ? ts.SyntaxKind.ProtectedKeyword\n : access === 'private'\n ? ts.SyntaxKind.PrivateKeyword\n : undefined;\n const modifiers: ts.ModifierLike[] = [];\n if (keyword) {\n modifiers.push(ts.factory.createModifier(keyword));\n }\n return modifiers;\n};\n\n/**\n * Convert parameters to the declaration array expected by compiler API.\n * @param parameters - the parameters to convert to declarations\n * @returns ts.ParameterDeclaration[]\n */\nexport const toParameterDeclarations = (parameters: FunctionParameter[]) =>\n parameters.map((parameter) => {\n if ('destructure' in parameter) {\n return ts.factory.createParameterDeclaration(\n undefined,\n undefined,\n ts.factory.createObjectBindingPattern(\n parameter.destructure\n .map((param) => {\n // TODO: add support for nested destructuring, not needed at the moment\n if ('destructure' in param) {\n return;\n }\n\n const result = ts.factory.createBindingElement(\n undefined,\n undefined,\n createIdentifier({ text: param.name }),\n undefined,\n );\n return result;\n })\n .filter(Boolean) as ts.BindingElement[],\n ),\n undefined,\n undefined,\n undefined,\n );\n }\n\n let modifiers = toAccessLevelModifiers(parameter.accessLevel);\n\n if (parameter.isReadOnly) {\n modifiers = [\n ...modifiers,\n ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword),\n ];\n }\n\n return ts.factory.createParameterDeclaration(\n modifiers,\n undefined,\n createIdentifier({ text: parameter.name }),\n parameter.isRequired === false\n ? ts.factory.createToken(ts.SyntaxKind.QuestionToken)\n : undefined,\n parameter.type !== undefined ? createTypeNode(parameter.type) : undefined,\n parameter.default !== undefined\n ? toExpression({ value: parameter.default })\n : undefined,\n );\n });\n\nexport const createKeywordTypeNode = ({\n keyword,\n}: {\n keyword: 'any' | 'boolean' | 'string';\n}) => {\n let kind: ts.KeywordTypeSyntaxKind = ts.SyntaxKind.AnyKeyword;\n switch (keyword) {\n case 'boolean':\n kind = ts.SyntaxKind.BooleanKeyword;\n break;\n case 'string':\n kind = ts.SyntaxKind.StringKeyword;\n break;\n }\n return ts.factory.createKeywordTypeNode(kind);\n};\n\nexport const toTypeParameters = (types: FunctionTypeParameter[]) =>\n types.map((type) =>\n ts.factory.createTypeParameterDeclaration(\n undefined,\n type.name,\n // TODO: support other extends values\n type.extends\n ? typeof type.extends === 'string'\n ? createKeywordTypeNode({ keyword: 'boolean' })\n : type.extends\n : undefined,\n // TODO: support other default types\n type.default !== undefined\n ? isTsNode(type.default)\n ? (type.default as unknown as ts.TypeNode)\n : ts.factory.createLiteralTypeNode(\n type.default ? ts.factory.createTrue() : ts.factory.createFalse(),\n )\n : undefined,\n ),\n );\n\n/**\n * Create arrow function type expression.\n */\nexport const createArrowFunction = ({\n async,\n comment,\n multiLine,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n async?: boolean;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[] | ts.Expression;\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createArrowFunction(\n async ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)] : undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n undefined,\n Array.isArray(statements)\n ? ts.factory.createBlock(statements, multiLine)\n : statements,\n );\n\n addLeadingComments({\n comments: comment,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create anonymous function type expression.\n */\nexport const createAnonymousFunction = ({\n async,\n comment,\n multiLine,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n async?: boolean;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[];\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createFunctionExpression(\n async ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)] : undefined,\n undefined,\n undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n ts.factory.createBlock(statements, multiLine),\n );\n\n addLeadingComments({\n comments: comment,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create Array type expression.\n * @param arr - The array to create.\n * @param multiLine - if the array should be multiline.\n * @returns ts.ArrayLiteralExpression\n */\nexport const createArrayLiteralExpression = <T>({\n elements,\n multiLine = false,\n}: {\n elements: T[];\n multiLine?: boolean;\n}): ts.ArrayLiteralExpression => {\n const expression = ts.factory.createArrayLiteralExpression(\n elements\n .map((value) => (isTsNode(value) ? value : toExpression({ value })))\n .filter(isType<ts.Expression>),\n // multiline if array contains objects\n multiLine ||\n (!Array.isArray(elements[0]) && typeof elements[0] === 'object'),\n );\n return expression;\n};\n\nexport const createAwaitExpression = ({\n expression,\n}: {\n expression: ts.Expression;\n}) => ts.factory.createAwaitExpression(expression);\n\nexport type ObjectValue =\n | {\n assertion?: 'any';\n comments?: Comments;\n spread: string;\n }\n | {\n comments?: Comments;\n isValueAccess?: boolean;\n key: string;\n shorthand?: boolean;\n value: any;\n };\n\ntype ObjectAssignment =\n | ts.PropertyAssignment\n | ts.ShorthandPropertyAssignment\n | ts.SpreadAssignment;\n\n/**\n * Create Object type expression.\n * @param comments - comments to add to each property.\n * @param identifier - keys that should be treated as identifiers.\n * @param multiLine - if the object should be multiline.\n * @param obj - the object to create expression with.\n * @param shorthand - if shorthand syntax should be used.\n * @param unescape - if properties strings should be unescaped.\n * @returns ts.ObjectLiteralExpression\n */\nexport const createObjectType = <\n T extends Record<string, any> | Array<ObjectValue>,\n>({\n comments,\n identifiers = [],\n multiLine = true,\n obj,\n shorthand,\n unescape = false,\n}: {\n comments?: Comments;\n identifiers?: string[];\n multiLine?: boolean;\n obj: T;\n shorthand?: boolean;\n unescape?: boolean;\n}): ts.ObjectLiteralExpression => {\n const properties = Array.isArray(obj)\n ? obj\n .map((value: ObjectValue) => {\n // Check key value equality before possibly modifying it\n let canShorthand = false;\n if ('key' in value) {\n const { key } = value;\n canShorthand = key === value.value;\n if (\n ((key.match(/^[0-9]/) && key.match(/\\D+/g)) ||\n key.match(/\\W/g)) &&\n !key.startsWith(\"'\") &&\n !key.endsWith(\"'\")\n ) {\n value.key = `'${key}'`;\n }\n }\n let assignment: ObjectAssignment;\n if ('spread' in value) {\n const nameIdentifier = isTsNode(value.spread)\n ? value.spread\n : createIdentifier({ text: value.spread });\n assignment = ts.factory.createSpreadAssignment(\n value.assertion\n ? ts.factory.createAsExpression(\n nameIdentifier,\n createKeywordTypeNode({ keyword: value.assertion }),\n )\n : nameIdentifier,\n );\n } else if (value.shorthand || (shorthand && canShorthand)) {\n assignment = ts.factory.createShorthandPropertyAssignment(\n value.value,\n );\n } else {\n let initializer: ts.Expression | undefined = isTsNode(value.value)\n ? value.value\n : Array.isArray(value.value)\n ? createObjectType({\n multiLine,\n obj: value.value,\n shorthand,\n unescape,\n })\n : toExpression({\n identifiers: identifiers.includes(value.key)\n ? Object.keys(value.value)\n : [],\n isValueAccess: value.isValueAccess,\n shorthand,\n unescape,\n value: value.value,\n });\n if (!initializer) {\n return undefined;\n }\n // Create a identifier if the current key is one and it is not an object\n if (\n identifiers.includes(value.key) &&\n !ts.isObjectLiteralExpression(initializer)\n ) {\n initializer = createIdentifier({ text: value.value as string });\n }\n assignment = ts.factory.createPropertyAssignment(\n value.key,\n initializer,\n );\n }\n\n addLeadingComments({\n comments: value.comments,\n node: assignment,\n });\n\n return assignment;\n })\n .filter(isType<ObjectAssignment>)\n : Object.entries(obj)\n .map(([key, value]) => {\n // Pass all object properties as identifiers if the whole object is an identifier\n let initializer: ts.Expression | undefined = toExpression({\n identifiers: identifiers.includes(key) ? Object.keys(value) : [],\n shorthand,\n unescape,\n value,\n });\n if (!initializer) {\n return undefined;\n }\n // Create a identifier if the current key is one and it is not an object\n if (\n identifiers.includes(key) &&\n !ts.isObjectLiteralExpression(initializer)\n ) {\n initializer = createIdentifier({ text: value as string });\n }\n // Check key value equality before possibly modifying it\n const canShorthand = key === value;\n if (\n key.match(/^[0-9]/) &&\n key.match(/\\D+/g) &&\n !key.startsWith(\"'\") &&\n !key.endsWith(\"'\")\n ) {\n key = `'${key}'`;\n }\n if (key.match(/\\W/g) && !key.startsWith(\"'\") && !key.endsWith(\"'\")) {\n key = `'${key}'`;\n }\n const assignment =\n shorthand && canShorthand\n ? ts.factory.createShorthandPropertyAssignment(value)\n : ts.factory.createPropertyAssignment(key, initializer);\n\n return assignment;\n })\n .filter(isType<ObjectAssignment>);\n\n const expression = ts.factory.createObjectLiteralExpression(\n properties as any[],\n multiLine,\n );\n\n addLeadingComments({\n comments,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create enum declaration. Example `export enum T = { X, Y };`\n * @param comments - comments to add to each property of enum.\n * @param leadingComment - leading comment to add to enum.\n * @param name - the name of the enum.\n * @param obj - the object representing the enum.\n * @returns\n */\nexport const createEnumDeclaration = <T extends object>({\n comments,\n leadingComment,\n name,\n obj,\n}: {\n comments?: Record<string | number, Comments>;\n leadingComment?: Comments;\n name: string;\n obj: T;\n}): ts.EnumDeclaration => {\n const declaration = ts.factory.createEnumDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n createIdentifier({ text: name }),\n Object.entries(obj).map(([key, value]) => {\n const initializer = toExpression({ unescape: true, value });\n const assignment = ts.factory.createEnumMember(key, initializer);\n const comment = comments?.[key];\n\n addLeadingComments({\n comments: comment,\n node: assignment,\n });\n\n return assignment;\n }),\n );\n\n addLeadingComments({\n comments: leadingComment,\n node: declaration,\n });\n\n return declaration;\n};\n\n/**\n * Create namespace declaration. Example `export namespace MyNamespace { ... }`\n * @param name - the name of the namespace.\n * @param nodes - the nodes in the namespace.\n * @returns\n */\nexport const createNamespaceDeclaration = <\n T extends Array<ts.EnumDeclaration>,\n>({\n name,\n statements,\n}: {\n name: string;\n statements: T;\n}) =>\n ts.factory.createModuleDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n createIdentifier({ text: name }),\n ts.factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n );\n\nexport const createIndexedAccessTypeNode = ({\n indexType,\n objectType,\n}: {\n indexType: ts.TypeNode;\n objectType: ts.TypeNode;\n}) => {\n const node = ts.factory.createIndexedAccessTypeNode(objectType, indexType);\n return node;\n};\n\nexport const createStringLiteral = ({ text }: { text: string }) => {\n const node = ts.factory.createStringLiteral(text);\n return node;\n};\n\nexport const createConditionalExpression = ({\n condition,\n whenFalse,\n whenTrue,\n}: {\n condition: ts.Expression;\n whenFalse: ts.Expression;\n whenTrue: ts.Expression;\n}) => {\n const expression = ts.factory.createConditionalExpression(\n condition,\n ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n whenTrue,\n ts.factory.createToken(ts.SyntaxKind.ColonToken),\n whenFalse,\n );\n return expression;\n};\n\nexport const createTypeOfExpression = ({ text }: { text: string }) => {\n const expression = ts.factory.createTypeOfExpression(\n createIdentifier({ text }),\n );\n return expression;\n};\n\n/**\n * Create a type alias declaration. Example `export type X = Y;`.\n * @param comment (optional) comments to add\n * @param name the name of the type\n * @param type the type\n * @returns ts.TypeAliasDeclaration\n */\nexport const createTypeAliasDeclaration = ({\n comment,\n exportType,\n name,\n type,\n typeParameters = [],\n}: {\n comment?: Comments;\n exportType?: boolean;\n name: string;\n type: string | ts.TypeNode;\n typeParameters?: FunctionTypeParameter[];\n}): ts.TypeAliasDeclaration => {\n const node = ts.factory.createTypeAliasDeclaration(\n exportType\n ? [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)]\n : undefined,\n createIdentifier({ text: name }),\n toTypeParameters(typeParameters),\n createTypeNode(type),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\nexport const createTypeReferenceNode = ({\n typeArguments,\n typeName,\n}: {\n typeArguments?: ts.TypeNode[];\n typeName: string | ts.EntityName;\n}) => {\n const node = ts.factory.createTypeReferenceNode(typeName, typeArguments);\n return node;\n};\n\nexport const createTypeParenthesizedNode = ({\n type,\n}: {\n type: ts.TypeNode;\n}) => {\n const node = ts.factory.createParenthesizedType(type);\n return node;\n};\n","import ts from 'typescript';\n\nimport { createTypeReferenceNode } from './types';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n type ImportExportItemObject,\n ots,\n} from './utils';\n\n/**\n * Create export all declaration. Example: `export * from './y'`.\n * @param module - module containing exports\n * @returns ts.ExportDeclaration\n */\nexport const createExportAllDeclaration = ({\n module,\n}: {\n module: string;\n}): ts.ExportDeclaration => {\n const statement = ts.factory.createExportDeclaration(\n undefined,\n false,\n undefined,\n ots.string(module),\n );\n return statement;\n};\n\nexport type ImportExportItem = ImportExportItemObject | string;\n\nexport const createCallExpression = ({\n parameters = [],\n functionName,\n types,\n}: {\n functionName:\n | string\n | ts.PropertyAccessExpression\n | ts.PropertyAccessChain\n | ts.ElementAccessExpression;\n parameters?: Array<string | ts.Expression | undefined>;\n types?: ReadonlyArray<ts.TypeNode>;\n}) => {\n const expression =\n typeof functionName === 'string'\n ? createIdentifier({ text: functionName })\n : functionName;\n const argumentsArray = parameters\n .filter((parameter) => parameter !== undefined)\n .map((parameter) =>\n typeof parameter === 'string'\n ? createIdentifier({ text: parameter })\n : parameter,\n );\n const callExpression = ts.factory.createCallExpression(\n expression,\n types,\n argumentsArray,\n );\n return callExpression;\n};\n\n/**\n * Create a named export declaration. Example: `export { X } from './y'`.\n * @param exports - named imports to export\n * @param module - module containing exports\n * @returns ts.ExportDeclaration\n */\nexport const createNamedExportDeclarations = ({\n exports,\n module,\n}: {\n exports: Array<ImportExportItem> | ImportExportItem;\n module: string;\n}): ts.ExportDeclaration => {\n const exportedTypes = Array.isArray(exports) ? exports : [exports];\n const hasNonTypeExport = exportedTypes.some(\n (item) => typeof item !== 'object' || !item.asType,\n );\n const elements = exportedTypes.map((name) => {\n const item = typeof name === 'string' ? { name } : name;\n return ots.export({\n alias: item.alias,\n asType: hasNonTypeExport && item.asType,\n name: item.name,\n });\n });\n const exportClause = ts.factory.createNamedExports(elements);\n const moduleSpecifier = ots.string(module);\n const statement = ts.factory.createExportDeclaration(\n undefined,\n !hasNonTypeExport,\n exportClause,\n moduleSpecifier,\n );\n return statement;\n};\n\n/**\n * Create a const variable. Optionally, it can use const assertion or export\n * statement. Example: `export x = {} as const`.\n * @param assertion use const assertion?\n * @param exportConst export created variable?\n * @param expression expression for the variable.\n * @param name name of the variable.\n * @returns ts.VariableStatement\n */\nexport const createConstVariable = ({\n comment,\n assertion,\n destructure,\n exportConst,\n expression,\n name,\n typeName,\n}: {\n assertion?: 'const' | ts.TypeNode;\n comment?: Comments;\n destructure?: boolean;\n exportConst?: boolean;\n expression: ts.Expression;\n name: string;\n // TODO: support a more intuitive definition of generics for example\n typeName?: string | ts.IndexedAccessTypeNode;\n}): ts.VariableStatement => {\n const initializer = assertion\n ? ts.factory.createAsExpression(\n expression,\n typeof assertion === 'string'\n ? createTypeReferenceNode({\n typeName: assertion,\n })\n : assertion,\n )\n : expression;\n const nameIdentifier = createIdentifier({ text: name });\n const declaration = ts.factory.createVariableDeclaration(\n destructure\n ? ts.factory.createObjectBindingPattern([\n ts.factory.createBindingElement(\n undefined,\n undefined,\n nameIdentifier,\n undefined,\n ),\n ])\n : nameIdentifier,\n undefined,\n typeName\n ? typeof typeName === 'string'\n ? createTypeReferenceNode({ typeName })\n : typeName\n : undefined,\n initializer,\n );\n const statement = ts.factory.createVariableStatement(\n exportConst\n ? [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)]\n : undefined,\n ts.factory.createVariableDeclarationList([declaration], ts.NodeFlags.Const),\n );\n\n addLeadingComments({\n comments: comment,\n node: statement,\n });\n\n return statement;\n};\n\n/**\n * Create a named import declaration. Example: `import { X } from './y'`.\n * @param imports - named exports to import\n * @param module - module containing imports\n * @returns ts.ImportDeclaration\n */\nexport const createNamedImportDeclarations = ({\n imports,\n module,\n}: {\n imports: Array<ImportExportItem> | ImportExportItem;\n module: string;\n}): ts.ImportDeclaration => {\n const importedTypes = Array.isArray(imports) ? imports : [imports];\n const hasNonTypeImport = importedTypes.some(\n (item) => typeof item !== 'object' || !item.asType,\n );\n const elements = importedTypes.map((name) => {\n const item = typeof name === 'string' ? { name } : name;\n return ots.import({\n alias: item.alias,\n asType: hasNonTypeImport && item.asType,\n name: item.name,\n });\n });\n const namedBindings = ts.factory.createNamedImports(elements);\n const importClause = ts.factory.createImportClause(\n !hasNonTypeImport,\n undefined,\n namedBindings,\n );\n const moduleSpecifier = ots.string(module);\n const statement = ts.factory.createImportDeclaration(\n undefined,\n importClause,\n moduleSpecifier,\n );\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createCallExpression } from './module';\nimport {\n type AccessLevel,\n createTypeNode,\n type FunctionParameter,\n type FunctionTypeParameter,\n toAccessLevelModifiers,\n toExpression,\n toParameterDeclarations,\n toTypeParameters,\n} from './types';\nimport type { Comments } from './utils';\nimport { addLeadingComments, createIdentifier, isType } from './utils';\n\n/**\n * Create a class constructor declaration.\n * @param accessLevel - the access level of the constructor.\n * @param comment - comment to add to function.\n * @param multiLine - if it should be multi line.\n * @param parameters - parameters for the constructor.\n * @param statements - statements to put in the constructor body.\n * @returns ts.ConstructorDeclaration\n */\nexport const createConstructorDeclaration = ({\n accessLevel,\n comment,\n multiLine = true,\n parameters = [],\n statements = [],\n}: {\n accessLevel?: AccessLevel;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n statements?: ts.Statement[];\n}) => {\n const node = ts.factory.createConstructorDeclaration(\n toAccessLevelModifiers(accessLevel),\n toParameterDeclarations(parameters),\n ts.factory.createBlock(statements, multiLine),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\n/**\n * Create a class method declaration.\n * @param accessLevel - the access level of the method.\n * @param comment - comment to add to function.\n * @param isStatic - if the function is static.\n * @param multiLine - if it should be multi line.\n * @param name - name of the method.\n * @param parameters - parameters for the method.\n * @param returnType - the return type of the method.\n * @param statements - statements to put in the constructor body.\n * @returns ts.MethodDeclaration\n */\nexport const createMethodDeclaration = ({\n accessLevel,\n comment,\n isStatic = false,\n multiLine = true,\n name,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n accessLevel?: AccessLevel;\n comment?: Comments;\n isStatic?: boolean;\n multiLine?: boolean;\n name: string;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[];\n types?: FunctionTypeParameter[];\n}) => {\n let modifiers = toAccessLevelModifiers(accessLevel);\n\n if (isStatic) {\n modifiers = [\n ...modifiers,\n ts.factory.createModifier(ts.SyntaxKind.StaticKeyword),\n ];\n }\n\n const node = ts.factory.createMethodDeclaration(\n modifiers,\n undefined,\n createIdentifier({ text: name }),\n undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n ts.factory.createBlock(statements, multiLine),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\ntype ClassDecorator = {\n args: any[];\n name: string;\n};\n\n/**\n * Create a class declaration.\n * @param decorator - the class decorator\n * @param members - elements in the class.\n * @param name - name of the class.\n * @returns ts.ClassDeclaration\n */\nexport const createClassDeclaration = ({\n decorator,\n members = [],\n name,\n}: {\n decorator?: ClassDecorator;\n members?: ts.ClassElement[];\n name: string;\n}) => {\n let modifiers: ts.ModifierLike[] = [\n ts.factory.createModifier(ts.SyntaxKind.ExportKeyword),\n ];\n\n if (decorator) {\n modifiers = [\n ts.factory.createDecorator(\n createCallExpression({\n functionName: decorator.name,\n parameters: decorator.args\n .map((arg) => toExpression({ value: arg }))\n .filter(isType<ts.Expression>),\n }),\n ),\n ...modifiers,\n ];\n }\n\n // Add newline between each class member.\n let m: ts.ClassElement[] = [];\n members.forEach((member) => {\n // @ts-expect-error\n m = [...m, member, createIdentifier({ text: '\\n' })];\n });\n\n return ts.factory.createClassDeclaration(\n modifiers,\n createIdentifier({ text: name }),\n [],\n [],\n m,\n );\n};\n","import ts from 'typescript';\n\nexport const expressionToStatement = ({\n expression,\n}: {\n expression: ts.Expression;\n}) => {\n const statement = ts.factory.createExpressionStatement(expression);\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createCallExpression } from './module';\nimport { createTypeReferenceNode } from './types';\nimport { createIdentifier, isType } from './utils';\n\nconst createReturnStatement = ({\n expression,\n}: {\n expression?: ts.Expression;\n}) => ts.factory.createReturnStatement(expression);\n\n/**\n * Create a return function call statement.\n * Example `return fn<string>(params)`.\n * @param args arguments to pass to the function.\n * @param name name of the function to call.\n * @param types list of function types\n * @returns ts.ReturnStatement\n */\nexport const createReturnFunctionCall = ({\n args = [],\n name,\n types = [],\n}: {\n args: any[];\n name: string;\n types?: string[];\n}) => {\n const typeArguments = types.map((type) =>\n createTypeReferenceNode({ typeName: type }),\n );\n const argumentsArray = args\n .map((arg) =>\n ts.isExpression(arg) ? arg : createIdentifier({ text: arg }),\n )\n .filter(isType<ts.Identifier | ts.Expression>);\n const expression = createCallExpression({\n functionName: name,\n parameters: argumentsArray,\n types: typeArguments,\n });\n const statement = createReturnStatement({ expression });\n return statement;\n};\n\nexport const createReturnVariable = ({\n expression,\n}: {\n expression: string | ts.Expression;\n}) => {\n const statement = createReturnStatement({\n expression:\n typeof expression === 'string'\n ? createIdentifier({ text: expression })\n : expression,\n });\n return statement;\n};\n","import ts from 'typescript';\n\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport { expressionToStatement } from './convert';\nimport { createCallExpression } from './module';\nimport {\n createArrowFunction,\n createPropertyAccessChain,\n createPropertyAccessExpression,\n} from './types';\nimport { createIdentifier } from './utils';\n\nexport const createSafeAccessExpression = (path: string[]) =>\n path.slice(1).reduce<ts.Expression>(\n (expression, element) => {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n if (validTypescriptIdentifierRegExp.test(element)) {\n return createPropertyAccessChain({\n expression,\n name: element,\n });\n }\n\n return ts.factory.createElementAccessChain(\n expression,\n ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),\n createIdentifier({ text: element }),\n );\n },\n createIdentifier({ text: path[0] }),\n );\n\nexport const createAccessExpression = (path: string[]) =>\n path.slice(1).reduce<ts.Expression>(\n (expression, element) =>\n createPropertyAccessExpression({\n expression,\n name: element,\n }),\n createIdentifier({ text: path[0] }),\n );\n\n/**\n * Handles an array of access expressions instead of nesting them (default TypeScript syntax)\n */\nexport const createPropertyAccessExpressions = ({\n expressions,\n}: {\n expressions: Array<string | ts.Expression | ts.MemberName>;\n}): ts.PropertyAccessExpression => {\n const expression = expressions.reduce((expression, name) => {\n const node = createPropertyAccessExpression({\n expression,\n // @ts-expect-error\n name,\n });\n return node;\n });\n return expression as ts.PropertyAccessExpression;\n};\n\nexport const createBinaryExpression = ({\n left,\n operator = '=',\n right,\n}: {\n left: ts.Expression;\n operator?: '=' | '===' | 'in';\n right: ts.Expression | string;\n}) => {\n const expression = ts.factory.createBinaryExpression(\n left,\n // TODO: add support for other tokens\n operator === '='\n ? ts.SyntaxKind.EqualsToken\n : operator === '==='\n ? ts.SyntaxKind.EqualsEqualsEqualsToken\n : ts.SyntaxKind.InKeyword,\n typeof right === 'string' ? createIdentifier({ text: right }) : right,\n );\n return expression;\n};\n\nexport const createIfStatement = ({\n expression,\n thenStatement,\n elseStatement,\n}: {\n elseStatement?: ts.Statement;\n expression: ts.Expression;\n thenStatement: ts.Statement;\n}) => ts.factory.createIfStatement(expression, thenStatement, elseStatement);\n\nexport const createDateTransformMutation = ({\n path,\n}: {\n path: string[];\n}): ts.Statement => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const thenStatement = ts.factory.createBlock([\n expressionToStatement({\n expression: ts.factory.createBinaryExpression(\n accessExpression,\n ts.SyntaxKind.EqualsToken,\n ts.factory.createNewExpression(\n createIdentifier({ text: 'Date' }),\n undefined,\n [accessExpression],\n ),\n ),\n }),\n ]);\n\n const statement = createIfStatement({\n expression: safeAccessExpression,\n thenStatement,\n });\n\n return statement;\n};\n\nexport const createFunctionTransformMutation = ({\n path,\n transformerName,\n}: {\n path: string[];\n transformerName: string;\n}) => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const thenStatement = ts.factory.createBlock(\n [\n expressionToStatement({\n expression: createCallExpression({\n functionName: transformerName,\n parameters: [accessExpression],\n }),\n }),\n ],\n true,\n );\n\n const statement = [\n createIfStatement({\n expression: safeAccessExpression,\n thenStatement,\n }),\n ];\n\n return statement;\n};\n\nexport const createArrayTransformMutation = ({\n path,\n transformerName,\n}: {\n path: string[];\n transformerName: string;\n}): ts.Statement => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const statement = createIfStatement({\n expression: createCallExpression({\n functionName: createPropertyAccessExpression({\n expression: 'Array',\n name: 'isArray',\n }),\n parameters: [safeAccessExpression],\n }),\n thenStatement: ts.factory.createBlock(\n [\n expressionToStatement({\n expression: ts.factory.createCallChain(\n createPropertyAccessExpression({\n expression: accessExpression,\n name: 'forEach',\n }),\n undefined,\n undefined,\n [createIdentifier({ text: transformerName })],\n ),\n }),\n ],\n true,\n ),\n });\n\n return statement;\n};\n\nexport const createDateTransformerExpression = ({\n parameterName,\n}: {\n parameterName: string;\n}) => {\n const expression = createIdentifier({ text: 'Date' });\n const newExpression = ts.factory.createNewExpression(expression, undefined, [\n createIdentifier({ text: parameterName }),\n ]);\n return newExpression;\n};\n\nexport const createArrayMapTransform = ({\n path,\n transformExpression,\n}: {\n path: string[];\n transformExpression: ts.Expression;\n}) => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const statement = createIfStatement({\n expression: createCallExpression({\n functionName: createPropertyAccessExpression({\n expression: 'Array',\n name: 'isArray',\n }),\n parameters: [safeAccessExpression],\n }),\n thenStatement: ts.factory.createBlock(\n [\n expressionToStatement({\n expression: ts.factory.createBinaryExpression(\n accessExpression,\n ts.factory.createToken(ts.SyntaxKind.EqualsToken),\n ts.factory.createCallChain(\n createPropertyAccessExpression({\n expression: accessExpression,\n name: 'map',\n }),\n undefined,\n undefined,\n [\n createArrowFunction({\n parameters: [\n {\n name: 'item',\n },\n ],\n statements: transformExpression,\n }),\n ],\n ),\n ),\n }),\n ],\n true,\n ),\n });\n\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createTypeNode, createTypeReferenceNode } from './types';\nimport { addLeadingComments, type Comments, tsNodeToString } from './utils';\n\nconst nullNode = createTypeReferenceNode({ typeName: 'null' });\n\n// Property of a interface type node.\nexport type Property = {\n comment?: Comments;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name: string;\n type: any | ts.TypeNode;\n};\n\n/**\n * Returns a union of provided node with null if marked as nullable,\n * otherwise returns the provided node unmodified.\n */\nconst maybeNullable = ({\n isNullable,\n node,\n}: {\n isNullable?: boolean;\n node: ts.TypeNode;\n}) => {\n if (!isNullable) {\n return node;\n }\n return ts.factory.createUnionTypeNode([node, nullNode]);\n};\n\n/**\n * Create a interface type node. Example `{ readonly x: string, y?: number }`\n * @param properties - the properties of the interface.\n * @param isNullable - if the whole interface can be nullable\n * @returns ts.TypeLiteralNode | ts.TypeUnionNode\n */\nexport const createTypeInterfaceNode = ({\n isNullable,\n properties,\n}: {\n isNullable?: boolean;\n properties: Property[];\n}) => {\n const node = ts.factory.createTypeLiteralNode(\n properties.map((property) => {\n const modifiers: readonly ts.Modifier[] | undefined = property.isReadOnly\n ? [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)]\n : undefined;\n\n const questionToken: ts.QuestionToken | undefined =\n property.isRequired !== false\n ? undefined\n : ts.factory.createToken(ts.SyntaxKind.QuestionToken);\n\n const type: ts.TypeNode | undefined = createTypeNode(property.type);\n\n const signature = ts.factory.createPropertySignature(\n modifiers,\n property.name,\n questionToken,\n type,\n );\n\n addLeadingComments({\n comments: property.comment,\n node: signature,\n });\n\n return signature;\n }),\n );\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type union node. Example `string | number | boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.UnionTypeNode\n */\nexport const createTypeUnionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createUnionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type intersection node. Example `string & number & boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.IntersectionTypeNode | ts.UnionTypeNode\n */\nexport const createTypeIntersectionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createIntersectionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type tuple node. Example `string, number, boolean`\n * @param isNullable if the whole type can be null\n * @param types the types in the union\n * @returns ts.UnionTypeNode\n */\nexport const createTypeTupleNode = ({\n isNullable = false,\n types,\n}: {\n isNullable?: boolean;\n types: Array<any | ts.TypeNode>;\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createTupleTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type record node. Example `{ [key: string]: string }`\n * @param keys - key types.\n * @param values - value types.\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeRecordNode = (\n keys: (any | ts.TypeNode)[],\n values: (any | ts.TypeNode)[],\n isNullable: boolean = false,\n) => {\n const keyNode = createTypeUnionNode({\n types: keys,\n });\n const valueNode = createTypeUnionNode({\n types: values,\n });\n // NOTE: We use the syntax `{ [key: string]: string }` because using a Record causes\n // invalid types with circular dependencies. This is functionally the same.\n // Ref: https://github.com/hey-api/openapi-ts/issues/370\n const node = createTypeInterfaceNode({\n properties: [\n {\n name: `[key: ${tsNodeToString({ node: keyNode, unescape: true })}]`,\n type: valueNode,\n },\n ],\n });\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type array node. Example `Array<string | number>`\n * @param types - the types\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeArrayNode = (\n types: (any | ts.TypeNode)[],\n isNullable: boolean = false,\n) => {\n const node = createTypeReferenceNode({\n typeArguments: [createTypeUnionNode({ types })],\n typeName: 'Array',\n });\n return maybeNullable({ isNullable, node });\n};\n","import { type PathLike, rmSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport type ts from 'typescript';\n\nimport { ensureDirSync } from '../generate/utils';\nimport * as classes from './classes';\nimport * as convert from './convert';\nimport * as module from './module';\nimport * as _return from './return';\nimport * as transform from './transform';\nimport * as typedef from './typedef';\nimport * as types from './types';\nimport * as utils from './utils';\n\nexport type { Property } from './typedef';\nexport type { FunctionParameter } from './types';\nexport type { Comments } from './utils';\nexport type { ClassElement, Node, TypeNode } from 'typescript';\n\nconst splitNameAndExtension = (fileName: string) => {\n const match = fileName.match(/\\.[0-9a-z]+$/i);\n const extension = match ? match[0].slice(1) : '';\n const name = fileName.slice(\n 0,\n fileName.length - (extension ? extension.length + 1 : 0),\n );\n return { extension, name };\n};\n\nexport class TypeScriptFile {\n private _headers: Array<string> = [];\n private _imports = new Map<\n string,\n Map<string, utils.ImportExportItemObject>\n >();\n private _items: Array<ts.Node | string> = [];\n private _name: string;\n private _path: PathLike;\n\n public constructor({\n dir,\n name,\n header = true,\n }: {\n dir: string;\n header?: boolean;\n name: string;\n }) {\n this._name = this._setName(name);\n this._path = path.resolve(dir, this.getName());\n\n if (header) {\n this._headers = [\n ...this._headers,\n '// This file is auto-generated by @hey-api/openapi-ts',\n ];\n }\n }\n\n public add(...nodes: Array<ts.Node | string>) {\n this._items = [...this._items, ...nodes];\n }\n\n /**\n * Adds an import to the provided module. Handles duplication, returns added import.\n */\n public import({\n module,\n ...importedItem\n }: utils.ImportExportItemObject & {\n module: string;\n }): utils.ImportExportItemObject {\n let moduleMap = this._imports.get(module);\n\n if (!moduleMap) {\n moduleMap = new Map<string, utils.ImportExportItemObject>();\n this._imports.set(module, moduleMap);\n }\n\n const match = moduleMap.get(importedItem.name);\n if (match) {\n return match;\n }\n\n moduleMap.set(importedItem.name, importedItem);\n return importedItem;\n }\n\n public getName(withExtension = true) {\n if (withExtension) {\n return this._name;\n }\n\n const { name } = splitNameAndExtension(this._name);\n return name;\n }\n\n public isEmpty() {\n return !this._items.length;\n }\n\n public remove(options?: Parameters<typeof rmSync>[1]) {\n rmSync(this._path, options);\n }\n\n /**\n * Removes last node form the stack. Works as undo.\n */\n public removeNode() {\n this._items = this._items.slice(0, this._items.length - 1);\n }\n\n private _setName(fileName: string) {\n if (fileName.includes('index')) {\n return fileName;\n }\n\n const { extension, name } = splitNameAndExtension(fileName);\n return [name, 'gen', extension].filter(Boolean).join('.');\n }\n\n public toString(separator: string = '\\n') {\n let output: string[] = [];\n if (this._headers.length) {\n output = [...output, this._headers.join('\\n')];\n }\n let importsStringArray: string[] = [];\n for (const [_module, moduleMap] of this._imports.entries()) {\n const imports = Array.from(moduleMap.values());\n const node = compiler.namedImportDeclarations({\n imports,\n module: _module,\n });\n importsStringArray = [\n ...importsStringArray,\n utils.tsNodeToString({ node }),\n ];\n }\n if (importsStringArray.length) {\n output = [...output, importsStringArray.join('\\n')];\n }\n output = [\n ...output,\n ...this._items.map((node) =>\n typeof node === 'string'\n ? node\n : utils.tsNodeToString({ node, unescape: true }),\n ),\n ];\n return output.join(separator);\n }\n\n public write(separator = '\\n') {\n if (this.isEmpty()) {\n this.remove({ force: true });\n return;\n }\n\n let dir = this._path;\n if (typeof this._path === 'string') {\n const parts = this._path.split(path.sep);\n dir = parts.slice(0, parts.length - 1).join(path.sep);\n }\n ensureDirSync(dir);\n writeFileSync(this._path, this.toString(separator));\n }\n}\n\nexport const compiler = {\n anonymousFunction: types.createAnonymousFunction,\n arrayLiteralExpression: types.createArrayLiteralExpression,\n arrowFunction: types.createArrowFunction,\n awaitExpression: types.createAwaitExpression,\n binaryExpression: transform.createBinaryExpression,\n callExpression: module.createCallExpression,\n classDeclaration: classes.createClassDeclaration,\n conditionalExpression: types.createConditionalExpression,\n constVariable: module.createConstVariable,\n constructorDeclaration: classes.createConstructorDeclaration,\n enumDeclaration: types.createEnumDeclaration,\n exportAllDeclaration: module.createExportAllDeclaration,\n exportNamedDeclaration: module.createNamedExportDeclarations,\n expressionToStatement: convert.expressionToStatement,\n identifier: utils.createIdentifier,\n ifStatement: transform.createIfStatement,\n indexedAccessTypeNode: types.createIndexedAccessTypeNode,\n isTsNode: utils.isTsNode,\n keywordTypeNode: types.createKeywordTypeNode,\n methodDeclaration: classes.createMethodDeclaration,\n namedImportDeclarations: module.createNamedImportDeclarations,\n namespaceDeclaration: types.createNamespaceDeclaration,\n nodeToString: utils.tsNodeToString,\n objectExpression: types.createObjectType,\n ots: utils.ots,\n propertyAccessExpression: types.createPropertyAccessExpression,\n propertyAccessExpressions: transform.createPropertyAccessExpressions,\n returnFunctionCall: _return.createReturnFunctionCall,\n returnVariable: _return.createReturnVariable,\n safeAccessExpression: transform.createSafeAccessExpression,\n stringLiteral: types.createStringLiteral,\n stringToTsNodes: utils.stringToTsNodes,\n transformArrayMap: transform.createArrayMapTransform,\n transformArrayMutation: transform.createArrayTransformMutation,\n transformDateMutation: transform.createDateTransformMutation,\n transformFunctionMutation: transform.createFunctionTransformMutation,\n transformNewDate: transform.createDateTransformerExpression,\n typeAliasDeclaration: types.createTypeAliasDeclaration,\n typeArrayNode: typedef.createTypeArrayNode,\n typeInterfaceNode: typedef.createTypeInterfaceNode,\n typeIntersectionNode: typedef.createTypeIntersectionNode,\n typeNode: types.createTypeNode,\n typeOfExpression: types.createTypeOfExpression,\n typeParenthesizedNode: types.createTypeParenthesizedNode,\n typeRecordNode: typedef.createTypeRecordNode,\n typeReferenceNode: types.createTypeReferenceNode,\n typeTupleNode: typedef.createTypeTupleNode,\n typeUnionNode: typedef.createTypeUnionNode,\n};\n","import { compiler, TypeScriptFile } from '../compiler';\nimport type { Files } from '../types/utils';\nimport { getConfig } from '../utils/config';\n\nexport const generateIndexFile = async ({\n files,\n}: {\n files: Files;\n}): Promise<void> => {\n const config = getConfig();\n\n files.index = new TypeScriptFile({\n dir: config.output.path,\n name: 'index.ts',\n });\n\n if (config.name) {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: config.name,\n module: `./${config.name}`,\n }),\n );\n }\n\n if (config.exportCore) {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: 'ApiError',\n module: './core/ApiError',\n }),\n );\n if (config.services.response === 'response') {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: { asType: true, name: 'ApiResult' },\n module: './core/ApiResult',\n }),\n );\n }\n if (config.name) {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: 'BaseHttpRequest',\n module: './core/BaseHttpRequest',\n }),\n );\n }\n if (config.client.name !== 'legacy/angular') {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: ['CancelablePromise', 'CancelError'],\n module: './core/CancelablePromise',\n }),\n );\n }\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: ['OpenAPI', { asType: true, name: 'OpenAPIConfig' }],\n module: './core/OpenAPI',\n }),\n );\n }\n\n Object.keys(files)\n .sort()\n .forEach((name) => {\n const file = files[name];\n\n if (name === 'index' || file.isEmpty()) {\n return;\n }\n\n files.index.add(\n compiler.exportAllDeclaration({\n module: `./${file.getName(false)}`,\n }),\n );\n });\n};\n","import path from 'node:path';\n\nimport { TypeScriptFile } from '../compiler';\nimport type { Client } from '../types/client';\nimport type { Files } from '../types/utils';\nimport { getConfig, isLegacyClient } from '../utils/config';\n\nexport const generatePlugins = async ({\n client,\n files,\n}: {\n client: Client;\n files: Files;\n}) => {\n const config = getConfig();\n\n if (isLegacyClient(config)) {\n // plugins do not work with legacy clients\n return;\n }\n\n for (const plugin of config.plugins) {\n const outputParts = plugin.output.split('/');\n const outputDir = path.resolve(\n config.output.path,\n ...outputParts.slice(0, outputParts.length - 1),\n );\n files[plugin.name] = new TypeScriptFile({\n dir: outputDir,\n name: `${outputParts[outputParts.length - 1]}.ts`,\n });\n plugin.handler({\n client,\n files,\n plugin: plugin as never,\n });\n }\n};\n","import type { OpenApiV3_0_3 } from '../types/spec';\n\nexport const parseV3_0_3 = (spec: OpenApiV3_0_3) => {\n // TODO\n console.log(spec);\n};\n","import { getConfig } from '../../../utils/config';\nimport type { OperationObject } from '../types/spec';\n\nexport const parseOperation = ({\n method,\n operation,\n operationIds,\n path,\n}: {\n method: string;\n operation: OperationObject;\n operationIds: Map<string, string>;\n path: string;\n}) => {\n const operationKey = `${method} ${path}`;\n\n const config = getConfig();\n\n // TODO: filter function, move services to plugin, cleaner syntax\n const regexp = config.services.filter\n ? new RegExp(config.services.filter)\n : undefined;\n if (regexp && !regexp.test(operationKey)) {\n return;\n }\n\n // TODO: support throw on duplicate\n if (operation.operationId) {\n if (operationIds.has(operation.operationId)) {\n console.warn(\n `❗️ Duplicate operationId: ${operation.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n } else {\n operationIds.set(operation.operationId, operationKey);\n }\n }\n\n console.log(operation);\n};\n","import type { OpenApiV3_1, PathsObject } from '../types/spec';\nimport { parseOperation } from './operation';\n\nexport const parseV3_1 = (spec: OpenApiV3_1) => {\n const operationIds = new Map<string, string>();\n\n for (const path in spec.paths) {\n const pathItem = spec.paths[path as keyof PathsObject];\n\n if (pathItem.delete) {\n parseOperation({\n method: 'DELETE',\n operation: pathItem.delete,\n operationIds,\n path,\n });\n }\n\n if (pathItem.get) {\n parseOperation({\n method: 'GET',\n operation: pathItem.get,\n operationIds,\n path,\n });\n }\n\n if (pathItem.head) {\n parseOperation({\n method: 'HEAD',\n operation: pathItem.head,\n operationIds,\n path,\n });\n }\n\n if (pathItem.options) {\n parseOperation({\n method: 'OPTIONS',\n operation: pathItem.options,\n operationIds,\n path,\n });\n }\n\n if (pathItem.patch) {\n parseOperation({\n method: 'PATCH',\n operation: pathItem.patch,\n operationIds,\n path,\n });\n }\n\n if (pathItem.post) {\n parseOperation({\n method: 'POST',\n operation: pathItem.post,\n operationIds,\n path,\n });\n }\n\n if (pathItem.put) {\n parseOperation({\n method: 'PUT',\n operation: pathItem.put,\n operationIds,\n path,\n });\n }\n\n if (pathItem.trace) {\n parseOperation({\n method: 'TRACE',\n operation: pathItem.trace,\n operationIds,\n path,\n });\n }\n }\n};\n","import type { Config } from './common/interfaces/config';\n\nlet _config: Config;\n\nexport const getConfig = () => _config;\n\nexport const setConfig = (config: Config) => {\n _config = config;\n return getConfig();\n};\n","export const allowedServiceMethods = [\n 'connect',\n 'delete',\n 'get',\n 'head',\n 'options',\n 'patch',\n 'post',\n 'put',\n 'trace',\n] as const;\n\n/**\n * Convert the service version to 'normal' version.\n * This basically removes any \"v\" prefix from the version string.\n * @param version\n */\nexport function getServiceVersion(version = '1.0'): string {\n return String(version).replace(/^v/gi, '');\n}\n","export const refParametersPartial = '#/components/parameters/';\n\nexport const refSchemasPartial = '#/components/schemas/';\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(\n SEPARATORS.source + IDENTIFIER.source,\n 'gu',\n);\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string: string) => {\n let isLastCharLower = false;\n let isLastCharUpper = false;\n let isLastLastCharUpper = false;\n let isLastLastCharPreserved = false;\n\n for (let index = 0; index < string.length; index++) {\n const character = string[index];\n isLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n if (isLastCharLower && UPPERCASE.test(character)) {\n string = string.slice(0, index) + '-' + string.slice(index);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n index++;\n } else if (\n isLastCharUpper &&\n isLastLastCharUpper &&\n LOWERCASE.test(character) &&\n !isLastLastCharPreserved\n ) {\n string = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower =\n character.toLocaleLowerCase() === character &&\n character.toLocaleUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper =\n character.toLocaleUpperCase() === character &&\n character.toLocaleLowerCase() !== character;\n }\n }\n\n return string;\n};\n\n/**\n * Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`. Correctly handles Unicode strings. Returns transformed string.\n */\nexport const camelCase = ({\n input,\n pascalCase,\n}: {\n input: string;\n /**\n * Uppercase the first character: `foo-bar` → `FooBar`\n *\n * @default false\n */\n readonly pascalCase?: boolean;\n}): string => {\n let result = input.trim();\n\n if (!result.length) {\n return '';\n }\n\n if (result.length === 1) {\n if (SEPARATORS.test(result)) {\n return '';\n }\n\n return pascalCase ? result.toLocaleUpperCase() : result.toLocaleLowerCase();\n }\n\n const hasUpperCase = result !== result.toLocaleLowerCase();\n\n if (hasUpperCase) {\n result = preserveCamelCase(result);\n }\n\n result = result.replace(LEADING_SEPARATORS, '');\n result = result.toLocaleLowerCase();\n\n if (pascalCase) {\n result = result.charAt(0).toLocaleUpperCase() + result.slice(1);\n }\n\n SEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n NUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n result = result.replaceAll(NUMBERS_AND_IDENTIFIER, (match, _, offset) => {\n if (['_', '-', '.'].includes(result.charAt(offset + match.length))) {\n return match;\n }\n\n return match.toLocaleUpperCase();\n });\n\n result = result.replaceAll(SEPARATORS_AND_IDENTIFIER, (_, identifier) =>\n identifier.toLocaleUpperCase(),\n );\n\n return result;\n};\n","import { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport { camelCase } from './camelCase';\nimport { getConfig } from './config';\nimport { reservedWordsRegExp } from './regexp';\n\nexport const transformServiceName = (name: string) => {\n const config = getConfig();\n if (config.services.name) {\n return config.services.name.replace('{{name}}', name);\n }\n return name;\n};\n\nexport const transformTypeName = (name: string) => {\n const config = getConfig();\n if (config.types.name === 'PascalCase') {\n return camelCase({\n input: name,\n pascalCase: true,\n });\n }\n return name;\n};\n\n/**\n * This method is meant to be used to process definition names\n * and return a cleaned up, transformed version that is legal\n * to use in the output code.\n *\n * For example, a definition with name \"400\" would result in \"_400\",\n * \"import\" would result in \"_import\", etc. This also respects the\n * casing configuration for types.\n *\n * @param name Name of the definition in OpenAPI specification.\n * @returns A cleaned up, transformed name usable in output code.\n */\nexport const cleanAndTransformTypeName = (name: string) => {\n const transformed = transformTypeName(name);\n const cleaned = ensureValidTypeScriptJavaScriptIdentifier(transformed);\n const result = cleaned.replace(reservedWordsRegExp, '_$1');\n return result;\n};\n","import type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const inferType = (\n definition: OpenApiSchema,\n definitionTypes: string[],\n) => {\n if (definition.enum && !definitionTypes.includes('boolean')) {\n return 'enum';\n }\n return undefined;\n};\n\nexport const isDefinitionTypeNullable = (\n definition: Pick<OpenApiSchema, 'type'>,\n) => getDefinitionTypes(definition).includes('null');\n\nexport const isDefinitionNullable = (\n definition: Pick<OpenApiSchema, 'nullable' | 'type'>,\n) => definition.nullable === true || isDefinitionTypeNullable(definition);\n\nexport const getDefinitionTypes = ({ type }: Pick<OpenApiSchema, 'type'>) => {\n if (Array.isArray(type)) {\n return type;\n }\n if (type) {\n return [type];\n }\n return [];\n};\n","import { illegalStartCharactersRegExp } from '../../../utils/regexp';\n\n/**\n * Sanitizes names of types, so they are valid TypeScript identifiers of a certain form.\n *\n * 1: Remove any leading characters that are illegal as starting character of a TypeScript identifier.\n * 2: Replace illegal characters in remaining part of type name with underscore (_).\n *\n * Step 1 should perhaps instead also replace illegal characters with underscore, or prefix with it, like sanitizeEnumName\n * does. The way this is now one could perhaps end up removing all characters, if all are illegal start characters. It\n * would be sort of a breaking change to do so, though, previously generated code might change then.\n *\n * JavaScript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nconst replaceInvalidTypeScriptJavaScriptIdentifier = (name: string) =>\n name\n .replace(illegalStartCharactersRegExp, '')\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_');\n\nexport const ensureValidTypeScriptJavaScriptIdentifier = (name: string) => {\n illegalStartCharactersRegExp.lastIndex = 0;\n const startsWithIllegalCharacter = illegalStartCharactersRegExp.test(name);\n // avoid removing all characters in case they're all illegal\n const input = startsWithIllegalCharacter ? `_${name}` : name;\n const cleaned = replaceInvalidTypeScriptJavaScriptIdentifier(input);\n return cleaned;\n};\n\n/**\n * Sanitizes namespace identifiers so they are valid TypeScript identifiers of a certain form.\n *\n * 1: Remove any leading characters that are illegal as starting character of a typescript identifier.\n * 2: Replace illegal characters in remaining part of type name with hyphen (-).\n *\n * Step 1 should perhaps instead also replace illegal characters with underscore, or prefix with it, like sanitizeEnumName\n * does. The way this is now one could perhaps end up removing all characters, if all are illegal start characters. It\n * would be sort of a breaking change to do so, though, previously generated code might change then.\n *\n * JavaScript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n *\n * The output of this is expected to be converted to PascalCase\n */\nexport const sanitizeNamespaceIdentifier = (name: string) =>\n name\n .replace(/^[^\\p{ID_Start}]+/u, '')\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '-')\n .replace(/\\$/g, '-');\n\nexport const sanitizeOperationParameterName = (name: string) => {\n const withoutBrackets = name.replace('[]', 'Array');\n return sanitizeNamespaceIdentifier(withoutBrackets);\n};\n","/**\n * Strip (OpenAPI) namespaces from values.\n * @param value\n */\nexport const stripNamespace = (value: string): string =>\n value\n .trim()\n .replace(/^#\\/definitions\\//, '')\n .replace(/^#\\/parameters\\//, '')\n .replace(/^#\\/responses\\//, '')\n .replace(/^#\\/securityDefinitions\\//, '')\n .replace(/^#\\/components\\/schemas\\//, '')\n .replace(/^#\\/components\\/responses\\//, '')\n .replace(/^#\\/components\\/parameters\\//, '')\n .replace(/^#\\/components\\/examples\\//, '')\n .replace(/^#\\/components\\/requestBodies\\//, '')\n .replace(/^#\\/components\\/headers\\//, '')\n .replace(/^#\\/components\\/securitySchemes\\//, '')\n .replace(/^#\\/components\\/links\\//, '')\n .replace(/^#\\/components\\/callbacks\\//, '');\n","import { refParametersPartial } from '../../../utils/const';\nimport { transformTypeName } from '../../../utils/transform';\nimport { isDefinitionTypeNullable } from '../../v3/parser/inferType';\nimport type { Type } from '../interfaces/Type';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from './sanitize';\nimport { stripNamespace } from './stripNamespace';\n\n/**\n * Get mapped type for given type to basic Typescript/Javascript type.\n */\nexport const getMappedType = (\n type: string,\n format?: string,\n): string | undefined => {\n if (format === 'binary') {\n return 'binary';\n }\n switch (type) {\n case 'any':\n case 'object':\n case 'unknown':\n return 'unknown';\n case 'array':\n return 'unknown[]';\n case 'boolean':\n return 'boolean';\n case 'byte':\n case 'double':\n case 'float':\n case 'int':\n case 'integer':\n case 'long':\n case 'number':\n case 'short':\n return 'number';\n case 'char':\n case 'date':\n case 'date-time':\n case 'password':\n case 'string':\n return 'string';\n case 'file':\n return 'binary';\n case 'null':\n return 'null';\n case 'void':\n return 'void';\n }\n};\n\n/**\n * Matches characters inside square brackets, including the brackets. Does not\n * match if the opening bracket is preceded by \"`1\" which is a syntax for generics\n * from C#.\n *\n * Hello[World] -> matches [World]\n * Hello`1[World] -> no match\n * string[] -> matches []\n */\nexport const hasSquareBracketsRegExp = /(?<!`1)\\[.*\\]$/g;\n\n/**\n * Parse any string value into a type object.\n * @param type String or String[] value like \"integer\", \"Link[Model]\" or [\"string\", \"null\"].\n * @param format String value like \"binary\" or \"date\".\n */\nexport const getType = ({\n debug,\n format,\n type = 'unknown',\n}: {\n debug?: boolean;\n format?: string;\n /**\n * Type can be the name of a schema component, a ref string, or any definition type.\n */\n type?: string | string[];\n}): Type => {\n const result: Type = {\n $refs: [],\n base: 'unknown',\n imports: [],\n isNullable: false,\n template: null,\n type: 'unknown',\n };\n\n // Special case for JSON Schema spec (december 2020, page 17),\n // that allows type to be an array of primitive types...\n if (Array.isArray(type)) {\n const joinedType = type\n .filter((value) => value !== 'null')\n .map((value) => getMappedType(value, format))\n .filter(Boolean)\n .join(' | ');\n result.type = joinedType;\n result.base = joinedType;\n result.isNullable = isDefinitionTypeNullable({ type });\n return result;\n }\n\n const mapped = getMappedType(type, format);\n if (mapped) {\n result.type = mapped;\n result.base = mapped;\n return result;\n }\n\n const typeWithoutNamespace = decodeURIComponent(stripNamespace(type));\n\n hasSquareBracketsRegExp.lastIndex = 0;\n if (hasSquareBracketsRegExp.test(typeWithoutNamespace)) {\n const matches = typeWithoutNamespace.match(/(.*?)\\[(.*)\\]$/);\n if (matches?.length) {\n const match1 = getType({\n debug,\n type: ensureValidTypeScriptJavaScriptIdentifier(matches[1]),\n });\n const match2 = getType({\n debug,\n type: ensureValidTypeScriptJavaScriptIdentifier(matches[2]),\n });\n\n if (match1.type === 'unknown[]') {\n result.type = `${match2.type}[]`;\n result.base = `${match2.type}`;\n match1.$refs = [];\n match1.imports = [];\n } else if (match2.type) {\n result.type = `${match1.type}<${match2.type}>`;\n result.base = match1.type;\n result.template = match2.type;\n } else {\n result.type = match1.type;\n result.base = match1.type;\n result.template = match1.type;\n }\n\n result.$refs = [...result.$refs, ...match1.$refs, ...match2.$refs];\n result.imports = [\n ...result.imports,\n ...match1.imports,\n ...match2.imports,\n ];\n return result;\n }\n }\n\n if (typeWithoutNamespace) {\n let encodedType = transformTypeName(\n ensureValidTypeScriptJavaScriptIdentifier(typeWithoutNamespace),\n );\n if (type.startsWith(refParametersPartial)) {\n // prefix parameter names to avoid conflicts, assuming people are mostly\n // interested in importing schema types and don't care about this naming\n encodedType = `Parameter${encodedType}`;\n }\n result.type = encodedType;\n result.base = encodedType;\n if (type.startsWith('#')) {\n result.$refs = [...result.$refs, decodeURIComponent(type)];\n }\n result.imports = [...result.imports, encodedType];\n return result;\n }\n\n return result;\n};\n","export function unique<T>(value: T, index: number, arr: T[]): boolean {\n return arr.indexOf(value) === index;\n}\n","import { unique } from '../../../utils/unique';\nimport type { Enum } from '../interfaces/client';\nimport type { WithEnumExtension } from '../interfaces/WithEnumExtension';\n\nexport const getEnums = (\n definition: WithEnumExtension,\n values?: ReadonlyArray<string | number>,\n): Enum[] => {\n if (!Array.isArray(values)) {\n return [];\n }\n\n const descriptions = (definition['x-enum-descriptions'] ?? []).filter(\n (value) => typeof value === 'string',\n );\n const names = (\n definition['x-enum-varnames'] ??\n definition['x-enumNames'] ??\n []\n ).filter((value) => typeof value === 'string');\n\n return values\n .filter(unique)\n .filter((value) => typeof value === 'number' || typeof value === 'string')\n .map((value, index) => ({\n customDescription: descriptions[index],\n customName: names[index],\n description: undefined,\n value,\n }));\n};\n","/**\n * The spec generates a pattern like this '^\\d{3}-\\d{2}-\\d{4}$'\n * However, to use it in HTML or inside new RegExp() we need to\n * escape the pattern to become: '^\\\\d{3}-\\\\d{2}-\\\\d{4}$' in order\n * to make it a valid regexp string.\n *\n * Also, escape single quote characters, because the output uses single quotes for strings\n *\n * @param pattern\n */\nexport const getPattern = (pattern?: string): string | undefined =>\n pattern?.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n","import type { Client } from '../../../types/client';\nimport { escapeName } from '../../../utils/escape';\nimport type { Model } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getModelProperties = ({\n definition,\n getModel,\n openApi,\n types,\n}: {\n definition: OpenApiSchema;\n getModel: GetModelFn;\n openApi: OpenApi;\n types: Client['types'];\n}): Model[] => {\n const models: Model[] = [];\n\n Object.entries(definition.properties ?? {}).forEach(\n ([propertyName, property]) => {\n const propertyRequired = Boolean(\n definition.required?.includes(propertyName),\n );\n if (property.$ref) {\n const model = getType({ type: property.$ref });\n models.push({\n $refs: [],\n base: model.base,\n description: property.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n export: 'reference',\n format: property.format,\n imports: model.imports,\n in: '',\n isDefinition: false,\n isNullable: property['x-nullable'] === true,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n link: null,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n properties: [],\n template: model.template,\n type: model.type,\n uniqueItems: property.uniqueItems,\n });\n } else {\n const model = getModel({ definition: property, openApi, types });\n models.push({\n $refs: [],\n base: model.base,\n description: property.description || null,\n enum: model.enum,\n enums: model.enums,\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n export: model.export,\n format: property.format,\n imports: model.imports,\n in: '',\n isDefinition: false,\n isNullable: property['x-nullable'] === true,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n link: model.link,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n properties: model.properties,\n template: model.template,\n type: model.type,\n uniqueItems: property.uniqueItems,\n });\n }\n },\n );\n\n return models;\n};\n","import type { OpenApiReference as OpenApiReferenceV2 } from '../../v2/interfaces/OpenApiReference';\nimport type { OpenApiReference as OpenApiReferenceV3 } from '../../v3/interfaces/OpenApiReference';\nimport type { OpenApi } from '../interfaces/OpenApi';\n\nconst ESCAPED_REF_SLASH = /~1/g;\nconst ESCAPED_REF_TILDE = /~0/g;\n\nexport function getRef<T>(\n openApi: OpenApi,\n item: T & (OpenApiReferenceV2 | OpenApiReferenceV3),\n): T {\n if (item.$ref) {\n // Fetch the paths to the definitions, this converts:\n // \"#/components/schemas/Form\" to [\"components\", \"schemas\", \"Form\"]\n const paths = item.$ref.replace(/^#/g, '').split('/').filter(Boolean);\n\n // Try to find the reference by walking down the path,\n // if we cannot find it, then we throw an error.\n let result = openApi;\n paths.forEach((path) => {\n const decodedPath = decodeURIComponent(\n path.replace(ESCAPED_REF_SLASH, '/').replace(ESCAPED_REF_TILDE, '~'),\n );\n if (result.hasOwnProperty(decodedPath)) {\n // @ts-expect-error\n result = result[decodedPath];\n } else {\n throw new Error(`Could not find reference: \"${item.$ref}\"`);\n }\n });\n return result as T;\n }\n return item as T;\n}\n","import type { Client } from '../../../types/client';\nimport type { Model } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getRequiredPropertiesFromComposition = ({\n definitions,\n getModel,\n openApi,\n required,\n types,\n}: {\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n required: string[];\n types: Client['types'];\n}): Model[] =>\n definitions\n .reduce((properties, definition) => {\n if (definition.$ref) {\n const schema = getRef<OpenApiSchema>(openApi, definition);\n return [\n ...properties,\n ...getModel({ definition: schema, openApi, types }).properties,\n ];\n }\n return [\n ...properties,\n ...getModel({ definition, openApi, types }).properties,\n ];\n }, [] as Model[])\n .filter(\n (property) => !property.isRequired && required.includes(property.name),\n )\n .map((property) => ({\n ...property,\n isRequired: true,\n }));\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelComposition } from '../../common/interfaces/client';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelProperties } from './getModelProperties';\nimport { getRequiredPropertiesFromComposition } from './getRequiredPropertiesFromComposition';\n\nexport const getModelComposition = ({\n definition,\n definitions,\n getModel,\n openApi,\n type,\n types,\n}: {\n definition: OpenApiSchema;\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n type: 'one-of' | 'any-of' | 'all-of';\n types: Client['types'];\n}): ModelComposition => {\n const composition: ModelComposition = {\n $refs: [],\n enums: [],\n export: type,\n imports: [],\n properties: [],\n };\n\n const properties: Model[] = [];\n\n definitions\n .map((definition) => getModel({ definition, openApi, types }))\n .filter((model) => {\n const hasProperties = model.properties.length;\n const hasEnums = model.enums.length;\n const isObject = model.type === 'unknown';\n const isEmpty = isObject && !hasProperties && !hasEnums;\n return !isEmpty;\n })\n .forEach((model) => {\n composition.imports.push(...model.imports);\n composition.enums.push(...model.enums);\n composition.properties.push(model);\n });\n\n if (definition.required && type === 'all-of') {\n const requiredProperties = getRequiredPropertiesFromComposition({\n definitions,\n getModel,\n openApi,\n required: definition.required,\n types,\n });\n requiredProperties.forEach((requiredProperty) => {\n composition.imports.push(...requiredProperty.imports);\n composition.enums.push(...requiredProperty.enums);\n });\n properties.push(...requiredProperties);\n }\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n composition.imports.push(...modelProperty.imports);\n composition.enums.push(...modelProperty.enums);\n if (modelProperty.export === 'enum') {\n composition.enums.push(modelProperty);\n }\n });\n properties.push(...modelProperties);\n }\n\n if (properties.length) {\n composition.properties.push({\n $refs: [],\n base: 'unknown',\n description: '',\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: 'properties',\n properties,\n template: null,\n type: 'unknown',\n });\n }\n\n return composition;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelMeta } from '../../common/interfaces/client';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelComposition } from './getModelComposition';\nimport { getModelProperties } from './getModelProperties';\n\nexport const getModel = ({\n definition,\n isDefinition = false,\n meta,\n openApi,\n types,\n}: Pick<Client, 'types'> & {\n definition: OpenApiSchema;\n isDefinition?: boolean;\n meta?: ModelMeta;\n openApi: OpenApi;\n}): Model => {\n const model: Model = {\n $refs: [],\n base: 'unknown',\n description: definition.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: definition.exclusiveMaximum,\n exclusiveMinimum: definition.exclusiveMinimum,\n export: 'interface',\n format: definition.format,\n imports: [],\n in: '',\n isDefinition,\n isNullable: definition['x-nullable'] === true,\n isReadOnly: definition.readOnly === true,\n isRequired: false,\n link: null,\n maxItems: definition.maxItems,\n maxLength: definition.maxLength,\n maxProperties: definition.maxProperties,\n maximum: definition.maximum,\n meta,\n minItems: definition.minItems,\n minLength: definition.minLength,\n minProperties: definition.minProperties,\n minimum: definition.minimum,\n multipleOf: definition.multipleOf,\n name: meta?.name ?? '',\n pattern: getPattern(definition.pattern),\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: definition.uniqueItems,\n };\n\n if (definition.$ref) {\n const definitionRef = getType({ type: definition.$ref });\n model.export = 'reference';\n model.type = definitionRef.type;\n model.base = definitionRef.base;\n model.template = definitionRef.template;\n model.imports.push(...definitionRef.imports);\n return model;\n }\n\n if (definition.enum && definition.type !== 'boolean') {\n const enums = getEnums(definition, definition.enum);\n if (enums.length) {\n model.base = 'string';\n model.enum = [...model.enum, ...enums];\n model.export = 'enum';\n model.type = 'string';\n return model;\n }\n }\n\n if (definition.type === 'array' && definition.items) {\n if (definition.items.$ref) {\n const arrayItems = getType({ type: definition.items.$ref });\n model.export = 'array';\n model.type = arrayItems.type;\n model.base = arrayItems.base;\n model.template = arrayItems.template;\n model.imports.push(...arrayItems.imports);\n return model;\n } else {\n const arrayItems = getModel({\n definition: definition.items,\n openApi,\n types,\n });\n model.export = 'array';\n model.type = arrayItems.type;\n model.base = arrayItems.base;\n model.template = arrayItems.template;\n model.link = arrayItems;\n model.imports.push(...arrayItems.imports);\n return model;\n }\n }\n\n if (\n definition.type === 'object' &&\n typeof definition.additionalProperties === 'object'\n ) {\n if (definition.additionalProperties.$ref) {\n const additionalProperties = getType({\n type: definition.additionalProperties.$ref,\n });\n model.export = 'dictionary';\n model.type = additionalProperties.type;\n model.base = additionalProperties.base;\n model.template = additionalProperties.template;\n model.imports.push(...additionalProperties.imports);\n return model;\n } else {\n const additionalProperties = getModel({\n definition: definition.additionalProperties,\n openApi,\n types,\n });\n model.export = 'dictionary';\n model.type = additionalProperties.type;\n model.base = additionalProperties.base;\n model.template = additionalProperties.template;\n model.link = additionalProperties;\n model.imports.push(...additionalProperties.imports);\n return model;\n }\n }\n\n if (definition.allOf?.length) {\n const composition = getModelComposition({\n definition,\n definitions: definition.allOf,\n getModel,\n openApi,\n type: 'all-of',\n types,\n });\n model.export = composition.export;\n model.imports.push(...composition.imports);\n model.properties.push(...composition.properties);\n model.enums = [...model.enums, ...composition.enums];\n return model;\n }\n\n if (definition.type === 'object') {\n model.export = 'interface';\n model.type = 'unknown';\n model.base = 'unknown';\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n model.imports.push(...modelProperty.imports);\n model.enums = [...model.enums, ...modelProperty.enums];\n model.properties.push(modelProperty);\n if (modelProperty.export === 'enum') {\n model.enums = [...model.enums, modelProperty];\n }\n });\n }\n return model;\n }\n\n // If the schema has a type than it can be a basic or generic type.\n if (definition.type) {\n const definitionType = getType({\n format: definition.format,\n type: definition.type,\n });\n model.export = 'generic';\n model.type = definitionType.type;\n model.base = definitionType.base;\n model.template = definitionType.template;\n model.imports.push(...definitionType.imports);\n return model;\n }\n\n return model;\n};\n","import type { Client } from '../../../types/client';\nimport { reservedWordsRegExp } from '../../../utils/regexp';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getModel } from './getModel';\n\nexport const getModels = (\n openApi: OpenApi,\n): Pick<Client, 'models' | 'types'> => {\n const types: Client['types'] = {};\n let models: Client['models'] = [];\n\n Object.entries(openApi.definitions ?? {}).forEach(\n ([definitionName, definition]) => {\n const definitionType = getType({ type: definitionName });\n const name = definitionType.base.replace(reservedWordsRegExp, '_$1');\n const meta = {\n $ref: `#/definitions/${definitionName}`,\n name,\n };\n types[name] = meta;\n const model = getModel({\n definition,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n models = [...models, model];\n },\n );\n\n return {\n models,\n types,\n };\n};\n","import type {\n OperationParameter,\n OperationResponse,\n} from '../interfaces/client';\n\nexport const getOperationKey = (operation: {\n method: string;\n path: string;\n}) => {\n const operationKey = `${operation.method} ${operation.path}`;\n return operationKey;\n};\n\nexport const getOperationResponseHeader = (\n operationResponses: OperationResponse[],\n): string | null => {\n const header = operationResponses.find(\n (operationResponses) => operationResponses.in === 'header',\n );\n if (header) {\n return header.name;\n }\n return null;\n};\n\n/**\n * Does this operation have at least one required parameter?\n * @returns boolean\n */\nexport const isOperationParameterRequired = (\n parameters: OperationParameter[],\n) => {\n const isRequired = parameters.some((parameter) => parameter.isRequired);\n return isRequired;\n};\n\n/**\n * Attempts to parse response status code from string into number.\n * @param value string status code from OpenAPI definition\n * @returns Parsed status code or null if invalid value\n */\nexport const parseResponseStatusCode = (\n value: string,\n): OperationResponse['code'] | null => {\n if (value === 'default') {\n return 'default';\n }\n\n if (value === '1XX') {\n return '1XX';\n }\n\n if (value === '2XX') {\n return '2XX';\n }\n\n if (value === '3XX') {\n return '3XX';\n }\n\n if (value === '4XX') {\n return '4XX';\n }\n\n if (value === '5XX') {\n return '5XX';\n }\n\n if (/\\d{3}/g.test(value)) {\n const code = Number.parseInt(value, 10);\n if (code >= 100 && code < 600) {\n return code;\n }\n }\n\n return null;\n};\n\nexport const sorterByResponseStatusCode = (\n a: OperationResponse,\n b: OperationResponse,\n) => {\n if (a.code > b.code) {\n return 1;\n }\n\n if (a.code < b.code) {\n return -1;\n }\n\n return 0;\n};\n\nconst isErrorStatusCode = (code: OperationResponse['code']) =>\n code === '3XX' ||\n code === '4XX' ||\n code === '5XX' ||\n (typeof code === 'number' && code >= 300);\n\nconst isSuccessStatusCode = (code: OperationResponse['code']) =>\n code === '2XX' || (typeof code === 'number' && code >= 200 && code < 300);\n\n/**\n * Detects whether default response is meant to be used\n * for error or success response.\n */\nconst inferDefaultResponseTypes = (\n response: OperationResponse,\n responses: OperationResponse[],\n) => {\n let types: Array<'error' | 'success'> = [];\n\n const addResponseType = (type: (typeof types)[number]) => {\n if (!types.includes(type)) {\n types = [...types, type];\n }\n };\n\n const hasSuccessResponse = responses.some(({ code }) =>\n isSuccessStatusCode(code),\n );\n if (!hasSuccessResponse) {\n addResponseType('success');\n }\n\n const description = (response.description ?? '').toLocaleLowerCase();\n const $refs = response.$refs.join('|').toLocaleLowerCase();\n\n // must be in lowercase\n const errorKeywords = ['error', 'problem'];\n const successKeywords = ['success'];\n\n if (\n successKeywords.some(\n (keyword) => description.includes(keyword) || $refs.includes(keyword),\n )\n ) {\n addResponseType('success');\n }\n\n if (\n errorKeywords.some(\n (keyword) => description.includes(keyword) || $refs.includes(keyword),\n )\n ) {\n addResponseType('error');\n }\n\n if (!types.length) {\n addResponseType('error');\n }\n\n return types;\n};\n\nexport const tagResponseTypes = (responses: OperationResponse[]) =>\n responses.map((response) => {\n const { code } = response;\n if (code === 'default') {\n response.responseTypes = inferDefaultResponseTypes(response, responses);\n } else if (isSuccessStatusCode(code)) {\n response.responseTypes = ['success'];\n } else if (isErrorStatusCode(code)) {\n response.responseTypes = ['error'];\n }\n return response;\n });\n","import type { Model } from '../../common/interfaces/client';\nimport type { OpenApiParameter } from '../../v2/interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../../v3/interfaces/OpenApiSchema';\nimport { getDefinitionTypes } from '../../v3/parser/inferType';\nimport type { OperationParameter } from '../interfaces/client';\n\nexport const getDefault = (\n definition: OpenApiSchema | OpenApiParameter,\n model?: Model | OperationParameter,\n): unknown | undefined => {\n if (definition.default === undefined || definition.default === null) {\n return definition.default;\n }\n\n const definitionTypes = getDefinitionTypes(definition);\n\n const type =\n definitionTypes.find((type) => type !== 'null') ||\n typeof definition.default;\n\n switch (type) {\n case 'int':\n case 'integer':\n case 'number':\n if (\n model?.export === 'enum' &&\n model.enum?.[definition.default as number]\n ) {\n const { value } = model.enum[definition.default as number];\n return value;\n }\n return definition.default;\n case 'array':\n case 'boolean':\n case 'object':\n case 'string':\n return definition.default;\n default:\n return undefined;\n }\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\n\nexport const getOperationParameter = ({\n openApi,\n parameter,\n types,\n}: {\n openApi: OpenApi;\n parameter: OpenApiParameter;\n types: Client['types'];\n}): OperationParameter => {\n const config = getConfig();\n\n const operationParameterWithoutName: Omit<OperationParameter, 'name'> = {\n $refs: [],\n base: 'unknown',\n description: parameter.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: parameter.exclusiveMaximum,\n exclusiveMinimum: parameter.exclusiveMinimum,\n export: 'interface',\n format: parameter.format,\n imports: [],\n in: parameter.in,\n isDefinition: false,\n isNullable: parameter['x-nullable'] === true,\n isReadOnly: false,\n isRequired: parameter.required === true,\n link: null,\n maxItems: parameter.maxItems,\n maxLength: parameter.maxLength,\n maximum: parameter.maximum,\n mediaType: null,\n minItems: parameter.minItems,\n minLength: parameter.minLength,\n minimum: parameter.minimum,\n multipleOf: parameter.multipleOf,\n pattern: getPattern(parameter.pattern),\n prop: parameter.name,\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: parameter.uniqueItems,\n };\n let operationParameter = {\n ...operationParameterWithoutName,\n name: config.nameFn.operationParameter(operationParameterWithoutName),\n };\n\n if (parameter.$ref) {\n const model = getType({ type: parameter.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n if (parameter.enum) {\n const model = getEnums(parameter, parameter.enum);\n if (model.length) {\n operationParameter = {\n ...operationParameter,\n base: 'string',\n enum: [...operationParameter.enum, ...model],\n export: 'enum',\n type: 'string',\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n }\n\n if (parameter.type === 'array' && parameter.items) {\n const model = getType({\n format: parameter.items.format,\n type: parameter.items.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'array',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n if (parameter.type === 'object' && parameter.items) {\n const model = getType({\n format: parameter.items.format,\n type: parameter.items.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'dictionary',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n let schema = parameter.schema;\n if (schema) {\n if (schema.$ref?.startsWith('#/parameters/')) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n enum: [...operationParameter.enum, ...model.enum],\n enums: [...operationParameter.enums, ...model.enums],\n export: model.export,\n imports: [...operationParameter.imports, ...model.imports],\n link: model.link,\n properties: [...operationParameter.properties, ...model.properties],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n // If the parameter has a type than it can be a basic or generic type.\n if (parameter.type) {\n const model = getType({\n format: parameter.format,\n type: parameter.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'generic',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n return operationParameter;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameters } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport { getOperationParameter } from './getOperationParameter';\n\nconst allowedIn = ['body', 'formData', 'header', 'path', 'query'] as const;\n\nexport const getOperationParameters = ({\n openApi,\n parameters,\n types,\n}: {\n openApi: OpenApi;\n parameters: OpenApiParameter[];\n types: Client['types'];\n}): OperationParameters => {\n const config = getConfig();\n\n const operationParameters: OperationParameters = {\n $refs: [],\n imports: [],\n parameters: [],\n parametersBody: null,\n parametersCookie: [], // not used in v2\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [],\n };\n\n parameters.forEach((parameterOrReference) => {\n const parameterDef = getRef<OpenApiParameter>(\n openApi,\n parameterOrReference,\n );\n const parameter = getOperationParameter({\n openApi,\n parameter: parameterDef,\n types,\n });\n\n const skip =\n config.filterFn?.operationParameter &&\n !config.filterFn?.operationParameter(parameter);\n if (!allowedIn.includes(parameterDef.in) || skip) {\n return;\n }\n\n switch (parameterDef.in) {\n case 'body':\n operationParameters.parametersBody = parameter;\n break;\n case 'formData':\n operationParameters.parametersForm = [\n ...operationParameters.parametersForm,\n parameter,\n ];\n break;\n case 'header':\n operationParameters.parametersHeader = [\n ...operationParameters.parametersHeader,\n parameter,\n ];\n break;\n case 'path':\n operationParameters.parametersPath = [\n ...operationParameters.parametersPath,\n parameter,\n ];\n break;\n case 'query':\n operationParameters.parametersQuery = [\n ...operationParameters.parametersQuery,\n parameter,\n ];\n break;\n }\n\n operationParameters.$refs = [\n ...operationParameters.$refs,\n ...parameter.$refs,\n ];\n operationParameters.imports = [\n ...operationParameters.imports,\n ...parameter.imports,\n ];\n operationParameters.parameters = [\n ...operationParameters.parameters,\n parameter,\n ];\n });\n\n return operationParameters;\n};\n","/**\n * Sort list of values and ensure that required parameters are first so that we do not generate\n * invalid types. Optional parameters cannot be positioned after required ones.\n */\nexport function toSortedByRequired<\n T extends { default?: unknown; isRequired: boolean },\n>(values: T[]): T[] {\n return values.sort((a, b) => {\n const aNeedsValue = a.isRequired && a.default === undefined;\n const bNeedsValue = b.isRequired && b.default === undefined;\n if (aNeedsValue && !bNeedsValue) return -1;\n if (bNeedsValue && !aNeedsValue) return 1;\n return 0;\n });\n}\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\n\nexport const getOperationResponse = ({\n code,\n openApi,\n response,\n types,\n}: {\n code: OperationResponse['code'];\n openApi: OpenApi;\n response: OpenApiResponse;\n types: Client['types'];\n}): OperationResponse => {\n const operationResponse: OperationResponse = {\n $refs: [],\n base: code !== 204 ? 'unknown' : 'void',\n code,\n description: response.description || null,\n enum: [],\n enums: [],\n export: 'generic',\n imports: [],\n in: 'response',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n responseTypes: [],\n template: null,\n type: code !== 204 ? 'unknown' : 'void',\n };\n\n let schema = response.schema;\n if (schema) {\n if (schema.$ref?.startsWith('#/responses/')) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationResponse.export = 'reference';\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n return operationResponse;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationResponse.export = model.export;\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.link = model.link;\n operationResponse.isReadOnly = model.isReadOnly;\n operationResponse.isRequired = model.isRequired;\n operationResponse.isNullable = model.isNullable;\n operationResponse.format = model.format;\n operationResponse.maximum = model.maximum;\n operationResponse.exclusiveMaximum = model.exclusiveMaximum;\n operationResponse.minimum = model.minimum;\n operationResponse.exclusiveMinimum = model.exclusiveMinimum;\n operationResponse.multipleOf = model.multipleOf;\n operationResponse.maxLength = model.maxLength;\n operationResponse.minLength = model.minLength;\n operationResponse.maxItems = model.maxItems;\n operationResponse.minItems = model.minItems;\n operationResponse.uniqueItems = model.uniqueItems;\n operationResponse.maxProperties = model.maxProperties;\n operationResponse.minProperties = model.minProperties;\n operationResponse.pattern = getPattern(model.pattern);\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.enum = [...operationResponse.enum, ...model.enum];\n operationResponse.enums = [...operationResponse.enums, ...model.enums];\n operationResponse.properties = [\n ...operationResponse.properties,\n ...model.properties,\n ];\n return operationResponse;\n }\n\n // We support basic properties from response headers, since both\n // fetch and XHR client just support string types.\n if (response.headers) {\n for (const name in response.headers) {\n operationResponse.in = 'header';\n operationResponse.name = name;\n operationResponse.type = 'string';\n operationResponse.base = 'string';\n return operationResponse;\n }\n }\n\n return operationResponse;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n parseResponseStatusCode,\n sorterByResponseStatusCode,\n tagResponseTypes,\n} from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiResponses } from '../interfaces/OpenApiResponses';\nimport { getOperationResponse } from './getOperationResponse';\n\nexport const getOperationResponses = ({\n openApi,\n responses,\n types,\n}: {\n openApi: OpenApi;\n responses: OpenApiResponses;\n types: Client['types'];\n}): OperationResponse[] => {\n let operationResponses: OperationResponse[] = [];\n\n Object.entries(responses).forEach(([responseCode, responseOrReference]) => {\n const code = parseResponseStatusCode(responseCode);\n if (!code) {\n return;\n }\n\n const response = getRef<OpenApiResponse>(openApi, responseOrReference);\n const operationResponse = getOperationResponse({\n code,\n openApi,\n response,\n types,\n });\n operationResponses = [...operationResponses, operationResponse];\n });\n\n operationResponses = tagResponseTypes(operationResponses);\n\n return operationResponses.sort(sorterByResponseStatusCode);\n};\n","import type { Client } from '../../../types/client';\nimport type {\n Operation,\n OperationParameters,\n} from '../../common/interfaces/client';\nimport { getOperationResponseHeader } from '../../common/parser/operation';\nimport { toSortedByRequired } from '../../common/parser/sort';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiOperation } from '../interfaces/OpenApiOperation';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperationResponses } from './getOperationResponses';\n\nexport const getOperation = ({\n method,\n op,\n openApi,\n types,\n pathParams,\n url,\n}: {\n method: Lowercase<Operation['method']>;\n op: OpenApiOperation;\n openApi: OpenApi;\n pathParams: OperationParameters;\n types: Client['types'];\n url: string;\n}): Operation => {\n const config = getConfig();\n\n const operationWithoutName: Omit<Operation, 'name'> = {\n $refs: [],\n deprecated: op.deprecated === true,\n description: op.description || null,\n id: op.operationId || null,\n imports: [],\n method: method.toUpperCase() as Operation['method'],\n parameters: [...pathParams.parameters],\n parametersBody: pathParams.parametersBody,\n parametersCookie: [...pathParams.parametersCookie],\n parametersForm: [...pathParams.parametersForm],\n parametersHeader: [...pathParams.parametersHeader],\n parametersPath: [...pathParams.parametersPath],\n parametersQuery: [...pathParams.parametersQuery],\n path: url,\n responseHeader: null,\n responses: [],\n summary: op.summary || null,\n tags: op.tags || null,\n };\n const operation = {\n ...operationWithoutName,\n name: config.nameFn.operation(operationWithoutName),\n };\n\n if (op.parameters) {\n const parameters = getOperationParameters({\n openApi,\n parameters: op.parameters,\n types,\n });\n operation.$refs = [...operation.$refs, ...parameters.$refs];\n operation.imports = [...operation.imports, ...parameters.imports];\n operation.parameters = [...operation.parameters, ...parameters.parameters];\n operation.parametersBody = parameters.parametersBody;\n operation.parametersCookie = [\n ...operation.parametersCookie,\n ...parameters.parametersCookie,\n ];\n operation.parametersForm = [\n ...operation.parametersForm,\n ...parameters.parametersForm,\n ];\n operation.parametersHeader = [\n ...operation.parametersHeader,\n ...parameters.parametersHeader,\n ];\n operation.parametersPath = [\n ...operation.parametersPath,\n ...parameters.parametersPath,\n ];\n operation.parametersQuery = [\n ...operation.parametersQuery,\n ...parameters.parametersQuery,\n ];\n }\n\n if (op.responses) {\n operation.responses = getOperationResponses({\n openApi,\n responses: op.responses,\n types,\n });\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n operation.responseHeader = getOperationResponseHeader(successResponses);\n\n successResponses.forEach((response) => {\n operation.$refs = [...operation.$refs, ...response.$refs];\n operation.imports = [...operation.imports, ...response.imports];\n });\n }\n\n operation.parameters = toSortedByRequired(operation.parameters);\n\n return operation;\n};\n","import type { Client, Operation } from '../../common/interfaces/client';\nimport { getOperationKey } from '../../common/parser/operation';\nimport { allowedServiceMethods } from '../../common/parser/service';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperation } from './operation';\n\nexport const getOperations = ({\n openApi,\n types,\n}: {\n openApi: OpenApi;\n types: Client['types'];\n}): Operation[] => {\n const config = getConfig();\n\n const operationIds = new Map<string, string>();\n const operations: Operation[] = [];\n\n for (const path in openApi.paths) {\n const pathItem = openApi.paths[path];\n const pathParameters = getOperationParameters({\n openApi,\n parameters: pathItem.parameters ?? [],\n types,\n });\n\n for (const key in pathItem) {\n const method = key as Lowercase<Operation['method']>;\n\n const operationKey = getOperationKey({\n method: method.toUpperCase(),\n path,\n });\n\n if (allowedServiceMethods.includes(method)) {\n const op = pathItem[method]!;\n\n if (op.operationId) {\n if (operationIds.has(op.operationId)) {\n console.warn(\n `❗️ Duplicate operationId: ${op.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n } else {\n operationIds.set(op.operationId, operationKey);\n }\n }\n\n if (\n !config.filterFn?.operation ||\n config.filterFn?.operation(operationKey)\n ) {\n const operation = getOperation({\n method,\n op,\n openApi,\n pathParams: pathParameters,\n types,\n url: path,\n });\n operations.push(operation);\n }\n }\n }\n }\n\n return operations;\n};\n","import type { OpenApi } from '../interfaces/OpenApi';\n\n/**\n * Get the base server url.\n * @param openApi\n */\nexport const getServer = (openApi: OpenApi): string => {\n const scheme = openApi.schemes?.[0] || 'http';\n const host = openApi.host;\n const basePath = openApi.basePath || '';\n const url = host ? `${scheme}://${host}${basePath}` : basePath;\n return url.replace(/\\/$/g, '');\n};\n","import type { Client } from '../common/interfaces/client';\nimport { getServiceVersion } from '../common/parser/service';\nimport type { OpenApi } from './interfaces/OpenApi';\nimport { getModels } from './parser/getModels';\nimport { getOperations } from './parser/getOperations';\nimport { getServer } from './parser/getServer';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, operations and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport const parse = (openApi: OpenApi): Client => {\n const version = getServiceVersion(openApi.info.version);\n const server = getServer(openApi);\n const { models, types } = getModels(openApi);\n const operations = getOperations({ openApi, types });\n\n return {\n models,\n operations,\n server,\n types,\n version,\n };\n};\n","import { getType } from '../openApi';\nimport { refParametersPartial, refSchemasPartial } from './const';\nimport { reservedWordsRegExp } from './regexp';\nimport { cleanAndTransformTypeName } from './transform';\n\nexport const getParametersMeta = (definitionName: string) => {\n const definitionType = getType({ type: definitionName });\n /**\n * Prefix parameter names to avoid name conflicts with schemas.\n * Assuming people are mostly interested in importing schema types\n * and don't care about this name as much. It should be resolved in\n * a cleaner way, there just isn't a good deduplication strategy\n * today. This is a workaround in the meantime, hopefully reducing\n * the chance of conflicts.\n *\n * Example where this would break: schema named `ParameterFoo` and\n * parameter named `Foo` (this would transform to `ParameterFoo`)\n *\n * Note: there's a related code to this workaround in `getType()`\n * method that needs to be cleaned up when this is addressed.\n */\n const name = `Parameter${definitionType.base.replace(reservedWordsRegExp, '_$1')}`;\n const meta = {\n $ref: refParametersPartial + definitionName,\n name,\n };\n return meta;\n};\n\n/**\n * @param definitionName Name of the schema definition in OpenAPI specification.\n * @returns meta object\n */\nexport const getSchemasMeta = (definitionName: string) => {\n const name = cleanAndTransformTypeName(definitionName);\n const meta = {\n $ref: refSchemasPartial + definitionName,\n name,\n };\n return meta;\n};\n","import type { Enum, Model } from '../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport { unescapeName } from './escape';\nimport { sort } from './sort';\nimport { unique } from './unique';\n\n/**\n * Sanitizes names of enums, so they are valid typescript identifiers of a certain form.\n *\n * 1: Replace all characters not legal as part of identifier with '_'\n * 2: Add '_' prefix if first character of enum name has character not legal for start of identifier\n * 3: Add '_' where the string transitions from lowercase to uppercase\n * 4: Transform the whole string to uppercase\n *\n * Javascript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nexport const enumKey = (value?: string | number, customName?: string) => {\n if (customName) {\n return customName;\n }\n // prefix numbers with underscore\n if (typeof value === 'number') {\n return `'_${value}'`;\n }\n\n let key = '';\n if (typeof value === 'string') {\n key = value\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_')\n .replace(/^([^$_\\p{ID_Start}])/u, '_$1')\n .replace(/(\\p{Lowercase})(\\p{Uppercase}+)/gu, '$1_$2');\n }\n key = key.trim();\n if (!key) {\n key = 'empty_string';\n }\n return key.toUpperCase();\n};\n\nexport const enumUnionType = (enums: Enum[]) =>\n enums\n .map((enumerator) => enumValue(enumerator.value, true))\n .filter(unique)\n .join(' | ');\n\nexport const enumValue = (value?: string | number, union: boolean = false) => {\n if (typeof value === 'string') {\n if (value.includes(\"'\") && union) {\n return `\"${value}\"`;\n }\n return `'${value}'`;\n }\n return value;\n};\n\nexport const enumEntry = (enumerator: Enum) => {\n const key = enumKey(enumerator.value, enumerator.customName);\n const value = enumValue(enumerator.value);\n return { key, value };\n};\n\n/**\n * Represent enum in `meta` object for deduplication\n */\nexport const enumMeta = (model: Model): Required<Model>['meta'] => {\n // serialize enum values in namespace for quick lookup\n const serialized = model.enum\n .map((enumerator) => enumEntry(enumerator))\n .sort((a, b) => sort(a.key, b.key))\n .map((enumerator) => `${enumerator.key}=${enumerator.value}`)\n .join('&');\n return {\n $ref: `enum/${model.name}/${serialized}`,\n name: ensureValidTypeScriptJavaScriptIdentifier(unescapeName(model.name)),\n };\n};\n","import type { Model } from '../../common/interfaces/client';\nimport type { Dictionary } from '../../common/interfaces/Dictionary';\nimport { stripNamespace } from '../../common/parser/stripNamespace';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiDiscriminator } from '../interfaces/OpenApiDiscriminator';\n\nconst inverseDictionary = (map: Dictionary<string>): Dictionary<string> => {\n const m2: Dictionary<string> = {};\n for (const key in map) {\n m2[map[key]] = key;\n }\n return m2;\n};\n\nexport const findOneOfParentDiscriminator = (\n openApi: OpenApi,\n parent?: Model,\n): OpenApiDiscriminator | undefined => {\n if (openApi.components && parent) {\n for (const definitionName in openApi.components.schemas) {\n if (openApi.components.schemas.hasOwnProperty(definitionName)) {\n const schema = openApi.components.schemas[definitionName];\n if (\n schema.discriminator &&\n schema.oneOf?.length &&\n schema.oneOf.some(\n (definition) =>\n definition.$ref && stripNamespace(definition.$ref) == parent.name,\n )\n ) {\n return schema.discriminator;\n }\n }\n }\n }\n return undefined;\n};\n\nexport const mapPropertyValue = (\n discriminator: OpenApiDiscriminator,\n parent: Model,\n): string => {\n if (discriminator.mapping) {\n const mapping = inverseDictionary(discriminator.mapping);\n const key = Object.keys(mapping).find(\n (item) => stripNamespace(item) == parent.name,\n );\n if (key && mapping[key]) {\n return mapping[key];\n }\n }\n return parent.name;\n};\n","import type { Client } from '../../../types/client';\nimport { escapeName } from '../../../utils/escape';\nimport { unique } from '../../../utils/unique';\nimport type { Model } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport {\n findOneOfParentDiscriminator,\n mapPropertyValue,\n} from './discriminator';\nimport { isDefinitionNullable } from './inferType';\n\nexport const getAdditionalPropertiesModel = ({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n}: {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n model: Model;\n openApi: OpenApi;\n types: Client['types'];\n}): Model => {\n const ap =\n typeof definition.additionalProperties === 'object'\n ? definition.additionalProperties\n : {};\n const apModel = getModel({\n debug,\n definition: ap,\n openApi,\n parentDefinition: definition,\n types,\n });\n\n if (ap.$ref) {\n const apType = getType({ type: ap.$ref });\n model.base = apType.base;\n model.default = getDefault(definition, model);\n model.export = 'dictionary';\n model.imports.push(...apType.imports);\n model.template = apType.template;\n model.type = apType.type;\n return model;\n }\n\n if (\n definition.additionalProperties &&\n definition.properties &&\n Object.keys(definition.properties).length > 0\n ) {\n const additionalPropertiesType =\n typeof definition.additionalProperties === 'object' &&\n definition.additionalProperties.type &&\n !Array.isArray(definition.additionalProperties.type)\n ? definition.additionalProperties.type\n : apModel.base;\n const additionalProperties = [\n getType({ type: additionalPropertiesType }).base,\n ...model.properties.map((property) => property.base),\n ];\n apModel.base = additionalProperties.filter(unique).join(' | ');\n apModel.default = getDefault(definition, model);\n apModel.export = 'generic';\n apModel.isRequired = definition.additionalProperties === true;\n apModel.name = '[key: string]';\n return apModel;\n }\n\n model.base = apModel.base;\n model.default = getDefault(definition, model);\n model.export = 'dictionary';\n model.imports.push(...apModel.imports);\n model.link = apModel;\n model.template = apModel.template;\n model.type = apModel.type;\n return model;\n};\n\nexport const getModelProperties = ({\n debug,\n definition,\n getModel,\n openApi,\n parent,\n types,\n}: {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n openApi: OpenApi;\n parent?: Model;\n types: Client['types'];\n}): Model[] => {\n let models: Model[] = [];\n const discriminator = findOneOfParentDiscriminator(openApi, parent);\n\n Object.entries(definition.properties ?? {}).forEach(\n ([propertyName, property]) => {\n const propertyRequired = Boolean(\n definition.required?.includes(propertyName),\n );\n\n const propertyValues: Omit<\n Model,\n | '$refs'\n | 'base'\n | 'enum'\n | 'enums'\n | 'export'\n | 'imports'\n | 'isNullable'\n | 'link'\n | 'properties'\n | 'template'\n | 'type'\n > = {\n default: property.default,\n deprecated: property.deprecated === true,\n description: property.description || null,\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n format:\n property.type === 'array'\n ? property.items?.format ?? property.format\n : property.format,\n in: '',\n isDefinition: false,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n uniqueItems: property.uniqueItems,\n };\n\n if (parent && discriminator?.propertyName == propertyName) {\n models = [\n ...models,\n {\n ...propertyValues,\n $refs: [],\n base: `'${mapPropertyValue(discriminator, parent)}'`,\n enum: [],\n enums: [],\n export: 'reference',\n imports: [],\n isNullable: isDefinitionNullable(property),\n link: null,\n properties: [],\n template: null,\n type: 'string',\n },\n ];\n return;\n }\n\n if (property.$ref) {\n const model = getType({ type: property.$ref });\n models = [\n ...models,\n {\n ...propertyValues,\n $refs: model.$refs,\n base: model.base,\n enum: [],\n enums: [],\n export: 'reference',\n imports: model.imports,\n isNullable: model.isNullable || isDefinitionNullable(property),\n link: null,\n properties: [],\n template: model.template,\n type: model.type,\n },\n ];\n return;\n }\n\n const model = getModel({\n debug,\n definition: property,\n initialValues: propertyValues,\n openApi,\n parentDefinition: definition,\n types,\n });\n model.isNullable = model.isNullable || isDefinitionNullable(property);\n models = [...models, model];\n },\n );\n\n return models;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getRequiredPropertiesFromComposition = ({\n debug,\n definitions,\n getModel,\n openApi,\n required,\n types,\n}: {\n debug?: boolean;\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n required: string[];\n types: Client['types'];\n}): Model[] => {\n const requiredProperties = definitions\n .reduce((properties, definition) => {\n if (definition.$ref) {\n const type = getType({ type: definition.$ref });\n // avoid circular references if two refs reference each other\n // if (types[type.base] && types[type.base].$ref === definition.$ref) {\n // const schema = getRef<OpenApiSchema>(openApi, definition);\n // return [...properties]\n // }\n\n const meta = {\n $ref: definition.$ref,\n name: type.base,\n };\n types[type.base] = meta;\n const schema = getRef<OpenApiSchema>(openApi, definition);\n return [\n ...properties,\n ...getModel({\n debug,\n definition: schema,\n meta,\n openApi,\n types,\n }).properties,\n ];\n }\n\n return [\n ...properties,\n ...getModel({\n debug,\n definition,\n openApi,\n parentDefinition: definition,\n types,\n }).properties,\n ];\n }, [] as Model[])\n .filter(\n (property) => !property.isRequired && required.includes(property.name),\n )\n .map((property) => ({\n ...property,\n isRequired: true,\n }));\n\n return requiredProperties;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelComposition } from '../../common/interfaces/client';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelProperties } from './getModelProperties';\nimport { getRequiredPropertiesFromComposition } from './getRequiredPropertiesFromComposition';\n\ntype Composition = {\n definitions: OpenApiSchema[];\n type: ModelComposition['export'];\n};\n\nexport const findModelComposition = (\n definition: OpenApiSchema,\n): Composition | undefined => {\n const compositions: ReadonlyArray<{\n definitions: Composition['definitions'] | undefined;\n type: Composition['type'];\n }> = [\n {\n definitions: definition.allOf,\n type: 'all-of',\n },\n {\n definitions: definition.anyOf,\n type: 'any-of',\n },\n {\n definitions: definition.oneOf,\n type: 'one-of',\n },\n ];\n return compositions.find(\n (composition) => composition.definitions?.length,\n ) as ReturnType<typeof findModelComposition>;\n};\n\nexport const getModelComposition = ({\n debug,\n definition,\n definitions,\n getModel,\n model,\n openApi,\n type,\n types,\n}: Composition &\n Pick<Client, 'types'> & {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n model: Model;\n openApi: OpenApi;\n }): ModelComposition => {\n const composition: ModelComposition = {\n $refs: model.$refs,\n enums: model.enums,\n export: type,\n imports: model.imports,\n properties: model.properties,\n };\n\n let properties: Model[] = [];\n\n definitions\n .map((def) => {\n const modelFromDef = getModel({\n debug,\n definition: def,\n openApi,\n parentDefinition: definition,\n types,\n });\n return modelFromDef;\n })\n .forEach((model) => {\n composition.$refs = [...composition.$refs, ...model.$refs];\n composition.imports = [...composition.imports, ...model.imports];\n composition.enums = [...composition.enums, ...model.enums];\n composition.properties = [...composition.properties, model];\n });\n\n if (definition.required && type === 'all-of') {\n const requiredProperties = getRequiredPropertiesFromComposition({\n debug,\n definitions,\n getModel,\n openApi,\n required: definition.required,\n types,\n });\n requiredProperties.forEach((requiredProperty) => {\n composition.$refs = [...composition.$refs, ...requiredProperty.$refs];\n composition.imports = [\n ...composition.imports,\n ...requiredProperty.imports,\n ];\n composition.enums = [...composition.enums, ...requiredProperty.enums];\n });\n properties = [...properties, ...requiredProperties];\n }\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n composition.$refs = [...composition.$refs, ...modelProperty.$refs];\n composition.imports = [...composition.imports, ...modelProperty.imports];\n composition.enums = [...composition.enums, ...modelProperty.enums];\n if (modelProperty.export === 'enum') {\n composition.enums = [...composition.enums, modelProperty];\n }\n });\n properties = [...properties, ...modelProperties];\n }\n\n if (properties.length) {\n const foundComposition = findModelComposition(definition);\n if (foundComposition) {\n const propertiesProperty: Model = {\n $refs: [],\n base: 'unknown',\n description: '',\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: 'properties',\n properties,\n template: null,\n type: 'unknown',\n };\n\n if (foundComposition.type === 'one-of') {\n composition.properties = [\n {\n ...composition,\n base: '',\n description: null,\n enum: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: true,\n link: null,\n name: '',\n template: null,\n type: '',\n },\n propertiesProperty,\n ];\n composition.export = 'all-of';\n } else {\n composition.properties = [\n ...composition.properties,\n propertiesProperty,\n ];\n }\n }\n }\n\n return composition;\n};\n","import type { Client } from '../../../types/client';\nimport { enumMeta } from '../../../utils/enum';\nimport type { Model, ModelMeta } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport {\n findModelComposition,\n getModelComposition,\n} from './getModelComposition';\nimport {\n getAdditionalPropertiesModel,\n getModelProperties,\n} from './getModelProperties';\nimport {\n getDefinitionTypes,\n inferType,\n isDefinitionNullable,\n} from './inferType';\n\nexport const getModel = ({\n debug,\n definition,\n initialValues = {},\n isDefinition = false,\n meta,\n openApi,\n parentDefinition = null,\n types,\n}: Pick<Client, 'types'> & {\n debug?: boolean;\n definition: OpenApiSchema;\n /**\n * Pass through initial model values\n */\n initialValues?: Partial<Model>;\n isDefinition?: boolean;\n meta?: ModelMeta;\n openApi: OpenApi;\n parentDefinition?: OpenApiSchema | null;\n}): Model => {\n const definitionTypes = getDefinitionTypes(definition);\n const inferredType = inferType(definition, definitionTypes);\n\n const model: Model = {\n $refs: [],\n base: 'unknown',\n deprecated: Boolean(definition.deprecated),\n description: definition.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: definition.exclusiveMaximum,\n exclusiveMinimum: definition.exclusiveMinimum,\n export: 'interface',\n format: definition.format,\n imports: [],\n in: '',\n isDefinition,\n isNullable: isDefinitionNullable(definition),\n isReadOnly: definition.readOnly === true,\n isRequired: false,\n link: null,\n maxItems: definition.maxItems,\n maxLength: definition.maxLength,\n maxProperties: definition.maxProperties,\n maximum: definition.maximum,\n meta,\n minItems: definition.minItems,\n minLength: definition.minLength,\n minProperties: definition.minProperties,\n minimum: definition.minimum,\n multipleOf: definition.multipleOf,\n name: meta?.name ?? '',\n pattern: getPattern(definition.pattern),\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: definition.uniqueItems,\n ...initialValues,\n };\n\n if (definition.$ref) {\n const definitionRef = getType({\n debug,\n type: definition.$ref,\n });\n model.$refs = [...model.$refs, decodeURIComponent(definition.$ref)];\n model.base = definitionRef.base;\n model.export = 'reference';\n model.imports = [...model.imports, ...definitionRef.imports];\n model.template = definitionRef.template;\n model.type = definitionRef.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (inferredType === 'enum') {\n const enums = getEnums(definition, definition.enum);\n if (enums.length) {\n model.base = 'string';\n model.enum = [...model.enum, ...enums];\n model.export = 'enum';\n model.type = 'string';\n model.default = getDefault(definition, model);\n if (!model.meta) {\n model.meta = enumMeta(model);\n }\n return model;\n }\n }\n\n if (\n definitionTypes.includes('array') &&\n (definition.items || definition.prefixItems)\n ) {\n if (definition.prefixItems) {\n const arrayItems = definition.prefixItems.map((item) =>\n getModel({\n definition: item,\n openApi,\n parentDefinition: definition,\n types,\n }),\n );\n\n model.export = 'array';\n model.$refs = [\n ...model.$refs,\n ...arrayItems.reduce(\n (acc, m) => [...acc, ...m.$refs],\n [] as Model['$refs'],\n ),\n ];\n model.imports = [\n ...model.imports,\n ...arrayItems.reduce(\n (acc, m) => [...acc, ...m.imports],\n [] as Model['imports'],\n ),\n ];\n model.link = arrayItems;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (!definition.items) {\n return model;\n }\n\n if (definition.items.$ref) {\n const arrayItems = getType({ type: definition.items.$ref });\n model.$refs = [...model.$refs, decodeURIComponent(definition.items.$ref)];\n model.base = arrayItems.base;\n model.export = 'array';\n model.imports = [...model.imports, ...arrayItems.imports];\n model.template = arrayItems.template;\n model.type = arrayItems.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (definition.items.anyOf && parentDefinition && parentDefinition.type) {\n const foundComposition = findModelComposition(parentDefinition);\n if (\n foundComposition &&\n foundComposition.definitions.some(\n (definition) => !getDefinitionTypes(definition).includes('array'),\n )\n ) {\n return getModel({\n definition: definition.items,\n openApi,\n parentDefinition: definition,\n types,\n });\n }\n }\n\n /**\n * if items are a plain array, infer any-of composition\n * {@link} https://github.com/ferdikoomen/openapi-typescript-codegen/issues/2062\n */\n const arrayItemsDefinition: OpenApiSchema = Array.isArray(definition.items)\n ? {\n anyOf: definition.items,\n }\n : definition.items;\n const arrayItems = getModel({\n definition: arrayItemsDefinition,\n openApi,\n parentDefinition: definition,\n types,\n });\n model.base = arrayItems.base;\n model.export = 'array';\n model.$refs = [...model.$refs, ...arrayItems.$refs];\n model.imports = [...model.imports, ...arrayItems.imports];\n model.link = arrayItems;\n model.template = arrayItems.template;\n model.type = arrayItems.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n const foundComposition = findModelComposition(definition);\n if (foundComposition) {\n const composition = getModelComposition({\n ...foundComposition,\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n const result = { ...model, ...composition };\n return result;\n }\n\n if (\n definitionTypes.includes('object') ||\n definition.properties ||\n definition.additionalProperties\n ) {\n if (\n definition.properties &&\n (Object.keys(definition.properties).length > 0 ||\n !definition.additionalProperties)\n ) {\n model.base = 'unknown';\n model.export = 'interface';\n model.type = 'unknown';\n model.default = getDefault(definition, model);\n\n const modelProperties = getModelProperties({\n debug,\n definition,\n getModel,\n openApi,\n parent: model,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n model.$refs = [...model.$refs, ...modelProperty.$refs];\n model.enums = [...model.enums, ...modelProperty.enums];\n model.imports = [...model.imports, ...modelProperty.imports];\n model.properties = [...model.properties, modelProperty];\n if (modelProperty.export === 'enum') {\n model.enums = [...model.enums, modelProperty];\n }\n });\n\n if (definition.additionalProperties) {\n const modelProperty = getAdditionalPropertiesModel({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n model.properties = [...model.properties, modelProperty];\n }\n\n // objects with no explicit properties accept any key/value pair\n if (\n !model.properties.length &&\n model.base === 'unknown' &&\n model.type === 'unknown'\n ) {\n model.export = 'dictionary';\n if (!model.name) {\n model.name = '[key: string]';\n }\n }\n\n return model;\n }\n\n const result = getAdditionalPropertiesModel({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n return result;\n }\n\n if (definition.const !== undefined) {\n const definitionConst = definition.const;\n const modelConst =\n typeof definitionConst === 'string'\n ? `\"${definitionConst}\"`\n : `${definitionConst}`;\n model.base = modelConst;\n model.export = 'const';\n model.type = modelConst;\n return model;\n }\n\n // If the schema has a type than it can be a basic or generic type.\n if (definitionTypes.length) {\n const definitionType = getType({\n format: definition.format,\n type: definition.type,\n });\n model.base = definitionType.base;\n model.export = 'generic';\n model.$refs = [...model.$refs, ...definitionType.$refs];\n model.imports = [...model.imports, ...definitionType.imports];\n model.isNullable = definitionType.isNullable || model.isNullable;\n model.template = definitionType.template;\n model.type = definitionType.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n return model;\n};\n","import type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getParameterSchema = (\n definition: OpenApiParameter,\n): OpenApiSchema | undefined => {\n if (definition.schema) {\n return definition.schema;\n }\n\n if (definition.content) {\n // treat every media type the same for now, types should be modified to\n // preserve this data so client knows which headers to use and how to\n // parse response bodies\n const contents = Object.entries(definition.content);\n for (const [key, mediaTypeObject] of contents) {\n if (mediaTypeObject.schema) {\n const mediaType = key as keyof Required<OpenApiParameter>['content'];\n return definition.content[mediaType].schema;\n }\n }\n }\n};\n","import type { Client } from '../../../types/client';\nimport { getParametersMeta, getSchemasMeta } from '../../../utils/meta';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getModel } from './getModel';\nimport { getParameterSchema } from './parameter';\n\nexport const getModels = (\n openApi: OpenApi,\n): Pick<Client, 'models' | 'types'> => {\n const config = getConfig();\n\n const types: Client['types'] = {};\n let models: Client['models'] = [];\n\n if (!openApi.components) {\n return {\n models,\n types,\n };\n }\n\n Object.entries(openApi.components.schemas ?? {}).forEach(\n ([definitionName, definition]) => {\n const meta = getSchemasMeta(definitionName);\n types[meta.name] = meta;\n const model = getModel({\n definition,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n models = [...models, model];\n },\n );\n\n Object.entries(openApi.components.parameters ?? {}).forEach(\n ([definitionName, definition]) => {\n const schema = getParameterSchema(definition);\n if (!schema) {\n if (config.debug) {\n console.warn('Skipping generating parameter:', definitionName);\n }\n return;\n }\n\n const meta = getParametersMeta(definitionName);\n types[meta.name] = meta;\n const model = getModel({\n definition: schema,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n model.deprecated = definition.deprecated;\n model.description = definition.description || null;\n models = [...models, model];\n },\n );\n\n return {\n models,\n types,\n };\n};\n","import type { Client } from '../../../types/client';\nimport { refParametersPartial } from '../../../utils/const';\nimport { enumMeta } from '../../../utils/enum';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\nimport { isDefinitionNullable } from './inferType';\nimport { getParameterSchema } from './parameter';\n\nexport const getOperationParameter = ({\n openApi,\n parameter,\n types,\n}: {\n openApi: OpenApi;\n parameter: OpenApiParameter;\n types: Client['types'];\n}): OperationParameter => {\n const config = getConfig();\n\n const operationParameterWithoutName: Omit<OperationParameter, 'name'> = {\n $refs: [],\n base: 'unknown',\n deprecated: parameter.deprecated === true,\n description: parameter.description || null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: parameter.in,\n isDefinition: false,\n isNullable: isDefinitionNullable(parameter),\n isReadOnly: false,\n isRequired: parameter.required === true,\n link: null,\n mediaType: null,\n prop: parameter.name,\n properties: [],\n template: null,\n type: 'unknown',\n };\n let operationParameter = {\n ...operationParameterWithoutName,\n name: config.nameFn.operationParameter(operationParameterWithoutName),\n };\n\n if (parameter.$ref) {\n const model = getType({ type: parameter.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n return operationParameter;\n }\n\n let schema = getParameterSchema(parameter);\n if (schema) {\n if (schema.$ref?.startsWith(refParametersPartial)) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(schema);\n return operationParameter;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n enum: [...operationParameter.enum, ...model.enum],\n enums: [...operationParameter.enums, ...model.enums],\n exclusiveMaximum: model.exclusiveMaximum,\n exclusiveMinimum: model.exclusiveMinimum,\n export: model.export,\n format: model.format,\n imports: [...operationParameter.imports, ...model.imports],\n isNullable: operationParameter.isNullable || model.isNullable,\n isReadOnly: model.isReadOnly,\n isRequired: operationParameter.isRequired || model.isRequired,\n link: model.link,\n maxItems: model.maxItems,\n maxLength: model.maxLength,\n maxProperties: model.maxProperties,\n maximum: model.maximum,\n minItems: model.minItems,\n minLength: model.minLength,\n minProperties: model.minProperties,\n minimum: model.minimum,\n multipleOf: model.multipleOf,\n pattern: getPattern(model.pattern),\n properties: [...operationParameter.properties, ...model.properties],\n template: model.template,\n type: model.type,\n uniqueItems: model.uniqueItems,\n };\n if (\n (operationParameter.enum.length || operationParameter.enums.length) &&\n !operationParameter.meta\n ) {\n operationParameter.meta = enumMeta(operationParameter);\n }\n operationParameter.default = model.default;\n return operationParameter;\n }\n\n return operationParameter;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameters } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport { getOperationParameter } from './getOperationParameter';\n\nconst allowedIn = ['cookie', 'formData', 'header', 'path', 'query'] as const;\n\nexport const getOperationParameters = ({\n openApi,\n parameters,\n types,\n}: {\n openApi: OpenApi;\n parameters: OpenApiParameter[];\n types: Client['types'];\n}): OperationParameters => {\n const config = getConfig();\n\n const operationParameters: OperationParameters = {\n $refs: [],\n imports: [],\n parameters: [],\n parametersBody: null,\n parametersCookie: [],\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [], // not used in v3 -> @see requestBody\n };\n\n parameters.forEach((parameterOrReference) => {\n const parameterDef = getRef<OpenApiParameter>(\n openApi,\n parameterOrReference,\n );\n const parameter = getOperationParameter({\n openApi,\n parameter: parameterDef,\n types,\n });\n\n const skip =\n config.filterFn?.operationParameter &&\n !config.filterFn?.operationParameter(parameter);\n if (!allowedIn.includes(parameterDef.in) || skip) {\n return;\n }\n\n switch (parameterDef.in) {\n case 'cookie':\n operationParameters.parametersCookie = [\n ...operationParameters.parametersCookie,\n parameter,\n ];\n break;\n case 'formData':\n operationParameters.parametersForm = [\n ...operationParameters.parametersForm,\n parameter,\n ];\n break;\n case 'header':\n operationParameters.parametersHeader = [\n ...operationParameters.parametersHeader,\n parameter,\n ];\n break;\n case 'path':\n operationParameters.parametersPath = [\n ...operationParameters.parametersPath,\n parameter,\n ];\n break;\n case 'query':\n operationParameters.parametersQuery = [\n ...operationParameters.parametersQuery,\n parameter,\n ];\n break;\n }\n\n operationParameters.$refs = [\n ...operationParameters.$refs,\n ...parameter.$refs,\n ];\n operationParameters.imports = [\n ...operationParameters.imports,\n ...parameter.imports,\n ];\n operationParameters.parameters = [\n ...operationParameters.parameters,\n parameter,\n ];\n });\n\n return operationParameters;\n};\n","import type { Dictionary } from '../../common/interfaces/Dictionary';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiMediaType } from '../interfaces/OpenApiMediaType';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport interface Content {\n mediaType: string;\n schema: OpenApiSchema;\n}\n\nconst BASIC_MEDIA_TYPES = [\n 'application/json-patch+json',\n 'application/json',\n 'application/ld+json',\n 'application/x-www-form-urlencoded',\n 'multipart/batch',\n 'multipart/form-data',\n 'multipart/mixed',\n 'multipart/related',\n 'text/json',\n 'text/plain',\n];\n\nexport const getContent = (\n openApi: OpenApi,\n content: Dictionary<OpenApiMediaType>,\n): Content | undefined => {\n const basicMediaTypeWithSchema = Object.keys(content)\n .filter((mediaType) => {\n const cleanMediaType = mediaType.split(';')[0].trim();\n return BASIC_MEDIA_TYPES.includes(cleanMediaType);\n })\n .find((mediaType) => Boolean(content[mediaType]?.schema));\n\n if (basicMediaTypeWithSchema) {\n return {\n mediaType: basicMediaTypeWithSchema,\n schema: content[basicMediaTypeWithSchema].schema as OpenApiSchema,\n };\n }\n\n const firstMediaTypeWithSchema = Object.keys(content).find((mediaType) =>\n Boolean(content[mediaType]?.schema),\n );\n\n if (firstMediaTypeWithSchema) {\n return {\n mediaType: firstMediaTypeWithSchema,\n schema: content[firstMediaTypeWithSchema].schema as OpenApiSchema,\n };\n }\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';\nimport { getContent } from './getContent';\nimport { getModel } from './getModel';\n\nexport const getOperationRequestBody = ({\n body,\n debug,\n openApi,\n types,\n}: {\n body: OpenApiRequestBody;\n debug?: boolean;\n openApi: OpenApi;\n types: Client['types'];\n}): OperationParameter => {\n const name = body['x-body-name'] ?? 'requestBody';\n\n const requestBody: OperationParameter = {\n $refs: [],\n base: 'unknown',\n default: undefined,\n description: body.description || null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: 'body',\n isDefinition: false,\n isNullable: body.nullable === true,\n isReadOnly: false,\n isRequired: body.required === true,\n link: null,\n mediaType: null,\n name,\n prop: name,\n properties: [],\n template: null,\n type: 'unknown',\n };\n\n if (!body.content) {\n return requestBody;\n }\n\n const content = getContent(openApi, body.content);\n if (!content) {\n return requestBody;\n }\n\n requestBody.mediaType = content.mediaType;\n\n switch (requestBody.mediaType) {\n case 'application/x-www-form-urlencoded':\n case 'multipart/form-data':\n requestBody.in = 'formData';\n requestBody.name = 'formData';\n requestBody.prop = 'formData';\n break;\n }\n\n if (content.schema.$ref) {\n const model = getType({ type: content.schema.$ref });\n requestBody.export = 'reference';\n requestBody.type = model.type;\n requestBody.base = model.base;\n requestBody.template = model.template;\n requestBody.$refs = [...requestBody.$refs, ...model.$refs];\n requestBody.imports = [...requestBody.imports, ...model.imports];\n return requestBody;\n }\n\n const model = getModel({\n debug,\n definition: content.schema,\n openApi,\n types,\n });\n requestBody.$refs = [...requestBody.$refs, ...model.$refs];\n requestBody.base = model.base;\n requestBody.enum = [...requestBody.enum, ...model.enum];\n requestBody.enums = [...requestBody.enums, ...model.enums];\n requestBody.exclusiveMaximum = model.exclusiveMaximum;\n requestBody.exclusiveMinimum = model.exclusiveMinimum;\n requestBody.export = model.export;\n requestBody.format = model.format;\n requestBody.imports = [...requestBody.imports, ...model.imports];\n requestBody.isNullable = requestBody.isNullable || model.isNullable;\n requestBody.isReadOnly = model.isReadOnly;\n requestBody.isRequired = requestBody.isRequired || model.isRequired;\n requestBody.link = model.link;\n requestBody.maximum = model.maximum;\n requestBody.maxItems = model.maxItems;\n requestBody.maxLength = model.maxLength;\n requestBody.maxProperties = model.maxProperties;\n requestBody.minimum = model.minimum;\n requestBody.minItems = model.minItems;\n requestBody.minLength = model.minLength;\n requestBody.minProperties = model.minProperties;\n requestBody.multipleOf = model.multipleOf;\n requestBody.pattern = getPattern(model.pattern);\n requestBody.properties = [...requestBody.properties, ...model.properties];\n requestBody.template = model.template;\n requestBody.type = model.type;\n requestBody.uniqueItems = model.uniqueItems;\n return requestBody;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getContent } from './getContent';\nimport { getModel } from './getModel';\n\nexport const getOperationResponse = ({\n code,\n openApi,\n response,\n types,\n}: {\n code: OperationResponse['code'];\n openApi: OpenApi;\n response: OpenApiResponse;\n types: Client['types'];\n}): OperationResponse => {\n const operationResponse: OperationResponse = {\n $refs: [],\n base: code !== 204 ? 'unknown' : 'void',\n code,\n description: response.description || null,\n enum: [],\n enums: [],\n export: 'generic',\n imports: [],\n in: 'response',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n responseTypes: [],\n template: null,\n type: code !== 204 ? 'unknown' : 'void',\n };\n\n if (response.content) {\n const content = getContent(openApi, response.content);\n if (content) {\n if (content.schema.$ref?.startsWith('#/components/responses/')) {\n content.schema = getRef<OpenApiSchema>(openApi, content.schema);\n }\n\n if (content.schema.$ref) {\n const model = getType({ type: content.schema.$ref });\n operationResponse.base = model.base;\n operationResponse.export = 'reference';\n operationResponse.$refs = [...operationResponse.$refs, ...model.$refs];\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.template = model.template;\n operationResponse.type = model.type;\n return operationResponse;\n }\n\n const model = getModel({ definition: content.schema, openApi, types });\n operationResponse.export = model.export;\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.link = model.link;\n operationResponse.isReadOnly = model.isReadOnly;\n operationResponse.isRequired = model.isRequired;\n operationResponse.isNullable = model.isNullable;\n operationResponse.format = model.format;\n operationResponse.maximum = model.maximum;\n operationResponse.exclusiveMaximum = model.exclusiveMaximum;\n operationResponse.minimum = model.minimum;\n operationResponse.exclusiveMinimum = model.exclusiveMinimum;\n operationResponse.multipleOf = model.multipleOf;\n operationResponse.maxLength = model.maxLength;\n operationResponse.minLength = model.minLength;\n operationResponse.maxItems = model.maxItems;\n operationResponse.minItems = model.minItems;\n operationResponse.uniqueItems = model.uniqueItems;\n operationResponse.maxProperties = model.maxProperties;\n operationResponse.minProperties = model.minProperties;\n operationResponse.pattern = getPattern(model.pattern);\n operationResponse.$refs = [...operationResponse.$refs, ...model.$refs];\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.enum = [...operationResponse.enum, ...model.enum];\n operationResponse.enums = [...operationResponse.enums, ...model.enums];\n operationResponse.properties = [\n ...operationResponse.properties,\n ...model.properties,\n ];\n return operationResponse;\n }\n }\n\n // We support basic properties from response headers, since both\n // fetch and XHR client just support string types.\n if (response.headers) {\n for (const name in response.headers) {\n operationResponse.in = 'header';\n operationResponse.name = name;\n operationResponse.type = 'string';\n operationResponse.base = 'string';\n return operationResponse;\n }\n }\n\n return operationResponse;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n parseResponseStatusCode,\n sorterByResponseStatusCode,\n tagResponseTypes,\n} from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiResponses } from '../interfaces/OpenApiResponses';\nimport { getOperationResponse } from './getOperationResponse';\n\nexport const getOperationResponses = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n debug,\n openApi,\n responses,\n types,\n}: {\n debug?: boolean;\n openApi: OpenApi;\n responses: OpenApiResponses;\n types: Client['types'];\n}): OperationResponse[] => {\n let operationResponses: OperationResponse[] = [];\n\n Object.entries(responses).forEach(([responseCode, responseOrReference]) => {\n const code = parseResponseStatusCode(responseCode);\n if (!code) {\n return;\n }\n\n const response = getRef<OpenApiResponse>(openApi, responseOrReference);\n const operationResponse = getOperationResponse({\n code,\n openApi,\n response,\n types,\n });\n operationResponses = [...operationResponses, operationResponse];\n });\n\n operationResponses = tagResponseTypes(operationResponses);\n\n return operationResponses.sort(sorterByResponseStatusCode);\n};\n","import type { Client } from '../../../types/client';\nimport type {\n Operation,\n OperationParameter,\n OperationParameters,\n} from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getOperationResponseHeader } from '../../common/parser/operation';\nimport { toSortedByRequired } from '../../common/parser/sort';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiOperation } from '../interfaces/OpenApiOperation';\nimport type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperationRequestBody } from './getOperationRequestBody';\nimport { getOperationResponses } from './getOperationResponses';\n\n// add global path parameters, skip duplicate names\nconst mergeParameters = (\n opParams: OperationParameter[],\n globalParams: OperationParameter[],\n): OperationParameter[] => {\n let mergedParameters = [...opParams];\n let pendingParameters = [...globalParams];\n while (pendingParameters.length > 0) {\n const pendingParam = pendingParameters[0];\n pendingParameters = pendingParameters.slice(1);\n const canMerge = mergedParameters.every(\n (param) =>\n param.in !== pendingParam.in || param.name !== pendingParam.name,\n );\n if (canMerge) {\n mergedParameters = [...mergedParameters, pendingParam];\n }\n }\n return mergedParameters;\n};\n\nexport const getOperation = ({\n debug,\n method,\n op,\n openApi,\n pathParams,\n types,\n url,\n}: {\n debug?: boolean;\n method: Lowercase<Operation['method']>;\n op: OpenApiOperation;\n openApi: OpenApi;\n pathParams: OperationParameters;\n types: Client['types'];\n url: string;\n}): Operation => {\n const config = getConfig();\n\n const operationWithoutName: Omit<Operation, 'name'> = {\n $refs: [],\n deprecated: Boolean(op.deprecated),\n description: op.description || null,\n id: op.operationId || null,\n imports: [],\n method: method.toUpperCase() as Operation['method'],\n parameters: [],\n parametersBody: pathParams.parametersBody,\n parametersCookie: [],\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [],\n path: url,\n responseHeader: null,\n responses: [],\n summary: op.summary || null,\n tags: op.tags || null,\n };\n const operation = {\n ...operationWithoutName,\n name: config.nameFn.operation(operationWithoutName),\n };\n\n if (op.parameters) {\n const parameters = getOperationParameters({\n openApi,\n parameters: op.parameters,\n types,\n });\n operation.$refs = [...operation.$refs, ...parameters.$refs];\n operation.imports = [...operation.imports, ...parameters.imports];\n operation.parameters = [...operation.parameters, ...parameters.parameters];\n operation.parametersBody = parameters.parametersBody;\n operation.parametersCookie = [\n ...operation.parametersCookie,\n ...parameters.parametersCookie,\n ];\n operation.parametersForm = [\n ...operation.parametersForm,\n ...parameters.parametersForm,\n ];\n operation.parametersHeader = [\n ...operation.parametersHeader,\n ...parameters.parametersHeader,\n ];\n operation.parametersPath = [\n ...operation.parametersPath,\n ...parameters.parametersPath,\n ];\n operation.parametersQuery = [\n ...operation.parametersQuery,\n ...parameters.parametersQuery,\n ];\n }\n\n if (op.requestBody) {\n const requestBodyDef = getRef<OpenApiRequestBody>(openApi, op.requestBody);\n const requestBody = getOperationRequestBody({\n body: requestBodyDef,\n debug,\n openApi,\n types,\n });\n operation.$refs = [...operation.$refs, ...requestBody.$refs];\n operation.imports = [...operation.imports, ...requestBody.imports];\n operation.parameters = [...operation.parameters, requestBody];\n operation.parametersBody = requestBody;\n }\n\n if (op.responses) {\n operation.responses = getOperationResponses({\n openApi,\n responses: op.responses,\n types,\n });\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n operation.responseHeader = getOperationResponseHeader(successResponses);\n\n successResponses.forEach((response) => {\n operation.$refs = [...operation.$refs, ...response.$refs];\n operation.imports = [...operation.imports, ...response.imports];\n });\n }\n\n operation.parameters = mergeParameters(\n operation.parameters,\n pathParams.parameters,\n );\n operation.parametersCookie = mergeParameters(\n operation.parametersCookie,\n pathParams.parametersCookie,\n );\n operation.parametersForm = mergeParameters(\n operation.parametersForm,\n pathParams.parametersForm,\n );\n operation.parametersHeader = mergeParameters(\n operation.parametersHeader,\n pathParams.parametersHeader,\n );\n operation.parametersPath = mergeParameters(\n operation.parametersPath,\n pathParams.parametersPath,\n );\n operation.parametersQuery = mergeParameters(\n operation.parametersQuery,\n pathParams.parametersQuery,\n );\n\n operation.parameters = toSortedByRequired(operation.parameters);\n\n return operation;\n};\n","import type { Client, Operation } from '../../common/interfaces/client';\nimport { getOperationKey } from '../../common/parser/operation';\nimport { allowedServiceMethods } from '../../common/parser/service';\nimport { getConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperation } from './operation';\n\nexport const getOperations = ({\n openApi,\n types,\n}: {\n openApi: OpenApi;\n types: Client['types'];\n}): Operation[] => {\n const config = getConfig();\n\n const operationIds = new Map<string, string>();\n const operations: Operation[] = [];\n\n for (const path in openApi.paths) {\n const pathItem = openApi.paths[path];\n const pathParameters = getOperationParameters({\n openApi,\n parameters: pathItem.parameters ?? [],\n types,\n });\n\n for (const key in pathItem) {\n const method = key as Lowercase<Operation['method']>;\n\n const operationKey = getOperationKey({\n method: method.toUpperCase(),\n path,\n });\n\n if (allowedServiceMethods.includes(method)) {\n const op = pathItem[method]!;\n\n if (op.operationId) {\n if (operationIds.has(op.operationId)) {\n console.warn(\n `❗️ Duplicate operationId: ${op.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n } else {\n operationIds.set(op.operationId, operationKey);\n }\n }\n\n if (\n !config.filterFn?.operation ||\n config.filterFn?.operation(operationKey)\n ) {\n const operation = getOperation({\n method,\n op,\n openApi,\n pathParams: pathParameters,\n types,\n url: path,\n });\n operations.push(operation);\n }\n }\n }\n }\n\n return operations;\n};\n","import type { OpenApi } from '../interfaces/OpenApi';\n\nexport const getServer = (openApi: OpenApi): string => {\n const server = openApi.servers?.[0];\n const variables = server?.variables || {};\n let url = server?.url || '';\n Object.entries(variables).forEach(([name, variable]) => {\n url = url.replace(`{${name}}`, variable.default);\n });\n return url.replace(/\\/$/g, '');\n};\n","import type { Client } from '../common/interfaces/client';\nimport { getServiceVersion } from '../common/parser/service';\nimport type { OpenApi } from './interfaces/OpenApi';\nimport { getModels } from './parser/getModels';\nimport { getOperations } from './parser/getOperations';\nimport { getServer } from './parser/getServer';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, operations and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport const parse = (openApi: OpenApi): Client => {\n const version = getServiceVersion(openApi.info.version);\n const server = getServer(openApi);\n const { models, types } = getModels(openApi);\n const operations = getOperations({ openApi, types });\n\n return {\n models,\n operations,\n server,\n types,\n version,\n };\n};\n","import { type OpenApiV3_0_3, parseV3_0_3 } from './3.0.3';\nimport { type OpenApiV3_1, parseV3_1 } from './3.1';\nimport type { Client } from './common/interfaces/client';\nimport type { Config } from './common/interfaces/config';\nimport type { OpenApi } from './common/interfaces/OpenApi';\nimport { setConfig } from './config';\nimport { parse as parseV2 } from './v2';\nimport { parse as parseV3 } from './v3';\n\nexport type {\n Client,\n Enum,\n Method,\n Model,\n ModelMeta,\n Operation,\n OperationParameter,\n OperationResponse,\n} from './common/interfaces/client';\nexport type { Config } from './common/interfaces/config';\nexport type { OpenApi } from './common/interfaces/OpenApi';\nexport { isOperationParameterRequired } from './common/parser/operation';\nexport {\n ensureValidTypeScriptJavaScriptIdentifier,\n sanitizeNamespaceIdentifier,\n sanitizeOperationParameterName,\n} from './common/parser/sanitize';\nexport { getType } from './common/parser/type';\nexport type { OpenApiSchema as OpenApiV2Schema } from './v2/interfaces/OpenApiSchema';\nexport type { OpenApiSchema as OpenApiV3Schema } from './v3/interfaces/OpenApiSchema';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, services and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport function parse({\n openApi,\n config,\n}: {\n config: Config;\n openApi: OpenApi;\n}): Client {\n setConfig(config);\n\n if ('openapi' in openApi) {\n return parseV3(openApi);\n }\n\n if ('swagger' in openApi) {\n return parseV2(openApi);\n }\n\n throw new Error(\n `Unsupported OpenAPI specification: ${JSON.stringify(openApi, null, 2)}`,\n );\n}\n\nexport const parseExperimental = ({ spec }: { spec: unknown }) => {\n const s = spec as OpenApiV3_0_3 | OpenApiV3_1;\n\n switch (s.openapi) {\n case '3.0.3':\n return parseV3_0_3(s);\n case '3.1.0':\n return parseV3_1(s);\n default:\n throw new Error('Unsupported OpenAPI specification');\n }\n};\n","import { compiler, TypeScriptFile } from '../compiler';\nimport type { OpenApi, OpenApiV2Schema, OpenApiV3Schema } from '../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport type { Files } from '../types/utils';\nimport { getConfig } from '../utils/config';\n\nconst ensureValidSchemaOutput = (\n schema: unknown,\n parentKey?: string,\n): object => {\n const config = getConfig();\n\n if (Array.isArray(schema)) {\n return schema.map((item) => ensureValidSchemaOutput(item));\n }\n\n if (typeof schema !== 'object' || schema === null) {\n return schema as object;\n }\n\n const result = { ...schema };\n Object.entries(result).forEach(([key, value]) => {\n if (config.schemas.type === 'form') {\n if (\n [\n 'description',\n 'x-enum-descriptions',\n 'x-enum-varnames',\n 'x-enumNames',\n 'title',\n ].includes(key) &&\n parentKey !== 'properties'\n ) {\n // @ts-expect-error\n delete result[key];\n return;\n }\n }\n\n // refs are encoded probably by json-schema-ref-parser, didn't investigate\n // further\n if (key === '$ref' && typeof value === 'string') {\n // @ts-expect-error\n result[key] = decodeURIComponent(value);\n }\n\n if (value && typeof value === 'object') {\n // @ts-expect-error\n result[key] = ensureValidSchemaOutput(value, key);\n }\n });\n return result;\n};\n\nconst toSchemaName = (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n): string => {\n const config = getConfig();\n\n const validName = ensureValidTypeScriptJavaScriptIdentifier(name);\n\n if (config.schemas.name) {\n return config.schemas.name(validName, schema);\n }\n\n return `${validName}Schema`;\n};\n\nexport const generateSchemas = async ({\n files,\n openApi,\n}: {\n files: Files;\n openApi: OpenApi;\n}): Promise<void> => {\n const config = getConfig();\n\n if (!config.schemas.export) {\n return;\n }\n\n files.schemas = new TypeScriptFile({\n dir: config.output.path,\n name: 'schemas.ts',\n });\n\n const addSchema = (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n ) => {\n const obj = ensureValidSchemaOutput(schema);\n const expression = compiler.objectExpression({ obj });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression,\n name: toSchemaName(name, schema),\n });\n files.schemas.add(statement);\n };\n\n // OpenAPI 2.0\n if ('swagger' in openApi) {\n Object.entries(openApi.definitions ?? {}).forEach(([name, definition]) => {\n addSchema(name, definition);\n });\n }\n\n // OpenAPI 3.x\n if ('openapi' in openApi) {\n Object.entries(openApi.components?.schemas ?? {}).forEach(\n ([name, schema]) => {\n addSchema(name, schema);\n },\n );\n }\n};\n","import { compiler, type Property, type TypeNode } from '../compiler';\nimport type { Model } from '../openApi';\nimport { sanitizeOperationParameterName } from '../openApi';\nimport type { Client } from '../types/client';\nimport { camelCase } from './camelCase';\nimport { getConfig, isLegacyClient } from './config';\nimport { refSchemasPartial } from './const';\nimport { enumValue } from './enum';\nimport { escapeComment, escapeName, unescapeName } from './escape';\nimport { getSchemasMeta } from './meta';\nimport { reservedWordsRegExp } from './regexp';\nimport { unique } from './unique';\n\nexport const isModelDate = (model: Model): boolean =>\n model.format === 'date' || model.format === 'date-time';\n\nconst base = (model: Model) => {\n const config = getConfig();\n\n if (model.base === 'binary') {\n return compiler.typeUnionNode({\n types: ['Blob', 'File'],\n });\n }\n\n if (config.types.dates && isModelDate(model)) {\n return compiler.typeNode('Date');\n }\n\n return compiler.typeNode(model.base);\n};\n\nconst typeReference = (model: Model) => {\n // nullable is false when base is null to avoid duplicate null statements\n const isNullable = model.base === 'null' ? false : model.isNullable;\n let typeNode = base(model);\n /**\n * special handling for single reference. The current approach didn't handle\n * transformed names, this fixes that. We should add a more robust solution,\n * but this will work for now.\n * {@link https://github.com/hey-api/openapi-ts/issues/768}\n */\n if (model.export === 'reference' && model.$refs.length === 1) {\n if (model.$refs[0].startsWith(refSchemasPartial)) {\n const meta = getSchemasMeta(model.base);\n typeNode = compiler.typeNode(meta.name);\n }\n }\n const unionNode = compiler.typeUnionNode({\n isNullable,\n types: [typeNode],\n });\n return unionNode;\n};\n\nconst typeArray = (model: Model) => {\n if (model.link) {\n // We treat an array of `model.link` as constant size array definition.\n if (Array.isArray(model.link)) {\n const types = model.link.map((m) => toType(m));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n // Special case where we use tuple to define constant size array.\n if (\n model.export === 'array' &&\n model.maxItems &&\n model.minItems &&\n model.maxItems === model.minItems &&\n model.maxItems <= 100\n ) {\n const types = Array(model.maxItems).fill(toType(model.link));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n return compiler.typeArrayNode([toType(model.link)], model.isNullable);\n }\n\n return compiler.typeArrayNode([base(model)], model.isNullable);\n};\n\nconst typeEnum = (model: Model) => {\n const values = model.enum.map((enumerator) => enumValue(enumerator.value));\n return compiler.typeUnionNode({\n isNullable: model.isNullable,\n types: values,\n });\n};\n\nconst typeDict = (model: Model) => {\n const type =\n model.link && !Array.isArray(model.link) ? toType(model.link) : base(model);\n return compiler.typeRecordNode(['string'], [type], model.isNullable);\n};\n\nconst typeUnionOrIntersection = ({\n model,\n style,\n}: {\n model: Model;\n style: 'intersection' | 'union';\n}) => {\n const types = model.properties\n .map((model) => {\n const str = compiler.nodeToString({\n node: toType(model),\n unescape: true,\n });\n return str;\n })\n .filter(unique);\n\n const node =\n style === 'union'\n ? compiler.typeUnionNode({\n // avoid printing duplicate null statements\n isNullable:\n model.isNullable &&\n !model.properties.find((property) => property.isNullable),\n types,\n })\n : compiler.typeIntersectionNode({\n isNullable: model.isNullable,\n types,\n });\n\n // top-level models don't need parentheses around them\n if (model.meta) {\n return node;\n }\n\n return compiler.typeParenthesizedNode({\n type: node,\n });\n};\n\nconst typeInterface = (model: Model) => {\n if (!model.properties.length) {\n return compiler.typeNode('unknown');\n }\n\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n const properties: Property[] = model.properties.map((property) => {\n let maybeRequired = property.isRequired ? '' : '?';\n let value = toType(property);\n let name = !isLegacy\n ? escapeName(unescapeName(transformTypeKeyName(property.name)))\n : // special test for 1XX status codes. We need a more robust system\n // for escaping values depending on context in which they're printed,\n // but since this works for standalone client, it's not worth it right now\n /^\\dXX$/.test(property.name)\n ? escapeName(property.name)\n : property.name;\n // special case for additional properties type\n if (property.name === '[key: string]') {\n name = property.name;\n if (maybeRequired) {\n maybeRequired = '';\n value = compiler.typeUnionNode({\n types: [value, 'undefined'],\n });\n }\n }\n return {\n comment: [\n property.description && escapeComment(property.description),\n property.deprecated && '@deprecated',\n ],\n isReadOnly: property.isReadOnly,\n isRequired: maybeRequired === '',\n name,\n type: value,\n };\n });\n\n return compiler.typeInterfaceNode({\n isNullable: model.isNullable,\n properties,\n });\n};\n\nexport const toType = (model: Model): TypeNode => {\n switch (model.export) {\n case 'all-of':\n return typeUnionOrIntersection({\n model,\n style: 'intersection',\n });\n case 'any-of':\n case 'one-of':\n return typeUnionOrIntersection({\n model,\n style: 'union',\n });\n case 'array':\n return typeArray(model);\n case 'dictionary':\n return typeDict(model);\n case 'enum':\n return typeEnum(model);\n case 'interface':\n return typeInterface(model);\n case 'const':\n case 'generic':\n case 'reference':\n default:\n return typeReference(model);\n }\n};\n\nexport interface SetUniqueTypeNameResult {\n /**\n * Did this function add a new property to the `client.types` object?\n */\n created: boolean;\n /**\n * Unique name for the exported type.\n */\n name: string;\n}\n\n/**\n * Generates a unique name for the exported type for given model meta.\n * @param args.client Internal client instance\n * @param args.count Unique key for deduplication\n * @param args.create If a name record does not exist, should it be created?\n * @param args.meta Meta property from the model\n * @param args.nameTransformer Function for transforming name into the final\n * value. In different contexts, a different strategy might be used. For\n * example, slashes `/` are invalid in TypeScript identifiers, but okay in\n * a JavaScript object key name.\n * @returns {SetUniqueTypeNameResult}\n */\nexport const setUniqueTypeName = ({\n client,\n count = 1,\n create = false,\n meta,\n nameTransformer,\n}: Pick<Required<Model>, 'meta'> & {\n client: Client;\n count?: number;\n create?: boolean;\n nameTransformer?: (value: string) => string;\n}): SetUniqueTypeNameResult => {\n let result: SetUniqueTypeNameResult = {\n created: false,\n name: '',\n };\n let name = meta.name;\n if (nameTransformer) {\n name = nameTransformer(name);\n }\n if (count > 1) {\n name = `${name}${count}`;\n }\n const type = client.types[name];\n if (!type) {\n if (create) {\n client.types[name] = meta;\n result = {\n created: true,\n name,\n };\n }\n } else if (type.$ref === meta.$ref) {\n result = {\n created: false,\n name,\n };\n } else {\n result = setUniqueTypeName({\n client,\n count: count + 1,\n create,\n meta,\n nameTransformer,\n });\n }\n return result;\n};\n\nexport interface UnsetUniqueTypeNameResult {\n /**\n * Did this function delete a property from the `client.types` object?\n */\n deleted: boolean;\n /**\n * Unique name removed from the `client.types` object.\n */\n name: string;\n}\n\nexport const unsetUniqueTypeName = ({\n client,\n name,\n}: {\n client: Client;\n name: string;\n}): UnsetUniqueTypeNameResult => {\n let result: UnsetUniqueTypeNameResult = {\n deleted: false,\n name: '',\n };\n if (!client.types[name]) {\n return result;\n }\n delete client.types[name];\n result = {\n deleted: true,\n name,\n };\n return result;\n};\n\n/**\n * Replaces any invalid characters from a parameter name.\n * For example: 'filter.someProperty' becomes 'filterSomeProperty'.\n */\nexport const transformTypeKeyName = (value: string): string => {\n const config = getConfig();\n\n // transform only for legacy clients\n if (!isLegacyClient(config)) {\n return value;\n }\n\n const name = camelCase({\n input: sanitizeOperationParameterName(value),\n }).replace(reservedWordsRegExp, '_$1');\n return name;\n};\n","import type {\n ClassElement,\n Comments,\n FunctionParameter,\n Node,\n} from '../compiler';\nimport { compiler, TypeScriptFile } from '../compiler';\nimport type { FunctionTypeParameter, ObjectValue } from '../compiler/types';\nimport { isOperationParameterRequired } from '../openApi';\nimport type {\n Client,\n Model,\n Operation,\n OperationParameter,\n Service,\n} from '../types/client';\nimport type { Files } from '../types/utils';\nimport { camelCase } from '../utils/camelCase';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { escapeComment, escapeName } from '../utils/escape';\nimport { reservedWordsRegExp } from '../utils/regexp';\nimport { transformServiceName } from '../utils/transform';\nimport { setUniqueTypeName } from '../utils/type';\nimport { unique } from '../utils/unique';\nimport { clientModulePath, clientOptionsTypeName } from './client';\n\ntype OnNode = (node: Node) => void;\ntype OnImport = (name: string) => void;\n\nexport const generateImport = ({\n meta,\n onImport,\n ...setUniqueTypeNameArgs\n}: Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> & {\n onImport: OnImport;\n }) => {\n // generate imports only for top-level models\n if (!meta) {\n // TODO: this used to return undefined. We could refactor this function to\n // return undefined again, but we will need to improve types so we can safely\n // do `const { name } = generateImport({ meta: ... })` (note when meta is defined\n // we guarantee the response to be an object). For now, nothing relies on this\n // response shape except for plugins, so it was acceptable to patch it that way\n return { created: false, name: '' };\n }\n\n const { created, name } = setUniqueTypeName({\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (name) {\n onImport(name);\n }\n return { created, name };\n};\n\nexport const modelResponseTransformerTypeName = (name: string) =>\n `${name}ModelResponseTransformer`;\n\nexport const operationDataTypeName = (name: string) =>\n `${camelCase({\n input: name,\n pascalCase: true,\n })}Data`;\n\nexport const operationErrorTypeName = (name: string) =>\n `${camelCase({\n input: name,\n pascalCase: true,\n })}Error`;\n\n// operation response type ends with \"Response\", it's enough to append \"Transformer\"\nexport const operationResponseTransformerTypeName = (name: string) =>\n `${name}Transformer`;\n\nexport const operationResponseTypeName = (name: string) =>\n `${camelCase({\n input: name,\n pascalCase: true,\n })}Response`;\n\n/**\n * @param importedType unique type name returned from `setUniqueTypeName()`\n * @returns options type\n */\nexport const operationOptionsType = (\n importedType?: string,\n throwOnError?: string,\n) => {\n const optionsName = clientOptionsTypeName();\n // TODO: refactor this to be more generic, works for now\n if (throwOnError) {\n return `${optionsName}<${importedType || 'unknown'}, ${throwOnError}>`;\n }\n return importedType ? `${optionsName}<${importedType}>` : optionsName;\n};\n\nconst toOperationParamType = (\n client: Client,\n operation: Operation,\n): FunctionParameter[] => {\n const config = getConfig();\n\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n if (!isLegacyClient(config)) {\n return [\n {\n isRequired,\n name: 'options',\n type: operationOptionsType(importedType, 'ThrowOnError'),\n },\n ];\n }\n\n if (!operation.parameters.length) {\n return [];\n }\n\n const getDefaultPrintable = (\n p: OperationParameter | Model,\n ): string | undefined => {\n if (p.default === undefined) {\n return undefined;\n }\n return JSON.stringify(p.default, null, 4);\n };\n\n // legacy configuration\n if (!config.useOptions) {\n return operation.parameters.map((p) => {\n const typePath = `${importedType}['${p.name}']`;\n return {\n default: p?.default,\n isRequired:\n (!p.isRequired && !getDefaultPrintable(p) ? '?' : '') === '',\n name: p.name,\n type: typePath,\n };\n });\n }\n\n return [\n {\n default: isRequired ? undefined : {},\n name: 'data',\n type: importedType,\n },\n ];\n};\n\nconst toOperationReturnType = (client: Client, operation: Operation) => {\n const config = getConfig();\n\n let returnType = compiler.typeNode('void');\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n // TODO: we should return nothing when successes don't exist\n // can't remove this logic without removing request/name config\n // as it complicates things\n if (successResponses.length) {\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n });\n returnType = compiler.typeUnionNode({\n types: [importedType],\n });\n }\n\n if (config.useOptions && config.services.response === 'response') {\n returnType = compiler.typeNode('ApiResult', [returnType]);\n }\n\n if (config.client.name === 'legacy/angular') {\n returnType = compiler.typeNode('Observable', [returnType]);\n } else {\n returnType = compiler.typeNode('CancelablePromise', [returnType]);\n }\n\n return returnType;\n};\n\nconst toOperationComment = (operation: Operation): Comments => {\n const config = getConfig();\n\n if (!isLegacyClient(config)) {\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ];\n return comment;\n }\n\n let params: string[] = [];\n\n if (operation.parameters.length) {\n if (config.useOptions) {\n params = [\n '@param data The data for the request.',\n ...operation.parameters.map(\n (parameter) =>\n `@param data.${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n ),\n ];\n } else {\n params = operation.parameters.map(\n (parameter) =>\n `@param ${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n );\n }\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ...params,\n ...successResponses.map(\n (response) =>\n `@returns ${response.type} ${response.description ? escapeComment(response.description) : ''}`,\n ),\n '@throws ApiError',\n ];\n return comment;\n};\n\nconst toRequestOptions = (\n client: Client,\n operation: Operation,\n onImport: OnImport,\n onClientImport: OnImport | undefined,\n) => {\n const config = getConfig();\n\n const operationName = operationResponseTypeName(operation.name);\n const { name: responseTransformerName } = setUniqueTypeName({\n client,\n meta: {\n $ref: `transformers/${operationName}`,\n name: operationName,\n },\n nameTransformer: operationResponseTransformerTypeName,\n });\n\n if (responseTransformerName) {\n onImport(responseTransformerName);\n }\n\n if (!isLegacyClient(config)) {\n let obj: ObjectValue[] = [\n {\n spread: 'options',\n },\n ];\n\n const bodyParameters = operation.parameters.filter(\n (parameter) => parameter.in === 'body' || parameter.in === 'formData',\n );\n const contents = bodyParameters\n .map(\n (parameter) =>\n parameter.mediaType ||\n (parameter.in === 'formData' ? 'multipart/form-data' : undefined),\n )\n .filter(Boolean)\n .filter(unique);\n if (contents.length === 1) {\n if (contents[0] === 'multipart/form-data') {\n obj = [\n ...obj,\n {\n spread: 'formDataBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n // no need for Content-Type header, browser will set it automatically\n key: 'Content-Type',\n value: null,\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('formDataBodySerializer');\n }\n\n if (contents[0] === 'application/x-www-form-urlencoded') {\n obj = [\n ...obj,\n {\n spread: 'urlSearchParamsBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n key: 'Content-Type',\n value: contents[0],\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('urlSearchParamsBodySerializer');\n }\n }\n\n // TODO: set parseAs to skip inference if every result has the same\n // content type. currently impossible because successes do not contain\n // header information\n\n obj = [\n ...obj,\n {\n key: 'url',\n value: operation.path,\n },\n ];\n\n if (responseTransformerName) {\n obj = [\n ...obj,\n {\n key: 'responseTransformer',\n value: responseTransformerName,\n },\n ];\n }\n\n return compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj,\n });\n }\n\n const toObj = (parameters: OperationParameter[]) =>\n parameters.reduce(\n (prev, curr) => {\n const key = curr.prop;\n const value = config.useOptions ? `data.${curr.name}` : curr.name;\n if (key === value) {\n prev[key] = key;\n } else if (escapeName(key) === key) {\n prev[key] = value;\n } else {\n prev[`'${key}'`] = value;\n }\n return prev;\n },\n {} as Record<string, unknown>,\n );\n\n const obj: Record<string, any> = {\n method: operation.method,\n url: operation.path,\n };\n\n if (operation.parametersPath.length) {\n obj.path = toObj(operation.parametersPath);\n }\n\n if (operation.parametersCookie.length) {\n obj.cookies = toObj(operation.parametersCookie);\n }\n\n if (operation.parametersHeader.length) {\n obj.headers = toObj(operation.parametersHeader);\n }\n\n if (operation.parametersQuery.length) {\n obj.query = toObj(operation.parametersQuery);\n }\n\n if (operation.parametersForm.length) {\n obj.formData = toObj(operation.parametersForm);\n }\n\n if (operation.parametersBody) {\n if (operation.parametersBody.in === 'formData') {\n if (config.useOptions) {\n obj.formData = `data.${operation.parametersBody.name}`;\n } else {\n obj.formData = operation.parametersBody.name;\n }\n }\n if (operation.parametersBody.in === 'body') {\n if (config.useOptions) {\n obj.body = `data.${operation.parametersBody.name}`;\n } else {\n obj.body = operation.parametersBody.name;\n }\n }\n }\n\n if (operation.parametersBody?.mediaType) {\n obj.mediaType = operation.parametersBody?.mediaType;\n }\n\n if (operation.responseHeader) {\n obj.responseHeader = operation.responseHeader;\n }\n\n if (responseTransformerName) {\n obj.responseTransformer = responseTransformerName;\n }\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n if (errorResponses.length > 0) {\n const errors: Record<number | string, string> = {};\n errorResponses.forEach((response) => {\n errors[response.code] = response.description ?? '';\n });\n obj.errors = errors;\n }\n\n return compiler.objectExpression({\n identifiers: [\n 'body',\n 'cookies',\n 'formData',\n 'headers',\n 'path',\n 'query',\n 'responseTransformer',\n ],\n obj,\n shorthand: true,\n });\n};\n\nexport const toOperationName = (\n operation: Operation,\n handleIllegal: boolean,\n) => {\n const config = getConfig();\n\n if (config.services.methodNameBuilder) {\n return config.services.methodNameBuilder(operation);\n }\n\n if (handleIllegal && operation.name.match(reservedWordsRegExp)) {\n return `${operation.name}_`;\n }\n\n return operation.name;\n};\n\nconst toOperationStatements = (\n client: Client,\n operation: Operation,\n onImport: OnImport,\n onClientImport?: OnImport,\n) => {\n const config = getConfig();\n\n const options = toRequestOptions(client, operation, onImport, onClientImport);\n\n if (!isLegacyClient(config)) {\n const errorType = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n }).name;\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n const responseType = successResponses.length\n ? setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n }).name\n : 'void';\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: `(options?.client ?? client).${operation.method.toLocaleLowerCase()}`,\n types:\n errorType && responseType\n ? [responseType, errorType, 'ThrowOnError']\n : errorType\n ? ['unknown', errorType, 'ThrowOnError']\n : responseType\n ? [responseType, 'unknown', 'ThrowOnError']\n : [],\n }),\n ];\n }\n\n if (config.name) {\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: 'this.httpRequest.request',\n }),\n ];\n }\n\n if (config.client.name === 'legacy/angular') {\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', 'this.http', options],\n name: '__request',\n }),\n ];\n }\n\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', options],\n name: '__request',\n }),\n ];\n};\n\nconst processService = ({\n client,\n onClientImport,\n onImport,\n onNode,\n service,\n}: {\n client: Client;\n onClientImport: OnImport;\n onImport: OnImport;\n onNode: OnNode;\n service: Service;\n}) => {\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n for (const operation of service.operations) {\n if (operation.parameters.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onImport,\n });\n }\n\n if (!isLegacy) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport,\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n if (successResponses.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport,\n });\n }\n }\n\n const throwOnErrorTypeGeneric: FunctionTypeParameter = {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n };\n\n if (!config.services.asClass && !config.name) {\n for (const operation of service.operations) {\n const compileFunctionParams = {\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements(\n client,\n operation,\n onImport,\n onClientImport,\n ),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n };\n const expression =\n config.client.name === 'legacy/angular'\n ? compiler.anonymousFunction(compileFunctionParams)\n : compiler.arrowFunction(compileFunctionParams);\n const statement = compiler.constVariable({\n comment: toOperationComment(operation),\n exportConst: true,\n expression,\n name: toOperationName(operation, true),\n });\n onNode(statement);\n }\n return;\n }\n\n let members: ClassElement[] = service.operations.map((operation) => {\n const node = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: toOperationComment(operation),\n isStatic:\n config.name === undefined && config.client.name !== 'legacy/angular',\n name: toOperationName(operation, false),\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements(\n client,\n operation,\n onImport,\n onClientImport,\n ),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n });\n return node;\n });\n\n if (!members.length) {\n return;\n }\n\n // Push constructor to front if needed\n if (config.name) {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'httpRequest',\n type: 'BaseHttpRequest',\n },\n ],\n }),\n ...members,\n ];\n } else if (config.client.name === 'legacy/angular') {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'http',\n type: 'HttpClient',\n },\n ],\n }),\n ...members,\n ];\n }\n\n const statement = compiler.classDeclaration({\n decorator:\n config.client.name === 'legacy/angular'\n ? { args: [{ providedIn: 'root' }], name: 'Injectable' }\n : undefined,\n members,\n name: transformServiceName(service.name),\n });\n onNode(statement);\n};\n\nconst checkPrerequisites = ({ files }: { files: Files }) => {\n const config = getConfig();\n\n if (!config.client.name) {\n throw new Error(\n '🚫 client needs to be set to generate services - which HTTP client do you want to use?',\n );\n }\n\n if (!files.types) {\n throw new Error(\n '🚫 types need to be exported to generate services - enable type generation',\n );\n }\n};\n\nexport const generateServices = async ({\n client,\n files,\n}: {\n client: Client;\n files: Files;\n}): Promise<void> => {\n const config = getConfig();\n\n if (!config.services.export) {\n return;\n }\n\n checkPrerequisites({ files });\n\n const isLegacy = isLegacyClient(config);\n\n const servicesOutput = 'services';\n\n files.services = new TypeScriptFile({\n dir: config.output.path,\n name: `${servicesOutput}.ts`,\n });\n\n // Import required packages and core files.\n if (!isLegacy) {\n files.services.import({\n module: clientModulePath({ sourceOutput: servicesOutput }),\n name: 'createClient',\n });\n files.services.import({\n module: clientModulePath({ sourceOutput: servicesOutput }),\n name: 'createConfig',\n });\n files.services.import({\n asType: true,\n module: clientModulePath({ sourceOutput: servicesOutput }),\n name: clientOptionsTypeName(),\n });\n } else {\n if (config.client.name === 'legacy/angular') {\n files.services.import({\n module: '@angular/core',\n name: 'Injectable',\n });\n\n if (!config.name) {\n files.services.import({\n module: '@angular/common/http',\n name: 'HttpClient',\n });\n }\n\n files.services.import({\n asType: true,\n module: 'rxjs',\n name: 'Observable',\n });\n } else {\n files.services.import({\n asType: true,\n module: './core/CancelablePromise',\n name: 'CancelablePromise',\n });\n }\n\n if (config.services.response === 'response') {\n files.services.import({\n asType: true,\n module: './core/ApiResult',\n name: 'ApiResult',\n });\n }\n\n if (config.name) {\n files.services.import({\n asType: config.client.name !== 'legacy/angular',\n module: './core/BaseHttpRequest',\n name: 'BaseHttpRequest',\n });\n } else {\n files.services.import({\n module: './core/OpenAPI',\n name: 'OpenAPI',\n });\n files.services.import({\n alias: '__request',\n module: './core/request',\n name: 'request',\n });\n }\n }\n\n // define client first\n if (!isLegacy) {\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: 'createClient',\n parameters: [\n compiler.callExpression({\n functionName: 'createConfig',\n }),\n ],\n }),\n name: 'client',\n });\n files.services.add(statement);\n }\n\n for (const service of client.services) {\n processService({\n client,\n onClientImport: (imported) => {\n files.services.import({\n module: clientModulePath({ sourceOutput: servicesOutput }),\n name: imported,\n });\n },\n onImport: (imported) => {\n files.services.import({\n // this detection could be done safer, but it shouldn't cause any issues\n asType: !imported.endsWith('Transformer'),\n module: `./${files.types.getName(false)}`,\n name: imported,\n });\n },\n onNode: (node) => {\n files.services.add(node);\n },\n service,\n });\n }\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../compiler';\nimport { getOperationKey } from '../openApi/common/parser/operation';\nimport type { ModelMeta, OperationResponse } from '../types/client';\nimport { getConfig } from '../utils/config';\nimport { isModelDate, unsetUniqueTypeName } from '../utils/type';\nimport {\n modelResponseTransformerTypeName,\n operationResponseTransformerTypeName,\n operationResponseTypeName,\n} from './services';\nimport { generateType, type TypesProps } from './types';\n\ninterface ModelProps extends TypesProps {\n meta?: ModelMeta;\n path: Array<string>;\n}\n\nconst dataVariableName = 'data';\n\nconst isVoidResponse = (response: OperationResponse) =>\n response.base === 'unknown' &&\n response.export === 'generic' &&\n response.type === 'unknown';\n\nconst getRefModels = ({\n client,\n model,\n}: Pick<TypesProps, 'client' | 'model'>) => {\n const refModels = model.$refs.map((ref) => {\n const refModel = client.models.find((model) => model.meta?.$ref === ref);\n if (!refModel) {\n throw new Error(\n `Ref ${ref} could not be found. Transformers cannot be generated without having access to all refs.`,\n );\n }\n return refModel;\n });\n return refModels;\n};\n\nconst ensureModelResponseTransformerExists = (\n props: Omit<ModelProps, 'path'>,\n) => {\n const modelName = props.model.meta!.name;\n\n const { name } = generateType({\n ...props,\n meta: {\n $ref: `transformers/${modelName}`,\n name: modelName,\n },\n nameTransformer: modelResponseTransformerTypeName,\n onCreated: (name) => {\n const statements = processModel({\n ...props,\n meta: {\n $ref: `transformers/${modelName}`,\n name,\n },\n path: [dataVariableName],\n });\n generateResponseTransformer({\n ...props,\n async: false,\n name,\n statements,\n });\n },\n type: `(${dataVariableName}: any) => ${modelName}`,\n });\n\n const result = {\n created: Boolean(props.client.types[name]),\n name,\n };\n return result;\n};\n\nconst processArray = (props: ModelProps) => {\n const { model } = props;\n const refModels = getRefModels(props);\n\n if (refModels.length === 1) {\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({ ...props, model: refModels[0] });\n\n if (!created) {\n return [];\n }\n\n return [\n compiler.transformArrayMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n }),\n ];\n }\n\n if (\n isModelDate(model) ||\n (model.link &&\n !Array.isArray(model.link) &&\n model.link.export === 'any-of' &&\n model.link.properties.find((property) => isModelDate(property)))\n ) {\n return [\n compiler.transformArrayMap({\n path: props.path,\n transformExpression: compiler.conditionalExpression({\n condition: compiler.identifier({ text: 'item' }),\n whenFalse: compiler.identifier({ text: 'item' }),\n whenTrue: compiler.transformNewDate({\n parameterName: 'item',\n }),\n }),\n }),\n ];\n }\n\n // Not transform for this type\n return [];\n};\n\nconst processProperty = (props: ModelProps) => {\n const { model } = props;\n const path = [...props.path, model.name];\n\n if (\n model.type === 'string' &&\n model.export !== 'array' &&\n isModelDate(model)\n ) {\n return [compiler.transformDateMutation({ path })];\n }\n\n // otherwise we recurse in case it's an object/array, and if it's not that will just bail with []\n return processModel({\n ...props,\n model,\n path,\n });\n};\n\nconst processModel = (props: ModelProps): ts.Statement[] => {\n const { model } = props;\n\n switch (model.export) {\n case 'array':\n return processArray(props);\n case 'interface':\n return model.properties.flatMap((property) =>\n processProperty({ ...props, model: property }),\n );\n case 'reference': {\n if (model.$refs.length !== 1) {\n return [];\n }\n const refModels = getRefModels(props);\n\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({ ...props, model: refModels[0] });\n\n if (!created) {\n return [];\n }\n\n return model.in === 'response'\n ? [\n compiler.expressionToStatement({\n expression: compiler.callExpression({\n functionName: nameModelResponseTransformer,\n parameters: [dataVariableName],\n }),\n }),\n ]\n : compiler.transformFunctionMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n });\n }\n // unsupported\n default:\n return [];\n }\n};\n\nconst generateResponseTransformer = ({\n async,\n client,\n name,\n onNode,\n onRemoveNode,\n statements,\n}: Pick<TypesProps, 'client' | 'onNode' | 'onRemoveNode'> & {\n async: boolean;\n name: string;\n statements: Array<ts.Statement>;\n}) => {\n const result = {\n created: false,\n name,\n };\n\n if (!statements.length) {\n // clean up created type for response transformer if it turns out\n // the transformer was never generated\n unsetUniqueTypeName({\n client,\n name,\n });\n onRemoveNode?.();\n return result;\n }\n\n const expression = compiler.arrowFunction({\n async,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n },\n ],\n statements: [\n ...statements,\n compiler.returnVariable({\n expression: dataVariableName,\n }),\n ],\n });\n const statement = compiler.constVariable({\n exportConst: true,\n expression,\n name,\n typeName: name,\n });\n onNode(statement);\n\n return {\n created: true,\n name,\n };\n};\n\nexport const generateResponseTransformers = async ({\n client,\n onNode,\n onRemoveNode,\n}: Pick<TypesProps, 'client' | 'onNode' | 'onRemoveNode'>) => {\n const config = getConfig();\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n if (!successResponses.length) {\n continue;\n }\n\n const nonVoidResponses = successResponses.filter(\n (response) => !isVoidResponse(response),\n );\n\n if (!nonVoidResponses.length) {\n continue;\n }\n\n if (nonVoidResponses.length > 1) {\n if (config.debug) {\n console.warn(\n `❗️ Transformers warning: route ${getOperationKey(operation)} has ${nonVoidResponses.length} non-void success responses. This is currently not handled and we will not generate a response transformer. Please open an issue if you'd like this feature https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n continue;\n }\n\n const name = operationResponseTypeName(operation.name);\n generateType({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n nameTransformer: operationResponseTransformerTypeName,\n onCreated: (nameCreated) => {\n const statements =\n successResponses.length > 1\n ? successResponses.flatMap((response) => {\n const statements = processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: response,\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n\n // assume unprocessed responses are void\n if (!statements.length) {\n return [];\n }\n\n return [\n compiler.ifStatement({\n expression: compiler.safeAccessExpression(['data']),\n thenStatement: ts.factory.createBlock(statements),\n }),\n ];\n })\n : processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: successResponses[0],\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n generateResponseTransformer({\n async: true,\n client,\n name: nameCreated,\n onNode,\n onRemoveNode,\n statements,\n });\n },\n onNode,\n type: `(${dataVariableName}: any) => Promise<${name}>`,\n });\n }\n }\n};\n","import type { EnumDeclaration } from 'typescript';\n\nimport {\n type Comments,\n compiler,\n type Node,\n TypeScriptFile,\n} from '../compiler';\nimport { isOperationParameterRequired } from '../openApi';\nimport type { Method, Model, OperationParameter } from '../types/client';\nimport type { Client } from '../types/client';\nimport type { Files } from '../types/utils';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { enumEntry, enumUnionType } from '../utils/enum';\nimport { escapeComment } from '../utils/escape';\nimport { sortByName, sorterByName } from '../utils/sort';\nimport {\n setUniqueTypeName,\n type SetUniqueTypeNameResult,\n toType,\n} from '../utils/type';\nimport {\n operationDataTypeName,\n operationErrorTypeName,\n operationResponseTypeName,\n} from './services';\n\nexport interface TypesProps {\n client: Client;\n model: Model;\n onNode: (node: Node) => void;\n onRemoveNode?: VoidFunction;\n}\n\nconst treeName = '$OpenApiTs';\n\nexport const emptyModel: Model = {\n $refs: [],\n base: '',\n description: null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n template: null,\n type: '',\n};\n\nconst generateEnum = ({\n leadingComment,\n comments,\n meta,\n obj,\n onNode,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.enumDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'>) => {\n // generate types only for top-level models\n if (!meta) {\n return;\n }\n\n const { created, name } = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (created) {\n const node = compiler.enumDeclaration({\n comments,\n leadingComment,\n name,\n obj,\n });\n onNode(node);\n }\n};\n\nexport const generateType = ({\n comment,\n meta,\n onCreated,\n onNode,\n type,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.typeAliasDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'> & {\n onCreated?: (name: string) => void;\n }): SetUniqueTypeNameResult => {\n // generate types only for top-level models\n if (!meta) {\n return {\n created: false,\n name: '',\n };\n }\n\n const result = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n const { created, name } = result;\n if (created) {\n const node = compiler.typeAliasDeclaration({\n comment,\n exportType: true,\n name,\n type,\n });\n onNode(node);\n\n onCreated?.(name);\n }\n return result;\n};\n\nconst processComposition = (props: TypesProps) => {\n const config = getConfig();\n\n const enumDeclarations = [] as EnumDeclaration[];\n\n processType(props);\n\n props.model.enums.forEach((enumerator) => {\n if (config.types.enums !== 'typescript+namespace') {\n return processEnum({\n ...props,\n model: enumerator,\n });\n }\n\n return processScopedEnum({\n ...props,\n model: enumerator,\n onNode: (node) => {\n enumDeclarations.push(node as EnumDeclaration);\n },\n });\n });\n\n if (enumDeclarations.length) {\n props.onNode(\n compiler.namespaceDeclaration({\n name: props.model.name,\n statements: enumDeclarations,\n }),\n );\n }\n};\n\nconst processEnum = ({ client, model, onNode }: TypesProps) => {\n const config = getConfig();\n\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n\n const comment = [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ];\n\n if (\n config.types.enums === 'typescript' ||\n config.types.enums === 'typescript+namespace'\n ) {\n generateEnum({\n client,\n comments,\n leadingComment: comment,\n meta: model.meta,\n obj: properties,\n onNode,\n });\n return;\n }\n\n generateType({\n client,\n comment,\n meta: model.meta,\n onCreated: (name) => {\n // create a separate JavaScript object export\n if (config.types.enums === 'javascript') {\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: Object.entries(properties).map(([key, value]) => ({\n comments: comments[key],\n key,\n value,\n })),\n unescape: true,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment,\n exportConst: true,\n expression,\n name,\n });\n onNode(node);\n }\n },\n onNode,\n type: enumUnionType(model.enum),\n });\n};\n\nconst processScopedEnum = ({ model, onNode }: TypesProps) => {\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n onNode(\n compiler.enumDeclaration({\n comments,\n leadingComment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n name: model.meta?.name || model.name,\n obj: properties,\n }),\n );\n};\n\nconst processType = ({ client, model, onNode }: TypesProps) => {\n generateType({\n client,\n comment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n meta: model.meta,\n onNode,\n type: toType(model),\n });\n};\n\nconst processModel = (props: TypesProps) => {\n switch (props.model.export) {\n case 'all-of':\n case 'any-of':\n case 'one-of':\n case 'interface':\n return processComposition(props);\n case 'enum':\n return processEnum(props);\n default:\n return processType(props);\n }\n};\n\ninterface MethodMap {\n $ref?: string;\n req?: OperationParameter[];\n res?: Record<number | string, Model>;\n}\n\ntype PathMap = {\n [method in Method]?: MethodMap;\n};\n\ntype PathsMap = Record<string, PathMap>;\n\nconst processServiceTypes = ({\n client,\n onNode,\n}: Pick<TypesProps, 'client' | 'onNode'>) => {\n const pathsMap: PathsMap = {};\n\n const config = getConfig();\n\n if (!config.services.export && !config.types.tree) {\n return;\n }\n\n const isLegacy = isLegacyClient(config);\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n if (!operation.parameters.length && !operation.responses.length) {\n continue;\n }\n\n if (!pathsMap[operation.path]) {\n pathsMap[operation.path] = {};\n }\n const pathMap = pathsMap[operation.path]!;\n\n if (!pathMap[operation.method]) {\n pathMap[operation.method] = {};\n }\n const methodMap = pathMap[operation.method]!;\n methodMap.$ref = operation.name;\n\n if (operation.responses.length > 0) {\n if (!methodMap.res) {\n methodMap.res = {};\n }\n\n if (Array.isArray(methodMap.res)) {\n continue;\n }\n\n operation.responses.forEach((response) => {\n methodMap.res![response.code] = response;\n });\n }\n\n if (operation.parameters.length > 0) {\n let bodyParameters: OperationParameter = {\n mediaType: null,\n ...emptyModel,\n in: 'body',\n name: 'body',\n prop: 'body',\n };\n let bodyParameter = operation.parameters.filter(\n (parameter) => parameter.in === 'body',\n );\n if (!bodyParameter.length) {\n bodyParameter = operation.parameters.filter(\n (parameter) => parameter.in === 'formData',\n );\n }\n\n if (bodyParameter.length === 1) {\n bodyParameters = {\n ...emptyModel,\n ...bodyParameter[0],\n in: 'body',\n isRequired: bodyParameter[0].isRequired,\n name: 'body',\n prop: 'body',\n };\n // assume we have multiple formData parameters from Swagger 2.0\n } else if (bodyParameter.length > 1) {\n bodyParameters = {\n ...emptyModel,\n in: 'body',\n isRequired: bodyParameter.some((parameter) => parameter.isRequired),\n mediaType: 'multipart/form-data',\n name: 'body',\n prop: 'body',\n properties: bodyParameter,\n };\n }\n\n const headerParameters: OperationParameter = {\n ...emptyModel,\n in: 'header',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter(\n (parameter) => parameter.in === 'header',\n ),\n ),\n mediaType: null,\n name: isLegacy ? 'header' : 'headers',\n prop: isLegacy ? 'header' : 'headers',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'header')\n .sort(sorterByName),\n };\n const pathParameters: OperationParameter = {\n ...emptyModel,\n in: 'path',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter((parameter) => parameter.in === 'path'),\n ),\n mediaType: null,\n name: 'path',\n prop: 'path',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'path')\n .sort(sorterByName),\n };\n const queryParameters: OperationParameter = {\n ...emptyModel,\n in: 'query',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter(\n (parameter) => parameter.in === 'query',\n ),\n ),\n mediaType: null,\n name: 'query',\n prop: 'query',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'query')\n .sort(sorterByName),\n };\n const operationProperties = !isLegacy\n ? [\n bodyParameters,\n headerParameters,\n pathParameters,\n queryParameters,\n ].filter(\n (param) =>\n param.properties.length ||\n param.$refs.length ||\n param.mediaType,\n )\n : sortByName([...operation.parameters]);\n\n methodMap.req = operationProperties;\n\n // create type export for operation data\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onNode,\n type: toType({\n ...emptyModel,\n isRequired: true,\n properties: operationProperties,\n }),\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n if (successResponses.length > 0) {\n // create type export for operation response\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onNode,\n type: toType({\n ...emptyModel,\n export: 'any-of',\n isRequired: true,\n properties: successResponses,\n }),\n });\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n\n if (!isLegacy) {\n // create type export for operation error\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onNode,\n type: toType(\n errorResponses.length\n ? {\n ...emptyModel,\n export: 'one-of',\n isRequired: true,\n properties: errorResponses,\n }\n : {\n ...emptyModel,\n base: 'unknown',\n isRequired: true,\n type: 'unknown',\n },\n ),\n });\n }\n }\n }\n }\n\n const properties = Object.entries(pathsMap).map(([path, pathMap]) => {\n const pathParameters = Object.entries(pathMap)\n .map(([_method, methodMap]) => {\n const method = _method as Method;\n\n let methodParameters: Model[] = [];\n\n if (methodMap.req) {\n const operationName = methodMap.$ref!;\n const { name: base } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operationName,\n name: operationName,\n },\n nameTransformer: operationDataTypeName,\n });\n const reqKey: Model = {\n ...emptyModel,\n base,\n export: 'reference',\n isRequired: true,\n name: 'req',\n properties: [],\n type: base,\n };\n methodParameters = [...methodParameters, reqKey];\n }\n\n if (methodMap.res) {\n const reqResParameters = Object.entries(methodMap.res).map(\n ([code, base]) => {\n // TODO: move query params into separate query key\n const value: Model = {\n ...emptyModel,\n ...base,\n isRequired: true,\n name: String(code),\n };\n return value;\n },\n );\n\n const resKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: 'res',\n properties: reqResParameters,\n };\n methodParameters = [...methodParameters, resKey];\n }\n\n const methodKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: method.toLocaleLowerCase(),\n properties: methodParameters,\n };\n return methodKey;\n })\n .filter(Boolean);\n const pathKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: `'${path}'`,\n properties: pathParameters as Model[],\n };\n return pathKey;\n });\n\n if (config.types.tree) {\n generateType({\n client,\n meta: {\n $ref: '@hey-api/openapi-ts',\n name: treeName,\n },\n onNode,\n type: toType({\n ...emptyModel,\n properties,\n }),\n });\n }\n};\n\nexport const generateTypes = async ({\n client,\n files,\n}: {\n client: Client;\n files: Files;\n}): Promise<void> => {\n const config = getConfig();\n\n if (config.types.export) {\n files.types = new TypeScriptFile({\n dir: config.output.path,\n name: 'types.ts',\n });\n }\n\n const onNode: TypesProps['onNode'] = (node) => {\n files.types?.add(node);\n };\n\n for (const model of client.models) {\n processModel({ client, model, onNode });\n }\n\n processServiceTypes({ client, onNode });\n};\n","import path from 'node:path';\n\nimport type { OpenApi } from '../openApi';\nimport type { Client } from '../types/client';\nimport type { Files } from '../types/utils';\nimport { getConfig } from '../utils/config';\nimport type { Templates } from '../utils/handlebars';\nimport { generateClientClass } from './class';\nimport { generateClient } from './client';\nimport { generateCore } from './core';\nimport { generateIndexFile } from './indexFile';\nimport { generatePlugins } from './plugins';\nimport { generateSchemas } from './schemas';\nimport { generateServices } from './services';\nimport { generateResponseTransformers } from './transformers';\nimport { generateTypes } from './types';\n\n/**\n * Write our OpenAPI client, using the given templates at the given output\n * @param openApi {@link OpenApi} Dereferenced OpenAPI specification\n * @param client Client containing models, schemas, and services\n * @param templates Templates wrapper with all loaded Handlebars templates\n */\nexport const generateOutput = async (\n openApi: OpenApi,\n client: Client,\n templates: Templates,\n): Promise<void> => {\n const config = getConfig();\n\n if (config.services.include && config.services.asClass) {\n const regexp = new RegExp(config.services.include);\n client.services = client.services.filter((service) =>\n regexp.test(service.name),\n );\n }\n\n if (config.types.include) {\n const regexp = new RegExp(config.types.include);\n client.models = client.models.filter((model) => regexp.test(model.name));\n }\n\n const outputPath = path.resolve(config.output.path);\n\n const files: Files = {};\n\n await generateClient(outputPath, config.client.name);\n\n // types.gen.ts\n await generateTypes({ client, files });\n\n // schemas.gen.ts\n await generateSchemas({ files, openApi });\n\n // transformers\n if (\n config.services.export &&\n client.services.length &&\n config.types.dates === 'types+transform'\n ) {\n await generateResponseTransformers({\n client,\n onNode: (node) => {\n files.types?.add(node);\n },\n onRemoveNode: () => {\n files.types?.removeNode();\n },\n });\n }\n\n // services.gen.ts\n await generateServices({ client, files });\n\n // deprecated files\n await generateClientClass(openApi, outputPath, client, templates);\n await generateCore(\n path.resolve(config.output.path, 'core'),\n client,\n templates,\n );\n\n // index.ts. Any files generated after this won't be included in exports\n // from the index file.\n await generateIndexFile({ files });\n\n // plugins\n await generatePlugins({ client, files });\n\n Object.entries(files).forEach(([name, file]) => {\n if (config.dryRun) {\n return;\n }\n\n if (name === 'index') {\n file.write();\n } else {\n file.write('\\n\\n');\n }\n });\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n name: '@hey-api/schemas',\n output: 'schemas',\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n name: '@hey-api/services',\n output: 'services',\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n name: '@hey-api/types',\n output: 'types',\n};\n","import ts from 'typescript';\n\nimport { compiler, type Property } from '../../../compiler';\nimport type { ImportExportItem } from '../../../compiler/module';\nimport type { ImportExportItemObject } from '../../../compiler/utils';\nimport {\n clientModulePath,\n clientOptionsTypeName,\n} from '../../../generate/client';\nimport {\n generateImport,\n operationDataTypeName,\n operationErrorTypeName,\n operationOptionsType,\n operationResponseTypeName,\n toOperationName,\n} from '../../../generate/services';\nimport { relativeModulePath } from '../../../generate/utils';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport { getOperationKey } from '../../../openApi/common/parser/operation';\nimport type {\n Client,\n Method,\n Model,\n Operation,\n OperationParameter,\n} from '../../../types/client';\nimport type { Files } from '../../../types/utils';\nimport { getConfig } from '../../../utils/config';\nimport { transformServiceName } from '../../../utils/transform';\nimport type { PluginHandler } from '../../types';\nimport type { PluginConfig as ReactQueryPluginConfig } from '../react-query';\nimport type { PluginConfig as SolidQueryPluginConfig } from '../solid-query';\nimport type { PluginConfig as SvelteQueryPluginConfig } from '../svelte-query';\nimport type { PluginConfig as VueQueryPluginConfig } from '../vue-query';\n\nconst toInfiniteQueryOptionsName = (operation: Operation) =>\n `${toOperationName(operation, false)}InfiniteOptions`;\n\nconst toMutationOptionsName = (operation: Operation) =>\n `${toOperationName(operation, false)}Mutation`;\n\nconst toQueryOptionsName = (operation: Operation) =>\n `${toOperationName(operation, false)}Options`;\n\nconst toQueryKeyName = (operation: Operation, isInfinite?: boolean) =>\n `${toOperationName(operation, false)}${isInfinite ? 'Infinite' : ''}QueryKey`;\n\nconst checkPrerequisites = ({ files }: { files: Files }) => {\n if (!files.services) {\n throw new Error(\n '🚫 services need to be exported to use TanStack Query plugin - enable service generation',\n );\n }\n};\n\nconst getPaginationIn = (parameter: OperationParameter) => {\n switch (parameter.in) {\n case 'formData':\n return 'body';\n case 'header':\n return 'headers';\n default:\n return parameter.in;\n }\n};\n\nconst paginationWordsRegExp = /^(cursor|offset|page|start)/;\n\nconst createInfiniteParamsFn = 'createInfiniteParams';\nconst createQueryKeyFn = 'createQueryKey';\nconst infiniteQueryOptionsFn = 'infiniteQueryOptions';\nconst mutationOptionsFn = 'mutationOptions';\nconst queryKeyName = 'QueryKey';\nconst queryOptionsFn = 'queryOptions';\nconst TOptionsType = 'TOptions';\n\nconst getClientBaseUrlKey = () => {\n const config = getConfig();\n return config.client.name === '@hey-api/client-axios' ? 'baseURL' : 'baseUrl';\n};\n\nconst createInfiniteParamsFunction = ({\n file,\n}: {\n file: Files[keyof Files];\n}) => {\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeNode('QueryKey<Options>'),\n },\n {\n name: 'page',\n type: compiler.typeNode('K'),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].path',\n },\n {\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].query',\n },\n {\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.returnVariable({\n expression: ts.factory.createAsExpression(\n ts.factory.createAsExpression(\n compiler.identifier({ text: 'params' }),\n ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n ),\n ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n ),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: \"Pick<QueryKey<Options>[0], 'body' | 'headers' | 'path' | 'query'>\",\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: createInfiniteParamsFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyFunction = ({ file }: { file: Files[keyof Files] }) => {\n const returnType = compiler.indexedAccessTypeNode({\n indexType: compiler.typeNode(0),\n objectType: compiler.typeNode(queryKeyName, [\n compiler.typeNode(TOptionsType),\n ]),\n });\n\n const infiniteIdentifier = compiler.identifier({ text: 'infinite' });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeNode('string'),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeNode(TOptionsType),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeNode('boolean'),\n },\n ],\n returnType,\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(),\n value: compiler.identifier({\n text: `(options?.client ?? client).getConfig().${getClientBaseUrlKey()}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: ts.factory.createBlock(\n [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n true,\n ),\n }),\n compiler.returnVariable({\n expression: 'params',\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientOptionsTypeName(),\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: createQueryKeyFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyType = ({ file }: { file: Files[keyof Files] }) => {\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey()}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({ properties }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientOptionsTypeName(),\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nconst createTypeData = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeData } = generateImport({\n client,\n meta: operation.parameters.length\n ? {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n }\n : undefined,\n nameTransformer: operationDataTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n const typeData = operationOptionsType(nameTypeData);\n\n return { typeData };\n};\n\nconst createTypeError = ({\n client,\n file,\n operation,\n pluginName,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n pluginName: string;\n typesModulePath: string;\n}) => {\n const config = getConfig();\n\n const { name: nameTypeError } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n let typeError: ImportExportItemObject = {\n asType: true,\n name: nameTypeError,\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: pluginName,\n name: 'DefaultError',\n });\n }\n\n if (config.client.name === '@hey-api/client-axios') {\n const axiosError = file.import({\n asType: true,\n module: 'axios',\n name: 'AxiosError',\n });\n typeError = {\n ...axiosError,\n name: `${axiosError.name}<${typeError.name}>`,\n };\n }\n\n return { typeError };\n};\n\nconst createTypeResponse = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeResponse } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport: (imported) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name: imported,\n });\n },\n });\n\n const typeResponse = nameTypeResponse || 'void';\n\n return { typeResponse };\n};\n\nconst createQueryKeyLiteral = ({\n isInfinite,\n operation,\n}: {\n isInfinite?: boolean;\n operation: Operation;\n}) => {\n const queryKeyLiteral = compiler.arrayLiteralExpression({\n elements: [\n compiler.callExpression({\n functionName: createQueryKeyFn,\n parameters: [\n compiler.stringLiteral({ text: operation.name }),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n }),\n ],\n multiLine: false,\n });\n return queryKeyLiteral;\n};\n\nexport const handler: PluginHandler<\n | ReactQueryPluginConfig\n | SolidQueryPluginConfig\n | SvelteQueryPluginConfig\n | VueQueryPluginConfig\n> = ({ client, files, plugin }) => {\n checkPrerequisites({ files });\n\n const config = getConfig();\n const file = files[plugin.name];\n\n file.import({\n asType: true,\n module: clientModulePath({ sourceOutput: plugin.output }),\n name: clientOptionsTypeName(),\n });\n\n const typesModulePath = relativeModulePath({\n moduleOutput: files.types.getName(false),\n sourceOutput: plugin.output,\n });\n\n const mutationsType =\n plugin.name === '@tanstack/svelte-query' ||\n plugin.name === '@tanstack/solid-query'\n ? 'MutationOptions'\n : 'UseMutationOptions';\n\n let typeInfiniteData!: ImportExportItem;\n let hasCreateInfiniteParamsFunction = false;\n let hasCreateQueryKeyParamsFunction = false;\n let hasInfiniteQueries = false;\n let hasMutations = false;\n let hasQueries = false;\n\n const processedOperations = new Map<string, boolean>();\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n // track processed operations to avoid creating duplicates\n const operationKey = getOperationKey(operation);\n if (processedOperations.has(operationKey)) {\n continue;\n }\n processedOperations.set(operationKey, true);\n\n const queryFn = [\n config.services.asClass && transformServiceName(service.name),\n toOperationName(operation, !config.services.asClass),\n ]\n .filter(Boolean)\n .join('.');\n let hasUsedQueryFn = false;\n\n // queries\n if (\n plugin.queryOptions &&\n (['GET', 'POST'] as ReadonlyArray<Method>).includes(operation.method)\n ) {\n if (!hasQueries) {\n hasQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: queryOptionsFn,\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: createQueryKeyLiteral({\n operation,\n }),\n }),\n name: toQueryKeyName(operation),\n });\n file.add(queryKeyStatement);\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName(operation),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: toQueryOptionsName(operation),\n // TODO: add type error\n // TODO: AxiosError<PutSubmissionMetaError>\n });\n file.add(statement);\n }\n\n // infinite queries\n if (\n plugin.infiniteQueryOptions &&\n (['GET', 'POST'] as ReadonlyArray<Method>).includes(operation.method)\n ) {\n // the actual pagination field might be nested inside parameter, e.g. body\n let paginationField!: Model | OperationParameter;\n\n const paginationParameter = operation.parameters.find((parameter) => {\n paginationWordsRegExp.lastIndex = 0;\n if (paginationWordsRegExp.test(parameter.name)) {\n paginationField = parameter;\n return true;\n }\n\n if (parameter.in !== 'body') {\n return;\n }\n\n if (parameter.export === 'reference') {\n const ref = parameter.$refs[0];\n const refModel = client.models.find(\n (model) => model.meta?.$ref === ref,\n );\n return refModel?.properties.find((property) => {\n paginationWordsRegExp.lastIndex = 0;\n if (paginationWordsRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n });\n }\n\n return parameter.properties.find((property) => {\n paginationWordsRegExp.lastIndex = 0;\n if (paginationWordsRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n });\n });\n\n if (paginationParameter && paginationField) {\n if (!hasInfiniteQueries) {\n hasInfiniteQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n if (!hasCreateInfiniteParamsFunction) {\n createInfiniteParamsFunction({ file });\n hasCreateInfiniteParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: infiniteQueryOptionsFn,\n });\n\n typeInfiniteData = file.import({\n asType: true,\n module: plugin.name,\n name: 'InfiniteData',\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n const { typeError } = createTypeError({\n client,\n file,\n operation,\n pluginName: plugin.name,\n typesModulePath,\n });\n const { typeResponse } = createTypeResponse({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n const typeQueryKey = `${queryKeyName}<${typeData}>`;\n const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`;\n const typePageParam = `${paginationField.base} | ${typePageObjectParam}`;\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n returnType: typeQueryKey,\n statements: createQueryKeyLiteral({\n isInfinite: true,\n operation,\n }),\n }),\n name: toQueryKeyName(operation, true),\n });\n file.add(queryKeyStatement);\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.stringLiteral({\n text: 'object',\n }),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: getPaginationIn(paginationParameter),\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: paginationField.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: 'createInfiniteParams',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName(operation, true),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof typeInfiniteData === 'string' ? typeInfiniteData : typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: toInfiniteQueryOptionsName(operation),\n });\n file.add(statement);\n }\n }\n\n // mutations\n if (\n plugin.mutationOptions &&\n (['DELETE', 'PATCH', 'POST', 'PUT'] as ReadonlyArray<Method>).includes(\n operation.method,\n )\n ) {\n if (!hasMutations) {\n hasMutations = true;\n\n file.import({\n asType: true,\n module: plugin.name,\n name: mutationsType,\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n const { typeError } = createTypeError({\n client,\n file,\n operation,\n pluginName: plugin.name,\n typesModulePath,\n });\n const { typeResponse } = createTypeResponse({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n // TODO: better types syntax\n typeName: `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: toMutationOptionsName(operation),\n });\n file.add(statement);\n }\n\n const servicesModulePath = relativeModulePath({\n moduleOutput: files.services.getName(false),\n sourceOutput: plugin.output,\n });\n\n if (hasQueries || hasInfiniteQueries) {\n file.import({\n module: servicesModulePath,\n name: 'client',\n });\n }\n\n if (hasUsedQueryFn) {\n file.import({\n module: servicesModulePath,\n name: queryFn.split('.')[0],\n });\n }\n }\n }\n};\n","import { handler } from '../query-core/plugin';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/react-query',\n output: '@tanstack/react-query',\n queryOptions: true,\n};\n","import { handler } from '../query-core/plugin';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/solid-query',\n output: '@tanstack/solid-query',\n queryOptions: true,\n};\n","import { handler } from '../query-core/plugin';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/svelte-query',\n output: '@tanstack/svelte-query',\n queryOptions: true,\n};\n","import { handler } from '../query-core/plugin';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/vue-query',\n output: '@tanstack/vue-query',\n queryOptions: true,\n};\n","import type { PluginHandler } from '../types';\nimport type { PluginConfig } from './types';\n\nexport const handler: PluginHandler<PluginConfig> = ({ plugin }) => {\n console.warn(plugin);\n};\n","import { handler } from './plugin';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n name: 'zod',\n output: 'zod',\n};\n","import {\n defaultConfig as heyApiSchemasDefaultConfig,\n type PluginConfig as PluginHeyApiSchemas,\n} from './@hey-api/schemas';\nimport {\n defaultConfig as heyApiServicesDefaultConfig,\n type PluginConfig as PluginHeyApiServices,\n} from './@hey-api/services';\nimport {\n defaultConfig as heyApiTypesDefaultConfig,\n type PluginConfig as PluginHeyApiTypes,\n} from './@hey-api/types';\nimport {\n defaultConfig as tanStackReactQueryDefaultConfig,\n type PluginConfig as PluginTanStackReactQuery,\n type UserConfig as TanStackReactQuery,\n} from './@tanstack/react-query';\nimport {\n defaultConfig as tanStackSolidQueryDefaultConfig,\n type PluginConfig as PluginTanStackSolidQuery,\n type UserConfig as TanStackSolidQuery,\n} from './@tanstack/solid-query';\nimport {\n defaultConfig as tanStackSvelteQueryDefaultConfig,\n type PluginConfig as PluginTanStackSvelteQuery,\n type UserConfig as TanStackSvelteQuery,\n} from './@tanstack/svelte-query';\nimport {\n defaultConfig as tanStackVueQueryDefaultConfig,\n type PluginConfig as PluginTanStackVueQuery,\n type UserConfig as TanStackVueQuery,\n} from './@tanstack/vue-query';\nimport type { DefaultPluginConfigsMap } from './types';\nimport {\n defaultConfig as zodDefaultConfig,\n type PluginConfig as PluginZod,\n // type UserConfig as Zod,\n} from './zod';\n\n/**\n * User-facing plugin types.\n */\nexport type UserPlugins =\n | TanStackReactQuery\n | TanStackSolidQuery\n | TanStackSvelteQuery\n | TanStackVueQuery;\n// | Zod\n\nexport type ClientPlugins =\n | PluginHeyApiSchemas\n | PluginHeyApiServices\n | PluginHeyApiTypes\n | PluginTanStackReactQuery\n | PluginTanStackSolidQuery\n | PluginTanStackSvelteQuery\n | PluginTanStackVueQuery\n | PluginZod;\n\nexport const defaultPluginConfigs: DefaultPluginConfigsMap<ClientPlugins> = {\n '@hey-api/schemas': heyApiSchemasDefaultConfig,\n '@hey-api/services': heyApiServicesDefaultConfig,\n '@hey-api/types': heyApiTypesDefaultConfig,\n '@tanstack/react-query': tanStackReactQueryDefaultConfig,\n '@tanstack/solid-query': tanStackSolidQueryDefaultConfig,\n '@tanstack/svelte-query': tanStackSvelteQueryDefaultConfig,\n '@tanstack/vue-query': tanStackVueQueryDefaultConfig,\n zod: zodDefaultConfig,\n};\n","import type { OpenApiV2Schema, OpenApiV3Schema } from '../openApi';\nimport type { ClientPlugins, UserPlugins } from '../plugins/';\nimport type { Operation } from '../types/client';\nimport type { ExtractArrayOfObjects } from './utils';\n\nexport const CLIENTS = [\n '@hey-api/client-axios',\n '@hey-api/client-fetch',\n 'legacy/angular',\n 'legacy/axios',\n 'legacy/fetch',\n 'legacy/node',\n 'legacy/xhr',\n] as const;\n\ntype Client = (typeof CLIENTS)[number];\n\nexport interface ClientConfig {\n /**\n * Manually set base in OpenAPI config instead of inferring from server value\n * @deprecated\n */\n base?: string;\n /**\n * HTTP client to generate\n */\n client?:\n | Client\n | false\n | {\n /**\n * Bundle the client module? Set this to true if you're using a standalone\n * client package and don't want to declare it as a separate dependency.\n * When true, the client module will be generated from the standalone\n * package and bundled with the rest of the generated output. This is\n * useful if you're repackaging the output, publishing it to other users,\n * and you don't want them to install any dependencies.\n * @default false\n */\n bundle?: boolean;\n /**\n * HTTP client to generate\n */\n name: Client;\n };\n /**\n * Path to the config file. Set this value if you don't use the default\n * config file name, or it's not located in the project root.\n */\n configFile?: string;\n /**\n * Run in debug mode?\n * @default false\n */\n debug?: boolean;\n /**\n * Skip writing files to disk?\n * @default false\n */\n dryRun?: boolean;\n /**\n * Use the experimental parser?\n * @default false\n */\n experimental_parser?: boolean;\n /**\n * Generate core client classes?\n * @default true\n */\n exportCore?: boolean;\n /**\n * The relative location of the OpenAPI spec\n */\n input: string | Record<string, unknown>;\n /**\n * Custom client class name\n * @deprecated\n */\n name?: string;\n /**\n * The relative location of the output directory\n */\n output:\n | string\n | {\n /**\n * Process output folder with formatter?\n * @default false\n */\n format?: 'biome' | 'prettier' | false;\n /**\n * Process output folder with linter?\n * @default false\n */\n lint?: 'biome' | 'eslint' | false;\n /**\n * The relative location of the output directory\n */\n path: string;\n };\n /**\n * Plugins are used to generate additional output files from provided input.\n */\n plugins?: ReadonlyArray<UserPlugins['name'] | UserPlugins>;\n /**\n * Path to custom request file\n * @deprecated\n */\n request?: string;\n /**\n * Generate JSON schemas?\n * @default true\n */\n schemas?:\n | boolean\n | {\n /**\n * Generate JSON schemas?\n * @default true\n */\n export?: boolean;\n /**\n * Customise the schema name. By default, `{{name}}Schema` is used. `name` is a\n * valid JavaScript/TypeScript identifier, e.g. if your schema name is\n * \"Foo-Bar\", `name` value would be \"FooBar\".\n */\n name?: (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n ) => string;\n /**\n * Choose schema type to generate. Select 'form' if you don't want\n * descriptions to reduce bundle size and you plan to use schemas\n * for form validation\n * @default 'json'\n */\n type?: 'form' | 'json';\n };\n /**\n * Generate services?\n * @default true\n */\n services?:\n | boolean\n | string\n | {\n /**\n * Group operation methods into service classes? When enabled, you can\n * select which classes to export with `services.include` and/or\n * transform their names with `services.name`.\n *\n * Note that by enabling this option, your services will **NOT**\n * support {@link https://developer.mozilla.org/docs/Glossary/Tree_shaking tree-shaking}.\n * For this reason, it is disabled by default.\n * @default false\n */\n asClass?: boolean;\n /**\n * Generate services?\n * @default true\n */\n export?: boolean;\n /**\n * Filter endpoints to be included in the generated services.\n * The provided string should be a regular expression where matched\n * results will be included in the output. The input pattern this\n * string will be tested against is `{method} {path}`. For example,\n * you can match `POST /api/v1/foo` with `^POST /api/v1/foo$`.\n */\n filter?: string;\n /**\n * Include only service classes with names matching regular expression\n *\n * This option has no effect if `services.asClass` is `false`.\n */\n include?: string;\n /**\n * Customise the name of methods within the service. By default, {@link Operation.name} is used.\n */\n methodNameBuilder?: (operation: Operation) => string;\n /**\n * Customize the generated service class names. The name variable is\n * obtained from your OpenAPI specification tags.\n *\n * This option has no effect if `services.asClass` is `false`.\n * @default '{{name}}Service'\n */\n name?: string;\n /**\n * Use operation ID to generate operation names?\n * @default true\n */\n operationId?: boolean;\n /**\n * Define shape of returned value from service calls\n * @default 'body'\n * @deprecated\n */\n response?: 'body' | 'response';\n };\n /**\n * Generate types?\n * @default true\n */\n types?:\n | boolean\n | string\n | {\n /**\n * Output Date type and possibly runtime transform instead of string for format \"date-time\"\n * @default false\n */\n dates?: boolean | 'types+transform' | 'types';\n /**\n * Generate enum definitions?\n * @default false\n */\n enums?: 'javascript' | 'typescript' | 'typescript+namespace' | false;\n /**\n * Generate types?\n * @default true\n */\n export?: boolean;\n /**\n * Include only types matching regular expression\n */\n include?: string;\n /**\n * Use your preferred naming pattern\n * @default 'preserve'\n */\n name?: 'PascalCase' | 'preserve';\n /**\n * Generate a tree of types containing all operations? It will be named\n * $OpenApiTs and is generated by default only when not using services.\n */\n tree?: boolean;\n };\n /**\n * Use options or arguments functions\n * @deprecated\n * @default true\n */\n useOptions?: boolean;\n}\n\nexport interface UserConfig extends ClientConfig {}\n\nexport type Config = Omit<\n Required<ClientConfig>,\n | 'base'\n | 'client'\n | 'name'\n | 'output'\n | 'plugins'\n | 'request'\n | 'schemas'\n | 'services'\n | 'types'\n> &\n Pick<ClientConfig, 'base' | 'name' | 'request'> & {\n client: Extract<Required<ClientConfig>['client'], object>;\n output: Extract<Required<ClientConfig>['output'], object>;\n plugins: ExtractArrayOfObjects<\n ReadonlyArray<ClientPlugins>,\n { name: string }\n >;\n schemas: Extract<Required<ClientConfig>['schemas'], object>;\n services: Extract<Required<ClientConfig>['services'], object>;\n types: Extract<Required<ClientConfig>['types'], object>;\n };\n","import { existsSync } from 'node:fs';\nimport path from 'node:path';\n\nimport $RefParser from '@apidevtools/json-schema-ref-parser';\n\nimport type { OpenApi } from '../openApi';\n\n/**\n * Load and parse te open api spec. If the file extension is \".yml\" or \".yaml\"\n * we will try to parse the file as a YAML spec, otherwise we will fall back\n * on parsing the file as JSON.\n * @param location: Path or url\n */\nexport const getOpenApiSpec = async (location: string) => {\n const absolutePathOrUrl = existsSync(location)\n ? path.resolve(location)\n : location;\n const schema = (await $RefParser.bundle(\n absolutePathOrUrl,\n absolutePathOrUrl,\n {},\n )) as OpenApi;\n return schema;\n};\n","import Handlebars from 'handlebars';\n\n// @ts-ignore\nimport templateClient from '../legacy/handlebars/compiled/client.js';\n// @ts-ignore\nimport angularGetHeaders from '../legacy/handlebars/compiled/core/angular/getHeaders.js';\n// @ts-ignore\nimport angularGetRequestBody from '../legacy/handlebars/compiled/core/angular/getRequestBody.js';\n// @ts-ignore\nimport angularGetResponseBody from '../legacy/handlebars/compiled/core/angular/getResponseBody.js';\n// @ts-ignore\nimport angularGetResponseHeader from '../legacy/handlebars/compiled/core/angular/getResponseHeader.js';\n// @ts-ignore\nimport angularRequest from '../legacy/handlebars/compiled/core/angular/request.js';\n// @ts-ignore\nimport angularSendRequest from '../legacy/handlebars/compiled/core/angular/sendRequest.js';\n// @ts-ignore\nimport templateCoreApiError from '../legacy/handlebars/compiled/core/ApiError.js';\n// @ts-ignore\nimport templateCoreApiRequestOptions from '../legacy/handlebars/compiled/core/ApiRequestOptions.js';\n// @ts-ignore\nimport templateCoreApiResult from '../legacy/handlebars/compiled/core/ApiResult.js';\n// @ts-ignore\nimport axiosGetHeaders from '../legacy/handlebars/compiled/core/axios/getHeaders.js';\n// @ts-ignore\nimport axiosGetRequestBody from '../legacy/handlebars/compiled/core/axios/getRequestBody.js';\n// @ts-ignore\nimport axiosGetResponseBody from '../legacy/handlebars/compiled/core/axios/getResponseBody.js';\n// @ts-ignore\nimport axiosGetResponseHeader from '../legacy/handlebars/compiled/core/axios/getResponseHeader.js';\n// @ts-ignore\nimport axiosRequest from '../legacy/handlebars/compiled/core/axios/request.js';\n// @ts-ignore\nimport axiosSendRequest from '../legacy/handlebars/compiled/core/axios/sendRequest.js';\n// @ts-ignore\nimport templateCoreBaseHttpRequest from '../legacy/handlebars/compiled/core/BaseHttpRequest.js';\n// @ts-ignore\nimport templateCancelablePromise from '../legacy/handlebars/compiled/core/CancelablePromise.js';\n// @ts-ignore\nimport fetchGetHeaders from '../legacy/handlebars/compiled/core/fetch/getHeaders.js';\n// @ts-ignore\nimport fetchGetRequestBody from '../legacy/handlebars/compiled/core/fetch/getRequestBody.js';\n// @ts-ignore\nimport fetchGetResponseBody from '../legacy/handlebars/compiled/core/fetch/getResponseBody.js';\n// @ts-ignore\nimport fetchGetResponseHeader from '../legacy/handlebars/compiled/core/fetch/getResponseHeader.js';\n// @ts-ignore\nimport fetchRequest from '../legacy/handlebars/compiled/core/fetch/request.js';\n// @ts-ignore\nimport fetchSendRequest from '../legacy/handlebars/compiled/core/fetch/sendRequest.js';\n// @ts-ignore\nimport functionBase64 from '../legacy/handlebars/compiled/core/functions/base64.js';\n// @ts-ignore\nimport functionCatchErrorCodes from '../legacy/handlebars/compiled/core/functions/catchErrorCodes.js';\n// @ts-ignore\nimport functionGetFormData from '../legacy/handlebars/compiled/core/functions/getFormData.js';\n// @ts-ignore\nimport functionGetQueryString from '../legacy/handlebars/compiled/core/functions/getQueryString.js';\n// @ts-ignore\nimport functionGetUrl from '../legacy/handlebars/compiled/core/functions/getUrl.js';\n// @ts-ignore\nimport functionIsBlob from '../legacy/handlebars/compiled/core/functions/isBlob.js';\n// @ts-ignore\nimport functionIsFormData from '../legacy/handlebars/compiled/core/functions/isFormData.js';\n// @ts-ignore\nimport functionIsString from '../legacy/handlebars/compiled/core/functions/isString.js';\n// @ts-ignore\nimport functionIsStringWithValue from '../legacy/handlebars/compiled/core/functions/isStringWithValue.js';\n// @ts-ignore\nimport functionIsSuccess from '../legacy/handlebars/compiled/core/functions/isSuccess.js';\n// @ts-ignore\nimport functionResolve from '../legacy/handlebars/compiled/core/functions/resolve.js';\n// @ts-ignore\nimport templateCoreHttpRequest from '../legacy/handlebars/compiled/core/HttpRequest.js';\n// @ts-ignore\nimport templateCoreSettings from '../legacy/handlebars/compiled/core/OpenAPI.js';\n// @ts-ignore\nimport templateCoreRequest from '../legacy/handlebars/compiled/core/request.js';\n// @ts-ignore\nimport xhrGetHeaders from '../legacy/handlebars/compiled/core/xhr/getHeaders.js';\n// @ts-ignore\nimport xhrGetRequestBody from '../legacy/handlebars/compiled/core/xhr/getRequestBody.js';\n// @ts-ignore\nimport xhrGetResponseBody from '../legacy/handlebars/compiled/core/xhr/getResponseBody.js';\n// @ts-ignore\nimport xhrGetResponseHeader from '../legacy/handlebars/compiled/core/xhr/getResponseHeader.js';\n// @ts-ignore\nimport xhrRequest from '../legacy/handlebars/compiled/core/xhr/request.js';\n// @ts-ignore\nimport xhrSendRequest from '../legacy/handlebars/compiled/core/xhr/sendRequest.js';\nimport { camelCase } from './camelCase';\nimport { transformServiceName } from './transform';\n\nexport const registerHandlebarHelpers = (): void => {\n Handlebars.registerHelper(\n 'camelCase',\n function (this: unknown, name: string) {\n return camelCase({\n input: name,\n });\n },\n );\n\n Handlebars.registerHelper(\n 'equals',\n function (\n this: unknown,\n a: string,\n b: string,\n options: Handlebars.HelperOptions,\n ) {\n return a === b ? options.fn(this) : options.inverse(this);\n },\n );\n\n Handlebars.registerHelper('ifdef', function (this: unknown, ...args): string {\n const options = args.pop();\n if (!args.every((value) => !value)) {\n return options.fn(this);\n }\n return options.inverse(this);\n });\n\n Handlebars.registerHelper(\n 'notEquals',\n function (\n this: unknown,\n a: string,\n b: string,\n options: Handlebars.HelperOptions,\n ) {\n return a !== b ? options.fn(this) : options.inverse(this);\n },\n );\n\n Handlebars.registerHelper('transformServiceName', transformServiceName);\n};\n\nexport interface Templates {\n client: Handlebars.TemplateDelegate;\n core: {\n apiError: Handlebars.TemplateDelegate;\n apiRequestOptions: Handlebars.TemplateDelegate;\n apiResult: Handlebars.TemplateDelegate;\n baseHttpRequest: Handlebars.TemplateDelegate;\n cancelablePromise: Handlebars.TemplateDelegate;\n httpRequest: Handlebars.TemplateDelegate;\n request: Handlebars.TemplateDelegate;\n settings: Handlebars.TemplateDelegate;\n };\n}\n\n/**\n * Read all the Handlebar templates that we need and return a wrapper object\n * so we can easily access the templates in our generator/write functions.\n */\nexport const registerHandlebarTemplates = (): Templates => {\n registerHandlebarHelpers();\n\n // Main templates (entry points for the files we write to disk)\n const templates: Templates = {\n client: Handlebars.template(templateClient),\n core: {\n apiError: Handlebars.template(templateCoreApiError),\n apiRequestOptions: Handlebars.template(templateCoreApiRequestOptions),\n apiResult: Handlebars.template(templateCoreApiResult),\n baseHttpRequest: Handlebars.template(templateCoreBaseHttpRequest),\n cancelablePromise: Handlebars.template(templateCancelablePromise),\n httpRequest: Handlebars.template(templateCoreHttpRequest),\n request: Handlebars.template(templateCoreRequest),\n settings: Handlebars.template(templateCoreSettings),\n },\n };\n\n // Generic functions used in 'request' file @see src/legacy/handlebars/templates/core/request.hbs for more info\n Handlebars.registerPartial(\n 'functions/base64',\n Handlebars.template(functionBase64),\n );\n Handlebars.registerPartial(\n 'functions/catchErrorCodes',\n Handlebars.template(functionCatchErrorCodes),\n );\n Handlebars.registerPartial(\n 'functions/getFormData',\n Handlebars.template(functionGetFormData),\n );\n Handlebars.registerPartial(\n 'functions/getQueryString',\n Handlebars.template(functionGetQueryString),\n );\n Handlebars.registerPartial(\n 'functions/getUrl',\n Handlebars.template(functionGetUrl),\n );\n Handlebars.registerPartial(\n 'functions/isBlob',\n Handlebars.template(functionIsBlob),\n );\n Handlebars.registerPartial(\n 'functions/isFormData',\n Handlebars.template(functionIsFormData),\n );\n Handlebars.registerPartial(\n 'functions/isString',\n Handlebars.template(functionIsString),\n );\n Handlebars.registerPartial(\n 'functions/isStringWithValue',\n Handlebars.template(functionIsStringWithValue),\n );\n Handlebars.registerPartial(\n 'functions/isSuccess',\n Handlebars.template(functionIsSuccess),\n );\n Handlebars.registerPartial(\n 'functions/resolve',\n Handlebars.template(functionResolve),\n );\n\n // Specific files for the fetch client implementation\n Handlebars.registerPartial(\n 'fetch/getHeaders',\n Handlebars.template(fetchGetHeaders),\n );\n Handlebars.registerPartial(\n 'fetch/getRequestBody',\n Handlebars.template(fetchGetRequestBody),\n );\n Handlebars.registerPartial(\n 'fetch/getResponseBody',\n Handlebars.template(fetchGetResponseBody),\n );\n Handlebars.registerPartial(\n 'fetch/getResponseHeader',\n Handlebars.template(fetchGetResponseHeader),\n );\n Handlebars.registerPartial(\n 'fetch/request',\n Handlebars.template(fetchRequest),\n );\n Handlebars.registerPartial(\n 'fetch/sendRequest',\n Handlebars.template(fetchSendRequest),\n );\n\n // Specific files for the xhr client implementation\n Handlebars.registerPartial(\n 'xhr/getHeaders',\n Handlebars.template(xhrGetHeaders),\n );\n Handlebars.registerPartial(\n 'xhr/getRequestBody',\n Handlebars.template(xhrGetRequestBody),\n );\n Handlebars.registerPartial(\n 'xhr/getResponseBody',\n Handlebars.template(xhrGetResponseBody),\n );\n Handlebars.registerPartial(\n 'xhr/getResponseHeader',\n Handlebars.template(xhrGetResponseHeader),\n );\n Handlebars.registerPartial('xhr/request', Handlebars.template(xhrRequest));\n Handlebars.registerPartial(\n 'xhr/sendRequest',\n Handlebars.template(xhrSendRequest),\n );\n\n // Specific files for the axios client implementation\n Handlebars.registerPartial(\n 'axios/getHeaders',\n Handlebars.template(axiosGetHeaders),\n );\n Handlebars.registerPartial(\n 'axios/getRequestBody',\n Handlebars.template(axiosGetRequestBody),\n );\n Handlebars.registerPartial(\n 'axios/getResponseBody',\n Handlebars.template(axiosGetResponseBody),\n );\n Handlebars.registerPartial(\n 'axios/getResponseHeader',\n Handlebars.template(axiosGetResponseHeader),\n );\n Handlebars.registerPartial(\n 'axios/request',\n Handlebars.template(axiosRequest),\n );\n Handlebars.registerPartial(\n 'axios/sendRequest',\n Handlebars.template(axiosSendRequest),\n );\n\n // Specific files for the angular client implementation\n Handlebars.registerPartial(\n 'angular/getHeaders',\n Handlebars.template(angularGetHeaders),\n );\n Handlebars.registerPartial(\n 'angular/getRequestBody',\n Handlebars.template(angularGetRequestBody),\n );\n Handlebars.registerPartial(\n 'angular/getResponseBody',\n Handlebars.template(angularGetResponseBody),\n );\n Handlebars.registerPartial(\n 'angular/getResponseHeader',\n Handlebars.template(angularGetResponseHeader),\n );\n Handlebars.registerPartial(\n 'angular/request',\n Handlebars.template(angularRequest),\n );\n Handlebars.registerPartial(\n 'angular/sendRequest',\n Handlebars.template(angularSendRequest),\n );\n\n return templates;\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import { NgModule} from '@angular/core';\\nimport { HttpClientModule } from '@angular/common/http';\\n\\nimport { AngularHttpRequest } from './core/AngularHttpRequest';\\nimport { BaseHttpRequest } from './core/BaseHttpRequest';\\nimport type { OpenAPIConfig } from './core/OpenAPI';\\nimport { OpenAPI } from './core/OpenAPI';\\nimport { Interceptors } from './core/OpenAPI';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = container.strict,\n alias2 = container.lambda;\n\n return (\n \"import type { BaseHttpRequest } from './core/BaseHttpRequest';\\nimport type { OpenAPIConfig } from './core/OpenAPI';\\nimport { Interceptors } from './core/OpenAPI';\\nimport { \" +\n ((stack1 = alias2(\n alias1(depth0, 'httpRequest', {\n start: { line: 14, column: 12 },\n end: { line: 14, column: 23 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \" } from './core/\" +\n ((stack1 = alias2(\n alias1(depth0, 'httpRequest', {\n start: { line: 14, column: 45 },\n end: { line: 14, column: 56 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"';\\n\"\n );\n },\n 5: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = lookupProperty(helpers, 'each').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(6, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 18, column: 0 }, end: { line: 20, column: 9 } },\n },\n )) != null\n ? stack1\n : '';\n },\n 6: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n 'import { ' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 19, column: 9 },\n end: { line: 19, column: 40 },\n },\n },\n )) != null\n ? stack1\n : '') +\n \" } from './services.gen';\\n\"\n );\n },\n 8: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = container.strict,\n alias2 = container.lambda,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"@NgModule({\\n\timports: [HttpClientModule],\\n\tproviders: [\\n\t\t{\\n\t\t\tprovide: OpenAPI,\\n\t\t\tuseValue: {\\n\t\t\t\tBASE: OpenAPI?.BASE ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'server', {\n start: { line: 30, column: 31 },\n end: { line: 30, column: 37 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\t\tVERSION: OpenAPI?.VERSION ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'version', {\n start: { line: 31, column: 37 },\n end: { line: 31, column: 44 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\t\tWITH_CREDENTIALS: OpenAPI?.WITH_CREDENTIALS ?? false,\\n\t\t\t\tCREDENTIALS: OpenAPI?.CREDENTIALS ?? 'include',\\n\t\t\t\tTOKEN: OpenAPI?.TOKEN,\\n\t\t\t\tUSERNAME: OpenAPI?.USERNAME,\\n\t\t\t\tPASSWORD: OpenAPI?.PASSWORD,\\n\t\t\t\tHEADERS: OpenAPI?.HEADERS,\\n\t\t\t\tENCODE_PATH: OpenAPI?.ENCODE_PATH,\\n\t\t\t\tinterceptors: {\\n\t\t\t\t\tresponse: OpenAPI?.interceptors?.response ?? new Interceptors(),\\n\t\t\t\t},\\n\t\t\t} as OpenAPIConfig,\\n\t\t},\\n\t\t{\\n\t\t\tprovide: BaseHttpRequest,\\n\t\t\tuseClass: AngularHttpRequest,\\n\t\t},\\n\" +\n ((stack1 = lookupProperty(helpers, 'each').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(9, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 48, column: 2 },\n end: { line: 50, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\t]\\n})\\nexport class ' +\n ((stack1 = alias2(\n alias1(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'name',\n { start: { line: 53, column: 16 }, end: { line: 53, column: 34 } },\n ),\n depth0,\n )) != null\n ? stack1\n : '') +\n ' {}\\n'\n );\n },\n 9: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n '\t\t' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 49, column: 2 },\n end: { line: 49, column: 33 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ',\\n'\n );\n },\n 11: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = container.strict,\n alias2 = container.lambda,\n alias3 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n 'type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;\\n\\nexport class ' +\n ((stack1 = alias2(\n alias1(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'name',\n { start: { line: 57, column: 16 }, end: { line: 57, column: 34 } },\n ),\n depth0,\n )) != null\n ? stack1\n : '') +\n ' {\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'each').call(\n alias3,\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(12, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 59, column: 1 },\n end: { line: 61, column: 10 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n\tpublic readonly request: BaseHttpRequest;\\n\\n\tconstructor(config?: Partial<OpenAPIConfig>, HttpRequest: HttpRequestConstructor = ' +\n ((stack1 = alias2(\n alias1(depth0, 'httpRequest', {\n start: { line: 65, column: 87 },\n end: { line: 65, column: 98 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \") {\\n\t\tthis.request = new HttpRequest({\\n\t\t\tBASE: config?.BASE ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'server', {\n start: { line: 67, column: 29 },\n end: { line: 67, column: 35 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\tVERSION: config?.VERSION ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'version', {\n start: { line: 68, column: 35 },\n end: { line: 68, column: 42 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\tWITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,\\n\t\t\tCREDENTIALS: config?.CREDENTIALS ?? 'include',\\n\t\t\tTOKEN: config?.TOKEN,\\n\t\t\tUSERNAME: config?.USERNAME,\\n\t\t\tPASSWORD: config?.PASSWORD,\\n\t\t\tHEADERS: config?.HEADERS,\\n\t\t\tENCODE_PATH: config?.ENCODE_PATH,\\n\t\t\tinterceptors: {\\n\t\t\t\trequest: config?.interceptors?.request ?? new Interceptors(),\\n\t\t\t\tresponse: config?.interceptors?.response ?? new Interceptors(),\\n },\\n\t\t});\\n\\n\" +\n ((stack1 = lookupProperty(helpers, 'each').call(\n alias3,\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(14, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 82, column: 2 },\n end: { line: 84, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\t}\\n}\\n'\n );\n },\n 12: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n '\tpublic readonly ' +\n ((stack1 = lookupProperty(helpers, 'camelCase').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'camelCase',\n hash: {},\n data: data,\n loc: {\n start: { line: 60, column: 17 },\n end: { line: 60, column: 37 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ': ' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 60, column: 39 },\n end: { line: 60, column: 70 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ';\\n'\n );\n },\n 14: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n '\t\tthis.' +\n ((stack1 = lookupProperty(helpers, 'camelCase').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'camelCase',\n hash: {},\n data: data,\n loc: {\n start: { line: 83, column: 7 },\n end: { line: 83, column: 27 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ' = new ' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 83, column: 34 },\n end: { line: 83, column: 65 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '(this.request);\\n'\n );\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 15, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'if').call(\n alias1,\n lookupProperty(depth0, 'services'),\n {\n name: 'if',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 17, column: 0 }, end: { line: 21, column: 7 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(8, data, 0),\n inverse: container.program(11, data, 0),\n data: data,\n loc: {\n start: { line: 23, column: 0 },\n end: { line: 87, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '')\n );\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Observable<HttpHeaders> => {\\n\treturn forkJoin({\\n\t\t// @ts-ignore\\n\t\ttoken: resolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tusername: resolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tpassword: resolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tadditionalHeaders: resolve(options, config.HEADERS),\\n\t}).pipe(\\n\t\tmap(({ token, username, password, additionalHeaders }) => {\\n\t\t\tconst headers = Object.entries({\\n\t\t\t\tAccept: 'application/json',\\n\t\t\t\t...additionalHeaders,\\n\t\t\t\t...options.headers,\\n\t\t\t})\\n\t\t\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t\t\t.reduce((headers, [key, value]) => ({\\n\t\t\t\t\t...headers,\\n\t\t\t\t\t[key]: String(value),\\n\t\t\t\t}), {} as Record<string, string>);\\n\\n\t\t\tif (isStringWithValue(token)) {\\n\t\t\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t\t\t}\\n\\n\t\t\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\t\t\tconst credentials = base64(`${username}:${password}`);\\n\t\t\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t\t\t}\\n\\n\t\t\tif (options.body !== undefined) {\\n\t\t\t\tif (options.mediaType) {\\n\t\t\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t\t\t} else if (isBlob(options.body)) {\\n\t\t\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t\t\t} else if (isString(options.body)) {\\n\t\t\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t\t\t} else if (!isFormData(options.body)) {\\n\t\t\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t\t\t}\\n\t\t\t}\\n\\n\t\t\treturn new HttpHeaders(headers);\\n\t\t}),\\n\t);\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body) {\\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\\n\t\t\treturn options.body;\\n\t\t} else {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseBody = <T>(response: HttpResponse<T>): T | undefined => {\\n\tif (response.status !== 204 && response.body !== null) {\\n\t\treturn response.body;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = <T>(response: HttpResponse<T>, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst value = response.headers.get(responseHeader);\\n\t\tif (isString(value)) {\\n\t\t\treturn value;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"import { HttpClient, HttpHeaders } from '@angular/common/http';\\nimport type { HttpResponse, HttpErrorResponse } from '@angular/common/http';\\nimport { forkJoin, of, throwError } from 'rxjs';\\nimport { catchError, map, switchMap } from 'rxjs/operators';\\nimport type { Observable } from 'rxjs';\\n\\nimport { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getHeaders'),\n depth0,\n {\n name: 'angular/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getRequestBody'),\n depth0,\n {\n name: 'angular/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/sendRequest'),\n depth0,\n {\n name: 'angular/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getResponseHeader'),\n depth0,\n {\n name: 'angular/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getResponseBody'),\n depth0,\n {\n name: 'angular/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param http The Angular HTTP client\\n * @param options The request options from the service\\n * @returns Observable<T>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, http: HttpClient, options: ApiRequestOptions<T>): Observable<T> => {\\n\tconst url = getUrl(config, options);\\n\tconst formData = getFormData(options);\\n\tconst body = getRequestBody(options);\\n\\n\treturn getHeaders(config, options).pipe(\\n\t\tswitchMap(headers => {\\n\t\t\treturn sendRequest<T>(config, options, http, url, body, formData, headers);\\n\t\t}),\\n\t\tswitchMap(async response => {\\n\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\tresponse = await fn(response);\\n\t\t\t}\\n\t\t\tconst responseBody = getResponseBody(response);\\n\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\tlet transformedBody = responseBody;\\n\t\t\tif (options.responseTransformer && response.ok) {\\n\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t}\\n\\n\t\t\treturn {\\n\t\t\t\turl,\\n\t\t\t\tok: response.ok,\\n\t\t\t\tstatus: response.status,\\n\t\t\t\tstatusText: response.statusText,\\n\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t} as ApiResult;\\n\t\t}),\\n\t\tcatchError((error: HttpErrorResponse) => {\\n\t\t\tif (!error.status) {\\n\t\t\t\treturn throwError(() => error);\\n\t\t\t}\\n\t\t\treturn of({\\n\t\t\t\turl,\\n\t\t\t\tok: error.ok,\\n\t\t\t\tstatus: error.status,\\n\t\t\t\tstatusText: error.statusText,\\n\t\t\t\tbody: error.error ?? error.statusText,\\n\t\t\t} as ApiResult);\\n\t\t}),\\n\t\tmap(result => {\\n\t\t\tcatchErrorCodes(options, result);\\n\t\t\treturn result.body as T;\\n\t\t}),\\n\t\tcatchError((error: ApiError) => {\\n\t\t\treturn throwError(() => error);\\n\t\t}),\\n\t);\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const sendRequest = <T>(\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions<T>,\\n\thttp: HttpClient,\\n\turl: string,\\n\tbody: unknown,\\n\tformData: FormData | undefined,\\n\theaders: HttpHeaders\\n): Observable<HttpResponse<T>> => {\\n\treturn http.request<T>(options.method, url, {\\n\t\theaders,\\n\t\tbody: body ?? formData,\\n\t\twithCredentials: config.WITH_CREDENTIALS,\\n\t\tobserve: 'response',\\n\t});\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"import type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\n\\nexport class ApiError extends Error {\\n\tpublic readonly url: string;\\n\tpublic readonly status: number;\\n\tpublic readonly statusText: string;\\n\tpublic readonly body: unknown;\\n\tpublic readonly request: ApiRequestOptions;\\n\\n\tconstructor(request: ApiRequestOptions, response: ApiResult, message: string) {\\n\t\tsuper(message);\\n\\n\t\tthis.name = 'ApiError';\\n\t\tthis.url = response.url;\\n\t\tthis.status = response.status;\\n\t\tthis.statusText = response.statusText;\\n\t\tthis.body = response.body;\\n\t\tthis.request = request;\\n\t}\\n}\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export type ApiRequestOptions<T = unknown> = {\\n\treadonly body?: any;\\n\treadonly cookies?: Record<string, unknown>;\\n\treadonly errors?: Record<number | string, string>;\\n\treadonly formData?: Record<string, unknown> | any[] | Blob | File;\\n\treadonly headers?: Record<string, unknown>;\\n\treadonly mediaType?: string;\\n\treadonly method:\\n\t\t| 'DELETE'\\n\t\t| 'GET'\\n\t\t| 'HEAD'\\n\t\t| 'OPTIONS'\\n\t\t| 'PATCH'\\n\t\t| 'POST'\\n\t\t| 'PUT';\\n\treadonly path?: Record<string, unknown>;\\n\treadonly query?: Record<string, unknown>;\\n\treadonly responseHeader?: string;\\n\treadonly responseTransformer?: (data: unknown) => Promise<T>;\\n\treadonly url: string;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export type ApiResult<TData = any> = {\\n\treadonly body: TData;\\n\treadonly ok: boolean;\\n\treadonly status: number;\\n\treadonly statusText: string;\\n\treadonly url: string;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = async <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Promise<Record<string, string>> => {\\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.HEADERS),\\n\t]);\\n\\n\tconst headers = Object.entries({\\n\t\tAccept: 'application/json',\\n\t\t...additionalHeaders,\\n\t\t...options.headers,\\n\t})\\n\t.filter(([, value]) => value !== undefined && value !== null)\\n\t.reduce((headers, [key, value]) => ({\\n\t\t...headers,\\n\t\t[key]: String(value),\\n\t}), {} as Record<string, string>);\\n\\n\tif (isStringWithValue(token)) {\\n\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t}\\n\\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\tconst credentials = base64(`${username}:${password}`);\\n\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t}\\n\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t} else if (isBlob(options.body)) {\\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t} else if (isString(options.body)) {\\n\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t} else if (!isFormData(options.body)) {\\n\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t}\\n\t} else if (options.formData !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t}\\n\t}\\n\\n\treturn headers;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body) {\\n\t\treturn options.body;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseBody = (response: AxiosResponse<unknown>): unknown => {\\n\tif (response.status !== 204) {\\n\t\treturn response.data;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = (response: AxiosResponse<unknown>, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst content = response.headers[responseHeader];\\n\t\tif (isString(content)) {\\n\t\t\treturn content;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return 'ApiResult<T>';\n },\n 3: function (container, depth0, helpers, partials, data) {\n return 'T';\n },\n 5: function (container, depth0, helpers, partials, data) {\n return 'result.body';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return 'result';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"import axios from 'axios';\\nimport type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios';\\n\\nimport { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport { CancelablePromise } from './CancelablePromise';\\nimport type { OnCancel } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isSuccess'),\n depth0,\n {\n name: 'functions/isSuccess',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getHeaders'),\n depth0,\n {\n name: 'axios/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getRequestBody'),\n depth0,\n {\n name: 'axios/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/sendRequest'),\n depth0,\n {\n name: 'axios/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getResponseHeader'),\n depth0,\n {\n name: 'axios/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getResponseBody'),\n depth0,\n {\n name: 'axios/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param options The request options from the service\\n * @param axiosClient The axios client instance to use\\n * @returns CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 64, column: 30 },\n end: { line: 64, column: 116 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>, axiosClient: AxiosInstance = axios): CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 67, column: 136 },\n end: { line: 67, column: 222 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '> => {\\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\\n\t\ttry {\\n\t\t\tconst url = getUrl(config, options);\\n\t\t\tconst formData = getFormData(options);\\n\t\t\tconst body = getRequestBody(options);\\n\t\t\tconst headers = await getHeaders(config, options);\\n\\n\t\t\tif (!onCancel.isCancelled) {\\n\t\t\t\tlet response = await sendRequest<T>(config, options, url, body, formData, headers, onCancel, axiosClient);\\n\\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\t\tresponse = await fn(response);\\n\t\t\t\t}\\n\\n\t\t\t\tconst responseBody = getResponseBody(response);\\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\t\tlet transformedBody = responseBody;\\n\t\t\t\tif (options.responseTransformer && isSuccess(response.status)) {\\n\t\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t\t}\\n\\n\t\t\t\tconst result: ApiResult = {\\n\t\t\t\t\turl,\\n\t\t\t\t\tok: isSuccess(response.status),\\n\t\t\t\t\tstatus: response.status,\\n\t\t\t\t\tstatusText: response.statusText,\\n\t\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t\t};\\n\\n\t\t\t\tcatchErrorCodes(options, result);\\n\\n\t\t\t\tresolve(' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'body',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.program(7, data, 0),\n data: data,\n loc: {\n start: { line: 100, column: 12 },\n end: { line: 100, column: 98 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ');\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\treject(error);\\n\t\t}\\n\t});\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const sendRequest = async <T>(\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions<T>,\\n\turl: string,\\n\tbody: unknown,\\n\tformData: FormData | undefined,\\n\theaders: Record<string, string>,\\n\tonCancel: OnCancel,\\n\taxiosClient: AxiosInstance\\n): Promise<AxiosResponse<T>> => {\\n\tconst controller = new AbortController();\\n\\n\tlet requestConfig: AxiosRequestConfig = {\\n\t\tdata: body ?? formData,\\n\t\theaders,\\n\t\tmethod: options.method,\\n\t\tsignal: controller.signal,\\n\t\turl,\\n\t\twithCredentials: config.WITH_CREDENTIALS,\\n\t};\\n\\n\tonCancel(() => controller.abort());\\n\\n\tfor (const fn of config.interceptors.request._fns) {\\n\t\trequestConfig = await fn(requestConfig);\\n\t}\\n\\n\ttry {\\n\t\treturn await axiosClient.request(requestConfig);\\n\t} catch (error) {\\n\t\tconst axiosError = error as AxiosError<T>;\\n\t\tif (axiosError.response) {\\n\t\t\treturn axiosError.response;\\n\t\t}\\n\t\tthrow error;\\n\t}\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import type { HttpClient } from '@angular/common/http';\\nimport type { Observable } from 'rxjs';\\n\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return \"import type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { CancelablePromise } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\";\n },\n 5: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(\\n\t\tpublic readonly config: OpenAPIConfig,\\n\t\tpublic readonly http: HttpClient,\\n\t) {}\\n';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(public readonly config: OpenAPIConfig) {}\\n';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return '\tpublic abstract request<T>(options: ApiRequestOptions<T>): Observable<T>;\\n';\n },\n 11: function (container, depth0, helpers, partials, data) {\n return '\tpublic abstract request<T>(options: ApiRequestOptions<T>): CancelablePromise<T>;\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 11, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\nexport abstract class BaseHttpRequest {\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.program(7, data, 0),\n data: data,\n loc: {\n start: { line: 15, column: 1 },\n end: { line: 22, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(9, data, 0),\n inverse: container.program(11, data, 0),\n data: data,\n loc: {\n start: { line: 24, column: 1 },\n end: { line: 28, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '}'\n );\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export class CancelError extends Error {\\n\tconstructor(message: string) {\\n\t\tsuper(message);\\n\t\tthis.name = 'CancelError';\\n\t}\\n\\n\tpublic get isCancelled(): boolean {\\n\t\treturn true;\\n\t}\\n}\\n\\nexport interface OnCancel {\\n\treadonly isResolved: boolean;\\n\treadonly isRejected: boolean;\\n\treadonly isCancelled: boolean;\\n\\n\t(cancelHandler: () => void): void;\\n}\\n\\nexport class CancelablePromise<T> implements Promise<T> {\\n\tprivate _isResolved: boolean;\\n\tprivate _isRejected: boolean;\\n\tprivate _isCancelled: boolean;\\n\treadonly cancelHandlers: (() => void)[];\\n\treadonly promise: Promise<T>;\\n\tprivate _resolve?: (value: T | PromiseLike<T>) => void;\\n\tprivate _reject?: (reason?: unknown) => void;\\n\\n\tconstructor(\\n\t\texecutor: (\\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\\n\t\t\treject: (reason?: unknown) => void,\\n\t\t\tonCancel: OnCancel\\n\t\t) => void\\n\t) {\\n\t\tthis._isResolved = false;\\n\t\tthis._isRejected = false;\\n\t\tthis._isCancelled = false;\\n\t\tthis.cancelHandlers = [];\\n\t\tthis.promise = new Promise<T>((resolve, reject) => {\\n\t\t\tthis._resolve = resolve;\\n\t\t\tthis._reject = reject;\\n\\n\t\t\tconst onResolve = (value: T | PromiseLike<T>): void => {\\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\t\t\treturn;\\n\t\t\t\t}\\n\t\t\t\tthis._isResolved = true;\\n\t\t\t\tif (this._resolve) this._resolve(value);\\n\t\t\t};\\n\\n\t\t\tconst onReject = (reason?: unknown): void => {\\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\t\t\treturn;\\n\t\t\t\t}\\n\t\t\t\tthis._isRejected = true;\\n\t\t\t\tif (this._reject) this._reject(reason);\\n\t\t\t};\\n\\n\t\t\tconst onCancel = (cancelHandler: () => void): void => {\\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\t\t\treturn;\\n\t\t\t\t}\\n\t\t\t\tthis.cancelHandlers.push(cancelHandler);\\n\t\t\t};\\n\\n\t\t\tObject.defineProperty(onCancel, 'isResolved', {\\n\t\t\t\tget: (): boolean => this._isResolved,\\n\t\t\t});\\n\\n\t\t\tObject.defineProperty(onCancel, 'isRejected', {\\n\t\t\t\tget: (): boolean => this._isRejected,\\n\t\t\t});\\n\\n\t\t\tObject.defineProperty(onCancel, 'isCancelled', {\\n\t\t\t\tget: (): boolean => this._isCancelled,\\n\t\t\t});\\n\\n\t\t\treturn executor(onResolve, onReject, onCancel as OnCancel);\\n\t\t});\\n\t}\\n\\n\tget [Symbol.toStringTag]() {\\n\t\treturn \\\"Cancellable Promise\\\";\\n\t}\\n\\n\tpublic then<TResult1 = T, TResult2 = never>(\\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\\n\t): Promise<TResult1 | TResult2> {\\n\t\treturn this.promise.then(onFulfilled, onRejected);\\n\t}\\n\\n\tpublic catch<TResult = never>(\\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\\n\t): Promise<T | TResult> {\\n\t\treturn this.promise.catch(onRejected);\\n\t}\\n\\n\tpublic finally(onFinally?: (() => void) | null): Promise<T> {\\n\t\treturn this.promise.finally(onFinally);\\n\t}\\n\\n\tpublic cancel(): void {\\n\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\treturn;\\n\t\t}\\n\t\tthis._isCancelled = true;\\n\t\tif (this.cancelHandlers.length) {\\n\t\t\ttry {\\n\t\t\t\tfor (const cancelHandler of this.cancelHandlers) {\\n\t\t\t\t\tcancelHandler();\\n\t\t\t\t}\\n\t\t\t} catch (error) {\\n\t\t\t\tconsole.warn('Cancellation threw an error', error);\\n\t\t\t\treturn;\\n\t\t\t}\\n\t\t}\\n\t\tthis.cancelHandlers.length = 0;\\n\t\tif (this._reject) this._reject(new CancelError('Request aborted'));\\n\t}\\n\\n\tpublic get isCancelled(): boolean {\\n\t\treturn this._isCancelled;\\n\t}\\n}\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = async <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Promise<Headers> => {\\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.HEADERS),\\n\t]);\\n\\n\tconst headers = Object.entries({\\n\t\tAccept: 'application/json',\\n\t\t...additionalHeaders,\\n\t\t...options.headers,\\n\t})\\n\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t.reduce((headers, [key, value]) => ({\\n\t\t\t...headers,\\n\t\t\t[key]: String(value),\\n\t\t}), {} as Record<string, string>);\\n\\n\tif (isStringWithValue(token)) {\\n\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t}\\n\\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\tconst credentials = base64(`${username}:${password}`);\\n\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t}\\n\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t} else if (isBlob(options.body)) {\\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t} else if (isString(options.body)) {\\n\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t} else if (!isFormData(options.body)) {\\n\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t}\\n\t}\\n\\n\treturn new Headers(headers);\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\\n\t\t\treturn options.body;\\n\t\t} else {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getResponseBody = async (response: Response): Promise<unknown> => {\\n\tif (response.status !== 204) {\\n\t\ttry {\\n\t\t\tconst contentType = response.headers.get('Content-Type');\\n\t\t\tif (contentType) {\\n\t\t\t\tconst binaryTypes = ['application/octet-stream', 'application/pdf', 'application/zip', 'audio/', 'image/', 'video/'];\\n\t\t\t\tif (contentType.includes('application/json') || contentType.includes('+json')) {\\n\t\t\t\t\treturn await response.json();\\n\t\t\t\t} else if (binaryTypes.some(type => contentType.includes(type))) {\\n\t\t\t\t\treturn await response.blob();\\n\t\t\t\t} else if (contentType.includes('multipart/form-data')) {\\n\t\t\t\t\treturn await response.formData();\\n\t\t\t\t} else if (contentType.includes('text/')) {\\n\t\t\t\t\treturn await response.text();\\n\t\t\t\t}\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\tconsole.error(error);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst content = response.headers.get(responseHeader);\\n\t\tif (isString(content)) {\\n\t\t\treturn content;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import fetch, { FormData, Headers } from 'node-fetch';\\nimport type { RequestInit, Response } from 'node-fetch';\\n\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return 'ApiResult<T>';\n },\n 5: function (container, depth0, helpers, partials, data) {\n return 'T';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return 'result.body';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return 'result';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 5, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n \"import { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport { CancelablePromise } from './CancelablePromise';\\nimport type { OnCancel } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getHeaders'),\n depth0,\n {\n name: 'fetch/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getRequestBody'),\n depth0,\n {\n name: 'fetch/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/sendRequest'),\n depth0,\n {\n name: 'fetch/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getResponseHeader'),\n depth0,\n {\n name: 'fetch/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getResponseBody'),\n depth0,\n {\n name: 'fetch/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param options The request options from the service\\n * @returns CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.program(5, data, 0),\n data: data,\n loc: {\n start: { line: 62, column: 30 },\n end: { line: 62, column: 116 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.program(5, data, 0),\n data: data,\n loc: {\n start: { line: 65, column: 100 },\n end: { line: 65, column: 186 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '> => {\\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\\n\t\ttry {\\n\t\t\tconst url = getUrl(config, options);\\n\t\t\tconst formData = getFormData(options);\\n\t\t\tconst body = getRequestBody(options);\\n\t\t\tconst headers = await getHeaders(config, options);\\n\\n\t\t\tif (!onCancel.isCancelled) {\\n\t\t\t\tlet response = await sendRequest(config, options, url, body, formData, headers, onCancel);\\n\\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\t\tresponse = await fn(response);\\n\t\t\t\t}\\n\\n\t\t\t\tconst responseBody = await getResponseBody(response);\\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\t\tlet transformedBody = responseBody;\\n\t\t\t\tif (options.responseTransformer && response.ok) {\\n\t\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t\t}\\n\\n\t\t\t\tconst result: ApiResult = {\\n\t\t\t\t\turl,\\n\t\t\t\t\tok: response.ok,\\n\t\t\t\t\tstatus: response.status,\\n\t\t\t\t\tstatusText: response.statusText,\\n\t\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t\t};\\n\\n\t\t\t\tcatchErrorCodes(options, result);\\n\\n\t\t\t\tresolve(' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'body',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.program(9, data, 0),\n data: data,\n loc: {\n start: { line: 98, column: 12 },\n end: { line: 98, column: 98 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ');\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\treject(error);\\n\t\t}\\n\t});\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return '\tif (config.WITH_CREDENTIALS) {\\n\t\trequest.credentials = config.CREDENTIALS;\\n\t}\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n 'export const sendRequest = async (\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions,\\n\turl: string,\\n\tbody: any,\\n\tformData: FormData | undefined,\\n\theaders: Headers,\\n\tonCancel: OnCancel\\n): Promise<Response> => {\\n\tconst controller = new AbortController();\\n\\n\tlet request: RequestInit = {\\n\t\theaders,\\n\t\tbody: body ?? formData,\\n\t\tmethod: options.method,\\n\t\tsignal: controller.signal,\\n\t};\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/fetch',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 19, column: 1 },\n end: { line: 23, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n\tfor (const fn of config.interceptors.request._fns) {\\n\t\trequest = await fn(request);\\n\t}\\n\\n\tonCancel(() => controller.abort());\\n\\n\treturn await fetch(url, request);\\n};'\n );\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const base64 = (str: string): string => {\\n\ttry {\\n\t\treturn btoa(str);\\n\t} catch (err) {\\n\t\t// @ts-ignore\\n\t\treturn Buffer.from(str).toString('base64');\\n\t}\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\\n\tconst errors: Record<number, string> = {\\n\t\t400: 'Bad Request',\\n\t\t401: 'Unauthorized',\\n\t\t402: 'Payment Required',\\n\t\t403: 'Forbidden',\\n\t\t404: 'Not Found',\\n\t\t405: 'Method Not Allowed',\\n\t\t406: 'Not Acceptable',\\n\t\t407: 'Proxy Authentication Required',\\n\t\t408: 'Request Timeout',\\n\t\t409: 'Conflict',\\n\t\t410: 'Gone',\\n\t\t411: 'Length Required',\\n\t\t412: 'Precondition Failed',\\n\t\t413: 'Payload Too Large',\\n\t\t414: 'URI Too Long',\\n\t\t415: 'Unsupported Media Type',\\n\t\t416: 'Range Not Satisfiable',\\n\t\t417: 'Expectation Failed',\\n\t\t418: 'Im a teapot',\\n\t\t421: 'Misdirected Request',\\n\t\t422: 'Unprocessable Content',\\n\t\t423: 'Locked',\\n\t\t424: 'Failed Dependency',\\n\t\t425: 'Too Early',\\n\t\t426: 'Upgrade Required',\\n\t\t428: 'Precondition Required',\\n\t\t429: 'Too Many Requests',\\n\t\t431: 'Request Header Fields Too Large',\\n\t\t451: 'Unavailable For Legal Reasons',\\n\t\t500: 'Internal Server Error',\\n\t\t501: 'Not Implemented',\\n\t\t502: 'Bad Gateway',\\n\t\t503: 'Service Unavailable',\\n\t\t504: 'Gateway Timeout',\\n\t\t505: 'HTTP Version Not Supported',\\n\t\t506: 'Variant Also Negotiates',\\n\t\t507: 'Insufficient Storage',\\n\t\t508: 'Loop Detected',\\n\t\t510: 'Not Extended',\\n\t\t511: 'Network Authentication Required',\\n\t\t...options.errors,\\n\t}\\n\\n\tconst error = errors[result.status];\\n\tif (error) {\\n\t\tthrow new ApiError(options, result, error);\\n\t}\\n\\n\tif (!result.ok) {\\n\t\tconst errorStatus = result.status ?? 'unknown';\\n\t\tconst errorStatusText = result.statusText ?? 'unknown';\\n\t\tconst errorBody = (() => {\\n\t\t\ttry {\\n\t\t\t\treturn JSON.stringify(result.body, null, 2);\\n\t\t\t} catch (e) {\\n\t\t\t\treturn undefined;\\n\t\t\t}\\n\t\t})();\\n\\n\t\tthrow new ApiError(options, result,\\n\t\t\t`Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\\n\t\t);\\n\t}\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getFormData = (options: ApiRequestOptions): FormData | undefined => {\\n\tif (options.formData) {\\n\t\tconst formData = new FormData();\\n\\n\t\tconst process = (key: string, value: unknown) => {\\n\t\t\tif (isString(value) || isBlob(value)) {\\n\t\t\t\tformData.append(key, value);\\n\t\t\t} else {\\n\t\t\t\tformData.append(key, JSON.stringify(value));\\n\t\t\t}\\n\t\t};\\n\\n\t\tObject.entries(options.formData)\\n\t\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t\t.forEach(([key, value]) => {\\n\t\t\t\tif (Array.isArray(value)) {\\n\t\t\t\t\tvalue.forEach(v => process(key, v));\\n\t\t\t\t} else {\\n\t\t\t\t\tprocess(key, value);\\n\t\t\t\t}\\n\t\t\t});\\n\\n\t\treturn formData;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getQueryString = (params: Record<string, unknown>): string => {\\n\tconst qs: string[] = [];\\n\\n\tconst append = (key: string, value: unknown) => {\\n\t\tqs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\\n\t};\\n\\n\tconst encodePair = (key: string, value: unknown) => {\\n\t\tif (value === undefined || value === null) {\\n\t\t\treturn;\\n\t\t}\\n\\n\t\tif (value instanceof Date) {\\n\t\t\tappend(key, value.toISOString());\\n\t\t} else if (Array.isArray(value)) {\\n\t\t\tvalue.forEach(v => encodePair(key, v));\\n\t\t} else if (typeof value === 'object') {\\n\t\t\tObject.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v));\\n\t\t} else {\\n\t\t\tappend(key, value);\\n\t\t}\\n\t};\\n\\n\tObject.entries(params).forEach(([key, value]) => encodePair(key, value));\\n\\n\treturn qs.length ? `?${qs.join('&')}` : '';\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\\n\tconst encoder = config.ENCODE_PATH || encodeURI;\\n\\n\tconst path = options.url\\n\t\t.replace('{api-version}', config.VERSION)\\n\t\t.replace(/{(.*?)}/g, (substring: string, group: string) => {\\n\t\t\tif (options.path?.hasOwnProperty(group)) {\\n\t\t\t\treturn encoder(String(options.path[group]));\\n\t\t\t}\\n\t\t\treturn substring;\\n\t\t});\\n\\n\tconst url = config.BASE + path;\\n\treturn options.query ? url + getQueryString(options.query) : url;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const isBlob = (value: any): value is Blob => {\\n\treturn value instanceof Blob;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const isFormData = (value: unknown): value is FormData => {\\n\treturn value instanceof FormData;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const isString = (value: unknown): value is string => {\\n\treturn typeof value === 'string';\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const isStringWithValue = (value: unknown): value is string => {\\n\treturn isString(value) && value !== '';\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const isSuccess = (status: number): boolean => {\\n\treturn status >= 200 && status < 300;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"type Resolver<T> = (options: ApiRequestOptions<T>) => Promise<T>;\\n\\nexport const resolve = async <T>(options: ApiRequestOptions<T>, resolver?: T | Resolver<T>): Promise<T | undefined> => {\\n\tif (typeof resolver === 'function') {\\n\t\treturn (resolver as Resolver<T>)(options);\\n\t}\\n\treturn resolver;\\n};\";\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import { Inject, Injectable } from '@angular/core';\\nimport { HttpClient } from '@angular/common/http';\\nimport type { Observable } from 'rxjs';\\n\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport { BaseHttpRequest } from './BaseHttpRequest';\\nimport type { OpenAPIConfig } from './OpenAPI';\\nimport { OpenAPI } from './OpenAPI';\\nimport { request as __request } from './request';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return \"import type { ApiRequestOptions } from './ApiRequestOptions';\\nimport { BaseHttpRequest } from './BaseHttpRequest';\\nimport type { CancelablePromise } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\nimport { request as __request } from './request';\\n\";\n },\n 5: function (container, depth0, helpers, partials, data) {\n return '@Injectable()\\n';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(\\n\t\t@Inject(OpenAPI)\\n\t\tconfig: OpenAPIConfig,\\n\t\thttp: HttpClient,\\n\t) {\\n\t\tsuper(config, http);\\n\t}\\n';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(config: OpenAPIConfig) {\\n\t\tsuper(config);\\n\t}\\n';\n },\n 11: function (container, depth0, helpers, partials, data) {\n return '\t/**\\n\t * Request method\\n\t * @param options The request options from the service\\n\t * @returns Observable<T>\\n\t * @throws ApiError\\n\t */\\n\tpublic override request<T>(options: ApiRequestOptions<T>): Observable<T> {\\n\t\treturn __request(this.config, this.http, options);\\n\t}\\n';\n },\n 13: function (container, depth0, helpers, partials, data) {\n return '\t/**\\n\t * Request method\\n\t * @param options The request options from the service\\n\t * @returns CancelablePromise<T>\\n\t * @throws ApiError\\n\t */\\n\tpublic override request<T>(options: ApiRequestOptions<T>): CancelablePromise<T> {\\n\t\treturn __request(this.config, options);\\n\t}\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 17, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 19, column: 0 },\n end: { line: 21, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '') +\n 'export class ' +\n ((stack1 = container.lambda(\n container.strict(depth0, 'httpRequest', {\n start: { line: 22, column: 15 },\n end: { line: 22, column: 26 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n ' extends BaseHttpRequest {\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.program(9, data, 0),\n data: data,\n loc: {\n start: { line: 24, column: 1 },\n end: { line: 36, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(11, data, 0),\n inverse: container.program(13, data, 0),\n data: data,\n loc: {\n start: { line: 38, column: 1 },\n end: { line: 58, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '}'\n );\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import type { HttpResponse } from '@angular/common/http';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return \"import type { AxiosRequestConfig, AxiosResponse } from 'axios';\\n\";\n },\n 5: function (container, depth0, helpers, partials, data) {\n return \"import type { RequestInit, Response } from 'node-fetch';\\n\";\n },\n 7: function (container, depth0, helpers, partials, data) {\n return '\t\tresponse: Interceptors<HttpResponse<any>>;\\n';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: Interceptors<AxiosRequestConfig>;\\n\t\tresponse: Interceptors<AxiosResponse>;\\n';\n },\n 11: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: Interceptors<RequestInit>;\\n\t\tresponse: Interceptors<Response>;\\n';\n },\n 13: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: Interceptors<XMLHttpRequest>;\\n\t\tresponse: Interceptors<XMLHttpRequest>;\\n';\n },\n 15: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: new Interceptors(),\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.strict,\n alias3 = container.lambda,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 3, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/axios',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 4, column: 0 }, end: { line: 6, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 7, column: 0 }, end: { line: 9, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n \"import type { ApiRequestOptions } from './ApiRequestOptions';\\n\\ntype Headers = Record<string, string>;\\ntype Middleware<T> = (value: T) => T | Promise<T>;\\ntype Resolver<T> = (options: ApiRequestOptions<T>) => Promise<T>;\\n\\nexport class Interceptors<T> {\\n _fns: Middleware<T>[];\\n\\n constructor() {\\n this._fns = [];\\n }\\n\\n eject(fn: Middleware<T>): void {\\n const index = this._fns.indexOf(fn);\\n if (index !== -1) {\\n this._fns = [...this._fns.slice(0, index), ...this._fns.slice(index + 1)];\\n }\\n }\\n\\n use(fn: Middleware<T>): void {\\n this._fns = [...this._fns, fn];\\n }\\n}\\n\\nexport type OpenAPIConfig = {\\n\tBASE: string;\\n\tCREDENTIALS: 'include' | 'omit' | 'same-origin';\\n\tENCODE_PATH?: ((path: string) => string) | undefined;\\n\tHEADERS?: Headers | Resolver<Headers> | undefined;\\n\tPASSWORD?: string | Resolver<string> | undefined;\\n\tTOKEN?: string | Resolver<string> | undefined;\\n\tUSERNAME?: string | Resolver<string> | undefined;\\n\tVERSION: string;\\n\tWITH_CREDENTIALS: boolean;\\n\tinterceptors: {\\n\" +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 46, column: 2 },\n end: { line: 48, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/axios',\n {\n name: 'equals',\n hash: {},\n fn: container.program(9, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 49, column: 2 },\n end: { line: 52, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/fetch',\n {\n name: 'equals',\n hash: {},\n fn: container.program(11, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 53, column: 2 },\n end: { line: 56, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(11, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 57, column: 2 },\n end: { line: 60, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/xhr',\n {\n name: 'equals',\n hash: {},\n fn: container.program(13, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 61, column: 2 },\n end: { line: 64, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n \"\t};\\n};\\n\\nexport const OpenAPI: OpenAPIConfig = {\\n\tBASE: '\" +\n ((stack1 = alias3(\n alias2(depth0, 'server', {\n start: { line: 69, column: 11 },\n end: { line: 69, column: 17 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\tCREDENTIALS: 'include',\\n\tENCODE_PATH: undefined,\\n\tHEADERS: undefined,\\n\tPASSWORD: undefined,\\n\tTOKEN: undefined,\\n\tUSERNAME: undefined,\\n\tVERSION: '\" +\n ((stack1 = alias3(\n alias2(depth0, 'version', {\n start: { line: 76, column: 14 },\n end: { line: 76, column: 21 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\tWITH_CREDENTIALS: false,\\n\tinterceptors: {\\n\" +\n ((stack1 = lookupProperty(helpers, 'notEquals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'notEquals',\n hash: {},\n fn: container.program(15, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 79, column: 2 },\n end: { line: 81, column: 16 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\t\tresponse: new Interceptors(),\\n\t},\\n};'\n );\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/request'),\n depth0,\n {\n name: 'angular/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n 3: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/request'),\n depth0,\n {\n name: 'axios/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n 5: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/request'),\n depth0,\n {\n name: 'fetch/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n 7: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/request'),\n depth0,\n {\n name: 'xhr/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 87 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/axios',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 2, column: 0 }, end: { line: 2, column: 83 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/fetch',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 3, column: 0 }, end: { line: 3, column: 83 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 4, column: 0 }, end: { line: 4, column: 82 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/xhr',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 5, column: 0 }, end: { line: 5, column: 79 } },\n },\n )) != null\n ? stack1\n : '')\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = async <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Promise<Headers> => {\\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.HEADERS),\\n\t]);\\n\\n\tconst headers = Object.entries({\\n\t\tAccept: 'application/json',\\n\t\t...additionalHeaders,\\n\t\t...options.headers,\\n\t})\\n\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t.reduce((headers, [key, value]) => ({\\n\t\t\t...headers,\\n\t\t\t[key]: String(value),\\n\t\t}), {} as Record<string, string>);\\n\\n\tif (isStringWithValue(token)) {\\n\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t}\\n\\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\tconst credentials = base64(`${username}:${password}`);\\n\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t}\\n\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t} else if (isBlob(options.body)) {\\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t} else if (isString(options.body)) {\\n\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t} else if (!isFormData(options.body)) {\\n\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t}\\n\t}\\n\\n\treturn new Headers(headers);\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\\n\t\t\treturn options.body;\\n\t\t} else {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getResponseBody = (xhr: XMLHttpRequest): unknown => {\\n\tif (xhr.status !== 204) {\\n\t\ttry {\\n\t\t\tconst contentType = xhr.getResponseHeader('Content-Type');\\n\t\t\tif (contentType) {\\n\t\t\t\tif (contentType.includes('application/json') || contentType.includes('+json')) {\\n\t\t\t\t\treturn JSON.parse(xhr.responseText);\\n\t\t\t\t} else {\\n\t\t\t\t\treturn xhr.responseText;\\n\t\t\t\t}\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\tconsole.error(error);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = (xhr: XMLHttpRequest, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst content = xhr.getResponseHeader(responseHeader);\\n\t\tif (isString(content)) {\\n\t\t\treturn content;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return 'ApiResult<T>';\n },\n 3: function (container, depth0, helpers, partials, data) {\n return 'T';\n },\n 5: function (container, depth0, helpers, partials, data) {\n return 'result.body';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return 'result';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"import { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport { CancelablePromise } from './CancelablePromise';\\nimport type { OnCancel } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isSuccess'),\n depth0,\n {\n name: 'functions/isSuccess',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getHeaders'),\n depth0,\n {\n name: 'fetch/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/getRequestBody'),\n depth0,\n {\n name: 'xhr/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/sendRequest'),\n depth0,\n {\n name: 'xhr/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/getResponseHeader'),\n depth0,\n {\n name: 'xhr/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/getResponseBody'),\n depth0,\n {\n name: 'xhr/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param options The request options from the service\\n * @returns CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 60, column: 30 },\n end: { line: 60, column: 116 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 63, column: 100 },\n end: { line: 63, column: 186 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '> => {\\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\\n\t\ttry {\\n\t\t\tconst url = getUrl(config, options);\\n\t\t\tconst formData = getFormData(options);\\n\t\t\tconst body = getRequestBody(options);\\n\t\t\tconst headers = await getHeaders(config, options);\\n\\n\t\t\tif (!onCancel.isCancelled) {\\n\t\t\t\tlet response = await sendRequest(config, options, url, body, formData, headers, onCancel);\\n\\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\t\tresponse = await fn(response);\\n\t\t\t\t}\\n\\n\t\t\t\tconst responseBody = getResponseBody(response);\\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\t\tlet transformedBody = responseBody;\\n\t\t\t\tif (options.responseTransformer && isSuccess(response.status)) {\\n\t\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t\t}\\n\\n\t\t\t\tconst result: ApiResult = {\\n\t\t\t\t\turl,\\n\t\t\t\t\tok: isSuccess(response.status),\\n\t\t\t\t\tstatus: response.status,\\n\t\t\t\t\tstatusText: response.statusText,\\n\t\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t\t};\\n\\n\t\t\t\tcatchErrorCodes(options, result);\\n\\n\t\t\t\tresolve(' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'body',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.program(7, data, 0),\n data: data,\n loc: {\n start: { line: 96, column: 12 },\n end: { line: 96, column: 98 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ');\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\treject(error);\\n\t\t}\\n\t});\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const sendRequest = async (\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions,\\n\turl: string,\\n\tbody: any,\\n\tformData: FormData | undefined,\\n\theaders: Headers,\\n\tonCancel: OnCancel\\n): Promise<XMLHttpRequest> => {\\n\tlet xhr = new XMLHttpRequest();\\n\txhr.open(options.method, url, true);\\n\txhr.withCredentials = config.WITH_CREDENTIALS;\\n\\n\theaders.forEach((value, key) => {\\n\t\txhr.setRequestHeader(key, value);\\n\t});\\n\\n\treturn new Promise<XMLHttpRequest>(async (resolve, reject) => {\\n\t\txhr.onload = () => resolve(xhr);\\n\t\txhr.onabort = () => reject(new Error('Request aborted'));\\n\t\txhr.onerror = () => reject(new Error('Network error'));\\n\\n\t\tfor (const fn of config.interceptors.request._fns) {\\n\t\t\txhr = await fn(xhr);\\n\t\t}\\n\\n\t\txhr.send(body ?? formData);\\n\\n\t\tonCancel(() => xhr.abort());\\n\t});\\n};\";\n },\n useData: true,\n};\n","import type { Operation, OperationParameter } from '../openApi';\nimport { sanitizeNamespaceIdentifier } from '../openApi';\nimport { camelCase } from './camelCase';\nimport { getConfig, isLegacyClient } from './config';\nimport { transformTypeKeyName } from './type';\n\nexport const operationFilterFn = (operationKey: string): boolean => {\n const config = getConfig();\n const regexp = config.services.filter\n ? new RegExp(config.services.filter)\n : undefined;\n return !regexp || regexp.test(operationKey);\n};\n\nexport const operationParameterFilterFn = (\n parameter: OperationParameter,\n): boolean => {\n const config = getConfig();\n\n // legacy clients ignore the \"api-version\" param since we do not want to\n // add it as the first/default parameter for each of the service calls\n return !isLegacyClient(config) || parameter.prop !== 'api-version';\n};\n\n/**\n * Convert the input value to a correct operation (method) class name.\n * This will use the operation ID - if available - and otherwise fallback\n * on a generated name from the URL\n */\nexport const operationNameFn = (operation: Omit<Operation, 'name'>): string => {\n const config = getConfig();\n\n if (config.services.operationId && operation.id) {\n return camelCase({\n input: sanitizeNamespaceIdentifier(operation.id),\n });\n }\n\n let urlWithoutPlaceholders = operation.path;\n\n // legacy clients ignore the \"api-version\" param since we do not want to\n // add it as the first/default parameter for each of the service calls\n if (isLegacyClient(config)) {\n urlWithoutPlaceholders = urlWithoutPlaceholders.replace(\n /[^/]*?{api-version}.*?\\//g,\n '',\n );\n }\n\n urlWithoutPlaceholders = urlWithoutPlaceholders\n .replace(/{(.*?)}/g, 'by-$1')\n // replace slashes with hyphens for camelcase method at the end\n .replace(/[/:]/g, '-');\n\n return camelCase({\n input: `${operation.method}-${urlWithoutPlaceholders}`,\n });\n};\n\nexport const operationParameterNameFn = (\n parameter: Omit<OperationParameter, 'name'>,\n): string => {\n const config = getConfig();\n\n return !isLegacyClient(config)\n ? parameter.prop\n : transformTypeKeyName(parameter.prop);\n};\n","const idEnd = (id: string) => `${id}-end`;\n\nconst idLength = (id: string) => `${id}-length`;\n\nconst idStart = (id: string) => `${id}-start`;\n\nexport const Performance = {\n clear: (): void => {\n performance.clearMarks();\n performance.clearMeasures();\n },\n end: (id: string): PerformanceMark => performance.mark(idEnd(id)),\n getEntriesByName: (id: string): PerformanceEntryList =>\n performance.getEntriesByName(idLength(id)),\n measure: (id: string): PerformanceMeasure =>\n performance.measure(idLength(id), idStart(id), idEnd(id)),\n start: (id: string): PerformanceMark => performance.mark(idStart(id)),\n};\n\nexport class PerformanceReport {\n totalMeasure: PerformanceMeasure;\n\n constructor({ totalMark }: { totalMark: string }) {\n this.totalMeasure = Performance.measure(totalMark);\n }\n\n public report({ marks }: { marks: ReadonlyArray<string> }) {\n const totalDuration = Math.ceil(this.totalMeasure.duration * 100) / 100;\n const totalName = this.totalMeasure.name;\n console.warn(\n `${totalName.substring(0, totalName.length - idLength('').length)}: ${totalDuration.toFixed(2)}ms`,\n );\n\n marks.forEach((mark) => {\n const markMeasure = Performance.measure(mark);\n const markDuration = Math.ceil(markMeasure.duration * 100) / 100;\n const percentage =\n Math.ceil(\n (markMeasure.duration / this.totalMeasure.duration) * 100 * 100,\n ) / 100;\n console.warn(\n `${mark}: ${markDuration.toFixed(2)}ms (${percentage.toFixed(2)}%)`,\n );\n });\n }\n}\n","import type { Client as ParserClient, Model } from '../openApi';\nimport { sanitizeNamespaceIdentifier } from '../openApi';\nimport type { Client, Operation, Service } from '../types/client';\nimport { camelCase } from './camelCase';\nimport { getConfig } from './config';\nimport { sort } from './sort';\nimport { unique } from './unique';\n\n/**\n * Post process client\n * @param client Client object with all the models, services, etc.\n */\nexport function postProcessClient(client: ParserClient): Client {\n return {\n ...client,\n models: client.models.map((model) => postProcessModel(model)),\n services: postProcessOperations(client.operations).map(postProcessService),\n types: {},\n };\n}\n\nconst postProcessModel = (model: Model): Model => ({\n ...model,\n $refs: model.$refs.filter((value, index, arr) => unique(value, index, arr)),\n enum: model.enum.filter(\n (value, index, arr) =>\n arr.findIndex((item) => item.value === value.value) === index,\n ),\n enums: model.enums.filter(\n (value, index, arr) =>\n arr.findIndex((item) => item.name === value.name) === index,\n ),\n imports: model.imports\n .filter(\n (value, index, arr) => unique(value, index, arr) && value !== model.name,\n )\n .sort(sort),\n});\n\nconst postProcessOperations = (\n operations: ParserClient['operations'],\n): Client['services'] => {\n const config = getConfig();\n\n const services = new Map<string, Service>();\n\n operations.forEach((parserOperation) => {\n const tags =\n parserOperation.tags?.length && (config.services.asClass || config.name)\n ? parserOperation.tags.filter(unique)\n : ['Default'];\n tags.forEach((tag) => {\n const operation: Operation = {\n ...parserOperation,\n service: getServiceName(tag),\n };\n const service =\n services.get(operation.service) || getNewService(operation);\n service.$refs = [...service.$refs, ...operation.$refs];\n service.imports = [...service.imports, ...operation.imports];\n service.operations = [...service.operations, operation];\n services.set(operation.service, service);\n });\n });\n\n return Array.from(services.values());\n};\n\nconst postProcessService = (service: Service): Service => {\n const clone = { ...service };\n clone.operations = postProcessServiceOperations(clone);\n clone.operations.forEach((operation) => {\n clone.imports.push(...operation.imports);\n });\n clone.imports = clone.imports.filter(unique).sort(sort);\n return clone;\n};\n\nconst postProcessServiceOperations = (service: Service): Operation[] => {\n const names = new Map<string, number>();\n\n return service.operations.map((operation) => {\n const clone = { ...operation };\n\n // Parse the service parameters and successes, very similar to how we parse\n // properties of models. These methods will extend the type if needed.\n clone.imports.push(\n ...clone.parameters.flatMap((parameter) => parameter.imports),\n );\n const successResponses = clone.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n clone.imports.push(...successResponses.flatMap((result) => result.imports));\n\n // Check if the operation name is unique, if not then prefix this with a number\n const name = clone.name;\n const index = names.get(name) || 0;\n if (index > 0) {\n clone.name = `${name}${index}`;\n }\n names.set(name, index + 1);\n\n return clone;\n });\n};\n\nexport const getNewService = (operation: Operation): Service => ({\n $refs: [],\n imports: [],\n name: operation.service,\n operations: [],\n});\n\n/**\n * Convert the input value to a correct service name. This converts\n * the input string to PascalCase.\n */\nexport const getServiceName = (value: string): string =>\n camelCase({\n input: sanitizeNamespaceIdentifier(value),\n pascalCase: true,\n });\n"]}
1
+ {"version":3,"sources":["../../../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.3/node_modules/cross-spawn/lib/util/resolveCommand.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/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.3/node_modules/cross-spawn/lib/util/readShebang.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js","../../../node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js","../src/index.ts","../src/utils/regexp.ts","../src/utils/escape.ts","../src/compiler/utils.ts","../src/utils/config.ts","../src/compiler/types.ts","../src/compiler/module.ts","../src/compiler/classes.ts","../src/compiler/convert.ts","../src/compiler/return.ts","../src/compiler/transform.ts","../src/compiler/typedef.ts","../src/compiler/index.ts","../src/ir/context.ts","../src/generate/utils.ts","../src/generate/files.ts","../src/utils/ref.ts","../src/openApi/3.0.3/parser/index.ts","../src/ir/mediaType.ts","../src/openApi/3.1.0/parser/mediaType.ts","../src/ir/pagination.ts","../src/ir/utils.ts","../src/openApi/3.1.0/parser/schema.ts","../src/openApi/3.1.0/parser/pagination.ts","../src/openApi/3.1.0/parser/operation.ts","../src/openApi/3.1.0/parser/parameter.ts","../src/openApi/3.1.0/parser/index.ts","../src/utils/camelCase.ts","../src/utils/const.ts","../src/utils/sort.ts","../src/utils/unique.ts","../src/utils/enum.ts","../src/utils/transform.ts","../src/utils/meta.ts","../src/utils/type.ts","../src/openApi/common/parser/sanitize.ts","../src/openApi/config.ts","../src/openApi/common/parser/service.ts","../src/openApi/v3/parser/inferType.ts","../src/openApi/common/parser/stripNamespace.ts","../src/openApi/common/parser/type.ts","../src/openApi/common/parser/getEnums.ts","../src/openApi/common/parser/getPattern.ts","../src/openApi/v2/parser/getModelProperties.ts","../src/openApi/common/parser/getRef.ts","../src/openApi/v2/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v2/parser/getModelComposition.ts","../src/openApi/v2/parser/getModel.ts","../src/openApi/v2/parser/getModels.ts","../src/openApi/common/parser/operation.ts","../src/openApi/common/parser/getDefault.ts","../src/openApi/v2/parser/getOperationParameter.ts","../src/openApi/v2/parser/getOperationParameters.ts","../src/openApi/common/parser/sort.ts","../src/openApi/v2/parser/getOperationResponse.ts","../src/openApi/v2/parser/getOperationResponses.ts","../src/openApi/v2/parser/operation.ts","../src/openApi/v2/parser/getOperations.ts","../src/openApi/v2/parser/getServer.ts","../src/openApi/v2/index.ts","../src/openApi/v3/parser/discriminator.ts","../src/openApi/v3/parser/getModelProperties.ts","../src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v3/parser/getModelComposition.ts","../src/openApi/v3/parser/getModel.ts","../src/openApi/v3/parser/parameter.ts","../src/openApi/v3/parser/getModels.ts","../src/openApi/v3/parser/getOperationParameter.ts","../src/openApi/v3/parser/getOperationParameters.ts","../src/openApi/v3/parser/getContent.ts","../src/openApi/v3/parser/getOperationRequestBody.ts","../src/openApi/v3/parser/getOperationResponse.ts","../src/openApi/v3/parser/getOperationResponses.ts","../src/openApi/v3/parser/operation.ts","../src/openApi/v3/parser/getOperations.ts","../src/openApi/v3/parser/getServer.ts","../src/openApi/v3/index.ts","../src/openApi/index.ts","../src/plugins/@hey-api/schemas/plugin.ts","../src/generate/client.ts","../src/generate/services.ts","../src/ir/parameter.ts","../src/ir/schema.ts","../src/ir/operation.ts","../src/utils/postprocess.ts","../src/plugins/@hey-api/transformers/plugin.ts","../src/plugins/@hey-api/services/plugin.ts","../src/plugins/@hey-api/types/plugin.ts","../src/generate/class.ts","../src/utils/getHttpRequestName.ts","../src/generate/core.ts","../src/generate/indexFile.ts","../src/generate/plugins.ts","../src/generate/schemas.ts","../src/generate/types.ts","../src/generate/transformers.ts","../src/generate/output.ts","../src/plugins/@hey-api/schemas/config.ts","../src/plugins/@hey-api/services/config.ts","../src/plugins/@hey-api/transformers/config.ts","../src/plugins/@hey-api/types/config.ts","../src/plugins/@tanstack/query-core/plugin.ts","../src/plugins/@tanstack/query-core/plugin-legacy.ts","../src/plugins/@tanstack/react-query/config.ts","../src/plugins/@tanstack/solid-query/config.ts","../src/plugins/@tanstack/svelte-query/config.ts","../src/plugins/@tanstack/vue-query/config.ts","../src/plugins/zod/plugin.ts","../src/plugins/zod/config.ts","../src/plugins/index.ts","../src/types/config.ts","../src/utils/getOpenApiSpec.ts","../src/legacy/handlebars/compiled/client.js","../src/legacy/handlebars/compiled/core/angular/getHeaders.js","../src/legacy/handlebars/compiled/core/angular/getRequestBody.js","../src/legacy/handlebars/compiled/core/angular/getResponseBody.js","../src/legacy/handlebars/compiled/core/angular/getResponseHeader.js","../src/legacy/handlebars/compiled/core/angular/request.js","../src/legacy/handlebars/compiled/core/angular/sendRequest.js","../src/legacy/handlebars/compiled/core/ApiError.js","../src/legacy/handlebars/compiled/core/ApiRequestOptions.js","../src/legacy/handlebars/compiled/core/ApiResult.js","../src/legacy/handlebars/compiled/core/axios/getHeaders.js","../src/legacy/handlebars/compiled/core/axios/getRequestBody.js","../src/legacy/handlebars/compiled/core/axios/getResponseBody.js","../src/legacy/handlebars/compiled/core/axios/getResponseHeader.js","../src/legacy/handlebars/compiled/core/axios/request.js","../src/legacy/handlebars/compiled/core/axios/sendRequest.js","../src/legacy/handlebars/compiled/core/BaseHttpRequest.js","../src/legacy/handlebars/compiled/core/CancelablePromise.js","../src/legacy/handlebars/compiled/core/fetch/getHeaders.js","../src/legacy/handlebars/compiled/core/fetch/getRequestBody.js","../src/legacy/handlebars/compiled/core/fetch/getResponseBody.js","../src/legacy/handlebars/compiled/core/fetch/getResponseHeader.js","../src/legacy/handlebars/compiled/core/fetch/request.js","../src/legacy/handlebars/compiled/core/fetch/sendRequest.js","../src/legacy/handlebars/compiled/core/functions/base64.js","../src/legacy/handlebars/compiled/core/functions/catchErrorCodes.js","../src/legacy/handlebars/compiled/core/functions/getFormData.js","../src/legacy/handlebars/compiled/core/functions/getQueryString.js","../src/legacy/handlebars/compiled/core/functions/getUrl.js","../src/legacy/handlebars/compiled/core/functions/isBlob.js","../src/legacy/handlebars/compiled/core/functions/isFormData.js","../src/legacy/handlebars/compiled/core/functions/isString.js","../src/legacy/handlebars/compiled/core/functions/isStringWithValue.js","../src/legacy/handlebars/compiled/core/functions/isSuccess.js","../src/legacy/handlebars/compiled/core/functions/resolve.js","../src/legacy/handlebars/compiled/core/HttpRequest.js","../src/legacy/handlebars/compiled/core/OpenAPI.js","../src/legacy/handlebars/compiled/core/request.js","../src/legacy/handlebars/compiled/core/xhr/getHeaders.js","../src/legacy/handlebars/compiled/core/xhr/getRequestBody.js","../src/legacy/handlebars/compiled/core/xhr/getResponseBody.js","../src/legacy/handlebars/compiled/core/xhr/getResponseHeader.js","../src/legacy/handlebars/compiled/core/xhr/request.js","../src/legacy/handlebars/compiled/core/xhr/sendRequest.js","../src/utils/handlebars.ts","../src/utils/performance.ts"],"names":["require_windows","__commonJSMin","exports","module","isexe","sync","fs","checkPathExt","path","options","pathext","i","p","checkStat","stat","cb","er","require_mode","checkMode","mod","uid","gid","myUid","myGid","u","g","o","ug","ret","require_isexe","core","resolve","reject","is","require_which","isWindows","COLON","getNotFoundError","cmd","getPathInfo","opt","colon","pathEnv","pathExtExe","pathExt","which","found","step","ppRaw","pathPart","pCmd","subStep","ii","ext","res","whichSync","j","cur","require_path_key","pathKey","environment","key","require_resolveCommand","getPathKey","resolveCommandAttempt","parsed","withoutPathExt","env","cwd","hasCustomCwd","shouldSwitchCwd","resolved","resolveCommand","require_escape","metaCharsRegExp","escapeCommand","arg","escapeArgument","doubleEscapeMetaChars","require_shebang_regex","require_shebang_command","shebangRegex","string","match","argument","binary","require_readShebang","shebangCommand","readShebang","command","buffer","fd","require_parse","escape","isWin","isExecutableRegExp","isCmdShimRegExp","detectShebang","shebang","parseNonShell","commandFile","needsShell","needsDoubleEscapeMetaChars","shellCommand","parse","args","require_enoent","notFoundError","original","syscall","hookChildProcess","cp","originalEmit","name","arg1","err","verifyENOENT","status","verifyENOENTSync","require_cross_spawn","enoent","spawn","spawned","spawnSync","result","import_cross_spawn","illegalStartCharactersRegExp","reservedWordsRegExp","validTypescriptIdentifierRegExp","escapeName","value","unescapeName","escapeComment","_l","w","EOL","_config","getConfig","setConfig","config","isLegacyClient","printer","ts","createSourceFile","sourceText","blankSourceFile","unescapeUnicode","_","hex","tsNodeToString","node","unescape","stringToTsNodes","createIdentifier","text","ots","alias","asType","nameNode","aliasNode","hasBothQuotes","hasNewlines","hasUnescapedBackticks","isBacktickEscaped","createStringLiteral","isTsNode","isType","processCommentObject","commentObject","lines","line","jsdocTexts","index","jsdoc","cleanedJsdoc","addLeadingComments","comments","isObjectStyle","comment","commentObjects","createTypeNode","base","createTypeReferenceNode","createPropertyAccessChain","expression","createPropertyAccessExpression","isOptional","nodeExpression","nodeName","createNull","toExpression","identifiers","isValueAccess","shorthand","createArrayLiteralExpression","createObjectType","parts","toAccessLevelModifiers","access","keyword","modifiers","toParameterDeclarations","parameters","parameter","createParameterDeclaration","param","createKeywordTypeNode","kind","toTypeParameters","types","type","createLiteralTypeNode","literal","createArrowFunction","async","multiLine","returnType","statements","createBlock","createAnonymousFunction","elements","createAwaitExpression","createFunctionTypeNode","typeParameters","obj","properties","canShorthand","assignment","nameIdentifier","initializer","createEnumDeclaration","enumMemberComments","members","enumMember","createNamespaceDeclaration","createIndexedAccessTypeNode","indexType","objectType","isSingleQuote","createConditionalExpression","condition","whenFalse","whenTrue","createTypeOfExpression","createTypeAliasDeclaration","exportType","typeArguments","typeName","createTypeParenthesizedNode","required","createNewExpression","argumentsArray","createForOfStatement","awaitModifier","statement","createAssignment","left","right","createExportAllDeclaration","createCallExpression","functionName","createNamedExportDeclarations","exportedTypes","hasNonTypeExport","item","exportClause","moduleSpecifier","createConstVariable","assertion","destructure","exportConst","declaration","createNamedImportDeclarations","imports","importedTypes","hasNonTypeImport","namedBindings","importClause","createConstructorDeclaration","accessLevel","createMethodDeclaration","isStatic","createClassDeclaration","decorator","m","member","expressionToStatement","createReturnStatement","createReturnFunctionCall","createReturnVariable","createSafeAccessExpression","element","createAccessExpression","createPropertyAccessExpressions","expressions","createBinaryExpression","operator","createIfStatement","thenStatement","elseStatement","createDateTransformMutation","safeAccessExpression","accessExpression","createFunctionTransformMutation","transformerName","createArrayTransformMutation","createDateTransformerExpression","parameterName","createArrayMapTransform","transformExpression","nullNode","maybeNullable","isNullable","createTypeInterfaceNode","indexProperty","useLegacyResolution","propertyTypes","property","questionToken","signature","indexSignature","createTypeUnionNode","nodes","createTypeIntersectionNode","createTypeTupleNode","createTypeRecordNode","keys","values","keyNode","valueNode","createTypeArrayNode","compiler","ensureDirSync","existsSync","mkdirSync","relativeModulePath","moduleOutput","sourceOutput","outputParts","TypeScriptFile","dir","header","$ref","namespace","refValue","validNameTransformer","ensureValidTypeScriptJavaScriptIdentifier","ensureUniqueIdentifier","importedItem","moduleMap","splitNameAndExtension","context","id","file","thisRelativePath","fileRelativePath","rmSync","fileName","extension","separator","output","importsStringArray","_module","writeFileSync","count","create","nameValue","irRef","isRefOpenApiComponent","refToParts","resolveRef","spec","current","part","IRContext","parserConfig","outputDir","createdFile","parseV3_0_3","jsonMimeRegExp","multipartFormDataMimeRegExp","xWwwFormUrlEncodedMimeRegExp","mediaTypeToIrMediaType","mediaType","mediaTypeObject","content","paginationKeywordsRegExp","addItemsToSchema","items","logicalOperator","mutateSchemaOneItem","schema","getSchemaTypes","parseSchemaMeta","irSchema","parseArray","schemaItems","schemaToIrSchema","isComposedSchema","irItemsSchema","parseBoolean","parseNull","parseNumber","parseObject","schemaProperties","irAdditionalPropertiesSchema","parseString","parseSchemaJsDoc","initIrSchema","parseAllOf","schemaTypes","compositionSchemas","compositionSchema","irObjectSchema","parseOneType","requiredProperty","finalCompositionSchema","irCompositionSchema","nestedItems","parseAnyOf","anyOf","parseEnum","enumValue","typeOfEnumValue","parseOneOf","oneOf","irOneOfSchema","parseRef","parseManyTypes","parseType","parseUnknown","parseSchema","paginationField","ref","refSchema","parseOperationJsDoc","irOperation","operation","initIrOperation","operationToIrOperation","requestBodyObject","finalSchema","pagination","response","responseObject","parseOperation","method","operationIds","operationKey","parametersArrayToObject","parametersObject","parameterOrReference","parameterToIrParameter","mergeParametersObjects","source","target","irParameter","parseParameter","parseV3_1_0","pathItem","finalPathItem","operationArgs","UPPERCASE","LOWERCASE","IDENTIFIER","SEPARATORS","LEADING_SEPARATORS","SEPARATORS_AND_IDENTIFIER","NUMBERS_AND_IDENTIFIER","preserveCamelCase","isLastCharLower","isLastCharUpper","isLastLastCharUpper","isLastLastCharPreserved","character","camelCase","input","pascalCase","offset","identifier","refParametersPartial","refSchemasPartial","sort","a","b","nameA","nameB","sorterByName","sortByName","unique","arr","enumKey","customName","enumUnionType","enums","enumerator","union","enumEntry","enumMeta","model","serialized","transformServiceName","transformTypeName","cleanAndTransformTypeName","transformed","getParametersMeta","definitionName","getType","getSchemasMeta","isModelDate","typeReference","typeNode","meta","typeArray","toType","typeEnum","typeDict","typeUnionOrIntersection","style","typeInterface","isLegacy","maybeRequired","transformTypeKeyName","setUniqueTypeName","client","nameTransformer","unsetUniqueTypeName","sanitizeOperationParameterName","replaced","sanitizeNamespaceIdentifier","withoutBrackets","getParserConfig","setParserConfig","operationFilterFn","regexp","operationParameterFilterFn","operationNameFn","operationId","urlWithoutPlaceholders","operationParameterNameFn","allowedServiceMethods","getServiceVersion","version","inferType","definition","definitionTypes","isDefinitionTypeNullable","getDefinitionTypes","isDefinitionNullable","stripNamespace","getMappedType","format","hasSquareBracketsRegExp","debug","joinedType","mapped","typeWithoutNamespace","matches","match1","match2","encodedType","getEnums","descriptions","names","getPattern","pattern","getModelProperties","getModel","openApi","models","propertyName","propertyRequired","ESCAPED_REF_SLASH","ESCAPED_REF_TILDE","getRef","paths","decodedPath","getRequiredPropertiesFromComposition","definitions","getModelComposition","composition","hasProperties","hasEnums","requiredProperties","modelProperties","modelProperty","isDefinition","definitionRef","arrayItems","additionalProperties","definitionType","getModels","getOperationKey","getOperationResponseHeader","operationResponses","isOperationParameterRequired","parseResponseStatusCode","code","sorterByResponseStatusCode","isErrorStatusCode","isSuccessStatusCode","inferDefaultResponseTypes","responses","addResponseType","description","$refs","errorKeywords","tagResponseTypes","getDefault","getOperationParameter","operationParameterWithoutName","operationParameter","allowedIn","getOperationParameters","operationParameters","parameterDef","skip","toSortedByRequired","aNeedsValue","bNeedsValue","getOperationResponse","operationResponse","getOperationResponses","responseCode","responseOrReference","getOperation","op","pathParams","url","operationWithoutName","successResponses","getOperations","operations","pathParameters","getServer","scheme","host","basePath","server","inverseDictionary","map","m2","findOneOfParentDiscriminator","parent","mapPropertyValue","discriminator","mapping","getAdditionalPropertiesModel","ap","apModel","apType","additionalPropertiesType","propertyValues","findModelComposition","def","foundComposition","propertiesProperty","initialValues","parentDefinition","inferredType","acc","arrayItemsDefinition","definitionConst","modelConst","getParameterSchema","contents","BASIC_MEDIA_TYPES","getContent","basicMediaTypeWithSchema","cleanMediaType","firstMediaTypeWithSchema","getOperationRequestBody","body","requestBody","mergeParameters","opParams","globalParams","mergedParameters","pendingParameters","pendingParam","requestBodyDef","variables","variable","parseLegacy","parseExperimental","schemasId","stripSchema","schemaToJsonSchema2020_12","_schema","schemaName","validName","schemasV3_1_0","generateSchemas","clientModulePath","clientOptionsTypeName","generateClientBundle","outputPath","dirPath","clientModulePathComponents","__require","clientSrcPath","copyFileSync","generateImport","onImport","setUniqueTypeNameArgs","created","modelResponseTransformerTypeName","operationDataTypeName","operationErrorTypeName","operationResponseTransformerTypeName","operationResponseTypeName","operationOptionsType","importedType","throwOnError","optionsName","toOperationParamType","isRequired","getDefaultPrintable","typePath","toOperationReturnType","toOperationComment","params","toRequestOptions","onClientImport","operationName","responseTransformerName","toObj","prev","curr","errorResponses","errors","serviceFunctionIdentifier","handleIllegal","toOperationStatements","errorType","responseType","processService","onNode","service","throwOnErrorTypeGeneric","compileFunctionParams","checkLegacyPrerequisites","files","generateLegacyServices","servicesOutput","imported","hasParametersObjectRequired","parameterWithPagination","deduplicateSchema","uniqueItems","typeIds","typeId","liftedSchema","hasOperationDataRequired","operationPagination","statusCodeToGroup","statusCode","operationResponsesMap","errorsItems","responsesItems","defaultResponse","inferred","postProcessClient","postProcessModel","postProcessOperations","postProcessService","services","parserOperation","tag","getServiceName","getNewService","clone","postProcessServiceOperations","operationIrRef","affix","operationResponseTransformerRef","schemaIrRef","schemaResponseTransformerRef","transformersId","dataVariableName","ensureStatements","schemaResponseTransformerNodes","identifierData","processSchemaType","dataExpression","callExpression","propertyAccessExpression","propertyNodes","identifierDate","identifierItem","generateTransformers","_method","identifierResponse","operationResponseRef","identifierResponseTransformer","responseTransformerNode","operationDataRef","operationErrorRef","servicesId","checkPrerequisites","requestOptions","fileTransformers","generateClassServices","typesModule","identifierError","uniqueTags","serviceName","generateFlatServices","generateServices","typesId","addJavaScriptEnum","enumObject","schemaToEnumObject","typeofItems","typeOfItemConst","valid","addTypeEnum","schemaToType","addTypeScriptEnum","arrayTypeToIdentifier","itemTypes","booleanTypeToIdentifier","enumTypeToIdentifier","isRefComponent","objectNode","enumNode","numberTypeToIdentifier","objectTypeToIdentifier","indexPropertyItems","hasOptionalProperties","stringTypeToIdentifier","tupleTypeToIdentifier","schemaTypeToIdentifier","irParametersToIrSchema","operationToDataType","data","dataRequired","operationToType","error","generateTypes","getHttpRequestName","generateLegacyClientClass","templates","templateResult","generateLegacyCore","requestFile","generateIndexFile","generateLegacyPlugins","plugin","ensureValidSchemaOutput","parentKey","toSchemaName","generateLegacySchemas","addSchema","treeName","emptyModel","generateEnum","leadingComment","generateType","onCreated","processComposition","props","enumDeclarations","processType","processEnum","processScopedEnum","processModel","processServiceTypes","pathsMap","pathMap","methodMap","bodyParameters","bodyParameter","headerParameters","queryParameters","operationProperties","methodParameters","reqKey","reqResParameters","resKey","generateLegacyTypes","isVoidResponse","getRefModels","refModel","ensureModelResponseTransformerExists","modelName","generateResponseTransformer","processArray","refModels","nameModelResponseTransformer","processProperty","onRemoveNode","generateLegacyTransformers","nonVoidResponses","nameCreated","generateLegacyOutput","generateOutput","defaultConfig","infiniteQueryOptionsFunctionIdentifier","mutationOptionsFunctionIdentifier","queryOptionsFunctionIdentifier","queryKeyFunctionIdentifier","isInfinite","createInfiniteParamsFn","createQueryKeyFn","infiniteQueryOptionsFn","mutationOptionsFn","queryKeyName","queryOptionsFn","TOptionsType","getClientBaseUrlKey","createInfiniteParamsFunction","fn","createQueryKeyFunction","infiniteIdentifier","createQueryKeyType","queryKeyType","createQueryKeyLiteral","useTypeData","useTypeError","typeError","axiosError","useTypeResponse","handler","mutationsType","typeInfiniteData","hasCreateInfiniteParamsFunction","hasCreateQueryKeyParamsFunction","hasInfiniteQueries","hasMutations","hasQueries","queryFn","hasUsedQueryFn","typeData","queryKeyStatement","typeResponse","typeQueryKey","typePageObjectParam","typePageParam","toInfiniteQueryOptionsName","toMutationOptionsName","toQueryOptionsName","toQueryKeyName","getPaginationIn","createTypeData","typesModulePath","nameTypeData","createTypeError","pluginName","nameTypeError","createTypeResponse","nameTypeResponse","handlerLegacy","processedOperations","paginationParameter","servicesModulePath","zArrayExpression","processGeneric","defaultPluginConfigs","CLIENTS","getOpenApiSpec","location","absolutePathOrUrl","$RefParser","client_default","container","depth0","helpers","partials","stack1","alias1","alias2","lookupProperty","alias3","getHeaders_default","getRequestBody_default","getResponseBody_default","getResponseHeader_default","request_default","sendRequest_default","ApiError_default","ApiRequestOptions_default","ApiResult_default","BaseHttpRequest_default","CancelablePromise_default","base64_default","catchErrorCodes_default","getFormData_default","getQueryString_default","getUrl_default","isBlob_default","isFormData_default","isString_default","isStringWithValue_default","isSuccess_default","resolve_default","HttpRequest_default","OpenAPI_default","registerHandlebarHelpers","Handlebars","registerHandlebarTemplates","idEnd","idLength","idStart","Performance","PerformanceReport","totalMark","marks","totalDuration","totalName","mark","markMeasure","markDuration","percentage","formatters","linters","processOutput","logClientMessage","getClient","userConfig","getOutput","getPlugins","getSchemas","schemas","getServices","getTypes","initConfigs","configurationFile","configFromFile","loadConfig","configFile","dryRun","exportCore","experimental_parser","request","useOptions","plugins","createClient","configs","pCreateClient","clients","pClients","pClient","defineConfig","src_default"],"mappings":"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","file":"index.js","sourcesContent":["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\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/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');\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, 'spawn');\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 path from 'node:path';\n\nimport { loadConfig } from 'c12';\nimport { sync } from 'cross-spawn';\n\nimport { generateLegacyOutput, generateOutput } from './generate/output';\nimport type { IRContext } from './ir/context';\nimport { parseExperimental, parseLegacy } from './openApi';\nimport type { ParserConfig } from './openApi/config';\nimport {\n operationFilterFn,\n operationNameFn,\n operationParameterFilterFn,\n operationParameterNameFn,\n} from './openApi/config';\nimport { defaultPluginConfigs } from './plugins';\nimport type { Client } from './types/client';\nimport type { ClientConfig, Config, UserConfig } from './types/config';\nimport { CLIENTS } from './types/config';\nimport { getConfig, isLegacyClient, setConfig } from './utils/config';\nimport { getOpenApiSpec } from './utils/getOpenApiSpec';\nimport { registerHandlebarTemplates } from './utils/handlebars';\nimport { Performance, PerformanceReport } from './utils/performance';\nimport { postProcessClient } from './utils/postprocess';\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<\n Extract<Config['output']['format'], string>,\n OutputProcessor\n> = {\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<\n Extract<Config['output']['lint'], string>,\n OutputProcessor\n> = {\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};\n\nconst processOutput = () => {\n const config = getConfig();\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 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\nconst logClientMessage = () => {\n const { client } = getConfig();\n switch (client.name) {\n case 'legacy/angular':\n return console.log('✨ Creating Angular client');\n case '@hey-api/client-axios':\n case 'legacy/axios':\n return console.log('✨ Creating Axios client');\n case '@hey-api/client-fetch':\n case 'legacy/fetch':\n return console.log('✨ Creating Fetch client');\n case 'legacy/node':\n return console.log('✨ Creating Node.js client');\n case 'legacy/xhr':\n return console.log('✨ Creating XHR client');\n }\n};\n\nconst getClient = (userConfig: ClientConfig): Config['client'] => {\n let client: Config['client'] = {\n bundle: false,\n name: '' as Config['client']['name'],\n };\n if (typeof userConfig.client === 'string') {\n client.name = userConfig.client;\n } else if (userConfig.client) {\n client = {\n ...client,\n ...userConfig.client,\n };\n }\n return client;\n};\n\nconst getOutput = (userConfig: ClientConfig): Config['output'] => {\n let output: Config['output'] = {\n format: false,\n lint: false,\n path: '',\n };\n if (typeof userConfig.output === 'string') {\n output.path = userConfig.output;\n } else {\n output = {\n ...output,\n ...userConfig.output,\n };\n }\n return output;\n};\n\nconst getPlugins = (userConfig: ClientConfig): Config['plugins'] => {\n const plugins: Config['plugins'] = (userConfig.plugins ?? []).map((plugin) =>\n typeof plugin === 'string'\n ? defaultPluginConfigs[plugin]\n : {\n ...defaultPluginConfigs[plugin.name],\n ...(plugin as (typeof defaultPluginConfigs)[(typeof plugin)['name']]),\n },\n ) as unknown as Config['plugins'];\n return plugins;\n};\n\nconst getSchemas = (userConfig: ClientConfig): Config['schemas'] => {\n let schemas: Config['schemas'] = {\n export: true,\n type: 'json',\n };\n if (typeof userConfig.schemas === 'boolean') {\n schemas.export = userConfig.schemas;\n } else {\n schemas = {\n ...schemas,\n ...userConfig.schemas,\n };\n }\n return schemas;\n};\n\nconst getServices = (userConfig: ClientConfig): Config['services'] => {\n let services: Config['services'] = {\n asClass: false,\n export: true,\n name: '{{name}}Service',\n operationId: true,\n response: 'body',\n };\n if (typeof userConfig.services === 'boolean') {\n services.export = userConfig.services;\n } else if (typeof userConfig.services === 'string') {\n services.include = userConfig.services;\n } else {\n services = {\n ...services,\n ...userConfig.services,\n };\n }\n return services;\n};\n\nconst getTypes = (\n userConfig: ClientConfig,\n services: Config['services'],\n): Config['types'] => {\n let types: Config['types'] = {\n dates: false,\n enums: false,\n export: true,\n name: 'preserve',\n tree: !services.export,\n };\n if (typeof userConfig.types === 'boolean') {\n types.export = userConfig.types;\n } else if (typeof userConfig.types === 'string') {\n types.include = userConfig.types;\n } else {\n types = {\n ...types,\n ...userConfig.types,\n };\n }\n return types;\n};\n\nconst initConfigs = async (userConfig: UserConfig): Promise<Config[]> => {\n let configurationFile: string | undefined = undefined;\n if (userConfig.configFile) {\n const parts = userConfig.configFile.split('.');\n configurationFile = parts.slice(0, parts.length - 1).join('.');\n }\n\n const { config: configFromFile } = await loadConfig<UserConfig>({\n configFile: configurationFile,\n name: 'openapi-ts',\n });\n\n const userConfigs: ClientConfig[] = Array.isArray(userConfig)\n ? userConfig\n : Array.isArray(configFromFile)\n ? configFromFile.map((config) => ({\n ...config,\n ...userConfig,\n }))\n : [{ ...(configFromFile ?? {}), ...userConfig }];\n\n return userConfigs.map((userConfig) => {\n const {\n base,\n configFile = '',\n debug = false,\n dryRun = false,\n exportCore = true,\n experimental_parser = false,\n input,\n name,\n request,\n useOptions = true,\n } = userConfig;\n\n if (debug) {\n console.warn('userConfig:', userConfig);\n }\n\n const output = getOutput(userConfig);\n\n if (!input) {\n throw new Error(\n '🚫 missing input - which OpenAPI specification should we use to generate your client?',\n );\n }\n\n if (!output.path) {\n throw new Error(\n '🚫 missing output - where should we generate your client?',\n );\n }\n\n const client = getClient(userConfig);\n\n if (client.name && !CLIENTS.includes(client.name)) {\n throw new Error('🚫 invalid client - select a valid client value');\n }\n\n if (!useOptions) {\n console.warn(\n '❗️ Deprecation warning: useOptions set to false. This setting will be removed in future versions. Please migrate useOptions to true https://heyapi.dev/openapi-ts/migrating.html#v0-27-38',\n );\n }\n\n const plugins = getPlugins(userConfig);\n const schemas = getSchemas(userConfig);\n const services = getServices(userConfig);\n const types = getTypes(userConfig, services);\n\n output.path = path.resolve(process.cwd(), output.path);\n\n const config = setConfig({\n base,\n client,\n configFile,\n debug,\n dryRun,\n experimental_parser,\n exportCore: isLegacyClient(client) ? exportCore : false,\n input,\n name,\n output,\n plugins,\n request,\n schemas,\n services,\n types,\n useOptions,\n });\n\n if (debug) {\n console.warn('config:', config);\n }\n\n return config;\n });\n};\n\n/**\n * Generate the OpenAPI client. This method will read the OpenAPI specification and based on the\n * given language it will generate the client, including the typed models, validation schemas,\n * service layer, etc.\n * @param userConfig {@link UserConfig} passed to the `createClient()` method\n */\nexport async function createClient(\n userConfig: UserConfig,\n): Promise<ReadonlyArray<Client>> {\n Performance.start('createClient');\n\n Performance.start('config');\n const configs = await initConfigs(userConfig);\n Performance.end('config');\n\n Performance.start('handlebars');\n const templates = registerHandlebarTemplates();\n Performance.end('handlebars');\n\n const pCreateClient = (config: Config) => async () => {\n Performance.start('openapi');\n const openApi =\n typeof config.input === 'string'\n ? await getOpenApiSpec(config.input)\n : (config.input as unknown as Awaited<\n ReturnType<typeof getOpenApiSpec>\n >);\n Performance.end('openapi');\n\n let client: Client | undefined;\n let context: IRContext | undefined;\n\n Performance.start('parser');\n const parserConfig: ParserConfig = {\n filterFn: {\n operation: operationFilterFn,\n operationParameter: operationParameterFilterFn,\n },\n nameFn: {\n operation: operationNameFn,\n operationParameter: operationParameterNameFn,\n },\n };\n if (config.experimental_parser && !isLegacyClient(config) && !config.name) {\n context = parseExperimental({\n config,\n parserConfig,\n spec: openApi,\n });\n }\n\n // fallback to legacy parser\n if (!context) {\n const parsed = parseLegacy({\n openApi,\n parserConfig,\n });\n client = postProcessClient(parsed);\n }\n Performance.end('parser');\n\n logClientMessage();\n\n Performance.start('generator');\n if (context) {\n await generateOutput({ context });\n } else if (client) {\n await generateLegacyOutput({ client, openApi, templates });\n }\n Performance.end('generator');\n\n Performance.start('postprocess');\n if (!config.dryRun) {\n processOutput();\n\n console.log('✨ Done! Your client is located in:', config.output.path);\n }\n Performance.end('postprocess');\n\n return context || client;\n };\n\n const clients: Array<Client> = [];\n\n const pClients = configs.map((config) => pCreateClient(config));\n for (const pClient of pClients) {\n const client = await pClient();\n if (client && 'version' in client) {\n clients.push(client);\n }\n }\n\n Performance.end('createClient');\n\n if (userConfig.debug) {\n const perfReport = new PerformanceReport({\n totalMark: 'createClient',\n });\n perfReport.report({\n marks: [\n 'config',\n 'openapi',\n 'handlebars',\n 'parser',\n 'generator',\n 'postprocess',\n ],\n });\n }\n\n return clients;\n}\n\n/**\n * Type helper for openapi-ts.config.ts, returns {@link UserConfig} object\n */\nexport const defineConfig = (config: UserConfig): UserConfig => config;\n\nexport default {\n createClient,\n defineConfig,\n};\n\nexport type { OpenApiV3_0_3 } from './openApi/3.0.3';\nexport type { OpenApiV3_1_0 } from './openApi/3.1.0';\nexport type { UserConfig } from './types/config';\n","/**\n * Matches characters from the start as long as they're not allowed.\n */\nexport const illegalStartCharactersRegExp = /^[^$_\\p{ID_Start}]+/u;\n\n/**\n * Matches the whole value if it's one of the reserved words.\n */\nexport const reservedWordsRegExp =\n /^(arguments|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g;\n\n/**\n * Javascript identifier regexp pattern retrieved from\n * {@link} https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nexport const validTypescriptIdentifierRegExp =\n /^[$_\\p{ID_Start}][$\\u200c\\u200d\\p{ID_Continue}]*$/u;\n","import { EOL } from 'os';\n\nimport { validTypescriptIdentifierRegExp } from './regexp';\n\nexport const escapeName = (value: string): string => {\n if (value || value === '') {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n const validName = validTypescriptIdentifierRegExp.test(value);\n if (!validName) {\n return `'${value}'`;\n }\n }\n return value;\n};\n\nexport const unescapeName = (value: string): string => {\n if (value && value.startsWith(\"'\") && value.endsWith(\"'\")) {\n return value.slice(1, value.length - 1);\n }\n return value;\n};\n\nexport const escapeComment = (value: string) =>\n value\n .replace(/\\*\\//g, '*')\n .replace(/\\/\\*/g, '*')\n .replace(/\\r?\\n(.*)/g, (_l, w) => EOL + w.trim());\n","import ts from 'typescript';\n\nimport { getConfig } from '../utils/config';\nimport { unescapeName } from '../utils/escape';\nimport { createStringLiteral } from './types';\n\nexport interface ImportExportItemObject {\n alias?: string;\n asType?: boolean;\n name: string;\n}\n\nconst printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });\n\nexport const createSourceFile = (sourceText: string) =>\n ts.createSourceFile(\n '',\n sourceText,\n ts.ScriptTarget.ES2015,\n undefined,\n ts.ScriptKind.TS,\n );\n\nconst blankSourceFile = createSourceFile('');\n\nconst unescapeUnicode = (value: string) =>\n value.replace(/\\\\u([0-9a-fA-F]{4})/g, (_, hex: string) =>\n String.fromCharCode(Number.parseInt(hex, 16)),\n );\n\n/**\n * Print a TypeScript node to a string.\n * @param node the node to print\n * @returns string\n */\nexport function tsNodeToString({\n node,\n unescape = false,\n}: {\n node: ts.Node;\n unescape?: boolean;\n}): string {\n const result = printer.printNode(\n ts.EmitHint.Unspecified,\n node,\n blankSourceFile,\n );\n\n if (!unescape) {\n return result;\n }\n\n try {\n /**\n * TypeScript Compiler API escapes unicode characters by default and there\n * is no way to disable this behavior\n * {@link https://github.com/microsoft/TypeScript/issues/36174}\n */\n return unescapeUnicode(result);\n } catch {\n if (getConfig().debug) {\n console.warn('Could not decode value:', result);\n }\n return result;\n }\n}\n\n/**\n * Convert a string to a TypeScript Node\n * @param value the string to convert.\n * @returns ts.Node\n */\nexport function stringToTsNodes(value: string): ts.Node {\n const file = createSourceFile(value);\n return file.statements[0];\n}\n\nexport const createIdentifier = ({ text }: { text: string }) => {\n const identifier = ts.factory.createIdentifier(text);\n return identifier;\n};\n\n/**\n * ots for @hey-api/openapi-ts are helpers to reduce repetition of basic TypeScript\n * factory functions.\n */\nexport const ots = {\n /**\n * Create a boolean expression based on value.\n */\n boolean: (value: boolean) =>\n value ? ts.factory.createTrue() : ts.factory.createFalse(),\n export: ({ alias, asType = false, name }: ImportExportItemObject) => {\n const nameNode = createIdentifier({ text: name });\n if (alias) {\n const aliasNode = createIdentifier({ text: alias });\n return ts.factory.createExportSpecifier(asType, nameNode, aliasNode);\n }\n return ts.factory.createExportSpecifier(asType, undefined, nameNode);\n },\n import: ({ alias, asType = false, name }: ImportExportItemObject) => {\n const nameNode = createIdentifier({ text: name });\n if (alias) {\n const aliasNode = createIdentifier({ text: alias });\n return ts.factory.createImportSpecifier(asType, nameNode, aliasNode);\n }\n return ts.factory.createImportSpecifier(asType, undefined, nameNode);\n },\n /**\n * Create a numeric expression, handling negative numbers.\n */\n number: (value: number) => {\n if (value < 0) {\n return ts.factory.createPrefixUnaryExpression(\n ts.SyntaxKind.MinusToken,\n ts.factory.createNumericLiteral(Math.abs(value)),\n );\n }\n return ts.factory.createNumericLiteral(value);\n },\n /**\n * Create a string literal. This handles strings that start with '`' or \"'\".\n */\n string: (value: string, unescape = false) => {\n let text = value;\n if (unescape) {\n text = unescapeName(text);\n }\n const hasBothQuotes = text.includes(\"'\") && text.includes('\"');\n const hasNewlines = text.includes('\\n');\n const hasUnescapedBackticks = text.startsWith('`');\n const isBacktickEscaped = text.startsWith('\\\\`') && text.endsWith('\\\\`');\n if (\n (hasNewlines || hasBothQuotes || hasUnescapedBackticks) &&\n !isBacktickEscaped\n ) {\n text = `\\`${text.replace(/(?<!\\\\)`/g, '\\\\`').replace(/\\${/g, '\\\\${')}\\``;\n }\n if (text.startsWith('`')) {\n return createIdentifier({ text });\n }\n return createStringLiteral({ text });\n },\n};\n\nexport const isTsNode = (node: any): node is ts.Expression =>\n node !== null &&\n typeof node === 'object' &&\n typeof node.kind === 'number' &&\n typeof node.flags === 'number' &&\n typeof node.pos === 'number' &&\n typeof node.end === 'number';\n\nexport const isType = <T>(value: T | undefined): value is T =>\n value !== undefined;\n\ntype CommentLines = Array<string | null | false | undefined>;\ntype CommentObject = {\n jsdoc?: boolean;\n lines: CommentLines;\n};\nexport type Comments = CommentLines | Array<CommentObject>;\n\nconst processCommentObject = ({\n commentObject,\n node,\n}: {\n commentObject: CommentObject;\n node: ts.Node;\n}) => {\n const lines = commentObject.lines.filter(\n (line) => Boolean(line) || line === '',\n ) as string[];\n if (!lines.length) {\n return;\n }\n\n if (!commentObject.jsdoc) {\n for (const line of lines) {\n ts.addSyntheticLeadingComment(\n node,\n ts.SyntaxKind.SingleLineCommentTrivia,\n ` ${line}`,\n true,\n );\n }\n return;\n }\n\n const jsdocTexts = lines.map((line, index) => {\n let text = line;\n if (index !== lines.length) {\n text = `${text}\\n`;\n }\n const jsdocText = ts.factory.createJSDocText(text);\n return jsdocText;\n });\n\n const jsdoc = ts.factory.createJSDocComment(\n ts.factory.createNodeArray(jsdocTexts),\n undefined,\n );\n\n const cleanedJsdoc = tsNodeToString({ node: jsdoc, unescape: true })\n .replace('/*', '')\n .replace('* */', '');\n\n ts.addSyntheticLeadingComment(\n node,\n ts.SyntaxKind.MultiLineCommentTrivia,\n cleanedJsdoc,\n true,\n );\n};\n\nexport const addLeadingComments = ({\n comments = [],\n node,\n}: {\n comments?: Comments;\n node: ts.Node;\n}) => {\n const isObjectStyle = Boolean(\n comments.find((comment) => typeof comment === 'object' && comment),\n );\n\n let commentObjects = comments as Array<CommentObject>;\n if (!isObjectStyle) {\n commentObjects = [\n {\n jsdoc: true,\n lines: comments as CommentLines,\n },\n ];\n }\n\n for (const commentObject of commentObjects) {\n processCommentObject({\n commentObject,\n node,\n });\n }\n};\n","import type { Config } from '../types/config';\n\nlet _config: Config;\n\nexport const getConfig = () => _config;\n\nexport const setConfig = (config: Config) => {\n _config = config;\n return getConfig();\n};\n\nexport const isLegacyClient = (config: Config | Config['client']) => {\n const client = 'client' in config ? config.client.name : config.name;\n return client.startsWith('legacy/');\n};\n","import ts from 'typescript';\n\nimport { escapeName } from '../utils/escape';\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n isTsNode,\n isType,\n ots,\n} from './utils';\n\nexport type AccessLevel = 'public' | 'protected' | 'private';\n\nexport type FunctionParameter =\n | {\n accessLevel?: AccessLevel;\n default?: any;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name: string;\n type?: any | ts.TypeNode;\n }\n | {\n destructure: FunctionParameter[];\n };\n\nexport interface FunctionTypeParameter {\n default?: any;\n extends?: string | ts.TypeNode;\n name: string | ts.Identifier;\n}\n\nexport const createTypeNode = (\n base: any | ts.TypeNode,\n args?: (any | ts.TypeNode)[],\n): ts.TypeNode => {\n if (ts.isTypeNode(base)) {\n return base;\n }\n\n if (typeof base === 'number') {\n return ts.factory.createLiteralTypeNode(ots.number(base));\n }\n\n return createTypeReferenceNode({\n typeArguments: args?.map((arg) => createTypeNode(arg)),\n typeName: base,\n });\n};\n\nexport const createPropertyAccessChain = ({\n expression,\n name,\n}: {\n expression: ts.Expression;\n name: string | ts.MemberName;\n}) => {\n const node = ts.factory.createPropertyAccessChain(\n expression,\n ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),\n name,\n );\n return node;\n};\n\nexport const createPropertyAccessExpression = ({\n expression,\n isOptional,\n name,\n}: {\n expression: string | ts.Expression;\n isOptional?: boolean;\n name: string | ts.MemberName;\n}):\n | ts.PropertyAccessChain\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression => {\n const nodeExpression =\n typeof expression === 'string'\n ? createIdentifier({ text: expression })\n : expression;\n\n if (isOptional) {\n return createPropertyAccessChain({\n expression: nodeExpression,\n name,\n });\n }\n\n if (typeof name === 'string') {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n if (!validTypescriptIdentifierRegExp.test(name)) {\n // TODO: parser - this should escape name only for new parser\n if (!name.startsWith(\"'\") && !name.endsWith(\"'\")) {\n // eslint-disable-next-line no-useless-escape\n name = `\\'${name}\\'`;\n }\n const nodeName = createIdentifier({ text: name });\n return ts.factory.createElementAccessExpression(nodeExpression, nodeName);\n }\n }\n\n const nodeName =\n typeof name === 'string' ? createIdentifier({ text: name }) : name;\n\n return ts.factory.createPropertyAccessExpression(nodeExpression, nodeName);\n};\n\nexport const createNull = (): ts.NullLiteral => ts.factory.createNull();\n\n/**\n * Convert an unknown value to an expression.\n * @param identifiers - list of keys that are treated as identifiers.\n * @param shorthand - if shorthand syntax is allowed.\n * @param unescape - if string should be unescaped.\n * @param value - the unknown value.\n * @returns ts.Expression\n */\nexport const toExpression = <T = unknown>({\n identifiers = [],\n isValueAccess,\n shorthand,\n unescape,\n value,\n}: {\n identifiers?: string[];\n isValueAccess?: boolean;\n shorthand?: boolean;\n unescape?: boolean;\n value: T;\n}): ts.Expression | undefined => {\n if (value === null) {\n return createNull();\n }\n\n if (Array.isArray(value)) {\n return createArrayLiteralExpression({ elements: value });\n }\n\n if (typeof value === 'object') {\n return createObjectType({\n identifiers,\n obj: value,\n shorthand,\n });\n }\n\n if (typeof value === 'number') {\n return ots.number(value);\n }\n\n if (typeof value === 'boolean') {\n return ots.boolean(value);\n }\n\n if (typeof value === 'string') {\n if (isValueAccess) {\n // TODO; handle more than single nested level, i.e. foo.bar.baz\n const parts = value.split('.');\n return createPropertyAccessExpression({\n expression: parts[0],\n name: parts[1],\n });\n }\n return ots.string(value, unescape);\n }\n};\n\n/**\n * Convert AccessLevel to proper TypeScript compiler API modifier.\n * @param access - the access level.\n * @returns ts.ModifierLike[]\n */\nexport const toAccessLevelModifiers = (\n access?: AccessLevel,\n): ts.ModifierLike[] => {\n const keyword =\n access === 'public'\n ? ts.SyntaxKind.PublicKeyword\n : access === 'protected'\n ? ts.SyntaxKind.ProtectedKeyword\n : access === 'private'\n ? ts.SyntaxKind.PrivateKeyword\n : undefined;\n const modifiers: ts.ModifierLike[] = [];\n if (keyword) {\n modifiers.push(ts.factory.createModifier(keyword));\n }\n return modifiers;\n};\n\n/**\n * Convert parameters to the declaration array expected by compiler API.\n * @param parameters - the parameters to convert to declarations\n * @returns ts.ParameterDeclaration[]\n */\nexport const toParameterDeclarations = (parameters: FunctionParameter[]) =>\n parameters.map((parameter) => {\n if ('destructure' in parameter) {\n return createParameterDeclaration({\n name: ts.factory.createObjectBindingPattern(\n parameter.destructure\n .map((param) => {\n // TODO: add support for nested destructuring, not needed at the moment\n if ('destructure' in param) {\n return;\n }\n\n const result = ts.factory.createBindingElement(\n undefined,\n undefined,\n createIdentifier({ text: param.name }),\n undefined,\n );\n return result;\n })\n .filter(Boolean) as ts.BindingElement[],\n ),\n });\n }\n\n let modifiers = toAccessLevelModifiers(parameter.accessLevel);\n\n if (parameter.isReadOnly) {\n modifiers = [\n ...modifiers,\n ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword),\n ];\n }\n\n return createParameterDeclaration({\n initializer:\n parameter.default !== undefined\n ? toExpression({ value: parameter.default })\n : undefined,\n modifiers,\n name: createIdentifier({ text: parameter.name }),\n required: parameter.isRequired !== false,\n type:\n parameter.type !== undefined\n ? createTypeNode(parameter.type)\n : undefined,\n });\n });\n\nexport const createKeywordTypeNode = ({\n keyword,\n}: {\n keyword: 'any' | 'boolean' | 'number' | 'string' | 'undefined' | 'unknown';\n}) => {\n let kind: ts.KeywordTypeSyntaxKind = ts.SyntaxKind.AnyKeyword;\n switch (keyword) {\n case 'boolean':\n kind = ts.SyntaxKind.BooleanKeyword;\n break;\n case 'number':\n kind = ts.SyntaxKind.NumberKeyword;\n break;\n case 'string':\n kind = ts.SyntaxKind.StringKeyword;\n break;\n case 'undefined':\n kind = ts.SyntaxKind.UndefinedKeyword;\n break;\n case 'unknown':\n kind = ts.SyntaxKind.UnknownKeyword;\n break;\n }\n return ts.factory.createKeywordTypeNode(kind);\n};\n\nexport const toTypeParameters = (types: FunctionTypeParameter[]) =>\n types.map((type) =>\n ts.factory.createTypeParameterDeclaration(\n undefined,\n type.name,\n // TODO: support other extends values\n type.extends\n ? typeof type.extends === 'string'\n ? createKeywordTypeNode({ keyword: 'boolean' })\n : type.extends\n : undefined,\n // TODO: support other default types\n type.default !== undefined\n ? isTsNode(type.default)\n ? (type.default as unknown as ts.TypeNode)\n : ts.factory.createLiteralTypeNode(\n type.default ? ts.factory.createTrue() : ts.factory.createFalse(),\n )\n : undefined,\n ),\n );\n\nexport const createLiteralTypeNode = ({\n literal,\n}: {\n literal: ts.LiteralTypeNode['literal'];\n}) => {\n const node = ts.factory.createLiteralTypeNode(literal);\n return node;\n};\n\n/**\n * Create arrow function type expression.\n */\nexport const createArrowFunction = ({\n async,\n comment,\n multiLine,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n async?: boolean;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[] | ts.Expression;\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createArrowFunction(\n async ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)] : undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n undefined,\n Array.isArray(statements)\n ? createBlock({ multiLine, statements })\n : statements,\n );\n\n addLeadingComments({\n comments: comment,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create anonymous function type expression.\n */\nexport const createAnonymousFunction = ({\n async,\n comment,\n multiLine,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n async?: boolean;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[];\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createFunctionExpression(\n async ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)] : undefined,\n undefined,\n undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n createBlock({ multiLine, statements }),\n );\n\n addLeadingComments({\n comments: comment,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create Array type expression.\n * @param arr - The array to create.\n * @param multiLine - if the array should be multiline.\n * @returns ts.ArrayLiteralExpression\n */\nexport const createArrayLiteralExpression = <T>({\n elements,\n multiLine = false,\n}: {\n elements: T[];\n multiLine?: boolean;\n}): ts.ArrayLiteralExpression => {\n const expression = ts.factory.createArrayLiteralExpression(\n elements\n .map((value) => (isTsNode(value) ? value : toExpression({ value })))\n .filter(isType<ts.Expression>),\n // multiline if array contains objects\n multiLine ||\n (!Array.isArray(elements[0]) && typeof elements[0] === 'object'),\n );\n return expression;\n};\n\nexport const createAwaitExpression = ({\n expression,\n}: {\n expression: ts.Expression;\n}) => ts.factory.createAwaitExpression(expression);\n\nexport const createFunctionTypeNode = ({\n parameters = [],\n returnType,\n typeParameters,\n}: {\n parameters?: ts.ParameterDeclaration[];\n returnType: ts.TypeNode;\n typeParameters?: ts.TypeParameterDeclaration[];\n}) => {\n const node = ts.factory.createFunctionTypeNode(\n typeParameters,\n parameters,\n returnType,\n );\n return node;\n};\n\nexport type ObjectValue =\n | {\n assertion?: 'any';\n comments?: Comments;\n spread: string;\n }\n | {\n comments?: Comments;\n isValueAccess?: boolean;\n key: string;\n shorthand?: boolean;\n value: any;\n };\n\ntype ObjectAssignment =\n | ts.PropertyAssignment\n | ts.ShorthandPropertyAssignment\n | ts.SpreadAssignment;\n\n/**\n * Create Object type expression.\n * @param comments - comments to add to each property.\n * @param identifier - keys that should be treated as identifiers.\n * @param multiLine - if the object should be multiline.\n * @param obj - the object to create expression with.\n * @param shorthand - if shorthand syntax should be used.\n * @param unescape - if properties strings should be unescaped.\n * @returns ts.ObjectLiteralExpression\n */\nexport const createObjectType = <\n T extends Record<string, any> | Array<ObjectValue>,\n>({\n comments,\n identifiers = [],\n multiLine = true,\n obj,\n shorthand,\n unescape = false,\n}: {\n comments?: Comments;\n identifiers?: string[];\n multiLine?: boolean;\n obj: T;\n shorthand?: boolean;\n unescape?: boolean;\n}): ts.ObjectLiteralExpression => {\n const properties = Array.isArray(obj)\n ? obj\n .map((value: ObjectValue) => {\n // Check key value equality before possibly modifying it\n let canShorthand = false;\n if ('key' in value) {\n const { key } = value;\n canShorthand = key === value.value;\n if (\n ((key.match(/^[0-9]/) && key.match(/\\D+/g)) ||\n key.match(/\\W/g)) &&\n !key.startsWith(\"'\") &&\n !key.endsWith(\"'\")\n ) {\n value.key = `'${key}'`;\n }\n }\n let assignment: ObjectAssignment;\n if ('spread' in value) {\n const nameIdentifier = isTsNode(value.spread)\n ? value.spread\n : createIdentifier({ text: value.spread });\n assignment = ts.factory.createSpreadAssignment(\n value.assertion\n ? ts.factory.createAsExpression(\n nameIdentifier,\n createKeywordTypeNode({ keyword: value.assertion }),\n )\n : nameIdentifier,\n );\n } else if (value.shorthand || (shorthand && canShorthand)) {\n assignment = ts.factory.createShorthandPropertyAssignment(\n value.value,\n );\n } else {\n let initializer: ts.Expression | undefined = isTsNode(value.value)\n ? value.value\n : Array.isArray(value.value)\n ? createObjectType({\n multiLine,\n obj: value.value,\n shorthand,\n unescape,\n })\n : toExpression({\n identifiers: identifiers.includes(value.key)\n ? Object.keys(value.value)\n : [],\n isValueAccess: value.isValueAccess,\n shorthand,\n unescape,\n value: value.value,\n });\n if (!initializer) {\n return undefined;\n }\n // Create a identifier if the current key is one and it is not an object\n if (\n identifiers.includes(value.key) &&\n !ts.isObjectLiteralExpression(initializer)\n ) {\n initializer = createIdentifier({ text: value.value as string });\n }\n assignment = ts.factory.createPropertyAssignment(\n value.key,\n initializer,\n );\n }\n\n addLeadingComments({\n comments: value.comments,\n node: assignment,\n });\n\n return assignment;\n })\n .filter(isType<ObjectAssignment>)\n : Object.entries(obj)\n .map(([key, value]) => {\n // Pass all object properties as identifiers if the whole object is an identifier\n let initializer: ts.Expression | undefined = toExpression({\n identifiers: identifiers.includes(key) ? Object.keys(value) : [],\n shorthand,\n unescape,\n value,\n });\n if (!initializer) {\n return undefined;\n }\n // Create a identifier if the current key is one and it is not an object\n if (\n identifiers.includes(key) &&\n !ts.isObjectLiteralExpression(initializer)\n ) {\n initializer = createIdentifier({ text: value as string });\n }\n // Check key value equality before possibly modifying it\n const canShorthand = key === value;\n if (\n key.match(/^[0-9]/) &&\n key.match(/\\D+/g) &&\n !key.startsWith(\"'\") &&\n !key.endsWith(\"'\")\n ) {\n key = `'${key}'`;\n }\n if (key.match(/\\W/g) && !key.startsWith(\"'\") && !key.endsWith(\"'\")) {\n key = `'${key}'`;\n }\n const assignment =\n shorthand && canShorthand\n ? ts.factory.createShorthandPropertyAssignment(value)\n : ts.factory.createPropertyAssignment(key, initializer);\n\n return assignment;\n })\n .filter(isType<ObjectAssignment>);\n\n const node = ts.factory.createObjectLiteralExpression(\n properties as any[],\n multiLine,\n );\n\n addLeadingComments({\n comments,\n node,\n });\n\n return node;\n};\n\n/**\n * Create enum declaration. Example `export enum T = { X, Y };`\n * @param comments - comments to add to each property.\n * @param leadingComment - leading comment to add to enum.\n * @param name - the name of the enum.\n * @param obj - the object representing the enum.\n * @returns ts.EnumDeclaration\n */\nexport const createEnumDeclaration = <\n T extends Record<string, any> | Array<ObjectValue>,\n>({\n comments: enumMemberComments = {},\n leadingComment: comments,\n name,\n obj,\n}: {\n comments?: Record<string | number, Comments>;\n leadingComment?: Comments;\n name: string;\n obj: T;\n}): ts.EnumDeclaration => {\n const members: Array<ts.EnumMember> = Array.isArray(obj)\n ? obj.map((value) => {\n const enumMember = ts.factory.createEnumMember(\n escapeName(value.key),\n toExpression({\n value: value.value,\n }),\n );\n\n addLeadingComments({\n comments: value.comments,\n node: enumMember,\n });\n\n return enumMember;\n })\n : Object.entries(obj).map(([key, value]) => {\n const initializer = toExpression({ unescape: true, value });\n const enumMember = ts.factory.createEnumMember(key, initializer);\n\n addLeadingComments({\n comments: enumMemberComments[key],\n node: enumMember,\n });\n\n return enumMember;\n });\n\n const node = ts.factory.createEnumDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n createIdentifier({ text: name }),\n members,\n );\n\n addLeadingComments({\n comments,\n node,\n });\n\n return node;\n};\n\n/**\n * Create namespace declaration. Example `export namespace MyNamespace { ... }`\n * @param name - the name of the namespace.\n * @param nodes - the nodes in the namespace.\n * @returns\n */\nexport const createNamespaceDeclaration = ({\n name,\n statements,\n}: {\n name: string;\n statements: Array<ts.Statement>;\n}) =>\n ts.factory.createModuleDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n createIdentifier({ text: name }),\n ts.factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n );\n\nexport const createIndexedAccessTypeNode = ({\n indexType,\n objectType,\n}: {\n indexType: ts.TypeNode;\n objectType: ts.TypeNode;\n}) => {\n const node = ts.factory.createIndexedAccessTypeNode(objectType, indexType);\n return node;\n};\n\nexport const createStringLiteral = ({\n isSingleQuote,\n text,\n}: {\n isSingleQuote?: boolean;\n text: string;\n}) => {\n if (isSingleQuote === undefined) {\n isSingleQuote = !text.includes(\"'\");\n }\n const node = ts.factory.createStringLiteral(text, isSingleQuote);\n return node;\n};\n\nexport const createConditionalExpression = ({\n condition,\n whenFalse,\n whenTrue,\n}: {\n condition: ts.Expression;\n whenFalse: ts.Expression;\n whenTrue: ts.Expression;\n}) => {\n const expression = ts.factory.createConditionalExpression(\n condition,\n ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n whenTrue,\n ts.factory.createToken(ts.SyntaxKind.ColonToken),\n whenFalse,\n );\n return expression;\n};\n\nexport const createTypeOfExpression = ({ text }: { text: string }) => {\n const expression = ts.factory.createTypeOfExpression(\n createIdentifier({ text }),\n );\n return expression;\n};\n\n/**\n * Create a type alias declaration. Example `export type X = Y;`.\n * @param comment (optional) comments to add\n * @param name the name of the type\n * @param type the type\n * @returns ts.TypeAliasDeclaration\n */\nexport const createTypeAliasDeclaration = ({\n comment,\n exportType,\n name,\n type,\n typeParameters = [],\n}: {\n comment?: Comments;\n exportType?: boolean;\n name: string;\n type: string | ts.TypeNode;\n typeParameters?: FunctionTypeParameter[];\n}): ts.TypeAliasDeclaration => {\n const node = ts.factory.createTypeAliasDeclaration(\n exportType\n ? [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)]\n : undefined,\n createIdentifier({ text: name }),\n toTypeParameters(typeParameters),\n createTypeNode(type),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\nexport const createTypeReferenceNode = ({\n typeArguments,\n typeName,\n}: {\n typeArguments?: ts.TypeNode[];\n typeName: string | ts.EntityName;\n}) => {\n const node = ts.factory.createTypeReferenceNode(typeName, typeArguments);\n return node;\n};\n\nexport const createTypeParenthesizedNode = ({\n type,\n}: {\n type: ts.TypeNode;\n}) => {\n const node = ts.factory.createParenthesizedType(type);\n return node;\n};\n\nexport const createParameterDeclaration = ({\n initializer,\n modifiers,\n name,\n required = true,\n type,\n}: {\n initializer?: ts.Expression;\n modifiers?: ts.ModifierLike[];\n name: string | ts.BindingName;\n required?: boolean;\n type?: ts.TypeNode;\n}) => {\n const node = ts.factory.createParameterDeclaration(\n modifiers,\n undefined,\n name,\n required ? undefined : ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n type,\n initializer,\n );\n return node;\n};\n\nexport const createNewExpression = ({\n argumentsArray,\n expression,\n typeArguments,\n}: {\n argumentsArray?: Array<ts.Expression>;\n expression: ts.Expression;\n typeArguments?: Array<ts.TypeNode>;\n}) => {\n const node = ts.factory.createNewExpression(\n expression,\n typeArguments,\n argumentsArray,\n );\n return node;\n};\n\nexport const createForOfStatement = ({\n awaitModifier,\n expression,\n initializer,\n statement,\n}: {\n // TODO: parser - simplify this to be await?: boolean\n awaitModifier?: ts.AwaitKeyword;\n expression: ts.Expression;\n initializer: ts.ForInitializer;\n statement: ts.Statement;\n}) => {\n const node = ts.factory.createForOfStatement(\n awaitModifier,\n initializer,\n expression,\n statement,\n );\n return node;\n};\n\nexport const createAssignment = ({\n left,\n right,\n}: {\n left: ts.Expression;\n right: ts.Expression;\n}) => ts.factory.createAssignment(left, right);\n\nexport const createBlock = ({\n multiLine = true,\n statements,\n}: {\n multiLine?: boolean;\n statements: Array<ts.Statement>;\n}) => ts.factory.createBlock(statements, multiLine);\n","import ts from 'typescript';\n\nimport { createTypeReferenceNode } from './types';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n type ImportExportItemObject,\n ots,\n} from './utils';\n\n/**\n * Create export all declaration. Example: `export * from './y'`.\n * @param module - module containing exports\n * @returns ts.ExportDeclaration\n */\nexport const createExportAllDeclaration = ({\n module,\n}: {\n module: string;\n}): ts.ExportDeclaration => {\n const statement = ts.factory.createExportDeclaration(\n undefined,\n false,\n undefined,\n ots.string(module),\n );\n return statement;\n};\n\nexport type ImportExportItem = ImportExportItemObject | string;\n\nexport const createCallExpression = ({\n parameters = [],\n functionName,\n types,\n}: {\n functionName:\n | string\n | ts.PropertyAccessExpression\n | ts.PropertyAccessChain\n | ts.ElementAccessExpression;\n parameters?: Array<string | ts.Expression | undefined>;\n types?: ReadonlyArray<ts.TypeNode>;\n}) => {\n const expression =\n typeof functionName === 'string'\n ? createIdentifier({ text: functionName })\n : functionName;\n const argumentsArray = parameters\n .filter((parameter) => parameter !== undefined)\n .map((parameter) =>\n typeof parameter === 'string'\n ? createIdentifier({ text: parameter })\n : parameter,\n );\n const callExpression = ts.factory.createCallExpression(\n expression,\n types,\n argumentsArray,\n );\n return callExpression;\n};\n\n/**\n * Create a named export declaration. Example: `export { X } from './y'`.\n * @param exports - named imports to export\n * @param module - module containing exports\n * @returns ts.ExportDeclaration\n */\nexport const createNamedExportDeclarations = ({\n exports,\n module,\n}: {\n exports: Array<ImportExportItem> | ImportExportItem;\n module: string;\n}): ts.ExportDeclaration => {\n const exportedTypes = Array.isArray(exports) ? exports : [exports];\n const hasNonTypeExport = exportedTypes.some(\n (item) => typeof item !== 'object' || !item.asType,\n );\n const elements = exportedTypes.map((name) => {\n const item = typeof name === 'string' ? { name } : name;\n return ots.export({\n alias: item.alias,\n asType: hasNonTypeExport && item.asType,\n name: item.name,\n });\n });\n const exportClause = ts.factory.createNamedExports(elements);\n const moduleSpecifier = ots.string(module);\n const statement = ts.factory.createExportDeclaration(\n undefined,\n !hasNonTypeExport,\n exportClause,\n moduleSpecifier,\n );\n return statement;\n};\n\n/**\n * Create a const variable. Optionally, it can use const assertion or export\n * statement. Example: `export x = {} as const`.\n * @param assertion use const assertion?\n * @param exportConst export created variable?\n * @param expression expression for the variable.\n * @param name name of the variable.\n * @returns ts.VariableStatement\n */\nexport const createConstVariable = ({\n comment,\n assertion,\n destructure,\n exportConst,\n expression,\n name,\n typeName,\n}: {\n assertion?: 'const' | ts.TypeNode;\n comment?: Comments;\n destructure?: boolean;\n exportConst?: boolean;\n expression: ts.Expression;\n name: string;\n // TODO: support a more intuitive definition of generics for example\n typeName?: string | ts.IndexedAccessTypeNode;\n}): ts.VariableStatement => {\n const initializer = assertion\n ? ts.factory.createAsExpression(\n expression,\n typeof assertion === 'string'\n ? createTypeReferenceNode({\n typeName: assertion,\n })\n : assertion,\n )\n : expression;\n const nameIdentifier = createIdentifier({ text: name });\n const declaration = ts.factory.createVariableDeclaration(\n destructure\n ? ts.factory.createObjectBindingPattern([\n ts.factory.createBindingElement(\n undefined,\n undefined,\n nameIdentifier,\n undefined,\n ),\n ])\n : nameIdentifier,\n undefined,\n typeName\n ? typeof typeName === 'string'\n ? createTypeReferenceNode({ typeName })\n : typeName\n : undefined,\n initializer,\n );\n const statement = ts.factory.createVariableStatement(\n exportConst\n ? [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)]\n : undefined,\n ts.factory.createVariableDeclarationList([declaration], ts.NodeFlags.Const),\n );\n\n addLeadingComments({\n comments: comment,\n node: statement,\n });\n\n return statement;\n};\n\n/**\n * Create a named import declaration. Example: `import { X } from './y'`.\n * @param imports - named exports to import\n * @param module - module containing imports\n * @returns ts.ImportDeclaration\n */\nexport const createNamedImportDeclarations = ({\n imports,\n module,\n}: {\n imports: Array<ImportExportItem> | ImportExportItem;\n module: string;\n}): ts.ImportDeclaration => {\n const importedTypes = Array.isArray(imports) ? imports : [imports];\n const hasNonTypeImport = importedTypes.some(\n (item) => typeof item !== 'object' || !item.asType,\n );\n const elements = importedTypes.map((name) => {\n const item = typeof name === 'string' ? { name } : name;\n return ots.import({\n alias: item.alias,\n asType: hasNonTypeImport && item.asType,\n name: item.name,\n });\n });\n const namedBindings = ts.factory.createNamedImports(elements);\n const importClause = ts.factory.createImportClause(\n !hasNonTypeImport,\n undefined,\n namedBindings,\n );\n const moduleSpecifier = ots.string(module);\n const statement = ts.factory.createImportDeclaration(\n undefined,\n importClause,\n moduleSpecifier,\n );\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createCallExpression } from './module';\nimport {\n type AccessLevel,\n createBlock,\n createTypeNode,\n type FunctionParameter,\n type FunctionTypeParameter,\n toAccessLevelModifiers,\n toExpression,\n toParameterDeclarations,\n toTypeParameters,\n} from './types';\nimport type { Comments } from './utils';\nimport { addLeadingComments, createIdentifier, isType } from './utils';\n\n/**\n * Create a class constructor declaration.\n * @param accessLevel - the access level of the constructor.\n * @param comment - comment to add to function.\n * @param multiLine - if it should be multi line.\n * @param parameters - parameters for the constructor.\n * @param statements - statements to put in the constructor body.\n * @returns ts.ConstructorDeclaration\n */\nexport const createConstructorDeclaration = ({\n accessLevel,\n comment,\n multiLine = true,\n parameters = [],\n statements = [],\n}: {\n accessLevel?: AccessLevel;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n statements?: ts.Statement[];\n}) => {\n const node = ts.factory.createConstructorDeclaration(\n toAccessLevelModifiers(accessLevel),\n toParameterDeclarations(parameters),\n createBlock({ multiLine, statements }),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\n/**\n * Create a class method declaration.\n * @param accessLevel - the access level of the method.\n * @param comment - comment to add to function.\n * @param isStatic - if the function is static.\n * @param multiLine - if it should be multi line.\n * @param name - name of the method.\n * @param parameters - parameters for the method.\n * @param returnType - the return type of the method.\n * @param statements - statements to put in the constructor body.\n * @returns ts.MethodDeclaration\n */\nexport const createMethodDeclaration = ({\n accessLevel,\n comment,\n isStatic = false,\n multiLine = true,\n name,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n accessLevel?: AccessLevel;\n comment?: Comments;\n isStatic?: boolean;\n multiLine?: boolean;\n name: string;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[];\n types?: FunctionTypeParameter[];\n}) => {\n let modifiers = toAccessLevelModifiers(accessLevel);\n\n if (isStatic) {\n modifiers = [\n ...modifiers,\n ts.factory.createModifier(ts.SyntaxKind.StaticKeyword),\n ];\n }\n\n const node = ts.factory.createMethodDeclaration(\n modifiers,\n undefined,\n createIdentifier({ text: name }),\n undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n createBlock({ multiLine, statements }),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\ntype ClassDecorator = {\n args: any[];\n name: string;\n};\n\n/**\n * Create a class declaration.\n * @param decorator - the class decorator\n * @param members - elements in the class.\n * @param name - name of the class.\n * @returns ts.ClassDeclaration\n */\nexport const createClassDeclaration = ({\n decorator,\n members = [],\n name,\n}: {\n decorator?: ClassDecorator;\n members?: ts.ClassElement[];\n name: string;\n}) => {\n let modifiers: ts.ModifierLike[] = [\n ts.factory.createModifier(ts.SyntaxKind.ExportKeyword),\n ];\n\n if (decorator) {\n modifiers = [\n ts.factory.createDecorator(\n createCallExpression({\n functionName: decorator.name,\n parameters: decorator.args\n .map((arg) => toExpression({ value: arg }))\n .filter(isType<ts.Expression>),\n }),\n ),\n ...modifiers,\n ];\n }\n\n // Add newline between each class member.\n let m: ts.ClassElement[] = [];\n members.forEach((member) => {\n // @ts-expect-error\n m = [...m, member, createIdentifier({ text: '\\n' })];\n });\n\n return ts.factory.createClassDeclaration(\n modifiers,\n createIdentifier({ text: name }),\n [],\n [],\n m,\n );\n};\n","import ts from 'typescript';\n\nexport const expressionToStatement = ({\n expression,\n}: {\n expression: ts.Expression;\n}) => {\n const statement = ts.factory.createExpressionStatement(expression);\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createCallExpression } from './module';\nimport { createTypeReferenceNode } from './types';\nimport { createIdentifier, isType } from './utils';\n\nexport const createReturnStatement = ({\n expression,\n}: {\n expression?: ts.Expression;\n}) => ts.factory.createReturnStatement(expression);\n\n/**\n * Create a return function call statement.\n * Example `return fn<string>(params)`.\n * @param args arguments to pass to the function.\n * @param name name of the function to call.\n * @param types list of function types\n * @returns ts.ReturnStatement\n */\nexport const createReturnFunctionCall = ({\n args = [],\n name,\n types = [],\n}: {\n args: any[];\n name: string;\n types?: string[];\n}) => {\n const typeArguments = types.map((type) =>\n createTypeReferenceNode({ typeName: type }),\n );\n const argumentsArray = args\n .map((arg) =>\n ts.isExpression(arg) ? arg : createIdentifier({ text: arg }),\n )\n .filter(isType<ts.Identifier | ts.Expression>);\n const expression = createCallExpression({\n functionName: name,\n parameters: argumentsArray,\n types: typeArguments,\n });\n const statement = createReturnStatement({ expression });\n return statement;\n};\n\nexport const createReturnVariable = ({\n expression,\n}: {\n expression: string | ts.Expression;\n}) => {\n const statement = createReturnStatement({\n expression:\n typeof expression === 'string'\n ? createIdentifier({ text: expression })\n : expression,\n });\n return statement;\n};\n","import ts from 'typescript';\n\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport { expressionToStatement } from './convert';\nimport { createCallExpression } from './module';\nimport {\n createArrowFunction,\n createBlock,\n createNewExpression,\n createPropertyAccessChain,\n createPropertyAccessExpression,\n} from './types';\nimport { createIdentifier } from './utils';\n\nexport const createSafeAccessExpression = (path: string[]) =>\n path.slice(1).reduce<ts.Expression>(\n (expression, element) => {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n if (validTypescriptIdentifierRegExp.test(element)) {\n return createPropertyAccessChain({\n expression,\n name: element,\n });\n }\n\n return ts.factory.createElementAccessChain(\n expression,\n ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),\n createIdentifier({ text: element }),\n );\n },\n createIdentifier({ text: path[0] }),\n );\n\nexport const createAccessExpression = (path: string[]) =>\n path.slice(1).reduce<ts.Expression>(\n (expression, element) =>\n createPropertyAccessExpression({\n expression,\n name: element,\n }),\n createIdentifier({ text: path[0] }),\n );\n\n/**\n * Handles an array of access expressions instead of nesting them (default TypeScript syntax)\n */\nexport const createPropertyAccessExpressions = ({\n expressions,\n}: {\n expressions: Array<string | ts.Expression | ts.MemberName>;\n}): ts.PropertyAccessExpression => {\n const expression = expressions.reduce((expression, name) => {\n const node = createPropertyAccessExpression({\n expression,\n // @ts-expect-error\n name,\n });\n return node;\n });\n return expression as ts.PropertyAccessExpression;\n};\n\nexport const createBinaryExpression = ({\n left,\n operator = '=',\n right,\n}: {\n left: ts.Expression;\n operator?: '=' | '===' | 'in';\n right: ts.Expression | string;\n}) => {\n const expression = ts.factory.createBinaryExpression(\n left,\n // TODO: add support for other tokens\n operator === '='\n ? ts.SyntaxKind.EqualsToken\n : operator === '==='\n ? ts.SyntaxKind.EqualsEqualsEqualsToken\n : ts.SyntaxKind.InKeyword,\n typeof right === 'string' ? createIdentifier({ text: right }) : right,\n );\n return expression;\n};\n\nexport const createIfStatement = ({\n expression,\n thenStatement,\n elseStatement,\n}: {\n elseStatement?: ts.Statement;\n expression: ts.Expression;\n thenStatement: ts.Statement;\n}) => ts.factory.createIfStatement(expression, thenStatement, elseStatement);\n\nexport const createDateTransformMutation = ({\n path,\n}: {\n path: string[];\n}): ts.Statement => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const thenStatement = createBlock({\n statements: [\n expressionToStatement({\n expression: ts.factory.createBinaryExpression(\n accessExpression,\n ts.SyntaxKind.EqualsToken,\n createNewExpression({\n argumentsArray: [accessExpression],\n expression: createIdentifier({ text: 'Date' }),\n }),\n ),\n }),\n ],\n });\n\n const statement = createIfStatement({\n expression: safeAccessExpression,\n thenStatement,\n });\n\n return statement;\n};\n\nexport const createFunctionTransformMutation = ({\n path,\n transformerName,\n}: {\n path: string[];\n transformerName: string;\n}) => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const thenStatement = createBlock({\n statements: [\n expressionToStatement({\n expression: createCallExpression({\n functionName: transformerName,\n parameters: [accessExpression],\n }),\n }),\n ],\n });\n\n const statement = [\n createIfStatement({\n expression: safeAccessExpression,\n thenStatement,\n }),\n ];\n\n return statement;\n};\n\nexport const createArrayTransformMutation = ({\n path,\n transformerName,\n}: {\n path: string[];\n transformerName: string;\n}): ts.Statement => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const statement = createIfStatement({\n expression: createCallExpression({\n functionName: createPropertyAccessExpression({\n expression: 'Array',\n name: 'isArray',\n }),\n parameters: [safeAccessExpression],\n }),\n thenStatement: createBlock({\n statements: [\n expressionToStatement({\n expression: ts.factory.createCallChain(\n createPropertyAccessExpression({\n expression: accessExpression,\n name: 'forEach',\n }),\n undefined,\n undefined,\n [createIdentifier({ text: transformerName })],\n ),\n }),\n ],\n }),\n });\n\n return statement;\n};\n\nexport const createDateTransformerExpression = ({\n parameterName,\n}: {\n parameterName: string;\n}) => {\n const expression = createIdentifier({ text: 'Date' });\n const newExpression = createNewExpression({\n argumentsArray: [createIdentifier({ text: parameterName })],\n expression,\n });\n return newExpression;\n};\n\nexport const createArrayMapTransform = ({\n path,\n transformExpression,\n}: {\n path: string[];\n transformExpression: ts.Expression;\n}) => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const statement = createIfStatement({\n expression: createCallExpression({\n functionName: createPropertyAccessExpression({\n expression: 'Array',\n name: 'isArray',\n }),\n parameters: [safeAccessExpression],\n }),\n thenStatement: createBlock({\n statements: [\n expressionToStatement({\n expression: ts.factory.createBinaryExpression(\n accessExpression,\n ts.factory.createToken(ts.SyntaxKind.EqualsToken),\n ts.factory.createCallChain(\n createPropertyAccessExpression({\n expression: accessExpression,\n name: 'map',\n }),\n undefined,\n undefined,\n [\n createArrowFunction({\n parameters: [\n {\n name: 'item',\n },\n ],\n statements: transformExpression,\n }),\n ],\n ),\n ),\n }),\n ],\n }),\n });\n\n return statement;\n};\n","import ts from 'typescript';\n\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport {\n createKeywordTypeNode,\n createParameterDeclaration,\n createStringLiteral,\n createTypeNode,\n createTypeReferenceNode,\n} from './types';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n tsNodeToString,\n} from './utils';\n\nconst nullNode = createTypeReferenceNode({ typeName: 'null' });\n\n// Property of a interface type node.\nexport type Property = {\n comment?: Comments;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name: string;\n type: any | ts.TypeNode;\n};\n\n/**\n * Returns a union of provided node with null if marked as nullable,\n * otherwise returns the provided node unmodified.\n */\nconst maybeNullable = ({\n isNullable,\n node,\n}: {\n isNullable?: boolean;\n node: ts.TypeNode;\n}) => {\n if (!isNullable) {\n return node;\n }\n return ts.factory.createUnionTypeNode([node, nullNode]);\n};\n\n/**\n * Create a interface type node. Example `{ readonly x: string, y?: number }`\n * @param properties - the properties of the interface.\n * @param isNullable - if the whole interface can be nullable\n * @returns ts.TypeLiteralNode | ts.TypeUnionNode\n */\nexport const createTypeInterfaceNode = ({\n indexProperty,\n isNullable,\n properties,\n useLegacyResolution,\n}: {\n /**\n * Adds an index signature if defined.\n * @example\n * ```ts\n * type IndexProperty = {\n * [key: string]: string\n * }\n * ```\n */\n indexProperty?: Property;\n isNullable?: boolean;\n properties: Property[];\n useLegacyResolution: boolean;\n}) => {\n const propertyTypes: Array<ts.TypeNode> = [];\n\n const members: Array<ts.TypeElement> = properties.map((property) => {\n const modifiers: readonly ts.Modifier[] | undefined = property.isReadOnly\n ? [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)]\n : undefined;\n\n const questionToken: ts.QuestionToken | undefined =\n property.isRequired !== false\n ? undefined\n : ts.factory.createToken(ts.SyntaxKind.QuestionToken);\n\n const type: ts.TypeNode | undefined = createTypeNode(property.type);\n propertyTypes.push(type);\n\n const signature = ts.factory.createPropertySignature(\n modifiers,\n useLegacyResolution ||\n property.name.match(validTypescriptIdentifierRegExp)\n ? property.name\n : createStringLiteral({ text: property.name }),\n questionToken,\n type,\n );\n\n addLeadingComments({\n comments: property.comment,\n node: signature,\n });\n\n return signature;\n });\n\n if (indexProperty) {\n const modifiers: readonly ts.Modifier[] | undefined =\n indexProperty.isReadOnly\n ? [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)]\n : undefined;\n const indexSignature = ts.factory.createIndexSignature(\n modifiers,\n [\n createParameterDeclaration({\n name: createIdentifier({ text: indexProperty.name }),\n type: createKeywordTypeNode({ keyword: 'string' }),\n }),\n ],\n createTypeNode(indexProperty.type),\n );\n members.push(indexSignature);\n }\n\n const node = ts.factory.createTypeLiteralNode(members);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type union node. Example `string | number | boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.UnionTypeNode\n */\nexport const createTypeUnionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createUnionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type intersection node. Example `string & number & boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.IntersectionTypeNode | ts.UnionTypeNode\n */\nexport const createTypeIntersectionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createIntersectionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type tuple node. Example `string, number, boolean`\n * @param isNullable if the whole type can be null\n * @param types the types in the union\n * @returns ts.UnionTypeNode\n */\nexport const createTypeTupleNode = ({\n isNullable = false,\n types,\n}: {\n isNullable?: boolean;\n types: Array<any | ts.TypeNode>;\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createTupleTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type record node. Example `{ [key: string]: string }`\n * @param keys - key types.\n * @param values - value types.\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeRecordNode = (\n keys: (any | ts.TypeNode)[],\n values: (any | ts.TypeNode)[],\n isNullable: boolean = false,\n useLegacyResolution: boolean = true,\n) => {\n const keyNode = createTypeUnionNode({\n types: keys,\n });\n const valueNode = createTypeUnionNode({\n types: values,\n });\n // NOTE: We use the syntax `{ [key: string]: string }` because using a Record causes\n // invalid types with circular dependencies. This is functionally the same.\n // Ref: https://github.com/hey-api/openapi-ts/issues/370\n const node = createTypeInterfaceNode({\n properties: [\n {\n name: `[key: ${tsNodeToString({ node: keyNode, unescape: true })}]`,\n type: valueNode,\n },\n ],\n useLegacyResolution,\n });\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type array node. Example `Array<string | number>`\n * @param types - the types\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeArrayNode = (\n types: (any | ts.TypeNode)[] | ts.TypeNode | string,\n isNullable: boolean = false,\n) => {\n const node = createTypeReferenceNode({\n typeArguments: [\n // @ts-ignore\n Array.isArray(types) ? createTypeUnionNode({ types }) : types,\n ],\n typeName: 'Array',\n });\n return maybeNullable({ isNullable, node });\n};\n","import * as classes from './classes';\nimport * as convert from './convert';\nimport * as module from './module';\nimport * as _return from './return';\nimport * as transform from './transform';\nimport * as typedef from './typedef';\nimport * as types from './types';\nimport * as utils from './utils';\n\nexport type { Property } from './typedef';\nexport type { FunctionParameter } from './types';\nexport type { Comments } from './utils';\nexport type { ClassElement, Node, TypeNode } from 'typescript';\n\nexport const compiler = {\n anonymousFunction: types.createAnonymousFunction,\n arrayLiteralExpression: types.createArrayLiteralExpression,\n arrowFunction: types.createArrowFunction,\n assignment: types.createAssignment,\n awaitExpression: types.createAwaitExpression,\n binaryExpression: transform.createBinaryExpression,\n block: types.createBlock,\n callExpression: module.createCallExpression,\n classDeclaration: classes.createClassDeclaration,\n conditionalExpression: types.createConditionalExpression,\n constVariable: module.createConstVariable,\n constructorDeclaration: classes.createConstructorDeclaration,\n enumDeclaration: types.createEnumDeclaration,\n exportAllDeclaration: module.createExportAllDeclaration,\n exportNamedDeclaration: module.createNamedExportDeclarations,\n expressionToStatement: convert.expressionToStatement,\n forOfStatement: types.createForOfStatement,\n functionTypeNode: types.createFunctionTypeNode,\n identifier: utils.createIdentifier,\n ifStatement: transform.createIfStatement,\n indexedAccessTypeNode: types.createIndexedAccessTypeNode,\n isTsNode: utils.isTsNode,\n keywordTypeNode: types.createKeywordTypeNode,\n literalTypeNode: types.createLiteralTypeNode,\n methodDeclaration: classes.createMethodDeclaration,\n namedImportDeclarations: module.createNamedImportDeclarations,\n namespaceDeclaration: types.createNamespaceDeclaration,\n newExpression: types.createNewExpression,\n nodeToString: utils.tsNodeToString,\n null: types.createNull,\n objectExpression: types.createObjectType,\n ots: utils.ots,\n parameterDeclaration: types.createParameterDeclaration,\n propertyAccessExpression: types.createPropertyAccessExpression,\n propertyAccessExpressions: transform.createPropertyAccessExpressions,\n returnFunctionCall: _return.createReturnFunctionCall,\n returnStatement: _return.createReturnStatement,\n returnVariable: _return.createReturnVariable,\n safeAccessExpression: transform.createSafeAccessExpression,\n stringLiteral: types.createStringLiteral,\n stringToTsNodes: utils.stringToTsNodes,\n transformArrayMap: transform.createArrayMapTransform,\n transformArrayMutation: transform.createArrayTransformMutation,\n transformDateMutation: transform.createDateTransformMutation,\n transformFunctionMutation: transform.createFunctionTransformMutation,\n transformNewDate: transform.createDateTransformerExpression,\n typeAliasDeclaration: types.createTypeAliasDeclaration,\n typeArrayNode: typedef.createTypeArrayNode,\n typeInterfaceNode: typedef.createTypeInterfaceNode,\n typeIntersectionNode: typedef.createTypeIntersectionNode,\n typeNode: types.createTypeNode,\n typeOfExpression: types.createTypeOfExpression,\n typeParenthesizedNode: types.createTypeParenthesizedNode,\n typeRecordNode: typedef.createTypeRecordNode,\n typeReferenceNode: types.createTypeReferenceNode,\n typeTupleNode: typedef.createTypeTupleNode,\n typeUnionNode: typedef.createTypeUnionNode,\n};\n","import path from 'node:path';\n\nimport { TypeScriptFile } from '../generate/files';\nimport type { ParserConfig } from '../openApi/config';\nimport type { Config } from '../types/config';\nimport type { Files } from '../types/utils';\nimport { resolveRef } from '../utils/ref';\nimport type { IR } from './ir';\n\ninterface ContextFile {\n /**\n * Unique file identifier.\n */\n id: string;\n /**\n * Relative file path to the output path.\n * @example\n * 'bar/foo.ts'\n */\n path: string;\n}\n\nexport class IRContext<Spec extends Record<string, any> = any> {\n public config: Config;\n public files: Files;\n public ir: IR;\n public parserConfig: ParserConfig;\n public spec: Spec;\n\n constructor({\n config,\n parserConfig,\n spec,\n }: {\n config: Config;\n parserConfig: ParserConfig;\n spec: Spec;\n }) {\n this.config = config;\n this.files = {};\n this.ir = {};\n this.parserConfig = parserConfig;\n this.spec = spec;\n }\n\n /**\n * Create and return a new TypeScript file. Also set the current file context\n * to the newly created file.\n */\n public createFile(file: ContextFile): TypeScriptFile {\n // TODO: parser - handle attempt to create duplicate\n const outputParts = file.path.split('/');\n const outputDir = path.resolve(\n this.config.output.path,\n ...outputParts.slice(0, outputParts.length - 1),\n );\n const createdFile = new TypeScriptFile({\n dir: outputDir,\n name: `${outputParts[outputParts.length - 1]}.ts`,\n });\n this.files[file.id] = createdFile;\n return createdFile;\n }\n\n public file({ id }: Pick<ContextFile, 'id'>): TypeScriptFile | undefined {\n return this.files[id];\n }\n\n // TODO: parser - works the same as resolveRef, but for IR schemas.\n // for now, they map 1:1, but if they diverge (like with OpenAPI 2.0),\n // we will want to rewrite $refs at parse time, so they continue pointing\n // to the correct IR location\n public resolveIrRef<T>($ref: string) {\n return resolveRef<T>({\n $ref,\n spec: this.ir,\n });\n }\n\n public resolveRef<T>($ref: string) {\n return resolveRef<T>({\n $ref,\n spec: this.spec,\n });\n }\n}\n","import { existsSync, mkdirSync, type PathLike } from 'node:fs';\n\nexport const ensureDirSync = (path: PathLike) => {\n if (!existsSync(path)) {\n mkdirSync(path, { recursive: true });\n }\n};\n\n/**\n * Construct a relative import path to modules. This is used for example\n * in plugins to import types or services module.\n */\nexport const relativeModulePath = ({\n moduleOutput,\n sourceOutput,\n}: {\n /**\n * Output path to the imported module.\n * @example\n * 'types'\n */\n moduleOutput: string;\n /**\n * Output path to the source module.\n * @example\n * '@tanstack/react-query'\n */\n sourceOutput: string;\n}): string => {\n const outputParts = sourceOutput.split('/');\n const relativePath =\n new Array(outputParts.length).fill('').join('../') || './';\n return `${relativePath}${moduleOutput}`;\n};\n","import { rmSync, writeFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport type ts from 'typescript';\n\nimport { compiler } from '../compiler';\nimport { type ImportExportItemObject, tsNodeToString } from '../compiler/utils';\nimport type { IRContext } from '../ir/context';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport { reservedWordsRegExp } from '../utils/regexp';\nimport { ensureDirSync } from './utils';\n\ninterface Identifier {\n /**\n * Did this function add a new property to the file's `identifiers` map?\n */\n created: boolean;\n /**\n * The resolved identifier name. False means the identifier has been blacklisted.\n */\n name: string | false;\n}\n\ntype Namespace = Record<\n string,\n Pick<Identifier, 'name'> & {\n /**\n * Ref to the type in OpenAPI specification.\n */\n $ref: string;\n }\n>;\n\ninterface Namespaces {\n /**\n * Type namespace. Types, interfaces, and type aliases exist here.\n * @example\n * ```ts\n * export type Foo = string;\n * ```\n */\n type: Namespace;\n /**\n * Value namespace. Variables, functions, classes, and constants exist here.\n * @example\n * ```js\n * export const foo = '';\n * ```\n */\n value: Namespace;\n}\n\nexport class TypeScriptFile {\n private _headers: Array<string> = [];\n private _imports = new Map<string, Map<string, ImportExportItemObject>>();\n private _items: Array<ts.Node | string> = [];\n private _name: string;\n private _path: string;\n\n public namespaces: Namespaces = {\n type: {},\n value: {},\n };\n /**\n * Path relative to the client output root.\n */\n // TODO: parser - add relative path property for quick access, currently\n // everything is resolved into an absolute path with cwd\n // public relativePath: string;\n\n public constructor({\n dir,\n header = true,\n name,\n }: {\n dir: string;\n header?: boolean;\n name: string;\n }) {\n this._name = this._setName(name);\n this._path = path.resolve(dir, this._name);\n\n if (header) {\n this._headers.push(\n '// This file is auto-generated by @hey-api/openapi-ts',\n );\n }\n }\n\n public add(...nodes: Array<ts.Node | string>) {\n this._items = this._items.concat(nodes);\n }\n\n /**\n * Prevents a specific identifier from being created. This is useful for\n * transformers where we know a certain transformer won't be needed, and\n * we want to avoid attempting to create since we know it won't happen.\n */\n public blockIdentifier({\n $ref,\n namespace,\n }: Pick<EnsureUniqueIdentifierData, '$ref'> & {\n namespace: keyof Namespaces;\n }): Identifier {\n const refValue = this.namespaces[namespace][$ref];\n if (!refValue) {\n throw new Error(\n `Identifier for $ref ${$ref} in namespace ${namespace} not found`,\n );\n }\n\n refValue.name = false;\n\n return {\n created: false,\n name: refValue.name,\n };\n }\n\n public identifier({\n namespace,\n ...args\n }: Omit<EnsureUniqueIdentifierData, 'namespace'> & {\n namespace: keyof Namespaces;\n }): Identifier {\n let validNameTransformer: ((name: string) => string) | undefined;\n switch (namespace) {\n // TODO: parser - add case transformers\n case 'type':\n case 'value':\n validNameTransformer = (name) =>\n ensureValidTypeScriptJavaScriptIdentifier(name).replace(\n reservedWordsRegExp,\n '_$1',\n );\n break;\n }\n return ensureUniqueIdentifier({\n namespace: this.namespaces[namespace],\n validNameTransformer,\n ...args,\n });\n }\n\n /**\n * Adds an import to the provided module. Handles duplication, returns added import.\n */\n public import({\n module,\n ...importedItem\n }: ImportExportItemObject & {\n module: string;\n }): ImportExportItemObject {\n let moduleMap = this._imports.get(module);\n\n if (!moduleMap) {\n moduleMap = new Map<string, ImportExportItemObject>();\n this._imports.set(module, moduleMap);\n }\n\n const match = moduleMap.get(importedItem.name);\n if (match) {\n return match;\n }\n\n moduleMap.set(importedItem.name, importedItem);\n return importedItem;\n }\n\n public isEmpty() {\n return !this._items.length;\n }\n\n public nameWithoutExtension() {\n const { name } = splitNameAndExtension(this._name);\n return name;\n }\n\n public relativePathToFile({\n context,\n id,\n }: {\n context: IRContext;\n id: string;\n }): string {\n const file = context.file({ id });\n if (!file) {\n throw new Error(`File with id ${id} does not exist`);\n }\n\n const thisRelativePath = this._path.substring(\n context.config.output.path.length + 1,\n );\n const fileRelativePath = file._path.substring(\n context.config.output.path.length + 1,\n );\n const outputParts = thisRelativePath.split(path.sep);\n const relativePath =\n new Array(outputParts.length).fill('').join('../') || './';\n return `${relativePath}${splitNameAndExtension(fileRelativePath).name}`;\n }\n\n public remove(options?: Parameters<typeof rmSync>[1]) {\n rmSync(this._path, options);\n }\n\n /**\n * Removes last node form the stack. Works as undo.\n */\n public removeNode() {\n this._items = this._items.slice(0, this._items.length - 1);\n }\n\n private _setName(fileName: string) {\n if (fileName.includes('index')) {\n return fileName;\n }\n\n const { extension, name } = splitNameAndExtension(fileName);\n return [name, 'gen', extension].filter(Boolean).join('.');\n }\n\n public toString(separator: string = '\\n') {\n let output: string[] = [];\n if (this._headers.length) {\n output.push(this._headers.join('\\n'));\n }\n const importsStringArray: string[] = [];\n for (const [_module, moduleMap] of this._imports.entries()) {\n const imports = Array.from(moduleMap.values());\n const node = compiler.namedImportDeclarations({\n imports,\n module: _module,\n });\n importsStringArray.push(tsNodeToString({ node }));\n }\n if (importsStringArray.length) {\n output.push(importsStringArray.join('\\n'));\n }\n output = output.concat(\n this._items.map((node) =>\n typeof node === 'string'\n ? node\n : tsNodeToString({ node, unescape: true }),\n ),\n );\n return output.join(separator);\n }\n\n public write(separator = '\\n') {\n if (this.isEmpty()) {\n this.remove({ force: true });\n return;\n }\n\n let dir = this._path;\n if (typeof this._path === 'string') {\n const parts = this._path.split(path.sep);\n dir = parts.slice(0, parts.length - 1).join(path.sep);\n }\n ensureDirSync(dir);\n writeFileSync(this._path, this.toString(separator));\n }\n}\n\ninterface EnsureUniqueIdentifierData {\n $ref: string;\n count?: number;\n create?: boolean;\n namespace: Namespace;\n validNameTransformer?: (value: string) => string;\n}\n\nconst ensureUniqueIdentifier = ({\n $ref,\n count = 1,\n create = false,\n namespace,\n validNameTransformer,\n}: EnsureUniqueIdentifierData): Identifier => {\n const parts = $ref.split('/');\n let name = parts[parts.length - 1] || '';\n\n if (!name) {\n return {\n created: false,\n name: '',\n };\n }\n\n const refValue = namespace[$ref];\n if (refValue) {\n return {\n created: false,\n name: refValue.name,\n };\n }\n\n if (count > 1) {\n name = `${name}${count}`;\n }\n\n let nameValue = namespace[name];\n if (nameValue) {\n if (nameValue.$ref === $ref) {\n return {\n created: false,\n name: nameValue.name,\n };\n }\n\n return ensureUniqueIdentifier({\n $ref,\n count: count + 1,\n create,\n namespace,\n validNameTransformer,\n });\n }\n\n if (!create) {\n return {\n created: false,\n name: '',\n };\n }\n\n nameValue = {\n $ref,\n name: validNameTransformer ? validNameTransformer(name) : name,\n };\n namespace[name] = nameValue;\n namespace[nameValue.$ref] = nameValue;\n\n return {\n created: true,\n name: nameValue.name,\n };\n};\n\nconst splitNameAndExtension = (fileName: string) => {\n const match = fileName.match(/\\.[0-9a-z]+$/i);\n const extension = match ? match[0].slice(1) : '';\n const name = fileName.slice(\n 0,\n fileName.length - (extension ? extension.length + 1 : 0),\n );\n return { extension, name };\n};\n","export const irRef = '#/ir/';\n\nexport const isRefOpenApiComponent = ($ref: string): boolean => {\n const parts = refToParts($ref);\n // reusable components are nested within components/<namespace>/<name>\n return parts.length === 3 && parts[0] === 'components';\n};\n\nconst refToParts = ($ref: string): string[] => {\n // Remove the leading `#` and split by `/` to traverse the object\n const parts = $ref.replace(/^#\\//, '').split('/');\n return parts;\n};\n\nexport const resolveRef = <T>({\n $ref,\n spec,\n}: {\n $ref: string;\n spec: Record<string, any>;\n}): T => {\n const parts = refToParts($ref);\n\n let current = spec;\n\n for (const part of parts) {\n const p = part as keyof typeof current;\n if (current[p] === undefined) {\n throw new Error(`Reference not found: ${$ref}`);\n }\n current = current[p];\n }\n\n return current as T;\n};\n","import type { IRContext } from '../../../ir/context';\nimport type { OpenApiV3_0_3 } from '../types/spec';\n\nexport const parseV3_0_3 = (context: IRContext<OpenApiV3_0_3>): undefined => {\n // TODO\n console.log(context.spec);\n};\n","const jsonMimeRegExp = /^application\\/(.*\\+)?json(;.*)?$/i;\nconst multipartFormDataMimeRegExp = /^multipart\\/form-data(;.*)?$/i;\nconst xWwwFormUrlEncodedMimeRegExp =\n /^application\\/x-www-form-urlencoded(;.*)?$/i;\n\nexport type IRMediaType = 'form-data' | 'json' | 'url-search-params';\n\nexport const mediaTypeToIrMediaType = ({\n mediaType,\n}: {\n mediaType: string;\n}): IRMediaType | undefined => {\n jsonMimeRegExp.lastIndex = 0;\n if (jsonMimeRegExp.test(mediaType)) {\n return 'json';\n }\n\n multipartFormDataMimeRegExp.lastIndex = 0;\n if (multipartFormDataMimeRegExp.test(mediaType)) {\n return 'form-data';\n }\n\n xWwwFormUrlEncodedMimeRegExp.lastIndex = 0;\n if (xWwwFormUrlEncodedMimeRegExp.test(mediaType)) {\n return 'url-search-params';\n }\n};\n","import type { IRMediaType } from '../../../ir/mediaType';\nimport { mediaTypeToIrMediaType } from '../../../ir/mediaType';\nimport type { MediaTypeObject, SchemaObject } from '../types/spec';\n\ninterface Content {\n mediaType: string;\n schema: SchemaObject | undefined;\n type: IRMediaType | undefined;\n}\n\nexport const mediaTypeObject = ({\n content,\n}: {\n content: Record<string, MediaTypeObject> | undefined;\n}): Content | undefined => {\n // return the first supported MIME type\n for (const mediaType in content) {\n return {\n mediaType,\n schema: content[mediaType].schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n };\n }\n};\n","import type { IRSchemaObject } from './ir';\n\nexport const paginationKeywordsRegExp = /^(cursor|offset|page|start)$/;\n\nexport interface Pagination {\n in: string;\n name: string;\n schema: IRSchemaObject;\n}\n","import type { IRSchemaObject } from './ir';\n\n/**\n * Simply adds `items` to the schema. Also handles setting the logical operator\n * and avoids setting it for a single item or tuples.\n */\nexport const addItemsToSchema = ({\n items,\n logicalOperator = 'or',\n mutateSchemaOneItem = false,\n schema,\n}: {\n items: Array<IRSchemaObject>;\n logicalOperator?: IRSchemaObject['logicalOperator'];\n mutateSchemaOneItem?: boolean;\n schema: IRSchemaObject;\n}) => {\n if (!items.length) {\n return schema;\n }\n\n if (schema.type === 'tuple') {\n schema.items = items;\n return schema;\n }\n\n if (items.length !== 1) {\n schema.items = items;\n schema.logicalOperator = logicalOperator;\n return schema;\n }\n\n if (mutateSchemaOneItem) {\n // bring composition up to avoid extraneous brackets\n schema = {\n ...schema,\n ...items[0],\n };\n return schema;\n }\n\n schema.items = items;\n return schema;\n};\n","import type { IRContext } from '../../../ir/context';\nimport type { IRSchemaObject } from '../../../ir/ir';\nimport { addItemsToSchema } from '../../../ir/utils';\nimport type { SchemaObject } from '../types/spec';\n\ntype SchemaWithRequired<K extends keyof Required<SchemaObject>> = Omit<\n SchemaObject,\n K\n> &\n Pick<Required<SchemaObject>, K>;\n\ntype SchemaType = Extract<Required<SchemaObject>['type'], string>;\n\nexport const getSchemaTypes = ({\n schema,\n}: {\n schema: SchemaObject;\n}): ReadonlyArray<SchemaType> => {\n if (typeof schema.type === 'string') {\n return [schema.type];\n }\n\n if (schema.type) {\n return schema.type;\n }\n\n // infer object based on the presence of properties\n if (schema.properties) {\n return ['object'];\n }\n\n return [];\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n}: {\n irSchema: IRSchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.const !== undefined) {\n irSchema.const = schema.const;\n\n // try to infer schema type\n if (!schema.type) {\n if (schema.const === null) {\n irSchema.type = 'null';\n } else {\n switch (typeof schema.const) {\n case 'bigint':\n case 'number':\n irSchema.type = 'number';\n break;\n case 'boolean':\n irSchema.type = 'boolean';\n break;\n case 'string':\n irSchema.type = 'string';\n break;\n }\n }\n }\n }\n\n if (schema.format) {\n irSchema.format = schema.format;\n }\n\n if (schema.readOnly) {\n irSchema.accessScope = 'read';\n } else if (schema.writeOnly) {\n irSchema.accessScope = 'write';\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: SchemaObject;\n}): IRSchemaObject => {\n if (\n (schema.prefixItems && schema.prefixItems.length) ||\n (schema.maxItems && schema.maxItems === schema.minItems)\n ) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IRSchemaObject> = [];\n\n for (const item of schema.prefixItems ?? []) {\n schemaItems.push(\n schemaToIrSchema({\n context,\n schema: item,\n }),\n );\n }\n\n if (schema.items) {\n const isComposedSchema = Boolean(\n schema.items.allOf || schema.items.anyOf || schema.items.oneOf,\n );\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n });\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n if (isComposedSchema) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: SchemaObject;\n}): IRSchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNull = ({\n irSchema = {},\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: SchemaObject;\n}) => {\n irSchema.type = 'null';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: SchemaObject;\n}): IRSchemaObject => {\n irSchema.type = 'number';\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: SchemaObject;\n}): IRSchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IRSchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name];\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n schemaProperties[name] = schemaToIrSchema({\n context,\n schema: property,\n });\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties !== undefined) {\n if (typeof schema.additionalProperties === 'boolean') {\n if (schema.additionalProperties) {\n // no need to add \"any\" additional properties if there are no defined properties\n if (irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else {\n // TODO: parser - handle additional properties: false\n }\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n });\n // no need to add \"any\" additional properties if there are no defined properties\n if (\n irSchema.properties ||\n irAdditionalPropertiesSchema.type !== 'unknown'\n ) {\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n }\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: SchemaObject;\n}): IRSchemaObject => {\n irSchema.type = 'string';\n\n return irSchema;\n};\n\nconst parseSchemaJsDoc = ({\n irSchema,\n schema,\n}: {\n irSchema: IRSchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.deprecated !== undefined) {\n irSchema.deprecated = schema.deprecated;\n }\n\n if (schema.description) {\n irSchema.description = schema.description;\n }\n};\n\nconst initIrSchema = ({ schema }: { schema: SchemaObject }): IRSchemaObject => {\n const irSchema: IRSchemaObject = {};\n\n parseSchemaJsDoc({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nconst parseAllOf = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: SchemaWithRequired<'allOf'>;\n}): IRSchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IRSchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n const compositionSchemas = schema.allOf;\n\n for (const compositionSchema of compositionSchemas) {\n schemaItems.push(\n schemaToIrSchema({\n context,\n schema: compositionSchema,\n }),\n );\n }\n\n if (schemaTypes.includes('object')) {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n });\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema = compositionSchema.$ref\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaTypes({ schema: finalCompositionSchema }).includes(\n 'object',\n )\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n });\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('null')) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IRSchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n }\n\n if (schema.discriminator) {\n // TODO: parser - support discriminator\n // TODO: parser - maybe abstract discriminator from oneOf, anyOf, and allOf\n }\n\n return irSchema;\n};\n\nconst parseAnyOf = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: SchemaWithRequired<'anyOf'>;\n}): IRSchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IRSchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n for (const anyOf of schema.anyOf) {\n schemaItems.push(\n schemaToIrSchema({\n context,\n schema: anyOf,\n }),\n );\n }\n\n if (schemaTypes.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('object')) {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n });\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n if (schema.discriminator) {\n // TODO: parser - support discriminator\n // TODO: parser - maybe abstract discriminator from oneOf, anyOf, and allOf\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: SchemaWithRequired<'enum'>;\n}): IRSchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IRSchemaObject> = [];\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n schemaItems.push(\n parseOneType({\n context,\n schema: {\n const: enumValue,\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ??\n schema['x-enumNames']?.[index],\n type: typeOfEnumValue,\n },\n }),\n );\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneOf = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: SchemaWithRequired<'oneOf'>;\n}): IRSchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n let schemaItems: Array<IRSchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n for (const oneOf of schema.oneOf) {\n const irOneOfSchema = schemaToIrSchema({\n context,\n schema: oneOf,\n });\n\n // since we know oneOf will be using \"or\" logical operator, if the parsed\n // composition schema also has an \"or\" operator, we can bring it up\n // to avoid unnecessary brackets\n if (irOneOfSchema.logicalOperator === 'or' && irOneOfSchema.items) {\n schemaItems = schemaItems.concat(irOneOfSchema.items);\n } else {\n schemaItems.push(irOneOfSchema);\n }\n }\n\n if (schemaTypes.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('object')) {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n });\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n if (schema.discriminator) {\n // TODO: parser - support discriminator\n // TODO: parser - maybe abstract discriminator from oneOf, anyOf, and allOf\n }\n\n return irSchema;\n};\n\nconst parseRef = ({\n schema,\n}: {\n context: IRContext;\n schema: SchemaWithRequired<'$ref'>;\n}): IRSchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@apidevtools/json-schema-ref-parser`\n irSchema.$ref = decodeURI(schema.$ref);\n\n return irSchema;\n};\n\nconst parseOneType = ({\n context,\n irSchema,\n schema,\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: SchemaType;\n };\n}): IRSchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n });\n }\n\n switch (schema.type) {\n case 'array':\n return parseArray({\n context,\n irSchema,\n schema,\n });\n case 'boolean':\n return parseBoolean({\n context,\n irSchema,\n schema,\n });\n case 'integer':\n case 'number':\n return parseNumber({\n context,\n irSchema,\n schema,\n });\n case 'null':\n return parseNull({\n context,\n irSchema,\n schema,\n });\n case 'object':\n return parseObject({\n context,\n irSchema,\n schema,\n });\n case 'string':\n return parseString({\n context,\n irSchema,\n schema,\n });\n }\n};\n\nconst parseManyTypes = ({\n context,\n irSchema,\n schema,\n}: {\n context: IRContext;\n irSchema?: IRSchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: ReadonlyArray<SchemaType>;\n };\n}): IRSchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n });\n }\n\n const schemaItems: Array<IRSchemaObject> = [];\n\n for (const type of schema.type) {\n schemaItems.push(\n parseOneType({\n context,\n irSchema: {},\n schema: {\n ...schema,\n type,\n },\n }),\n );\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseType = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: SchemaWithRequired<'type'>;\n}): IRSchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n });\n\n const schemaTypes = getSchemaTypes({ schema });\n\n if (schemaTypes.length === 1) {\n return parseOneType({\n context,\n irSchema,\n schema: {\n ...schema,\n type: schemaTypes[0],\n },\n });\n }\n\n return parseManyTypes({\n context,\n irSchema,\n schema: {\n ...schema,\n type: schemaTypes,\n },\n });\n};\n\nconst parseUnknown = ({\n schema,\n}: {\n context: IRContext;\n schema: SchemaObject;\n}): IRSchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nexport const schemaToIrSchema = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: SchemaObject;\n}): IRSchemaObject => {\n if (schema.$ref) {\n return parseRef({\n context,\n schema: schema as SchemaWithRequired<'$ref'>,\n });\n }\n\n if (schema.enum) {\n return parseEnum({\n context,\n schema: schema as SchemaWithRequired<'enum'>,\n });\n }\n\n if (schema.allOf) {\n return parseAllOf({\n context,\n schema: schema as SchemaWithRequired<'allOf'>,\n });\n }\n\n if (schema.anyOf) {\n return parseAnyOf({\n context,\n schema: schema as SchemaWithRequired<'anyOf'>,\n });\n }\n\n if (schema.oneOf) {\n return parseOneOf({\n context,\n schema: schema as SchemaWithRequired<'oneOf'>,\n });\n }\n\n // infer object based on the presence of properties\n if (schema.type || schema.properties) {\n return parseType({\n context,\n schema: schema as SchemaWithRequired<'type'>,\n });\n }\n\n return parseUnknown({\n context,\n schema,\n });\n};\n\nexport const parseSchema = ({\n context,\n name,\n schema,\n}: {\n context: IRContext;\n name: string;\n schema: SchemaObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.schemas) {\n context.ir.components.schemas = {};\n }\n\n context.ir.components.schemas[name] = schemaToIrSchema({\n context,\n schema,\n });\n};\n","import type { IRContext } from '../../../ir/context';\nimport { paginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { ParameterObject, RequestBodyObject } from '../types/spec';\nimport { type SchemaObject } from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { getSchemaTypes } from './schema';\n\n// We handle only simple values for now, up to 1 nested field\nexport const paginationField = ({\n context,\n name,\n schema,\n}: {\n context: IRContext;\n name: string;\n schema: SchemaObject;\n}): boolean | string => {\n paginationKeywordsRegExp.lastIndex = 0;\n if (paginationKeywordsRegExp.test(name)) {\n return true;\n }\n\n if (schema.$ref) {\n const ref = context.resolveRef<\n ParameterObject | RequestBodyObject | SchemaObject\n >(schema.$ref);\n\n if ('content' in ref || 'in' in ref) {\n let refSchema: SchemaObject | undefined;\n\n if ('in' in ref) {\n refSchema = ref.schema;\n }\n\n if (!refSchema) {\n // parameter or body\n const content = mediaTypeObject({ content: ref.content });\n if (content?.schema) {\n refSchema = content.schema;\n }\n }\n\n if (!refSchema) {\n return false;\n }\n\n return paginationField({\n context,\n name,\n schema: refSchema,\n });\n }\n\n return paginationField({\n context,\n name,\n schema: ref,\n });\n }\n\n for (const name in schema.properties) {\n paginationKeywordsRegExp.lastIndex = 0;\n\n if (paginationKeywordsRegExp.test(name)) {\n const property = schema.properties[name];\n\n if (typeof property !== 'boolean') {\n const schemaTypes = getSchemaTypes({ schema: property });\n\n if (\n schemaTypes.includes('boolean') ||\n schemaTypes.includes('integer') ||\n schemaTypes.includes('number') ||\n schemaTypes.includes('string')\n ) {\n return name;\n }\n }\n }\n }\n\n return false;\n};\n","import type { IRContext } from '../../../ir/context';\nimport type { IROperationObject, IRPathsObject } from '../../../ir/ir';\nimport type {\n OperationObject,\n PathItemObject,\n RequestBodyObject,\n ResponseObject,\n SchemaObject,\n} from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\ninterface Operation\n extends Omit<OperationObject, 'parameters'>,\n Pick<IROperationObject, 'id' | 'parameters'> {}\n\nconst parseOperationJsDoc = ({\n irOperation,\n operation,\n}: {\n irOperation: IROperationObject;\n operation: Operation;\n}) => {\n if (operation.deprecated !== undefined) {\n irOperation.deprecated = operation.deprecated;\n }\n\n if (operation.description) {\n irOperation.description = operation.description;\n }\n\n if (operation.summary) {\n irOperation.summary = operation.summary;\n }\n\n if (operation.tags && operation.tags.length) {\n irOperation.tags = operation.tags;\n }\n};\n\nconst initIrOperation = ({\n operation,\n}: {\n operation: Operation;\n}): IROperationObject => {\n const irOperation: IROperationObject = {\n id: operation.id,\n };\n\n parseOperationJsDoc({\n irOperation,\n operation,\n });\n\n return irOperation;\n};\n\nconst operationToIrOperation = ({\n context,\n operation,\n}: {\n context: IRContext;\n operation: Operation;\n}): IROperationObject => {\n const irOperation = initIrOperation({ operation });\n\n if (operation.parameters) {\n irOperation.parameters = operation.parameters;\n }\n\n if (operation.requestBody) {\n const requestBodyObject =\n '$ref' in operation.requestBody\n ? context.resolveRef<RequestBodyObject>(operation.requestBody.$ref)\n : operation.requestBody;\n const content = mediaTypeObject({\n content: requestBodyObject.content,\n });\n if (content) {\n const finalSchema: SchemaObject = {\n description: requestBodyObject.description,\n ...content.schema,\n };\n\n const pagination = paginationField({\n context,\n name: '',\n schema: finalSchema,\n });\n\n irOperation.body = {\n mediaType: content.mediaType,\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n }),\n };\n\n if (pagination) {\n irOperation.body.pagination = pagination;\n }\n\n if (requestBodyObject.required) {\n irOperation.body.required = requestBodyObject.required;\n }\n\n if (content.type) {\n irOperation.body.type = content.type;\n }\n }\n }\n\n for (const name in operation.responses) {\n if (!irOperation.responses) {\n irOperation.responses = {};\n }\n\n const response = operation.responses[name]!;\n const responseObject =\n '$ref' in response\n ? context.resolveRef<ResponseObject>(response.$ref)\n : response;\n const content = mediaTypeObject({\n content: responseObject.content,\n });\n\n if (content) {\n irOperation.responses[name] = {\n schema: schemaToIrSchema({\n context,\n schema: {\n description: responseObject.description,\n ...content.schema,\n },\n }),\n };\n } else {\n irOperation.responses[name] = {\n schema: {\n description: responseObject.description,\n // TODO: parser - cover all statues with empty response bodies\n // 1xx, 204, 205, 304\n type: name === '204' ? 'void' : 'unknown',\n },\n };\n }\n }\n\n // TODO: parser - handle security\n // baz: operation.security\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n operationIds,\n path,\n}: {\n context: IRContext;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n operationIds: Map<string, string>;\n path: keyof IRPathsObject;\n}) => {\n const operationKey = `${method.toUpperCase()} ${path}`;\n\n // TODO: parser - move services to plugin, cleaner syntax\n if (\n !context.parserConfig.filterFn.operation({\n config: context.config,\n operationKey,\n })\n ) {\n return;\n }\n\n // TODO: parser - support throw on duplicate\n if (operation.operationId) {\n if (operationIds.has(operation.operationId)) {\n console.warn(\n `❗️ Duplicate operationId: ${operation.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n } else {\n operationIds.set(operation.operationId, operationKey);\n }\n }\n\n if (!context.ir.paths) {\n context.ir.paths = {};\n }\n\n if (!context.ir.paths[path]) {\n context.ir.paths[path] = {};\n }\n\n operation.id = context.parserConfig.nameFn.operation({\n config: context.config,\n method,\n operationId: operation.operationId,\n path,\n });\n\n context.ir.paths[path][method] = operationToIrOperation({\n context,\n operation,\n });\n};\n","import type { IRContext } from '../../../ir/context';\nimport type { IRParameterObject, IRParametersObject } from '../../../ir/ir';\nimport type {\n ParameterObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\nexport const parametersArrayToObject = ({\n context,\n parameters,\n}: {\n context: IRContext;\n parameters?: ReadonlyArray<ParameterObject | ReferenceObject>;\n}): IRParametersObject | undefined => {\n if (!parameters || !Object.keys(parameters).length) {\n return;\n }\n\n const parametersObject: IRParametersObject = {};\n\n for (const parameterOrReference of parameters) {\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n if (!parametersObject[parameter.in]) {\n parametersObject[parameter.in] = {};\n }\n\n parametersObject[parameter.in]![parameter.name] = parameterToIrParameter({\n context,\n parameter,\n });\n }\n\n return parametersObject;\n};\n\nexport const mergeParametersObjects = ({\n source,\n target,\n}: {\n source: IRParametersObject | undefined;\n target: IRParametersObject | undefined;\n}): IRParametersObject | undefined => {\n const result = { ...target };\n\n if (source) {\n if (source.cookie) {\n if (result.cookie) {\n result.cookie = {\n ...result.cookie,\n ...source.cookie,\n };\n } else {\n result.cookie = source.cookie;\n }\n }\n\n if (source.header) {\n if (result.header) {\n result.header = {\n ...result.header,\n ...source.header,\n };\n } else {\n result.header = source.header;\n }\n }\n\n if (source.path) {\n if (result.path) {\n result.path = {\n ...result.path,\n ...source.path,\n };\n } else {\n result.path = source.path;\n }\n }\n\n if (source.query) {\n if (result.query) {\n result.query = {\n ...result.query,\n ...source.query,\n };\n } else {\n result.query = source.query;\n }\n }\n }\n\n if (!Object.keys(result).length) {\n return;\n }\n\n return result;\n};\n\nconst parameterToIrParameter = ({\n context,\n parameter,\n}: {\n context: IRContext;\n parameter: ParameterObject;\n}): IRParameterObject => {\n // TODO: parser - fix\n let schema = parameter.schema;\n\n if (!schema) {\n const content = mediaTypeObject({\n content: parameter.content,\n });\n if (content) {\n schema = content.schema;\n }\n }\n\n const finalSchema: SchemaObject = {\n deprecated: parameter.deprecated,\n description: parameter.description,\n ...schema,\n };\n\n const pagination = paginationField({\n context,\n name: parameter.name,\n schema: finalSchema,\n });\n\n const irParameter: IRParameterObject = {\n location: parameter.in,\n name: parameter.name,\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n }),\n };\n\n if (pagination) {\n irParameter.pagination = pagination;\n }\n\n if (parameter.required) {\n irParameter.required = parameter.required;\n }\n\n return irParameter;\n};\n\nexport const parseParameter = ({\n context,\n name,\n parameter,\n}: {\n context: IRContext;\n name: string;\n parameter: ParameterObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.parameters) {\n context.ir.components.parameters = {};\n }\n\n context.ir.components.parameters[name] = parameterToIrParameter({\n context,\n parameter,\n });\n};\n","import type { IRContext } from '../../../ir/context';\nimport type {\n OpenApiV3_1_0,\n ParameterObject,\n PathItemObject,\n PathsObject,\n} from '../types/spec';\nimport { parseOperation } from './operation';\nimport {\n mergeParametersObjects,\n parametersArrayToObject,\n parseParameter,\n} from './parameter';\nimport { parseSchema } from './schema';\n\nexport const parseV3_1_0 = (context: IRContext<OpenApiV3_1_0>) => {\n const operationIds = new Map<string, string>();\n\n for (const path in context.spec.paths) {\n const pathItem = context.spec.paths[path as keyof PathsObject];\n\n const finalPathItem = pathItem.$ref\n ? {\n ...context.resolveRef<PathItemObject>(pathItem.$ref),\n ...pathItem,\n }\n : pathItem;\n\n const operationArgs: Omit<Parameters<typeof parseOperation>[0], 'method'> =\n {\n context,\n operation: {\n description: finalPathItem.description,\n id: '',\n parameters: parametersArrayToObject({\n context,\n parameters: finalPathItem.parameters,\n }),\n servers: finalPathItem.servers,\n summary: finalPathItem.summary,\n },\n operationIds,\n path: path as keyof PathsObject,\n };\n\n if (finalPathItem.delete) {\n parseOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.get) {\n parseOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.head) {\n parseOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.options) {\n parseOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.patch) {\n parseOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.post) {\n parseOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.put) {\n parseOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.trace) {\n parseOperation({\n ...operationArgs,\n method: 'trace',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.trace,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.trace.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n }\n\n // TODO: parser - handle more component types, old parser handles only parameters and schemas\n if (context.spec.components) {\n for (const name in context.spec.components.parameters) {\n const parameterOrReference = context.spec.components.parameters[name];\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n parseParameter({\n context,\n name,\n parameter,\n });\n }\n\n for (const name in context.spec.components.schemas) {\n const schema = context.spec.components.schemas[name];\n\n parseSchema({\n context,\n name,\n schema,\n });\n }\n }\n};\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(\n SEPARATORS.source + IDENTIFIER.source,\n 'gu',\n);\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string: string) => {\n let isLastCharLower = false;\n let isLastCharUpper = false;\n let isLastLastCharUpper = false;\n let isLastLastCharPreserved = false;\n\n for (let index = 0; index < string.length; index++) {\n const character = string[index];\n isLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n if (isLastCharLower && UPPERCASE.test(character)) {\n string = string.slice(0, index) + '-' + string.slice(index);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n index++;\n } else if (\n isLastCharUpper &&\n isLastLastCharUpper &&\n LOWERCASE.test(character) &&\n !isLastLastCharPreserved\n ) {\n string = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower =\n character.toLocaleLowerCase() === character &&\n character.toLocaleUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper =\n character.toLocaleUpperCase() === character &&\n character.toLocaleLowerCase() !== character;\n }\n }\n\n return string;\n};\n\n/**\n * Convert a dash/dot/underscore/space separated string to camelCase or PascalCase: `foo-bar` → `fooBar`. Correctly handles Unicode strings. Returns transformed string.\n */\nexport const camelCase = ({\n input,\n pascalCase,\n}: {\n input: string;\n /**\n * Uppercase the first character: `foo-bar` → `FooBar`\n *\n * @default false\n */\n readonly pascalCase?: boolean;\n}): string => {\n let result = input.trim();\n\n if (!result.length) {\n return '';\n }\n\n if (result.length === 1) {\n if (SEPARATORS.test(result)) {\n return '';\n }\n\n return pascalCase ? result.toLocaleUpperCase() : result.toLocaleLowerCase();\n }\n\n const hasUpperCase = result !== result.toLocaleLowerCase();\n\n if (hasUpperCase) {\n result = preserveCamelCase(result);\n }\n\n result = result.replace(LEADING_SEPARATORS, '');\n result = result.toLocaleLowerCase();\n\n if (pascalCase) {\n result = result.charAt(0).toLocaleUpperCase() + result.slice(1);\n }\n\n SEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n NUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n result = result.replaceAll(NUMBERS_AND_IDENTIFIER, (match, _, offset) => {\n if (['_', '-', '.'].includes(result.charAt(offset + match.length))) {\n return match;\n }\n\n return match.toLocaleUpperCase();\n });\n\n result = result.replaceAll(SEPARATORS_AND_IDENTIFIER, (_, identifier) =>\n identifier.toLocaleUpperCase(),\n );\n\n return result;\n};\n","export const refParametersPartial = '#/components/parameters/';\n\nexport const refSchemasPartial = '#/components/schemas/';\n","export function sort(a: string, b: string): number {\n const nameA = a.toLocaleLowerCase();\n const nameB = b.toLocaleLowerCase();\n return nameA.localeCompare(nameB, 'en');\n}\n\nexport const sorterByName = <T extends { name: string }>(a: T, b: T) =>\n sort(a.name, b.name);\n\nexport function sortByName<T extends { name: string }>(items: T[]): T[] {\n return items.sort(sorterByName);\n}\n","export function unique<T>(value: T, index: number, arr: T[]): boolean {\n return arr.indexOf(value) === index;\n}\n","import type { Enum, Model } from '../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport { unescapeName } from './escape';\nimport { sort } from './sort';\nimport { unique } from './unique';\n\n/**\n * Sanitizes names of enums, so they are valid typescript identifiers of a certain form.\n *\n * 1: Replace all characters not legal as part of identifier with '_'\n * 2: Add '_' prefix if first character of enum name has character not legal for start of identifier\n * 3: Add '_' where the string transitions from lowercase to uppercase\n * 4: Transform the whole string to uppercase\n *\n * Javascript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nexport const enumKey = (value?: string | number, customName?: string) => {\n if (customName) {\n return customName;\n }\n // prefix numbers with underscore\n if (typeof value === 'number') {\n return `'_${value}'`;\n }\n\n let key = '';\n if (typeof value === 'string') {\n key = value\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_')\n .replace(/^([^$_\\p{ID_Start}])/u, '_$1')\n .replace(/(\\p{Lowercase})(\\p{Uppercase}+)/gu, '$1_$2');\n }\n key = key.trim();\n if (!key) {\n key = 'empty_string';\n }\n return key.toUpperCase();\n};\n\nexport const enumUnionType = (enums: Enum[]) =>\n enums\n .map((enumerator) => enumValue(enumerator.value, true))\n .filter(unique)\n .join(' | ');\n\nexport const enumValue = (value?: string | number, union: boolean = false) => {\n if (typeof value === 'string') {\n if (value.includes(\"'\") && union) {\n return `\"${value}\"`;\n }\n return `'${value}'`;\n }\n return value;\n};\n\nexport const enumEntry = (enumerator: Enum) => {\n const key = enumKey(enumerator.value, enumerator.customName);\n const value = enumValue(enumerator.value);\n return { key, value };\n};\n\n/**\n * Represent enum in `meta` object for deduplication\n */\nexport const enumMeta = (model: Model): Required<Model>['meta'] => {\n // serialize enum values in namespace for quick lookup\n const serialized = model.enum\n .map((enumerator) => enumEntry(enumerator))\n .sort((a, b) => sort(a.key, b.key))\n .map((enumerator) => `${enumerator.key}=${enumerator.value}`)\n .join('&');\n return {\n $ref: `enum/${model.name}/${serialized}`,\n name: ensureValidTypeScriptJavaScriptIdentifier(unescapeName(model.name)),\n };\n};\n","import { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport type { Config } from '../types/config';\nimport { camelCase } from './camelCase';\nimport { getConfig } from './config';\nimport { reservedWordsRegExp } from './regexp';\n\nexport const transformServiceName = ({\n config,\n name,\n}: {\n config: Config;\n name: string;\n}) => {\n if (config.services.name) {\n return config.services.name.replace('{{name}}', name);\n }\n\n return name;\n};\n\nexport const transformTypeName = (name: string) => {\n const config = getConfig();\n if (config.types.name === 'PascalCase') {\n return camelCase({\n input: name,\n pascalCase: true,\n });\n }\n return name;\n};\n\n/**\n * This method is meant to be used to process definition names\n * and return a cleaned up, transformed version that is legal\n * to use in the output code.\n *\n * For example, a definition with name \"400\" would result in \"_400\",\n * \"import\" would result in \"_import\", etc. This also respects the\n * casing configuration for types.\n *\n * @param name Name of the definition in OpenAPI specification.\n * @returns A cleaned up, transformed name usable in output code.\n */\nexport const cleanAndTransformTypeName = (name: string) => {\n const transformed = transformTypeName(name);\n const cleaned = ensureValidTypeScriptJavaScriptIdentifier(transformed);\n const result = cleaned.replace(reservedWordsRegExp, '_$1');\n return result;\n};\n","import { getType } from '../openApi';\nimport { refParametersPartial, refSchemasPartial } from './const';\nimport { reservedWordsRegExp } from './regexp';\nimport { cleanAndTransformTypeName } from './transform';\n\nexport const getParametersMeta = (definitionName: string) => {\n const definitionType = getType({ type: definitionName });\n /**\n * Prefix parameter names to avoid name conflicts with schemas.\n * Assuming people are mostly interested in importing schema types\n * and don't care about this name as much. It should be resolved in\n * a cleaner way, there just isn't a good deduplication strategy\n * today. This is a workaround in the meantime, hopefully reducing\n * the chance of conflicts.\n *\n * Example where this would break: schema named `ParameterFoo` and\n * parameter named `Foo` (this would transform to `ParameterFoo`)\n *\n * Note: there's a related code to this workaround in `getType()`\n * method that needs to be cleaned up when this is addressed.\n */\n const name = `Parameter${definitionType.base.replace(reservedWordsRegExp, '_$1')}`;\n const meta = {\n $ref: refParametersPartial + definitionName,\n name,\n };\n return meta;\n};\n\n/**\n * @param definitionName Name of the schema definition in OpenAPI specification.\n * @returns meta object\n */\nexport const getSchemasMeta = (definitionName: string) => {\n const name = cleanAndTransformTypeName(definitionName);\n const meta = {\n $ref: refSchemasPartial + definitionName,\n name,\n };\n return meta;\n};\n","import { compiler, type Property, type TypeNode } from '../compiler';\nimport type { Model } from '../openApi';\nimport { sanitizeOperationParameterName } from '../openApi';\nimport type { Client } from '../types/client';\nimport { camelCase } from './camelCase';\nimport { getConfig, isLegacyClient } from './config';\nimport { refSchemasPartial } from './const';\nimport { enumValue } from './enum';\nimport { escapeComment, escapeName, unescapeName } from './escape';\nimport { getSchemasMeta } from './meta';\nimport { reservedWordsRegExp } from './regexp';\nimport { unique } from './unique';\n\nexport const isModelDate = (model: Model): boolean =>\n model.format === 'date' || model.format === 'date-time';\n\nconst base = (model: Model) => {\n const config = getConfig();\n\n if (model.base === 'binary') {\n return compiler.typeUnionNode({\n types: ['Blob', 'File'],\n });\n }\n\n if (config.types.dates && isModelDate(model)) {\n return compiler.typeNode('Date');\n }\n\n return compiler.typeNode(model.base);\n};\n\nconst typeReference = (model: Model) => {\n // nullable is false when base is null to avoid duplicate null statements\n const isNullable = model.base === 'null' ? false : model.isNullable;\n let typeNode = base(model);\n /**\n * special handling for single reference. The current approach didn't handle\n * transformed names, this fixes that. We should add a more robust solution,\n * but this will work for now.\n * {@link https://github.com/hey-api/openapi-ts/issues/768}\n */\n if (model.export === 'reference' && model.$refs.length === 1) {\n if (model.$refs[0].startsWith(refSchemasPartial)) {\n const meta = getSchemasMeta(model.base);\n typeNode = compiler.typeNode(meta.name);\n }\n }\n const unionNode = compiler.typeUnionNode({\n isNullable,\n types: [typeNode],\n });\n return unionNode;\n};\n\nconst typeArray = (model: Model) => {\n if (model.link) {\n // We treat an array of `model.link` as constant size array definition.\n if (Array.isArray(model.link)) {\n const types = model.link.map((m) => toType(m));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n // Special case where we use tuple to define constant size array.\n if (\n model.export === 'array' &&\n model.maxItems &&\n model.minItems &&\n model.maxItems === model.minItems &&\n model.maxItems <= 100\n ) {\n const types = Array(model.maxItems).fill(toType(model.link));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n return compiler.typeArrayNode([toType(model.link)], model.isNullable);\n }\n\n return compiler.typeArrayNode([base(model)], model.isNullable);\n};\n\nconst typeEnum = (model: Model) => {\n const values = model.enum.map((enumerator) => enumValue(enumerator.value));\n return compiler.typeUnionNode({\n isNullable: model.isNullable,\n types: values,\n });\n};\n\nconst typeDict = (model: Model) => {\n const type =\n model.link && !Array.isArray(model.link) ? toType(model.link) : base(model);\n return compiler.typeRecordNode(['string'], [type], model.isNullable, true);\n};\n\nconst typeUnionOrIntersection = ({\n model,\n style,\n}: {\n model: Model;\n style: 'intersection' | 'union';\n}) => {\n const types = model.properties\n .map((model) => {\n const str = compiler.nodeToString({\n node: toType(model),\n unescape: true,\n });\n return str;\n })\n .filter(unique);\n\n const node =\n style === 'union'\n ? compiler.typeUnionNode({\n // avoid printing duplicate null statements\n isNullable:\n model.isNullable &&\n !model.properties.find((property) => property.isNullable),\n types,\n })\n : compiler.typeIntersectionNode({\n isNullable: model.isNullable,\n types,\n });\n\n // top-level models don't need parentheses around them\n if (model.meta) {\n return node;\n }\n\n return compiler.typeParenthesizedNode({\n type: node,\n });\n};\n\nconst typeInterface = (model: Model) => {\n if (!model.properties.length) {\n return compiler.typeNode('unknown');\n }\n\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n const properties: Property[] = model.properties.map((property) => {\n let maybeRequired = property.isRequired ? '' : '?';\n let value = toType(property);\n let name = !isLegacy\n ? escapeName(unescapeName(transformTypeKeyName(property.name)))\n : // special test for 1XX status codes. We need a more robust system\n // for escaping values depending on context in which they're printed,\n // but since this works for client packages, it's not worth it right now\n /^\\dXX$/.test(property.name)\n ? escapeName(property.name)\n : property.name;\n // special case for additional properties type\n if (property.name === '[key: string]') {\n name = property.name;\n if (maybeRequired) {\n maybeRequired = '';\n value = compiler.typeUnionNode({\n types: [value, 'undefined'],\n });\n }\n }\n return {\n comment: [\n property.description && escapeComment(property.description),\n property.deprecated && '@deprecated',\n ],\n isReadOnly: property.isReadOnly,\n isRequired: maybeRequired === '',\n name,\n type: value,\n };\n });\n\n return compiler.typeInterfaceNode({\n isNullable: model.isNullable,\n properties,\n useLegacyResolution: true,\n });\n};\n\nexport const toType = (model: Model): TypeNode => {\n switch (model.export) {\n case 'all-of':\n return typeUnionOrIntersection({\n model,\n style: 'intersection',\n });\n case 'any-of':\n case 'one-of':\n return typeUnionOrIntersection({\n model,\n style: 'union',\n });\n case 'array':\n return typeArray(model);\n case 'dictionary':\n return typeDict(model);\n case 'enum':\n return typeEnum(model);\n case 'interface':\n return typeInterface(model);\n case 'const':\n case 'generic':\n case 'reference':\n default:\n return typeReference(model);\n }\n};\n\nexport interface SetUniqueTypeNameResult {\n /**\n * Did this function add a new property to the `client.types` object?\n */\n created: boolean;\n /**\n * Unique name for the exported type.\n */\n name: string;\n}\n\n/**\n * Generates a unique name for the exported type for given model meta.\n * @param args.client Internal client instance\n * @param args.count Unique key for deduplication\n * @param args.create If a name record does not exist, should it be created?\n * @param args.meta Meta property from the model\n * @param args.nameTransformer Function for transforming name into the final\n * value. In different contexts, a different strategy might be used. For\n * example, slashes `/` are invalid in TypeScript identifiers, but okay in\n * a JavaScript object key name.\n * @returns {SetUniqueTypeNameResult}\n */\nexport const setUniqueTypeName = ({\n client,\n count = 1,\n create = false,\n meta,\n nameTransformer,\n}: Pick<Required<Model>, 'meta'> & {\n client: Client;\n count?: number;\n create?: boolean;\n nameTransformer?: (value: string) => string;\n}): SetUniqueTypeNameResult => {\n let result: SetUniqueTypeNameResult = {\n created: false,\n name: '',\n };\n let name = meta.name;\n if (nameTransformer) {\n name = nameTransformer(name);\n }\n if (count > 1) {\n name = `${name}${count}`;\n }\n const type = client.types[name];\n if (!type) {\n if (create) {\n client.types[name] = meta;\n result = {\n created: true,\n name,\n };\n }\n } else if (type.$ref === meta.$ref) {\n result = {\n created: false,\n name,\n };\n } else {\n result = setUniqueTypeName({\n client,\n count: count + 1,\n create,\n meta,\n nameTransformer,\n });\n }\n return result;\n};\n\nexport interface UnsetUniqueTypeNameResult {\n /**\n * Did this function delete a property from the `client.types` object?\n */\n deleted: boolean;\n /**\n * Unique name removed from the `client.types` object.\n */\n name: string;\n}\n\nexport const unsetUniqueTypeName = ({\n client,\n name,\n}: {\n client: Client;\n name: string;\n}): UnsetUniqueTypeNameResult => {\n let result: UnsetUniqueTypeNameResult = {\n deleted: false,\n name: '',\n };\n if (!client.types[name]) {\n return result;\n }\n delete client.types[name];\n result = {\n deleted: true,\n name,\n };\n return result;\n};\n\n/**\n * Replaces any invalid characters from a parameter name.\n * For example: 'filter.someProperty' becomes 'filterSomeProperty'.\n */\nexport const transformTypeKeyName = (value: string): string => {\n const config = getConfig();\n\n // transform only for legacy clients\n if (!isLegacyClient(config)) {\n return value;\n }\n\n const name = camelCase({\n input: sanitizeOperationParameterName(value),\n }).replace(reservedWordsRegExp, '_$1');\n return name;\n};\n","import { illegalStartCharactersRegExp } from '../../../utils/regexp';\n\nexport const ensureValidTypeScriptJavaScriptIdentifier = (name: string) => {\n illegalStartCharactersRegExp.lastIndex = 0;\n const replaced = name.replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_');\n const startsWithIllegalCharacter =\n illegalStartCharactersRegExp.test(replaced);\n const valid = startsWithIllegalCharacter ? `_${replaced}` : replaced;\n return valid;\n};\n\n/**\n * Sanitizes namespace identifiers so they are valid TypeScript identifiers of a certain form.\n *\n * 1: Remove any leading characters that are illegal as starting character of a typescript identifier.\n * 2: Replace illegal characters in remaining part of type name with hyphen (-).\n *\n * Step 1 should perhaps instead also replace illegal characters with underscore, or prefix with it, like sanitizeEnumName\n * does. The way this is now one could perhaps end up removing all characters, if all are illegal start characters. It\n * would be sort of a breaking change to do so, though, previously generated code might change then.\n *\n * JavaScript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n *\n * The output of this is expected to be converted to PascalCase\n */\nexport const sanitizeNamespaceIdentifier = (name: string) =>\n name\n .replace(/^[^\\p{ID_Start}]+/u, '')\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '-')\n .replace(/\\$/g, '-');\n\nexport const sanitizeOperationParameterName = (name: string) => {\n const withoutBrackets = name.replace('[]', 'Array');\n return sanitizeNamespaceIdentifier(withoutBrackets);\n};\n","import type { Config } from '../types/config';\nimport { camelCase } from '../utils/camelCase';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { transformTypeKeyName } from '../utils/type';\nimport type { OperationParameter } from './common/interfaces/client';\nimport { sanitizeNamespaceIdentifier } from './common/parser/sanitize';\n\nexport interface ParserConfig {\n debug?: boolean;\n filterFn: {\n operation: typeof operationFilterFn;\n operationParameter: typeof operationParameterFilterFn;\n };\n nameFn: {\n operation: typeof operationNameFn;\n operationParameter: typeof operationParameterNameFn;\n };\n}\n\nlet _config: ParserConfig;\n\nexport const getParserConfig = () => _config;\n\nexport const setParserConfig = (config: ParserConfig) => {\n _config = config;\n return getParserConfig();\n};\n\nexport const operationFilterFn = ({\n config,\n operationKey,\n}: {\n config: Config;\n operationKey: string;\n}): boolean => {\n const regexp = config.services.filter\n ? new RegExp(config.services.filter)\n : undefined;\n return !regexp || regexp.test(operationKey);\n};\n\nexport const operationParameterFilterFn = (\n parameter: OperationParameter,\n): boolean => {\n const config = getConfig();\n\n // legacy clients ignore the \"api-version\" param since we do not want to\n // add it as the first/default parameter for each of the service calls\n return !isLegacyClient(config) || parameter.prop !== 'api-version';\n};\n\n/**\n * Convert the input value to a correct operation (method) class name.\n * This will use the operation ID - if available - and otherwise fallback\n * on a generated name from the URL\n */\nexport const operationNameFn = ({\n config,\n method,\n operationId,\n path,\n}: {\n config: Config;\n method: string;\n operationId: string | undefined;\n path: string;\n}): string => {\n if (config.services.operationId && operationId) {\n return camelCase({\n input: sanitizeNamespaceIdentifier(operationId),\n });\n }\n\n let urlWithoutPlaceholders = path;\n\n // legacy clients ignore the \"api-version\" param since we do not want to\n // add it as the first/default parameter for each of the service calls\n if (isLegacyClient(config)) {\n urlWithoutPlaceholders = urlWithoutPlaceholders.replace(\n /[^/]*?{api-version}.*?\\//g,\n '',\n );\n }\n\n urlWithoutPlaceholders = urlWithoutPlaceholders\n .replace(/{(.*?)}/g, 'by-$1')\n // replace slashes with hyphens for camelcase method at the end\n .replace(/[/:]/g, '-');\n\n return camelCase({\n input: `${method}-${urlWithoutPlaceholders}`,\n });\n};\n\nexport const operationParameterNameFn = (\n parameter: Omit<OperationParameter, 'name'>,\n): string => {\n const config = getConfig();\n\n return !isLegacyClient(config)\n ? parameter.prop\n : transformTypeKeyName(parameter.prop);\n};\n","export const allowedServiceMethods = [\n 'connect',\n 'delete',\n 'get',\n 'head',\n 'options',\n 'patch',\n 'post',\n 'put',\n 'trace',\n] as const;\n\n/**\n * Convert the service version to 'normal' version.\n * This basically removes any \"v\" prefix from the version string.\n * @param version\n */\nexport function getServiceVersion(version = '1.0'): string {\n return String(version).replace(/^v/gi, '');\n}\n","import type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const inferType = (\n definition: OpenApiSchema,\n definitionTypes: string[],\n) => {\n if (definition.enum && !definitionTypes.includes('boolean')) {\n return 'enum';\n }\n return undefined;\n};\n\nexport const isDefinitionTypeNullable = (\n definition: Pick<OpenApiSchema, 'type'>,\n) => getDefinitionTypes(definition).includes('null');\n\nexport const isDefinitionNullable = (\n definition: Pick<OpenApiSchema, 'nullable' | 'type'>,\n) => definition.nullable === true || isDefinitionTypeNullable(definition);\n\nexport const getDefinitionTypes = ({ type }: Pick<OpenApiSchema, 'type'>) => {\n if (Array.isArray(type)) {\n return type;\n }\n if (type) {\n return [type];\n }\n return [];\n};\n","/**\n * Strip (OpenAPI) namespaces from values.\n * @param value\n */\nexport const stripNamespace = (value: string): string =>\n value\n .trim()\n .replace(/^#\\/definitions\\//, '')\n .replace(/^#\\/parameters\\//, '')\n .replace(/^#\\/responses\\//, '')\n .replace(/^#\\/securityDefinitions\\//, '')\n .replace(/^#\\/components\\/schemas\\//, '')\n .replace(/^#\\/components\\/responses\\//, '')\n .replace(/^#\\/components\\/parameters\\//, '')\n .replace(/^#\\/components\\/examples\\//, '')\n .replace(/^#\\/components\\/requestBodies\\//, '')\n .replace(/^#\\/components\\/headers\\//, '')\n .replace(/^#\\/components\\/securitySchemes\\//, '')\n .replace(/^#\\/components\\/links\\//, '')\n .replace(/^#\\/components\\/callbacks\\//, '');\n","import { refParametersPartial } from '../../../utils/const';\nimport { transformTypeName } from '../../../utils/transform';\nimport { isDefinitionTypeNullable } from '../../v3/parser/inferType';\nimport type { Type } from '../interfaces/Type';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from './sanitize';\nimport { stripNamespace } from './stripNamespace';\n\n/**\n * Get mapped type for given type to basic Typescript/Javascript type.\n */\nexport const getMappedType = (\n type: string,\n format?: string,\n): string | undefined => {\n if (format === 'binary') {\n return 'binary';\n }\n switch (type) {\n case 'any':\n case 'object':\n case 'unknown':\n return 'unknown';\n case 'array':\n return 'unknown[]';\n case 'boolean':\n return 'boolean';\n case 'byte':\n case 'double':\n case 'float':\n case 'int':\n case 'integer':\n case 'long':\n case 'number':\n case 'short':\n return 'number';\n case 'char':\n case 'date':\n case 'date-time':\n case 'password':\n case 'string':\n return 'string';\n case 'file':\n return 'binary';\n case 'null':\n return 'null';\n case 'void':\n return 'void';\n }\n};\n\n/**\n * Matches characters inside square brackets, including the brackets. Does not\n * match if the opening bracket is preceded by \"`1\" which is a syntax for generics\n * from C#.\n *\n * Hello[World] -> matches [World]\n * Hello`1[World] -> no match\n * string[] -> matches []\n */\nexport const hasSquareBracketsRegExp = /(?<!`1)\\[.*\\]$/g;\n\n/**\n * Parse any string value into a type object.\n * @param type String or String[] value like \"integer\", \"Link[Model]\" or [\"string\", \"null\"].\n * @param format String value like \"binary\" or \"date\".\n */\nexport const getType = ({\n debug,\n format,\n type = 'unknown',\n}: {\n debug?: boolean;\n format?: string;\n /**\n * Type can be the name of a schema component, a ref string, or any definition type.\n */\n type?: string | string[];\n}): Type => {\n const result: Type = {\n $refs: [],\n base: 'unknown',\n imports: [],\n isNullable: false,\n template: null,\n type: 'unknown',\n };\n\n // Special case for JSON Schema spec (december 2020, page 17),\n // that allows type to be an array of primitive types...\n if (Array.isArray(type)) {\n const joinedType = type\n .filter((value) => value !== 'null')\n .map((value) => getMappedType(value, format))\n .filter(Boolean)\n .join(' | ');\n result.type = joinedType;\n result.base = joinedType;\n result.isNullable = isDefinitionTypeNullable({ type });\n return result;\n }\n\n const mapped = getMappedType(type, format);\n if (mapped) {\n result.type = mapped;\n result.base = mapped;\n return result;\n }\n\n const typeWithoutNamespace = decodeURIComponent(stripNamespace(type));\n\n hasSquareBracketsRegExp.lastIndex = 0;\n if (hasSquareBracketsRegExp.test(typeWithoutNamespace)) {\n const matches = typeWithoutNamespace.match(/(.*?)\\[(.*)\\]$/);\n if (matches?.length) {\n const match1 = getType({\n debug,\n type: ensureValidTypeScriptJavaScriptIdentifier(matches[1]),\n });\n const match2 = getType({\n debug,\n type: ensureValidTypeScriptJavaScriptIdentifier(matches[2]),\n });\n\n if (match1.type === 'unknown[]') {\n result.type = `${match2.type}[]`;\n result.base = `${match2.type}`;\n match1.$refs = [];\n match1.imports = [];\n } else if (match2.type) {\n result.type = `${match1.type}<${match2.type}>`;\n result.base = match1.type;\n result.template = match2.type;\n } else {\n result.type = match1.type;\n result.base = match1.type;\n result.template = match1.type;\n }\n\n result.$refs = [...result.$refs, ...match1.$refs, ...match2.$refs];\n result.imports = [\n ...result.imports,\n ...match1.imports,\n ...match2.imports,\n ];\n return result;\n }\n }\n\n if (typeWithoutNamespace) {\n let encodedType = transformTypeName(\n ensureValidTypeScriptJavaScriptIdentifier(typeWithoutNamespace),\n );\n if (type.startsWith(refParametersPartial)) {\n // prefix parameter names to avoid conflicts, assuming people are mostly\n // interested in importing schema types and don't care about this naming\n encodedType = `Parameter${encodedType}`;\n }\n result.type = encodedType;\n result.base = encodedType;\n if (type.startsWith('#')) {\n result.$refs = [...result.$refs, decodeURIComponent(type)];\n }\n result.imports = [...result.imports, encodedType];\n return result;\n }\n\n return result;\n};\n","import { unique } from '../../../utils/unique';\nimport type { Enum } from '../interfaces/client';\nimport type { WithEnumExtension } from '../interfaces/WithEnumExtension';\n\nexport const getEnums = (\n definition: WithEnumExtension,\n values?: ReadonlyArray<string | number>,\n): Enum[] => {\n if (!Array.isArray(values)) {\n return [];\n }\n\n const descriptions = (definition['x-enum-descriptions'] ?? []).filter(\n (value) => typeof value === 'string',\n );\n const names = (\n definition['x-enum-varnames'] ??\n definition['x-enumNames'] ??\n []\n ).filter((value) => typeof value === 'string');\n\n return values\n .filter(unique)\n .filter((value) => typeof value === 'number' || typeof value === 'string')\n .map((value, index) => ({\n customDescription: descriptions[index],\n customName: names[index],\n description: undefined,\n value,\n }));\n};\n","/**\n * The spec generates a pattern like this '^\\d{3}-\\d{2}-\\d{4}$'\n * However, to use it in HTML or inside new RegExp() we need to\n * escape the pattern to become: '^\\\\d{3}-\\\\d{2}-\\\\d{4}$' in order\n * to make it a valid regexp string.\n *\n * Also, escape single quote characters, because the output uses single quotes for strings\n *\n * @param pattern\n */\nexport const getPattern = (pattern?: string): string | undefined =>\n pattern?.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n","import type { Client } from '../../../types/client';\nimport { escapeName } from '../../../utils/escape';\nimport type { Model } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getModelProperties = ({\n definition,\n getModel,\n openApi,\n types,\n}: {\n definition: OpenApiSchema;\n getModel: GetModelFn;\n openApi: OpenApi;\n types: Client['types'];\n}): Model[] => {\n const models: Model[] = [];\n\n Object.entries(definition.properties ?? {}).forEach(\n ([propertyName, property]) => {\n const propertyRequired = Boolean(\n definition.required?.includes(propertyName),\n );\n if (property.$ref) {\n const model = getType({ type: property.$ref });\n models.push({\n $refs: [],\n base: model.base,\n description: property.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n export: 'reference',\n format: property.format,\n imports: model.imports,\n in: '',\n isDefinition: false,\n isNullable: property['x-nullable'] === true,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n link: null,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n properties: [],\n template: model.template,\n type: model.type,\n uniqueItems: property.uniqueItems,\n });\n } else {\n const model = getModel({ definition: property, openApi, types });\n models.push({\n $refs: [],\n base: model.base,\n description: property.description || null,\n enum: model.enum,\n enums: model.enums,\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n export: model.export,\n format: property.format,\n imports: model.imports,\n in: '',\n isDefinition: false,\n isNullable: property['x-nullable'] === true,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n link: model.link,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n properties: model.properties,\n template: model.template,\n type: model.type,\n uniqueItems: property.uniqueItems,\n });\n }\n },\n );\n\n return models;\n};\n","import type { OpenApiReference as OpenApiReferenceV2 } from '../../v2/interfaces/OpenApiReference';\nimport type { OpenApiReference as OpenApiReferenceV3 } from '../../v3/interfaces/OpenApiReference';\nimport type { OpenApi } from '../interfaces/OpenApi';\n\nconst ESCAPED_REF_SLASH = /~1/g;\nconst ESCAPED_REF_TILDE = /~0/g;\n\nexport function getRef<T>(\n openApi: OpenApi,\n item: T & (OpenApiReferenceV2 | OpenApiReferenceV3),\n): T {\n if (item.$ref) {\n // Fetch the paths to the definitions, this converts:\n // \"#/components/schemas/Form\" to [\"components\", \"schemas\", \"Form\"]\n const paths = item.$ref.replace(/^#/g, '').split('/').filter(Boolean);\n\n // Try to find the reference by walking down the path,\n // if we cannot find it, then we throw an error.\n let result = openApi;\n paths.forEach((path) => {\n const decodedPath = decodeURIComponent(\n path.replace(ESCAPED_REF_SLASH, '/').replace(ESCAPED_REF_TILDE, '~'),\n );\n if (result.hasOwnProperty(decodedPath)) {\n // @ts-expect-error\n result = result[decodedPath];\n } else {\n throw new Error(`Could not find reference: \"${item.$ref}\"`);\n }\n });\n return result as T;\n }\n return item as T;\n}\n","import type { Client } from '../../../types/client';\nimport type { Model } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getRequiredPropertiesFromComposition = ({\n definitions,\n getModel,\n openApi,\n required,\n types,\n}: {\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n required: string[];\n types: Client['types'];\n}): Model[] =>\n definitions\n .reduce((properties, definition) => {\n if (definition.$ref) {\n const schema = getRef<OpenApiSchema>(openApi, definition);\n return [\n ...properties,\n ...getModel({ definition: schema, openApi, types }).properties,\n ];\n }\n return [\n ...properties,\n ...getModel({ definition, openApi, types }).properties,\n ];\n }, [] as Model[])\n .filter(\n (property) => !property.isRequired && required.includes(property.name),\n )\n .map((property) => ({\n ...property,\n isRequired: true,\n }));\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelComposition } from '../../common/interfaces/client';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelProperties } from './getModelProperties';\nimport { getRequiredPropertiesFromComposition } from './getRequiredPropertiesFromComposition';\n\nexport const getModelComposition = ({\n definition,\n definitions,\n getModel,\n openApi,\n type,\n types,\n}: {\n definition: OpenApiSchema;\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n type: 'one-of' | 'any-of' | 'all-of';\n types: Client['types'];\n}): ModelComposition => {\n const composition: ModelComposition = {\n $refs: [],\n enums: [],\n export: type,\n imports: [],\n properties: [],\n };\n\n const properties: Model[] = [];\n\n definitions\n .map((definition) => getModel({ definition, openApi, types }))\n .filter((model) => {\n const hasProperties = model.properties.length;\n const hasEnums = model.enums.length;\n const isObject = model.type === 'unknown';\n const isEmpty = isObject && !hasProperties && !hasEnums;\n return !isEmpty;\n })\n .forEach((model) => {\n composition.imports.push(...model.imports);\n composition.enums.push(...model.enums);\n composition.properties.push(model);\n });\n\n if (definition.required && type === 'all-of') {\n const requiredProperties = getRequiredPropertiesFromComposition({\n definitions,\n getModel,\n openApi,\n required: definition.required,\n types,\n });\n requiredProperties.forEach((requiredProperty) => {\n composition.imports.push(...requiredProperty.imports);\n composition.enums.push(...requiredProperty.enums);\n });\n properties.push(...requiredProperties);\n }\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n composition.imports.push(...modelProperty.imports);\n composition.enums.push(...modelProperty.enums);\n if (modelProperty.export === 'enum') {\n composition.enums.push(modelProperty);\n }\n });\n properties.push(...modelProperties);\n }\n\n if (properties.length) {\n composition.properties.push({\n $refs: [],\n base: 'unknown',\n description: '',\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: 'properties',\n properties,\n template: null,\n type: 'unknown',\n });\n }\n\n return composition;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelMeta } from '../../common/interfaces/client';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelComposition } from './getModelComposition';\nimport { getModelProperties } from './getModelProperties';\n\nexport const getModel = ({\n definition,\n isDefinition = false,\n meta,\n openApi,\n types,\n}: Pick<Client, 'types'> & {\n definition: OpenApiSchema;\n isDefinition?: boolean;\n meta?: ModelMeta;\n openApi: OpenApi;\n}): Model => {\n const model: Model = {\n $refs: [],\n base: 'unknown',\n description: definition.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: definition.exclusiveMaximum,\n exclusiveMinimum: definition.exclusiveMinimum,\n export: 'interface',\n format: definition.format,\n imports: [],\n in: '',\n isDefinition,\n isNullable: definition['x-nullable'] === true,\n isReadOnly: definition.readOnly === true,\n isRequired: false,\n link: null,\n maxItems: definition.maxItems,\n maxLength: definition.maxLength,\n maxProperties: definition.maxProperties,\n maximum: definition.maximum,\n meta,\n minItems: definition.minItems,\n minLength: definition.minLength,\n minProperties: definition.minProperties,\n minimum: definition.minimum,\n multipleOf: definition.multipleOf,\n name: meta?.name ?? '',\n pattern: getPattern(definition.pattern),\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: definition.uniqueItems,\n };\n\n if (definition.$ref) {\n const definitionRef = getType({ type: definition.$ref });\n model.export = 'reference';\n model.type = definitionRef.type;\n model.base = definitionRef.base;\n model.template = definitionRef.template;\n model.imports.push(...definitionRef.imports);\n return model;\n }\n\n if (definition.enum && definition.type !== 'boolean') {\n const enums = getEnums(definition, definition.enum);\n if (enums.length) {\n model.base = 'string';\n model.enum = [...model.enum, ...enums];\n model.export = 'enum';\n model.type = 'string';\n return model;\n }\n }\n\n if (definition.type === 'array' && definition.items) {\n if (definition.items.$ref) {\n const arrayItems = getType({ type: definition.items.$ref });\n model.export = 'array';\n model.type = arrayItems.type;\n model.base = arrayItems.base;\n model.template = arrayItems.template;\n model.imports.push(...arrayItems.imports);\n return model;\n } else {\n const arrayItems = getModel({\n definition: definition.items,\n openApi,\n types,\n });\n model.export = 'array';\n model.type = arrayItems.type;\n model.base = arrayItems.base;\n model.template = arrayItems.template;\n model.link = arrayItems;\n model.imports.push(...arrayItems.imports);\n return model;\n }\n }\n\n if (\n definition.type === 'object' &&\n typeof definition.additionalProperties === 'object'\n ) {\n if (definition.additionalProperties.$ref) {\n const additionalProperties = getType({\n type: definition.additionalProperties.$ref,\n });\n model.export = 'dictionary';\n model.type = additionalProperties.type;\n model.base = additionalProperties.base;\n model.template = additionalProperties.template;\n model.imports.push(...additionalProperties.imports);\n return model;\n } else {\n const additionalProperties = getModel({\n definition: definition.additionalProperties,\n openApi,\n types,\n });\n model.export = 'dictionary';\n model.type = additionalProperties.type;\n model.base = additionalProperties.base;\n model.template = additionalProperties.template;\n model.link = additionalProperties;\n model.imports.push(...additionalProperties.imports);\n return model;\n }\n }\n\n if (definition.allOf?.length) {\n const composition = getModelComposition({\n definition,\n definitions: definition.allOf,\n getModel,\n openApi,\n type: 'all-of',\n types,\n });\n model.export = composition.export;\n model.imports.push(...composition.imports);\n model.properties.push(...composition.properties);\n model.enums = [...model.enums, ...composition.enums];\n return model;\n }\n\n if (definition.type === 'object') {\n model.export = 'interface';\n model.type = 'unknown';\n model.base = 'unknown';\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n model.imports.push(...modelProperty.imports);\n model.enums = [...model.enums, ...modelProperty.enums];\n model.properties.push(modelProperty);\n if (modelProperty.export === 'enum') {\n model.enums = [...model.enums, modelProperty];\n }\n });\n }\n return model;\n }\n\n // If the schema has a type than it can be a basic or generic type.\n if (definition.type) {\n const definitionType = getType({\n format: definition.format,\n type: definition.type,\n });\n model.export = 'generic';\n model.type = definitionType.type;\n model.base = definitionType.base;\n model.template = definitionType.template;\n model.imports.push(...definitionType.imports);\n return model;\n }\n\n return model;\n};\n","import type { Client } from '../../../types/client';\nimport { reservedWordsRegExp } from '../../../utils/regexp';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getModel } from './getModel';\n\nexport const getModels = (\n openApi: OpenApi,\n): Pick<Client, 'models' | 'types'> => {\n const types: Client['types'] = {};\n let models: Client['models'] = [];\n\n Object.entries(openApi.definitions ?? {}).forEach(\n ([definitionName, definition]) => {\n const definitionType = getType({ type: definitionName });\n const name = definitionType.base.replace(reservedWordsRegExp, '_$1');\n const meta = {\n $ref: `#/definitions/${definitionName}`,\n name,\n };\n types[name] = meta;\n const model = getModel({\n definition,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n models = [...models, model];\n },\n );\n\n return {\n models,\n types,\n };\n};\n","import type {\n OperationParameter,\n OperationResponse,\n} from '../interfaces/client';\n\nexport const getOperationKey = (operation: {\n method: string;\n path: string;\n}) => {\n const operationKey = `${operation.method.toUpperCase()} ${operation.path}`;\n return operationKey;\n};\n\nexport const getOperationResponseHeader = (\n operationResponses: OperationResponse[],\n): string | null => {\n const header = operationResponses.find(\n (operationResponses) => operationResponses.in === 'header',\n );\n if (header) {\n return header.name;\n }\n return null;\n};\n\n/**\n * Does this operation have at least one required parameter?\n * @returns boolean\n */\nexport const isOperationParameterRequired = (\n parameters: OperationParameter[],\n) => {\n const isRequired = parameters.some((parameter) => parameter.isRequired);\n return isRequired;\n};\n\n/**\n * Attempts to parse response status code from string into number.\n * @param value string status code from OpenAPI definition\n * @returns Parsed status code or null if invalid value\n */\nexport const parseResponseStatusCode = (\n value: string,\n): OperationResponse['code'] | null => {\n if (value === 'default') {\n return 'default';\n }\n\n if (value === '1XX') {\n return '1XX';\n }\n\n if (value === '2XX') {\n return '2XX';\n }\n\n if (value === '3XX') {\n return '3XX';\n }\n\n if (value === '4XX') {\n return '4XX';\n }\n\n if (value === '5XX') {\n return '5XX';\n }\n\n if (/\\d{3}/g.test(value)) {\n const code = Number.parseInt(value, 10);\n if (code >= 100 && code < 600) {\n return code;\n }\n }\n\n return null;\n};\n\nexport const sorterByResponseStatusCode = (\n a: OperationResponse,\n b: OperationResponse,\n) => {\n if (a.code > b.code) {\n return 1;\n }\n\n if (a.code < b.code) {\n return -1;\n }\n\n return 0;\n};\n\nconst isErrorStatusCode = (code: OperationResponse['code']) =>\n code === '3XX' ||\n code === '4XX' ||\n code === '5XX' ||\n (typeof code === 'number' && code >= 300);\n\nconst isSuccessStatusCode = (code: OperationResponse['code']) =>\n code === '2XX' || (typeof code === 'number' && code >= 200 && code < 300);\n\n/**\n * Detects whether default response is meant to be used\n * for error or success response.\n */\nconst inferDefaultResponseTypes = (\n response: OperationResponse,\n responses: OperationResponse[],\n) => {\n let types: Array<'error' | 'success'> = [];\n\n const addResponseType = (type: (typeof types)[number]) => {\n if (!types.includes(type)) {\n types = [...types, type];\n }\n };\n\n const hasSuccessResponse = responses.some(({ code }) =>\n isSuccessStatusCode(code),\n );\n if (!hasSuccessResponse) {\n addResponseType('success');\n }\n\n const description = (response.description ?? '').toLocaleLowerCase();\n const $refs = response.$refs.join('|').toLocaleLowerCase();\n\n // must be in lowercase\n const errorKeywords = ['error', 'problem'];\n const successKeywords = ['success'];\n\n if (\n successKeywords.some(\n (keyword) => description.includes(keyword) || $refs.includes(keyword),\n )\n ) {\n addResponseType('success');\n }\n\n if (\n errorKeywords.some(\n (keyword) => description.includes(keyword) || $refs.includes(keyword),\n )\n ) {\n addResponseType('error');\n }\n\n if (!types.length) {\n addResponseType('error');\n }\n\n return types;\n};\n\nexport const tagResponseTypes = (responses: OperationResponse[]) =>\n responses.map((response) => {\n const { code } = response;\n if (code === 'default') {\n response.responseTypes = inferDefaultResponseTypes(response, responses);\n } else if (isSuccessStatusCode(code)) {\n response.responseTypes = ['success'];\n } else if (isErrorStatusCode(code)) {\n response.responseTypes = ['error'];\n }\n return response;\n });\n","import type { Model } from '../../common/interfaces/client';\nimport type { OpenApiParameter } from '../../v2/interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../../v3/interfaces/OpenApiSchema';\nimport { getDefinitionTypes } from '../../v3/parser/inferType';\nimport type { OperationParameter } from '../interfaces/client';\n\nexport const getDefault = (\n definition: OpenApiSchema | OpenApiParameter,\n model?: Model | OperationParameter,\n): unknown | undefined => {\n if (definition.default === undefined || definition.default === null) {\n return definition.default;\n }\n\n const definitionTypes = getDefinitionTypes(definition);\n\n const type =\n definitionTypes.find((type) => type !== 'null') ||\n typeof definition.default;\n\n switch (type) {\n case 'int':\n case 'integer':\n case 'number':\n if (\n model?.export === 'enum' &&\n model.enum?.[definition.default as number]\n ) {\n const { value } = model.enum[definition.default as number];\n return value;\n }\n return definition.default;\n case 'array':\n case 'boolean':\n case 'object':\n case 'string':\n return definition.default;\n default:\n return undefined;\n }\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\n\nexport const getOperationParameter = ({\n openApi,\n parameter,\n types,\n}: {\n openApi: OpenApi;\n parameter: OpenApiParameter;\n types: Client['types'];\n}): OperationParameter => {\n const config = getParserConfig();\n\n const operationParameterWithoutName: Omit<OperationParameter, 'name'> = {\n $refs: [],\n base: 'unknown',\n description: parameter.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: parameter.exclusiveMaximum,\n exclusiveMinimum: parameter.exclusiveMinimum,\n export: 'interface',\n format: parameter.format,\n imports: [],\n in: parameter.in,\n isDefinition: false,\n isNullable: parameter['x-nullable'] === true,\n isReadOnly: false,\n isRequired: parameter.required === true,\n link: null,\n maxItems: parameter.maxItems,\n maxLength: parameter.maxLength,\n maximum: parameter.maximum,\n mediaType: null,\n minItems: parameter.minItems,\n minLength: parameter.minLength,\n minimum: parameter.minimum,\n multipleOf: parameter.multipleOf,\n pattern: getPattern(parameter.pattern),\n prop: parameter.name,\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: parameter.uniqueItems,\n };\n let operationParameter = {\n ...operationParameterWithoutName,\n name: config.nameFn.operationParameter(operationParameterWithoutName),\n };\n\n if (parameter.$ref) {\n const model = getType({ type: parameter.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n if (parameter.enum) {\n const model = getEnums(parameter, parameter.enum);\n if (model.length) {\n operationParameter = {\n ...operationParameter,\n base: 'string',\n enum: [...operationParameter.enum, ...model],\n export: 'enum',\n type: 'string',\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n }\n\n if (parameter.type === 'array' && parameter.items) {\n const model = getType({\n format: parameter.items.format,\n type: parameter.items.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'array',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n if (parameter.type === 'object' && parameter.items) {\n const model = getType({\n format: parameter.items.format,\n type: parameter.items.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'dictionary',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n let schema = parameter.schema;\n if (schema) {\n if (schema.$ref?.startsWith('#/parameters/')) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n enum: [...operationParameter.enum, ...model.enum],\n enums: [...operationParameter.enums, ...model.enums],\n export: model.export,\n imports: [...operationParameter.imports, ...model.imports],\n link: model.link,\n properties: [...operationParameter.properties, ...model.properties],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n // If the parameter has a type than it can be a basic or generic type.\n if (parameter.type) {\n const model = getType({\n format: parameter.format,\n type: parameter.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'generic',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n return operationParameter;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameters } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport { getOperationParameter } from './getOperationParameter';\n\nconst allowedIn = ['body', 'formData', 'header', 'path', 'query'] as const;\n\nexport const getOperationParameters = ({\n openApi,\n parameters,\n types,\n}: {\n openApi: OpenApi;\n parameters: OpenApiParameter[];\n types: Client['types'];\n}): OperationParameters => {\n const config = getParserConfig();\n\n const operationParameters: OperationParameters = {\n $refs: [],\n imports: [],\n parameters: [],\n parametersBody: null,\n parametersCookie: [], // not used in v2\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [],\n };\n\n parameters.forEach((parameterOrReference) => {\n const parameterDef = getRef<OpenApiParameter>(\n openApi,\n parameterOrReference,\n );\n const parameter = getOperationParameter({\n openApi,\n parameter: parameterDef,\n types,\n });\n\n const skip = !config.filterFn.operationParameter(parameter);\n if (!allowedIn.includes(parameterDef.in) || skip) {\n return;\n }\n\n switch (parameterDef.in) {\n case 'body':\n operationParameters.parametersBody = parameter;\n break;\n case 'formData':\n operationParameters.parametersForm = [\n ...operationParameters.parametersForm,\n parameter,\n ];\n break;\n case 'header':\n operationParameters.parametersHeader = [\n ...operationParameters.parametersHeader,\n parameter,\n ];\n break;\n case 'path':\n operationParameters.parametersPath = [\n ...operationParameters.parametersPath,\n parameter,\n ];\n break;\n case 'query':\n operationParameters.parametersQuery = [\n ...operationParameters.parametersQuery,\n parameter,\n ];\n break;\n }\n\n operationParameters.$refs = [\n ...operationParameters.$refs,\n ...parameter.$refs,\n ];\n operationParameters.imports = [\n ...operationParameters.imports,\n ...parameter.imports,\n ];\n operationParameters.parameters = [\n ...operationParameters.parameters,\n parameter,\n ];\n });\n\n return operationParameters;\n};\n","/**\n * Sort list of values and ensure that required parameters are first so that we do not generate\n * invalid types. Optional parameters cannot be positioned after required ones.\n */\nexport function toSortedByRequired<\n T extends { default?: unknown; isRequired: boolean },\n>(values: T[]): T[] {\n return values.sort((a, b) => {\n const aNeedsValue = a.isRequired && a.default === undefined;\n const bNeedsValue = b.isRequired && b.default === undefined;\n if (aNeedsValue && !bNeedsValue) return -1;\n if (bNeedsValue && !aNeedsValue) return 1;\n return 0;\n });\n}\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\n\nexport const getOperationResponse = ({\n code,\n openApi,\n response,\n types,\n}: {\n code: OperationResponse['code'];\n openApi: OpenApi;\n response: OpenApiResponse;\n types: Client['types'];\n}): OperationResponse => {\n const operationResponse: OperationResponse = {\n $refs: [],\n base: code !== 204 ? 'unknown' : 'void',\n code,\n description: response.description || null,\n enum: [],\n enums: [],\n export: 'generic',\n imports: [],\n in: 'response',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n responseTypes: [],\n template: null,\n type: code !== 204 ? 'unknown' : 'void',\n };\n\n let schema = response.schema;\n if (schema) {\n if (schema.$ref?.startsWith('#/responses/')) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationResponse.export = 'reference';\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n return operationResponse;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationResponse.export = model.export;\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.link = model.link;\n operationResponse.isReadOnly = model.isReadOnly;\n operationResponse.isRequired = model.isRequired;\n operationResponse.isNullable = model.isNullable;\n operationResponse.format = model.format;\n operationResponse.maximum = model.maximum;\n operationResponse.exclusiveMaximum = model.exclusiveMaximum;\n operationResponse.minimum = model.minimum;\n operationResponse.exclusiveMinimum = model.exclusiveMinimum;\n operationResponse.multipleOf = model.multipleOf;\n operationResponse.maxLength = model.maxLength;\n operationResponse.minLength = model.minLength;\n operationResponse.maxItems = model.maxItems;\n operationResponse.minItems = model.minItems;\n operationResponse.uniqueItems = model.uniqueItems;\n operationResponse.maxProperties = model.maxProperties;\n operationResponse.minProperties = model.minProperties;\n operationResponse.pattern = getPattern(model.pattern);\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.enum = [...operationResponse.enum, ...model.enum];\n operationResponse.enums = [...operationResponse.enums, ...model.enums];\n operationResponse.properties = [\n ...operationResponse.properties,\n ...model.properties,\n ];\n return operationResponse;\n }\n\n // We support basic properties from response headers, since both\n // fetch and XHR client just support string types.\n if (response.headers) {\n for (const name in response.headers) {\n operationResponse.in = 'header';\n operationResponse.name = name;\n operationResponse.type = 'string';\n operationResponse.base = 'string';\n return operationResponse;\n }\n }\n\n return operationResponse;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n parseResponseStatusCode,\n sorterByResponseStatusCode,\n tagResponseTypes,\n} from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiResponses } from '../interfaces/OpenApiResponses';\nimport { getOperationResponse } from './getOperationResponse';\n\nexport const getOperationResponses = ({\n openApi,\n responses,\n types,\n}: {\n openApi: OpenApi;\n responses: OpenApiResponses;\n types: Client['types'];\n}): OperationResponse[] => {\n let operationResponses: OperationResponse[] = [];\n\n Object.entries(responses).forEach(([responseCode, responseOrReference]) => {\n const code = parseResponseStatusCode(responseCode);\n if (!code) {\n return;\n }\n\n const response = getRef<OpenApiResponse>(openApi, responseOrReference);\n const operationResponse = getOperationResponse({\n code,\n openApi,\n response,\n types,\n });\n operationResponses = [...operationResponses, operationResponse];\n });\n\n operationResponses = tagResponseTypes(operationResponses);\n\n return operationResponses.sort(sorterByResponseStatusCode);\n};\n","import type { Client } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport type {\n Operation,\n OperationParameters,\n} from '../../common/interfaces/client';\nimport { getOperationResponseHeader } from '../../common/parser/operation';\nimport { toSortedByRequired } from '../../common/parser/sort';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiOperation } from '../interfaces/OpenApiOperation';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperationResponses } from './getOperationResponses';\n\nexport const getOperation = ({\n method,\n op,\n openApi,\n types,\n pathParams,\n url,\n}: {\n method: Lowercase<Operation['method']>;\n op: OpenApiOperation;\n openApi: OpenApi;\n pathParams: OperationParameters;\n types: Client['types'];\n url: string;\n}): Operation => {\n const config = getParserConfig();\n\n const operationWithoutName: Omit<Operation, 'name'> = {\n $refs: [],\n deprecated: op.deprecated === true,\n description: op.description || null,\n id: op.operationId || null,\n imports: [],\n method: method.toUpperCase() as Operation['method'],\n parameters: [...pathParams.parameters],\n parametersBody: pathParams.parametersBody,\n parametersCookie: [...pathParams.parametersCookie],\n parametersForm: [...pathParams.parametersForm],\n parametersHeader: [...pathParams.parametersHeader],\n parametersPath: [...pathParams.parametersPath],\n parametersQuery: [...pathParams.parametersQuery],\n path: url,\n responseHeader: null,\n responses: [],\n summary: op.summary || null,\n tags: op.tags || null,\n };\n const operation = {\n ...operationWithoutName,\n name: config.nameFn.operation({\n config: getConfig(),\n method: operationWithoutName.method,\n operationId: op.operationId,\n path: operationWithoutName.path,\n }),\n };\n\n if (op.parameters) {\n const parameters = getOperationParameters({\n openApi,\n parameters: op.parameters,\n types,\n });\n operation.$refs = [...operation.$refs, ...parameters.$refs];\n operation.imports = [...operation.imports, ...parameters.imports];\n operation.parameters = [...operation.parameters, ...parameters.parameters];\n operation.parametersBody = parameters.parametersBody;\n operation.parametersCookie = [\n ...operation.parametersCookie,\n ...parameters.parametersCookie,\n ];\n operation.parametersForm = [\n ...operation.parametersForm,\n ...parameters.parametersForm,\n ];\n operation.parametersHeader = [\n ...operation.parametersHeader,\n ...parameters.parametersHeader,\n ];\n operation.parametersPath = [\n ...operation.parametersPath,\n ...parameters.parametersPath,\n ];\n operation.parametersQuery = [\n ...operation.parametersQuery,\n ...parameters.parametersQuery,\n ];\n }\n\n if (op.responses) {\n operation.responses = getOperationResponses({\n openApi,\n responses: op.responses,\n types,\n });\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n operation.responseHeader = getOperationResponseHeader(successResponses);\n\n successResponses.forEach((response) => {\n operation.$refs = [...operation.$refs, ...response.$refs];\n operation.imports = [...operation.imports, ...response.imports];\n });\n }\n\n operation.parameters = toSortedByRequired(operation.parameters);\n\n return operation;\n};\n","import { getConfig } from '../../../utils/config';\nimport type { Client, Operation } from '../../common/interfaces/client';\nimport { getOperationKey } from '../../common/parser/operation';\nimport { allowedServiceMethods } from '../../common/parser/service';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperation } from './operation';\n\nexport const getOperations = ({\n openApi,\n types,\n}: {\n openApi: OpenApi;\n types: Client['types'];\n}): Operation[] => {\n const config = getParserConfig();\n\n const operationIds = new Map<string, string>();\n const operations: Operation[] = [];\n\n for (const path in openApi.paths) {\n const pathItem = openApi.paths[path];\n const pathParameters = getOperationParameters({\n openApi,\n parameters: pathItem.parameters ?? [],\n types,\n });\n\n for (const name in pathItem) {\n const method = name as Lowercase<Operation['method']>;\n\n const operationKey = getOperationKey({\n method,\n path,\n });\n\n if (allowedServiceMethods.includes(method)) {\n const op = pathItem[method]!;\n\n if (op.operationId) {\n if (operationIds.has(op.operationId)) {\n console.warn(\n `❗️ Duplicate operationId: ${op.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n } else {\n operationIds.set(op.operationId, operationKey);\n }\n }\n\n if (\n config.filterFn.operation({\n config: getConfig(),\n operationKey,\n })\n ) {\n const operation = getOperation({\n method,\n op,\n openApi,\n pathParams: pathParameters,\n types,\n url: path,\n });\n operations.push(operation);\n }\n }\n }\n }\n\n return operations;\n};\n","import type { OpenApi } from '../interfaces/OpenApi';\n\n/**\n * Get the base server url.\n * @param openApi\n */\nexport const getServer = (openApi: OpenApi): string => {\n const scheme = openApi.schemes?.[0] || 'http';\n const host = openApi.host;\n const basePath = openApi.basePath || '';\n const url = host ? `${scheme}://${host}${basePath}` : basePath;\n return url.replace(/\\/$/g, '');\n};\n","import type { Client } from '../common/interfaces/client';\nimport { getServiceVersion } from '../common/parser/service';\nimport type { OpenApi } from './interfaces/OpenApi';\nimport { getModels } from './parser/getModels';\nimport { getOperations } from './parser/getOperations';\nimport { getServer } from './parser/getServer';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, operations and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport const parse = (openApi: OpenApi): Client => {\n const version = getServiceVersion(openApi.info.version);\n const server = getServer(openApi);\n const { models, types } = getModels(openApi);\n const operations = getOperations({ openApi, types });\n\n return {\n models,\n operations,\n server,\n types,\n version,\n };\n};\n","import type { Model } from '../../common/interfaces/client';\nimport type { Dictionary } from '../../common/interfaces/Dictionary';\nimport { stripNamespace } from '../../common/parser/stripNamespace';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiDiscriminator } from '../interfaces/OpenApiDiscriminator';\n\nconst inverseDictionary = (map: Dictionary<string>): Dictionary<string> => {\n const m2: Dictionary<string> = {};\n for (const name in map) {\n m2[map[name]] = name;\n }\n return m2;\n};\n\nexport const findOneOfParentDiscriminator = (\n openApi: OpenApi,\n parent?: Model,\n): OpenApiDiscriminator | undefined => {\n if (openApi.components && parent) {\n for (const definitionName in openApi.components.schemas) {\n if (openApi.components.schemas.hasOwnProperty(definitionName)) {\n const schema = openApi.components.schemas[definitionName];\n if (\n schema.discriminator &&\n schema.oneOf?.length &&\n schema.oneOf.some(\n (definition) =>\n definition.$ref && stripNamespace(definition.$ref) == parent.name,\n )\n ) {\n return schema.discriminator;\n }\n }\n }\n }\n return undefined;\n};\n\nexport const mapPropertyValue = (\n discriminator: OpenApiDiscriminator,\n parent: Model,\n): string => {\n if (discriminator.mapping) {\n const mapping = inverseDictionary(discriminator.mapping);\n const key = Object.keys(mapping).find(\n (item) => stripNamespace(item) == parent.name,\n );\n if (key && mapping[key]) {\n return mapping[key];\n }\n }\n return parent.name;\n};\n","import type { Client } from '../../../types/client';\nimport { escapeName } from '../../../utils/escape';\nimport { unique } from '../../../utils/unique';\nimport type { Model } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport {\n findOneOfParentDiscriminator,\n mapPropertyValue,\n} from './discriminator';\nimport { isDefinitionNullable } from './inferType';\n\nexport const getAdditionalPropertiesModel = ({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n}: {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n model: Model;\n openApi: OpenApi;\n types: Client['types'];\n}): Model => {\n const ap =\n typeof definition.additionalProperties === 'object'\n ? definition.additionalProperties\n : {};\n const apModel = getModel({\n debug,\n definition: ap,\n openApi,\n parentDefinition: definition,\n types,\n });\n\n if (ap.$ref) {\n const apType = getType({ type: ap.$ref });\n model.base = apType.base;\n model.default = getDefault(definition, model);\n model.export = 'dictionary';\n model.imports.push(...apType.imports);\n model.template = apType.template;\n model.type = apType.type;\n return model;\n }\n\n if (\n definition.additionalProperties &&\n definition.properties &&\n Object.keys(definition.properties).length > 0\n ) {\n const additionalPropertiesType =\n typeof definition.additionalProperties === 'object' &&\n definition.additionalProperties.type &&\n !Array.isArray(definition.additionalProperties.type)\n ? definition.additionalProperties.type\n : apModel.base;\n const additionalProperties = [\n getType({ type: additionalPropertiesType }).base,\n ...model.properties.map((property) => property.base),\n ];\n apModel.base = additionalProperties.filter(unique).join(' | ');\n apModel.default = getDefault(definition, model);\n apModel.export = 'generic';\n apModel.isRequired = definition.additionalProperties === true;\n apModel.name = '[key: string]';\n return apModel;\n }\n\n model.base = apModel.base;\n model.default = getDefault(definition, model);\n model.export = 'dictionary';\n model.imports.push(...apModel.imports);\n model.link = apModel;\n model.template = apModel.template;\n model.type = apModel.type;\n return model;\n};\n\nexport const getModelProperties = ({\n debug,\n definition,\n getModel,\n openApi,\n parent,\n types,\n}: {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n openApi: OpenApi;\n parent?: Model;\n types: Client['types'];\n}): Model[] => {\n let models: Model[] = [];\n const discriminator = findOneOfParentDiscriminator(openApi, parent);\n\n Object.entries(definition.properties ?? {}).forEach(\n ([propertyName, property]) => {\n const propertyRequired = Boolean(\n definition.required?.includes(propertyName),\n );\n\n const propertyValues: Omit<\n Model,\n | '$refs'\n | 'base'\n | 'enum'\n | 'enums'\n | 'export'\n | 'imports'\n | 'isNullable'\n | 'link'\n | 'properties'\n | 'template'\n | 'type'\n > = {\n default: property.default,\n deprecated: property.deprecated === true,\n description: property.description || null,\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n format:\n property.type === 'array'\n ? property.items?.format ?? property.format\n : property.format,\n in: '',\n isDefinition: false,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n uniqueItems: property.uniqueItems,\n };\n\n if (parent && discriminator?.propertyName == propertyName) {\n models = [\n ...models,\n {\n ...propertyValues,\n $refs: [],\n base: `'${mapPropertyValue(discriminator, parent)}'`,\n enum: [],\n enums: [],\n export: 'reference',\n imports: [],\n isNullable: isDefinitionNullable(property),\n link: null,\n properties: [],\n template: null,\n type: 'string',\n },\n ];\n return;\n }\n\n if (property.$ref) {\n const model = getType({ type: property.$ref });\n models = [\n ...models,\n {\n ...propertyValues,\n $refs: model.$refs,\n base: model.base,\n enum: [],\n enums: [],\n export: 'reference',\n imports: model.imports,\n isNullable: model.isNullable || isDefinitionNullable(property),\n link: null,\n properties: [],\n template: model.template,\n type: model.type,\n },\n ];\n return;\n }\n\n const model = getModel({\n debug,\n definition: property,\n initialValues: propertyValues,\n openApi,\n parentDefinition: definition,\n types,\n });\n model.isNullable = model.isNullable || isDefinitionNullable(property);\n models = [...models, model];\n },\n );\n\n return models;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getRequiredPropertiesFromComposition = ({\n debug,\n definitions,\n getModel,\n openApi,\n required,\n types,\n}: {\n debug?: boolean;\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n required: string[];\n types: Client['types'];\n}): Model[] => {\n const requiredProperties = definitions\n .reduce((properties, definition) => {\n if (definition.$ref) {\n const type = getType({ type: definition.$ref });\n // avoid circular references if two refs reference each other\n // if (types[type.base] && types[type.base].$ref === definition.$ref) {\n // const schema = getRef<OpenApiSchema>(openApi, definition);\n // return [...properties]\n // }\n\n const meta = {\n $ref: definition.$ref,\n name: type.base,\n };\n types[type.base] = meta;\n const schema = getRef<OpenApiSchema>(openApi, definition);\n return [\n ...properties,\n ...getModel({\n debug,\n definition: schema,\n meta,\n openApi,\n types,\n }).properties,\n ];\n }\n\n return [\n ...properties,\n ...getModel({\n debug,\n definition,\n openApi,\n parentDefinition: definition,\n types,\n }).properties,\n ];\n }, [] as Model[])\n .filter(\n (property) => !property.isRequired && required.includes(property.name),\n )\n .map((property) => ({\n ...property,\n isRequired: true,\n }));\n\n return requiredProperties;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelComposition } from '../../common/interfaces/client';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelProperties } from './getModelProperties';\nimport { getRequiredPropertiesFromComposition } from './getRequiredPropertiesFromComposition';\n\ntype Composition = {\n definitions: OpenApiSchema[];\n type: ModelComposition['export'];\n};\n\nexport const findModelComposition = (\n definition: OpenApiSchema,\n): Composition | undefined => {\n const compositions: ReadonlyArray<{\n definitions: Composition['definitions'] | undefined;\n type: Composition['type'];\n }> = [\n {\n definitions: definition.allOf,\n type: 'all-of',\n },\n {\n definitions: definition.anyOf,\n type: 'any-of',\n },\n {\n definitions: definition.oneOf,\n type: 'one-of',\n },\n ];\n return compositions.find(\n (composition) => composition.definitions?.length,\n ) as ReturnType<typeof findModelComposition>;\n};\n\nexport const getModelComposition = ({\n debug,\n definition,\n definitions,\n getModel,\n model,\n openApi,\n type,\n types,\n}: Composition &\n Pick<Client, 'types'> & {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n model: Model;\n openApi: OpenApi;\n }): ModelComposition => {\n const composition: ModelComposition = {\n $refs: model.$refs,\n enums: model.enums,\n export: type,\n imports: model.imports,\n properties: model.properties,\n };\n\n let properties: Model[] = [];\n\n definitions\n .map((def) => {\n const modelFromDef = getModel({\n debug,\n definition: def,\n openApi,\n parentDefinition: definition,\n types,\n });\n return modelFromDef;\n })\n .forEach((model) => {\n composition.$refs = [...composition.$refs, ...model.$refs];\n composition.imports = [...composition.imports, ...model.imports];\n composition.enums = [...composition.enums, ...model.enums];\n composition.properties = [...composition.properties, model];\n });\n\n if (definition.required && type === 'all-of') {\n const requiredProperties = getRequiredPropertiesFromComposition({\n debug,\n definitions,\n getModel,\n openApi,\n required: definition.required,\n types,\n });\n requiredProperties.forEach((requiredProperty) => {\n composition.$refs = [...composition.$refs, ...requiredProperty.$refs];\n composition.imports = [\n ...composition.imports,\n ...requiredProperty.imports,\n ];\n composition.enums = [...composition.enums, ...requiredProperty.enums];\n });\n properties = [...properties, ...requiredProperties];\n }\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n composition.$refs = [...composition.$refs, ...modelProperty.$refs];\n composition.imports = [...composition.imports, ...modelProperty.imports];\n composition.enums = [...composition.enums, ...modelProperty.enums];\n if (modelProperty.export === 'enum') {\n composition.enums = [...composition.enums, modelProperty];\n }\n });\n properties = [...properties, ...modelProperties];\n }\n\n if (properties.length) {\n const foundComposition = findModelComposition(definition);\n if (foundComposition) {\n const propertiesProperty: Model = {\n $refs: [],\n base: 'unknown',\n description: '',\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: 'properties',\n properties,\n template: null,\n type: 'unknown',\n };\n\n if (foundComposition.type === 'one-of') {\n composition.properties = [\n {\n ...composition,\n base: '',\n description: null,\n enum: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: true,\n link: null,\n name: '',\n template: null,\n type: '',\n },\n propertiesProperty,\n ];\n composition.export = 'all-of';\n } else {\n composition.properties = [\n ...composition.properties,\n propertiesProperty,\n ];\n }\n }\n }\n\n return composition;\n};\n","import type { Client } from '../../../types/client';\nimport { enumMeta } from '../../../utils/enum';\nimport type { Model, ModelMeta } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport {\n findModelComposition,\n getModelComposition,\n} from './getModelComposition';\nimport {\n getAdditionalPropertiesModel,\n getModelProperties,\n} from './getModelProperties';\nimport {\n getDefinitionTypes,\n inferType,\n isDefinitionNullable,\n} from './inferType';\n\nexport const getModel = ({\n debug,\n definition,\n initialValues = {},\n isDefinition = false,\n meta,\n openApi,\n parentDefinition = null,\n types,\n}: Pick<Client, 'types'> & {\n debug?: boolean;\n definition: OpenApiSchema;\n /**\n * Pass through initial model values\n */\n initialValues?: Partial<Model>;\n isDefinition?: boolean;\n meta?: ModelMeta;\n openApi: OpenApi;\n parentDefinition?: OpenApiSchema | null;\n}): Model => {\n const definitionTypes = getDefinitionTypes(definition);\n const inferredType = inferType(definition, definitionTypes);\n\n const model: Model = {\n $refs: [],\n base: 'unknown',\n deprecated: Boolean(definition.deprecated),\n description: definition.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: definition.exclusiveMaximum,\n exclusiveMinimum: definition.exclusiveMinimum,\n export: 'interface',\n format: definition.format,\n imports: [],\n in: '',\n isDefinition,\n isNullable: isDefinitionNullable(definition),\n isReadOnly: definition.readOnly === true,\n isRequired: false,\n link: null,\n maxItems: definition.maxItems,\n maxLength: definition.maxLength,\n maxProperties: definition.maxProperties,\n maximum: definition.maximum,\n meta,\n minItems: definition.minItems,\n minLength: definition.minLength,\n minProperties: definition.minProperties,\n minimum: definition.minimum,\n multipleOf: definition.multipleOf,\n name: meta?.name ?? '',\n pattern: getPattern(definition.pattern),\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: definition.uniqueItems,\n ...initialValues,\n };\n\n if (definition.$ref) {\n const definitionRef = getType({\n debug,\n type: definition.$ref,\n });\n model.$refs = [...model.$refs, decodeURIComponent(definition.$ref)];\n model.base = definitionRef.base;\n model.export = 'reference';\n model.imports = [...model.imports, ...definitionRef.imports];\n model.template = definitionRef.template;\n model.type = definitionRef.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (inferredType === 'enum') {\n const enums = getEnums(definition, definition.enum);\n if (enums.length) {\n model.base = 'string';\n model.enum = [...model.enum, ...enums];\n model.export = 'enum';\n model.type = 'string';\n model.default = getDefault(definition, model);\n if (!model.meta) {\n model.meta = enumMeta(model);\n }\n return model;\n }\n }\n\n if (\n definitionTypes.includes('array') &&\n (definition.items || definition.prefixItems)\n ) {\n if (definition.prefixItems) {\n const arrayItems = definition.prefixItems.map((item) =>\n getModel({\n definition: item,\n openApi,\n parentDefinition: definition,\n types,\n }),\n );\n\n model.export = 'array';\n model.$refs = [\n ...model.$refs,\n ...arrayItems.reduce(\n (acc, m) => [...acc, ...m.$refs],\n [] as Model['$refs'],\n ),\n ];\n model.imports = [\n ...model.imports,\n ...arrayItems.reduce(\n (acc, m) => [...acc, ...m.imports],\n [] as Model['imports'],\n ),\n ];\n model.link = arrayItems;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (!definition.items) {\n return model;\n }\n\n if (definition.items.$ref) {\n const arrayItems = getType({ type: definition.items.$ref });\n model.$refs = [...model.$refs, decodeURIComponent(definition.items.$ref)];\n model.base = arrayItems.base;\n model.export = 'array';\n model.imports = [...model.imports, ...arrayItems.imports];\n model.template = arrayItems.template;\n model.type = arrayItems.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (definition.items.anyOf && parentDefinition && parentDefinition.type) {\n const foundComposition = findModelComposition(parentDefinition);\n if (\n foundComposition &&\n foundComposition.definitions.some(\n (definition) => !getDefinitionTypes(definition).includes('array'),\n )\n ) {\n return getModel({\n definition: definition.items,\n openApi,\n parentDefinition: definition,\n types,\n });\n }\n }\n\n /**\n * if items are a plain array, infer any-of composition\n * {@link} https://github.com/ferdikoomen/openapi-typescript-codegen/issues/2062\n */\n const arrayItemsDefinition: OpenApiSchema = Array.isArray(definition.items)\n ? {\n anyOf: definition.items,\n }\n : definition.items;\n const arrayItems = getModel({\n definition: arrayItemsDefinition,\n openApi,\n parentDefinition: definition,\n types,\n });\n model.base = arrayItems.base;\n model.export = 'array';\n model.$refs = [...model.$refs, ...arrayItems.$refs];\n model.imports = [...model.imports, ...arrayItems.imports];\n model.link = arrayItems;\n model.template = arrayItems.template;\n model.type = arrayItems.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n const foundComposition = findModelComposition(definition);\n if (foundComposition) {\n const composition = getModelComposition({\n ...foundComposition,\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n const result = { ...model, ...composition };\n return result;\n }\n\n if (\n definitionTypes.includes('object') ||\n definition.properties ||\n definition.additionalProperties\n ) {\n if (\n definition.properties &&\n (Object.keys(definition.properties).length > 0 ||\n !definition.additionalProperties)\n ) {\n model.base = 'unknown';\n model.export = 'interface';\n model.type = 'unknown';\n model.default = getDefault(definition, model);\n\n const modelProperties = getModelProperties({\n debug,\n definition,\n getModel,\n openApi,\n parent: model,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n model.$refs = [...model.$refs, ...modelProperty.$refs];\n model.enums = [...model.enums, ...modelProperty.enums];\n model.imports = [...model.imports, ...modelProperty.imports];\n model.properties = [...model.properties, modelProperty];\n if (modelProperty.export === 'enum') {\n model.enums = [...model.enums, modelProperty];\n }\n });\n\n if (definition.additionalProperties) {\n const modelProperty = getAdditionalPropertiesModel({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n model.properties = [...model.properties, modelProperty];\n }\n\n // objects with no explicit properties accept any key/value pair\n if (\n !model.properties.length &&\n model.base === 'unknown' &&\n model.type === 'unknown'\n ) {\n model.export = 'dictionary';\n if (!model.name) {\n model.name = '[key: string]';\n }\n }\n\n return model;\n }\n\n const result = getAdditionalPropertiesModel({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n return result;\n }\n\n if (definition.const !== undefined) {\n const definitionConst = definition.const;\n const modelConst =\n typeof definitionConst === 'string'\n ? `\"${definitionConst}\"`\n : `${definitionConst}`;\n model.base = modelConst;\n model.export = 'const';\n model.type = modelConst;\n return model;\n }\n\n // If the schema has a type than it can be a basic or generic type.\n if (definitionTypes.length) {\n const definitionType = getType({\n format: definition.format,\n type: definition.type,\n });\n model.base = definitionType.base;\n model.export = 'generic';\n model.$refs = [...model.$refs, ...definitionType.$refs];\n model.imports = [...model.imports, ...definitionType.imports];\n model.isNullable = definitionType.isNullable || model.isNullable;\n model.template = definitionType.template;\n model.type = definitionType.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n return model;\n};\n","import type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getParameterSchema = (\n definition: OpenApiParameter,\n): OpenApiSchema | undefined => {\n if (definition.schema) {\n return definition.schema;\n }\n\n if (definition.content) {\n // treat every media type the same for now, types should be modified to\n // preserve this data so client knows which headers to use and how to\n // parse response bodies\n const contents = Object.entries(definition.content);\n for (const [key, mediaTypeObject] of contents) {\n if (mediaTypeObject.schema) {\n const mediaType = key as keyof Required<OpenApiParameter>['content'];\n return definition.content[mediaType].schema;\n }\n }\n }\n};\n","import type { Client } from '../../../types/client';\nimport { getParametersMeta, getSchemasMeta } from '../../../utils/meta';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getModel } from './getModel';\nimport { getParameterSchema } from './parameter';\n\nexport const getModels = (\n openApi: OpenApi,\n): Pick<Client, 'models' | 'types'> => {\n const config = getParserConfig();\n\n const types: Client['types'] = {};\n let models: Client['models'] = [];\n\n if (!openApi.components) {\n return {\n models,\n types,\n };\n }\n\n Object.entries(openApi.components.schemas ?? {}).forEach(\n ([definitionName, definition]) => {\n const meta = getSchemasMeta(definitionName);\n types[meta.name] = meta;\n const model = getModel({\n definition,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n models = [...models, model];\n },\n );\n\n Object.entries(openApi.components.parameters ?? {}).forEach(\n ([definitionName, definition]) => {\n const schema = getParameterSchema(definition);\n if (!schema) {\n if (config.debug) {\n console.warn('Skipping generating parameter:', definitionName);\n }\n return;\n }\n\n const meta = getParametersMeta(definitionName);\n types[meta.name] = meta;\n const model = getModel({\n definition: schema,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n model.deprecated = definition.deprecated;\n model.description = definition.description || null;\n models = [...models, model];\n },\n );\n\n return {\n models,\n types,\n };\n};\n","import type { Client } from '../../../types/client';\nimport { refParametersPartial } from '../../../utils/const';\nimport { enumMeta } from '../../../utils/enum';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\nimport { isDefinitionNullable } from './inferType';\nimport { getParameterSchema } from './parameter';\n\nexport const getOperationParameter = ({\n openApi,\n parameter,\n types,\n}: {\n openApi: OpenApi;\n parameter: OpenApiParameter;\n types: Client['types'];\n}): OperationParameter => {\n const config = getParserConfig();\n\n const operationParameterWithoutName: Omit<OperationParameter, 'name'> = {\n $refs: [],\n base: 'unknown',\n deprecated: parameter.deprecated === true,\n description: parameter.description || null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: parameter.in,\n isDefinition: false,\n isNullable: isDefinitionNullable(parameter),\n isReadOnly: false,\n isRequired: parameter.required === true,\n link: null,\n mediaType: null,\n prop: parameter.name,\n properties: [],\n template: null,\n type: 'unknown',\n };\n let operationParameter = {\n ...operationParameterWithoutName,\n name: config.nameFn.operationParameter(operationParameterWithoutName),\n };\n\n if (parameter.$ref) {\n const model = getType({ type: parameter.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n return operationParameter;\n }\n\n let schema = getParameterSchema(parameter);\n if (schema) {\n if (schema.$ref?.startsWith(refParametersPartial)) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(schema);\n return operationParameter;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n enum: [...operationParameter.enum, ...model.enum],\n enums: [...operationParameter.enums, ...model.enums],\n exclusiveMaximum: model.exclusiveMaximum,\n exclusiveMinimum: model.exclusiveMinimum,\n export: model.export,\n format: model.format,\n imports: [...operationParameter.imports, ...model.imports],\n isNullable: operationParameter.isNullable || model.isNullable,\n isReadOnly: model.isReadOnly,\n isRequired: operationParameter.isRequired || model.isRequired,\n link: model.link,\n maxItems: model.maxItems,\n maxLength: model.maxLength,\n maxProperties: model.maxProperties,\n maximum: model.maximum,\n minItems: model.minItems,\n minLength: model.minLength,\n minProperties: model.minProperties,\n minimum: model.minimum,\n multipleOf: model.multipleOf,\n pattern: getPattern(model.pattern),\n properties: [...operationParameter.properties, ...model.properties],\n template: model.template,\n type: model.type,\n uniqueItems: model.uniqueItems,\n };\n if (\n (operationParameter.enum.length || operationParameter.enums.length) &&\n !operationParameter.meta\n ) {\n operationParameter.meta = enumMeta(operationParameter);\n }\n operationParameter.default = model.default;\n return operationParameter;\n }\n\n return operationParameter;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameters } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport { getOperationParameter } from './getOperationParameter';\n\nconst allowedIn = ['cookie', 'formData', 'header', 'path', 'query'] as const;\n\nexport const getOperationParameters = ({\n openApi,\n parameters,\n types,\n}: {\n openApi: OpenApi;\n parameters: OpenApiParameter[];\n types: Client['types'];\n}): OperationParameters => {\n const config = getParserConfig();\n\n const operationParameters: OperationParameters = {\n $refs: [],\n imports: [],\n parameters: [],\n parametersBody: null,\n parametersCookie: [],\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [], // not used in v3 -> @see requestBody\n };\n\n parameters.forEach((parameterOrReference) => {\n const parameterDef = getRef<OpenApiParameter>(\n openApi,\n parameterOrReference,\n );\n const parameter = getOperationParameter({\n openApi,\n parameter: parameterDef,\n types,\n });\n\n const skip = !config.filterFn.operationParameter(parameter);\n if (!allowedIn.includes(parameterDef.in) || skip) {\n return;\n }\n\n switch (parameterDef.in) {\n case 'cookie':\n operationParameters.parametersCookie = [\n ...operationParameters.parametersCookie,\n parameter,\n ];\n break;\n case 'formData':\n operationParameters.parametersForm = [\n ...operationParameters.parametersForm,\n parameter,\n ];\n break;\n case 'header':\n operationParameters.parametersHeader = [\n ...operationParameters.parametersHeader,\n parameter,\n ];\n break;\n case 'path':\n operationParameters.parametersPath = [\n ...operationParameters.parametersPath,\n parameter,\n ];\n break;\n case 'query':\n operationParameters.parametersQuery = [\n ...operationParameters.parametersQuery,\n parameter,\n ];\n break;\n }\n\n operationParameters.$refs = [\n ...operationParameters.$refs,\n ...parameter.$refs,\n ];\n operationParameters.imports = [\n ...operationParameters.imports,\n ...parameter.imports,\n ];\n operationParameters.parameters = [\n ...operationParameters.parameters,\n parameter,\n ];\n });\n\n return operationParameters;\n};\n","import type { Dictionary } from '../../common/interfaces/Dictionary';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiMediaType } from '../interfaces/OpenApiMediaType';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport interface Content {\n mediaType: string;\n schema: OpenApiSchema;\n}\n\nconst BASIC_MEDIA_TYPES = [\n 'application/json-patch+json',\n 'application/json',\n 'application/ld+json',\n 'application/x-www-form-urlencoded',\n 'multipart/batch',\n 'multipart/form-data',\n 'multipart/mixed',\n 'multipart/related',\n 'text/json',\n 'text/plain',\n];\n\nexport const getContent = (\n openApi: OpenApi,\n content: Dictionary<OpenApiMediaType>,\n): Content | undefined => {\n const basicMediaTypeWithSchema = Object.keys(content)\n .filter((mediaType) => {\n const cleanMediaType = mediaType.split(';')[0].trim();\n return BASIC_MEDIA_TYPES.includes(cleanMediaType);\n })\n .find((mediaType) => Boolean(content[mediaType]?.schema));\n\n if (basicMediaTypeWithSchema) {\n return {\n mediaType: basicMediaTypeWithSchema,\n schema: content[basicMediaTypeWithSchema].schema as OpenApiSchema,\n };\n }\n\n const firstMediaTypeWithSchema = Object.keys(content).find((mediaType) =>\n Boolean(content[mediaType]?.schema),\n );\n\n if (firstMediaTypeWithSchema) {\n return {\n mediaType: firstMediaTypeWithSchema,\n schema: content[firstMediaTypeWithSchema].schema as OpenApiSchema,\n };\n }\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';\nimport { getContent } from './getContent';\nimport { getModel } from './getModel';\n\nexport const getOperationRequestBody = ({\n body,\n debug,\n openApi,\n types,\n}: {\n body: OpenApiRequestBody;\n debug?: boolean;\n openApi: OpenApi;\n types: Client['types'];\n}): OperationParameter => {\n const name = body['x-body-name'] ?? 'requestBody';\n\n const requestBody: OperationParameter = {\n $refs: [],\n base: 'unknown',\n default: undefined,\n description: body.description || null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: 'body',\n isDefinition: false,\n isNullable: body.nullable === true,\n isReadOnly: false,\n isRequired: body.required === true,\n link: null,\n mediaType: null,\n name,\n prop: name,\n properties: [],\n template: null,\n type: 'unknown',\n };\n\n if (!body.content) {\n return requestBody;\n }\n\n const content = getContent(openApi, body.content);\n if (!content) {\n return requestBody;\n }\n\n requestBody.mediaType = content.mediaType;\n\n switch (requestBody.mediaType) {\n case 'application/x-www-form-urlencoded':\n case 'multipart/form-data':\n requestBody.in = 'formData';\n requestBody.name = 'formData';\n requestBody.prop = 'formData';\n break;\n }\n\n if (content.schema.$ref) {\n const model = getType({ type: content.schema.$ref });\n requestBody.export = 'reference';\n requestBody.type = model.type;\n requestBody.base = model.base;\n requestBody.template = model.template;\n requestBody.$refs = [...requestBody.$refs, ...model.$refs];\n requestBody.imports = [...requestBody.imports, ...model.imports];\n return requestBody;\n }\n\n const model = getModel({\n debug,\n definition: content.schema,\n openApi,\n types,\n });\n requestBody.$refs = [...requestBody.$refs, ...model.$refs];\n requestBody.base = model.base;\n requestBody.enum = [...requestBody.enum, ...model.enum];\n requestBody.enums = [...requestBody.enums, ...model.enums];\n requestBody.exclusiveMaximum = model.exclusiveMaximum;\n requestBody.exclusiveMinimum = model.exclusiveMinimum;\n requestBody.export = model.export;\n requestBody.format = model.format;\n requestBody.imports = [...requestBody.imports, ...model.imports];\n requestBody.isNullable = requestBody.isNullable || model.isNullable;\n requestBody.isReadOnly = model.isReadOnly;\n requestBody.isRequired = requestBody.isRequired || model.isRequired;\n requestBody.link = model.link;\n requestBody.maximum = model.maximum;\n requestBody.maxItems = model.maxItems;\n requestBody.maxLength = model.maxLength;\n requestBody.maxProperties = model.maxProperties;\n requestBody.minimum = model.minimum;\n requestBody.minItems = model.minItems;\n requestBody.minLength = model.minLength;\n requestBody.minProperties = model.minProperties;\n requestBody.multipleOf = model.multipleOf;\n requestBody.pattern = getPattern(model.pattern);\n requestBody.properties = [...requestBody.properties, ...model.properties];\n requestBody.template = model.template;\n requestBody.type = model.type;\n requestBody.uniqueItems = model.uniqueItems;\n return requestBody;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getContent } from './getContent';\nimport { getModel } from './getModel';\n\nexport const getOperationResponse = ({\n code,\n openApi,\n response,\n types,\n}: {\n code: OperationResponse['code'];\n openApi: OpenApi;\n response: OpenApiResponse;\n types: Client['types'];\n}): OperationResponse => {\n const operationResponse: OperationResponse = {\n $refs: [],\n base: code !== 204 ? 'unknown' : 'void',\n code,\n description: response.description || null,\n enum: [],\n enums: [],\n export: 'generic',\n imports: [],\n in: 'response',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n responseTypes: [],\n template: null,\n type: code !== 204 ? 'unknown' : 'void',\n };\n\n if (response.content) {\n const content = getContent(openApi, response.content);\n if (content) {\n if (content.schema.$ref?.startsWith('#/components/responses/')) {\n content.schema = getRef<OpenApiSchema>(openApi, content.schema);\n }\n\n if (content.schema.$ref) {\n const model = getType({ type: content.schema.$ref });\n operationResponse.base = model.base;\n operationResponse.export = 'reference';\n operationResponse.$refs = [...operationResponse.$refs, ...model.$refs];\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.template = model.template;\n operationResponse.type = model.type;\n return operationResponse;\n }\n\n const model = getModel({ definition: content.schema, openApi, types });\n operationResponse.export = model.export;\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.link = model.link;\n operationResponse.isReadOnly = model.isReadOnly;\n operationResponse.isRequired = model.isRequired;\n operationResponse.isNullable = model.isNullable;\n operationResponse.format = model.format;\n operationResponse.maximum = model.maximum;\n operationResponse.exclusiveMaximum = model.exclusiveMaximum;\n operationResponse.minimum = model.minimum;\n operationResponse.exclusiveMinimum = model.exclusiveMinimum;\n operationResponse.multipleOf = model.multipleOf;\n operationResponse.maxLength = model.maxLength;\n operationResponse.minLength = model.minLength;\n operationResponse.maxItems = model.maxItems;\n operationResponse.minItems = model.minItems;\n operationResponse.uniqueItems = model.uniqueItems;\n operationResponse.maxProperties = model.maxProperties;\n operationResponse.minProperties = model.minProperties;\n operationResponse.pattern = getPattern(model.pattern);\n operationResponse.$refs = [...operationResponse.$refs, ...model.$refs];\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.enum = [...operationResponse.enum, ...model.enum];\n operationResponse.enums = [...operationResponse.enums, ...model.enums];\n operationResponse.properties = [\n ...operationResponse.properties,\n ...model.properties,\n ];\n return operationResponse;\n }\n }\n\n // We support basic properties from response headers, since both\n // fetch and XHR client just support string types.\n if (response.headers) {\n for (const name in response.headers) {\n operationResponse.in = 'header';\n operationResponse.name = name;\n operationResponse.type = 'string';\n operationResponse.base = 'string';\n return operationResponse;\n }\n }\n\n return operationResponse;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n parseResponseStatusCode,\n sorterByResponseStatusCode,\n tagResponseTypes,\n} from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiResponses } from '../interfaces/OpenApiResponses';\nimport { getOperationResponse } from './getOperationResponse';\n\nexport const getOperationResponses = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n debug,\n openApi,\n responses,\n types,\n}: {\n debug?: boolean;\n openApi: OpenApi;\n responses: OpenApiResponses;\n types: Client['types'];\n}): OperationResponse[] => {\n let operationResponses: OperationResponse[] = [];\n\n Object.entries(responses).forEach(([responseCode, responseOrReference]) => {\n const code = parseResponseStatusCode(responseCode);\n if (!code) {\n return;\n }\n\n const response = getRef<OpenApiResponse>(openApi, responseOrReference);\n const operationResponse = getOperationResponse({\n code,\n openApi,\n response,\n types,\n });\n operationResponses = [...operationResponses, operationResponse];\n });\n\n operationResponses = tagResponseTypes(operationResponses);\n\n return operationResponses.sort(sorterByResponseStatusCode);\n};\n","import type { Client } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport type {\n Operation,\n OperationParameter,\n OperationParameters,\n} from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getOperationResponseHeader } from '../../common/parser/operation';\nimport { toSortedByRequired } from '../../common/parser/sort';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiOperation } from '../interfaces/OpenApiOperation';\nimport type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperationRequestBody } from './getOperationRequestBody';\nimport { getOperationResponses } from './getOperationResponses';\n\n// add global path parameters, skip duplicate names\nconst mergeParameters = (\n opParams: OperationParameter[],\n globalParams: OperationParameter[],\n): OperationParameter[] => {\n let mergedParameters = [...opParams];\n let pendingParameters = [...globalParams];\n while (pendingParameters.length > 0) {\n const pendingParam = pendingParameters[0];\n pendingParameters = pendingParameters.slice(1);\n const canMerge = mergedParameters.every(\n (param) =>\n param.in !== pendingParam.in || param.name !== pendingParam.name,\n );\n if (canMerge) {\n mergedParameters = [...mergedParameters, pendingParam];\n }\n }\n return mergedParameters;\n};\n\nexport const getOperation = ({\n debug,\n method,\n op,\n openApi,\n pathParams,\n types,\n url,\n}: {\n debug?: boolean;\n method: Lowercase<Operation['method']>;\n op: OpenApiOperation;\n openApi: OpenApi;\n pathParams: OperationParameters;\n types: Client['types'];\n url: string;\n}): Operation => {\n const config = getParserConfig();\n\n const operationWithoutName: Omit<Operation, 'name'> = {\n $refs: [],\n deprecated: Boolean(op.deprecated),\n description: op.description || null,\n id: op.operationId || null,\n imports: [],\n method: method.toUpperCase() as Operation['method'],\n parameters: [],\n parametersBody: pathParams.parametersBody,\n parametersCookie: [],\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [],\n path: url,\n responseHeader: null,\n responses: [],\n summary: op.summary || null,\n tags: op.tags || null,\n };\n const operation = {\n ...operationWithoutName,\n name: config.nameFn.operation({\n config: getConfig(),\n method: operationWithoutName.method,\n operationId: op.operationId,\n path: operationWithoutName.path,\n }),\n };\n\n if (op.parameters) {\n const parameters = getOperationParameters({\n openApi,\n parameters: op.parameters,\n types,\n });\n operation.$refs = [...operation.$refs, ...parameters.$refs];\n operation.imports = [...operation.imports, ...parameters.imports];\n operation.parameters = [...operation.parameters, ...parameters.parameters];\n operation.parametersBody = parameters.parametersBody;\n operation.parametersCookie = [\n ...operation.parametersCookie,\n ...parameters.parametersCookie,\n ];\n operation.parametersForm = [\n ...operation.parametersForm,\n ...parameters.parametersForm,\n ];\n operation.parametersHeader = [\n ...operation.parametersHeader,\n ...parameters.parametersHeader,\n ];\n operation.parametersPath = [\n ...operation.parametersPath,\n ...parameters.parametersPath,\n ];\n operation.parametersQuery = [\n ...operation.parametersQuery,\n ...parameters.parametersQuery,\n ];\n }\n\n if (op.requestBody) {\n const requestBodyDef = getRef<OpenApiRequestBody>(openApi, op.requestBody);\n const requestBody = getOperationRequestBody({\n body: requestBodyDef,\n debug,\n openApi,\n types,\n });\n operation.$refs = [...operation.$refs, ...requestBody.$refs];\n operation.imports = [...operation.imports, ...requestBody.imports];\n operation.parameters = [...operation.parameters, requestBody];\n operation.parametersBody = requestBody;\n }\n\n if (op.responses) {\n operation.responses = getOperationResponses({\n openApi,\n responses: op.responses,\n types,\n });\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n operation.responseHeader = getOperationResponseHeader(successResponses);\n\n successResponses.forEach((response) => {\n operation.$refs = [...operation.$refs, ...response.$refs];\n operation.imports = [...operation.imports, ...response.imports];\n });\n }\n\n operation.parameters = mergeParameters(\n operation.parameters,\n pathParams.parameters,\n );\n operation.parametersCookie = mergeParameters(\n operation.parametersCookie,\n pathParams.parametersCookie,\n );\n operation.parametersForm = mergeParameters(\n operation.parametersForm,\n pathParams.parametersForm,\n );\n operation.parametersHeader = mergeParameters(\n operation.parametersHeader,\n pathParams.parametersHeader,\n );\n operation.parametersPath = mergeParameters(\n operation.parametersPath,\n pathParams.parametersPath,\n );\n operation.parametersQuery = mergeParameters(\n operation.parametersQuery,\n pathParams.parametersQuery,\n );\n\n operation.parameters = toSortedByRequired(operation.parameters);\n\n return operation;\n};\n","import { getConfig } from '../../../utils/config';\nimport type { Client, Operation } from '../../common/interfaces/client';\nimport { getOperationKey } from '../../common/parser/operation';\nimport { allowedServiceMethods } from '../../common/parser/service';\nimport { getParserConfig } from '../../config';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperation } from './operation';\n\nexport const getOperations = ({\n openApi,\n types,\n}: {\n openApi: OpenApi;\n types: Client['types'];\n}): Operation[] => {\n const config = getParserConfig();\n\n const operationIds = new Map<string, string>();\n const operations: Operation[] = [];\n\n for (const path in openApi.paths) {\n const pathItem = openApi.paths[path];\n const pathParameters = getOperationParameters({\n openApi,\n parameters: pathItem.parameters ?? [],\n types,\n });\n\n for (const name in pathItem) {\n const method = name as Lowercase<Operation['method']>;\n\n const operationKey = getOperationKey({\n method,\n path,\n });\n\n if (allowedServiceMethods.includes(method)) {\n const op = pathItem[method]!;\n\n if (op.operationId) {\n if (operationIds.has(op.operationId)) {\n console.warn(\n `❗️ Duplicate operationId: ${op.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n } else {\n operationIds.set(op.operationId, operationKey);\n }\n }\n\n if (\n config.filterFn.operation({\n config: getConfig(),\n operationKey,\n })\n ) {\n const operation = getOperation({\n method,\n op,\n openApi,\n pathParams: pathParameters,\n types,\n url: path,\n });\n operations.push(operation);\n }\n }\n }\n }\n\n return operations;\n};\n","import type { OpenApi } from '../interfaces/OpenApi';\n\nexport const getServer = (openApi: OpenApi): string => {\n const server = openApi.servers?.[0];\n const variables = server?.variables || {};\n let url = server?.url || '';\n Object.entries(variables).forEach(([name, variable]) => {\n url = url.replace(`{${name}}`, variable.default);\n });\n return url.replace(/\\/$/g, '');\n};\n","import type { Client } from '../common/interfaces/client';\nimport { getServiceVersion } from '../common/parser/service';\nimport type { OpenApi } from './interfaces/OpenApi';\nimport { getModels } from './parser/getModels';\nimport { getOperations } from './parser/getOperations';\nimport { getServer } from './parser/getServer';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, operations and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport const parse = (openApi: OpenApi): Client => {\n const version = getServiceVersion(openApi.info.version);\n const server = getServer(openApi);\n const { models, types } = getModels(openApi);\n const operations = getOperations({ openApi, types });\n\n return {\n models,\n operations,\n server,\n types,\n version,\n };\n};\n","import { IRContext } from '../ir/context';\nimport type { Config } from '../types/config';\nimport { type OpenApiV3_0_3, parseV3_0_3 } from './3.0.3';\nimport { type OpenApiV3_1_0, parseV3_1_0 } from './3.1.0';\nimport type { Client } from './common/interfaces/client';\nimport type { OpenApi } from './common/interfaces/OpenApi';\nimport type { ParserConfig } from './config';\nimport { setParserConfig } from './config';\nimport { parse as parseV2 } from './v2';\nimport { parse as parseV3 } from './v3';\n\nexport type {\n Client,\n Enum,\n Method,\n Model,\n ModelMeta,\n Operation,\n OperationParameter,\n OperationResponse,\n} from './common/interfaces/client';\nexport type { OpenApi } from './common/interfaces/OpenApi';\nexport { isOperationParameterRequired } from './common/parser/operation';\nexport {\n ensureValidTypeScriptJavaScriptIdentifier,\n sanitizeNamespaceIdentifier,\n sanitizeOperationParameterName,\n} from './common/parser/sanitize';\nexport { getType } from './common/parser/type';\nexport type { OpenApiSchema as OpenApiV2Schema } from './v2/interfaces/OpenApiSchema';\nexport type { OpenApiSchema as OpenApiV3Schema } from './v3/interfaces/OpenApiSchema';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, services and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport function parseLegacy({\n openApi,\n parserConfig,\n}: {\n openApi: OpenApi;\n parserConfig: ParserConfig;\n}): Client {\n setParserConfig(parserConfig);\n\n if ('openapi' in openApi) {\n return parseV3(openApi);\n }\n\n if ('swagger' in openApi) {\n return parseV2(openApi);\n }\n\n throw new Error(\n `Unsupported OpenAPI specification: ${JSON.stringify(openApi, null, 2)}`,\n );\n}\n\nexport type ParserOpenApiSpec = OpenApiV3_0_3 | OpenApiV3_1_0;\n\n// TODO: parser - add JSDoc comment\nexport const parseExperimental = ({\n config,\n parserConfig,\n spec,\n}: {\n config: Config;\n parserConfig: ParserConfig;\n spec: unknown;\n}): IRContext | undefined => {\n const context = new IRContext({\n config,\n parserConfig,\n spec: spec as ParserOpenApiSpec,\n });\n\n switch (context.spec.openapi) {\n case '3.0.3':\n parseV3_0_3(context as IRContext<OpenApiV3_0_3>);\n break;\n case '3.1.0':\n parseV3_1_0(context as IRContext<OpenApiV3_1_0>);\n break;\n default:\n // TODO: parser - uncomment after removing legacy parser.\n // For now, we fall back to legacy parser if spec version\n // is not supported\n // throw new Error('Unsupported OpenAPI specification');\n break;\n }\n\n if (!Object.keys(context.ir).length) {\n return;\n }\n\n return context;\n};\n","import { compiler } from '../../../compiler';\nimport type { IRContext } from '../../../ir/context';\nimport {\n ensureValidTypeScriptJavaScriptIdentifier,\n type ParserOpenApiSpec,\n} from '../../../openApi';\nimport type { OpenApiV3_1_0 } from '../../../openApi/3.1.0';\nimport type { SchemaObject as OpenApiV3_1_0SchemaObject } from '../../../openApi/3.1.0/types/spec';\n\nconst schemasId = 'schemas';\n\nconst stripSchema = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: OpenApiV3_1_0SchemaObject;\n}) => {\n if (context.config.schemas.type === 'form') {\n if (schema.description) {\n delete schema.description;\n }\n\n if (schema['x-enum-descriptions']) {\n delete schema['x-enum-descriptions'];\n }\n\n if (schema['x-enum-varnames']) {\n delete schema['x-enum-varnames'];\n }\n\n if (schema['x-enumNames']) {\n delete schema['x-enumNames'];\n }\n\n if (schema.title) {\n delete schema.title;\n }\n }\n};\n\nconst schemaToJsonSchema2020_12 = ({\n context,\n schema: _schema,\n}: {\n context: IRContext;\n schema: OpenApiV3_1_0SchemaObject;\n}): object => {\n if (Array.isArray(_schema)) {\n return _schema.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n schema: item,\n }),\n );\n }\n\n const schema = structuredClone(_schema);\n\n stripSchema({ context, schema });\n\n if (schema.$ref) {\n // refs are encoded probably by json-schema-ref-parser, didn't investigate\n // further\n schema.$ref = decodeURIComponent(schema.$ref);\n }\n\n if (schema.additionalProperties) {\n schema.additionalProperties = schemaToJsonSchema2020_12({\n context,\n schema: schema.additionalProperties,\n });\n }\n\n if (schema.allOf) {\n schema.allOf = schema.allOf.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n schema: item,\n }),\n );\n }\n\n if (schema.anyOf) {\n schema.anyOf = schema.anyOf.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n schema: item,\n }),\n );\n }\n\n if (schema.items) {\n schema.items = schemaToJsonSchema2020_12({\n context,\n schema: schema.items,\n });\n }\n\n if (schema.oneOf) {\n schema.oneOf = schema.oneOf.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n schema: item,\n }),\n );\n }\n\n if (schema.prefixItems) {\n schema.prefixItems = schema.prefixItems.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n schema: item,\n }),\n );\n }\n\n if (schema.properties) {\n for (const name in schema.properties) {\n const property = schema.properties[name];\n\n if (typeof property !== 'boolean') {\n schema.properties[name] = schemaToJsonSchema2020_12({\n context,\n schema: property,\n });\n }\n }\n }\n\n return schema;\n};\n\nconst schemaName = ({\n context,\n name,\n schema,\n}: {\n context: IRContext;\n name: string;\n schema: OpenApiV3_1_0SchemaObject;\n}): string => {\n const validName = ensureValidTypeScriptJavaScriptIdentifier(name);\n\n if (context.config.schemas.name) {\n return context.config.schemas.name(validName, schema);\n }\n\n return `${validName}Schema`;\n};\n\nconst schemasV3_1_0 = (context: IRContext<OpenApiV3_1_0>) => {\n if (!context.spec.components) {\n return;\n }\n\n for (const name in context.spec.components.schemas) {\n const schema = context.spec.components.schemas[name];\n const obj = schemaToJsonSchema2020_12({\n context,\n schema,\n });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ context, name, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nexport const generateSchemas = ({\n context,\n}: {\n context: IRContext<ParserOpenApiSpec>;\n}): void => {\n // TODO: parser - once schemas are a plugin, this logic can be simplified\n if (!context.config.schemas.export) {\n return;\n }\n\n context.createFile({\n id: schemasId,\n path: 'schemas',\n });\n\n // TODO: parser - copy-pasted from experimental parser for now\n switch (context.spec.openapi) {\n case '3.0.3':\n // ...\n break;\n case '3.1.0':\n schemasV3_1_0(context as IRContext<OpenApiV3_1_0>);\n break;\n default:\n break;\n }\n\n // OpenAPI 2.0\n // if ('swagger' in openApi) {\n // Object.entries(openApi.definitions ?? {}).forEach(([name, definition]) => {\n // addSchema(name, definition);\n // });\n // }\n};\n","import { copyFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport type { Config } from '../types/config';\nimport { ensureDirSync, relativeModulePath } from './utils';\n\n/**\n * Returns path to the client module. When using client packages, this will be\n * simply the name of the package. When bundling a client, this will be a\n * relative path to the bundled client folder.\n */\nexport const clientModulePath = ({\n config,\n sourceOutput,\n}: {\n config: Config;\n sourceOutput: string;\n}): string => {\n if (config.client.bundle) {\n return relativeModulePath({\n moduleOutput: 'client',\n sourceOutput,\n });\n }\n\n return config.client.name;\n};\n\nexport const clientOptionsTypeName = () => 'Options';\n\n/**\n * Creates a `client` directory containing the same modules as the client package.\n */\nexport const generateClientBundle = ({\n name,\n outputPath,\n}: {\n name: string;\n outputPath: string;\n}): void => {\n // create directory for client modules\n const dirPath = path.resolve(outputPath, 'client');\n ensureDirSync(dirPath);\n\n const clientModulePath = path.normalize(require.resolve(name));\n const clientModulePathComponents = clientModulePath.split(path.sep);\n const clientSrcPath = [\n ...clientModulePathComponents.slice(\n 0,\n clientModulePathComponents.indexOf('dist'),\n ),\n 'src',\n ].join(path.sep);\n\n // copy client modules\n const files = ['index.ts', 'types.ts', 'utils.ts'];\n files.forEach((file) => {\n copyFileSync(\n path.resolve(clientSrcPath, file),\n path.resolve(dirPath, file),\n );\n });\n};\n","import type {\n ClassElement,\n Comments,\n FunctionParameter,\n Node,\n} from '../compiler';\nimport { compiler } from '../compiler';\nimport type { FunctionTypeParameter, ObjectValue } from '../compiler/types';\nimport type { IROperationObject } from '../ir/ir';\nimport { isOperationParameterRequired } from '../openApi';\nimport type {\n Client,\n Model,\n Operation,\n OperationParameter,\n Service,\n} from '../types/client';\nimport type { Config } from '../types/config';\nimport type { Files } from '../types/utils';\nimport { camelCase } from '../utils/camelCase';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { escapeComment, escapeName } from '../utils/escape';\nimport { reservedWordsRegExp } from '../utils/regexp';\nimport { transformServiceName } from '../utils/transform';\nimport { setUniqueTypeName } from '../utils/type';\nimport { unique } from '../utils/unique';\nimport { clientModulePath, clientOptionsTypeName } from './client';\nimport { TypeScriptFile } from './files';\n\ntype OnNode = (node: Node) => void;\ntype OnImport = (name: string) => void;\n\nexport const generateImport = ({\n meta,\n onImport,\n ...setUniqueTypeNameArgs\n}: Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> & {\n onImport: OnImport;\n }) => {\n // generate imports only for top-level models\n if (!meta) {\n // TODO: this used to return undefined. We could refactor this function to\n // return undefined again, but we will need to improve types so we can safely\n // do `const { name } = generateImport({ meta: ... })` (note when meta is defined\n // we guarantee the response to be an object). For now, nothing relies on this\n // response shape except for plugins, so it was acceptable to patch it that way\n return { created: false, name: '' };\n }\n\n const { created, name } = setUniqueTypeName({\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (name) {\n onImport(name);\n }\n return { created, name };\n};\n\nexport const modelResponseTransformerTypeName = (name: string) =>\n `${name}ModelResponseTransformer`;\n\nexport const operationDataTypeName = (name: string) =>\n `${camelCase({\n input: name,\n pascalCase: true,\n })}Data`;\n\nexport const operationErrorTypeName = (name: string) =>\n `${camelCase({\n input: name,\n pascalCase: true,\n })}Error`;\n\n// operation response type ends with \"Response\", it's enough to append \"Transformer\"\nexport const operationResponseTransformerTypeName = (name: string) =>\n `${name}Transformer`;\n\nexport const operationResponseTypeName = (name: string) =>\n `${camelCase({\n input: name,\n pascalCase: true,\n })}Response`;\n\n/**\n * @param importedType unique type name returned from `setUniqueTypeName()`\n * @returns options type\n */\nexport const operationOptionsType = ({\n importedType,\n throwOnError,\n}: {\n importedType?: string | false;\n throwOnError?: string;\n}) => {\n const optionsName = clientOptionsTypeName();\n // TODO: refactor this to be more generic, works for now\n if (throwOnError) {\n return `${optionsName}<${importedType || 'unknown'}, ${throwOnError}>`;\n }\n return importedType ? `${optionsName}<${importedType}>` : optionsName;\n};\n\nconst toOperationParamType = (\n client: Client,\n operation: Operation,\n): FunctionParameter[] => {\n const config = getConfig();\n\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n if (!isLegacyClient(config)) {\n return [\n {\n isRequired,\n name: 'options',\n type: operationOptionsType({\n importedType,\n throwOnError: 'ThrowOnError',\n }),\n },\n ];\n }\n\n if (!operation.parameters.length) {\n return [];\n }\n\n const getDefaultPrintable = (\n p: OperationParameter | Model,\n ): string | undefined => {\n if (p.default === undefined) {\n return undefined;\n }\n return JSON.stringify(p.default, null, 4);\n };\n\n // legacy configuration\n if (!config.useOptions) {\n return operation.parameters.map((p) => {\n const typePath = `${importedType}['${p.name}']`;\n return {\n default: p?.default,\n isRequired:\n (!p.isRequired && !getDefaultPrintable(p) ? '?' : '') === '',\n name: p.name,\n type: typePath,\n };\n });\n }\n\n return [\n {\n default: isRequired ? undefined : {},\n name: 'data',\n type: importedType,\n },\n ];\n};\n\nconst toOperationReturnType = (client: Client, operation: Operation) => {\n const config = getConfig();\n\n let returnType = compiler.typeNode('void');\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n // TODO: we should return nothing when successes don't exist\n // can't remove this logic without removing request/name config\n // as it complicates things\n if (successResponses.length) {\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n });\n returnType = compiler.typeUnionNode({\n types: [importedType],\n });\n }\n\n if (config.useOptions && config.services.response === 'response') {\n returnType = compiler.typeNode('ApiResult', [returnType]);\n }\n\n if (config.client.name === 'legacy/angular') {\n returnType = compiler.typeNode('Observable', [returnType]);\n } else {\n returnType = compiler.typeNode('CancelablePromise', [returnType]);\n }\n\n return returnType;\n};\n\nconst toOperationComment = (operation: Operation): Comments => {\n const config = getConfig();\n\n if (!isLegacyClient(config)) {\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ];\n return comment;\n }\n\n let params: string[] = [];\n\n if (operation.parameters.length) {\n if (config.useOptions) {\n params = [\n '@param data The data for the request.',\n ...operation.parameters.map(\n (parameter) =>\n `@param data.${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n ),\n ];\n } else {\n params = operation.parameters.map(\n (parameter) =>\n `@param ${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n );\n }\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ...params,\n ...successResponses.map(\n (response) =>\n `@returns ${response.type} ${response.description ? escapeComment(response.description) : ''}`,\n ),\n '@throws ApiError',\n ];\n return comment;\n};\n\nconst toRequestOptions = (\n client: Client,\n operation: Operation,\n onImport: OnImport,\n onClientImport: OnImport | undefined,\n) => {\n const config = getConfig();\n\n const operationName = operationResponseTypeName(operation.name);\n const { name: responseTransformerName } = setUniqueTypeName({\n client,\n meta: {\n $ref: `transformers/${operationName}`,\n name: operationName,\n },\n nameTransformer: operationResponseTransformerTypeName,\n });\n\n if (responseTransformerName) {\n onImport(responseTransformerName);\n }\n\n if (!isLegacyClient(config)) {\n let obj: ObjectValue[] = [\n {\n spread: 'options',\n },\n ];\n\n const bodyParameters = operation.parameters.filter(\n (parameter) => parameter.in === 'body' || parameter.in === 'formData',\n );\n const contents = bodyParameters\n .map(\n (parameter) =>\n parameter.mediaType ||\n (parameter.in === 'formData' ? 'multipart/form-data' : undefined),\n )\n .filter(Boolean)\n .filter(unique);\n if (contents.length === 1) {\n if (contents[0] === 'multipart/form-data') {\n obj = [\n ...obj,\n {\n spread: 'formDataBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n // no need for Content-Type header, browser will set it automatically\n key: 'Content-Type',\n value: null,\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('formDataBodySerializer');\n }\n\n if (contents[0] === 'application/x-www-form-urlencoded') {\n obj = [\n ...obj,\n {\n spread: 'urlSearchParamsBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n key: 'Content-Type',\n value: contents[0],\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('urlSearchParamsBodySerializer');\n }\n }\n\n // TODO: set parseAs to skip inference if every result has the same\n // content type. currently impossible because successes do not contain\n // header information\n\n obj = [\n ...obj,\n {\n key: 'url',\n value: operation.path,\n },\n ];\n\n if (responseTransformerName) {\n obj = [\n ...obj,\n {\n key: 'responseTransformer',\n value: responseTransformerName,\n },\n ];\n }\n\n return compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj,\n });\n }\n\n const toObj = (parameters: OperationParameter[]) =>\n parameters.reduce(\n (prev, curr) => {\n const key = curr.prop;\n const value = config.useOptions ? `data.${curr.name}` : curr.name;\n if (key === value) {\n prev[key] = key;\n } else if (escapeName(key) === key) {\n prev[key] = value;\n } else {\n prev[`'${key}'`] = value;\n }\n return prev;\n },\n {} as Record<string, unknown>,\n );\n\n const obj: Record<string, any> = {\n method: operation.method,\n url: operation.path,\n };\n\n if (operation.parametersPath.length) {\n obj.path = toObj(operation.parametersPath);\n }\n\n if (operation.parametersCookie.length) {\n obj.cookies = toObj(operation.parametersCookie);\n }\n\n if (operation.parametersHeader.length) {\n obj.headers = toObj(operation.parametersHeader);\n }\n\n if (operation.parametersQuery.length) {\n obj.query = toObj(operation.parametersQuery);\n }\n\n if (operation.parametersForm.length) {\n obj.formData = toObj(operation.parametersForm);\n }\n\n if (operation.parametersBody) {\n if (operation.parametersBody.in === 'formData') {\n if (config.useOptions) {\n obj.formData = `data.${operation.parametersBody.name}`;\n } else {\n obj.formData = operation.parametersBody.name;\n }\n }\n if (operation.parametersBody.in === 'body') {\n if (config.useOptions) {\n obj.body = `data.${operation.parametersBody.name}`;\n } else {\n obj.body = operation.parametersBody.name;\n }\n }\n }\n\n if (operation.parametersBody?.mediaType) {\n obj.mediaType = operation.parametersBody?.mediaType;\n }\n\n if (operation.responseHeader) {\n obj.responseHeader = operation.responseHeader;\n }\n\n if (responseTransformerName) {\n obj.responseTransformer = responseTransformerName;\n }\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n if (errorResponses.length > 0) {\n const errors: Record<number | string, string> = {};\n errorResponses.forEach((response) => {\n errors[response.code] = response.description ?? '';\n });\n obj.errors = errors;\n }\n\n return compiler.objectExpression({\n identifiers: [\n 'body',\n 'cookies',\n 'formData',\n 'headers',\n 'path',\n 'query',\n 'responseTransformer',\n ],\n obj,\n shorthand: true,\n });\n};\n\nexport const serviceFunctionIdentifier = ({\n config,\n id,\n operation,\n handleIllegal,\n}: {\n config: Config;\n handleIllegal?: boolean;\n id: string;\n operation: IROperationObject | Operation;\n}) => {\n if (config.services.methodNameBuilder) {\n return config.services.methodNameBuilder(operation);\n }\n\n if (handleIllegal && id.match(reservedWordsRegExp)) {\n return `${id}_`;\n }\n\n return id;\n};\n\nconst toOperationStatements = (\n client: Client,\n operation: Operation,\n onImport: OnImport,\n onClientImport?: OnImport,\n) => {\n const config = getConfig();\n\n const options = toRequestOptions(client, operation, onImport, onClientImport);\n\n if (!isLegacyClient(config)) {\n const errorType = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n }).name;\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n const responseType = successResponses.length\n ? setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n }).name\n : 'void';\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: `(options?.client ?? client).${operation.method.toLocaleLowerCase()}`,\n types:\n errorType && responseType\n ? [responseType, errorType, 'ThrowOnError']\n : errorType\n ? ['unknown', errorType, 'ThrowOnError']\n : responseType\n ? [responseType, 'unknown', 'ThrowOnError']\n : [],\n }),\n ];\n }\n\n if (config.name) {\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: 'this.httpRequest.request',\n }),\n ];\n }\n\n if (config.client.name === 'legacy/angular') {\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', 'this.http', options],\n name: '__request',\n }),\n ];\n }\n\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', options],\n name: '__request',\n }),\n ];\n};\n\nconst processService = ({\n client,\n onClientImport,\n onImport,\n onNode,\n service,\n}: {\n client: Client;\n onClientImport: OnImport;\n onImport: OnImport;\n onNode: OnNode;\n service: Service;\n}) => {\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n for (const operation of service.operations) {\n if (operation.parameters.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onImport,\n });\n }\n\n if (!isLegacy) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport,\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n if (successResponses.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport,\n });\n }\n }\n\n const throwOnErrorTypeGeneric: FunctionTypeParameter = {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n };\n\n if (!config.services.asClass && !config.name) {\n for (const operation of service.operations) {\n const compileFunctionParams = {\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements(\n client,\n operation,\n onImport,\n onClientImport,\n ),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n };\n const expression =\n config.client.name === 'legacy/angular'\n ? compiler.anonymousFunction(compileFunctionParams)\n : compiler.arrowFunction(compileFunctionParams);\n const statement = compiler.constVariable({\n comment: toOperationComment(operation),\n exportConst: true,\n expression,\n name: serviceFunctionIdentifier({\n config,\n handleIllegal: true,\n id: operation.name,\n operation,\n }),\n });\n onNode(statement);\n }\n return;\n }\n\n let members: ClassElement[] = service.operations.map((operation) => {\n const node = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: toOperationComment(operation),\n isStatic:\n config.name === undefined && config.client.name !== 'legacy/angular',\n name: serviceFunctionIdentifier({\n config,\n id: operation.name,\n operation,\n }),\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements(\n client,\n operation,\n onImport,\n onClientImport,\n ),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n });\n return node;\n });\n\n if (!members.length) {\n return;\n }\n\n // Push constructor to front if needed\n if (config.name) {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'httpRequest',\n type: 'BaseHttpRequest',\n },\n ],\n }),\n ...members,\n ];\n } else if (config.client.name === 'legacy/angular') {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'http',\n type: 'HttpClient',\n },\n ],\n }),\n ...members,\n ];\n }\n\n const statement = compiler.classDeclaration({\n decorator:\n config.client.name === 'legacy/angular'\n ? { args: [{ providedIn: 'root' }], name: 'Injectable' }\n : undefined,\n members,\n name: transformServiceName({\n config,\n name: service.name,\n }),\n });\n onNode(statement);\n};\n\nconst checkLegacyPrerequisites = ({ files }: { files: Files }) => {\n const config = getConfig();\n\n if (!config.client.name) {\n throw new Error(\n '🚫 client needs to be set to generate services - which HTTP client do you want to use?',\n );\n }\n\n if (!files.types) {\n throw new Error(\n '🚫 types need to be exported to generate services - enable type generation',\n );\n }\n};\n\nexport const generateLegacyServices = async ({\n client,\n files,\n}: {\n client: Client;\n files: Files;\n}): Promise<void> => {\n const config = getConfig();\n\n if (!config.services.export) {\n return;\n }\n\n checkLegacyPrerequisites({ files });\n\n const isLegacy = isLegacyClient(config);\n\n const servicesOutput = 'services';\n\n files.services = new TypeScriptFile({\n dir: config.output.path,\n name: `${servicesOutput}.ts`,\n });\n\n // Import required packages and core files.\n if (!isLegacy) {\n files.services.import({\n module: clientModulePath({ config, sourceOutput: servicesOutput }),\n name: 'createClient',\n });\n files.services.import({\n module: clientModulePath({ config, sourceOutput: servicesOutput }),\n name: 'createConfig',\n });\n files.services.import({\n asType: true,\n module: clientModulePath({ config, sourceOutput: servicesOutput }),\n name: clientOptionsTypeName(),\n });\n } else {\n if (config.client.name === 'legacy/angular') {\n files.services.import({\n module: '@angular/core',\n name: 'Injectable',\n });\n\n if (!config.name) {\n files.services.import({\n module: '@angular/common/http',\n name: 'HttpClient',\n });\n }\n\n files.services.import({\n asType: true,\n module: 'rxjs',\n name: 'Observable',\n });\n } else {\n files.services.import({\n asType: true,\n module: './core/CancelablePromise',\n name: 'CancelablePromise',\n });\n }\n\n if (config.services.response === 'response') {\n files.services.import({\n asType: true,\n module: './core/ApiResult',\n name: 'ApiResult',\n });\n }\n\n if (config.name) {\n files.services.import({\n asType: config.client.name !== 'legacy/angular',\n module: './core/BaseHttpRequest',\n name: 'BaseHttpRequest',\n });\n } else {\n files.services.import({\n module: './core/OpenAPI',\n name: 'OpenAPI',\n });\n files.services.import({\n alias: '__request',\n module: './core/request',\n name: 'request',\n });\n }\n }\n\n // define client first\n if (!isLegacy) {\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: 'createClient',\n parameters: [\n compiler.callExpression({\n functionName: 'createConfig',\n }),\n ],\n }),\n name: 'client',\n });\n files.services.add(statement);\n }\n\n for (const service of client.services) {\n processService({\n client,\n onClientImport: (imported) => {\n files.services.import({\n module: clientModulePath({ config, sourceOutput: servicesOutput }),\n name: imported,\n });\n },\n onImport: (imported) => {\n files.services.import({\n // this detection could be done safer, but it shouldn't cause any issues\n asType: !imported.endsWith('Transformer'),\n module: `./${files.types.nameWithoutExtension()}`,\n name: imported,\n });\n },\n onNode: (node) => {\n files.services.add(node);\n },\n service,\n });\n }\n};\n","import type { IRParametersObject } from './ir';\nimport type { Pagination } from './pagination';\n\nexport const hasParametersObjectRequired = (\n parameters: IRParametersObject | undefined,\n): boolean => {\n if (!parameters) {\n return false;\n }\n\n for (const name in parameters.cookie) {\n if (parameters.cookie[name].required) {\n return true;\n }\n }\n\n for (const name in parameters.header) {\n if (parameters.header[name].required) {\n return true;\n }\n }\n\n for (const name in parameters.path) {\n if (parameters.path[name].required) {\n return true;\n }\n }\n\n for (const name in parameters.query) {\n if (parameters.query[name].required) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const parameterWithPagination = (\n parameters: IRParametersObject | undefined,\n): Pagination | undefined => {\n if (!parameters) {\n return;\n }\n\n for (const name in parameters.cookie) {\n const parameter = parameters.cookie[name];\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination],\n };\n }\n }\n\n for (const name in parameters.header) {\n const parameter = parameters.header[name];\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination],\n };\n }\n }\n\n for (const name in parameters.path) {\n const parameter = parameters.path[name];\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination],\n };\n }\n }\n\n for (const name in parameters.query) {\n const parameter = parameters.query[name];\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination],\n };\n }\n }\n};\n","import type { IRSchemaObject } from './ir';\n\n/**\n * Ensure we don't produce redundant types, e.g. string | string.\n */\nexport const deduplicateSchema = <T extends IRSchemaObject>({\n schema,\n}: {\n schema: T;\n}): T => {\n if (!schema.items) {\n return schema;\n }\n\n const uniqueItems: Array<IRSchemaObject> = [];\n const typeIds: Array<string> = [];\n\n for (const item of schema.items) {\n // skip nested schemas for now, handle if necessary\n if (\n !item.type ||\n item.type === 'boolean' ||\n item.type === 'null' ||\n item.type === 'number' ||\n item.type === 'string' ||\n item.type === 'unknown' ||\n item.type === 'void'\n ) {\n // const needs namespace to handle empty string values, otherwise\n // fallback would equal an actual value and we would skip an item\n const typeId = `${item.$ref ?? ''}${item.type ?? ''}${item.const !== undefined ? `const-${item.const}` : ''}`;\n if (!typeIds.includes(typeId)) {\n typeIds.push(typeId);\n uniqueItems.push(item);\n }\n continue;\n }\n\n uniqueItems.push(item);\n }\n\n schema.items = uniqueItems;\n\n if (\n schema.items.length <= 1 &&\n schema.type !== 'array' &&\n schema.type !== 'enum' &&\n schema.type !== 'tuple'\n ) {\n // bring the only item up to clean up the schema\n const liftedSchema = schema.items[0];\n delete schema.logicalOperator;\n delete schema.items;\n schema = {\n ...schema,\n ...liftedSchema,\n };\n }\n\n // exclude unknown if it's the only type left\n if (schema.type === 'unknown') {\n return {} as T;\n }\n\n return schema;\n};\n","import type { IROperationObject, IRResponseObject, IRSchemaObject } from './ir';\nimport type { Pagination } from './pagination';\nimport {\n hasParametersObjectRequired,\n parameterWithPagination,\n} from './parameter';\nimport { deduplicateSchema } from './schema';\nimport { addItemsToSchema } from './utils';\n\nexport const hasOperationDataRequired = (\n operation: IROperationObject,\n): boolean => {\n if (hasParametersObjectRequired(operation.parameters)) {\n return true;\n }\n\n if (operation.body?.required) {\n return true;\n }\n\n return false;\n};\n\nexport const operationPagination = (\n operation: IROperationObject,\n): Pagination | undefined => {\n if (operation.body?.pagination) {\n return {\n in: 'body',\n name:\n operation.body.pagination === true ? 'body' : operation.body.pagination,\n schema:\n operation.body.pagination === true\n ? operation.body.schema\n : operation.body.schema.properties![operation.body.pagination],\n };\n }\n\n return parameterWithPagination(operation.parameters);\n};\n\ntype StatusGroup = '1XX' | '2XX' | '3XX' | '4XX' | '5XX' | 'default';\n\nconst statusCodeToGroup = ({\n statusCode,\n}: {\n statusCode: string;\n}): StatusGroup => {\n switch (statusCode) {\n case '1XX':\n return '1XX';\n case '2XX':\n return '2XX';\n case '3XX':\n return '3XX';\n case '4XX':\n return '4XX';\n case '5XX':\n return '5XX';\n case 'default':\n return 'default';\n default:\n return `${statusCode[0]}XX` as StatusGroup;\n }\n};\n\ninterface OperationResponsesMap {\n error: IRSchemaObject | undefined;\n response: IRSchemaObject | undefined;\n}\n\nexport const operationResponsesMap = (\n operation: IROperationObject,\n): OperationResponsesMap => {\n const result: OperationResponsesMap = {\n error: undefined,\n response: undefined,\n };\n\n if (!operation.responses) {\n return result;\n }\n\n let errors: IRSchemaObject = {};\n const errorsItems: Array<IRSchemaObject> = [];\n\n let responses: IRSchemaObject = {};\n const responsesItems: Array<IRSchemaObject> = [];\n\n let defaultResponse: IRResponseObject | undefined;\n\n for (const name in operation.responses) {\n const response = operation.responses[name]!;\n\n switch (statusCodeToGroup({ statusCode: name })) {\n case '1XX':\n case '3XX':\n // TODO: parser - handle informational and redirection status codes\n break;\n case '2XX':\n responsesItems.push(response.schema);\n break;\n case '4XX':\n case '5XX':\n errorsItems.push(response.schema);\n break;\n case 'default':\n // store default response to be evaluated last\n defaultResponse = response;\n break;\n }\n }\n\n // infer default response type\n if (defaultResponse) {\n let inferred = false;\n\n // assume default is intended for success if none exists yet\n if (!responsesItems.length) {\n responsesItems.push(defaultResponse.schema);\n inferred = true;\n }\n\n const description = (\n defaultResponse.schema.description ?? ''\n ).toLocaleLowerCase();\n const $ref = (defaultResponse.schema.$ref ?? '').toLocaleLowerCase();\n\n // TODO: parser - this could be rewritten using regular expressions\n const successKeywords = ['success'];\n if (\n successKeywords.some(\n (keyword) => description.includes(keyword) || $ref.includes(keyword),\n )\n ) {\n responsesItems.push(defaultResponse.schema);\n inferred = true;\n }\n\n // TODO: parser - this could be rewritten using regular expressions\n const errorKeywords = ['error', 'problem'];\n if (\n errorKeywords.some(\n (keyword) => description.includes(keyword) || $ref.includes(keyword),\n )\n ) {\n errorsItems.push(defaultResponse.schema);\n inferred = true;\n }\n\n // if no keyword match, assume default schema is intended for error\n if (!inferred) {\n errorsItems.push(defaultResponse.schema);\n }\n }\n\n if (errorsItems.length) {\n errors = addItemsToSchema({\n items: errorsItems,\n mutateSchemaOneItem: true,\n schema: errors,\n });\n errors = deduplicateSchema({ schema: errors });\n if (Object.keys(errors).length && errors.type !== 'unknown') {\n result.error = errors;\n }\n }\n\n if (responsesItems.length) {\n responses = addItemsToSchema({\n items: responsesItems,\n mutateSchemaOneItem: true,\n schema: responses,\n });\n responses = deduplicateSchema({ schema: responses });\n if (Object.keys(responses).length && responses.type !== 'unknown') {\n result.response = responses;\n }\n }\n\n return result;\n};\n","import type { Client as ParserClient, Model } from '../openApi';\nimport { sanitizeNamespaceIdentifier } from '../openApi';\nimport type { Client, Operation, Service } from '../types/client';\nimport { camelCase } from './camelCase';\nimport { getConfig } from './config';\nimport { sort } from './sort';\nimport { unique } from './unique';\n\n/**\n * Post process client\n * @param client Client object with all the models, services, etc.\n */\nexport function postProcessClient(client: ParserClient): Client {\n return {\n ...client,\n models: client.models.map((model) => postProcessModel(model)),\n services: postProcessOperations(client.operations).map(postProcessService),\n types: {},\n };\n}\n\nconst postProcessModel = (model: Model): Model => ({\n ...model,\n $refs: model.$refs.filter((value, index, arr) => unique(value, index, arr)),\n enum: model.enum.filter(\n (value, index, arr) =>\n arr.findIndex((item) => item.value === value.value) === index,\n ),\n enums: model.enums.filter(\n (value, index, arr) =>\n arr.findIndex((item) => item.name === value.name) === index,\n ),\n imports: model.imports\n .filter(\n (value, index, arr) => unique(value, index, arr) && value !== model.name,\n )\n .sort(sort),\n});\n\nconst postProcessOperations = (\n operations: ParserClient['operations'],\n): Client['services'] => {\n const config = getConfig();\n\n const services = new Map<string, Service>();\n\n operations.forEach((parserOperation) => {\n const tags =\n parserOperation.tags?.length && (config.services.asClass || config.name)\n ? parserOperation.tags.filter(unique)\n : ['Default'];\n tags.forEach((tag) => {\n const operation: Operation = {\n ...parserOperation,\n service: getServiceName(tag),\n };\n const service =\n services.get(operation.service) || getNewService(operation);\n service.$refs = [...service.$refs, ...operation.$refs];\n service.imports = [...service.imports, ...operation.imports];\n service.operations = [...service.operations, operation];\n services.set(operation.service, service);\n });\n });\n\n return Array.from(services.values());\n};\n\nconst postProcessService = (service: Service): Service => {\n const clone = { ...service };\n clone.operations = postProcessServiceOperations(clone);\n clone.operations.forEach((operation) => {\n clone.imports.push(...operation.imports);\n });\n clone.imports = clone.imports.filter(unique).sort(sort);\n return clone;\n};\n\nconst postProcessServiceOperations = (service: Service): Operation[] => {\n const names = new Map<string, number>();\n\n return service.operations.map((operation) => {\n const clone = { ...operation };\n\n // Parse the service parameters and successes, very similar to how we parse\n // properties of models. These methods will extend the type if needed.\n clone.imports.push(\n ...clone.parameters.flatMap((parameter) => parameter.imports),\n );\n const successResponses = clone.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n clone.imports.push(...successResponses.flatMap((result) => result.imports));\n\n // Check if the operation name is unique, if not then prefix this with a number\n const name = clone.name;\n const index = names.get(name) || 0;\n if (index > 0) {\n clone.name = `${name}${index}`;\n }\n names.set(name, index + 1);\n\n return clone;\n });\n};\n\nexport const getNewService = (operation: Operation): Service => ({\n $refs: [],\n imports: [],\n name: operation.service,\n operations: [],\n});\n\n/**\n * Convert the input value to a correct service name. This converts\n * the input string to PascalCase.\n */\nexport const getServiceName = (value: string): string =>\n camelCase({\n input: sanitizeNamespaceIdentifier(value),\n pascalCase: true,\n });\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport type { IRContext } from '../../../ir/context';\nimport type {\n IRPathItemObject,\n IRPathsObject,\n IRSchemaObject,\n} from '../../../ir/ir';\nimport { operationResponsesMap } from '../../../ir/operation';\nimport { camelCase } from '../../../utils/camelCase';\nimport { irRef } from '../../../utils/ref';\nimport { operationResponseRef } from '../services/plugin';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\n}\n\nconst operationIrRef = ({\n id,\n type,\n}: OperationIRRef & {\n type: 'data' | 'error' | 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'data':\n affix = 'DataResponseTransformer';\n break;\n case 'error':\n affix = 'ErrorResponseTransformer';\n break;\n case 'response':\n affix = 'ResponseTransformer';\n break;\n }\n return `${irRef}${camelCase({\n input: id,\n // TODO: parser - do not pascalcase for functions, only for types\n pascalCase: false,\n })}${affix}`;\n};\n\n// TODO: parser - currently unused\nexport const operationDataTransformerRef = ({ id }: OperationIRRef): string =>\n operationIrRef({ id, type: 'data' });\n\n// TODO: parser - currently unused\nexport const operationErrorTransformerRef = ({ id }: OperationIRRef): string =>\n operationIrRef({ id, type: 'error' });\n\nexport const operationResponseTransformerRef = ({\n id,\n}: OperationIRRef): string => operationIrRef({ id, type: 'response' });\n\nconst schemaIrRef = ({\n $ref,\n type,\n}: {\n $ref: string;\n type: 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'response':\n affix = 'SchemaResponseTransformer';\n break;\n }\n const parts = $ref.split('/');\n return `${parts.slice(0, parts.length - 1).join('/')}/${camelCase({\n input: parts[parts.length - 1],\n pascalCase: false,\n })}${affix}`;\n};\n\nexport const schemaResponseTransformerRef = ({\n $ref,\n}: {\n $ref: string;\n}): string => schemaIrRef({ $ref, type: 'response' });\n\nconst transformersId = 'transformers';\nconst dataVariableName = 'data';\n\nconst ensureStatements = (\n nodes: Array<ts.Expression | ts.Statement>,\n): Array<ts.Statement> =>\n nodes.map((node) =>\n ts.isStatement(node)\n ? node\n : compiler.expressionToStatement({ expression: node }),\n );\n\nconst schemaResponseTransformerNodes = ({\n context,\n schema,\n}: {\n context: IRContext;\n schema: IRSchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const identifierData = compiler.identifier({ text: dataVariableName });\n const nodes = processSchemaType({\n context,\n dataExpression: identifierData,\n schema,\n });\n if (nodes.length) {\n nodes.push(compiler.returnStatement({ expression: identifierData }));\n }\n return nodes;\n};\n\nconst processSchemaType = ({\n context,\n dataExpression,\n schema,\n}: {\n context: IRContext;\n dataExpression?: ts.Expression | string;\n schema: IRSchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const file = context.file({ id: transformersId })!;\n\n if (schema.$ref) {\n let identifier = file.identifier({\n $ref: schemaResponseTransformerRef({ $ref: schema.$ref }),\n create: true,\n namespace: 'value',\n });\n\n if (identifier.created && identifier.name) {\n // create each schema response transformer only once\n const refSchema = context.resolveIrRef<IRSchemaObject>(schema.$ref);\n const nodes = schemaResponseTransformerNodes({\n context,\n schema: refSchema,\n });\n if (nodes.length) {\n const node = compiler.constVariable({\n expression: compiler.arrowFunction({\n async: false,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transformed dates\n type: compiler.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n statements: ensureStatements(nodes),\n }),\n name: identifier.name,\n });\n file.add(node);\n } else {\n // the created schema response transformer was empty, do not generate\n // it and prevent any future attempts\n identifier = file.blockIdentifier({\n $ref: schemaResponseTransformerRef({ $ref: schema.$ref }),\n namespace: 'value',\n });\n }\n }\n\n if (identifier.name) {\n const callExpression = compiler.callExpression({\n functionName: identifier.name,\n parameters: [dataExpression],\n });\n\n if (typeof dataExpression === 'string') {\n return [callExpression];\n }\n\n if (dataExpression) {\n return [\n compiler.assignment({\n left: dataExpression,\n right: callExpression,\n }),\n ];\n }\n }\n\n return [];\n }\n\n if (schema.type === 'array') {\n // TODO: parser - handle tuples and complex arrays\n const nodes = !schema.items\n ? []\n : processSchemaType({\n context,\n schema: {\n ...schema,\n type: undefined,\n },\n });\n if (!nodes.length) {\n return [];\n }\n if (dataExpression && typeof dataExpression !== 'string') {\n return [\n compiler.assignment({\n left: dataExpression,\n right: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: dataExpression,\n name: 'map',\n }),\n parameters: [\n compiler.arrowFunction({\n multiLine: true,\n parameters: [{ name: 'item' }],\n statements:\n nodes.length === 1\n ? ts.isStatement(nodes[0])\n ? []\n : [\n compiler.returnStatement({\n expression: nodes[0],\n }),\n ]\n : ensureStatements(nodes),\n }),\n ],\n }),\n }),\n ];\n }\n return [];\n }\n\n if (schema.type === 'object') {\n let nodes: Array<ts.Expression | ts.Statement> = [];\n const required = schema.required ?? [];\n\n for (const name in schema.properties) {\n const property = schema.properties[name];\n const propertyAccessExpression = compiler.propertyAccessExpression({\n expression: dataVariableName,\n name,\n });\n const propertyNodes = processSchemaType({\n context,\n dataExpression: propertyAccessExpression,\n schema: property,\n });\n if (propertyNodes.length) {\n if (required.includes(name)) {\n nodes = nodes.concat(propertyNodes);\n } else {\n nodes.push(\n compiler.ifStatement({\n expression: propertyAccessExpression,\n thenStatement: compiler.block({\n statements: ensureStatements(propertyNodes),\n }),\n }),\n );\n }\n }\n }\n\n return nodes;\n }\n\n if (\n schema.type === 'string' &&\n (schema.format === 'date' || schema.format === 'date-time')\n ) {\n const identifierDate = compiler.identifier({ text: 'Date' });\n\n if (typeof dataExpression === 'string') {\n return [\n compiler.newExpression({\n argumentsArray: [compiler.identifier({ text: dataExpression })],\n expression: identifierDate,\n }),\n ];\n }\n\n if (dataExpression) {\n return [\n compiler.assignment({\n left: dataExpression,\n right: compiler.newExpression({\n argumentsArray: [dataExpression],\n expression: identifierDate,\n }),\n }),\n ];\n }\n\n return [];\n }\n\n if (schema.items) {\n if (schema.items.length === 1) {\n return processSchemaType({\n context,\n dataExpression: 'item',\n schema: schema.items[0],\n });\n }\n\n const nodes: Array<ts.Expression | ts.Statement> = [];\n if (\n schema.items.length === 2 &&\n schema.items.find((item) => item.type === 'null' || item.type === 'void')\n ) {\n // process 2 items if one of them is null\n for (const item of schema.items) {\n const nodes = processSchemaType({\n context,\n dataExpression: 'item',\n schema: item,\n });\n if (nodes.length) {\n const identifierItem = compiler.identifier({ text: 'item' });\n // processed means the item was transformed\n nodes.push(\n compiler.ifStatement({\n expression: identifierItem,\n thenStatement: compiler.block({\n statements:\n nodes.length === 1\n ? ts.isStatement(nodes[0])\n ? []\n : [\n compiler.returnStatement({\n expression: nodes[0],\n }),\n ]\n : ensureStatements(nodes),\n }),\n }),\n compiler.returnStatement({ expression: identifierItem }),\n );\n }\n }\n return nodes;\n }\n\n console.warn(\n `❗️ Transformers warning: schema ${JSON.stringify(schema)} is too complex and won't be currently processed. This will likely produce an incomplete transformer which is not what you want. Please open an issue if you'd like this improved https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n\n return [];\n};\n\n// handles only response transformers for now\nexport const generateTransformers = ({\n context,\n}: {\n context: IRContext;\n}): void => {\n // TODO: parser - once transformers are a plugin, this logic can be simplified\n if (\n !context.config.services.export ||\n // client.services.length &&\n context.config.types.dates !== 'types+transform'\n ) {\n return;\n }\n\n const file = context.createFile({\n id: transformersId,\n path: 'transformers',\n });\n\n for (const path in context.ir.paths) {\n const pathItem = context.ir.paths[path as keyof IRPathsObject];\n\n for (const _method in pathItem) {\n const method = _method as keyof IRPathItemObject;\n const operation = pathItem[method]!;\n\n const { response } = operationResponsesMap(operation);\n\n if (!response) {\n continue;\n }\n\n if (response.items && response.items.length > 1) {\n if (context.config.debug) {\n console.warn(\n `❗️ Transformers warning: route ${`${method.toUpperCase()} ${path}`} has ${response.items.length} non-void success responses. This is currently not handled and we will not generate a response transformer. Please open an issue if you'd like this feature https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n continue;\n }\n\n const identifierResponse = context.file({ id: 'types' })!.identifier({\n $ref: operationResponseRef({ id: operation.id }),\n namespace: 'type',\n });\n if (!identifierResponse.name) {\n continue;\n }\n\n let identifierResponseTransformer = file.identifier({\n $ref: operationResponseTransformerRef({ id: operation.id }),\n create: true,\n namespace: 'value',\n });\n if (!identifierResponseTransformer.name) {\n continue;\n }\n\n // TODO: parser - consider handling simple string response which is also a date\n const nodes = schemaResponseTransformerNodes({\n context,\n schema: response,\n });\n if (nodes.length) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: 'types' }),\n name: identifierResponse.name,\n });\n const responseTransformerNode = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transformed dates\n type: compiler.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n returnType: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n }),\n ],\n typeName: 'Promise',\n }),\n statements: ensureStatements(nodes),\n }),\n name: identifierResponseTransformer.name,\n });\n file.add(responseTransformerNode);\n } else {\n // the created schema response transformer was empty, do not generate\n // it and prevent any future attempts\n identifierResponseTransformer = file.blockIdentifier({\n $ref: operationResponseTransformerRef({ id: operation.id }),\n namespace: 'value',\n });\n }\n }\n }\n};\n","import type ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport type { ObjectValue } from '../../../compiler/types';\nimport {\n clientModulePath,\n clientOptionsTypeName,\n} from '../../../generate/client';\nimport {\n operationOptionsType,\n serviceFunctionIdentifier,\n} from '../../../generate/services';\nimport type { IRContext } from '../../../ir/context';\nimport type {\n IROperationObject,\n IRPathItemObject,\n IRPathsObject,\n} from '../../../ir/ir';\nimport { hasOperationDataRequired } from '../../../ir/operation';\nimport { camelCase } from '../../../utils/camelCase';\nimport { escapeComment } from '../../../utils/escape';\nimport { getServiceName } from '../../../utils/postprocess';\nimport { irRef } from '../../../utils/ref';\nimport { transformServiceName } from '../../../utils/transform';\nimport { operationResponseTransformerRef } from '../transformers/plugin';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\n}\n\nconst operationIrRef = ({\n id,\n type,\n}: OperationIRRef & {\n type: 'data' | 'error' | 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'data':\n affix = 'Data';\n break;\n case 'error':\n affix = 'Error';\n break;\n case 'response':\n affix = 'Response';\n break;\n }\n return `${irRef}${camelCase({\n input: id,\n pascalCase: true,\n })}${affix}`;\n};\n\nexport const operationDataRef = ({ id }: OperationIRRef): string =>\n operationIrRef({ id, type: 'data' });\n\nexport const operationErrorRef = ({ id }: OperationIRRef): string =>\n operationIrRef({ id, type: 'error' });\n\nexport const operationResponseRef = ({ id }: OperationIRRef): string =>\n operationIrRef({ id, type: 'response' });\n\nconst servicesId = 'services';\n\nconst checkPrerequisites = ({ context }: { context: IRContext }) => {\n if (!context.config.client.name) {\n throw new Error(\n '🚫 client needs to be set to generate services - which HTTP client do you want to use?',\n );\n }\n\n if (!context.file({ id: 'types' })) {\n throw new Error(\n '🚫 types need to be exported to generate services - enable type generation',\n );\n }\n};\n\nconst requestOptions = ({\n context,\n operation,\n path,\n}: {\n context: IRContext;\n operation: IROperationObject;\n path: string;\n}) => {\n const file = context.file({ id: servicesId })!;\n const servicesOutput = file.nameWithoutExtension();\n\n const obj: ObjectValue[] = [{ spread: 'options' }];\n\n if (operation.body) {\n switch (operation.body.type) {\n case 'form-data':\n obj.push({ spread: 'formDataBodySerializer' });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: servicesOutput,\n }),\n name: 'formDataBodySerializer',\n });\n break;\n case 'json':\n break;\n case 'url-search-params':\n obj.push({ spread: 'urlSearchParamsBodySerializer' });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: servicesOutput,\n }),\n name: 'urlSearchParamsBodySerializer',\n });\n break;\n }\n\n obj.push({\n key: 'headers',\n value: [\n {\n key: 'Content-Type',\n // form-data does not need Content-Type header, browser will set it automatically\n value:\n operation.body.type === 'form-data'\n ? null\n : operation.body.mediaType,\n },\n {\n spread: 'options?.headers',\n },\n ],\n });\n }\n\n // TODO: parser - set parseAs to skip inference if every response has the same\n // content type. currently impossible because successes do not contain\n // header information\n\n obj.push({\n key: 'url',\n value: path,\n });\n\n const fileTransformers = context.file({ id: 'transformers' });\n if (fileTransformers) {\n const identifier = fileTransformers.identifier({\n $ref: operationResponseTransformerRef({ id: operation.id }),\n namespace: 'value',\n });\n if (identifier.name) {\n file.import({\n module: file.relativePathToFile({ context, id: 'transformers' }),\n name: identifier.name,\n });\n obj.push({\n key: 'responseTransformer',\n value: identifier.name,\n });\n }\n }\n\n return compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj,\n });\n};\n\nconst generateClassServices = ({ context }: { context: IRContext }) => {\n const file = context.file({ id: servicesId })!;\n const typesModule = file.relativePathToFile({ context, id: 'types' });\n\n const services = new Map<string, Array<ts.MethodDeclaration>>();\n\n for (const path in context.ir.paths) {\n const pathItem = context.ir.paths[path as keyof IRPathsObject];\n\n for (const _method in pathItem) {\n const method = _method as keyof IRPathItemObject;\n const operation = pathItem[method]!;\n\n const identifierData = context.file({ id: 'types' })!.identifier({\n $ref: operationDataRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierData.name) {\n file.import({\n asType: true,\n module: typesModule,\n name: identifierData.name,\n });\n }\n\n const identifierError = context.file({ id: 'types' })!.identifier({\n $ref: operationErrorRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierError.name) {\n file.import({\n asType: true,\n module: typesModule,\n name: identifierError.name,\n });\n }\n\n const identifierResponse = context.file({ id: 'types' })!.identifier({\n $ref: operationResponseRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierResponse.name) {\n file.import({\n asType: true,\n module: typesModule,\n name: identifierResponse.name,\n });\n }\n\n const node = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ],\n isStatic: true,\n name: serviceFunctionIdentifier({\n config: context.config,\n handleIllegal: false,\n id: operation.id,\n operation,\n }),\n parameters: [\n {\n isRequired: hasOperationDataRequired(operation),\n name: 'options',\n type: operationOptionsType({\n importedType: identifierData.name,\n throwOnError: 'ThrowOnError',\n }),\n },\n ],\n returnType: undefined,\n statements: [\n compiler.returnFunctionCall({\n args: [\n requestOptions({\n context,\n operation,\n path,\n }),\n ],\n name: `(options?.client ?? client).${method}`,\n types: [\n identifierResponse.name || 'unknown',\n identifierError.name || 'unknown',\n 'ThrowOnError',\n ],\n }),\n ],\n types: [\n {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n });\n\n const uniqueTags = Array.from(new Set(operation.tags));\n if (!uniqueTags.length) {\n uniqueTags.push('default');\n }\n\n for (const tag of uniqueTags) {\n const serviceName = getServiceName(tag);\n const nodes = services.get(serviceName) ?? [];\n nodes.push(node);\n services.set(serviceName, nodes);\n }\n }\n }\n\n for (const [serviceName, nodes] of services) {\n const node = compiler.classDeclaration({\n decorator: undefined,\n members: nodes,\n name: transformServiceName({\n config: context.config,\n name: serviceName,\n }),\n });\n file.add(node);\n }\n};\n\nconst generateFlatServices = ({ context }: { context: IRContext }) => {\n const file = context.file({ id: servicesId })!;\n const typesModule = file.relativePathToFile({ context, id: 'types' });\n\n for (const path in context.ir.paths) {\n const pathItem = context.ir.paths[path as keyof IRPathsObject];\n\n for (const _method in pathItem) {\n const method = _method as keyof IRPathItemObject;\n const operation = pathItem[method]!;\n\n const identifierData = context.file({ id: 'types' })!.identifier({\n $ref: operationDataRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierData.name) {\n file.import({\n asType: true,\n module: typesModule,\n name: identifierData.name,\n });\n }\n\n const identifierError = context.file({ id: 'types' })!.identifier({\n $ref: operationErrorRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierError.name) {\n file.import({\n asType: true,\n module: typesModule,\n name: identifierError.name,\n });\n }\n\n const identifierResponse = context.file({ id: 'types' })!.identifier({\n $ref: operationResponseRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierResponse.name) {\n file.import({\n asType: true,\n module: typesModule,\n name: identifierResponse.name,\n });\n }\n\n const node = compiler.constVariable({\n comment: [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: hasOperationDataRequired(operation),\n name: 'options',\n type: operationOptionsType({\n importedType: identifierData.name,\n throwOnError: 'ThrowOnError',\n }),\n },\n ],\n returnType: undefined,\n statements: [\n compiler.returnFunctionCall({\n args: [\n requestOptions({\n context,\n operation,\n path,\n }),\n ],\n name: `(options?.client ?? client).${method}`,\n types: [\n identifierResponse.name || 'unknown',\n identifierError.name || 'unknown',\n 'ThrowOnError',\n ],\n }),\n ],\n types: [\n {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n }),\n name: serviceFunctionIdentifier({\n config: context.config,\n handleIllegal: true,\n id: operation.id,\n operation,\n }),\n });\n file.add(node);\n }\n }\n};\n\nexport const generateServices = ({ context }: { context: IRContext }): void => {\n // TODO: parser - once services are a plugin, this logic can be simplified\n if (!context.config.services.export) {\n return;\n }\n\n checkPrerequisites({ context });\n\n const file = context.createFile({\n id: servicesId,\n path: 'services',\n });\n const servicesOutput = file.nameWithoutExtension();\n\n // import required packages and core files\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: servicesOutput,\n }),\n name: 'createClient',\n });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: servicesOutput,\n }),\n name: 'createConfig',\n });\n file.import({\n asType: true,\n module: clientModulePath({\n config: context.config,\n sourceOutput: servicesOutput,\n }),\n name: clientOptionsTypeName(),\n });\n\n // define client first\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: 'createClient',\n parameters: [\n compiler.callExpression({\n functionName: 'createConfig',\n }),\n ],\n }),\n name: 'client',\n });\n file.add(statement);\n\n if (context.config.services.asClass) {\n generateClassServices({ context });\n } else {\n generateFlatServices({ context });\n }\n};\n","import type ts from 'typescript';\n\nimport type { Property } from '../../../compiler';\nimport { compiler } from '../../../compiler';\nimport type { IRContext } from '../../../ir/context';\nimport type {\n IROperationObject,\n IRParameterObject,\n IRPathItemObject,\n IRPathsObject,\n IRSchemaObject,\n} from '../../../ir/ir';\nimport { operationResponsesMap } from '../../../ir/operation';\nimport { deduplicateSchema } from '../../../ir/schema';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../../../openApi';\nimport { escapeComment } from '../../../utils/escape';\nimport { irRef, isRefOpenApiComponent } from '../../../utils/ref';\nimport {\n operationDataRef,\n operationErrorRef,\n operationResponseRef,\n} from '../services/plugin';\n\ninterface SchemaWithType<T extends Required<IRSchemaObject>['type']>\n extends Omit<IRSchemaObject, 'type'> {\n type: Extract<Required<IRSchemaObject>['type'], T>;\n}\n\nconst typesId = 'types';\n\nconst parseSchemaJsDoc = ({ schema }: { schema: IRSchemaObject }) => {\n const comments = [\n schema.description && escapeComment(schema.description),\n schema.deprecated && '@deprecated',\n ];\n return comments;\n};\n\nconst addJavaScriptEnum = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IRContext;\n schema: SchemaWithType<'enum'>;\n}) => {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (!identifier.created) {\n return;\n }\n\n const enumObject = schemaToEnumObject({ schema });\n\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: enumObject.obj,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment: parseSchemaJsDoc({ schema }),\n exportConst: true,\n expression,\n name: identifier.name || '',\n });\n return node;\n};\n\nconst schemaToEnumObject = ({ schema }: { schema: IRSchemaObject }) => {\n const typeofItems: Array<\n | 'string'\n | 'number'\n | 'bigint'\n | 'boolean'\n | 'symbol'\n | 'undefined'\n | 'object'\n | 'function'\n > = [];\n\n const obj = (schema.items ?? []).map((item) => {\n const typeOfItemConst = typeof item.const;\n\n if (!typeofItems.includes(typeOfItemConst)) {\n typeofItems.push(typeOfItemConst);\n }\n\n let key;\n if (item.title) {\n key = item.title;\n } else if (typeOfItemConst === 'number') {\n key = `_${item.const}`;\n } else if (typeOfItemConst === 'boolean') {\n const valid = typeOfItemConst ? 'true' : 'false';\n key = valid.toLocaleUpperCase();\n } else {\n let valid = ensureValidTypeScriptJavaScriptIdentifier(\n item.const as string,\n );\n if (!valid) {\n // TODO: parser - abstract empty string handling\n valid = 'empty_string';\n }\n key = valid.toLocaleUpperCase();\n }\n return {\n comments: parseSchemaJsDoc({ schema: item }),\n key,\n value: item.const,\n };\n });\n\n return {\n obj,\n typeofItems,\n };\n};\n\nconst addTypeEnum = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IRContext;\n schema: SchemaWithType<'enum'>;\n}) => {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref,\n create: true,\n namespace: 'type',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (\n !identifier.created &&\n context.config.types.enums !== 'typescript+namespace'\n ) {\n return;\n }\n\n const node = compiler.typeAliasDeclaration({\n comment: parseSchemaJsDoc({ schema }),\n exportType: true,\n name: identifier.name || '',\n type: schemaToType({\n context,\n schema: {\n ...schema,\n type: undefined,\n },\n }),\n });\n return node;\n};\n\nconst addTypeScriptEnum = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IRContext;\n schema: SchemaWithType<'enum'>;\n}) => {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (\n !identifier.created &&\n context.config.types.enums !== 'typescript+namespace'\n ) {\n return;\n }\n\n const enumObject = schemaToEnumObject({ schema });\n\n // TypeScript enums support only string and number values so we need to fallback to types\n if (\n enumObject.typeofItems.filter(\n (type) => type !== 'number' && type !== 'string',\n ).length\n ) {\n const node = addTypeEnum({\n $ref,\n context,\n schema,\n });\n return node;\n }\n\n const node = compiler.enumDeclaration({\n leadingComment: parseSchemaJsDoc({ schema }),\n name: identifier.name || '',\n obj: enumObject.obj,\n });\n return node;\n};\n\nconst arrayTypeToIdentifier = ({\n context,\n namespace,\n schema,\n}: {\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'array'>;\n}) => {\n if (!schema.items) {\n return compiler.typeArrayNode(\n compiler.keywordTypeNode({\n keyword: 'unknown',\n }),\n );\n }\n\n schema = deduplicateSchema({ schema });\n\n // at least one item is guaranteed\n const itemTypes = schema.items!.map((item) =>\n schemaToType({\n context,\n namespace,\n schema: item,\n }),\n );\n\n if (itemTypes.length === 1) {\n return compiler.typeArrayNode(itemTypes[0]);\n }\n\n if (schema.logicalOperator === 'and') {\n return compiler.typeArrayNode(\n compiler.typeIntersectionNode({ types: itemTypes }),\n );\n }\n\n return compiler.typeArrayNode(compiler.typeUnionNode({ types: itemTypes }));\n};\n\nconst booleanTypeToIdentifier = ({\n schema,\n}: {\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'boolean'>;\n}) => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.ots.boolean(schema.const as boolean),\n });\n }\n\n return compiler.keywordTypeNode({\n keyword: 'boolean',\n });\n};\n\nconst enumTypeToIdentifier = ({\n $ref,\n context,\n namespace,\n schema,\n}: {\n $ref?: string;\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'enum'>;\n}): ts.TypeNode => {\n // TODO: parser - add option to inline enums\n if ($ref) {\n const isRefComponent = isRefOpenApiComponent($ref);\n\n // when enums are disabled (default), emit only reusable components\n // as types, otherwise the output would be broken if we skipped all enums\n if (!context.config.types.enums && isRefComponent) {\n const typeNode = addTypeEnum({\n $ref,\n context,\n schema,\n });\n if (typeNode) {\n context.file({ id: typesId })!.add(typeNode);\n }\n }\n\n if (context.config.types.enums === 'javascript') {\n const typeNode = addTypeEnum({\n $ref,\n context,\n schema,\n });\n if (typeNode) {\n context.file({ id: typesId })!.add(typeNode);\n }\n\n const objectNode = addJavaScriptEnum({\n $ref,\n context,\n schema,\n });\n if (objectNode) {\n context.file({ id: typesId })!.add(objectNode);\n }\n }\n\n if (context.config.types.enums === 'typescript') {\n const enumNode = addTypeScriptEnum({\n $ref,\n context,\n schema,\n });\n if (enumNode) {\n context.file({ id: typesId })!.add(enumNode);\n }\n }\n\n if (context.config.types.enums === 'typescript+namespace') {\n const enumNode = addTypeScriptEnum({\n $ref,\n context,\n schema,\n });\n if (enumNode) {\n if (isRefComponent) {\n context.file({ id: typesId })!.add(enumNode);\n } else {\n // emit enum inside TypeScript namespace\n namespace.push(enumNode);\n }\n }\n }\n }\n\n const type = schemaToType({\n context,\n schema: {\n ...schema,\n type: undefined,\n },\n });\n return type;\n};\n\nconst numberTypeToIdentifier = ({\n schema,\n}: {\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'number'>;\n}) => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.ots.number(schema.const as number),\n });\n }\n\n return compiler.keywordTypeNode({\n keyword: 'number',\n });\n};\n\nconst objectTypeToIdentifier = ({\n context,\n namespace,\n schema,\n}: {\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'object'>;\n}) => {\n let indexProperty: Property | undefined;\n const schemaProperties: Array<Property> = [];\n const indexPropertyItems: Array<IRSchemaObject> = [];\n const required = schema.required ?? [];\n let hasOptionalProperties = false;\n\n for (const name in schema.properties) {\n const property = schema.properties[name];\n const isRequired = required.includes(name);\n schemaProperties.push({\n comment: parseSchemaJsDoc({ schema: property }),\n isReadOnly: property.accessScope === 'read',\n isRequired,\n name,\n type: schemaToType({\n $ref: `${irRef}${name}`,\n context,\n namespace,\n schema: property,\n }),\n });\n indexPropertyItems.push(property);\n\n if (!isRequired) {\n hasOptionalProperties = true;\n }\n }\n\n if (schema.additionalProperties) {\n indexPropertyItems.unshift(schema.additionalProperties);\n\n if (hasOptionalProperties) {\n indexPropertyItems.push({\n type: 'void',\n });\n }\n\n indexProperty = {\n isRequired: true,\n name: 'key',\n type: schemaToType({\n context,\n namespace,\n schema:\n indexPropertyItems.length === 1\n ? indexPropertyItems[0]\n : {\n items: indexPropertyItems,\n logicalOperator: 'or',\n },\n }),\n };\n }\n\n return compiler.typeInterfaceNode({\n indexProperty,\n properties: schemaProperties,\n useLegacyResolution: false,\n });\n};\n\nconst stringTypeToIdentifier = ({\n context,\n schema,\n}: {\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'string'>;\n}) => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: schema.const as string }),\n });\n }\n\n if (schema.format) {\n if (schema.format === 'binary') {\n return compiler.typeUnionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: 'Blob',\n }),\n compiler.typeReferenceNode({\n typeName: 'File',\n }),\n ],\n });\n }\n\n if (schema.format === 'date-time' || schema.format === 'date') {\n // TODO: parser - add ability to skip type transformers\n if (context.config.types.dates) {\n return compiler.typeReferenceNode({ typeName: 'Date' });\n }\n }\n }\n\n return compiler.keywordTypeNode({\n keyword: 'string',\n });\n};\n\nconst tupleTypeToIdentifier = ({\n context,\n namespace,\n schema,\n}: {\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'tuple'>;\n}) => {\n const itemTypes: Array<ts.TypeNode> = [];\n\n for (const item of schema.items ?? []) {\n itemTypes.push(\n schemaToType({\n context,\n namespace,\n schema: item,\n }),\n );\n }\n\n return compiler.typeTupleNode({\n types: itemTypes,\n });\n};\n\nconst schemaTypeToIdentifier = ({\n $ref,\n context,\n namespace,\n schema,\n}: {\n $ref?: string;\n context: IRContext;\n namespace: Array<ts.Statement>;\n schema: IRSchemaObject;\n}): ts.TypeNode => {\n switch (schema.type as Required<IRSchemaObject>['type']) {\n case 'array':\n return arrayTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'array'>,\n });\n case 'boolean':\n return booleanTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'boolean'>,\n });\n case 'enum':\n return enumTypeToIdentifier({\n $ref,\n context,\n namespace,\n schema: schema as SchemaWithType<'enum'>,\n });\n case 'null':\n return compiler.literalTypeNode({\n literal: compiler.null(),\n });\n case 'number':\n return numberTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'number'>,\n });\n case 'object':\n return objectTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'object'>,\n });\n case 'string':\n return stringTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'string'>,\n });\n case 'tuple':\n return tupleTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'tuple'>,\n });\n case 'unknown':\n return compiler.keywordTypeNode({\n keyword: 'unknown',\n });\n case 'void':\n return compiler.keywordTypeNode({\n keyword: 'undefined',\n });\n }\n};\n\nconst irParametersToIrSchema = ({\n parameters,\n}: {\n parameters: Record<string, IRParameterObject>;\n}): IRSchemaObject => {\n const irSchema: IRSchemaObject = {\n type: 'object',\n };\n\n if (parameters) {\n const properties: Record<string, IRSchemaObject> = {};\n const required: Array<string> = [];\n\n for (const name in parameters) {\n const parameter = parameters[name];\n\n properties[name] = deduplicateSchema({\n schema: parameter.schema,\n });\n\n if (parameter.required) {\n required.push(name);\n }\n }\n\n irSchema.properties = properties;\n\n if (required.length) {\n irSchema.required = required;\n }\n }\n\n return irSchema;\n};\n\nconst operationToDataType = ({\n context,\n operation,\n}: {\n context: IRContext;\n operation: IROperationObject;\n}) => {\n const data: IRSchemaObject = {\n type: 'object',\n };\n const dataRequired: Array<string> = [];\n\n if (operation.body) {\n if (!data.properties) {\n data.properties = {};\n }\n\n data.properties.body = operation.body.schema;\n\n if (operation.body.required) {\n dataRequired.push('body');\n }\n }\n\n if (operation.parameters) {\n if (!data.properties) {\n data.properties = {};\n }\n\n // TODO: parser - handle cookie parameters\n\n if (operation.parameters.header) {\n data.properties.headers = irParametersToIrSchema({\n parameters: operation.parameters.header,\n });\n\n if (data.properties.headers.required) {\n dataRequired.push('headers');\n }\n }\n\n if (operation.parameters.path) {\n data.properties.path = irParametersToIrSchema({\n parameters: operation.parameters.path,\n });\n\n if (data.properties.path.required) {\n dataRequired.push('path');\n }\n }\n\n if (operation.parameters.query) {\n data.properties.query = irParametersToIrSchema({\n parameters: operation.parameters.query,\n });\n\n if (data.properties.query.required) {\n dataRequired.push('query');\n }\n }\n }\n\n data.required = dataRequired;\n\n if (data.properties) {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref: operationDataRef({ id: operation.id }),\n create: true,\n namespace: 'type',\n });\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name || '',\n type: schemaToType({\n context,\n schema: data,\n }),\n });\n context.file({ id: typesId })!.add(node);\n }\n};\n\nconst operationToType = ({\n context,\n operation,\n}: {\n context: IRContext;\n operation: IROperationObject;\n}) => {\n operationToDataType({\n context,\n operation,\n });\n\n const { error, response } = operationResponsesMap(operation);\n\n if (error) {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref: operationErrorRef({ id: operation.id }),\n create: true,\n namespace: 'type',\n });\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name || '',\n type: schemaToType({\n context,\n schema: error,\n }),\n });\n context.file({ id: typesId })!.add(node);\n }\n\n if (response) {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref: operationResponseRef({ id: operation.id }),\n create: true,\n namespace: 'type',\n });\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name || '',\n type: schemaToType({\n context,\n schema: response,\n }),\n });\n context.file({ id: typesId })!.add(node);\n }\n};\n\nexport const schemaToType = ({\n $ref,\n context,\n namespace = [],\n schema,\n}: {\n $ref?: string;\n context: IRContext;\n namespace?: Array<ts.Statement>;\n schema: IRSchemaObject;\n}): ts.TypeNode => {\n let type: ts.TypeNode | undefined;\n\n if (schema.$ref) {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref: schema.$ref,\n create: true,\n namespace: 'type',\n });\n type = compiler.typeReferenceNode({\n typeName: identifier.name || '',\n });\n } else if (schema.type) {\n type = schemaTypeToIdentifier({\n $ref,\n context,\n namespace,\n schema,\n });\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n if (schema.items) {\n const itemTypes = schema.items.map((item) =>\n schemaToType({\n context,\n namespace,\n schema: item,\n }),\n );\n type =\n schema.logicalOperator === 'and'\n ? compiler.typeIntersectionNode({ types: itemTypes })\n : compiler.typeUnionNode({ types: itemTypes });\n } else {\n type = schemaToType({\n context,\n namespace,\n schema,\n });\n }\n } else {\n // catch-all fallback for failed schemas\n type = schemaTypeToIdentifier({\n context,\n namespace,\n schema: {\n type: 'unknown',\n },\n });\n }\n\n // emit nodes only if $ref points to a reusable component\n if ($ref && isRefOpenApiComponent($ref)) {\n // emit namespace if it has any members\n if (namespace.length) {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n const node = compiler.namespaceDeclaration({\n name: identifier.name || '',\n statements: namespace,\n });\n context.file({ id: typesId })!.add(node);\n }\n\n // enum handler emits its own artifacts\n if (schema.type !== 'enum') {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref,\n create: true,\n namespace: 'type',\n });\n const node = compiler.typeAliasDeclaration({\n comment: parseSchemaJsDoc({ schema }),\n exportType: true,\n name: identifier.name || '',\n type,\n });\n context.file({ id: typesId })!.add(node);\n }\n }\n\n return type;\n};\n\nexport const generateTypes = ({ context }: { context: IRContext }): void => {\n // TODO: parser - once types are a plugin, this logic can be simplified\n if (!context.config.types.export) {\n return;\n }\n\n context.createFile({\n id: typesId,\n path: 'types',\n });\n\n if (context.ir.components) {\n for (const name in context.ir.components.schemas) {\n const schema = context.ir.components.schemas[name];\n\n schemaToType({\n $ref: `#/components/schemas/${name}`,\n context,\n schema,\n });\n }\n\n for (const name in context.ir.components.parameters) {\n const parameter = context.ir.components.parameters[name];\n\n schemaToType({\n $ref: `#/components/parameters/${name}`,\n context,\n schema: parameter.schema,\n });\n }\n }\n\n // TODO: parser - once types are a plugin, this logic can be simplified\n // provide config option on types to generate path types and services\n // will set it to true if needed\n if (context.config.services.export || context.config.types.tree) {\n for (const path in context.ir.paths) {\n const pathItem = context.ir.paths[path as keyof IRPathsObject];\n\n for (const _method in pathItem) {\n const method = _method as keyof IRPathItemObject;\n const operation = pathItem[method]!;\n\n operationToType({\n context,\n operation,\n });\n }\n }\n\n // TODO: parser - document removal of tree? migrate it?\n }\n};\n","import { writeFileSync } from 'node:fs';\nimport path from 'node:path';\n\nimport type { OpenApi } from '../openApi';\nimport type { Client } from '../types/client';\nimport { getConfig } from '../utils/config';\nimport { getHttpRequestName } from '../utils/getHttpRequestName';\nimport type { Templates } from '../utils/handlebars';\nimport { sortByName } from '../utils/sort';\nimport { ensureDirSync } from './utils';\n\n/**\n * Generate the OpenAPI client index file using the Handlebar template and write it to disk.\n * The index file just contains all the exports you need to use the client as a standalone\n * library. But you can also import individual models and services directly.\n * @param openApi {@link OpenApi} Dereferenced OpenAPI specification\n * @param outputPath Directory to write the generated files to\n * @param client Client containing models, schemas, and services\n * @param templates The loaded handlebar templates\n */\nexport const generateLegacyClientClass = async (\n openApi: OpenApi,\n outputPath: string,\n client: Client,\n templates: Templates,\n) => {\n const config = getConfig();\n\n const templateResult = templates.client({\n $config: config,\n ...client,\n httpRequest: getHttpRequestName(config.client),\n models: sortByName(client.models),\n services: sortByName(client.services),\n });\n\n if (config.name) {\n ensureDirSync(outputPath);\n writeFileSync(\n path.resolve(outputPath, `${config.name}.ts`),\n templateResult,\n );\n }\n};\n","import type { Config } from '../types/config';\n\n/**\n * Generate the HttpRequest filename based on the selected client\n * @param client HTTP client to generate\n */\nexport const getHttpRequestName = (client: Config['client']): string => {\n switch (client.name) {\n case 'legacy/angular':\n return 'AngularHttpRequest';\n case 'legacy/axios':\n return 'AxiosHttpRequest';\n case 'legacy/fetch':\n return 'FetchHttpRequest';\n case 'legacy/node':\n return 'NodeHttpRequest';\n case 'legacy/xhr':\n return 'XHRHttpRequest';\n default:\n return '';\n }\n};\n","import {\n copyFileSync,\n existsSync,\n mkdirSync,\n rmSync,\n writeFileSync,\n} from 'node:fs';\nimport path from 'node:path';\n\nimport type { Client } from '../types/client';\nimport { getConfig } from '../utils/config';\nimport { getHttpRequestName } from '../utils/getHttpRequestName';\nimport type { Templates } from '../utils/handlebars';\n\n/**\n * Generate OpenAPI core files, this includes the basic boilerplate code to handle requests.\n * @param outputPath Directory to write the generated files to\n * @param client Client containing models, schemas, and services\n * @param templates The loaded handlebar templates\n */\nexport const generateLegacyCore = async (\n outputPath: string,\n client: Client,\n templates: Templates,\n): Promise<void> => {\n const config = getConfig();\n\n if (config.exportCore) {\n const context = {\n httpRequest: getHttpRequestName(config.client),\n server: config.base !== undefined ? config.base : client.server,\n version: client.version,\n };\n\n rmSync(path.resolve(outputPath), {\n force: true,\n recursive: true,\n });\n mkdirSync(path.resolve(outputPath), {\n recursive: true,\n });\n\n await writeFileSync(\n path.resolve(outputPath, 'OpenAPI.ts'),\n templates.core.settings({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, 'ApiError.ts'),\n templates.core.apiError({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, 'ApiRequestOptions.ts'),\n templates.core.apiRequestOptions({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, 'ApiResult.ts'),\n templates.core.apiResult({\n $config: config,\n ...context,\n }),\n );\n if (config.client.name !== 'legacy/angular') {\n await writeFileSync(\n path.resolve(outputPath, 'CancelablePromise.ts'),\n templates.core.cancelablePromise({\n $config: config,\n ...context,\n }),\n );\n }\n await writeFileSync(\n path.resolve(outputPath, 'request.ts'),\n templates.core.request({\n $config: config,\n ...context,\n }),\n );\n\n if (config.name) {\n await writeFileSync(\n path.resolve(outputPath, 'BaseHttpRequest.ts'),\n templates.core.baseHttpRequest({\n $config: config,\n ...context,\n }),\n );\n await writeFileSync(\n path.resolve(outputPath, `${context.httpRequest}.ts`),\n templates.core.httpRequest({\n $config: config,\n ...context,\n }),\n );\n }\n\n if (config.request) {\n const requestFile = path.resolve(process.cwd(), config.request);\n const requestFileExists = await existsSync(requestFile);\n if (!requestFileExists) {\n throw new Error(`Custom request file \"${requestFile}\" does not exists`);\n }\n await copyFileSync(requestFile, path.resolve(outputPath, 'request.ts'));\n }\n }\n};\n","import { compiler } from '../compiler';\nimport type { Files } from '../types/utils';\nimport { getConfig } from '../utils/config';\nimport { TypeScriptFile } from './files';\n\nexport const generateIndexFile = ({ files }: { files: Files }): void => {\n const config = getConfig();\n\n files.index = new TypeScriptFile({\n dir: config.output.path,\n name: 'index.ts',\n });\n\n if (config.name) {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: config.name,\n module: `./${config.name}`,\n }),\n );\n }\n\n if (config.exportCore) {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: 'ApiError',\n module: './core/ApiError',\n }),\n );\n if (config.services.response === 'response') {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: { asType: true, name: 'ApiResult' },\n module: './core/ApiResult',\n }),\n );\n }\n if (config.name) {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: 'BaseHttpRequest',\n module: './core/BaseHttpRequest',\n }),\n );\n }\n if (config.client.name !== 'legacy/angular') {\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: ['CancelablePromise', 'CancelError'],\n module: './core/CancelablePromise',\n }),\n );\n }\n files.index.add(\n compiler.exportNamedDeclaration({\n exports: ['OpenAPI', { asType: true, name: 'OpenAPIConfig' }],\n module: './core/OpenAPI',\n }),\n );\n }\n\n Object.keys(files)\n .sort()\n .forEach((name) => {\n const file = files[name];\n\n if (name === 'index' || file.isEmpty()) {\n return;\n }\n\n files.index.add(\n compiler.exportAllDeclaration({\n module: `./${file.nameWithoutExtension()}`,\n }),\n );\n });\n};\n","import path from 'node:path';\n\nimport type { Client } from '../types/client';\nimport type { Files } from '../types/utils';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { TypeScriptFile } from './files';\n\nexport const generateLegacyPlugins = async ({\n client,\n files,\n}: {\n client: Client;\n files: Files;\n}) => {\n const config = getConfig();\n\n if (isLegacyClient(config)) {\n // plugins do not work with legacy clients\n return;\n }\n\n for (const plugin of config.plugins) {\n const outputParts = plugin.output.split('/');\n const outputDir = path.resolve(\n config.output.path,\n ...outputParts.slice(0, outputParts.length - 1),\n );\n files[plugin.name] = new TypeScriptFile({\n dir: outputDir,\n name: `${outputParts[outputParts.length - 1]}.ts`,\n });\n plugin.handlerLegacy({\n client,\n files,\n plugin: plugin as never,\n });\n }\n};\n","import { compiler } from '../compiler';\nimport type { OpenApi, OpenApiV2Schema, OpenApiV3Schema } from '../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport type { Files } from '../types/utils';\nimport { getConfig } from '../utils/config';\nimport { TypeScriptFile } from './files';\n\nconst ensureValidSchemaOutput = (\n schema: unknown,\n parentKey?: string,\n): object => {\n const config = getConfig();\n\n if (Array.isArray(schema)) {\n return schema.map((item) => ensureValidSchemaOutput(item));\n }\n\n if (typeof schema !== 'object' || schema === null) {\n return schema as object;\n }\n\n const result = { ...schema };\n Object.entries(result).forEach(([key, value]) => {\n if (config.schemas.type === 'form') {\n if (\n [\n 'description',\n 'x-enum-descriptions',\n 'x-enum-varnames',\n 'x-enumNames',\n 'title',\n ].includes(key) &&\n parentKey !== 'properties'\n ) {\n // @ts-expect-error\n delete result[key];\n return;\n }\n }\n\n // refs are encoded probably by json-schema-ref-parser, didn't investigate\n // further\n if (key === '$ref' && typeof value === 'string') {\n // @ts-expect-error\n result[key] = decodeURIComponent(value);\n }\n\n if (value && typeof value === 'object') {\n // @ts-expect-error\n result[key] = ensureValidSchemaOutput(value, key);\n }\n });\n return result;\n};\n\nconst toSchemaName = (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n): string => {\n const config = getConfig();\n\n const validName = ensureValidTypeScriptJavaScriptIdentifier(name);\n\n if (config.schemas.name) {\n return config.schemas.name(validName, schema);\n }\n\n return `${validName}Schema`;\n};\n\nexport const generateLegacySchemas = async ({\n files,\n openApi,\n}: {\n files: Files;\n openApi: OpenApi;\n}): Promise<void> => {\n const config = getConfig();\n\n if (!config.schemas.export) {\n return;\n }\n\n files.schemas = new TypeScriptFile({\n dir: config.output.path,\n name: 'schemas.ts',\n });\n\n const addSchema = (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n ) => {\n const obj = ensureValidSchemaOutput(schema);\n const expression = compiler.objectExpression({ obj });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression,\n name: toSchemaName(name, schema),\n });\n files.schemas.add(statement);\n };\n\n // OpenAPI 2.0\n if ('swagger' in openApi) {\n Object.entries(openApi.definitions ?? {}).forEach(([name, definition]) => {\n addSchema(name, definition);\n });\n }\n\n // OpenAPI 3.x\n if ('openapi' in openApi) {\n Object.entries(openApi.components?.schemas ?? {}).forEach(\n ([name, schema]) => {\n addSchema(name, schema);\n },\n );\n }\n};\n","import type { EnumDeclaration } from 'typescript';\n\nimport { type Comments, compiler, type Node } from '../compiler';\nimport { isOperationParameterRequired } from '../openApi';\nimport type {\n Client,\n Method,\n Model,\n OperationParameter,\n} from '../types/client';\nimport type { Files } from '../types/utils';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport { enumEntry, enumUnionType } from '../utils/enum';\nimport { escapeComment } from '../utils/escape';\nimport { sortByName, sorterByName } from '../utils/sort';\nimport {\n setUniqueTypeName,\n type SetUniqueTypeNameResult,\n toType,\n} from '../utils/type';\nimport { TypeScriptFile } from './files';\nimport {\n operationDataTypeName,\n operationErrorTypeName,\n operationResponseTypeName,\n} from './services';\n\nexport interface TypesProps {\n client: Client;\n model: Model;\n onNode: (node: Node) => void;\n onRemoveNode?: VoidFunction;\n}\n\nconst treeName = '$OpenApiTs';\n\nexport const emptyModel: Model = {\n $refs: [],\n base: '',\n description: null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n template: null,\n type: '',\n};\n\nconst generateEnum = ({\n leadingComment,\n comments,\n meta,\n obj,\n onNode,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.enumDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'>) => {\n // generate types only for top-level models\n if (!meta) {\n return;\n }\n\n const { created, name } = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (created) {\n const node = compiler.enumDeclaration({\n comments,\n leadingComment,\n name,\n obj,\n });\n onNode(node);\n }\n};\n\nexport const generateType = ({\n comment,\n meta,\n onCreated,\n onNode,\n type,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.typeAliasDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'> & {\n onCreated?: (name: string) => void;\n }): SetUniqueTypeNameResult => {\n // generate types only for top-level models\n if (!meta) {\n return {\n created: false,\n name: '',\n };\n }\n\n const result = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n const { created, name } = result;\n if (created) {\n const node = compiler.typeAliasDeclaration({\n comment,\n exportType: true,\n name,\n type,\n });\n onNode(node);\n\n onCreated?.(name);\n }\n return result;\n};\n\nconst processComposition = (props: TypesProps) => {\n const config = getConfig();\n\n const enumDeclarations = [] as EnumDeclaration[];\n\n processType(props);\n\n props.model.enums.forEach((enumerator) => {\n if (config.types.enums !== 'typescript+namespace') {\n return processEnum({\n ...props,\n model: enumerator,\n });\n }\n\n return processScopedEnum({\n ...props,\n model: enumerator,\n onNode: (node) => {\n enumDeclarations.push(node as EnumDeclaration);\n },\n });\n });\n\n if (enumDeclarations.length) {\n props.onNode(\n compiler.namespaceDeclaration({\n name: props.model.name,\n statements: enumDeclarations,\n }),\n );\n }\n};\n\nconst processEnum = ({ client, model, onNode }: TypesProps) => {\n const config = getConfig();\n\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n\n const comment = [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ];\n\n if (\n config.types.enums === 'typescript' ||\n config.types.enums === 'typescript+namespace'\n ) {\n generateEnum({\n client,\n comments,\n leadingComment: comment,\n meta: model.meta,\n obj: properties,\n onNode,\n });\n return;\n }\n\n generateType({\n client,\n comment,\n meta: model.meta,\n onCreated: (name) => {\n // create a separate JavaScript object export\n if (config.types.enums === 'javascript') {\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: Object.entries(properties).map(([key, value]) => ({\n comments: comments[key],\n key,\n value,\n })),\n unescape: true,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment,\n exportConst: true,\n expression,\n name,\n });\n onNode(node);\n }\n },\n onNode,\n type: enumUnionType(model.enum),\n });\n};\n\nconst processScopedEnum = ({ model, onNode }: TypesProps) => {\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n onNode(\n compiler.enumDeclaration({\n comments,\n leadingComment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n name: model.meta?.name || model.name,\n obj: properties,\n }),\n );\n};\n\nconst processType = ({ client, model, onNode }: TypesProps) => {\n generateType({\n client,\n comment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n meta: model.meta,\n onNode,\n type: toType(model),\n });\n};\n\nconst processModel = (props: TypesProps) => {\n switch (props.model.export) {\n case 'all-of':\n case 'any-of':\n case 'one-of':\n case 'interface':\n return processComposition(props);\n case 'enum':\n return processEnum(props);\n default:\n return processType(props);\n }\n};\n\ninterface MethodMap {\n $ref?: string;\n req?: OperationParameter[];\n res?: Record<number | string, Model>;\n}\n\ntype PathMap = {\n [method in Method]?: MethodMap;\n};\n\ntype PathsMap = Record<string, PathMap>;\n\nconst processServiceTypes = ({\n client,\n onNode,\n}: Pick<TypesProps, 'client' | 'onNode'>) => {\n const pathsMap: PathsMap = {};\n\n const config = getConfig();\n\n if (!config.services.export && !config.types.tree) {\n return;\n }\n\n const isLegacy = isLegacyClient(config);\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n if (!operation.parameters.length && !operation.responses.length) {\n continue;\n }\n\n if (!pathsMap[operation.path]) {\n pathsMap[operation.path] = {};\n }\n const pathMap = pathsMap[operation.path]!;\n\n if (!pathMap[operation.method]) {\n pathMap[operation.method] = {};\n }\n const methodMap = pathMap[operation.method]!;\n methodMap.$ref = operation.name;\n\n if (operation.responses.length > 0) {\n if (!methodMap.res) {\n methodMap.res = {};\n }\n\n if (Array.isArray(methodMap.res)) {\n continue;\n }\n\n operation.responses.forEach((response) => {\n methodMap.res![response.code] = response;\n });\n }\n\n if (operation.parameters.length > 0) {\n let bodyParameters: OperationParameter = {\n mediaType: null,\n ...emptyModel,\n in: 'body',\n name: 'body',\n prop: 'body',\n };\n let bodyParameter = operation.parameters.filter(\n (parameter) => parameter.in === 'body',\n );\n if (!bodyParameter.length) {\n bodyParameter = operation.parameters.filter(\n (parameter) => parameter.in === 'formData',\n );\n }\n\n if (bodyParameter.length === 1) {\n bodyParameters = {\n ...emptyModel,\n ...bodyParameter[0],\n in: 'body',\n isRequired: bodyParameter[0].isRequired,\n name: 'body',\n prop: 'body',\n };\n // assume we have multiple formData parameters from Swagger 2.0\n } else if (bodyParameter.length > 1) {\n bodyParameters = {\n ...emptyModel,\n in: 'body',\n isRequired: bodyParameter.some((parameter) => parameter.isRequired),\n mediaType: 'multipart/form-data',\n name: 'body',\n prop: 'body',\n properties: bodyParameter,\n };\n }\n\n const headerParameters: OperationParameter = {\n ...emptyModel,\n in: 'header',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter(\n (parameter) => parameter.in === 'header',\n ),\n ),\n mediaType: null,\n name: isLegacy ? 'header' : 'headers',\n prop: isLegacy ? 'header' : 'headers',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'header')\n .sort(sorterByName),\n };\n const pathParameters: OperationParameter = {\n ...emptyModel,\n in: 'path',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter((parameter) => parameter.in === 'path'),\n ),\n mediaType: null,\n name: 'path',\n prop: 'path',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'path')\n .sort(sorterByName),\n };\n const queryParameters: OperationParameter = {\n ...emptyModel,\n in: 'query',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter(\n (parameter) => parameter.in === 'query',\n ),\n ),\n mediaType: null,\n name: 'query',\n prop: 'query',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'query')\n .sort(sorterByName),\n };\n const operationProperties = !isLegacy\n ? [\n bodyParameters,\n headerParameters,\n pathParameters,\n queryParameters,\n ].filter(\n (param) =>\n param.properties.length ||\n param.$refs.length ||\n param.mediaType,\n )\n : sortByName([...operation.parameters]);\n\n methodMap.req = operationProperties;\n\n // create type export for operation data\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onNode,\n type: toType({\n ...emptyModel,\n isRequired: true,\n properties: operationProperties,\n }),\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n if (successResponses.length > 0) {\n // create type export for operation response\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onNode,\n type: toType({\n ...emptyModel,\n export: 'any-of',\n isRequired: true,\n properties: successResponses,\n }),\n });\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n\n if (!isLegacy) {\n // create type export for operation error\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onNode,\n type: toType(\n errorResponses.length\n ? {\n ...emptyModel,\n export: 'one-of',\n isRequired: true,\n properties: errorResponses,\n }\n : {\n ...emptyModel,\n base: 'unknown',\n isRequired: true,\n type: 'unknown',\n },\n ),\n });\n }\n }\n }\n }\n\n const properties = Object.entries(pathsMap).map(([path, pathMap]) => {\n const pathParameters = Object.entries(pathMap)\n .map(([_method, methodMap]) => {\n const method = _method as Method;\n\n let methodParameters: Model[] = [];\n\n if (methodMap.req) {\n const operationName = methodMap.$ref!;\n const { name: base } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operationName,\n name: operationName,\n },\n nameTransformer: operationDataTypeName,\n });\n const reqKey: Model = {\n ...emptyModel,\n base,\n export: 'reference',\n isRequired: true,\n name: 'req',\n properties: [],\n type: base,\n };\n methodParameters = [...methodParameters, reqKey];\n }\n\n if (methodMap.res) {\n const reqResParameters = Object.entries(methodMap.res).map(\n ([code, base]) => {\n // TODO: move query params into separate query key\n const value: Model = {\n ...emptyModel,\n ...base,\n isRequired: true,\n name: String(code),\n };\n return value;\n },\n );\n\n const resKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: 'res',\n properties: reqResParameters,\n };\n methodParameters = [...methodParameters, resKey];\n }\n\n const methodKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: method.toLocaleLowerCase(),\n properties: methodParameters,\n };\n return methodKey;\n })\n .filter(Boolean);\n const pathKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: `'${path}'`,\n properties: pathParameters as Model[],\n };\n return pathKey;\n });\n\n if (config.types.tree) {\n generateType({\n client,\n meta: {\n $ref: '@hey-api/openapi-ts',\n name: treeName,\n },\n onNode,\n type: toType({\n ...emptyModel,\n properties,\n }),\n });\n }\n};\n\nexport const generateLegacyTypes = async ({\n client,\n files,\n}: {\n client: Client;\n files: Files;\n}): Promise<void> => {\n const config = getConfig();\n\n if (config.types.export) {\n files.types = new TypeScriptFile({\n dir: config.output.path,\n name: 'types.ts',\n });\n }\n\n const onNode: TypesProps['onNode'] = (node) => {\n files.types?.add(node);\n };\n\n for (const model of client.models) {\n processModel({ client, model, onNode });\n }\n\n processServiceTypes({ client, onNode });\n};\n","import type ts from 'typescript';\n\nimport { compiler } from '../compiler';\nimport { getOperationKey } from '../openApi/common/parser/operation';\nimport type { ModelMeta, OperationResponse } from '../types/client';\nimport { getConfig } from '../utils/config';\nimport { isModelDate, unsetUniqueTypeName } from '../utils/type';\nimport {\n modelResponseTransformerTypeName,\n operationResponseTransformerTypeName,\n operationResponseTypeName,\n} from './services';\nimport { generateType, type TypesProps } from './types';\n\ninterface ModelProps extends TypesProps {\n meta?: ModelMeta;\n path: Array<string>;\n}\n\nconst dataVariableName = 'data';\n\nconst isVoidResponse = (response: OperationResponse) =>\n response.base === 'unknown' &&\n response.export === 'generic' &&\n response.type === 'unknown';\n\nconst getRefModels = ({\n client,\n model,\n}: Pick<TypesProps, 'client' | 'model'>) => {\n const refModels = model.$refs.map((ref) => {\n const refModel = client.models.find((model) => model.meta?.$ref === ref);\n if (!refModel) {\n throw new Error(\n `Ref ${ref} could not be found. Transformers cannot be generated without having access to all refs.`,\n );\n }\n return refModel;\n });\n return refModels;\n};\n\nconst ensureModelResponseTransformerExists = (\n props: Omit<ModelProps, 'path'>,\n) => {\n const modelName = props.model.meta!.name;\n\n const { name } = generateType({\n ...props,\n meta: {\n $ref: `transformers/${modelName}`,\n name: modelName,\n },\n nameTransformer: modelResponseTransformerTypeName,\n onCreated: (name) => {\n const statements = processModel({\n ...props,\n meta: {\n $ref: `transformers/${modelName}`,\n name,\n },\n path: [dataVariableName],\n });\n generateResponseTransformer({\n ...props,\n async: false,\n name,\n statements,\n });\n },\n type: `(${dataVariableName}: any) => ${modelName}`,\n });\n\n const result = {\n created: Boolean(props.client.types[name]),\n name,\n };\n return result;\n};\n\nconst processArray = (props: ModelProps) => {\n const { model } = props;\n const refModels = getRefModels(props);\n\n if (refModels.length === 1) {\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({ ...props, model: refModels[0] });\n\n if (!created) {\n return [];\n }\n\n return [\n compiler.transformArrayMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n }),\n ];\n }\n\n if (\n isModelDate(model) ||\n (model.link &&\n !Array.isArray(model.link) &&\n model.link.export === 'any-of' &&\n model.link.properties.find((property) => isModelDate(property)))\n ) {\n return [\n compiler.transformArrayMap({\n path: props.path,\n transformExpression: compiler.conditionalExpression({\n condition: compiler.identifier({ text: 'item' }),\n whenFalse: compiler.identifier({ text: 'item' }),\n whenTrue: compiler.transformNewDate({\n parameterName: 'item',\n }),\n }),\n }),\n ];\n }\n\n // Not transform for this type\n return [];\n};\n\nconst processProperty = (props: ModelProps) => {\n const { model } = props;\n const path = [...props.path, model.name];\n\n if (\n model.type === 'string' &&\n model.export !== 'array' &&\n isModelDate(model)\n ) {\n return [compiler.transformDateMutation({ path })];\n }\n\n // otherwise we recurse in case it's an object/array, and if it's not that will just bail with []\n return processModel({\n ...props,\n model,\n path,\n });\n};\n\nconst processModel = (props: ModelProps): ts.Statement[] => {\n const { model } = props;\n\n switch (model.export) {\n case 'array':\n return processArray(props);\n case 'interface':\n return model.properties.flatMap((property) =>\n processProperty({ ...props, model: property }),\n );\n case 'reference': {\n if (model.$refs.length !== 1) {\n return [];\n }\n const refModels = getRefModels(props);\n\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({ ...props, model: refModels[0] });\n\n if (!created) {\n return [];\n }\n\n return model.in === 'response'\n ? [\n compiler.expressionToStatement({\n expression: compiler.callExpression({\n functionName: nameModelResponseTransformer,\n parameters: [dataVariableName],\n }),\n }),\n ]\n : compiler.transformFunctionMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n });\n }\n // unsupported\n default:\n return [];\n }\n};\n\nconst generateResponseTransformer = ({\n async,\n client,\n name,\n onNode,\n onRemoveNode,\n statements,\n}: Pick<TypesProps, 'client' | 'onNode' | 'onRemoveNode'> & {\n async: boolean;\n name: string;\n statements: Array<ts.Statement>;\n}) => {\n const result = {\n created: false,\n name,\n };\n\n if (!statements.length) {\n // clean up created type for response transformer if it turns out\n // the transformer was never generated\n unsetUniqueTypeName({\n client,\n name,\n });\n onRemoveNode?.();\n return result;\n }\n\n const expression = compiler.arrowFunction({\n async,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n },\n ],\n statements: [\n ...statements,\n compiler.returnVariable({\n expression: dataVariableName,\n }),\n ],\n });\n const statement = compiler.constVariable({\n exportConst: true,\n expression,\n name,\n typeName: name,\n });\n onNode(statement);\n\n return {\n created: true,\n name,\n };\n};\n\n// handles only response transformers for now\nexport const generateLegacyTransformers = async ({\n client,\n onNode,\n onRemoveNode,\n}: Pick<TypesProps, 'client' | 'onNode' | 'onRemoveNode'>) => {\n const config = getConfig();\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n if (!successResponses.length) {\n continue;\n }\n\n const nonVoidResponses = successResponses.filter(\n (response) => !isVoidResponse(response),\n );\n\n if (!nonVoidResponses.length) {\n continue;\n }\n\n if (nonVoidResponses.length > 1) {\n if (config.debug) {\n console.warn(\n `❗️ Transformers warning: route ${getOperationKey(operation)} has ${nonVoidResponses.length} non-void success responses. This is currently not handled and we will not generate a response transformer. Please open an issue if you'd like this feature https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n continue;\n }\n\n const name = operationResponseTypeName(operation.name);\n generateType({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n nameTransformer: operationResponseTransformerTypeName,\n onCreated: (nameCreated) => {\n const statements =\n successResponses.length > 1\n ? successResponses.flatMap((response) => {\n const statements = processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: response,\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n\n // assume unprocessed responses are void\n if (!statements.length) {\n return [];\n }\n\n return [\n compiler.ifStatement({\n expression: compiler.safeAccessExpression(['data']),\n thenStatement: compiler.block({ statements }),\n }),\n ];\n })\n : processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: successResponses[0],\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n generateResponseTransformer({\n async: true,\n client,\n name: nameCreated,\n onNode,\n onRemoveNode,\n statements,\n });\n },\n onNode,\n type: `(${dataVariableName}: any) => Promise<${name}>`,\n });\n }\n }\n};\n","import path from 'node:path';\n\nimport type { IRContext } from '../ir/context';\nimport type { OpenApi } from '../openApi';\nimport { generateSchemas } from '../plugins/@hey-api/schemas/plugin';\nimport { generateServices } from '../plugins/@hey-api/services/plugin';\nimport { generateTransformers } from '../plugins/@hey-api/transformers/plugin';\nimport { generateTypes } from '../plugins/@hey-api/types/plugin';\nimport type { Client } from '../types/client';\nimport type { Files } from '../types/utils';\nimport { getConfig, isLegacyClient } from '../utils/config';\nimport type { Templates } from '../utils/handlebars';\nimport { generateLegacyClientClass } from './class';\nimport { generateClientBundle } from './client';\nimport { generateLegacyCore } from './core';\nimport { generateIndexFile } from './indexFile';\nimport { generateLegacyPlugins } from './plugins';\nimport { generateLegacySchemas } from './schemas';\nimport { generateLegacyServices } from './services';\nimport { generateLegacyTransformers } from './transformers';\nimport { generateLegacyTypes } from './types';\n\n/**\n * Write our OpenAPI client, using the given templates at the given output\n * @param openApi {@link OpenApi} Dereferenced OpenAPI specification\n * @param client Client containing models, schemas, and services\n * @param templates Templates wrapper with all loaded Handlebars templates\n */\nexport const generateLegacyOutput = async ({\n client,\n openApi,\n templates,\n}: {\n client: Client;\n openApi: OpenApi;\n templates: Templates;\n}): Promise<void> => {\n const config = getConfig();\n\n // TODO: parser - move to config.input\n if (client) {\n if (config.services.include && config.services.asClass) {\n const regexp = new RegExp(config.services.include);\n client.services = client.services.filter((service) =>\n regexp.test(service.name),\n );\n }\n\n if (config.types.include) {\n const regexp = new RegExp(config.types.include);\n client.models = client.models.filter((model) => regexp.test(model.name));\n }\n }\n\n const outputPath = path.resolve(config.output.path);\n\n const files: Files = {};\n\n if (!isLegacyClient(config) && config.client.bundle) {\n await generateClientBundle({ name: config.client.name, outputPath });\n }\n\n // types.gen.ts\n await generateLegacyTypes({ client, files });\n\n // schemas.gen.ts\n await generateLegacySchemas({ files, openApi });\n\n // transformers\n if (\n config.services.export &&\n client.services.length &&\n config.types.dates === 'types+transform'\n ) {\n await generateLegacyTransformers({\n client,\n onNode: (node) => {\n files.types?.add(node);\n },\n onRemoveNode: () => {\n files.types?.removeNode();\n },\n });\n }\n\n // services.gen.ts\n await generateLegacyServices({ client, files });\n\n // deprecated files\n await generateLegacyClientClass(openApi, outputPath, client, templates);\n await generateLegacyCore(\n path.resolve(config.output.path, 'core'),\n client,\n templates,\n );\n\n // TODO: parser - remove after moving types, services, transformers, and schemas into plugin\n // index.ts. Any files generated after this won't be included in exports\n // from the index file.\n generateIndexFile({ files });\n\n // plugins\n await generateLegacyPlugins({ client, files });\n\n Object.entries(files).forEach(([name, file]) => {\n if (config.dryRun) {\n return;\n }\n\n if (name === 'index') {\n file.write();\n } else {\n file.write('\\n\\n');\n }\n });\n};\n\nexport const generateOutput = async ({ context }: { context: IRContext }) => {\n const outputPath = path.resolve(context.config.output.path);\n\n if (context.config.client.bundle) {\n generateClientBundle({\n name: context.config.client.name,\n outputPath,\n });\n }\n\n // TODO: parser - move types, schemas, transformers, and services into plugins\n generateTypes({ context });\n generateSchemas({ context });\n generateTransformers({ context });\n generateServices({ context });\n\n // TODO: parser - remove index file after above is migrated to plugins\n generateIndexFile({ files: context.files });\n\n for (const plugin of context.config.plugins) {\n plugin.handler({\n context,\n plugin: plugin as never,\n });\n }\n\n Object.entries(context.files).forEach(([name, file]) => {\n if (context.config.dryRun) {\n return;\n }\n\n if (name === 'index') {\n file.write();\n } else {\n file.write('\\n\\n');\n }\n });\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n handlerLegacy: () => {},\n name: '@hey-api/schemas',\n output: 'schemas',\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n handlerLegacy: () => {},\n name: '@hey-api/services',\n output: 'services',\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n handlerLegacy: () => {},\n name: '@hey-api/transformers',\n output: 'transformers',\n};\n","import type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n handlerLegacy: () => {},\n name: '@hey-api/types',\n output: 'types',\n};\n","import ts from 'typescript';\n\nimport { compiler, type Property } from '../../../compiler';\nimport type { ImportExportItem } from '../../../compiler/module';\nimport {\n type ImportExportItemObject,\n tsNodeToString,\n} from '../../../compiler/utils';\nimport {\n clientModulePath,\n clientOptionsTypeName,\n} from '../../../generate/client';\nimport {\n operationOptionsType,\n serviceFunctionIdentifier,\n} from '../../../generate/services';\nimport type { IRContext } from '../../../ir/context';\nimport type {\n IROperationObject,\n IRPathItemObject,\n IRPathsObject,\n} from '../../../ir/ir';\nimport {\n hasOperationDataRequired,\n operationPagination,\n} from '../../../ir/operation';\nimport type { Files } from '../../../types/utils';\nimport { getConfig } from '../../../utils/config';\nimport { getServiceName } from '../../../utils/postprocess';\nimport { transformServiceName } from '../../../utils/transform';\nimport {\n operationDataRef,\n operationErrorRef,\n operationResponseRef,\n} from '../../@hey-api/services/plugin';\nimport { schemaToType } from '../../@hey-api/types/plugin';\nimport type { PluginHandler } from '../../types';\nimport type { PluginConfig as ReactQueryPluginConfig } from '../react-query';\nimport type { PluginConfig as SolidQueryPluginConfig } from '../solid-query';\nimport type { PluginConfig as SvelteQueryPluginConfig } from '../svelte-query';\nimport type { PluginConfig as VueQueryPluginConfig } from '../vue-query';\n\nconst infiniteQueryOptionsFunctionIdentifier = ({\n context,\n operation,\n}: {\n context: IRContext;\n operation: IROperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}InfiniteOptions`;\n\nconst mutationOptionsFunctionIdentifier = ({\n context,\n operation,\n}: {\n context: IRContext;\n operation: IROperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}Mutation`;\n\nconst queryOptionsFunctionIdentifier = ({\n context,\n operation,\n}: {\n context: IRContext;\n operation: IROperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}Options`;\n\nconst queryKeyFunctionIdentifier = ({\n context,\n operation,\n isInfinite,\n}: {\n context: IRContext;\n isInfinite?: boolean;\n operation: IROperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}${isInfinite ? 'Infinite' : ''}QueryKey`;\n\nconst createInfiniteParamsFn = 'createInfiniteParams';\nconst createQueryKeyFn = 'createQueryKey';\nconst infiniteQueryOptionsFn = 'infiniteQueryOptions';\nconst mutationOptionsFn = 'mutationOptions';\nconst queryKeyName = 'QueryKey';\nconst queryOptionsFn = 'queryOptions';\nconst TOptionsType = 'TOptions';\n\nconst getClientBaseUrlKey = () => {\n const config = getConfig();\n return config.client.name === '@hey-api/client-axios' ? 'baseURL' : 'baseUrl';\n};\n\nconst createInfiniteParamsFunction = ({\n file,\n}: {\n file: Files[keyof Files];\n}) => {\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeReferenceNode({ typeName: 'QueryKey<Options>' }),\n },\n {\n name: 'page',\n type: compiler.typeReferenceNode({ typeName: 'K' }),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].path',\n },\n {\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].query',\n },\n {\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: ts.factory.createAsExpression(\n ts.factory.createAsExpression(\n compiler.identifier({ text: 'params' }),\n ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n ),\n ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n ),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: \"Pick<QueryKey<Options>[0], 'body' | 'headers' | 'path' | 'query'>\",\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: createInfiniteParamsFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyFunction = ({ file }: { file: Files[keyof Files] }) => {\n const returnType = compiler.indexedAccessTypeNode({\n indexType: compiler.literalTypeNode({\n literal: compiler.ots.number(0),\n }),\n objectType: compiler.typeReferenceNode({\n typeArguments: [compiler.typeReferenceNode({ typeName: TOptionsType })],\n typeName: queryKeyName,\n }),\n });\n\n const infiniteIdentifier = compiler.identifier({ text: 'infinite' });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeReferenceNode({ typeName: 'string' }),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeReferenceNode({ typeName: TOptionsType }),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeReferenceNode({ typeName: 'boolean' }),\n },\n ],\n returnType,\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(),\n value: compiler.identifier({\n text: `(options?.client ?? client).getConfig().${getClientBaseUrlKey()}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: 'params',\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientOptionsTypeName(),\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: createQueryKeyFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyType = ({ file }: { file: Files[keyof Files] }) => {\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey()}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientOptionsTypeName(),\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nconst createQueryKeyLiteral = ({\n isInfinite,\n id,\n}: {\n id: string;\n isInfinite?: boolean;\n}) => {\n const queryKeyLiteral = compiler.arrayLiteralExpression({\n elements: [\n compiler.callExpression({\n functionName: createQueryKeyFn,\n parameters: [\n compiler.ots.string(id),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n }),\n ],\n multiLine: false,\n });\n return queryKeyLiteral;\n};\n\nconst checkPrerequisites = ({ context }: { context: IRContext }) => {\n if (!context.file({ id: 'services' })) {\n throw new Error(\n '🚫 services need to be exported to use TanStack Query plugin - enable service generation',\n );\n }\n};\n\ninterface Plugin {\n name: string;\n output: string;\n}\n\nconst useTypeData = ({\n context,\n operation,\n plugin,\n}: {\n context: IRContext;\n operation: IROperationObject;\n plugin: Plugin;\n}) => {\n const identifierData = context.file({ id: 'types' })!.identifier({\n $ref: operationDataRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierData.name) {\n context.file({ id: plugin.name })!.import({\n asType: true,\n module: context\n .file({ id: plugin.name })!\n .relativePathToFile({ context, id: 'types' }),\n name: identifierData.name,\n });\n }\n const typeData = operationOptionsType({\n importedType: identifierData.name,\n });\n return typeData;\n};\n\nconst useTypeError = ({\n context,\n operation,\n plugin,\n}: {\n context: IRContext;\n operation: IROperationObject;\n plugin: Plugin;\n}) => {\n const file = context.file({ id: plugin.name })!;\n const identifierError = context.file({ id: 'types' })!.identifier({\n $ref: operationErrorRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierError.name) {\n file.import({\n asType: true,\n module: context\n .file({ id: plugin.name })!\n .relativePathToFile({ context, id: 'types' }),\n name: identifierError.name,\n });\n }\n let typeError: ImportExportItemObject = {\n asType: true,\n name: identifierError.name || '',\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: plugin.name,\n name: 'DefaultError',\n });\n }\n if (context.config.client.name === '@hey-api/client-axios') {\n const axiosError = file.import({\n asType: true,\n module: 'axios',\n name: 'AxiosError',\n });\n typeError = {\n ...axiosError,\n name: `${axiosError.name}<${typeError.name}>`,\n };\n }\n return typeError;\n};\n\nconst useTypeResponse = ({\n context,\n operation,\n plugin,\n}: {\n context: IRContext;\n operation: IROperationObject;\n plugin: Plugin;\n}) => {\n const identifierResponse = context.file({ id: 'types' })!.identifier({\n $ref: operationResponseRef({ id: operation.id }),\n namespace: 'type',\n });\n if (identifierResponse.name) {\n context.file({ id: plugin.name })!.import({\n asType: true,\n module: context\n .file({ id: plugin.name })!\n .relativePathToFile({ context, id: 'types' }),\n name: identifierResponse.name,\n });\n }\n const typeResponse = identifierResponse.name || 'unknown';\n return typeResponse;\n};\n\nexport const handler: PluginHandler<\n | ReactQueryPluginConfig\n | SolidQueryPluginConfig\n | SvelteQueryPluginConfig\n | VueQueryPluginConfig\n> = ({ context, plugin }) => {\n checkPrerequisites({ context });\n\n const file = context.createFile({\n id: plugin.name,\n path: plugin.output,\n });\n\n file.import({\n asType: true,\n module: clientModulePath({\n config: context.config,\n sourceOutput: plugin.output,\n }),\n name: clientOptionsTypeName(),\n });\n\n const mutationsType =\n plugin.name === '@tanstack/svelte-query' ||\n plugin.name === '@tanstack/solid-query'\n ? 'MutationOptions'\n : 'UseMutationOptions';\n\n let typeInfiniteData!: ImportExportItem;\n let hasCreateInfiniteParamsFunction = false;\n let hasCreateQueryKeyParamsFunction = false;\n let hasInfiniteQueries = false;\n let hasMutations = false;\n let hasQueries = false;\n\n for (const path in context.ir.paths) {\n const pathItem = context.ir.paths[path as keyof IRPathsObject];\n\n for (const _method in pathItem) {\n const method = _method as keyof IRPathItemObject;\n const operation = pathItem[method]!;\n\n const queryFn = [\n context.config.services.asClass &&\n transformServiceName({\n config: context.config,\n name: getServiceName(operation.tags?.[0] || 'default'),\n }),\n serviceFunctionIdentifier({\n config: context.config,\n handleIllegal: !context.config.services.asClass,\n id: operation.id,\n operation,\n }),\n ]\n .filter(Boolean)\n .join('.');\n let hasUsedQueryFn = false;\n\n const isRequired = hasOperationDataRequired(operation);\n\n // queries\n if (\n plugin.queryOptions &&\n (['get', 'post'] as (typeof method)[]).includes(method)\n ) {\n if (!hasQueries) {\n hasQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: queryOptionsFn,\n });\n }\n\n hasUsedQueryFn = true;\n\n const typeData = useTypeData({ context, operation, plugin });\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: createQueryKeyLiteral({\n id: operation.id,\n }),\n }),\n name: queryKeyFunctionIdentifier({ context, operation }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: queryKeyFunctionIdentifier({\n context,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: queryOptionsFunctionIdentifier({ context, operation }),\n // TODO: add type error\n // TODO: AxiosError<PutSubmissionMetaError>\n });\n file.add(statement);\n }\n\n // infinite queries\n if (\n plugin.infiniteQueryOptions &&\n (['get', 'post'] as (typeof method)[]).includes(method)\n ) {\n const pagination = operationPagination(operation);\n\n if (pagination) {\n if (!hasInfiniteQueries) {\n hasInfiniteQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n if (!hasCreateInfiniteParamsFunction) {\n createInfiniteParamsFunction({ file });\n hasCreateInfiniteParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: infiniteQueryOptionsFn,\n });\n\n typeInfiniteData = file.import({\n asType: true,\n module: plugin.name,\n name: 'InfiniteData',\n });\n }\n\n hasUsedQueryFn = true;\n\n const typeData = useTypeData({ context, operation, plugin });\n const typeError = useTypeError({ context, operation, plugin });\n const typeResponse = useTypeResponse({ context, operation, plugin });\n\n const typeQueryKey = `${queryKeyName}<${typeData}>`;\n const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`;\n // TODO: parser - this is a bit clunky, need to compile type to string because\n // `compiler.returnFunctionCall()` accepts only strings, should be cleaned up\n const typePageParam = `${tsNodeToString({\n node: schemaToType({\n context,\n schema: pagination.schema,\n }),\n unescape: true,\n })} | ${typePageObjectParam}`;\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n returnType: typeQueryKey,\n statements: createQueryKeyLiteral({\n id: operation.id,\n isInfinite: true,\n }),\n }),\n name: queryKeyFunctionIdentifier({\n context,\n isInfinite: true,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.ots.string('object'),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.in,\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: 'createInfiniteParams',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: queryKeyFunctionIdentifier({\n context,\n isInfinite: true,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof typeInfiniteData === 'string' ? typeInfiniteData : typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: infiniteQueryOptionsFunctionIdentifier({\n context,\n operation,\n }),\n });\n file.add(statement);\n }\n }\n\n // mutations\n if (\n plugin.mutationOptions &&\n (['delete', 'patch', 'post', 'put'] as (typeof method)[]).includes(\n method,\n )\n ) {\n if (!hasMutations) {\n hasMutations = true;\n\n file.import({\n asType: true,\n module: plugin.name,\n name: mutationsType,\n });\n }\n\n hasUsedQueryFn = true;\n\n const typeData = useTypeData({ context, operation, plugin });\n const typeError = useTypeError({ context, operation, plugin });\n const typeResponse = useTypeResponse({ context, operation, plugin });\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n // TODO: better types syntax\n typeName: `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: mutationOptionsFunctionIdentifier({ context, operation }),\n });\n file.add(statement);\n }\n\n if (hasQueries || hasInfiniteQueries) {\n file.import({\n module: context\n .file({ id: plugin.name })!\n .relativePathToFile({ context, id: 'services' }),\n name: 'client',\n });\n }\n\n if (hasUsedQueryFn) {\n file.import({\n module: context\n .file({ id: plugin.name })!\n .relativePathToFile({ context, id: 'services' }),\n name: queryFn.split('.')[0],\n });\n }\n }\n }\n};\n","import ts from 'typescript';\n\nimport { compiler, type Property } from '../../../compiler';\nimport type { ImportExportItem } from '../../../compiler/module';\nimport type { ImportExportItemObject } from '../../../compiler/utils';\nimport {\n clientModulePath,\n clientOptionsTypeName,\n} from '../../../generate/client';\nimport {\n generateImport,\n operationDataTypeName,\n operationErrorTypeName,\n operationOptionsType,\n operationResponseTypeName,\n serviceFunctionIdentifier,\n} from '../../../generate/services';\nimport { relativeModulePath } from '../../../generate/utils';\nimport type { IROperationObject } from '../../../ir/ir';\nimport { paginationKeywordsRegExp } from '../../../ir/pagination';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport { getOperationKey } from '../../../openApi/common/parser/operation';\nimport type {\n Client,\n Method,\n Model,\n Operation,\n OperationParameter,\n} from '../../../types/client';\nimport type { Config } from '../../../types/config';\nimport type { Files } from '../../../types/utils';\nimport { getConfig } from '../../../utils/config';\nimport { transformServiceName } from '../../../utils/transform';\nimport type { PluginLegacyHandler } from '../../types';\nimport type { PluginConfig as ReactQueryPluginConfig } from '../react-query';\nimport type { PluginConfig as SolidQueryPluginConfig } from '../solid-query';\nimport type { PluginConfig as SvelteQueryPluginConfig } from '../svelte-query';\nimport type { PluginConfig as VueQueryPluginConfig } from '../vue-query';\n\nconst toInfiniteQueryOptionsName = (operation: Operation) =>\n `${serviceFunctionIdentifier({\n config: getConfig(),\n id: operation.name,\n operation,\n })}InfiniteOptions`;\n\nconst toMutationOptionsName = (operation: Operation) =>\n `${serviceFunctionIdentifier({\n config: getConfig(),\n id: operation.name,\n operation,\n })}Mutation`;\n\nconst toQueryOptionsName = ({\n config,\n id,\n operation,\n}: {\n config: Config;\n id: string;\n operation: IROperationObject | Operation;\n}) =>\n `${serviceFunctionIdentifier({\n config,\n id,\n operation,\n })}Options`;\n\nconst toQueryKeyName = ({\n config,\n id,\n operation,\n isInfinite,\n}: {\n config: Config;\n id: string;\n isInfinite?: boolean;\n operation: IROperationObject | Operation;\n}) =>\n `${serviceFunctionIdentifier({\n config,\n id,\n operation,\n })}${isInfinite ? 'Infinite' : ''}QueryKey`;\n\nconst checkPrerequisites = ({ files }: { files: Files }) => {\n if (!files.services) {\n throw new Error(\n '🚫 services need to be exported to use TanStack Query plugin - enable service generation',\n );\n }\n};\n\nconst getPaginationIn = (parameter: OperationParameter) => {\n switch (parameter.in) {\n case 'formData':\n return 'body';\n case 'header':\n return 'headers';\n default:\n return parameter.in;\n }\n};\n\nconst createInfiniteParamsFn = 'createInfiniteParams';\nconst createQueryKeyFn = 'createQueryKey';\nconst infiniteQueryOptionsFn = 'infiniteQueryOptions';\nconst mutationOptionsFn = 'mutationOptions';\nconst queryKeyName = 'QueryKey';\nconst queryOptionsFn = 'queryOptions';\nconst TOptionsType = 'TOptions';\n\nconst getClientBaseUrlKey = () => {\n const config = getConfig();\n return config.client.name === '@hey-api/client-axios' ? 'baseURL' : 'baseUrl';\n};\n\nconst createInfiniteParamsFunction = ({\n file,\n}: {\n file: Files[keyof Files];\n}) => {\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeNode('QueryKey<Options>'),\n },\n {\n name: 'page',\n type: compiler.typeNode('K'),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].path',\n },\n {\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].query',\n },\n {\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: ts.factory.createAsExpression(\n ts.factory.createAsExpression(\n compiler.identifier({ text: 'params' }),\n ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n ),\n ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n ),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: \"Pick<QueryKey<Options>[0], 'body' | 'headers' | 'path' | 'query'>\",\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: createInfiniteParamsFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyFunction = ({ file }: { file: Files[keyof Files] }) => {\n const returnType = compiler.indexedAccessTypeNode({\n indexType: compiler.typeNode(0),\n objectType: compiler.typeNode(queryKeyName, [\n compiler.typeNode(TOptionsType),\n ]),\n });\n\n const infiniteIdentifier = compiler.identifier({ text: 'infinite' });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeNode('string'),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeNode(TOptionsType),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeNode('boolean'),\n },\n ],\n returnType,\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(),\n value: compiler.identifier({\n text: `(options?.client ?? client).getConfig().${getClientBaseUrlKey()}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: 'params',\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientOptionsTypeName(),\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: createQueryKeyFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyType = ({ file }: { file: Files[keyof Files] }) => {\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey()}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientOptionsTypeName(),\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nconst createTypeData = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeData } = generateImport({\n client,\n meta: operation.parameters.length\n ? {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n }\n : undefined,\n nameTransformer: operationDataTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n const typeData = operationOptionsType({ importedType: nameTypeData });\n\n return { typeData };\n};\n\nconst createTypeError = ({\n client,\n file,\n operation,\n pluginName,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n pluginName: string;\n typesModulePath: string;\n}) => {\n const config = getConfig();\n\n const { name: nameTypeError } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n let typeError: ImportExportItemObject = {\n asType: true,\n name: nameTypeError,\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: pluginName,\n name: 'DefaultError',\n });\n }\n\n if (config.client.name === '@hey-api/client-axios') {\n const axiosError = file.import({\n asType: true,\n module: 'axios',\n name: 'AxiosError',\n });\n typeError = {\n ...axiosError,\n name: `${axiosError.name}<${typeError.name}>`,\n };\n }\n\n return { typeError };\n};\n\nconst createTypeResponse = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeResponse } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport: (imported) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name: imported,\n });\n },\n });\n\n const typeResponse = nameTypeResponse || 'void';\n\n return { typeResponse };\n};\n\nconst createQueryKeyLiteral = ({\n isInfinite,\n id,\n}: {\n id: string;\n isInfinite?: boolean;\n}) => {\n const queryKeyLiteral = compiler.arrayLiteralExpression({\n elements: [\n compiler.callExpression({\n functionName: createQueryKeyFn,\n parameters: [\n compiler.ots.string(id),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n }),\n ],\n multiLine: false,\n });\n return queryKeyLiteral;\n};\n\nexport const handlerLegacy: PluginLegacyHandler<\n | ReactQueryPluginConfig\n | SolidQueryPluginConfig\n | SvelteQueryPluginConfig\n | VueQueryPluginConfig\n> = ({ client, files, plugin }) => {\n checkPrerequisites({ files });\n\n const config = getConfig();\n const file = files[plugin.name];\n\n file.import({\n asType: true,\n module: clientModulePath({ config, sourceOutput: plugin.output }),\n name: clientOptionsTypeName(),\n });\n\n const typesModulePath = relativeModulePath({\n moduleOutput: files.types.nameWithoutExtension(),\n sourceOutput: plugin.output,\n });\n\n const mutationsType =\n plugin.name === '@tanstack/svelte-query' ||\n plugin.name === '@tanstack/solid-query'\n ? 'MutationOptions'\n : 'UseMutationOptions';\n\n let typeInfiniteData!: ImportExportItem;\n let hasCreateInfiniteParamsFunction = false;\n let hasCreateQueryKeyParamsFunction = false;\n let hasInfiniteQueries = false;\n let hasMutations = false;\n let hasQueries = false;\n\n const processedOperations = new Map<string, boolean>();\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n // track processed operations to avoid creating duplicates\n const operationKey = getOperationKey(operation);\n if (processedOperations.has(operationKey)) {\n continue;\n }\n processedOperations.set(operationKey, true);\n\n const queryFn = [\n config.services.asClass &&\n transformServiceName({\n config,\n name: service.name,\n }),\n serviceFunctionIdentifier({\n config,\n handleIllegal: !config.services.asClass,\n id: operation.name,\n operation,\n }),\n ]\n .filter(Boolean)\n .join('.');\n let hasUsedQueryFn = false;\n\n // queries\n if (\n plugin.queryOptions &&\n (['GET', 'POST'] as ReadonlyArray<Method>).includes(operation.method)\n ) {\n if (!hasQueries) {\n hasQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: queryOptionsFn,\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: createQueryKeyLiteral({\n id: operation.name,\n }),\n }),\n name: toQueryKeyName({\n config,\n id: operation.name,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName({\n config,\n id: operation.name,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: toQueryOptionsName({\n config,\n id: operation.name,\n operation,\n }),\n // TODO: add type error\n // TODO: AxiosError<PutSubmissionMetaError>\n });\n file.add(statement);\n }\n\n // infinite queries\n if (\n plugin.infiniteQueryOptions &&\n (['GET', 'POST'] as ReadonlyArray<Method>).includes(operation.method)\n ) {\n // the actual pagination field might be nested inside parameter, e.g. body\n let paginationField!: Model | OperationParameter;\n\n const paginationParameter = operation.parameters.find((parameter) => {\n paginationKeywordsRegExp.lastIndex = 0;\n if (paginationKeywordsRegExp.test(parameter.name)) {\n paginationField = parameter;\n return true;\n }\n\n if (parameter.in !== 'body') {\n return;\n }\n\n if (parameter.export === 'reference') {\n const ref = parameter.$refs[0];\n const refModel = client.models.find(\n (model) => model.meta?.$ref === ref,\n );\n return refModel?.properties.find((property) => {\n paginationKeywordsRegExp.lastIndex = 0;\n if (paginationKeywordsRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n });\n }\n\n return parameter.properties.find((property) => {\n paginationKeywordsRegExp.lastIndex = 0;\n if (paginationKeywordsRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n });\n });\n\n if (paginationParameter && paginationField) {\n if (!hasInfiniteQueries) {\n hasInfiniteQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n if (!hasCreateInfiniteParamsFunction) {\n createInfiniteParamsFunction({ file });\n hasCreateInfiniteParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: infiniteQueryOptionsFn,\n });\n\n typeInfiniteData = file.import({\n asType: true,\n module: plugin.name,\n name: 'InfiniteData',\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n const { typeError } = createTypeError({\n client,\n file,\n operation,\n pluginName: plugin.name,\n typesModulePath,\n });\n const { typeResponse } = createTypeResponse({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n const typeQueryKey = `${queryKeyName}<${typeData}>`;\n const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`;\n const typePageParam = `${paginationField.base} | ${typePageObjectParam}`;\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n returnType: typeQueryKey,\n statements: createQueryKeyLiteral({\n id: operation.name,\n isInfinite: true,\n }),\n }),\n name: toQueryKeyName({\n config,\n id: operation.name,\n isInfinite: true,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.ots.string('object'),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: getPaginationIn(\n paginationParameter,\n ),\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: paginationField.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: 'createInfiniteParams',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName({\n config,\n id: operation.name,\n isInfinite: true,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof typeInfiniteData === 'string' ? typeInfiniteData : typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: toInfiniteQueryOptionsName(operation),\n });\n file.add(statement);\n }\n }\n\n // mutations\n if (\n plugin.mutationOptions &&\n (['DELETE', 'PATCH', 'POST', 'PUT'] as ReadonlyArray<Method>).includes(\n operation.method,\n )\n ) {\n if (!hasMutations) {\n hasMutations = true;\n\n file.import({\n asType: true,\n module: plugin.name,\n name: mutationsType,\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n const { typeError } = createTypeError({\n client,\n file,\n operation,\n pluginName: plugin.name,\n typesModulePath,\n });\n const { typeResponse } = createTypeResponse({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n // TODO: better types syntax\n typeName: `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: toMutationOptionsName(operation),\n });\n file.add(statement);\n }\n\n const servicesModulePath = relativeModulePath({\n moduleOutput: files.services.nameWithoutExtension(),\n sourceOutput: plugin.output,\n });\n\n if (hasQueries || hasInfiniteQueries) {\n file.import({\n module: servicesModulePath,\n name: 'client',\n });\n }\n\n if (hasUsedQueryFn) {\n file.import({\n module: servicesModulePath,\n name: queryFn.split('.')[0],\n });\n }\n }\n }\n};\n","import { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/react-query',\n output: '@tanstack/react-query',\n queryOptions: true,\n};\n","import { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/solid-query',\n output: '@tanstack/solid-query',\n queryOptions: true,\n};\n","import { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/svelte-query',\n output: '@tanstack/svelte-query',\n queryOptions: true,\n};\n","import { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler,\n handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/vue-query',\n output: '@tanstack/vue-query',\n queryOptions: true,\n};\n","import { compiler } from '../../compiler';\nimport type { TypeScriptFile } from '../../generate/files';\nimport type { Client, Model } from '../../types/client';\nimport type { PluginLegacyHandler } from '../types';\nimport type { PluginConfig } from './types';\n\ninterface TypesProps {\n client: Client;\n file: TypeScriptFile;\n model: Model;\n onRemoveNode?: VoidFunction;\n}\n\nconst processArray = ({ file, model }: TypesProps) => {\n const identifier = file.identifier({\n $ref: model.meta?.$ref || '',\n create: true,\n namespace: 'value',\n });\n\n if (!identifier.created) {\n return;\n }\n\n const zArrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 'z',\n name: 'array',\n }),\n parameters: [\n compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 'z',\n name: model.base,\n }),\n }),\n ],\n });\n\n if (model.base === 'string' || model.base === 'boolean') {\n const statement = compiler.constVariable({\n exportConst: true,\n expression: zArrayExpression,\n name: identifier.name || '',\n });\n file.add(statement);\n return;\n }\n\n if (model.base === 'number') {\n let expression = zArrayExpression;\n\n if (model.minItems && model.maxItems && model.minItems === model.maxItems) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: 'length',\n }),\n parameters: [compiler.ots.number(model.minItems)],\n });\n } else {\n if (model.minItems) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: 'min',\n }),\n parameters: [compiler.ots.number(model.minItems)],\n });\n }\n\n if (model.maxItems) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: 'max',\n }),\n parameters: [compiler.ots.number(model.maxItems)],\n });\n }\n }\n\n const statement = compiler.constVariable({\n exportConst: true,\n expression,\n name: identifier.name || '',\n });\n file.add(statement);\n return;\n }\n\n // console.warn('array!', model.base, model.name)\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 'z',\n name: 'object',\n }),\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [],\n }),\n ],\n }),\n name: identifier.name || '',\n });\n file.add(statement);\n};\n\nconst processGeneric = ({ file, model }: TypesProps) => {\n const identifier = file.identifier({\n $ref: model.meta?.$ref || '',\n create: true,\n namespace: 'value',\n });\n\n if (!identifier.created) {\n return;\n }\n\n if (model.base === 'string') {\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 'z',\n name: 'string',\n }),\n }),\n name: identifier.name || '',\n });\n file.add(statement);\n return;\n }\n\n if (model.base === 'boolean') {\n // console.warn(model)\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 'z',\n name: 'boolean',\n }),\n }),\n name: identifier.name || '',\n });\n file.add(statement);\n return;\n }\n\n // console.warn(model.base)\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 'z',\n name: 'object',\n }),\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [],\n }),\n ],\n }),\n name: identifier.name || '',\n });\n file.add(statement);\n};\n\nconst processModel = (props: TypesProps) => {\n switch (props.model.export) {\n case 'all-of':\n case 'any-of':\n case 'one-of':\n case 'interface':\n // return processComposition(props);\n return;\n case 'array':\n return processArray(props);\n case 'enum':\n // return processEnum(props);\n return;\n default:\n return processGeneric(props);\n }\n};\n\nexport const handlerLegacy: PluginLegacyHandler<PluginConfig> = ({\n client,\n files,\n plugin,\n}) => {\n const file = files[plugin.name];\n\n file.import({\n module: 'zod',\n name: 'z',\n });\n\n for (const model of client.models) {\n processModel({\n client,\n file,\n model,\n });\n }\n};\n","import { handlerLegacy } from './plugin';\nimport type { PluginConfig } from './types';\n\nexport const defaultConfig: Required<PluginConfig> = {\n handler: () => {},\n handlerLegacy,\n name: 'zod',\n output: 'zod',\n};\n","import {\n defaultConfig as heyApiSchemasDefaultConfig,\n type PluginConfig as PluginHeyApiSchemas,\n} from './@hey-api/schemas';\nimport {\n defaultConfig as heyApiServicesDefaultConfig,\n type PluginConfig as PluginHeyApiServices,\n} from './@hey-api/services';\nimport {\n defaultConfig as heyApiTransformersDefaultConfig,\n type PluginConfig as PluginHeyApiTransformers,\n} from './@hey-api/transformers';\nimport {\n defaultConfig as heyApiTypesDefaultConfig,\n type PluginConfig as PluginHeyApiTypes,\n} from './@hey-api/types';\nimport {\n defaultConfig as tanStackReactQueryDefaultConfig,\n type PluginConfig as PluginTanStackReactQuery,\n type UserConfig as TanStackReactQuery,\n} from './@tanstack/react-query';\nimport {\n defaultConfig as tanStackSolidQueryDefaultConfig,\n type PluginConfig as PluginTanStackSolidQuery,\n type UserConfig as TanStackSolidQuery,\n} from './@tanstack/solid-query';\nimport {\n defaultConfig as tanStackSvelteQueryDefaultConfig,\n type PluginConfig as PluginTanStackSvelteQuery,\n type UserConfig as TanStackSvelteQuery,\n} from './@tanstack/svelte-query';\nimport {\n defaultConfig as tanStackVueQueryDefaultConfig,\n type PluginConfig as PluginTanStackVueQuery,\n type UserConfig as TanStackVueQuery,\n} from './@tanstack/vue-query';\nimport type { DefaultPluginConfigsMap } from './types';\nimport {\n defaultConfig as zodDefaultConfig,\n type PluginConfig as PluginZod,\n // type UserConfig as Zod,\n} from './zod';\n\n/**\n * User-facing plugin types.\n */\nexport type UserPlugins =\n | TanStackReactQuery\n | TanStackSolidQuery\n | TanStackSvelteQuery\n | TanStackVueQuery;\n// | Zod\n\nexport type ClientPlugins =\n | PluginHeyApiSchemas\n | PluginHeyApiServices\n | PluginHeyApiTransformers\n | PluginHeyApiTypes\n | PluginTanStackReactQuery\n | PluginTanStackSolidQuery\n | PluginTanStackSvelteQuery\n | PluginTanStackVueQuery\n | PluginZod;\n\nexport const defaultPluginConfigs: DefaultPluginConfigsMap<ClientPlugins> = {\n '@hey-api/schemas': heyApiSchemasDefaultConfig,\n '@hey-api/services': heyApiServicesDefaultConfig,\n '@hey-api/transformers': heyApiTransformersDefaultConfig,\n '@hey-api/types': heyApiTypesDefaultConfig,\n '@tanstack/react-query': tanStackReactQueryDefaultConfig,\n '@tanstack/solid-query': tanStackSolidQueryDefaultConfig,\n '@tanstack/svelte-query': tanStackSvelteQueryDefaultConfig,\n '@tanstack/vue-query': tanStackVueQueryDefaultConfig,\n zod: zodDefaultConfig,\n};\n","import type { IROperationObject } from '../ir/ir';\nimport type { OpenApiV2Schema, OpenApiV3Schema } from '../openApi';\nimport type { SchemaObject as OpenApiV3_1_0SchemaObject } from '../openApi/3.1.0/types/spec';\nimport type { ClientPlugins, UserPlugins } from '../plugins/';\nimport type { Operation } from '../types/client';\nimport type { ExtractArrayOfObjects } from './utils';\n\nexport const CLIENTS = [\n '@hey-api/client-axios',\n '@hey-api/client-fetch',\n 'legacy/angular',\n 'legacy/axios',\n 'legacy/fetch',\n 'legacy/node',\n 'legacy/xhr',\n] as const;\n\ntype Client = (typeof CLIENTS)[number];\n\nexport interface ClientConfig {\n /**\n * Manually set base in OpenAPI config instead of inferring from server value\n * @deprecated\n */\n base?: string;\n /**\n * HTTP client to generate\n */\n client?:\n | Client\n | false\n | {\n /**\n * Bundle the client module? Set this to true if you're using a client\n * package and don't want to declare it as a separate dependency.\n * When true, the client module will be generated from the client\n * package and bundled with the rest of the generated output. This is\n * useful if you're repackaging the output, publishing it to other users,\n * and you don't want them to install any dependencies.\n * @default false\n */\n bundle?: boolean;\n /**\n * HTTP client to generate\n */\n name: Client;\n };\n /**\n * Path to the config file. Set this value if you don't use the default\n * config file name, or it's not located in the project root.\n */\n configFile?: string;\n /**\n * Run in debug mode?\n * @default false\n */\n debug?: boolean;\n /**\n * Skip writing files to disk?\n * @default false\n */\n dryRun?: boolean;\n /**\n * Use the experimental parser?\n * @default false\n */\n experimental_parser?: boolean;\n /**\n * Generate core client classes?\n * @default true\n */\n exportCore?: boolean;\n /**\n * The relative location of the OpenAPI spec\n */\n input: string | Record<string, unknown>;\n /**\n * Custom client class name. Please note this option is deprecated and\n * will be removed in favor of clients.\n * @link https://heyapi.dev/openapi-ts/migrating.html#deprecated-name\n * @deprecated\n */\n name?: string;\n /**\n * The relative location of the output directory\n */\n output:\n | string\n | {\n /**\n * Process output folder with formatter?\n * @default false\n */\n format?: 'biome' | 'prettier' | false;\n /**\n * Process output folder with linter?\n * @default false\n */\n lint?: 'biome' | 'eslint' | false;\n /**\n * The relative location of the output directory\n */\n path: string;\n };\n /**\n * Plugins are used to generate additional output files from provided input.\n */\n plugins?: ReadonlyArray<UserPlugins['name'] | UserPlugins>;\n /**\n * Path to custom request file. Please note this option is deprecated and\n * will be removed in favor of clients.\n * @link https://heyapi.dev/openapi-ts/migrating.html#deprecated-request\n * @deprecated\n */\n request?: string;\n /**\n * Generate JSON schemas?\n * @default true\n */\n schemas?:\n | boolean\n | {\n /**\n * Generate JSON schemas?\n * @default true\n */\n export?: boolean;\n /**\n * Customise the schema name. By default, `{{name}}Schema` is used. `name` is a\n * valid JavaScript/TypeScript identifier, e.g. if your schema name is\n * \"Foo-Bar\", `name` value would be \"FooBar\".\n */\n name?: (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema | OpenApiV3_1_0SchemaObject,\n ) => string;\n /**\n * Choose schema type to generate. Select 'form' if you don't want\n * descriptions to reduce bundle size and you plan to use schemas\n * for form validation\n * @default 'json'\n */\n type?: 'form' | 'json';\n };\n /**\n * Generate services?\n * @default true\n */\n services?:\n | boolean\n | string\n | {\n /**\n * Group operation methods into service classes? When enabled, you can\n * select which classes to export with `services.include` and/or\n * transform their names with `services.name`.\n *\n * Note that by enabling this option, your services will **NOT**\n * support {@link https://developer.mozilla.org/docs/Glossary/Tree_shaking tree-shaking}.\n * For this reason, it is disabled by default.\n * @default false\n */\n asClass?: boolean;\n /**\n * Generate services?\n * @default true\n */\n export?: boolean;\n /**\n * Filter endpoints to be included in the generated services.\n * The provided string should be a regular expression where matched\n * results will be included in the output. The input pattern this\n * string will be tested against is `{method} {path}`. For example,\n * you can match `POST /api/v1/foo` with `^POST /api/v1/foo$`.\n */\n filter?: string;\n /**\n * Include only service classes with names matching regular expression\n *\n * This option has no effect if `services.asClass` is `false`.\n */\n include?: string;\n /**\n * Customise the name of methods within the service. By default, {@link IROperationObject.id} or {@link Operation.name} is used.\n */\n methodNameBuilder?: (\n operation: IROperationObject | Operation,\n ) => string;\n /**\n * Customize the generated service class names. The name variable is\n * obtained from your OpenAPI specification tags.\n *\n * This option has no effect if `services.asClass` is `false`.\n * @default '{{name}}Service'\n */\n name?: string;\n // TODO: parser - rename operationId option to something like inferId?: boolean\n /**\n * Use operation ID to generate operation names?\n * @default true\n */\n operationId?: boolean;\n /**\n * Define shape of returned value from service calls\n * @default 'body'\n * @deprecated\n */\n response?: 'body' | 'response';\n };\n /**\n * Generate types?\n * @default true\n */\n types?:\n | boolean\n | string\n | {\n /**\n * Output Date type and possibly runtime transform instead of string for format \"date-time\"\n * @default false\n */\n dates?: boolean | 'types+transform' | 'types';\n /**\n * Generate enum definitions?\n * @default false\n */\n enums?: 'javascript' | 'typescript' | 'typescript+namespace' | false;\n /**\n * Generate types?\n * @default true\n */\n export?: boolean;\n /**\n * Include only types matching regular expression\n */\n include?: string;\n /**\n * Use your preferred naming pattern\n * @default 'preserve'\n */\n name?: 'PascalCase' | 'preserve';\n /**\n * Generate a tree of types containing all operations? It will be named\n * $OpenApiTs and is generated by default only when not using services.\n */\n tree?: boolean;\n };\n /**\n * Use options or arguments functions. Please note this option is deprecated and\n * will be removed in favor of clients.\n * @link https://heyapi.dev/openapi-ts/migrating.html#deprecated-useoptions\n * @deprecated\n * @default true\n */\n useOptions?: boolean;\n}\n\nexport interface UserConfig extends ClientConfig {}\n\nexport type Config = Omit<\n Required<ClientConfig>,\n | 'base'\n | 'client'\n | 'name'\n | 'output'\n | 'plugins'\n | 'request'\n | 'schemas'\n | 'services'\n | 'types'\n> &\n Pick<ClientConfig, 'base' | 'name' | 'request'> & {\n client: Extract<Required<ClientConfig>['client'], object>;\n output: Extract<Required<ClientConfig>['output'], object>;\n plugins: ExtractArrayOfObjects<\n ReadonlyArray<ClientPlugins>,\n { name: string }\n >;\n schemas: Extract<Required<ClientConfig>['schemas'], object>;\n services: Extract<Required<ClientConfig>['services'], object>;\n types: Extract<Required<ClientConfig>['types'], object>;\n };\n","import { existsSync } from 'node:fs';\nimport path from 'node:path';\n\nimport $RefParser from '@apidevtools/json-schema-ref-parser';\n\nimport type { OpenApi } from '../openApi';\n\n/**\n * Load and parse te open api spec. If the file extension is \".yml\" or \".yaml\"\n * we will try to parse the file as a YAML spec, otherwise we will fall back\n * on parsing the file as JSON.\n * @param location: Path or url\n */\nexport const getOpenApiSpec = async (location: string) => {\n const absolutePathOrUrl = existsSync(location)\n ? path.resolve(location)\n : location;\n const schema = (await $RefParser.bundle(\n absolutePathOrUrl,\n absolutePathOrUrl,\n {},\n )) as OpenApi;\n return schema;\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import { NgModule} from '@angular/core';\\nimport { HttpClientModule } from '@angular/common/http';\\n\\nimport { AngularHttpRequest } from './core/AngularHttpRequest';\\nimport { BaseHttpRequest } from './core/BaseHttpRequest';\\nimport type { OpenAPIConfig } from './core/OpenAPI';\\nimport { OpenAPI } from './core/OpenAPI';\\nimport { Interceptors } from './core/OpenAPI';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = container.strict,\n alias2 = container.lambda;\n\n return (\n \"import type { BaseHttpRequest } from './core/BaseHttpRequest';\\nimport type { OpenAPIConfig } from './core/OpenAPI';\\nimport { Interceptors } from './core/OpenAPI';\\nimport { \" +\n ((stack1 = alias2(\n alias1(depth0, 'httpRequest', {\n start: { line: 14, column: 12 },\n end: { line: 14, column: 23 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \" } from './core/\" +\n ((stack1 = alias2(\n alias1(depth0, 'httpRequest', {\n start: { line: 14, column: 45 },\n end: { line: 14, column: 56 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"';\\n\"\n );\n },\n 5: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = lookupProperty(helpers, 'each').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(6, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 18, column: 0 }, end: { line: 20, column: 9 } },\n },\n )) != null\n ? stack1\n : '';\n },\n 6: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n 'import { ' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 19, column: 9 },\n end: { line: 19, column: 40 },\n },\n },\n )) != null\n ? stack1\n : '') +\n \" } from './services.gen';\\n\"\n );\n },\n 8: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = container.strict,\n alias2 = container.lambda,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"@NgModule({\\n\timports: [HttpClientModule],\\n\tproviders: [\\n\t\t{\\n\t\t\tprovide: OpenAPI,\\n\t\t\tuseValue: {\\n\t\t\t\tBASE: OpenAPI?.BASE ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'server', {\n start: { line: 30, column: 31 },\n end: { line: 30, column: 37 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\t\tVERSION: OpenAPI?.VERSION ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'version', {\n start: { line: 31, column: 37 },\n end: { line: 31, column: 44 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\t\tWITH_CREDENTIALS: OpenAPI?.WITH_CREDENTIALS ?? false,\\n\t\t\t\tCREDENTIALS: OpenAPI?.CREDENTIALS ?? 'include',\\n\t\t\t\tTOKEN: OpenAPI?.TOKEN,\\n\t\t\t\tUSERNAME: OpenAPI?.USERNAME,\\n\t\t\t\tPASSWORD: OpenAPI?.PASSWORD,\\n\t\t\t\tHEADERS: OpenAPI?.HEADERS,\\n\t\t\t\tENCODE_PATH: OpenAPI?.ENCODE_PATH,\\n\t\t\t\tinterceptors: {\\n\t\t\t\t\tresponse: OpenAPI?.interceptors?.response ?? new Interceptors(),\\n\t\t\t\t},\\n\t\t\t} as OpenAPIConfig,\\n\t\t},\\n\t\t{\\n\t\t\tprovide: BaseHttpRequest,\\n\t\t\tuseClass: AngularHttpRequest,\\n\t\t},\\n\" +\n ((stack1 = lookupProperty(helpers, 'each').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(9, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 48, column: 2 },\n end: { line: 50, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\t]\\n})\\nexport class ' +\n ((stack1 = alias2(\n alias1(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'name',\n { start: { line: 53, column: 16 }, end: { line: 53, column: 34 } },\n ),\n depth0,\n )) != null\n ? stack1\n : '') +\n ' {}\\n'\n );\n },\n 9: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n '\t\t' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 49, column: 2 },\n end: { line: 49, column: 33 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ',\\n'\n );\n },\n 11: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = container.strict,\n alias2 = container.lambda,\n alias3 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n 'type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;\\n\\nexport class ' +\n ((stack1 = alias2(\n alias1(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'name',\n { start: { line: 57, column: 16 }, end: { line: 57, column: 34 } },\n ),\n depth0,\n )) != null\n ? stack1\n : '') +\n ' {\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'each').call(\n alias3,\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(12, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 59, column: 1 },\n end: { line: 61, column: 10 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n\tpublic readonly request: BaseHttpRequest;\\n\\n\tconstructor(config?: Partial<OpenAPIConfig>, HttpRequest: HttpRequestConstructor = ' +\n ((stack1 = alias2(\n alias1(depth0, 'httpRequest', {\n start: { line: 65, column: 87 },\n end: { line: 65, column: 98 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \") {\\n\t\tthis.request = new HttpRequest({\\n\t\t\tBASE: config?.BASE ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'server', {\n start: { line: 67, column: 29 },\n end: { line: 67, column: 35 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\tVERSION: config?.VERSION ?? '\" +\n ((stack1 = alias2(\n alias1(depth0, 'version', {\n start: { line: 68, column: 35 },\n end: { line: 68, column: 42 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\t\t\tWITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,\\n\t\t\tCREDENTIALS: config?.CREDENTIALS ?? 'include',\\n\t\t\tTOKEN: config?.TOKEN,\\n\t\t\tUSERNAME: config?.USERNAME,\\n\t\t\tPASSWORD: config?.PASSWORD,\\n\t\t\tHEADERS: config?.HEADERS,\\n\t\t\tENCODE_PATH: config?.ENCODE_PATH,\\n\t\t\tinterceptors: {\\n\t\t\t\trequest: config?.interceptors?.request ?? new Interceptors(),\\n\t\t\t\tresponse: config?.interceptors?.response ?? new Interceptors(),\\n },\\n\t\t});\\n\\n\" +\n ((stack1 = lookupProperty(helpers, 'each').call(\n alias3,\n lookupProperty(depth0, 'services'),\n {\n name: 'each',\n hash: {},\n fn: container.program(14, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 82, column: 2 },\n end: { line: 84, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\t}\\n}\\n'\n );\n },\n 12: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n '\tpublic readonly ' +\n ((stack1 = lookupProperty(helpers, 'camelCase').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'camelCase',\n hash: {},\n data: data,\n loc: {\n start: { line: 60, column: 17 },\n end: { line: 60, column: 37 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ': ' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 60, column: 39 },\n end: { line: 60, column: 70 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ';\\n'\n );\n },\n 14: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n '\t\tthis.' +\n ((stack1 = lookupProperty(helpers, 'camelCase').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'camelCase',\n hash: {},\n data: data,\n loc: {\n start: { line: 83, column: 7 },\n end: { line: 83, column: 27 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ' = new ' +\n ((stack1 = lookupProperty(helpers, 'transformServiceName').call(\n alias1,\n lookupProperty(depth0, 'name'),\n {\n name: 'transformServiceName',\n hash: {},\n data: data,\n loc: {\n start: { line: 83, column: 34 },\n end: { line: 83, column: 65 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '(this.request);\\n'\n );\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 15, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'if').call(\n alias1,\n lookupProperty(depth0, 'services'),\n {\n name: 'if',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 17, column: 0 }, end: { line: 21, column: 7 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(8, data, 0),\n inverse: container.program(11, data, 0),\n data: data,\n loc: {\n start: { line: 23, column: 0 },\n end: { line: 87, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '')\n );\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Observable<HttpHeaders> => {\\n\treturn forkJoin({\\n\t\t// @ts-ignore\\n\t\ttoken: resolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tusername: resolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tpassword: resolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tadditionalHeaders: resolve(options, config.HEADERS),\\n\t}).pipe(\\n\t\tmap(({ token, username, password, additionalHeaders }) => {\\n\t\t\tconst headers = Object.entries({\\n\t\t\t\tAccept: 'application/json',\\n\t\t\t\t...additionalHeaders,\\n\t\t\t\t...options.headers,\\n\t\t\t})\\n\t\t\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t\t\t.reduce((headers, [key, value]) => ({\\n\t\t\t\t\t...headers,\\n\t\t\t\t\t[key]: String(value),\\n\t\t\t\t}), {} as Record<string, string>);\\n\\n\t\t\tif (isStringWithValue(token)) {\\n\t\t\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t\t\t}\\n\\n\t\t\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\t\t\tconst credentials = base64(`${username}:${password}`);\\n\t\t\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t\t\t}\\n\\n\t\t\tif (options.body !== undefined) {\\n\t\t\t\tif (options.mediaType) {\\n\t\t\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t\t\t} else if (isBlob(options.body)) {\\n\t\t\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t\t\t} else if (isString(options.body)) {\\n\t\t\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t\t\t} else if (!isFormData(options.body)) {\\n\t\t\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t\t\t}\\n\t\t\t}\\n\\n\t\t\treturn new HttpHeaders(headers);\\n\t\t}),\\n\t);\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body) {\\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\\n\t\t\treturn options.body;\\n\t\t} else {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseBody = <T>(response: HttpResponse<T>): T | undefined => {\\n\tif (response.status !== 204 && response.body !== null) {\\n\t\treturn response.body;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = <T>(response: HttpResponse<T>, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst value = response.headers.get(responseHeader);\\n\t\tif (isString(value)) {\\n\t\t\treturn value;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"import { HttpClient, HttpHeaders } from '@angular/common/http';\\nimport type { HttpResponse, HttpErrorResponse } from '@angular/common/http';\\nimport { forkJoin, of, throwError } from 'rxjs';\\nimport { catchError, map, switchMap } from 'rxjs/operators';\\nimport type { Observable } from 'rxjs';\\n\\nimport { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getHeaders'),\n depth0,\n {\n name: 'angular/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getRequestBody'),\n depth0,\n {\n name: 'angular/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/sendRequest'),\n depth0,\n {\n name: 'angular/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getResponseHeader'),\n depth0,\n {\n name: 'angular/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/getResponseBody'),\n depth0,\n {\n name: 'angular/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param http The Angular HTTP client\\n * @param options The request options from the service\\n * @returns Observable<T>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, http: HttpClient, options: ApiRequestOptions<T>): Observable<T> => {\\n\tconst url = getUrl(config, options);\\n\tconst formData = getFormData(options);\\n\tconst body = getRequestBody(options);\\n\\n\treturn getHeaders(config, options).pipe(\\n\t\tswitchMap(headers => {\\n\t\t\treturn sendRequest<T>(config, options, http, url, body, formData, headers);\\n\t\t}),\\n\t\tswitchMap(async response => {\\n\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\tresponse = await fn(response);\\n\t\t\t}\\n\t\t\tconst responseBody = getResponseBody(response);\\n\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\tlet transformedBody = responseBody;\\n\t\t\tif (options.responseTransformer && response.ok) {\\n\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t}\\n\\n\t\t\treturn {\\n\t\t\t\turl,\\n\t\t\t\tok: response.ok,\\n\t\t\t\tstatus: response.status,\\n\t\t\t\tstatusText: response.statusText,\\n\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t} as ApiResult;\\n\t\t}),\\n\t\tcatchError((error: HttpErrorResponse) => {\\n\t\t\tif (!error.status) {\\n\t\t\t\treturn throwError(() => error);\\n\t\t\t}\\n\t\t\treturn of({\\n\t\t\t\turl,\\n\t\t\t\tok: error.ok,\\n\t\t\t\tstatus: error.status,\\n\t\t\t\tstatusText: error.statusText,\\n\t\t\t\tbody: error.error ?? error.statusText,\\n\t\t\t} as ApiResult);\\n\t\t}),\\n\t\tmap(result => {\\n\t\t\tcatchErrorCodes(options, result);\\n\t\t\treturn result.body as T;\\n\t\t}),\\n\t\tcatchError((error: ApiError) => {\\n\t\t\treturn throwError(() => error);\\n\t\t}),\\n\t);\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const sendRequest = <T>(\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions<T>,\\n\thttp: HttpClient,\\n\turl: string,\\n\tbody: unknown,\\n\tformData: FormData | undefined,\\n\theaders: HttpHeaders\\n): Observable<HttpResponse<T>> => {\\n\treturn http.request<T>(options.method, url, {\\n\t\theaders,\\n\t\tbody: body ?? formData,\\n\t\twithCredentials: config.WITH_CREDENTIALS,\\n\t\tobserve: 'response',\\n\t});\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"import type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\n\\nexport class ApiError extends Error {\\n\tpublic readonly url: string;\\n\tpublic readonly status: number;\\n\tpublic readonly statusText: string;\\n\tpublic readonly body: unknown;\\n\tpublic readonly request: ApiRequestOptions;\\n\\n\tconstructor(request: ApiRequestOptions, response: ApiResult, message: string) {\\n\t\tsuper(message);\\n\\n\t\tthis.name = 'ApiError';\\n\t\tthis.url = response.url;\\n\t\tthis.status = response.status;\\n\t\tthis.statusText = response.statusText;\\n\t\tthis.body = response.body;\\n\t\tthis.request = request;\\n\t}\\n}\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export type ApiRequestOptions<T = unknown> = {\\n\treadonly body?: any;\\n\treadonly cookies?: Record<string, unknown>;\\n\treadonly errors?: Record<number | string, string>;\\n\treadonly formData?: Record<string, unknown> | any[] | Blob | File;\\n\treadonly headers?: Record<string, unknown>;\\n\treadonly mediaType?: string;\\n\treadonly method:\\n\t\t| 'DELETE'\\n\t\t| 'GET'\\n\t\t| 'HEAD'\\n\t\t| 'OPTIONS'\\n\t\t| 'PATCH'\\n\t\t| 'POST'\\n\t\t| 'PUT';\\n\treadonly path?: Record<string, unknown>;\\n\treadonly query?: Record<string, unknown>;\\n\treadonly responseHeader?: string;\\n\treadonly responseTransformer?: (data: unknown) => Promise<T>;\\n\treadonly url: string;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export type ApiResult<TData = any> = {\\n\treadonly body: TData;\\n\treadonly ok: boolean;\\n\treadonly status: number;\\n\treadonly statusText: string;\\n\treadonly url: string;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = async <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Promise<Record<string, string>> => {\\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.HEADERS),\\n\t]);\\n\\n\tconst headers = Object.entries({\\n\t\tAccept: 'application/json',\\n\t\t...additionalHeaders,\\n\t\t...options.headers,\\n\t})\\n\t.filter(([, value]) => value !== undefined && value !== null)\\n\t.reduce((headers, [key, value]) => ({\\n\t\t...headers,\\n\t\t[key]: String(value),\\n\t}), {} as Record<string, string>);\\n\\n\tif (isStringWithValue(token)) {\\n\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t}\\n\\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\tconst credentials = base64(`${username}:${password}`);\\n\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t}\\n\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t} else if (isBlob(options.body)) {\\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t} else if (isString(options.body)) {\\n\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t} else if (!isFormData(options.body)) {\\n\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t}\\n\t} else if (options.formData !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t}\\n\t}\\n\\n\treturn headers;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body) {\\n\t\treturn options.body;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseBody = (response: AxiosResponse<unknown>): unknown => {\\n\tif (response.status !== 204) {\\n\t\treturn response.data;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = (response: AxiosResponse<unknown>, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst content = response.headers[responseHeader];\\n\t\tif (isString(content)) {\\n\t\t\treturn content;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return 'ApiResult<T>';\n },\n 3: function (container, depth0, helpers, partials, data) {\n return 'T';\n },\n 5: function (container, depth0, helpers, partials, data) {\n return 'result.body';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return 'result';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"import axios from 'axios';\\nimport type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios';\\n\\nimport { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport { CancelablePromise } from './CancelablePromise';\\nimport type { OnCancel } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isSuccess'),\n depth0,\n {\n name: 'functions/isSuccess',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getHeaders'),\n depth0,\n {\n name: 'axios/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getRequestBody'),\n depth0,\n {\n name: 'axios/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/sendRequest'),\n depth0,\n {\n name: 'axios/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getResponseHeader'),\n depth0,\n {\n name: 'axios/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/getResponseBody'),\n depth0,\n {\n name: 'axios/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param options The request options from the service\\n * @param axiosClient The axios client instance to use\\n * @returns CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 64, column: 30 },\n end: { line: 64, column: 116 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>, axiosClient: AxiosInstance = axios): CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 67, column: 136 },\n end: { line: 67, column: 222 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '> => {\\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\\n\t\ttry {\\n\t\t\tconst url = getUrl(config, options);\\n\t\t\tconst formData = getFormData(options);\\n\t\t\tconst body = getRequestBody(options);\\n\t\t\tconst headers = await getHeaders(config, options);\\n\\n\t\t\tif (!onCancel.isCancelled) {\\n\t\t\t\tlet response = await sendRequest<T>(config, options, url, body, formData, headers, onCancel, axiosClient);\\n\\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\t\tresponse = await fn(response);\\n\t\t\t\t}\\n\\n\t\t\t\tconst responseBody = getResponseBody(response);\\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\t\tlet transformedBody = responseBody;\\n\t\t\t\tif (options.responseTransformer && isSuccess(response.status)) {\\n\t\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t\t}\\n\\n\t\t\t\tconst result: ApiResult = {\\n\t\t\t\t\turl,\\n\t\t\t\t\tok: isSuccess(response.status),\\n\t\t\t\t\tstatus: response.status,\\n\t\t\t\t\tstatusText: response.statusText,\\n\t\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t\t};\\n\\n\t\t\t\tcatchErrorCodes(options, result);\\n\\n\t\t\t\tresolve(' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'body',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.program(7, data, 0),\n data: data,\n loc: {\n start: { line: 100, column: 12 },\n end: { line: 100, column: 98 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ');\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\treject(error);\\n\t\t}\\n\t});\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const sendRequest = async <T>(\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions<T>,\\n\turl: string,\\n\tbody: unknown,\\n\tformData: FormData | undefined,\\n\theaders: Record<string, string>,\\n\tonCancel: OnCancel,\\n\taxiosClient: AxiosInstance\\n): Promise<AxiosResponse<T>> => {\\n\tconst controller = new AbortController();\\n\\n\tlet requestConfig: AxiosRequestConfig = {\\n\t\tdata: body ?? formData,\\n\t\theaders,\\n\t\tmethod: options.method,\\n\t\tsignal: controller.signal,\\n\t\turl,\\n\t\twithCredentials: config.WITH_CREDENTIALS,\\n\t};\\n\\n\tonCancel(() => controller.abort());\\n\\n\tfor (const fn of config.interceptors.request._fns) {\\n\t\trequestConfig = await fn(requestConfig);\\n\t}\\n\\n\ttry {\\n\t\treturn await axiosClient.request(requestConfig);\\n\t} catch (error) {\\n\t\tconst axiosError = error as AxiosError<T>;\\n\t\tif (axiosError.response) {\\n\t\t\treturn axiosError.response;\\n\t\t}\\n\t\tthrow error;\\n\t}\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import type { HttpClient } from '@angular/common/http';\\nimport type { Observable } from 'rxjs';\\n\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return \"import type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { CancelablePromise } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\";\n },\n 5: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(\\n\t\tpublic readonly config: OpenAPIConfig,\\n\t\tpublic readonly http: HttpClient,\\n\t) {}\\n';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(public readonly config: OpenAPIConfig) {}\\n';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return '\tpublic abstract request<T>(options: ApiRequestOptions<T>): Observable<T>;\\n';\n },\n 11: function (container, depth0, helpers, partials, data) {\n return '\tpublic abstract request<T>(options: ApiRequestOptions<T>): CancelablePromise<T>;\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 11, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\nexport abstract class BaseHttpRequest {\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.program(7, data, 0),\n data: data,\n loc: {\n start: { line: 15, column: 1 },\n end: { line: 22, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(9, data, 0),\n inverse: container.program(11, data, 0),\n data: data,\n loc: {\n start: { line: 24, column: 1 },\n end: { line: 28, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '}'\n );\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export class CancelError extends Error {\\n\tconstructor(message: string) {\\n\t\tsuper(message);\\n\t\tthis.name = 'CancelError';\\n\t}\\n\\n\tpublic get isCancelled(): boolean {\\n\t\treturn true;\\n\t}\\n}\\n\\nexport interface OnCancel {\\n\treadonly isResolved: boolean;\\n\treadonly isRejected: boolean;\\n\treadonly isCancelled: boolean;\\n\\n\t(cancelHandler: () => void): void;\\n}\\n\\nexport class CancelablePromise<T> implements Promise<T> {\\n\tprivate _isResolved: boolean;\\n\tprivate _isRejected: boolean;\\n\tprivate _isCancelled: boolean;\\n\treadonly cancelHandlers: (() => void)[];\\n\treadonly promise: Promise<T>;\\n\tprivate _resolve?: (value: T | PromiseLike<T>) => void;\\n\tprivate _reject?: (reason?: unknown) => void;\\n\\n\tconstructor(\\n\t\texecutor: (\\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\\n\t\t\treject: (reason?: unknown) => void,\\n\t\t\tonCancel: OnCancel\\n\t\t) => void\\n\t) {\\n\t\tthis._isResolved = false;\\n\t\tthis._isRejected = false;\\n\t\tthis._isCancelled = false;\\n\t\tthis.cancelHandlers = [];\\n\t\tthis.promise = new Promise<T>((resolve, reject) => {\\n\t\t\tthis._resolve = resolve;\\n\t\t\tthis._reject = reject;\\n\\n\t\t\tconst onResolve = (value: T | PromiseLike<T>): void => {\\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\t\t\treturn;\\n\t\t\t\t}\\n\t\t\t\tthis._isResolved = true;\\n\t\t\t\tif (this._resolve) this._resolve(value);\\n\t\t\t};\\n\\n\t\t\tconst onReject = (reason?: unknown): void => {\\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\t\t\treturn;\\n\t\t\t\t}\\n\t\t\t\tthis._isRejected = true;\\n\t\t\t\tif (this._reject) this._reject(reason);\\n\t\t\t};\\n\\n\t\t\tconst onCancel = (cancelHandler: () => void): void => {\\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\t\t\treturn;\\n\t\t\t\t}\\n\t\t\t\tthis.cancelHandlers.push(cancelHandler);\\n\t\t\t};\\n\\n\t\t\tObject.defineProperty(onCancel, 'isResolved', {\\n\t\t\t\tget: (): boolean => this._isResolved,\\n\t\t\t});\\n\\n\t\t\tObject.defineProperty(onCancel, 'isRejected', {\\n\t\t\t\tget: (): boolean => this._isRejected,\\n\t\t\t});\\n\\n\t\t\tObject.defineProperty(onCancel, 'isCancelled', {\\n\t\t\t\tget: (): boolean => this._isCancelled,\\n\t\t\t});\\n\\n\t\t\treturn executor(onResolve, onReject, onCancel as OnCancel);\\n\t\t});\\n\t}\\n\\n\tget [Symbol.toStringTag]() {\\n\t\treturn \\\"Cancellable Promise\\\";\\n\t}\\n\\n\tpublic then<TResult1 = T, TResult2 = never>(\\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null\\n\t): Promise<TResult1 | TResult2> {\\n\t\treturn this.promise.then(onFulfilled, onRejected);\\n\t}\\n\\n\tpublic catch<TResult = never>(\\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike<TResult>) | null\\n\t): Promise<T | TResult> {\\n\t\treturn this.promise.catch(onRejected);\\n\t}\\n\\n\tpublic finally(onFinally?: (() => void) | null): Promise<T> {\\n\t\treturn this.promise.finally(onFinally);\\n\t}\\n\\n\tpublic cancel(): void {\\n\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\\n\t\t\treturn;\\n\t\t}\\n\t\tthis._isCancelled = true;\\n\t\tif (this.cancelHandlers.length) {\\n\t\t\ttry {\\n\t\t\t\tfor (const cancelHandler of this.cancelHandlers) {\\n\t\t\t\t\tcancelHandler();\\n\t\t\t\t}\\n\t\t\t} catch (error) {\\n\t\t\t\tconsole.warn('Cancellation threw an error', error);\\n\t\t\t\treturn;\\n\t\t\t}\\n\t\t}\\n\t\tthis.cancelHandlers.length = 0;\\n\t\tif (this._reject) this._reject(new CancelError('Request aborted'));\\n\t}\\n\\n\tpublic get isCancelled(): boolean {\\n\t\treturn this._isCancelled;\\n\t}\\n}\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = async <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Promise<Headers> => {\\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.HEADERS),\\n\t]);\\n\\n\tconst headers = Object.entries({\\n\t\tAccept: 'application/json',\\n\t\t...additionalHeaders,\\n\t\t...options.headers,\\n\t})\\n\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t.reduce((headers, [key, value]) => ({\\n\t\t\t...headers,\\n\t\t\t[key]: String(value),\\n\t\t}), {} as Record<string, string>);\\n\\n\tif (isStringWithValue(token)) {\\n\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t}\\n\\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\tconst credentials = base64(`${username}:${password}`);\\n\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t}\\n\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t} else if (isBlob(options.body)) {\\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t} else if (isString(options.body)) {\\n\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t} else if (!isFormData(options.body)) {\\n\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t}\\n\t}\\n\\n\treturn new Headers(headers);\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\\n\t\t\treturn options.body;\\n\t\t} else {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getResponseBody = async (response: Response): Promise<unknown> => {\\n\tif (response.status !== 204) {\\n\t\ttry {\\n\t\t\tconst contentType = response.headers.get('Content-Type');\\n\t\t\tif (contentType) {\\n\t\t\t\tconst binaryTypes = ['application/octet-stream', 'application/pdf', 'application/zip', 'audio/', 'image/', 'video/'];\\n\t\t\t\tif (contentType.includes('application/json') || contentType.includes('+json')) {\\n\t\t\t\t\treturn await response.json();\\n\t\t\t\t} else if (binaryTypes.some(type => contentType.includes(type))) {\\n\t\t\t\t\treturn await response.blob();\\n\t\t\t\t} else if (contentType.includes('multipart/form-data')) {\\n\t\t\t\t\treturn await response.formData();\\n\t\t\t\t} else if (contentType.includes('text/')) {\\n\t\t\t\t\treturn await response.text();\\n\t\t\t\t}\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\tconsole.error(error);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst content = response.headers.get(responseHeader);\\n\t\tif (isString(content)) {\\n\t\t\treturn content;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import fetch, { FormData, Headers } from 'node-fetch';\\nimport type { RequestInit, Response } from 'node-fetch';\\n\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return 'ApiResult<T>';\n },\n 5: function (container, depth0, helpers, partials, data) {\n return 'T';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return 'result.body';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return 'result';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 5, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n \"import { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport { CancelablePromise } from './CancelablePromise';\\nimport type { OnCancel } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getHeaders'),\n depth0,\n {\n name: 'fetch/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getRequestBody'),\n depth0,\n {\n name: 'fetch/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/sendRequest'),\n depth0,\n {\n name: 'fetch/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getResponseHeader'),\n depth0,\n {\n name: 'fetch/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getResponseBody'),\n depth0,\n {\n name: 'fetch/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param options The request options from the service\\n * @returns CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.program(5, data, 0),\n data: data,\n loc: {\n start: { line: 62, column: 30 },\n end: { line: 62, column: 116 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.program(5, data, 0),\n data: data,\n loc: {\n start: { line: 65, column: 100 },\n end: { line: 65, column: 186 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '> => {\\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\\n\t\ttry {\\n\t\t\tconst url = getUrl(config, options);\\n\t\t\tconst formData = getFormData(options);\\n\t\t\tconst body = getRequestBody(options);\\n\t\t\tconst headers = await getHeaders(config, options);\\n\\n\t\t\tif (!onCancel.isCancelled) {\\n\t\t\t\tlet response = await sendRequest(config, options, url, body, formData, headers, onCancel);\\n\\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\t\tresponse = await fn(response);\\n\t\t\t\t}\\n\\n\t\t\t\tconst responseBody = await getResponseBody(response);\\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\t\tlet transformedBody = responseBody;\\n\t\t\t\tif (options.responseTransformer && response.ok) {\\n\t\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t\t}\\n\\n\t\t\t\tconst result: ApiResult = {\\n\t\t\t\t\turl,\\n\t\t\t\t\tok: response.ok,\\n\t\t\t\t\tstatus: response.status,\\n\t\t\t\t\tstatusText: response.statusText,\\n\t\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t\t};\\n\\n\t\t\t\tcatchErrorCodes(options, result);\\n\\n\t\t\t\tresolve(' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'body',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.program(9, data, 0),\n data: data,\n loc: {\n start: { line: 98, column: 12 },\n end: { line: 98, column: 98 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ');\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\treject(error);\\n\t\t}\\n\t});\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return '\tif (config.WITH_CREDENTIALS) {\\n\t\trequest.credentials = config.CREDENTIALS;\\n\t}\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n 'export const sendRequest = async (\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions,\\n\turl: string,\\n\tbody: any,\\n\tformData: FormData | undefined,\\n\theaders: Headers,\\n\tonCancel: OnCancel\\n): Promise<Response> => {\\n\tconst controller = new AbortController();\\n\\n\tlet request: RequestInit = {\\n\t\theaders,\\n\t\tbody: body ?? formData,\\n\t\tmethod: options.method,\\n\t\tsignal: controller.signal,\\n\t};\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/fetch',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 19, column: 1 },\n end: { line: 23, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n\tfor (const fn of config.interceptors.request._fns) {\\n\t\trequest = await fn(request);\\n\t}\\n\\n\tonCancel(() => controller.abort());\\n\\n\treturn await fetch(url, request);\\n};'\n );\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const base64 = (str: string): string => {\\n\ttry {\\n\t\treturn btoa(str);\\n\t} catch (err) {\\n\t\t// @ts-ignore\\n\t\treturn Buffer.from(str).toString('base64');\\n\t}\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\\n\tconst errors: Record<number, string> = {\\n\t\t400: 'Bad Request',\\n\t\t401: 'Unauthorized',\\n\t\t402: 'Payment Required',\\n\t\t403: 'Forbidden',\\n\t\t404: 'Not Found',\\n\t\t405: 'Method Not Allowed',\\n\t\t406: 'Not Acceptable',\\n\t\t407: 'Proxy Authentication Required',\\n\t\t408: 'Request Timeout',\\n\t\t409: 'Conflict',\\n\t\t410: 'Gone',\\n\t\t411: 'Length Required',\\n\t\t412: 'Precondition Failed',\\n\t\t413: 'Payload Too Large',\\n\t\t414: 'URI Too Long',\\n\t\t415: 'Unsupported Media Type',\\n\t\t416: 'Range Not Satisfiable',\\n\t\t417: 'Expectation Failed',\\n\t\t418: 'Im a teapot',\\n\t\t421: 'Misdirected Request',\\n\t\t422: 'Unprocessable Content',\\n\t\t423: 'Locked',\\n\t\t424: 'Failed Dependency',\\n\t\t425: 'Too Early',\\n\t\t426: 'Upgrade Required',\\n\t\t428: 'Precondition Required',\\n\t\t429: 'Too Many Requests',\\n\t\t431: 'Request Header Fields Too Large',\\n\t\t451: 'Unavailable For Legal Reasons',\\n\t\t500: 'Internal Server Error',\\n\t\t501: 'Not Implemented',\\n\t\t502: 'Bad Gateway',\\n\t\t503: 'Service Unavailable',\\n\t\t504: 'Gateway Timeout',\\n\t\t505: 'HTTP Version Not Supported',\\n\t\t506: 'Variant Also Negotiates',\\n\t\t507: 'Insufficient Storage',\\n\t\t508: 'Loop Detected',\\n\t\t510: 'Not Extended',\\n\t\t511: 'Network Authentication Required',\\n\t\t...options.errors,\\n\t}\\n\\n\tconst error = errors[result.status];\\n\tif (error) {\\n\t\tthrow new ApiError(options, result, error);\\n\t}\\n\\n\tif (!result.ok) {\\n\t\tconst errorStatus = result.status ?? 'unknown';\\n\t\tconst errorStatusText = result.statusText ?? 'unknown';\\n\t\tconst errorBody = (() => {\\n\t\t\ttry {\\n\t\t\t\treturn JSON.stringify(result.body, null, 2);\\n\t\t\t} catch (e) {\\n\t\t\t\treturn undefined;\\n\t\t\t}\\n\t\t})();\\n\\n\t\tthrow new ApiError(options, result,\\n\t\t\t`Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\\n\t\t);\\n\t}\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getFormData = (options: ApiRequestOptions): FormData | undefined => {\\n\tif (options.formData) {\\n\t\tconst formData = new FormData();\\n\\n\t\tconst process = (key: string, value: unknown) => {\\n\t\t\tif (isString(value) || isBlob(value)) {\\n\t\t\t\tformData.append(key, value);\\n\t\t\t} else {\\n\t\t\t\tformData.append(key, JSON.stringify(value));\\n\t\t\t}\\n\t\t};\\n\\n\t\tObject.entries(options.formData)\\n\t\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t\t.forEach(([key, value]) => {\\n\t\t\t\tif (Array.isArray(value)) {\\n\t\t\t\t\tvalue.forEach(v => process(key, v));\\n\t\t\t\t} else {\\n\t\t\t\t\tprocess(key, value);\\n\t\t\t\t}\\n\t\t\t});\\n\\n\t\treturn formData;\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getQueryString = (params: Record<string, unknown>): string => {\\n\tconst qs: string[] = [];\\n\\n\tconst append = (key: string, value: unknown) => {\\n\t\tqs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\\n\t};\\n\\n\tconst encodePair = (key: string, value: unknown) => {\\n\t\tif (value === undefined || value === null) {\\n\t\t\treturn;\\n\t\t}\\n\\n\t\tif (value instanceof Date) {\\n\t\t\tappend(key, value.toISOString());\\n\t\t} else if (Array.isArray(value)) {\\n\t\t\tvalue.forEach(v => encodePair(key, v));\\n\t\t} else if (typeof value === 'object') {\\n\t\t\tObject.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v));\\n\t\t} else {\\n\t\t\tappend(key, value);\\n\t\t}\\n\t};\\n\\n\tObject.entries(params).forEach(([key, value]) => encodePair(key, value));\\n\\n\treturn qs.length ? `?${qs.join('&')}` : '';\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"const getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\\n\tconst encoder = config.ENCODE_PATH || encodeURI;\\n\\n\tconst path = options.url\\n\t\t.replace('{api-version}', config.VERSION)\\n\t\t.replace(/{(.*?)}/g, (substring: string, group: string) => {\\n\t\t\tif (options.path?.hasOwnProperty(group)) {\\n\t\t\t\treturn encoder(String(options.path[group]));\\n\t\t\t}\\n\t\t\treturn substring;\\n\t\t});\\n\\n\tconst url = config.BASE + path;\\n\treturn options.query ? url + getQueryString(options.query) : url;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const isBlob = (value: any): value is Blob => {\\n\treturn value instanceof Blob;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const isFormData = (value: unknown): value is FormData => {\\n\treturn value instanceof FormData;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const isString = (value: unknown): value is string => {\\n\treturn typeof value === 'string';\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const isStringWithValue = (value: unknown): value is string => {\\n\treturn isString(value) && value !== '';\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const isSuccess = (status: number): boolean => {\\n\treturn status >= 200 && status < 300;\\n};';\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"type Resolver<T> = (options: ApiRequestOptions<T>) => Promise<T>;\\n\\nexport const resolve = async <T>(options: ApiRequestOptions<T>, resolver?: T | Resolver<T>): Promise<T | undefined> => {\\n\tif (typeof resolver === 'function') {\\n\t\treturn (resolver as Resolver<T>)(options);\\n\t}\\n\treturn resolver;\\n};\";\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import { Inject, Injectable } from '@angular/core';\\nimport { HttpClient } from '@angular/common/http';\\nimport type { Observable } from 'rxjs';\\n\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport { BaseHttpRequest } from './BaseHttpRequest';\\nimport type { OpenAPIConfig } from './OpenAPI';\\nimport { OpenAPI } from './OpenAPI';\\nimport { request as __request } from './request';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return \"import type { ApiRequestOptions } from './ApiRequestOptions';\\nimport { BaseHttpRequest } from './BaseHttpRequest';\\nimport type { CancelablePromise } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\nimport { request as __request } from './request';\\n\";\n },\n 5: function (container, depth0, helpers, partials, data) {\n return '@Injectable()\\n';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(\\n\t\t@Inject(OpenAPI)\\n\t\tconfig: OpenAPIConfig,\\n\t\thttp: HttpClient,\\n\t) {\\n\t\tsuper(config, http);\\n\t}\\n';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return '\tconstructor(config: OpenAPIConfig) {\\n\t\tsuper(config);\\n\t}\\n';\n },\n 11: function (container, depth0, helpers, partials, data) {\n return '\t/**\\n\t * Request method\\n\t * @param options The request options from the service\\n\t * @returns Observable<T>\\n\t * @throws ApiError\\n\t */\\n\tpublic override request<T>(options: ApiRequestOptions<T>): Observable<T> {\\n\t\treturn __request(this.config, this.http, options);\\n\t}\\n';\n },\n 13: function (container, depth0, helpers, partials, data) {\n return '\t/**\\n\t * Request method\\n\t * @param options The request options from the service\\n\t * @returns CancelablePromise<T>\\n\t * @throws ApiError\\n\t */\\n\tpublic override request<T>(options: ApiRequestOptions<T>): CancelablePromise<T> {\\n\t\treturn __request(this.config, options);\\n\t}\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 17, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 19, column: 0 },\n end: { line: 21, column: 11 },\n },\n },\n )) != null\n ? stack1\n : '') +\n 'export class ' +\n ((stack1 = container.lambda(\n container.strict(depth0, 'httpRequest', {\n start: { line: 22, column: 15 },\n end: { line: 22, column: 26 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n ' extends BaseHttpRequest {\\n\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.program(9, data, 0),\n data: data,\n loc: {\n start: { line: 24, column: 1 },\n end: { line: 36, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\\n' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(11, data, 0),\n inverse: container.program(13, data, 0),\n data: data,\n loc: {\n start: { line: 38, column: 1 },\n end: { line: 58, column: 12 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '}'\n );\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return \"import type { HttpResponse } from '@angular/common/http';\\n\";\n },\n 3: function (container, depth0, helpers, partials, data) {\n return \"import type { AxiosRequestConfig, AxiosResponse } from 'axios';\\n\";\n },\n 5: function (container, depth0, helpers, partials, data) {\n return \"import type { RequestInit, Response } from 'node-fetch';\\n\";\n },\n 7: function (container, depth0, helpers, partials, data) {\n return '\t\tresponse: Interceptors<HttpResponse<any>>;\\n';\n },\n 9: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: Interceptors<AxiosRequestConfig>;\\n\t\tresponse: Interceptors<AxiosResponse>;\\n';\n },\n 11: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: Interceptors<RequestInit>;\\n\t\tresponse: Interceptors<Response>;\\n';\n },\n 13: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: Interceptors<XMLHttpRequest>;\\n\t\tresponse: Interceptors<XMLHttpRequest>;\\n';\n },\n 15: function (container, depth0, helpers, partials, data) {\n return '\t\trequest: new Interceptors(),\\n';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = container.strict,\n alias3 = container.lambda,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 3, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/axios',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 4, column: 0 }, end: { line: 6, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 7, column: 0 }, end: { line: 9, column: 11 } },\n },\n )) != null\n ? stack1\n : '') +\n \"import type { ApiRequestOptions } from './ApiRequestOptions';\\n\\ntype Headers = Record<string, string>;\\ntype Middleware<T> = (value: T) => T | Promise<T>;\\ntype Resolver<T> = (options: ApiRequestOptions<T>) => Promise<T>;\\n\\nexport class Interceptors<T> {\\n _fns: Middleware<T>[];\\n\\n constructor() {\\n this._fns = [];\\n }\\n\\n eject(fn: Middleware<T>): void {\\n const index = this._fns.indexOf(fn);\\n if (index !== -1) {\\n this._fns = [...this._fns.slice(0, index), ...this._fns.slice(index + 1)];\\n }\\n }\\n\\n use(fn: Middleware<T>): void {\\n this._fns = [...this._fns, fn];\\n }\\n}\\n\\nexport type OpenAPIConfig = {\\n\tBASE: string;\\n\tCREDENTIALS: 'include' | 'omit' | 'same-origin';\\n\tENCODE_PATH?: ((path: string) => string) | undefined;\\n\tHEADERS?: Headers | Resolver<Headers> | undefined;\\n\tPASSWORD?: string | Resolver<string> | undefined;\\n\tTOKEN?: string | Resolver<string> | undefined;\\n\tUSERNAME?: string | Resolver<string> | undefined;\\n\tVERSION: string;\\n\tWITH_CREDENTIALS: boolean;\\n\tinterceptors: {\\n\" +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 46, column: 2 },\n end: { line: 48, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/axios',\n {\n name: 'equals',\n hash: {},\n fn: container.program(9, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 49, column: 2 },\n end: { line: 52, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/fetch',\n {\n name: 'equals',\n hash: {},\n fn: container.program(11, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 53, column: 2 },\n end: { line: 56, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(11, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 57, column: 2 },\n end: { line: 60, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/xhr',\n {\n name: 'equals',\n hash: {},\n fn: container.program(13, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 61, column: 2 },\n end: { line: 64, column: 13 },\n },\n },\n )) != null\n ? stack1\n : '') +\n \"\t};\\n};\\n\\nexport const OpenAPI: OpenAPIConfig = {\\n\tBASE: '\" +\n ((stack1 = alias3(\n alias2(depth0, 'server', {\n start: { line: 69, column: 11 },\n end: { line: 69, column: 17 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\tCREDENTIALS: 'include',\\n\tENCODE_PATH: undefined,\\n\tHEADERS: undefined,\\n\tPASSWORD: undefined,\\n\tTOKEN: undefined,\\n\tUSERNAME: undefined,\\n\tVERSION: '\" +\n ((stack1 = alias3(\n alias2(depth0, 'version', {\n start: { line: 76, column: 14 },\n end: { line: 76, column: 21 },\n }),\n depth0,\n )) != null\n ? stack1\n : '') +\n \"',\\n\tWITH_CREDENTIALS: false,\\n\tinterceptors: {\\n\" +\n ((stack1 = lookupProperty(helpers, 'notEquals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'notEquals',\n hash: {},\n fn: container.program(15, data, 0),\n inverse: container.noop,\n data: data,\n loc: {\n start: { line: 79, column: 2 },\n end: { line: 81, column: 16 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '\t\tresponse: new Interceptors(),\\n\t},\\n};'\n );\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'angular/request'),\n depth0,\n {\n name: 'angular/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n 3: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'axios/request'),\n depth0,\n {\n name: 'axios/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n 5: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/request'),\n depth0,\n {\n name: 'fetch/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n 7: function (container, depth0, helpers, partials, data) {\n var stack1,\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/request'),\n depth0,\n {\n name: 'xhr/request',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/angular',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 1, column: 0 }, end: { line: 1, column: 87 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/axios',\n {\n name: 'equals',\n hash: {},\n fn: container.program(3, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 2, column: 0 }, end: { line: 2, column: 83 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/fetch',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 3, column: 0 }, end: { line: 3, column: 83 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/node',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 4, column: 0 }, end: { line: 4, column: 82 } },\n },\n )) != null\n ? stack1\n : '') +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'client',\n ),\n 'name',\n ),\n 'legacy/xhr',\n {\n name: 'equals',\n hash: {},\n fn: container.program(7, data, 0),\n inverse: container.noop,\n data: data,\n loc: { start: { line: 5, column: 0 }, end: { line: 5, column: 79 } },\n },\n )) != null\n ? stack1\n : '')\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getHeaders = async <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): Promise<Headers> => {\\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.TOKEN),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.USERNAME),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.PASSWORD),\\n\t\t// @ts-ignore\\n\t\tresolve(options, config.HEADERS),\\n\t]);\\n\\n\tconst headers = Object.entries({\\n\t\tAccept: 'application/json',\\n\t\t...additionalHeaders,\\n\t\t...options.headers,\\n\t})\\n\t\t.filter(([, value]) => value !== undefined && value !== null)\\n\t\t.reduce((headers, [key, value]) => ({\\n\t\t\t...headers,\\n\t\t\t[key]: String(value),\\n\t\t}), {} as Record<string, string>);\\n\\n\tif (isStringWithValue(token)) {\\n\t\theaders['Authorization'] = `Bearer ${token}`;\\n\t}\\n\\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\\n\t\tconst credentials = base64(`${username}:${password}`);\\n\t\theaders['Authorization'] = `Basic ${credentials}`;\\n\t}\\n\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType) {\\n\t\t\theaders['Content-Type'] = options.mediaType;\\n\t\t} else if (isBlob(options.body)) {\\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\\n\t\t} else if (isString(options.body)) {\\n\t\t\theaders['Content-Type'] = 'text/plain';\\n\t\t} else if (!isFormData(options.body)) {\\n\t\t\theaders['Content-Type'] = 'application/json';\\n\t\t}\\n\t}\\n\\n\treturn new Headers(headers);\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getRequestBody = (options: ApiRequestOptions): unknown => {\\n\tif (options.body !== undefined) {\\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\\n\t\t\treturn options.body;\\n\t\t} else {\\n\t\t\treturn JSON.stringify(options.body);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const getResponseBody = (xhr: XMLHttpRequest): unknown => {\\n\tif (xhr.status !== 204) {\\n\t\ttry {\\n\t\t\tconst contentType = xhr.getResponseHeader('Content-Type');\\n\t\t\tif (contentType) {\\n\t\t\t\tif (contentType.includes('application/json') || contentType.includes('+json')) {\\n\t\t\t\t\treturn JSON.parse(xhr.responseText);\\n\t\t\t\t} else {\\n\t\t\t\t\treturn xhr.responseText;\\n\t\t\t\t}\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\tconsole.error(error);\\n\t\t}\\n\t}\\n\treturn undefined;\\n};\";\n },\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return 'export const getResponseHeader = (xhr: XMLHttpRequest, responseHeader?: string): string | undefined => {\\n\tif (responseHeader) {\\n\t\tconst content = xhr.getResponseHeader(responseHeader);\\n\t\tif (isString(content)) {\\n\t\t\treturn content;\\n\t\t}\\n\t}\\n\treturn undefined;\\n};';\n },\n useData: true,\n};\n","export default {\n 1: function (container, depth0, helpers, partials, data) {\n return 'ApiResult<T>';\n },\n 3: function (container, depth0, helpers, partials, data) {\n return 'T';\n },\n 5: function (container, depth0, helpers, partials, data) {\n return 'result.body';\n },\n 7: function (container, depth0, helpers, partials, data) {\n return 'result';\n },\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n lookupProperty =\n container.lookupProperty ||\n function (parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined;\n };\n\n return (\n \"import { ApiError } from './ApiError';\\nimport type { ApiRequestOptions } from './ApiRequestOptions';\\nimport type { ApiResult } from './ApiResult';\\nimport { CancelablePromise } from './CancelablePromise';\\nimport type { OnCancel } from './CancelablePromise';\\nimport type { OpenAPIConfig } from './OpenAPI';\\n\\n\" +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isString'),\n depth0,\n {\n name: 'functions/isString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isStringWithValue'),\n depth0,\n {\n name: 'functions/isStringWithValue',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isBlob'),\n depth0,\n {\n name: 'functions/isBlob',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isFormData'),\n depth0,\n {\n name: 'functions/isFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/isSuccess'),\n depth0,\n {\n name: 'functions/isSuccess',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/base64'),\n depth0,\n {\n name: 'functions/base64',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getQueryString'),\n depth0,\n {\n name: 'functions/getQueryString',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getUrl'),\n depth0,\n {\n name: 'functions/getUrl',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/getFormData'),\n depth0,\n {\n name: 'functions/getFormData',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/resolve'),\n depth0,\n {\n name: 'functions/resolve',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'fetch/getHeaders'),\n depth0,\n {\n name: 'fetch/getHeaders',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/getRequestBody'),\n depth0,\n {\n name: 'xhr/getRequestBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/sendRequest'),\n depth0,\n {\n name: 'xhr/sendRequest',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/getResponseHeader'),\n depth0,\n {\n name: 'xhr/getResponseHeader',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'xhr/getResponseBody'),\n depth0,\n {\n name: 'xhr/getResponseBody',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n' +\n ((stack1 = container.invokePartial(\n lookupProperty(partials, 'functions/catchErrorCodes'),\n depth0,\n {\n name: 'functions/catchErrorCodes',\n data: data,\n helpers: helpers,\n partials: partials,\n decorators: container.decorators,\n },\n )) != null\n ? stack1\n : '') +\n '\\n\\n/**\\n * Request method\\n * @param config The OpenAPI configuration object\\n * @param options The request options from the service\\n * @returns CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 60, column: 30 },\n end: { line: 60, column: 116 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '>\\n * @throws ApiError\\n */\\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions<T>): CancelablePromise<' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'response',\n {\n name: 'equals',\n hash: {},\n fn: container.program(1, data, 0),\n inverse: container.program(3, data, 0),\n data: data,\n loc: {\n start: { line: 63, column: 100 },\n end: { line: 63, column: 186 },\n },\n },\n )) != null\n ? stack1\n : '') +\n '> => {\\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\\n\t\ttry {\\n\t\t\tconst url = getUrl(config, options);\\n\t\t\tconst formData = getFormData(options);\\n\t\t\tconst body = getRequestBody(options);\\n\t\t\tconst headers = await getHeaders(config, options);\\n\\n\t\t\tif (!onCancel.isCancelled) {\\n\t\t\t\tlet response = await sendRequest(config, options, url, body, formData, headers, onCancel);\\n\\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\\n\t\t\t\t\tresponse = await fn(response);\\n\t\t\t\t}\\n\\n\t\t\t\tconst responseBody = getResponseBody(response);\\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\\n\\n\t\t\t\tlet transformedBody = responseBody;\\n\t\t\t\tif (options.responseTransformer && isSuccess(response.status)) {\\n\t\t\t\t\ttransformedBody = await options.responseTransformer(responseBody)\\n\t\t\t\t}\\n\\n\t\t\t\tconst result: ApiResult = {\\n\t\t\t\t\turl,\\n\t\t\t\t\tok: isSuccess(response.status),\\n\t\t\t\t\tstatus: response.status,\\n\t\t\t\t\tstatusText: response.statusText,\\n\t\t\t\t\tbody: responseHeader ?? transformedBody,\\n\t\t\t\t};\\n\\n\t\t\t\tcatchErrorCodes(options, result);\\n\\n\t\t\t\tresolve(' +\n ((stack1 = lookupProperty(helpers, 'equals').call(\n alias1,\n lookupProperty(\n lookupProperty(\n lookupProperty(lookupProperty(data, 'root'), '$config'),\n 'services',\n ),\n 'response',\n ),\n 'body',\n {\n name: 'equals',\n hash: {},\n fn: container.program(5, data, 0),\n inverse: container.program(7, data, 0),\n data: data,\n loc: {\n start: { line: 96, column: 12 },\n end: { line: 96, column: 98 },\n },\n },\n )) != null\n ? stack1\n : '') +\n ');\\n\t\t\t}\\n\t\t} catch (error) {\\n\t\t\treject(error);\\n\t\t}\\n\t});\\n};'\n );\n },\n usePartial: true,\n useData: true,\n};\n","export default {\n compiler: [8, '>= 4.3.0'],\n main: function (container, depth0, helpers, partials, data) {\n return \"export const sendRequest = async (\\n\tconfig: OpenAPIConfig,\\n\toptions: ApiRequestOptions,\\n\turl: string,\\n\tbody: any,\\n\tformData: FormData | undefined,\\n\theaders: Headers,\\n\tonCancel: OnCancel\\n): Promise<XMLHttpRequest> => {\\n\tlet xhr = new XMLHttpRequest();\\n\txhr.open(options.method, url, true);\\n\txhr.withCredentials = config.WITH_CREDENTIALS;\\n\\n\theaders.forEach((value, key) => {\\n\t\txhr.setRequestHeader(key, value);\\n\t});\\n\\n\treturn new Promise<XMLHttpRequest>(async (resolve, reject) => {\\n\t\txhr.onload = () => resolve(xhr);\\n\t\txhr.onabort = () => reject(new Error('Request aborted'));\\n\t\txhr.onerror = () => reject(new Error('Network error'));\\n\\n\t\tfor (const fn of config.interceptors.request._fns) {\\n\t\t\txhr = await fn(xhr);\\n\t\t}\\n\\n\t\txhr.send(body ?? formData);\\n\\n\t\tonCancel(() => xhr.abort());\\n\t});\\n};\";\n },\n useData: true,\n};\n","import Handlebars from 'handlebars';\n\n// @ts-ignore\nimport templateClient from '../legacy/handlebars/compiled/client.js';\n// @ts-ignore\nimport angularGetHeaders from '../legacy/handlebars/compiled/core/angular/getHeaders.js';\n// @ts-ignore\nimport angularGetRequestBody from '../legacy/handlebars/compiled/core/angular/getRequestBody.js';\n// @ts-ignore\nimport angularGetResponseBody from '../legacy/handlebars/compiled/core/angular/getResponseBody.js';\n// @ts-ignore\nimport angularGetResponseHeader from '../legacy/handlebars/compiled/core/angular/getResponseHeader.js';\n// @ts-ignore\nimport angularRequest from '../legacy/handlebars/compiled/core/angular/request.js';\n// @ts-ignore\nimport angularSendRequest from '../legacy/handlebars/compiled/core/angular/sendRequest.js';\n// @ts-ignore\nimport templateCoreApiError from '../legacy/handlebars/compiled/core/ApiError.js';\n// @ts-ignore\nimport templateCoreApiRequestOptions from '../legacy/handlebars/compiled/core/ApiRequestOptions.js';\n// @ts-ignore\nimport templateCoreApiResult from '../legacy/handlebars/compiled/core/ApiResult.js';\n// @ts-ignore\nimport axiosGetHeaders from '../legacy/handlebars/compiled/core/axios/getHeaders.js';\n// @ts-ignore\nimport axiosGetRequestBody from '../legacy/handlebars/compiled/core/axios/getRequestBody.js';\n// @ts-ignore\nimport axiosGetResponseBody from '../legacy/handlebars/compiled/core/axios/getResponseBody.js';\n// @ts-ignore\nimport axiosGetResponseHeader from '../legacy/handlebars/compiled/core/axios/getResponseHeader.js';\n// @ts-ignore\nimport axiosRequest from '../legacy/handlebars/compiled/core/axios/request.js';\n// @ts-ignore\nimport axiosSendRequest from '../legacy/handlebars/compiled/core/axios/sendRequest.js';\n// @ts-ignore\nimport templateCoreBaseHttpRequest from '../legacy/handlebars/compiled/core/BaseHttpRequest.js';\n// @ts-ignore\nimport templateCancelablePromise from '../legacy/handlebars/compiled/core/CancelablePromise.js';\n// @ts-ignore\nimport fetchGetHeaders from '../legacy/handlebars/compiled/core/fetch/getHeaders.js';\n// @ts-ignore\nimport fetchGetRequestBody from '../legacy/handlebars/compiled/core/fetch/getRequestBody.js';\n// @ts-ignore\nimport fetchGetResponseBody from '../legacy/handlebars/compiled/core/fetch/getResponseBody.js';\n// @ts-ignore\nimport fetchGetResponseHeader from '../legacy/handlebars/compiled/core/fetch/getResponseHeader.js';\n// @ts-ignore\nimport fetchRequest from '../legacy/handlebars/compiled/core/fetch/request.js';\n// @ts-ignore\nimport fetchSendRequest from '../legacy/handlebars/compiled/core/fetch/sendRequest.js';\n// @ts-ignore\nimport functionBase64 from '../legacy/handlebars/compiled/core/functions/base64.js';\n// @ts-ignore\nimport functionCatchErrorCodes from '../legacy/handlebars/compiled/core/functions/catchErrorCodes.js';\n// @ts-ignore\nimport functionGetFormData from '../legacy/handlebars/compiled/core/functions/getFormData.js';\n// @ts-ignore\nimport functionGetQueryString from '../legacy/handlebars/compiled/core/functions/getQueryString.js';\n// @ts-ignore\nimport functionGetUrl from '../legacy/handlebars/compiled/core/functions/getUrl.js';\n// @ts-ignore\nimport functionIsBlob from '../legacy/handlebars/compiled/core/functions/isBlob.js';\n// @ts-ignore\nimport functionIsFormData from '../legacy/handlebars/compiled/core/functions/isFormData.js';\n// @ts-ignore\nimport functionIsString from '../legacy/handlebars/compiled/core/functions/isString.js';\n// @ts-ignore\nimport functionIsStringWithValue from '../legacy/handlebars/compiled/core/functions/isStringWithValue.js';\n// @ts-ignore\nimport functionIsSuccess from '../legacy/handlebars/compiled/core/functions/isSuccess.js';\n// @ts-ignore\nimport functionResolve from '../legacy/handlebars/compiled/core/functions/resolve.js';\n// @ts-ignore\nimport templateCoreHttpRequest from '../legacy/handlebars/compiled/core/HttpRequest.js';\n// @ts-ignore\nimport templateCoreSettings from '../legacy/handlebars/compiled/core/OpenAPI.js';\n// @ts-ignore\nimport templateCoreRequest from '../legacy/handlebars/compiled/core/request.js';\n// @ts-ignore\nimport xhrGetHeaders from '../legacy/handlebars/compiled/core/xhr/getHeaders.js';\n// @ts-ignore\nimport xhrGetRequestBody from '../legacy/handlebars/compiled/core/xhr/getRequestBody.js';\n// @ts-ignore\nimport xhrGetResponseBody from '../legacy/handlebars/compiled/core/xhr/getResponseBody.js';\n// @ts-ignore\nimport xhrGetResponseHeader from '../legacy/handlebars/compiled/core/xhr/getResponseHeader.js';\n// @ts-ignore\nimport xhrRequest from '../legacy/handlebars/compiled/core/xhr/request.js';\n// @ts-ignore\nimport xhrSendRequest from '../legacy/handlebars/compiled/core/xhr/sendRequest.js';\nimport { camelCase } from './camelCase';\nimport { getConfig } from './config';\nimport { transformServiceName } from './transform';\n\nexport const registerHandlebarHelpers = (): void => {\n Handlebars.registerHelper(\n 'camelCase',\n function (this: unknown, name: string) {\n return camelCase({\n input: name,\n });\n },\n );\n\n Handlebars.registerHelper(\n 'equals',\n function (\n this: unknown,\n a: string,\n b: string,\n options: Handlebars.HelperOptions,\n ) {\n return a === b ? options.fn(this) : options.inverse(this);\n },\n );\n\n Handlebars.registerHelper('ifdef', function (this: unknown, ...args): string {\n const options = args.pop();\n if (!args.every((value) => !value)) {\n return options.fn(this);\n }\n return options.inverse(this);\n });\n\n Handlebars.registerHelper(\n 'notEquals',\n function (\n this: unknown,\n a: string,\n b: string,\n options: Handlebars.HelperOptions,\n ) {\n return a !== b ? options.fn(this) : options.inverse(this);\n },\n );\n\n Handlebars.registerHelper(\n 'transformServiceName',\n function (this: unknown, name: string) {\n return transformServiceName({\n config: getConfig(),\n name,\n });\n },\n );\n};\n\nexport interface Templates {\n client: Handlebars.TemplateDelegate;\n core: {\n apiError: Handlebars.TemplateDelegate;\n apiRequestOptions: Handlebars.TemplateDelegate;\n apiResult: Handlebars.TemplateDelegate;\n baseHttpRequest: Handlebars.TemplateDelegate;\n cancelablePromise: Handlebars.TemplateDelegate;\n httpRequest: Handlebars.TemplateDelegate;\n request: Handlebars.TemplateDelegate;\n settings: Handlebars.TemplateDelegate;\n };\n}\n\n/**\n * Read all the Handlebar templates that we need and return a wrapper object\n * so we can easily access the templates in our generator/write functions.\n */\nexport const registerHandlebarTemplates = (): Templates => {\n registerHandlebarHelpers();\n\n // Main templates (entry points for the files we write to disk)\n const templates: Templates = {\n client: Handlebars.template(templateClient),\n core: {\n apiError: Handlebars.template(templateCoreApiError),\n apiRequestOptions: Handlebars.template(templateCoreApiRequestOptions),\n apiResult: Handlebars.template(templateCoreApiResult),\n baseHttpRequest: Handlebars.template(templateCoreBaseHttpRequest),\n cancelablePromise: Handlebars.template(templateCancelablePromise),\n httpRequest: Handlebars.template(templateCoreHttpRequest),\n request: Handlebars.template(templateCoreRequest),\n settings: Handlebars.template(templateCoreSettings),\n },\n };\n\n // Generic functions used in 'request' file @see src/legacy/handlebars/templates/core/request.hbs for more info\n Handlebars.registerPartial(\n 'functions/base64',\n Handlebars.template(functionBase64),\n );\n Handlebars.registerPartial(\n 'functions/catchErrorCodes',\n Handlebars.template(functionCatchErrorCodes),\n );\n Handlebars.registerPartial(\n 'functions/getFormData',\n Handlebars.template(functionGetFormData),\n );\n Handlebars.registerPartial(\n 'functions/getQueryString',\n Handlebars.template(functionGetQueryString),\n );\n Handlebars.registerPartial(\n 'functions/getUrl',\n Handlebars.template(functionGetUrl),\n );\n Handlebars.registerPartial(\n 'functions/isBlob',\n Handlebars.template(functionIsBlob),\n );\n Handlebars.registerPartial(\n 'functions/isFormData',\n Handlebars.template(functionIsFormData),\n );\n Handlebars.registerPartial(\n 'functions/isString',\n Handlebars.template(functionIsString),\n );\n Handlebars.registerPartial(\n 'functions/isStringWithValue',\n Handlebars.template(functionIsStringWithValue),\n );\n Handlebars.registerPartial(\n 'functions/isSuccess',\n Handlebars.template(functionIsSuccess),\n );\n Handlebars.registerPartial(\n 'functions/resolve',\n Handlebars.template(functionResolve),\n );\n\n // Specific files for the fetch client implementation\n Handlebars.registerPartial(\n 'fetch/getHeaders',\n Handlebars.template(fetchGetHeaders),\n );\n Handlebars.registerPartial(\n 'fetch/getRequestBody',\n Handlebars.template(fetchGetRequestBody),\n );\n Handlebars.registerPartial(\n 'fetch/getResponseBody',\n Handlebars.template(fetchGetResponseBody),\n );\n Handlebars.registerPartial(\n 'fetch/getResponseHeader',\n Handlebars.template(fetchGetResponseHeader),\n );\n Handlebars.registerPartial(\n 'fetch/request',\n Handlebars.template(fetchRequest),\n );\n Handlebars.registerPartial(\n 'fetch/sendRequest',\n Handlebars.template(fetchSendRequest),\n );\n\n // Specific files for the xhr client implementation\n Handlebars.registerPartial(\n 'xhr/getHeaders',\n Handlebars.template(xhrGetHeaders),\n );\n Handlebars.registerPartial(\n 'xhr/getRequestBody',\n Handlebars.template(xhrGetRequestBody),\n );\n Handlebars.registerPartial(\n 'xhr/getResponseBody',\n Handlebars.template(xhrGetResponseBody),\n );\n Handlebars.registerPartial(\n 'xhr/getResponseHeader',\n Handlebars.template(xhrGetResponseHeader),\n );\n Handlebars.registerPartial('xhr/request', Handlebars.template(xhrRequest));\n Handlebars.registerPartial(\n 'xhr/sendRequest',\n Handlebars.template(xhrSendRequest),\n );\n\n // Specific files for the axios client implementation\n Handlebars.registerPartial(\n 'axios/getHeaders',\n Handlebars.template(axiosGetHeaders),\n );\n Handlebars.registerPartial(\n 'axios/getRequestBody',\n Handlebars.template(axiosGetRequestBody),\n );\n Handlebars.registerPartial(\n 'axios/getResponseBody',\n Handlebars.template(axiosGetResponseBody),\n );\n Handlebars.registerPartial(\n 'axios/getResponseHeader',\n Handlebars.template(axiosGetResponseHeader),\n );\n Handlebars.registerPartial(\n 'axios/request',\n Handlebars.template(axiosRequest),\n );\n Handlebars.registerPartial(\n 'axios/sendRequest',\n Handlebars.template(axiosSendRequest),\n );\n\n // Specific files for the angular client implementation\n Handlebars.registerPartial(\n 'angular/getHeaders',\n Handlebars.template(angularGetHeaders),\n );\n Handlebars.registerPartial(\n 'angular/getRequestBody',\n Handlebars.template(angularGetRequestBody),\n );\n Handlebars.registerPartial(\n 'angular/getResponseBody',\n Handlebars.template(angularGetResponseBody),\n );\n Handlebars.registerPartial(\n 'angular/getResponseHeader',\n Handlebars.template(angularGetResponseHeader),\n );\n Handlebars.registerPartial(\n 'angular/request',\n Handlebars.template(angularRequest),\n );\n Handlebars.registerPartial(\n 'angular/sendRequest',\n Handlebars.template(angularSendRequest),\n );\n\n return templates;\n};\n","const idEnd = (id: string) => `${id}-end`;\n\nconst idLength = (id: string) => `${id}-length`;\n\nconst idStart = (id: string) => `${id}-start`;\n\nexport const Performance = {\n clear: (): void => {\n performance.clearMarks();\n performance.clearMeasures();\n },\n end: (id: string): PerformanceMark => performance.mark(idEnd(id)),\n getEntriesByName: (id: string): PerformanceEntryList =>\n performance.getEntriesByName(idLength(id)),\n measure: (id: string): PerformanceMeasure =>\n performance.measure(idLength(id), idStart(id), idEnd(id)),\n start: (id: string): PerformanceMark => performance.mark(idStart(id)),\n};\n\nexport class PerformanceReport {\n totalMeasure: PerformanceMeasure;\n\n constructor({ totalMark }: { totalMark: string }) {\n this.totalMeasure = Performance.measure(totalMark);\n }\n\n public report({ marks }: { marks: ReadonlyArray<string> }) {\n const totalDuration = Math.ceil(this.totalMeasure.duration * 100) / 100;\n const totalName = this.totalMeasure.name;\n console.warn(\n `${totalName.substring(0, totalName.length - idLength('').length)}: ${totalDuration.toFixed(2)}ms`,\n );\n\n marks.forEach((mark) => {\n const markMeasure = Performance.measure(mark);\n const markDuration = Math.ceil(markMeasure.duration * 100) / 100;\n const percentage =\n Math.ceil(\n (markMeasure.duration / this.totalMeasure.duration) * 100 * 100,\n ) / 100;\n console.warn(\n `${mark}: ${markDuration.toFixed(2)}ms (${percentage.toFixed(2)}%)`,\n );\n });\n }\n}\n"]}