@hey-api/openapi-ts 0.53.11 → 0.54.0
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/README.md +1 -0
- package/bin/index.cjs +23 -15
- package/dist/index.cjs +189 -187
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1807 -1261
- package/dist/index.d.ts +1807 -1261
- package/dist/index.js +183 -181
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
package/dist/index.cjs.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.cjs","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/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/ref.ts","../src/ir/context.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/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/generate/files.ts","../src/generate/indexFile.ts","../src/generate/output.ts","../src/plugins/@hey-api/schemas/plugin.ts","../src/plugins/@hey-api/schemas/plugin-legacy.ts","../src/plugins/@hey-api/schemas/config.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-legacy.ts","../src/plugins/@hey-api/services/plugin.ts","../src/plugins/@hey-api/services/config.ts","../src/plugins/@hey-api/types/plugin-legacy.ts","../src/plugins/@hey-api/transformers/plugin-legacy.ts","../src/plugins/@hey-api/transformers/config.ts","../src/plugins/@hey-api/types/plugin.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-legacy.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","getHttpRequestName","client","sort","a","b","nameA","nameB","sorterByName","sortByName","items","ensureDirSync","existsSync","mkdirSync","relativeModulePath","moduleOutput","sourceOutput","outputParts","generateLegacyClientClass","openApi","outputPath","templates","templateResult","writeFileSync","clientModulePath","clientOptionsTypeName","generateClientBundle","dirPath","clientModulePathComponents","__require","clientSrcPath","file","copyFileSync","generateLegacyCore","context","rmSync","requestFile","irRef","isRefOpenApiComponent","$ref","refToParts","resolveRef","spec","current","part","IRContext","parserConfig","outputDir","createdFile","TypeScriptFile","id","parseV3_0_3","jsonMimeRegExp","multipartFormDataMimeRegExp","xWwwFormUrlEncodedMimeRegExp","mediaTypeToIrMediaType","mediaType","mediaTypeObject","content","paginationKeywordsRegExp","addItemsToSchema","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","unique","arr","enumKey","customName","enumUnionType","enums","enumerator","union","enumEntry","enumMeta","model","serialized","ensureValidTypeScriptJavaScriptIdentifier","transformServiceName","transformTypeName","cleanAndTransformTypeName","transformed","getParametersMeta","definitionName","getType","getSchemasMeta","isModelDate","typeReference","typeNode","meta","typeArray","toType","typeEnum","typeDict","typeUnionOrIntersection","style","typeInterface","isLegacy","maybeRequired","transformTypeKeyName","setUniqueTypeName","count","create","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","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","header","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","dir","namespace","refValue","validNameTransformer","ensureUniqueIdentifier","importedItem","moduleMap","splitNameAndExtension","thisRelativePath","fileRelativePath","fileName","extension","separator","output","importsStringArray","_module","nameValue","generateIndexFile","files","generateLegacyOutput","service","plugin","generateOutput","indexFile","schemasId","stripSchema","schemaToJsonSchema2020_12","_schema","schemaName","validName","schemasV3_1_0","handler","ensureValidSchemaOutput","parentKey","toSchemaName","handlerLegacy","addSchema","defaultConfig","hasParametersObjectRequired","parameterWithPagination","deduplicateSchema","uniqueItems","typeIds","typeId","liftedSchema","hasOperationDataRequired","operationPagination","statusCodeToGroup","statusCode","operationResponsesMap","errors","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","_method","identifierResponse","operationResponseRef","identifierResponseTransformer","responseTransformerNode","generateImport","onImport","setUniqueTypeNameArgs","created","modelResponseTransformerTypeName","operationDataTypeName","operationErrorTypeName","operationResponseTransformerTypeName","operationResponseTypeName","operationOptionsType","importedType","throwOnError","optionsName","toOperationParamType","isRequired","getDefaultPrintable","typePath","toOperationReturnType","toOperationComment","params","toRequestOptions","onClientImport","responseTransformerName","toObj","prev","curr","errorResponses","serviceFunctionIdentifier","handleIllegal","toOperationStatements","errorType","responseType","processService","onNode","throwOnErrorTypeGeneric","compileFunctionParams","servicesOutput","imported","operationDataRef","operationErrorRef","servicesId","requestOptions","fileTransformers","generateClassServices","typesModule","identifierError","uniqueTags","serviceName","generateFlatServices","treeName","emptyModel","generateEnum","leadingComment","generateType","onCreated","processComposition","props","enumDeclarations","processType","processEnum","processScopedEnum","processModel","processServiceTypes","pathsMap","pathMap","methodMap","bodyParameters","bodyParameter","headerParameters","queryParameters","operationProperties","methodParameters","operationName","reqKey","reqResParameters","resKey","isVoidResponse","getRefModels","refModel","ensureModelResponseTransformerExists","modelName","generateResponseTransformer","processArray","refModels","nameModelResponseTransformer","processProperty","onRemoveNode","nonVoidResponses","nameCreated","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","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","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","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","getPluginOrder","userPlugins","circularReferenceTracker","visitedNodes","dfs","dependency","getPlugins","userPluginsConfig","pluginOrder","plugins","initConfigs","configurationFile","configFromFile","loadConfig","configFile","dryRun","exportCore","experimentalParser","request","useOptions","createClient","configs","pCreateClient","clients","pClients","pClient","defineConfig","src_default"],"mappings":"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","file":"index.cjs","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 { PluginNames } from './plugins/types';\nimport type { Client } from './types/client';\nimport type { ClientConfig, Config, UserConfig } from './types/config';\nimport { CLIENTS } from './types/config';\nimport { 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 = ({ config }: { config: Config }) => {\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 = ({ config }: { config: Config }) => {\n switch (config.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 getPluginOrder = ({\n userPlugins,\n}: {\n userPlugins: ReadonlyArray<PluginNames>;\n}): Config['pluginOrder'] => {\n const circularReferenceTracker = new Set<PluginNames>();\n const visitedNodes = new Set<PluginNames>();\n\n const dfs = (name: PluginNames) => {\n if (circularReferenceTracker.has(name)) {\n throw new Error(`Circular reference detected at '${name}'`);\n }\n\n if (!visitedNodes.has(name)) {\n circularReferenceTracker.add(name);\n\n for (const dependency of defaultPluginConfigs[name]._dependencies || []) {\n dfs(dependency);\n }\n\n for (const dependency of defaultPluginConfigs[name]\n ._optionalDependencies || []) {\n if (userPlugins.includes(dependency)) {\n dfs(dependency);\n }\n }\n\n circularReferenceTracker.delete(name);\n visitedNodes.add(name);\n }\n };\n\n for (const name of userPlugins) {\n dfs(name);\n }\n\n return Array.from(visitedNodes);\n};\n\nconst getPlugins = (\n userConfig: ClientConfig,\n): Pick<Config, 'plugins' | 'pluginOrder'> => {\n const userPluginsConfig: Config['plugins'] = {};\n\n const userPlugins = (\n userConfig.plugins ?? [\n '@hey-api/types',\n '@hey-api/schemas',\n '@hey-api/services',\n ]\n ).map((plugin) => {\n if (typeof plugin === 'string') {\n return plugin;\n }\n\n // @ts-ignore\n userPluginsConfig[plugin.name] = plugin;\n return plugin.name;\n });\n const pluginOrder = getPluginOrder({ userPlugins });\n\n const plugins = pluginOrder.reduce(\n (result, name) => {\n // @ts-ignore\n result[name] = {\n ...defaultPluginConfigs[name],\n ...userPluginsConfig[name],\n };\n return result;\n },\n {} as Config['plugins'],\n );\n\n return {\n pluginOrder,\n plugins,\n };\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 experimentalParser = 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 output.path = path.resolve(process.cwd(), output.path);\n\n const config = setConfig({\n ...getPlugins(userConfig),\n base,\n client,\n configFile,\n debug,\n dryRun,\n experimentalParser,\n exportCore: isLegacyClient(client) ? exportCore : false,\n input,\n name,\n output,\n request,\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.experimentalParser && !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({ config });\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({ config });\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 { 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","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 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` folder 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 folder 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 {\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","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 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 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 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.plugins['@hey-api/services']?.serviceNameBuilder) {\n return config.plugins['@hey-api/services'].serviceNameBuilder.replace(\n '{{name}}',\n name,\n );\n }\n\n return name;\n};\n\nexport const transformTypeName = (name: string) => {\n const config = getConfig();\n if (config.plugins['@hey-api/types']?.style === '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.plugins['@hey-api/transformers']?.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.plugins['@hey-api/services']?.filter\n ? new RegExp(config.plugins['@hey-api/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.plugins['@hey-api/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 { 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","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.plugins['@hey-api/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 if (['schemas', 'services', 'transformers', 'types'].includes(name)) {\n files.index.add(\n compiler.exportAllDeclaration({\n module: `./${file.nameWithoutExtension()}`,\n }),\n );\n }\n });\n};\n","import path from 'node:path';\n\nimport { compiler } from '../compiler';\nimport type { IRContext } from '../ir/context';\nimport type { OpenApi } from '../openApi';\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 { TypeScriptFile } from './files';\nimport { generateIndexFile } from './indexFile';\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 (\n config.plugins['@hey-api/services']?.include &&\n config.plugins['@hey-api/services'].asClass\n ) {\n const regexp = new RegExp(config.plugins['@hey-api/services'].include);\n client.services = client.services.filter((service) =>\n regexp.test(service.name),\n );\n }\n\n if (config.plugins['@hey-api/types']?.include) {\n const regexp = new RegExp(config.plugins['@hey-api/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 if (!isLegacyClient(config) && config.client.bundle) {\n await generateClientBundle({ name: config.client.name, outputPath });\n }\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 const files: Files = {};\n\n for (const name of config.pluginOrder) {\n const plugin = config.plugins[name]!;\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 openApi,\n plugin: plugin as never,\n });\n }\n\n generateIndexFile({ 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 for (const name of context.config.pluginOrder) {\n const plugin = context.config.plugins[name]!;\n plugin._handler({\n context,\n plugin: plugin as never,\n });\n }\n\n const indexFile = context.createFile({\n id: '_index',\n path: 'index',\n });\n\n Object.entries(context.files).forEach(([name, file]) => {\n if (context.config.dryRun || name === '_index') {\n return;\n }\n\n if (\n !file.isEmpty() &&\n ['schemas', 'services', 'transformers', 'types'].includes(name)\n ) {\n indexFile.add(\n compiler.exportAllDeclaration({\n module: `./${file.nameWithoutExtension()}`,\n }),\n );\n }\n\n file.write('\\n\\n');\n });\n\n if (!context.config.dryRun) {\n indexFile.write();\n }\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';\nimport type { PluginHandler } from '../../types';\nimport type { Config } from './types';\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.plugins['@hey-api/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.plugins['@hey-api/schemas']?.nameBuilder) {\n return context.config.plugins['@hey-api/schemas'].nameBuilder(\n validName,\n schema,\n );\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 handler: PluginHandler<Config> = ({ context }) => {\n context.createFile({\n id: schemasId,\n path: 'schemas',\n });\n\n if (context.spec.openapi) {\n const ctx = context as IRContext<ParserOpenApiSpec>;\n // TODO: parser - copy-pasted from experimental parser for now\n switch (ctx.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\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 { compiler } from '../../../compiler';\nimport { TypeScriptFile } from '../../../generate/files';\nimport type { OpenApiV2Schema, OpenApiV3Schema } from '../../../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../../../openApi';\nimport { getConfig } from '../../../utils/config';\nimport type { PluginLegacyHandler } from '../../types';\nimport type { Config } from './types';\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.plugins['@hey-api/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.plugins['@hey-api/schemas']?.nameBuilder) {\n return config.plugins['@hey-api/schemas'].nameBuilder(validName, schema);\n }\n\n return `${validName}Schema`;\n};\n\nexport const handlerLegacy: PluginLegacyHandler<Config> = ({\n files,\n openApi,\n}) => {\n const config = getConfig();\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 { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n name: '@hey-api/schemas',\n nameBuilder: (name) => `${name}Schema`,\n output: 'schemas',\n type: 'json',\n};\n\n/**\n * Type helper for Hey API schemas plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\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 &&\n (config.plugins['@hey-api/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 type { PluginHandler } from '../../types';\nimport { operationResponseRef } from '../services/plugin';\nimport type { Config } from './types';\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 handler: PluginHandler<Config> = ({ context }) => {\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 {\n ClassElement,\n Comments,\n FunctionParameter,\n Node,\n} from '../../../compiler';\nimport { compiler } from '../../../compiler';\nimport type {\n FunctionTypeParameter,\n ObjectValue,\n} from '../../../compiler/types';\nimport {\n clientModulePath,\n clientOptionsTypeName,\n} from '../../../generate/client';\nimport { TypeScriptFile } from '../../../generate/files';\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 { 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 type { PluginLegacyHandler } from '../../types';\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 (\n config.useOptions &&\n config.plugins['@hey-api/services']?.response === 'response'\n ) {\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 name = operationResponseTypeName(operation.name);\n const { name: responseTransformerName } = setUniqueTypeName({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\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.plugins['@hey-api/services']?.methodNameBuilder) {\n return config.plugins['@hey-api/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.plugins['@hey-api/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\nexport const handlerLegacy: PluginLegacyHandler<any> = ({ client, 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 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.plugins['@hey-api/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 ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport type { ObjectValue } from '../../../compiler/types';\nimport {\n clientModulePath,\n clientOptionsTypeName,\n} from '../../../generate/client';\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 type { PluginHandler } from '../../types';\nimport { operationResponseTransformerRef } from '../transformers/plugin';\nimport {\n operationOptionsType,\n serviceFunctionIdentifier,\n} from './plugin-legacy';\nimport type { Config } from './types';\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 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 handler: PluginHandler<Config> = ({ context }) => {\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 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.plugins['@hey-api/services']?.asClass) {\n generateClassServices({ context });\n } else {\n generateFlatServices({ context });\n }\n};\n","import type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _dependencies: ['@hey-api/types'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n _optionalDependencies: ['@hey-api/transformers'],\n asClass: false,\n name: '@hey-api/services',\n operationId: true,\n output: 'services',\n response: 'body',\n serviceNameBuilder: '{{name}}Service',\n};\n\n/**\n * Type helper for Hey API services plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { EnumDeclaration } from 'typescript';\n\nimport { type Comments, compiler, type Node } from '../../../compiler';\nimport { TypeScriptFile } from '../../../generate/files';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport type {\n Client,\n Method,\n Model,\n OperationParameter,\n} from '../../../types/client';\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 type { PluginLegacyHandler } from '../../types';\nimport {\n operationDataTypeName,\n operationErrorTypeName,\n operationResponseTypeName,\n} from '../services/plugin-legacy';\nimport type { Config } from './types';\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.plugins['@hey-api/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.plugins['@hey-api/types']?.enums === 'typescript' ||\n config.plugins['@hey-api/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.plugins['@hey-api/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 (\n !config.plugins['@hey-api/services'] &&\n !config.plugins['@hey-api/types']?.tree\n ) {\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.plugins['@hey-api/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 handlerLegacy: PluginLegacyHandler<Config> = ({\n client,\n files,\n}) => {\n const config = getConfig();\n\n files.types = new TypeScriptFile({\n dir: config.output.path,\n name: 'types.ts',\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 type { PluginLegacyHandler } from '../../types';\nimport {\n modelResponseTransformerTypeName,\n operationResponseTransformerTypeName,\n operationResponseTypeName,\n} from '../services/plugin-legacy';\nimport { generateType, type TypesProps } from '../types/plugin-legacy';\nimport type { Config } 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 handlerLegacy: PluginLegacyHandler<Config> = ({\n client,\n files,\n}) => {\n const config = getConfig();\n\n const onNode: TypesProps['onNode'] = (node) => {\n files.types?.add(node);\n };\n const onRemoveNode: TypesProps['onRemoveNode'] = () => {\n files.types?.removeNode();\n };\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 type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _dependencies: ['@hey-api/types'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n dates: false,\n name: '@hey-api/transformers',\n output: 'transformers',\n};\n\n/**\n * Type helper for Hey API transformers plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\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 type { PluginHandler } from '../../types';\nimport {\n operationDataRef,\n operationErrorRef,\n operationResponseRef,\n} from '../services/plugin';\nimport type { Config } from './types';\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.plugins['@hey-api/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.plugins['@hey-api/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.plugins['@hey-api/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.plugins['@hey-api/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.plugins['@hey-api/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 (\n context.config.plugins['@hey-api/types']?.enums === 'typescript+namespace'\n ) {\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.plugins['@hey-api/transformers']?.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 handler: PluginHandler<Config> = ({ context }) => {\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 (\n context.config.plugins['@hey-api/services'] ||\n context.config.plugins['@hey-api/types']?.tree\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 operationToType({\n context,\n operation,\n });\n }\n }\n\n // TODO: parser - document removal of tree? migrate it?\n }\n};\n","import type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n enums: false,\n name: '@hey-api/types',\n output: 'types',\n style: 'preserve',\n tree: false,\n};\n\n/**\n * Type helper for Hey API types plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\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 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 {\n operationOptionsType,\n serviceFunctionIdentifier,\n} from '../../@hey-api/services/plugin-legacy';\nimport { schemaToType } from '../../@hey-api/types/plugin';\nimport type { PluginHandler } from '../../types';\nimport type { Config as ReactQueryConfig } from '../react-query';\nimport type { Config as SolidQueryConfig } from '../solid-query';\nimport type { Config as SvelteQueryConfig } from '../svelte-query';\nimport type { Config as VueQueryConfig } 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\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 ReactQueryConfig | SolidQueryConfig | SvelteQueryConfig | VueQueryConfig\n> = ({ context, plugin }) => {\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.plugins['@hey-api/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.plugins['@hey-api/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 { 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, isLegacyClient } from '../../../utils/config';\nimport { transformServiceName } from '../../../utils/transform';\nimport {\n generateImport,\n operationDataTypeName,\n operationErrorTypeName,\n operationOptionsType,\n operationResponseTypeName,\n serviceFunctionIdentifier,\n} from '../../@hey-api/services/plugin-legacy';\nimport type { PluginLegacyHandler } from '../../types';\nimport type { Config as ReactQueryConfig } from '../react-query';\nimport type { Config as SolidQueryConfig } from '../solid-query';\nimport type { Config as SvelteQueryConfig } from '../svelte-query';\nimport type { Config as VueQueryConfig } 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 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 ReactQueryConfig | SolidQueryConfig | SvelteQueryConfig | VueQueryConfig\n> = ({ client, files, plugin }) => {\n const config = getConfig();\n\n if (isLegacyClient(config)) {\n throw new Error('🚫 TanStack Query plugin does not support legacy clients');\n }\n\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.plugins['@hey-api/services']?.asClass &&\n transformServiceName({\n config,\n name: service.name,\n }),\n serviceFunctionIdentifier({\n config,\n handleIllegal: !config.plugins['@hey-api/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 type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _dependencies: ['@hey-api/services', '@hey-api/types'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/react-query',\n output: '@tanstack/react-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for TanStack React Query plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _dependencies: ['@hey-api/services', '@hey-api/types'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/solid-query',\n output: '@tanstack/solid-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for TanStack Solid Query plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _dependencies: ['@hey-api/services', '@hey-api/types'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/svelte-query',\n output: '@tanstack/svelte-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for TanStack Svelte Query plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { DefineConfig, PluginConfig } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _dependencies: ['@hey-api/services', '@hey-api/types'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/vue-query',\n output: '@tanstack/vue-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for TanStack Vue Query plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\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 { Config } 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<Config> = ({\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 type { DefineConfig, PluginConfig } from '../types';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: PluginConfig<Config> = {\n _handler: () => {},\n _handlerLegacy: handlerLegacy,\n name: 'zod',\n output: 'zod',\n};\n\n/**\n * Type helper for Zod plugin, returns {@link PluginConfig} object\n */\nexport const defineConfig: DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import {\n type Config as HeyApiSchemas,\n defaultConfig as heyApiSchemas,\n} from './@hey-api/schemas';\nimport {\n type Config as HeyApiServices,\n defaultConfig as heyApiServices,\n} from './@hey-api/services';\nimport {\n type Config as HeyApiTransformers,\n defaultConfig as heyApiTransformers,\n} from './@hey-api/transformers';\nimport {\n type Config as HeyApiTypes,\n defaultConfig as heyApiTypes,\n} from './@hey-api/types';\nimport {\n type Config as TanStackReactQuery,\n defaultConfig as tanStackReactQuery,\n} from './@tanstack/react-query';\nimport {\n type Config as TanStackSolidQuery,\n defaultConfig as tanStackSolidQuery,\n} from './@tanstack/solid-query';\nimport {\n type Config as TanStackSvelteQuery,\n defaultConfig as tanStackSvelteQuery,\n} from './@tanstack/svelte-query';\nimport {\n type Config as TanStackVueQuery,\n defaultConfig as tanStackVueQuery,\n} from './@tanstack/vue-query';\nimport type {\n DefaultPluginConfigsMap,\n PluginConfig,\n UserConfig,\n} from './types';\nimport { type Config as Zod, defaultConfig as zod } from './zod';\n\n/**\n * User-facing plugin types.\n */\nexport type UserPlugins =\n | UserConfig<HeyApiSchemas>\n | UserConfig<HeyApiServices>\n | UserConfig<HeyApiTransformers>\n | UserConfig<HeyApiTypes>\n | UserConfig<TanStackReactQuery>\n | UserConfig<TanStackSolidQuery>\n | UserConfig<TanStackSvelteQuery>\n | UserConfig<TanStackVueQuery>;\n// | UserConfig<Zod>\n\nexport type ClientPlugins =\n | PluginConfig<HeyApiSchemas>\n | PluginConfig<HeyApiServices>\n | PluginConfig<HeyApiTransformers>\n | PluginConfig<HeyApiTypes>\n | PluginConfig<TanStackReactQuery>\n | PluginConfig<TanStackSolidQuery>\n | PluginConfig<TanStackSvelteQuery>\n | PluginConfig<TanStackVueQuery>\n | PluginConfig<Zod>;\n\nexport const defaultPluginConfigs: DefaultPluginConfigsMap<ClientPlugins> = {\n '@hey-api/schemas': heyApiSchemas,\n '@hey-api/services': heyApiServices,\n '@hey-api/transformers': heyApiTransformers,\n '@hey-api/types': heyApiTypes,\n '@tanstack/react-query': tanStackReactQuery,\n '@tanstack/solid-query': tanStackSolidQuery,\n '@tanstack/svelte-query': tanStackSvelteQuery,\n '@tanstack/vue-query': tanStackVueQuery,\n zod,\n};\n","import type { ClientPlugins, UserPlugins } from '../plugins/';\nimport type { ArrayOfObjectsToObjectMap, 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 * Opt-in to the experimental parser?\n * @default false\n */\n experimentalParser?: 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 folder\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 folder\n */\n path: string;\n };\n /**\n * Plugins are used to generate artifacts 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 * 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' | 'client' | 'name' | 'output' | 'plugins' | 'request'\n> &\n Pick<ClientConfig, 'base' | 'name' | 'request'> & {\n client: Extract<Required<ClientConfig>['client'], object>;\n output: Extract<Required<ClientConfig>['output'], object>;\n pluginOrder: ReadonlyArray<ClientPlugins['name']>;\n plugins: ArrayOfObjectsToObjectMap<\n ExtractArrayOfObjects<ReadonlyArray<ClientPlugins>, { name: string }>,\n 'name'\n >;\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, 'ifServicesResponse').call(\n alias1,\n 'response',\n {\n name: 'ifServicesResponse',\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: 108 },\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, 'ifServicesResponse').call(\n alias1,\n 'response',\n {\n name: 'ifServicesResponse',\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: 214 },\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, 'ifServicesResponse').call(\n alias1,\n 'body',\n {\n name: 'ifServicesResponse',\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: 90 },\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, 'ifServicesResponse').call(\n alias1,\n 'response',\n {\n name: 'ifServicesResponse',\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: 108 },\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, 'ifServicesResponse').call(\n alias1,\n 'response',\n {\n name: 'ifServicesResponse',\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: 178 },\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, 'ifServicesResponse').call(\n alias1,\n 'body',\n {\n name: 'ifServicesResponse',\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: 90 },\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, 'ifServicesResponse').call(\n alias1,\n 'response',\n {\n name: 'ifServicesResponse',\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: 108 },\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, 'ifServicesResponse').call(\n alias1,\n 'response',\n {\n name: 'ifServicesResponse',\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: 178 },\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, 'ifServicesResponse').call(\n alias1,\n 'body',\n {\n name: 'ifServicesResponse',\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: 90 },\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(\n 'ifServicesResponse',\n function (this: unknown, value: string, options: Handlebars.HelperOptions) {\n return getConfig().plugins['@hey-api/services']?.response === value\n ? options.fn(this)\n : 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"]}
|