swagger-typescript-api 13.0.22 → 13.0.23

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js","../src/code-formatter.js","../src/util/name-resolver.js","../src/util/random.js","../src/component-type-name-resolver.js","../src/constants.js","../package.json","../src/util/object-assign.js","../src/configuration.js","../src/schema-components-map.js","../src/schema-parser/schema-formatters.js","../src/schema-parser/schema-parser.js","../src/util/sort-by-property.js","../src/schema-parser/mono-schema-parser.js","../src/schema-parser/base-schema-parsers/array.js","../src/schema-parser/base-schema-parsers/complex.js","../src/schema-parser/base-schema-parsers/discriminator.js","../src/schema-parser/util/enum-key-resolver.js","../src/schema-parser/base-schema-parsers/enum.js","../src/schema-parser/base-schema-parsers/object.js","../src/schema-parser/base-schema-parsers/primitive.js","../src/schema-parser/complex-schema-parsers/all-of.js","../src/schema-parser/complex-schema-parsers/any-of.js","../src/schema-parser/complex-schema-parsers/not.js","../src/schema-parser/complex-schema-parsers/one-of.js","../src/util/internal-case.js","../src/util/pascal-case.js","../src/schema-parser/schema-utils.js","../src/schema-parser/schema-parser-fabric.js","../src/util/id.js","../src/schema-routes/util/specific-arg-name-resolver.js","../src/schema-routes/schema-routes.js","../src/schema-walker.js","../src/util/request.js","../src/swagger-schema-resolver.js","../src/templates-worker.js","../src/translators/translator.js","../src/translators/javascript.js","../src/type-name-formatter.js","../src/util/file-system.js","../src/code-gen-process.js","../src/commands/generate-templates/configuration.js","../src/commands/generate-templates/templates-gen-process.js","../src/commands/generate-templates/index.js"],"names":["CodeFormatter","config","content","tempFileName","host","TsLanguageServiceHost","fileTextChanges","d","span","newText","rt","code","removeUnusedImports","prettierFormat","fileName","tsconfig","encoding","path","NameResolver","reservedNames","getFallbackName","names","fixedNames","lodash","name","reservedName","variants","resolver","extras","shouldReserve","usageName","variant","consola","uniqVariants","getRandomFloat","min","max","getRandomInt","ComponentTypeNameResolver","randomVariant","variantCounter","dirtyResolvedName","fallbackName","constants_exports","__export","DEFAULT_BODY_ARG_NAME","FILE_PREFIX","HTTP_CLIENT","PRETTIER_OPTIONS","PROJECT_VERSION","RESERVED_BODY_ARG_NAMES","RESERVED_HEADER_ARG_NAMES","RESERVED_PATH_ARG_NAMES","RESERVED_QUERY_ARG_NAMES","RESERVED_REQ_PARAMS_ARG_NAMES","SCHEMA_TYPES","package_default","objectAssign","target","updaterFn","update","undefinedKeys","value","key","TsKeyword","TsCodeGenKeyword","CodeGenConfig","routePath","routeData","pathParam","schema","originalSchema","typeName","schemaType","parsedSchema","codeGenProcess","apiConfig","rawType","rawTypeName","routeInfo","templateRouteName","ie","contents","readonly","optional","enumStruct","formatFn","part","genericArgs","values","prettierOptions","getDefaultPrettierOptions","codeGenConstructs","primitiveTypeConstructs","constants","templateInfos","hooks","otherConfig","prettier","mt","SchemaComponentsMap","paths","ref","$ref","rawTypeData","parsed","componentName","componentSchema","usageComponent","refIndex","componentNames","it","c","SchemaFormatters","schemaParser","formatType","description","inline","fields","extraSpace","result","routeNameFromTemplate","sortByProperty","propertyName","o1","o2","MonoSchemaParser","schemaPath","ArraySchemaParser","contentType","type","items","tupleContent","item","ComplexSchemaParser","complexType","simpleSchema","complexSchemaContent","DiscriminatorSchemaParser","ts","discriminator","noDiscriminatorSchema","skipMappingType","abstractSchemaStruct","discriminatorSchemaStruct","schemaContent","refPath","mappingEntries","ableToCreateMappingType","mappingContents","mappingTypeName","mappingPropertySchemaEnumKeysMap","generatedTypeName","component","createMappingContent","mappingSchema","mappingKey","mappingUsageKey","discPropertyName","mappingPropertySchema","acc","index","enumKey","complexSchemaKeys","mappingRefSchema","schemaKey","schemaPropertyName","schemaProperty","schemaIsAny","EnumKeyResolver","generatedVariant","EnumSchemaParser","args","pathTypeName","customComponent","refType","enumNames","enumName","keyType","formatValue","enumValue","formattedKey","formatted","ObjectSchemaParser","contentProperties","properties","additionalProperties","propertiesContent","property","required","nullable","fieldName","fieldValue","readOnly","PrimitiveSchemaParser","fieldType","AllOfSchemaParser","ignoreTypes","combined","childSchema","filtered","AnyOfSchemaParser","NotSchemaParser","OneOfSchemaParser","internalCase","pascalCase","SchemaUtils","schemaComponentsMap","typeNameFormatter","schemaWalker","propertySchema","rootSchema","isRequired","rawSchema","enumFieldType","resultType","parentSchema","refData","existedRequiredKeys","filterFn","suffixes","prefixes","reserved","prefix","suffix","refTypeInfo","primitiveType","typeAlias","SchemaParser","schemaParserFabric","responseStruct","firstResponse","firstSchema","SchemaParserFabric","templatesWorker","linkedSchema","linkedComponent","otherSchemaProps","parser","schemaCopy","ALPHABET","generateId","ut","SpecificArgNameResolver","CONTENT_KIND","SchemaRoutes","routeInfoByMethodsMap","parameters","requestInfo","method","originalRouteName","routeName","pathParamMatches","pathParams","match","paramName","fixedRoute","i","arr","insertion","queryParamMatches","queryParams","paramNames","pathParamsFromRouteName","queryParamsFromRouteName","routeParams","parameter","routeParam","queryParam","extraContentTypes","requestInfoData","contentTypes","status","dataType","parsedSchemas","operationId","defaultType","foundedSchemaByName","foundSchemaByContent","foundSchema","typeNameWithoutOpId","requestInfos","produces","responses","responseInfos","successResponse","response","errorResponses","handleResponseHeaders","src","headerTypes","k","v","params","objectSchema","schemaPart","requestBody","consumes","requestBodyName","contentKind","queryObjectSchema","pathArgsSchemas","extractRequestParams","pathArgSchema","fixedQueryParams","fixedSchema","responseBodyInfo","idx","errorSchemas","rawRouteInfo","moduleName","routeNameDuplicatesMap","templatesToRender","routeNameTemplate","duplicateIdentifier","duplicates","routeNameInfo","rawRouteName","usageSchema","globalSecurity","moduleNameIndex","moduleNameFirstTag","security","summary","tags","otherInfo","route","routeId","firstTag","hasSecurity","pathArgs","pathArgsNames","arg","pathObjectSchema","headersObjectSchema","requestBodyInfo","requestParamsSchema","queryType","pathType","headersType","nameResolver","specificArgs","pathArg","pathsEntries","routeInfosMap","parsedRouteInfo","processedRouteInfo","groupedRoutes","modules","routeGroups","routesGroup","originalName","id","routeGroup","routes","routeA","routeB","SchemaWalker","schemas","address","swaggerSchemaObject","pathToSchema","swaggerSchemaFile","Request","url","disableStrictSSL","authToken","options","requestOptions","undiciGlobalDispatcher","newDispatcher","error","message","SwaggerSchemaResolver","fileSystem","spec","patch","input","disableProxy","authorizationToken","swaggerSchema","converterOptions","resolve","Tt","err","parsedSwaggerSchema","pathToSwagger","urlToSwagger","file","gt","usagePaths","originalPaths","usagePathObject","originalPathObject","usageRouteInfo","methodName","originalRouteInfo","usageRouteParams","originalRouteParams","originalRouteParam","param","TemplatesWorker","getRenderTemplateData","__dirname","F","St","baseTemplatesPath","defaultTemplatesPath","modularTemplatesPath","originalTemplatesPath","customTemplatesPath","ext","path_","raw","extension","packageOrPath","templatePaths","customFullPath","fileContent","baseFullPath","originalFullPath","foundTemplatePathKey","rawPath","fixedPath","customPath","originalPath","template","configuration","Nt","Translator","JavascriptTranslator","fileNameFull","output","R","fileNames","originalSourceFileGet","sourceFileName","languageVersion","onError","shouldCreateNewSourceFile","compiled","jsFileName","dtsFileName","sourceContent","tsImportRows","line","declarationContent","TypeNameFormatter","typePrefix","typeSuffix","hashKey","fixedModelName","formattedName","formattedResultName","FileSystem","N","fileNameParts","e","withPrefix","Ie","Rt","absolutePath","PATCHABLE_INSTANCES","CodeGenProcess","swagger","schemaComponent","rawConfiguration","files","eol","components","modelTypes","modelTypeComponents","getSchemaComponentsCount","schemaComponentsCount","processedCount","modelType","typeInfo","typeData","typeIdentifier","preparedModelType","modular","extraTemplate","fileInfo","generateRouteTypes","generateClient","modularApiFileInfos","outOfModuleRouteContent","outOfModuleApiContent","routeModuleContent","apiModuleContent","fileExtension","Et","info","servers","basePath","externalDocs","server","title","version","serverUrl","instanceKey","TemplatesGenConfig","TemplatesGenProcess","templates","outputPath","templateName","templateEjsPath","templateEtaPath","templateEjsPathExist","templateEtaPathExist","outputFiles","baseTemplates","httpClientTemplates","apiTemplatesPath","apiTemplates","usingHttpClientTemplate","httpClientTemplateContent","templateContent","importsRegExp1","importsRegExp2","importsRegExp3","dir","pathToFile","generateTemplates","generateApi"],"mappings":"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","file":"chunk-KMLLDZJ4.cjs","sourcesContent":["#!/usr/bin/env node\n\nimport { consola } from \"consola\";\nimport { CodeGenProcess } from \"./code-gen-process.js\";\nimport { generateTemplates } from \"./commands/generate-templates/index.js\";\nimport * as constants from \"./constants.js\";\n\nasync function generateApi({ name, prettier, ...config }) {\n if (config.debug) {\n consola.level = Number.MAX_SAFE_INTEGER;\n }\n const codeGenProcess = new CodeGenProcess({\n ...config,\n fileName: name,\n prettierOptions: prettier,\n });\n return await codeGenProcess.start();\n}\n\nexport { constants, generateApi, generateTemplates };\n","import * as prettier from \"prettier\";\nimport * as typescript from \"typescript\";\n\nclass CodeFormatter {\n /**\n * @type {CodeGenConfig}\n */\n config;\n\n constructor({ config }) {\n this.config = config;\n }\n\n removeUnusedImports = (content) => {\n const tempFileName = \"file.ts\";\n\n const host = new TsLanguageServiceHost(tempFileName, content);\n const languageService = typescript.createLanguageService(host);\n\n const fileTextChanges = languageService.organizeImports(\n { type: \"file\", fileName: tempFileName },\n { newLineCharacter: typescript.sys.newLine },\n )[0];\n\n if (fileTextChanges?.textChanges.length) {\n return fileTextChanges.textChanges.reduceRight(\n (content, { span, newText }) =>\n `${content.slice(0, span.start)}${newText}${content.slice(\n span.start + span.length,\n )}`,\n content,\n );\n }\n\n return content;\n };\n\n /**\n * @param content\n * @returns {Promise<string>}\n */\n prettierFormat = async (content) => {\n const formatted = await prettier.format(\n content,\n this.config.prettierOptions,\n );\n return formatted;\n };\n\n formatCode = async (\n code,\n { removeUnusedImports = true, prettierFormat = true } = {},\n ) => {\n if (removeUnusedImports) {\n code = this.removeUnusedImports(code);\n }\n if (prettierFormat) {\n code = await this.prettierFormat(code);\n }\n return code;\n };\n}\n\nclass TsLanguageServiceHost {\n constructor(fileName, content) {\n const tsconfig = typescript.findConfigFile(\n fileName,\n typescript.sys.fileExists,\n );\n\n Object.assign(this, {\n fileName,\n content,\n compilerOptions: tsconfig\n ? typescript.convertCompilerOptionsFromJson(\n typescript.readConfigFile(tsconfig, typescript.sys.readFile).config\n .compilerOptions,\n ).options\n : typescript.getDefaultCompilerOptions(),\n });\n }\n\n getNewLine() {\n return \"newLine\" in typescript.sys ? typescript.sys.newLine : \"\\n\";\n }\n getScriptFileNames() {\n return [this.fileName];\n }\n getCompilationSettings() {\n return this.compilerOptions;\n }\n getDefaultLibFileName() {\n return typescript.getDefaultLibFileName(this.getCompilationSettings());\n }\n getCurrentDirectory() {\n return process.cwd();\n }\n getScriptVersion() {\n return typescript.version;\n }\n getScriptSnapshot() {\n return typescript.ScriptSnapshot.fromString(this.content);\n }\n readFile(fileName, encoding) {\n if (fileName === this.fileName) {\n return this.content;\n }\n\n return typescript.sys.readFile(fileName, encoding);\n }\n fileExists(path) {\n return typescript.sys.fileExists(path);\n }\n}\n\nexport { CodeFormatter };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\nclass NameResolver {\n reservedNames = [];\n getFallbackName = null;\n\n /** @type {CodeGenConfig} */\n config;\n\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames, getFallbackName) {\n this.config = config;\n this.getFallbackName = getFallbackName;\n this.reserve(reservedNames);\n }\n\n /**\n * @param {string[]} names\n */\n reserve(names) {\n const fixedNames = lodash.uniq(lodash.compact(names));\n for (const name of fixedNames) {\n if (this.reservedNames.indexOf(name) === -1) {\n this.reservedNames.push(name);\n }\n }\n }\n\n unreserve(names) {\n this.reservedNames.filter(\n (reservedName) => !names.some((name) => name === reservedName),\n );\n }\n\n isReserved(name) {\n return this.reservedNames.some((reservedName) => reservedName === name);\n }\n\n /**\n *\n * @param {(string[])} variants\n * @param {(reserved: string[]) => string)} [resolver]\n * @param {any} [extras]\n * @returns {string | null}\n */\n resolve(variants, resolver, extras, shouldReserve = true) {\n if (typeof resolver === \"function\") {\n let usageName = null;\n while (usageName === null) {\n const variant = resolver(variants, extras);\n\n if (variant === undefined) {\n consola.warn(\n \"unable to resolve name. current reserved names: \",\n this.reservedNames,\n );\n return null;\n }\n if (!shouldReserve || !this.isReserved(variant)) {\n usageName = variant;\n }\n }\n\n shouldReserve && this.reserve([usageName]);\n return usageName;\n }\n\n if (Array.isArray(variants)) {\n let usageName = null;\n const uniqVariants = lodash.uniq(lodash.compact(variants));\n\n for (const variant of uniqVariants) {\n if (!usageName && (!shouldReserve || !this.isReserved(variant))) {\n usageName = variant;\n }\n }\n\n if (usageName) {\n shouldReserve && this.reserve([usageName]);\n return usageName;\n }\n\n consola.debug(\n \"trying to resolve name with using fallback name generator using variants\",\n variants,\n );\n return this.resolve(variants, this.getFallbackName, extras);\n }\n\n consola.debug(\n \"problem with reserving names. current reserved names: \",\n this.reservedNames,\n );\n return null;\n }\n}\n\nexport { NameResolver };\n","const getRandomFloat = (min = 0, max = 1) => {\n return Math.random() * (max - min) + min;\n};\n\nconst getRandomInt = (min = 0, max = 1) => {\n if (min === max) return min;\n\n return Math.round(getRandomFloat(min, max));\n};\n\nexport { getRandomInt, getRandomFloat };\n","import { consola } from \"consola\";\nimport { NameResolver } from \"./util/name-resolver.js\";\nimport { getRandomInt } from \"./util/random.js\";\n\nclass ComponentTypeNameResolver extends NameResolver {\n counter = 1;\n fallbackNameCounter = 1;\n countersByVariant = new Map();\n\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames) {\n super(config, reservedNames, (variants) => {\n const randomVariant = variants[getRandomInt(0, variants.length - 1)];\n if (randomVariant) {\n if (!this.countersByVariant.has(randomVariant)) {\n this.countersByVariant.set(randomVariant, 0);\n }\n const variantCounter = this.countersByVariant.get(randomVariant) + 1;\n this.countersByVariant.set(randomVariant, variantCounter);\n const dirtyResolvedName = `${randomVariant}${variantCounter}`;\n consola.debug(\n \"generated dirty resolved type name for component - \",\n dirtyResolvedName,\n );\n return dirtyResolvedName;\n }\n\n const fallbackName = `${this.config.componentTypeNameResolver}${this\n .fallbackNameCounter++}`;\n consola.debug(\n \"generated fallback type name for component - \",\n fallbackName,\n );\n return fallbackName;\n });\n }\n}\n\nexport { ComponentTypeNameResolver };\n","import packageJson from \"../package.json\";\n\nconst DEFAULT_BODY_ARG_NAME = \"data\";\n\nconst FILE_PREFIX = `/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\n`;\n\nconst HTTP_CLIENT = {\n FETCH: \"fetch\",\n AXIOS: \"axios\",\n};\n\nconst PRETTIER_OPTIONS = {\n printWidth: 120,\n tabWidth: 2,\n trailingComma: \"all\",\n parser: \"typescript\",\n};\n\nconst PROJECT_VERSION = packageJson.version;\n\nconst RESERVED_BODY_ARG_NAMES = [\"data\", \"body\", \"reqBody\"];\n\nconst RESERVED_HEADER_ARG_NAMES = [\"headers\", \"headersParams\"];\n\nconst RESERVED_PATH_ARG_NAMES = [\"path\", \"pathParams\"];\n\nconst RESERVED_QUERY_ARG_NAMES = [\"query\", \"queryParams\", \"queryArg\"];\n\nconst RESERVED_REQ_PARAMS_ARG_NAMES = [\n \"params\",\n \"requestParams\",\n \"reqParams\",\n \"httpParams\",\n];\n\nconst SCHEMA_TYPES = {\n ARRAY: \"array\",\n OBJECT: \"object\",\n ENUM: \"enum\",\n REF: \"$ref\",\n PRIMITIVE: \"primitive\",\n COMPLEX: \"complex\",\n DISCRIMINATOR: \"discriminator\",\n COMPLEX_ONE_OF: \"oneOf\",\n COMPLEX_ANY_OF: \"anyOf\",\n COMPLEX_ALL_OF: \"allOf\",\n COMPLEX_NOT: \"not\",\n COMPLEX_UNKNOWN: \"__unknown\",\n};\n\nexport {\n DEFAULT_BODY_ARG_NAME,\n FILE_PREFIX,\n HTTP_CLIENT,\n PRETTIER_OPTIONS,\n PROJECT_VERSION,\n RESERVED_BODY_ARG_NAMES,\n RESERVED_HEADER_ARG_NAMES,\n RESERVED_PATH_ARG_NAMES,\n RESERVED_QUERY_ARG_NAMES,\n RESERVED_REQ_PARAMS_ARG_NAMES,\n SCHEMA_TYPES,\n};\n","{\n \"name\": \"swagger-typescript-api\",\n \"version\": \"13.0.22\",\n \"description\": \"Generate the API client for Fetch or Axios from an OpenAPI Specification\",\n \"homepage\": \"https://github.com/acacode/swagger-typescript-api\",\n \"bugs\": \"https://github.com/acacode/swagger-typescript-api/issues\",\n \"repository\": \"github:acacode/swagger-typescript-api\",\n \"license\": \"MIT\",\n \"author\": \"Sergey Volkov <js2me@outlook.com>\",\n \"contributors\": [\n \"Sora Morimoto <sora@morimoto.io>\"\n ],\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/types.d.ts\",\n \"default\": \"./dist/lib.js\"\n },\n \"require\": {\n \"types\": \"./dist/types.d.cts\",\n \"default\": \"./dist/lib.cjs\"\n }\n }\n },\n \"main\": \"./dist/lib.cjs\",\n \"module\": \"./dist/lib.js\",\n \"types\": \"./dist/types.d.cts\",\n \"bin\": {\n \"sta\": \"./dist/cli.js\",\n \"swagger-typescript-api\": \"./dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"templates\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"cli:help\": \"node index.js -h\",\n \"cli:json\": \"node index.js -r -d -p ./swagger-test-cli.json -n swagger-test-cli.ts\",\n \"cli:yaml\": \"node index.js -r -d -p ./swagger-test-cli.yaml -n swagger-test-cli.ts\",\n \"format\": \"biome format --write .\",\n \"format:check\": \"biome format .\",\n \"lint\": \"biome check\",\n \"prepack\": \"tsup\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@types/swagger-schema-official\": \"^2.0.25\",\n \"consola\": \"^3.2.3\",\n \"cosmiconfig\": \"^9.0.0\",\n \"didyoumean\": \"^1.2.2\",\n \"eta\": \"^2.2.0\",\n \"js-yaml\": \"^4.1.0\",\n \"lodash\": \"^4.17.21\",\n \"nanoid\": \"^3.3.7\",\n \"prettier\": \"~3.3.3\",\n \"swagger-schema-official\": \"2.0.0-bab6bed\",\n \"swagger2openapi\": \"^7.0.8\",\n \"typescript\": \"~5.5.4\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"1.8.3\",\n \"@tsconfig/node18\": \"18.2.4\",\n \"@tsconfig/strictest\": \"2.0.5\",\n \"@types/didyoumean\": \"1.2.2\",\n \"@types/js-yaml\": \"4.0.9\",\n \"@types/lodash\": \"4.17.7\",\n \"@types/node\": \"22.5.0\",\n \"@types/swagger2openapi\": \"7.0.4\",\n \"axios\": \"1.7.5\",\n \"shx\": \"0.3.4\",\n \"tsup\": \"8.2.4\",\n \"vitest\": \"2.0.5\"\n },\n \"packageManager\": \"yarn@4.4.1\",\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org\"\n }\n}\n","import lodash from \"lodash\";\n\nconst objectAssign = (target, updaterFn) => {\n if (!updaterFn) return;\n const update =\n typeof updaterFn === \"function\" ? updaterFn(target) : updaterFn;\n const undefinedKeys = lodash\n .map(update, (value, key) => value === undefined && key)\n .filter(Boolean);\n Object.assign(target, lodash.merge(target, update));\n for (const key of undefinedKeys) {\n target[key] = undefined;\n }\n};\n\nexport { objectAssign };\n","import * as cosmiconfig from \"cosmiconfig\";\nimport lodash from \"lodash\";\nimport * as typescript from \"typescript\";\nimport { ComponentTypeNameResolver } from \"./component-type-name-resolver.js\";\nimport * as CONSTANTS from \"./constants.js\";\nimport { objectAssign } from \"./util/object-assign.js\";\n\nconst TsKeyword = {\n Number: \"number\",\n String: \"string\",\n Boolean: \"boolean\",\n Any: \"any\",\n Void: \"void\",\n Unknown: \"unknown\",\n Null: \"null\",\n Undefined: \"undefined\",\n Object: \"object\",\n File: \"File\",\n Date: \"Date\",\n Type: \"type\",\n Enum: \"enum\",\n Interface: \"interface\",\n Array: \"Array\",\n Record: \"Record\",\n Intersection: \"&\",\n Union: \"|\",\n};\n\nconst TsCodeGenKeyword = {\n UtilRequiredKeys: \"UtilRequiredKeys\",\n};\n\n/**\n * @type {GenerateApiConfiguration[\"config\"]}}\n */\nclass CodeGenConfig {\n version = CONSTANTS.PROJECT_VERSION;\n /** CLI flag */\n templates = \"\";\n /** CLI flag */\n generateResponses = false;\n /** CLI flag */\n defaultResponseAsSuccess = false;\n /** CLI flag */\n generateRouteTypes = false;\n /** CLI flag */\n generateClient = true;\n /** CLI flag */\n generateUnionEnums = false;\n /** CLI flag */\n addReadonly = false;\n enumNamesAsValues = false;\n /** parsed swagger schema from getSwaggerObject() */\n\n /** parsed swagger schema ref */\n swaggerSchema = null;\n /** original (converted to json) swagger schema ref */\n originalSchema = null;\n\n /** { \"#/components/schemas/Foo\": @TypeInfo, ... } */\n componentsMap = {};\n /** flag for catching conversion from swagger 2.0 */\n convertedFromSwagger2 = false;\n\n /** url index from paths used for merging into modules */\n moduleNameIndex = 0;\n\n /** use the first tag for the module name */\n moduleNameFirstTag = false;\n disableStrictSSL = false;\n disableProxy = false;\n extractRequestParams = false;\n extractRequestBody = false;\n extractResponseBody = false;\n extractResponseError = false;\n extractResponses = false;\n extractEnums = false;\n fileNames = {\n dataContracts: \"data-contracts\",\n routeTypes: \"route-types\",\n httpClient: \"http-client\",\n outOfModuleApi: \"Common\",\n };\n routeNameDuplicatesMap = new Map();\n prettierOptions = { ...CONSTANTS.PRETTIER_OPTIONS };\n hooks = {\n onPreBuildRoutePath: (routePath) => void 0,\n onBuildRoutePath: (routeData) => void 0,\n onInsertPathParam: (pathParam) => void 0,\n onCreateComponent: (schema) => schema,\n onPreParseSchema: (originalSchema, typeName, schemaType) => void 0,\n onParseSchema: (originalSchema, parsedSchema) => parsedSchema,\n onCreateRoute: (routeData) => routeData,\n onInit: (config, codeGenProcess) => config,\n onPrepareConfig: (apiConfig) => apiConfig,\n onCreateRequestParams: (rawType) => {},\n onCreateRouteName: () => {},\n onFormatTypeName: (typeName, rawTypeName, schemaType) => {},\n onFormatRouteName: (routeInfo, templateRouteName) => {},\n };\n defaultResponseType;\n singleHttpClient = false;\n httpClientType = CONSTANTS.HTTP_CLIENT.FETCH;\n unwrapResponseData = false;\n disableThrowOnError = false;\n sortTypes = false;\n sortRoutes = false;\n templatePaths = {\n /** `templates/base` */\n base: \"\",\n /** `templates/default` */\n default: \"\",\n /** `templates/modular` */\n modular: \"\",\n /** usage path if `--templates` option is not set */\n original: \"\",\n /** custom path to templates (`--templates`) */\n custom: \"\",\n };\n /** Record<templateName, templateContent> */\n templatesToRender = {\n api: \"\",\n dataContracts: \"\",\n dataContractJsDoc: \"\",\n interfaceDataContract: \"\",\n typeDataContract: \"\",\n enumDataContract: \"\",\n objectFieldJsDoc: \"\",\n httpClient: \"\",\n routeTypes: \"\",\n routeName: \"\",\n };\n /**\n * @type {Record<string, (...args: any[]) => MonoSchemaParser>}\n */\n schemaParsers = {};\n toJS = false;\n silent = false;\n typePrefix = \"\";\n typeSuffix = \"\";\n enumKeyPrefix = \"\";\n enumKeySuffix = \"\";\n patch = false;\n /** @type {ComponentTypeNameResolver} */\n componentTypeNameResolver;\n /** name of the main exported class */\n apiClassName = \"Api\";\n debug = false;\n anotherArrayType = false;\n internalTemplateOptions = {\n addUtilRequiredKeysType: false,\n };\n extraTemplates = [];\n input = \"\";\n modular = false;\n output = \"\";\n url = \"\";\n cleanOutput = false;\n spec = null;\n fileName = \"Api.ts\";\n authorizationToken = void 0;\n requestOptions = null;\n\n jsPrimitiveTypes = [];\n jsEmptyTypes = [];\n fixInvalidTypeNamePrefix = \"Type\";\n fixInvalidEnumKeyPrefix = \"Value\";\n\n enumKeyResolverName = \"Value\";\n typeNameResolverName = \"ComponentType\";\n specificArgNameResolverName = \"arg\";\n\n successResponseStatusRange = [200, 299];\n\n /** @type {ExtractingOptions} */\n extractingOptions = {\n requestBodySuffix: [\"Payload\", \"Body\", \"Input\"],\n requestParamsSuffix: [\"Params\"],\n responseBodySuffix: [\"Data\", \"Result\", \"Output\"],\n responseErrorSuffix: [\n \"Error\",\n \"Fail\",\n \"Fails\",\n \"ErrorData\",\n \"HttpError\",\n \"BadResponse\",\n ],\n enumSuffix: [\"Enum\"],\n discriminatorMappingSuffix: [\"Mapping\", \"Mapper\", \"MapType\"],\n discriminatorAbstractPrefix: [\n \"Base\",\n \"Abstract\",\n \"Discriminator\",\n \"Internal\",\n \"Polymorph\",\n ],\n };\n\n compilerTsConfig = {\n module: typescript.ModuleKind.ESNext,\n noImplicitReturns: true,\n alwaysStrict: true,\n target: typescript.ScriptTarget.ESNext,\n declaration: true,\n noImplicitAny: false,\n sourceMap: false,\n removeComments: false,\n disableSizeLimit: true,\n esModuleInterop: true,\n emitDecoratorMetadata: true,\n skipLibCheck: true,\n };\n customTranslator;\n\n Ts = {\n Keyword: structuredClone(TsKeyword),\n CodeGenKeyword: structuredClone(TsCodeGenKeyword),\n /**\n * $A[] or Array<$A>\n */\n ArrayType: (content) => {\n if (this.anotherArrayType) {\n return this.Ts.TypeWithGeneric(this.Ts.Keyword.Array, [content]);\n }\n\n return `${this.Ts.ExpressionGroup(content)}[]`;\n },\n /**\n * \"$A\"\n */\n StringValue: (content) => `\"${content}\"`,\n /**\n * $A\n */\n BooleanValue: (content) => `${content}`,\n /**\n * $A\n */\n NumberValue: (content) => `${content}`,\n /**\n * $A\n */\n NullValue: (content) => \"null\",\n /**\n * $A1 | $A2\n */\n UnionType: (contents) =>\n lodash.join(lodash.uniq(contents), ` ${this.Ts.Keyword.Union} `),\n /**\n * ($A1)\n */\n ExpressionGroup: (content) => (content ? `(${content})` : \"\"),\n /**\n * $A1 & $A2\n */\n IntersectionType: (contents) =>\n lodash.join(lodash.uniq(contents), ` ${this.Ts.Keyword.Intersection} `),\n /**\n * Record<$A1, $A2>\n */\n RecordType: (key, value) =>\n this.Ts.TypeWithGeneric(this.Ts.Keyword.Record, [key, value]),\n /**\n * readonly $key?:$value\n */\n TypeField: ({ readonly, key, optional, value }) =>\n lodash\n .compact([readonly && \"readonly \", key, optional && \"?\", \": \", value])\n .join(\"\"),\n /**\n * [key: $A1]: $A2\n */\n InterfaceDynamicField: (key, value) => `[key: ${key}]: ${value}`,\n\n /**\n * EnumName.EnumKey\n */\n EnumUsageKey: (enumStruct, key) => `${enumStruct}.${key}`,\n /**\n * $A1 = $A2\n */\n EnumField: (key, value) => `${key} = ${value}`,\n /**\n * $A0.key = $A0.value,\n * $A1.key = $A1.value,\n * $AN.key = $AN.value,\n */\n EnumFieldsWrapper: (contents) =>\n lodash\n .map(contents, ({ key, value }) => ` ${this.Ts.EnumField(key, value)}`)\n .join(\",\\n\"),\n /**\n * {\\n $A \\n}\n */\n ObjectWrapper: (content) => `{\\n${content}\\n}`,\n /**\n * /** $A *\\/\n */\n MultilineComment: (contents, formatFn) =>\n [\n ...(contents.length === 1\n ? [`/** ${contents[0]} */`]\n : [\"/**\", ...contents.map((content) => ` * ${content}`), \" */\"]),\n ].map((part) => `${formatFn ? formatFn(part) : part}\\n`),\n /**\n * $A1<...$A2.join(,)>\n */\n TypeWithGeneric: (typeName, genericArgs) => {\n return `${typeName}${\n genericArgs.length ? `<${genericArgs.join(\",\")}>` : \"\"\n }`;\n },\n /**\n * [$A1, $A2, ...$AN]\n */\n Tuple: (values) => {\n return `[${values.join(\", \")}]`;\n },\n };\n\n /**\n * swagger schema type -> typescript type\n * https://json-schema.org/understanding-json-schema/reference/string.html#dates-and-times\n * @type {Record<string, string | ((schema: any, parser: SchemaParser) => string) | ({ $default: string } & Record<string, string | ((schema: any, parser: SchemaParser) => string)>)>}\n */\n primitiveTypes = {\n integer: () => this.Ts.Keyword.Number,\n number: () => this.Ts.Keyword.Number,\n boolean: () => this.Ts.Keyword.Boolean,\n object: () => this.Ts.Keyword.Object,\n file: () => this.Ts.Keyword.File,\n string: {\n $default: () => this.Ts.Keyword.String,\n\n /** formats */\n binary: () => this.Ts.Keyword.File,\n file: () => this.Ts.Keyword.File,\n \"date-time\": () => this.Ts.Keyword.String,\n time: () => this.Ts.Keyword.String,\n date: () => this.Ts.Keyword.String,\n duration: () => this.Ts.Keyword.String,\n email: () => this.Ts.Keyword.String,\n \"idn-email\": () => this.Ts.Keyword.String,\n \"idn-hostname\": () => this.Ts.Keyword.String,\n ipv4: () => this.Ts.Keyword.String,\n ipv6: () => this.Ts.Keyword.String,\n uuid: () => this.Ts.Keyword.String,\n uri: () => this.Ts.Keyword.String,\n \"uri-reference\": () => this.Ts.Keyword.String,\n \"uri-template\": () => this.Ts.Keyword.String,\n \"json-pointer\": () => this.Ts.Keyword.String,\n \"relative-json-pointer\": () => this.Ts.Keyword.String,\n regex: () => this.Ts.Keyword.String,\n },\n };\n\n templateInfos = [\n { name: \"api\", fileName: \"api\" },\n { name: \"dataContracts\", fileName: \"data-contracts\" },\n { name: \"dataContractJsDoc\", fileName: \"data-contract-jsdoc\" },\n { name: \"interfaceDataContract\", fileName: \"interface-data-contract\" },\n { name: \"typeDataContract\", fileName: \"type-data-contract\" },\n { name: \"enumDataContract\", fileName: \"enum-data-contract\" },\n { name: \"objectFieldJsDoc\", fileName: \"object-field-jsdoc\" },\n { name: \"httpClient\", fileName: \"http-client\" },\n { name: \"routeTypes\", fileName: \"route-types\" },\n { name: \"routeName\", fileName: \"route-name\" },\n ];\n\n templateExtensions = [\".eta\", \".ejs\"];\n\n /**\n * @param config {Partial<GenerateApiConfiguration['config']>}\n */\n constructor({\n prettierOptions = getDefaultPrettierOptions(),\n codeGenConstructs,\n primitiveTypeConstructs,\n constants,\n templateInfos,\n hooks,\n ...otherConfig\n }) {\n objectAssign(this.Ts, codeGenConstructs);\n objectAssign(this.primitiveTypes, primitiveTypeConstructs);\n\n this.defaultResponseType = this.Ts.Keyword.Void;\n\n this.update({\n ...otherConfig,\n prettierOptions:\n prettierOptions === undefined\n ? getDefaultPrettierOptions()\n : prettierOptions,\n hooks: lodash.merge(this.hooks, hooks || {}),\n constants: {\n ...CONSTANTS,\n ...constants,\n },\n templateInfos: templateInfos || this.templateInfos,\n });\n\n this.jsPrimitiveTypes = [\n this.Ts.Keyword.Number,\n this.Ts.Keyword.String,\n this.Ts.Keyword.Boolean,\n ];\n this.jsEmptyTypes = [this.Ts.Keyword.Null, this.Ts.Keyword.Undefined];\n this.componentTypeNameResolver = new ComponentTypeNameResolver(\n this,\n null,\n [],\n );\n }\n\n /**\n *\n * @param update {Partial<GenerateApiConfiguration[\"config\"]>}\n */\n update = (update) => {\n objectAssign(this, update);\n };\n}\n\nconst getDefaultPrettierOptions = () => {\n const prettier = cosmiconfig\n .cosmiconfigSync(\"prettier\", {\n searchStrategy: \"global\",\n })\n .search();\n\n if (prettier) {\n return {\n ...prettier.config,\n parser: \"typescript\",\n };\n }\n\n return { ...CONSTANTS.PRETTIER_OPTIONS };\n};\n\nexport { CodeGenConfig };\n","class SchemaComponentsMap {\n /** @type {SchemaComponent[]} */\n _data = [];\n /** @type {CodeGenConfig} */\n config;\n\n constructor({ config }) {\n this.config = config;\n }\n\n clear() {\n this._data = [];\n }\n\n createRef = (paths) => {\n return [\"#\", ...paths].join(\"/\");\n };\n\n parseRef = (ref) => {\n return ref.split(\"/\");\n };\n\n createComponent($ref, rawTypeData) {\n const parsed = this.parseRef($ref);\n const typeName = parsed[parsed.length - 1];\n const componentName = parsed[parsed.length - 2];\n const componentSchema = {\n $ref,\n typeName,\n rawTypeData,\n componentName,\n /** result from schema parser */\n typeData: null,\n };\n\n const usageComponent =\n this.config.hooks.onCreateComponent(componentSchema) || componentSchema;\n\n const refIndex = this._data.findIndex((c) => c.$ref === $ref);\n\n if (refIndex === -1) {\n this._data.push(usageComponent);\n } else {\n this._data[refIndex] = usageComponent;\n }\n\n return usageComponent;\n }\n\n /**\n * @returns {SchemaComponent[]}\n */\n getComponents() {\n return this._data;\n }\n\n /**\n * @params {...string[]} componentNames\n * @returns {SchemaComponent[]}\n */\n filter(...componentNames) {\n return this._data.filter((it) =>\n componentNames.some((componentName) =>\n it.$ref.startsWith(`#/components/${componentName}`),\n ),\n );\n }\n\n get($ref) {\n return this._data.find((c) => c.$ref === $ref) || null;\n }\n}\n\nexport { SchemaComponentsMap };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../constants.js\";\n\nclass SchemaFormatters {\n /** @type {CodeGenConfig} */\n config;\n /** @type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaUtils} */\n schemaUtils;\n\n /**\n * @param schemaParser {SchemaParser | SchemaParserFabric}\n */\n constructor(schemaParser) {\n this.config = schemaParser.config;\n this.schemaUtils = schemaParser.schemaUtils;\n this.templatesWorker = schemaParser.templatesWorker;\n }\n\n base = {\n [SCHEMA_TYPES.ENUM]: (parsedSchema) => {\n if (this.config.generateUnionEnums) {\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n content: this.config.Ts.UnionType(\n parsedSchema.content.map(({ value }) => value),\n ),\n };\n }\n\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n content: this.config.Ts.EnumFieldsWrapper(parsedSchema.content),\n };\n },\n [SCHEMA_TYPES.OBJECT]: (parsedSchema) => {\n if (parsedSchema.nullable)\n return this.inline[SCHEMA_TYPES.OBJECT](parsedSchema);\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n content: this.formatObjectContent(parsedSchema.content),\n };\n },\n [SCHEMA_TYPES.PRIMITIVE]: (parsedSchema) => {\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n };\n },\n };\n inline = {\n [SCHEMA_TYPES.ENUM]: (parsedSchema) => {\n return {\n ...parsedSchema,\n content: parsedSchema.$ref\n ? parsedSchema.typeName\n : this.config.Ts.UnionType(\n lodash.compact([\n ...parsedSchema.content.map(({ value }) => `${value}`),\n parsedSchema.nullable && this.config.Ts.Keyword.Null,\n ]),\n ) || this.config.Ts.Keyword.Any,\n };\n },\n [SCHEMA_TYPES.OBJECT]: (parsedSchema) => {\n if (typeof parsedSchema.content === \"string\")\n return {\n ...parsedSchema,\n typeIdentifier: this.config.Ts.Keyword.Type,\n content: this.schemaUtils.safeAddNullToType(parsedSchema.content),\n };\n\n return {\n ...parsedSchema,\n typeIdentifier: this.config.Ts.Keyword.Type,\n content: this.schemaUtils.safeAddNullToType(\n parsedSchema,\n parsedSchema.content.length\n ? this.config.Ts.ObjectWrapper(\n this.formatObjectContent(parsedSchema.content),\n )\n : this.config.Ts.RecordType(\n this.config.Ts.Keyword.String,\n this.config.Ts.Keyword.Any,\n ),\n ),\n };\n },\n };\n\n /**\n * @param parsedSchema {Record<string, any>}\n * @param formatType {\"base\" | \"inline\"}\n */\n formatSchema = (parsedSchema, formatType = \"base\") => {\n const schemaType =\n lodash.get(parsedSchema, [\"schemaType\"]) ||\n lodash.get(parsedSchema, [\"$parsed\", \"schemaType\"]);\n const formatterFn = lodash.get(this, [formatType, schemaType]);\n return formatterFn?.(parsedSchema) || parsedSchema;\n };\n\n formatDescription = (description, inline) => {\n if (!description) return \"\";\n\n const hasMultipleLines = description.includes(\"\\n\");\n\n if (!hasMultipleLines) return description;\n\n if (inline) {\n return lodash\n ._(description)\n .split(/\\n/g)\n .map((part) => part.trim())\n .compact()\n .join(\" \")\n .valueOf();\n }\n\n return description.replace(/\\n$/g, \"\");\n };\n\n formatObjectContent = (content) => {\n const fields = [];\n\n for (const part of content) {\n const extraSpace = \" \";\n const result = `${extraSpace}${part.field},\\n`;\n\n const renderedJsDoc = this.templatesWorker.renderTemplate(\n this.config.templatesToRender.dataContractJsDoc,\n {\n data: part,\n },\n );\n\n const routeNameFromTemplate = renderedJsDoc\n .split(\"\\n\")\n .map((c) => `${extraSpace}${c}`)\n .join(\"\\n\");\n\n if (routeNameFromTemplate) {\n fields.push(`${routeNameFromTemplate}${result}`);\n } else {\n fields.push(`${result}`);\n }\n }\n\n return fields.join(\"\");\n };\n}\n\nexport { SchemaFormatters };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../constants.js\";\nimport { sortByProperty } from \"../util/sort-by-property.js\";\nimport { ArraySchemaParser } from \"./base-schema-parsers/array.js\";\nimport { ComplexSchemaParser } from \"./base-schema-parsers/complex.js\";\nimport { DiscriminatorSchemaParser } from \"./base-schema-parsers/discriminator.js\";\nimport { EnumSchemaParser } from \"./base-schema-parsers/enum.js\";\nimport { ObjectSchemaParser } from \"./base-schema-parsers/object.js\";\nimport { PrimitiveSchemaParser } from \"./base-schema-parsers/primitive.js\";\nimport { AllOfSchemaParser } from \"./complex-schema-parsers/all-of.js\";\nimport { AnyOfSchemaParser } from \"./complex-schema-parsers/any-of.js\";\nimport { NotSchemaParser } from \"./complex-schema-parsers/not.js\";\nimport { OneOfSchemaParser } from \"./complex-schema-parsers/one-of.js\";\nimport { SchemaFormatters } from \"./schema-formatters.js\";\nimport { SchemaUtils } from \"./schema-utils.js\";\n\nclass SchemaParser {\n /** @type {SchemaParserFabric} */\n schemaParserFabric;\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaFormatters} */\n schemaFormatters;\n /** @type {SchemaUtils} */\n schemaUtils;\n /** @type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaWalker} */\n schemaWalker;\n\n typeName;\n schema;\n schemaPath = [];\n\n constructor(schemaParserFabric, { typeName, schema, schemaPath } = {}) {\n this.schemaParserFabric = schemaParserFabric;\n this.config = schemaParserFabric.config;\n this.templatesWorker = schemaParserFabric.templatesWorker;\n this.schemaComponentsMap = schemaParserFabric.schemaComponentsMap;\n this.typeNameFormatter = schemaParserFabric.typeNameFormatter;\n this.schemaWalker = schemaParserFabric.schemaWalker;\n this.schemaFormatters = schemaParserFabric.schemaFormatters;\n this.schemaUtils = schemaParserFabric.schemaUtils;\n\n this.typeName = typeName || null;\n this.schema = schema;\n this.schemaPath = [...(schemaPath || [])];\n }\n\n _complexSchemaParsers = {\n [SCHEMA_TYPES.COMPLEX_ONE_OF]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexOneOf || OneOfSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX_ALL_OF]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexAllOf || AllOfSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX_ANY_OF]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexAnyOf || AnyOfSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX_NOT]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexNot || NotSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n };\n\n _baseSchemaParsers = {\n [SCHEMA_TYPES.ENUM]: (schema, typeName) => {\n const SchemaParser = this.config.schemaParsers.enum || EnumSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.OBJECT]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.object || ObjectSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.complex || ComplexSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.PRIMITIVE]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.primitive || PrimitiveSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.DISCRIMINATOR]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.discriminator || DiscriminatorSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.ARRAY]: (schema, typeName) => {\n const SchemaParser = this.config.schemaParsers.array || ArraySchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n };\n\n /**\n * @return {Record<string, any>}\n */\n parseSchema = () => {\n if (!this.schema)\n return this._baseSchemaParsers[SCHEMA_TYPES.PRIMITIVE](\n null,\n this.typeName,\n );\n\n let schemaType = null;\n let parsedSchema = null;\n\n if (typeof this.schema === \"string\") {\n return this.schema;\n }\n\n if (!this.schema.$parsed) {\n if (!this.typeName && this.schemaUtils.isRefSchema(this.schema)) {\n this.typeName = this.schemaUtils.getSchemaType(this.schema);\n }\n\n //#region swagger schemas fixes\n\n // schema has items but don't have array type\n if (\n this.schema.items &&\n !Array.isArray(this.schema.items) &&\n !this.schema.type\n ) {\n this.schema.type = SCHEMA_TYPES.ARRAY;\n }\n // schema is enum with one null value\n if (\n Array.isArray(this.schema.enum) &&\n this.schema.enum.length === 1 &&\n this.schema.enum[0] == null\n ) {\n consola.debug(\"invalid enum schema\", this.schema);\n this.schema = { type: this.config.Ts.Keyword.Null };\n }\n // schema is response schema\n if (\"content\" in this.schema && typeof this.schema.content === \"object\") {\n const schema = this.extractSchemaFromResponseStruct(this.schema);\n const schemaParser = this.schemaParserFabric.createSchemaParser({\n schema,\n typeName: this.typeName,\n schemaPath: this.schemaPath,\n });\n this.schema.$parsed = schemaParser.parseSchema();\n return this.schema.$parsed;\n }\n\n //#endregion\n\n schemaType = this.schemaUtils.getInternalSchemaType(this.schema);\n\n this.schemaPath.push(this.typeName);\n\n lodash.merge(\n this.schema,\n this.config.hooks.onPreParseSchema(\n this.schema,\n this.typeName,\n schemaType,\n ),\n );\n parsedSchema = this._baseSchemaParsers[schemaType](\n this.schema,\n this.typeName,\n );\n this.schema.$parsed =\n this.config.hooks.onParseSchema(this.schema, parsedSchema) ||\n parsedSchema;\n\n if (\n this.config.sortTypes &&\n Array.isArray(this.schema.$parsed?.content)\n ) {\n this.schema.$parsed.content = this.schema.$parsed.content.sort(\n sortByProperty(\"name\"),\n );\n }\n }\n\n this.schemaPath.pop();\n\n return this.schema.$parsed;\n };\n\n getInlineParseContent = () => {\n const parsedSchema = this.parseSchema();\n const formattedSchema = this.schemaFormatters.formatSchema(\n parsedSchema,\n \"inline\",\n );\n return formattedSchema.content;\n };\n\n getParseContent = () => {\n const parsedSchema = this.parseSchema();\n const formattedSchema = this.schemaFormatters.formatSchema(\n parsedSchema,\n \"base\",\n );\n return formattedSchema.content;\n };\n\n extractSchemaFromResponseStruct = (responseStruct) => {\n const { content, ...extras } = responseStruct;\n\n const firstResponse = lodash.first(lodash.values(content));\n const firstSchema = lodash.get(firstResponse, \"schema\");\n\n if (!firstSchema) return;\n\n return {\n ...extras,\n ...lodash.omit(firstResponse, \"schema\"),\n ...firstSchema,\n };\n };\n}\n\nexport { SchemaParser };\n","/**\n * @param propertyName {string}\n * @returns {(o1: Record<string, any>, o2: Record<string, any>) => 1 | -1 | 0}\n */\nconst sortByProperty = (propertyName) => (o1, o2) => {\n if (o1[propertyName] > o2[propertyName]) {\n return 1;\n }\n if (o1[propertyName] < o2[propertyName]) {\n return -1;\n }\n return 0;\n};\n\nexport { sortByProperty };\n","class MonoSchemaParser {\n schema;\n typeName;\n schemaPath;\n\n /** @type {SchemaParser} */\n schemaParser;\n /** @type {SchemaParserFabric} */\n schemaParserFabric;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {SchemaUtils} */\n schemaUtils;\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaFormatters} */\n schemaFormatters;\n\n constructor(schemaParser, schema, typeName = null, schemaPath = []) {\n this.schemaParser = schemaParser;\n this.schemaParserFabric = schemaParser.schemaParserFabric;\n this.schema = schema;\n this.typeName = typeName;\n this.typeNameFormatter = schemaParser.typeNameFormatter;\n this.schemaPath = schemaPath;\n this.schemaComponentsMap = this.schemaParser.schemaComponentsMap;\n this.schemaUtils = this.schemaParser.schemaUtils;\n this.config = this.schemaParser.config;\n this.schemaFormatters = this.schemaParser.schemaFormatters;\n }\n\n parse() {\n throw new Error(\"not implemented\");\n }\n\n buildTypeNameFromPath = () => {\n return this.schemaUtils.buildTypeNameFromPath(this.schemaPath);\n };\n}\n\nexport { MonoSchemaParser };\n","import { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass ArraySchemaParser extends MonoSchemaParser {\n parse() {\n let contentType;\n const { type, description, items } = this.schema || {};\n\n if (Array.isArray(items) && type === SCHEMA_TYPES.ARRAY) {\n const tupleContent = [];\n for (const item of items) {\n tupleContent.push(\n this.schemaParserFabric\n .createSchemaParser({ schema: item, schemaPath: this.schemaPath })\n .getInlineParseContent(),\n );\n }\n contentType = this.config.Ts.Tuple(tupleContent);\n } else {\n const content = this.schemaParserFabric\n .createSchemaParser({ schema: items, schemaPath: this.schemaPath })\n .getInlineParseContent();\n contentType = this.config.Ts.ArrayType(content);\n }\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.PRIMITIVE,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: this.config.Ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(description),\n content: this.schemaUtils.safeAddNullToType(this.schema, contentType),\n };\n }\n}\n\nexport { ArraySchemaParser };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass ComplexSchemaParser extends MonoSchemaParser {\n parse() {\n const complexType = this.schemaUtils.getComplexType(this.schema);\n const simpleSchema = lodash.omit(\n lodash.clone(this.schema),\n lodash.keys(this.schemaParser._complexSchemaParsers),\n );\n const complexSchemaContent = this.schemaParser._complexSchemaParsers[\n complexType\n ](this.schema);\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.COMPLEX,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: this.config.Ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description ||\n lodash.compact(\n lodash.map(this.schema[complexType], \"description\"),\n )[0] ||\n \"\",\n ),\n content:\n this.config.Ts.IntersectionType(\n lodash.compact([\n this.config.Ts.ExpressionGroup(complexSchemaContent),\n this.schemaUtils.getInternalSchemaType(simpleSchema) ===\n SCHEMA_TYPES.OBJECT &&\n this.config.Ts.ExpressionGroup(\n this.schemaParserFabric\n .createSchemaParser({\n schema: simpleSchema,\n schemaPath: this.schemaPath,\n })\n .getInlineParseContent(),\n ),\n ]),\n ) || this.config.Ts.Keyword.Any,\n };\n }\n}\n\nexport { ComplexSchemaParser };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass DiscriminatorSchemaParser extends MonoSchemaParser {\n parse() {\n const ts = this.config.Ts;\n const { discriminator, ...noDiscriminatorSchema } = this.schema;\n\n if (!discriminator.mapping) {\n return this.schemaParserFabric\n .createSchemaParser({\n schema: noDiscriminatorSchema,\n typeName: this.typeName,\n schemaPath: this.schemaPath,\n })\n .parseSchema();\n }\n\n // https://github.com/acacode/swagger-typescript-api/issues/456\n // const skipMappingType = !!noDiscriminatorSchema.oneOf;\n const skipMappingType = false;\n\n const abstractSchemaStruct = this.createAbstractSchemaStruct();\n // const complexSchemaStruct = this.createComplexSchemaStruct();\n const discriminatorSchemaStruct = this.createDiscriminatorSchema({\n skipMappingType,\n abstractSchemaStruct,\n });\n\n const schemaContent = ts.IntersectionType(\n [\n abstractSchemaStruct?.content,\n discriminatorSchemaStruct?.content,\n ].filter(Boolean),\n );\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.COMPLEX,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description,\n ),\n content: schemaContent,\n };\n }\n\n createDiscriminatorSchema = ({ skipMappingType, abstractSchemaStruct }) => {\n const ts = this.config.Ts;\n\n const refPath = this.schemaComponentsMap.createRef([\n \"components\",\n \"schemas\",\n this.typeName,\n ]);\n const { discriminator } = this.schema;\n const mappingEntries = lodash.entries(discriminator.mapping);\n const ableToCreateMappingType =\n !skipMappingType &&\n !!(abstractSchemaStruct?.typeName && mappingEntries.length);\n const mappingContents = [];\n let mappingTypeName;\n\n /** { mapping_key: SchemaEnum.MappingKey, ... } */\n const mappingPropertySchemaEnumKeysMap =\n this.createMappingPropertySchemaEnumKeys({\n abstractSchemaStruct,\n discPropertyName: discriminator.propertyName,\n });\n\n if (ableToCreateMappingType) {\n const rawTypeName = `${abstractSchemaStruct.typeName}_${discriminator.propertyName}`;\n const generatedTypeName = this.schemaUtils.resolveTypeName(rawTypeName, {\n suffixes: this.config.extractingOptions.discriminatorMappingSuffix,\n resolver:\n this.config.extractingOptions.discriminatorMappingNameResolver,\n });\n\n const content = ts.IntersectionType([\n ts.ObjectWrapper(\n ts.TypeField({\n key: ts.StringValue(discriminator.propertyName),\n value: \"Key\",\n }),\n ),\n \"Type\",\n ]);\n\n const component = this.schemaParserFabric.createParsedComponent({\n typeName: generatedTypeName,\n schema: {\n type: \"object\",\n properties: {},\n genericArgs: [{ name: \"Key\" }, { name: \"Type\" }],\n internal: true,\n },\n });\n\n component.typeData.content = content;\n\n mappingTypeName = this.typeNameFormatter.format(component.typeName);\n }\n\n /** returns (GenericType<\"mapping_key\", MappingType>) or ({ discriminatorProperty: \"mapping_key\" } & MappingType) */\n const createMappingContent = (mappingSchema, mappingKey) => {\n const content = this.schemaParserFabric\n .createSchemaParser({\n schema: mappingSchema,\n schemaPath: this.schemaPath,\n })\n .getInlineParseContent();\n\n const mappingUsageKey =\n mappingPropertySchemaEnumKeysMap[mappingKey] ||\n ts.StringValue(mappingKey);\n\n if (ableToCreateMappingType) {\n return ts.TypeWithGeneric(mappingTypeName, [mappingUsageKey, content]);\n }\n\n return ts.ExpressionGroup(\n ts.IntersectionType([\n ts.ObjectWrapper(\n ts.TypeField({\n key: discriminator.propertyName,\n value: mappingUsageKey,\n }),\n ),\n content,\n ]),\n );\n };\n\n for (const [mappingKey, schema] of mappingEntries) {\n const mappingSchema =\n typeof schema === \"string\" ? { $ref: schema } : schema;\n\n this.mutateMappingDependentSchema({\n discPropertyName: discriminator.propertyName,\n abstractSchemaStruct,\n mappingSchema,\n refPath,\n mappingPropertySchemaEnumKeysMap,\n });\n\n mappingContents.push(createMappingContent(mappingSchema, mappingKey));\n }\n\n if (skipMappingType) return null;\n\n const content = ts.ExpressionGroup(ts.UnionType(mappingContents));\n\n return {\n content,\n };\n };\n\n createMappingPropertySchemaEnumKeys = ({\n abstractSchemaStruct,\n discPropertyName,\n }) => {\n const ts = this.config.Ts;\n\n let mappingPropertySchemaEnumKeysMap = {};\n let mappingPropertySchema = lodash.get(\n abstractSchemaStruct?.component?.rawTypeData,\n [\"properties\", discPropertyName],\n );\n if (this.schemaUtils.isRefSchema(mappingPropertySchema)) {\n mappingPropertySchema = this.schemaUtils.getSchemaRefType(\n mappingPropertySchema,\n );\n }\n\n if (\n mappingPropertySchema?.rawTypeData?.$parsed?.type === SCHEMA_TYPES.ENUM\n ) {\n mappingPropertySchemaEnumKeysMap = lodash.reduce(\n mappingPropertySchema.rawTypeData.$parsed.enum,\n (acc, key, index) => {\n const enumKey =\n mappingPropertySchema.rawTypeData.$parsed.content[index].key;\n acc[key] = ts.EnumUsageKey(\n mappingPropertySchema.rawTypeData.$parsed.typeName,\n enumKey,\n );\n return acc;\n },\n {},\n );\n }\n\n return mappingPropertySchemaEnumKeysMap;\n };\n\n mutateMappingDependentSchema = ({\n discPropertyName,\n abstractSchemaStruct,\n mappingSchema,\n refPath,\n mappingPropertySchemaEnumKeysMap,\n }) => {\n const complexSchemaKeys = lodash.keys(\n this.schemaParser._complexSchemaParsers,\n );\n // override parent dependencies\n if (mappingSchema.$ref && abstractSchemaStruct?.component?.$ref) {\n const mappingRefSchema =\n this.schemaUtils.getSchemaRefType(mappingSchema)?.rawTypeData;\n if (mappingRefSchema) {\n for (const schemaKey of complexSchemaKeys) {\n if (Array.isArray(mappingRefSchema[schemaKey])) {\n mappingRefSchema[schemaKey] = mappingRefSchema[schemaKey].map(\n (schema) => {\n if (schema.$ref === refPath) {\n return {\n ...schema,\n $ref: abstractSchemaStruct.component.$ref,\n };\n }\n if (\n this.schemaUtils.getInternalSchemaType(schema) ===\n SCHEMA_TYPES.OBJECT\n ) {\n for (const schemaPropertyName in schema.properties) {\n const schemaProperty =\n schema.properties[schemaPropertyName];\n if (\n schemaPropertyName === discPropertyName &&\n this.schemaUtils.getInternalSchemaType(schemaProperty) ===\n SCHEMA_TYPES.ENUM &&\n schemaProperty.enum.length === 1 &&\n mappingPropertySchemaEnumKeysMap[schemaProperty.enum[0]]\n ) {\n schema.properties[schemaPropertyName] =\n this.schemaParserFabric.createSchema({\n content:\n mappingPropertySchemaEnumKeysMap[\n schemaProperty.enum[0]\n ],\n });\n }\n }\n }\n return schema;\n },\n );\n }\n }\n }\n }\n };\n\n createAbstractSchemaStruct = () => {\n const { discriminator, ...noDiscriminatorSchema } = this.schema;\n const complexSchemaKeys = lodash.keys(\n this.schemaParser._complexSchemaParsers,\n );\n const schema = lodash.omit(\n structuredClone(noDiscriminatorSchema),\n complexSchemaKeys,\n );\n const schemaIsAny =\n this.schemaParserFabric.getInlineParseContent(structuredClone(schema)) ===\n this.config.Ts.Keyword.Any;\n const schemaIsEmpty = !lodash.keys(schema).length;\n\n if (schemaIsEmpty || schemaIsAny) return null;\n\n const typeName = this.schemaUtils.resolveTypeName(this.typeName, {\n prefixes: this.config.extractingOptions.discriminatorAbstractPrefix,\n resolver: this.config.extractingOptions.discriminatorAbstractResolver,\n });\n const component = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\"components\", \"schemas\", typeName]),\n {\n ...schema,\n internal: true,\n },\n );\n const content = this.schemaParserFabric\n .createSchemaParser({ schema: component, schemaPath: this.schemaPath })\n .getInlineParseContent();\n\n return {\n typeName,\n component,\n content,\n };\n };\n\n createComplexSchemaStruct = () => {\n const ts = this.config.Ts;\n const complexType = this.schemaUtils.getComplexType(this.schema);\n\n if (complexType === SCHEMA_TYPES.COMPLEX_UNKNOWN) return null;\n\n return {\n content: ts.ExpressionGroup(\n this.schemaParser._complexSchemaParsers[complexType](this.schema),\n ),\n };\n };\n}\n\nexport { DiscriminatorSchemaParser };\n","import { consola } from \"consola\";\nimport { NameResolver } from \"../../util/name-resolver.js\";\n\nclass EnumKeyResolver extends NameResolver {\n counter = 1;\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames) {\n super(config, reservedNames, (variants) => {\n const generatedVariant =\n (variants[0] && `${variants[0]}${this.counter++}`) ||\n `${this.config.enumKeyResolverName}${this.counter++}`;\n consola.debug(\n \"generated fallback type name for enum key - \",\n generatedVariant,\n );\n return generatedVariant;\n });\n }\n}\n\nexport { EnumKeyResolver };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\nimport { EnumKeyResolver } from \"../util/enum-key-resolver.js\";\n\nclass EnumSchemaParser extends MonoSchemaParser {\n /** @type {EnumKeyResolver} */\n enumKeyResolver;\n\n constructor(...args) {\n super(...args);\n this.enumKeyResolver = new EnumKeyResolver(this.config, []);\n }\n\n extractEnum = (pathTypeName) => {\n const generatedTypeName = this.schemaUtils.resolveTypeName(pathTypeName, {\n suffixes: this.config.extractingOptions.enumSuffix,\n resolver: this.config.extractingOptions.enumNameResolver,\n });\n const customComponent = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\n \"components\",\n \"schemas\",\n generatedTypeName,\n ]),\n {\n ...this.schema,\n },\n );\n return this.schemaParserFabric.parseSchema(customComponent);\n };\n\n parse() {\n const pathTypeName = this.buildTypeNameFromPath();\n\n if (this.config.extractEnums && !this.typeName && pathTypeName != null) {\n return this.extractEnum(pathTypeName);\n }\n\n const refType = this.schemaUtils.getSchemaRefType(this.schema);\n const $ref = refType?.$ref || null;\n\n // fix schema when enum has length 1+ but value is []\n if (Array.isArray(this.schema.enum)) {\n this.schema.enum = this.schema.enum.filter((key) => key != null);\n }\n\n if (Array.isArray(this.schema.enum) && Array.isArray(this.schema.enum[0])) {\n return this.schemaParserFabric.parseSchema(\n {\n oneOf: this.schema.enum.map((enumNames) => ({\n type: \"array\",\n items: enumNames.map((enumName) => ({\n type: \"string\",\n enum: [enumName],\n })),\n })),\n },\n this.typeName,\n this.schemaPath,\n );\n }\n\n const keyType = this.schemaUtils.getSchemaType(this.schema);\n const enumNames = this.schemaUtils.getEnumNames(this.schema);\n let content = null;\n\n const formatValue = (value) => {\n if (value === null) {\n return this.config.Ts.NullValue(value);\n }\n if (\n keyType.includes(this.schemaUtils.getSchemaType({ type: \"number\" }))\n ) {\n return this.config.Ts.NumberValue(value);\n }\n if (\n keyType.includes(this.schemaUtils.getSchemaType({ type: \"boolean\" }))\n ) {\n return this.config.Ts.BooleanValue(value);\n }\n\n return this.config.Ts.StringValue(value);\n };\n\n if (Array.isArray(enumNames) && lodash.size(enumNames)) {\n content = enumNames.map((enumName, index) => {\n const enumValue = lodash.get(this.schema.enum, index);\n const formattedKey = this.formatEnumKey({\n key: enumName,\n value: enumValue,\n });\n\n if (this.config.enumNamesAsValues || enumValue === undefined) {\n return {\n key: formattedKey,\n type: this.config.Ts.Keyword.String,\n value: this.config.Ts.StringValue(enumName),\n };\n }\n\n return {\n key: formattedKey,\n type: keyType,\n value: formatValue(enumValue),\n };\n });\n } else {\n content = this.schema.enum.map((value) => {\n return {\n key: this.formatEnumKey({ value }),\n type: keyType,\n value: formatValue(value),\n };\n });\n }\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $ref: $ref,\n typeName: this.typeName || ($ref && refType.typeName) || null,\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.ENUM,\n type: SCHEMA_TYPES.ENUM,\n keyType: keyType,\n typeIdentifier: this.config.generateUnionEnums\n ? this.config.Ts.Keyword.Type\n : this.config.Ts.Keyword.Enum,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description,\n ),\n content,\n };\n }\n\n formatEnumKey = ({ key, value }) => {\n let formatted;\n\n if (key) {\n formatted = this.typeNameFormatter.format(key, {\n type: \"enum-key\",\n });\n }\n\n if (!formatted) {\n formatted = this.typeNameFormatter.format(`${value}`, {\n type: \"enum-key\",\n });\n }\n\n return this.enumKeyResolver.resolve([formatted]);\n };\n}\n\nexport { EnumSchemaParser };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass ObjectSchemaParser extends MonoSchemaParser {\n parse() {\n const contentProperties = this.getObjectSchemaContent(this.schema);\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.OBJECT,\n type: SCHEMA_TYPES.OBJECT,\n typeIdentifier: this.config.Ts.Keyword.Interface,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description,\n ),\n allFieldsAreOptional: !contentProperties.some((part) => part.isRequired),\n content: contentProperties,\n };\n }\n\n getObjectSchemaContent = (schema) => {\n const { properties, additionalProperties } = schema || {};\n\n const propertiesContent = lodash.map(properties, (property, name) => {\n const required = this.schemaUtils.isPropertyRequired(\n name,\n property,\n schema,\n );\n const rawTypeData = lodash.get(\n this.schemaUtils.getSchemaRefType(property),\n \"rawTypeData\",\n {},\n );\n const nullable = !!(rawTypeData.nullable || property.nullable);\n const fieldName = this.typeNameFormatter.isValidName(name)\n ? name\n : this.config.Ts.StringValue(name);\n const fieldValue = this.schemaParserFabric\n .createSchemaParser({\n schema: property,\n schemaPath: [...this.schemaPath, name],\n })\n .getInlineParseContent();\n const readOnly = property.readOnly;\n\n return {\n ...property,\n $$raw: property,\n title: property.title,\n description:\n property.description ||\n lodash.compact(\n lodash.map(\n property[this.schemaUtils.getComplexType(property)],\n \"description\",\n ),\n )[0] ||\n rawTypeData.description ||\n lodash.compact(\n lodash.map(\n rawTypeData[this.schemaUtils.getComplexType(rawTypeData)],\n \"description\",\n ),\n )[0] ||\n \"\",\n isRequired: required,\n isNullable: nullable,\n name: fieldName,\n value: fieldValue,\n field: this.config.Ts.TypeField({\n readonly: readOnly && this.config.addReadonly,\n optional: !required,\n key: fieldName,\n value: fieldValue,\n }),\n };\n });\n\n if (additionalProperties) {\n propertiesContent.push({\n $$raw: { additionalProperties },\n description: \"\",\n isRequired: false,\n field: this.config.Ts.InterfaceDynamicField(\n this.config.Ts.Keyword.String,\n this.config.Ts.Keyword.Any,\n ),\n });\n }\n\n return propertiesContent;\n };\n}\n\nexport { ObjectSchemaParser };\n","import { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass PrimitiveSchemaParser extends MonoSchemaParser {\n parse() {\n let contentType = null;\n const { additionalProperties, type, description, items } =\n this.schema || {};\n\n if (type === this.config.Ts.Keyword.Object && additionalProperties) {\n const fieldType =\n typeof additionalProperties === \"object\"\n ? this.schemaParserFabric\n .createSchemaParser({\n schema: additionalProperties,\n schemaPath: this.schemaPath,\n })\n .getInlineParseContent()\n : this.config.Ts.Keyword.Any;\n contentType = this.config.Ts.RecordType(\n this.config.Ts.Keyword.String,\n fieldType,\n );\n }\n\n if (Array.isArray(type) && type.length) {\n contentType = this.schemaParser._complexSchemaParsers.oneOf({\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n oneOf: type.map((type) => ({ type })),\n });\n }\n\n if (Array.isArray(items) && type === SCHEMA_TYPES.ARRAY) {\n contentType = this.config.Ts.Tuple(\n items.map((item) =>\n this.schemaParserFabric\n .createSchemaParser({ schema: item, schemaPath: this.schemaPath })\n .getInlineParseContent(),\n ),\n );\n }\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.PRIMITIVE,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: this.config.Ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(description),\n // TODO: probably it should be refactored. `type === 'null'` is not flexible\n content:\n type === this.config.Ts.Keyword.Null\n ? type\n : contentType || this.schemaUtils.getSchemaType(this.schema),\n };\n }\n}\n\nexport { PrimitiveSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\n// T1 & T2\nclass AllOfSchemaParser extends MonoSchemaParser {\n parse() {\n const ignoreTypes = [this.config.Ts.Keyword.Any];\n const combined = this.schema.allOf.map((childSchema) =>\n this.schemaParserFabric.getInlineParseContent(\n this.schemaUtils.makeAddRequiredToChildSchema(this.schema, childSchema),\n null,\n this.schemaPath,\n ),\n );\n const filtered = this.schemaUtils.filterSchemaContents(\n combined,\n (content) => !ignoreTypes.includes(content),\n );\n\n const type = this.config.Ts.IntersectionType(filtered);\n\n return this.schemaUtils.safeAddNullToType(this.schema, type);\n }\n}\n\nexport { AllOfSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\n// T1 | T2\nclass AnyOfSchemaParser extends MonoSchemaParser {\n parse() {\n const ignoreTypes = [this.config.Ts.Keyword.Any];\n const combined = this.schema.anyOf.map((childSchema) =>\n this.schemaParserFabric.getInlineParseContent(\n this.schemaUtils.makeAddRequiredToChildSchema(this.schema, childSchema),\n null,\n this.schemaPath,\n ),\n );\n\n const filtered = this.schemaUtils.filterSchemaContents(\n combined,\n (content) => !ignoreTypes.includes(content),\n );\n\n const type = this.config.Ts.UnionType(filtered);\n\n return this.schemaUtils.safeAddNullToType(this.schema, type);\n }\n}\n\nexport { AnyOfSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass NotSchemaParser extends MonoSchemaParser {\n parse() {\n return this.config.Ts.Keyword.Any;\n }\n}\n\nexport { NotSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\n// T1 | T2\nclass OneOfSchemaParser extends MonoSchemaParser {\n parse() {\n const ignoreTypes = [this.config.Ts.Keyword.Any];\n const combined = this.schema.oneOf.map((childSchema) =>\n this.schemaParserFabric.getInlineParseContent(\n this.schemaUtils.makeAddRequiredToChildSchema(this.schema, childSchema),\n null,\n this.schemaPath,\n ),\n );\n\n const filtered = this.schemaUtils.filterSchemaContents(\n combined,\n (content) => !ignoreTypes.includes(content),\n );\n\n const type = this.config.Ts.UnionType(filtered);\n\n return this.schemaUtils.safeAddNullToType(this.schema, type);\n }\n}\n\nexport { OneOfSchemaParser };\n","import lodash from \"lodash\";\n\nfunction internalCase(value) {\n return lodash.camelCase(lodash.lowerCase(value));\n}\n\nexport { internalCase };\n","import lodash from \"lodash\";\n\nfunction pascalCase(value) {\n return lodash.upperFirst(lodash.camelCase(value));\n}\n\nexport { pascalCase };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../constants.js\";\nimport { internalCase } from \"../util/internal-case.js\";\nimport { pascalCase } from \"../util/pascal-case.js\";\n\nclass SchemaUtils {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaWalker} */\n schemaWalker;\n\n constructor({\n config,\n schemaComponentsMap,\n typeNameFormatter,\n schemaWalker,\n }) {\n this.config = config;\n this.schemaComponentsMap = schemaComponentsMap;\n this.typeNameFormatter = typeNameFormatter;\n this.schemaWalker = schemaWalker;\n }\n\n getRequiredProperties = (schema) => {\n return lodash.uniq(\n (schema && Array.isArray(schema.required) && schema.required) || [],\n );\n };\n\n isRefSchema = (schema) => {\n return !!schema?.$ref;\n };\n\n getEnumNames = (schema) => {\n return (\n schema[\"x-enumNames\"] ||\n schema.xEnumNames ||\n schema[\"x-enumnames\"] ||\n schema[\"x-enum-varnames\"]\n );\n };\n\n getSchemaRefType = (schema) => {\n if (!this.isRefSchema(schema)) return null;\n // const resolved = this.schemaWalker.findByRef(schema.$ref);\n return this.schemaComponentsMap.get(schema.$ref);\n };\n\n isPropertyRequired = (name, propertySchema, rootSchema) => {\n if (propertySchema[\"x-omitempty\"] === false) {\n return true;\n }\n\n const isRequired =\n typeof propertySchema.required === \"boolean\"\n ? !!propertySchema.required\n : Array.isArray(rootSchema.required)\n ? rootSchema.required.includes(name)\n : !!rootSchema.required;\n\n if (this.config.convertedFromSwagger2) {\n return typeof propertySchema.nullable === this.config.Ts.Keyword.Undefined\n ? isRequired\n : !propertySchema.nullable;\n }\n return isRequired;\n };\n\n isNullMissingInType = (schema, type) => {\n const { nullable, type: schemaType } = schema || {};\n return (\n (nullable ||\n !!lodash.get(schema, \"x-nullable\") ||\n schemaType === this.config.Ts.Keyword.Null) &&\n typeof type === \"string\" &&\n !type.includes(` ${this.config.Ts.Keyword.Null}`) &&\n !type.includes(`${this.config.Ts.Keyword.Null} `)\n );\n };\n\n safeAddNullToType = (schema, type) => {\n if (this.isNullMissingInType(schema, type)) {\n return this.config.Ts.UnionType([type, this.config.Ts.Keyword.Null]);\n }\n return type;\n };\n\n getSchemaPrimitiveType = (rawSchema) => {\n const schema = rawSchema || {};\n\n if (schema.type) {\n return internalCase(schema.type);\n }\n if (schema.enum) {\n const enumFieldType = typeof schema.enum[0];\n if (enumFieldType === this.config.Ts.Keyword.Undefined) return;\n\n return internalCase(enumFieldType);\n }\n if (lodash.keys(schema.properties).length) {\n return SCHEMA_TYPES.OBJECT;\n }\n if (schema.items) {\n return SCHEMA_TYPES.ARRAY;\n }\n\n return null;\n };\n\n checkAndAddRequiredKeys = (schema, resultType) => {\n if (\"$$requiredKeys\" in schema && schema.$$requiredKeys.length) {\n this.config.update({\n internalTemplateOptions: {\n addUtilRequiredKeysType: true,\n },\n });\n return this.config.Ts.TypeWithGeneric(\n this.config.Ts.CodeGenKeyword.UtilRequiredKeys,\n [\n resultType,\n this.config.Ts.UnionType(\n schema.$$requiredKeys.map(this.config.Ts.StringValue),\n ),\n ],\n );\n }\n\n return resultType;\n };\n\n makeAddRequiredToChildSchema = (parentSchema, childSchema) => {\n if (!childSchema) return childSchema;\n\n const required = lodash.uniq([\n ...this.getRequiredProperties(parentSchema),\n ...this.getRequiredProperties(childSchema),\n ]);\n\n const refData = this.getSchemaRefType(childSchema);\n\n if (refData) {\n const refObjectProperties = lodash.keys(\n refData.rawTypeData?.properties || {},\n );\n const existedRequiredKeys = refObjectProperties.filter((key) =>\n required.includes(key),\n );\n\n if (!existedRequiredKeys.length) return childSchema;\n\n return {\n ...childSchema,\n $$requiredKeys: existedRequiredKeys,\n };\n }\n\n if (childSchema.properties) {\n const childSchemaProperties = lodash.keys(childSchema.properties);\n const existedRequiredKeys = childSchemaProperties.filter((key) =>\n required.includes(key),\n );\n\n if (!existedRequiredKeys.length) return childSchema;\n\n return {\n required: lodash.uniq([\n ...this.getRequiredProperties(childSchema),\n ...existedRequiredKeys,\n ]),\n ...childSchema,\n };\n }\n\n return childSchema;\n };\n\n filterSchemaContents = (contents, filterFn) => {\n return lodash.uniq(contents.filter((type) => filterFn(type)));\n };\n\n resolveTypeName = (\n typeName,\n { suffixes, resolver, prefixes, shouldReserve = true },\n ) => {\n if (resolver) {\n return this.config.componentTypeNameResolver.resolve(null, (reserved) => {\n return resolver(pascalCase(typeName), reserved);\n });\n }\n\n return this.config.componentTypeNameResolver.resolve(\n [\n ...(prefixes || []).map((prefix) =>\n pascalCase(`${prefix} ${typeName}`),\n ),\n ...(suffixes || []).map((suffix) =>\n pascalCase(`${typeName} ${suffix}`),\n ),\n ],\n shouldReserve,\n );\n };\n\n getComplexType = (schema) => {\n if (schema.oneOf) return SCHEMA_TYPES.COMPLEX_ONE_OF;\n if (schema.allOf) return SCHEMA_TYPES.COMPLEX_ALL_OF;\n if (schema.anyOf) return SCHEMA_TYPES.COMPLEX_ANY_OF;\n // TODO :(\n if (schema.not) return SCHEMA_TYPES.COMPLEX_NOT;\n\n return SCHEMA_TYPES.COMPLEX_UNKNOWN;\n };\n\n getInternalSchemaType = (schema) => {\n if (\n !lodash.isEmpty(schema.enum) ||\n !lodash.isEmpty(this.getEnumNames(schema))\n ) {\n return SCHEMA_TYPES.ENUM;\n }\n if (schema.discriminator) {\n return SCHEMA_TYPES.DISCRIMINATOR;\n }\n if (schema.allOf || schema.oneOf || schema.anyOf || schema.not) {\n return SCHEMA_TYPES.COMPLEX;\n }\n if (!lodash.isEmpty(schema.properties)) {\n return SCHEMA_TYPES.OBJECT;\n }\n if (schema.type === SCHEMA_TYPES.ARRAY) {\n return SCHEMA_TYPES.ARRAY;\n }\n\n return SCHEMA_TYPES.PRIMITIVE;\n };\n\n getSchemaType = (schema) => {\n if (!schema) return this.config.Ts.Keyword.Any;\n\n const refTypeInfo = this.getSchemaRefType(schema);\n\n if (refTypeInfo) {\n return this.checkAndAddRequiredKeys(\n schema,\n this.safeAddNullToType(\n schema,\n this.typeNameFormatter.format(refTypeInfo.typeName),\n ),\n );\n }\n\n let resultType;\n\n if (this.isConstantSchema(schema)) {\n resultType = this.formatJsValue(schema.const);\n } else {\n const primitiveType = this.getSchemaPrimitiveType(schema);\n\n if (primitiveType == null) {\n return this.config.Ts.Keyword.Any;\n }\n\n const typeAlias =\n lodash.get(this.config.primitiveTypes, [\n primitiveType,\n schema.format,\n ]) ||\n lodash.get(this.config.primitiveTypes, [primitiveType, \"$default\"]) ||\n this.config.primitiveTypes[primitiveType];\n\n if (typeof typeAlias === \"function\") {\n resultType = typeAlias(schema, this);\n } else {\n resultType = typeAlias || primitiveType;\n }\n }\n\n if (!resultType) {\n return this.config.Ts.Keyword.Any;\n }\n\n return this.checkAndAddRequiredKeys(\n schema,\n this.safeAddNullToType(schema, resultType),\n );\n };\n\n buildTypeNameFromPath = (schemaPath) => {\n schemaPath = lodash.uniq(lodash.compact(schemaPath));\n\n if (!schemaPath || !schemaPath[0]) return null;\n\n return pascalCase(\n lodash.camelCase(\n lodash\n .uniq([schemaPath[0], schemaPath[schemaPath.length - 1]])\n .join(\"_\"),\n ),\n );\n };\n\n isConstantSchema(schema) {\n return \"const\" in schema;\n }\n\n formatJsValue = (value) => {\n switch (typeof value) {\n case \"string\": {\n return this.config.Ts.StringValue(value);\n }\n case \"boolean\": {\n return this.config.Ts.BooleanValue(value);\n }\n case \"number\": {\n return this.config.Ts.NumberValue(value);\n }\n default: {\n if (value === null) {\n return this.config.Ts.NullValue(value);\n }\n\n return this.config.Ts.Keyword.Any;\n }\n }\n };\n}\n\nexport { SchemaUtils };\n","import { SchemaFormatters } from \"./schema-formatters.js\";\nimport { SchemaParser } from \"./schema-parser.js\";\nimport { SchemaUtils } from \"./schema-utils.js\";\n\nclass SchemaParserFabric {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaFormatters} */\n schemaFormatters;\n /** @type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaUtils} */\n schemaUtils;\n /** @type {SchemaWalker} */\n schemaWalker;\n\n constructor({\n config,\n templatesWorker,\n schemaComponentsMap,\n typeNameFormatter,\n schemaWalker,\n }) {\n this.config = config;\n this.schemaComponentsMap = schemaComponentsMap;\n this.typeNameFormatter = typeNameFormatter;\n this.templatesWorker = templatesWorker;\n this.schemaWalker = schemaWalker;\n this.schemaUtils = new SchemaUtils(this);\n this.schemaFormatters = new SchemaFormatters(this);\n }\n\n createSchemaParser = ({ schema, typeName, schemaPath }) => {\n return new SchemaParser(this, { schema, typeName, schemaPath });\n };\n\n /**\n *\n * @param content schema content\n * @param linkedSchema link content to attached schema\n * @param linkedComponent link content and other schema props to attached component\n * @param schemaPath\n * @param otherSchemaProps\n * @returns {{}}\n */\n createSchema = ({\n content,\n linkedSchema = {},\n linkedComponent,\n schemaPath,\n ...otherSchemaProps\n }) => {\n const parser = this.createSchemaParser({\n schema: linkedComponent || linkedSchema,\n schemaPath,\n });\n const parsed = parser.parseSchema();\n parsed.content = content;\n Object.assign(parsed, otherSchemaProps);\n if (linkedComponent) {\n linkedComponent.typeData = parsed;\n }\n return parser.schema;\n };\n\n createParsedComponent = ({ typeName, schema, schemaPath }) => {\n const schemaCopy = structuredClone(schema);\n const customComponent = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\"components\", \"schemas\", typeName]),\n schemaCopy,\n );\n const parsed = this.parseSchema(schemaCopy, null, schemaPath);\n\n parsed.name = typeName;\n customComponent.typeData = parsed;\n\n return customComponent;\n };\n\n /**\n *\n * @param schema {any}\n * @param typeName {null | string}\n * @param [schemaPath] {string[]}\n * @return {Record<string, any>}\n */\n parseSchema = (schema, typeName = null, schemaPath = []) => {\n const schemaParser = this.createSchemaParser({\n schema,\n typeName,\n schemaPath,\n });\n return schemaParser.parseSchema();\n };\n\n /**\n *\n * @param schema {any}\n * @param typeName {null | string}\n * @param [schemaPath] {string[]}\n * @return {Record<string, any>}\n */\n getInlineParseContent = (schema, typeName, schemaPath) => {\n const parser = this.createSchemaParser({ schema, typeName, schemaPath });\n return parser.getInlineParseContent();\n };\n\n /**\n *\n * @param schema {any}\n * @param typeName {null | string}\n * @param [schemaPath] {string[]}\n * @return {Record<string, any>}\n */\n getParseContent = (schema, typeName, schemaPath) => {\n const parser = this.createSchemaParser({ schema, typeName, schemaPath });\n return parser.getParseContent();\n };\n}\n\nexport { SchemaParserFabric };\n","import * as nanoid from \"nanoid\";\n\nconst ALPHABET = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n\nconst generateId = nanoid.customAlphabet(ALPHABET, 12);\n\nexport { generateId };\n","import { consola } from \"consola\";\nimport { NameResolver } from \"../../util/name-resolver.js\";\n\nclass SpecificArgNameResolver extends NameResolver {\n counter = 1;\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames) {\n super(config, reservedNames, (variants) => {\n const generatedVariant =\n (variants[0] && `${variants[0]}${this.counter++}`) ||\n `${this.config.specificArgNameResolverName}${this.counter++}`;\n consola.debug(\n \"generated fallback type name for specific arg - \",\n generatedVariant,\n );\n return generatedVariant;\n });\n }\n}\n\nexport { SpecificArgNameResolver };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\nimport {\n DEFAULT_BODY_ARG_NAME,\n RESERVED_BODY_ARG_NAMES,\n RESERVED_HEADER_ARG_NAMES,\n RESERVED_PATH_ARG_NAMES,\n RESERVED_QUERY_ARG_NAMES,\n} from \"../constants.js\";\nimport { generateId } from \"../util/id.js\";\nimport { SpecificArgNameResolver } from \"./util/specific-arg-name-resolver.js\";\n\nconst CONTENT_KIND = {\n JSON: \"JSON\",\n URL_ENCODED: \"URL_ENCODED\",\n FORM_DATA: \"FORM_DATA\",\n IMAGE: \"IMAGE\",\n OTHER: \"OTHER\",\n TEXT: \"TEXT\",\n};\n\nclass SchemaRoutes {\n /**\n * @type {CodeGenConfig}\n */\n config;\n /**\n * @type {SchemaParserFabric}\n */\n schemaParserFabric;\n /**\n * @type {SchemaUtils}\n */\n schemaUtils;\n /**\n * @type {TypeNameFormatter}\n */\n typeNameFormatter;\n /**\n * @type {SchemaComponentsMap}\n */\n schemaComponentsMap;\n /**\n * @type {TemplatesWorker}\n */\n templatesWorker;\n\n FORM_DATA_TYPES = [];\n\n routes = [];\n hasSecurityRoutes = false;\n hasQueryRoutes = false;\n hasFormDataRoutes = false;\n\n constructor({\n config,\n schemaParserFabric,\n schemaComponentsMap,\n templatesWorker,\n typeNameFormatter,\n }) {\n this.config = config;\n this.schemaParserFabric = schemaParserFabric;\n this.schemaUtils = this.schemaParserFabric.schemaUtils;\n this.typeNameFormatter = typeNameFormatter;\n this.schemaComponentsMap = schemaComponentsMap;\n this.templatesWorker = templatesWorker;\n\n this.FORM_DATA_TYPES = lodash.uniq([\n this.schemaUtils.getSchemaType({ type: \"string\", format: \"file\" }),\n this.schemaUtils.getSchemaType({ type: \"string\", format: \"binary\" }),\n ]);\n }\n\n createRequestsMap = (routeInfoByMethodsMap) => {\n const parameters = lodash.get(routeInfoByMethodsMap, \"parameters\");\n\n return lodash.reduce(\n routeInfoByMethodsMap,\n (acc, requestInfo, method) => {\n if (\n method.startsWith(\"x-\") ||\n [\"parameters\", \"$ref\"].includes(method)\n ) {\n return acc;\n }\n\n acc[method] = {\n ...requestInfo,\n parameters: lodash.compact(\n lodash.concat(parameters, requestInfo.parameters),\n ),\n };\n\n return acc;\n },\n {},\n );\n };\n\n parseRouteName = (originalRouteName) => {\n const routeName =\n this.config.hooks.onPreBuildRoutePath(originalRouteName) ||\n originalRouteName;\n\n const pathParamMatches = (routeName || \"\").match(\n /({(([A-z]){1}([a-zA-Z0-9]-?_?\\.?)+)([0-9]+)?})|(:(([A-z]){1}([a-zA-Z0-9]-?_?\\.?)+)([0-9]+)?:?)/g,\n );\n\n // used in case when path parameters is not declared in requestInfo.parameters (\"in\": \"path\")\n const pathParams = lodash.reduce(\n pathParamMatches,\n (pathParams, match) => {\n const paramName = match.replace(/\\{|\\}|:/g, \"\");\n\n if (!paramName) return pathParams;\n\n if (paramName.includes(\"-\")) {\n consola.warn(\"wrong path param name\", paramName);\n }\n\n pathParams.push({\n $match: match,\n name: lodash.camelCase(paramName),\n required: true,\n type: \"string\",\n description: \"\",\n schema: {\n type: \"string\",\n },\n in: \"path\",\n });\n\n return pathParams;\n },\n [],\n );\n\n let fixedRoute = pathParams.reduce((fixedRoute, pathParam, i, arr) => {\n const insertion =\n this.config.hooks.onInsertPathParam(\n pathParam.name,\n i,\n arr,\n fixedRoute,\n ) || pathParam.name;\n return fixedRoute.replace(pathParam.$match, `\\${${insertion}}`);\n }, routeName || \"\");\n\n const queryParamMatches = fixedRoute.match(/(\\{\\?.*\\})/g);\n const queryParams = [];\n\n if (queryParamMatches?.length) {\n for (const match of queryParamMatches) {\n fixedRoute = fixedRoute.replace(match, \"\");\n }\n\n const paramNames = lodash.uniq(\n queryParamMatches\n .join(\",\")\n .replace(/(\\{\\?)|(\\})|\\s/g, \"\")\n .split(\",\"),\n );\n\n for (const paramName of paramNames) {\n if (paramName.includes(\"-\")) {\n consola.warn(\"wrong query param name\", paramName);\n }\n\n queryParams.push({\n $match: paramName,\n name: lodash.camelCase(paramName),\n required: true,\n type: \"string\",\n description: \"\",\n schema: {\n type: \"string\",\n },\n in: \"query\",\n });\n }\n }\n\n const result = {\n originalRoute: originalRouteName || \"\",\n route: fixedRoute,\n pathParams,\n queryParams,\n };\n\n return this.config.hooks.onBuildRoutePath(result) || result;\n };\n\n getRouteParams = (\n routeInfo,\n pathParamsFromRouteName,\n queryParamsFromRouteName,\n ) => {\n const { parameters } = routeInfo;\n\n const routeParams = {\n path: [],\n header: [],\n body: [],\n query: [],\n formData: [],\n cookie: [],\n };\n\n lodash.each(parameters, (parameter) => {\n const refTypeInfo =\n this.schemaParserFabric.schemaUtils.getSchemaRefType(parameter);\n let routeParam = null;\n\n if (refTypeInfo?.rawTypeData.in && refTypeInfo.rawTypeData) {\n if (!routeParams[refTypeInfo.rawTypeData.in]) {\n routeParams[refTypeInfo.rawTypeData.in] = [];\n }\n\n routeParam = {\n ...refTypeInfo.rawTypeData,\n ...(refTypeInfo.rawTypeData.schema || {}),\n };\n } else {\n if (!parameter.in) return;\n\n if (!routeParams[parameter.in]) {\n routeParams[parameter.in] = [];\n }\n\n routeParam = {\n ...parameter,\n ...(parameter.schema || {}),\n };\n }\n\n if (routeParam.in === \"path\") {\n if (!routeParam.name) return;\n\n routeParam.name = lodash.camelCase(routeParam.name);\n }\n\n if (routeParam) {\n routeParams[routeParam.in].push(routeParam);\n }\n });\n\n // used in case when path parameters is not declared in requestInfo.parameters (\"in\": \"path\")\n for (const pathParam of pathParamsFromRouteName) {\n const alreadyExist = routeParams.path.some(\n (parameter) => parameter.name === pathParam.name,\n );\n\n if (!alreadyExist) {\n routeParams.path.push(pathParam);\n }\n }\n\n // used in case when path parameters is not declared in requestInfo.parameters (\"in\": \"path\")\n for (const queryParam of queryParamsFromRouteName) {\n const alreadyExist = routeParams.query.some(\n (parameter) => parameter.name === queryParam.name,\n );\n\n if (!alreadyExist) {\n routeParams.query.push(queryParam);\n }\n }\n\n return routeParams;\n };\n\n getContentTypes = (requestInfo, extraContentTypes) =>\n lodash.uniq(\n lodash.compact([\n ...(extraContentTypes || []),\n ...lodash.flatten(\n lodash.map(\n requestInfo,\n (requestInfoData) =>\n requestInfoData && lodash.keys(requestInfoData.content),\n ),\n ),\n ]),\n );\n\n getContentKind = (contentTypes) => {\n if (\n contentTypes.some((contentType) =>\n contentType.startsWith(\"application/json\"),\n ) ||\n contentTypes.some((contentType) => contentType.endsWith(\"+json\"))\n ) {\n return CONTENT_KIND.JSON;\n }\n\n if (contentTypes.includes(\"application/x-www-form-urlencoded\")) {\n return CONTENT_KIND.URL_ENCODED;\n }\n\n if (contentTypes.includes(\"multipart/form-data\")) {\n return CONTENT_KIND.FORM_DATA;\n }\n\n if (contentTypes.some((contentType) => contentType.includes(\"image/\"))) {\n return CONTENT_KIND.IMAGE;\n }\n\n if (contentTypes.some((contentType) => contentType.startsWith(\"text/\"))) {\n return CONTENT_KIND.TEXT;\n }\n\n return CONTENT_KIND.OTHER;\n };\n\n isSuccessStatus = (status) =>\n (this.config.defaultResponseAsSuccess && status === \"default\") ||\n (+status >= this.config.successResponseStatusRange[0] &&\n +status <= this.config.successResponseStatusRange[1]) ||\n status === \"2xx\";\n\n getSchemaFromRequestType = (requestInfo) => {\n const content = lodash.get(requestInfo, \"content\");\n\n if (!content) return null;\n\n /* content: { \"multipart/form-data\": { schema: {...} }, \"application/json\": { schema: {...} } } */\n\n /* for example: dataType = \"multipart/form-data\" */\n for (const dataType in content) {\n if (content[dataType]?.schema) {\n return {\n ...content[dataType].schema,\n dataType,\n };\n }\n }\n\n return null;\n };\n\n getTypeFromRequestInfo = ({\n requestInfo,\n parsedSchemas,\n operationId,\n defaultType,\n typeName,\n }) => {\n // TODO: make more flexible pick schema without content type\n const schema = this.getSchemaFromRequestType(requestInfo);\n const refTypeInfo =\n this.schemaParserFabric.schemaUtils.getSchemaRefType(requestInfo);\n\n if (schema) {\n const content = this.schemaParserFabric.getInlineParseContent(\n schema,\n typeName,\n [operationId],\n );\n const foundedSchemaByName = parsedSchemas.find(\n (parsedSchema) =>\n this.typeNameFormatter.format(parsedSchema.name) === content,\n );\n const foundSchemaByContent = parsedSchemas.find((parsedSchema) =>\n lodash.isEqual(parsedSchema.content, content),\n );\n\n const foundSchema = foundedSchemaByName || foundSchemaByContent;\n\n return foundSchema\n ? this.typeNameFormatter.format(foundSchema.name)\n : content;\n }\n\n if (refTypeInfo) {\n // const refTypeWithoutOpId = refType.replace(operationId, '');\n // const foundedSchemaByName = _.find(parsedSchemas, ({ name }) => name === refType || name === refTypeWithoutOpId)\n\n // TODO:HACK fix problem of swagger2opeanpi\n const typeNameWithoutOpId = refTypeInfo.typeName.replace(operationId, \"\");\n if (parsedSchemas.find((schema) => schema.name === typeNameWithoutOpId)) {\n return this.typeNameFormatter.format(typeNameWithoutOpId);\n }\n\n switch (refTypeInfo.componentName) {\n case \"schemas\":\n return this.typeNameFormatter.format(refTypeInfo.typeName);\n case \"responses\":\n case \"requestBodies\":\n return this.schemaParserFabric.getInlineParseContent(\n this.getSchemaFromRequestType(refTypeInfo.rawTypeData),\n refTypeInfo.typeName || null,\n [operationId],\n );\n default:\n return this.schemaParserFabric.getInlineParseContent(\n refTypeInfo.rawTypeData,\n refTypeInfo.typeName || null,\n [operationId],\n );\n }\n }\n\n return defaultType || this.config.Ts.Keyword.Any;\n };\n\n getRequestInfoTypes = ({\n requestInfos,\n parsedSchemas,\n operationId,\n defaultType,\n }) =>\n lodash.reduce(\n requestInfos,\n (acc, requestInfo, status) => {\n const contentTypes = this.getContentTypes([requestInfo]);\n\n return [\n ...acc,\n {\n ...(requestInfo || {}),\n contentTypes: contentTypes,\n contentKind: this.getContentKind(contentTypes),\n type: this.schemaParserFabric.schemaUtils.safeAddNullToType(\n requestInfo,\n this.getTypeFromRequestInfo({\n requestInfo,\n parsedSchemas,\n operationId,\n defaultType,\n }),\n ),\n description:\n this.schemaParserFabric.schemaFormatters.formatDescription(\n requestInfo.description || \"\",\n true,\n ),\n status: Number.isNaN(+status) ? status : +status,\n isSuccess: this.isSuccessStatus(status),\n },\n ];\n },\n [],\n );\n\n getResponseBodyInfo = (routeInfo, parsedSchemas) => {\n const { produces, operationId, responses } = routeInfo;\n\n const contentTypes = this.getContentTypes(responses, [\n ...(produces || []),\n routeInfo[\"x-accepts\"],\n ]);\n\n const responseInfos = this.getRequestInfoTypes({\n requestInfos: responses,\n parsedSchemas,\n operationId,\n defaultType: this.config.defaultResponseType,\n });\n\n const successResponse = responseInfos.find(\n (response) => response.isSuccess,\n );\n const errorResponses = responseInfos.filter(\n (response) =>\n !response.isSuccess && response.type !== this.config.Ts.Keyword.Any,\n );\n\n const handleResponseHeaders = (src) => {\n if (!src) {\n return \"headers: {},\";\n }\n const headerTypes = Object.fromEntries(\n Object.entries(src).map(([k, v]) => {\n return [k, this.schemaUtils.getSchemaType(v)];\n }),\n );\n const r = `headers: { ${Object.entries(headerTypes)\n .map(([k, v]) => `\"${k}\": ${v}`)\n .join(\",\")} },`;\n return r;\n };\n\n return {\n contentTypes,\n responses: responseInfos,\n success: {\n schema: successResponse,\n type: successResponse?.type || this.config.Ts.Keyword.Any,\n },\n error: {\n schemas: errorResponses,\n type:\n this.config.Ts.UnionType(\n errorResponses.map((response) => response.type),\n ) || this.config.Ts.Keyword.Any,\n },\n full: {\n types:\n this.config.Ts.UnionType(\n responseInfos.map(\n (response) => `{\n data: ${response.type}, status: ${response.status}, statusCode: ${\n response.status\n }, statusText: \"${response.description}\", ${handleResponseHeaders(\n response.headers,\n )} config: {} }`,\n ),\n ) || this.config.Ts.Keyword.Any,\n },\n };\n };\n\n convertRouteParamsIntoObject = (params) => {\n return params.reduce(\n (objectSchema, schemaPart) => {\n if (!schemaPart || !schemaPart.name) return objectSchema;\n\n let usageName = `${schemaPart.name}`;\n\n if (usageName.includes(\".\")) {\n usageName = lodash.camelCase(usageName);\n }\n\n return {\n ...objectSchema,\n properties: {\n ...objectSchema.properties,\n [usageName]: {\n ...schemaPart,\n ...(schemaPart.schema || {}),\n $origName: schemaPart.name,\n name: usageName,\n },\n },\n };\n },\n {\n properties: {},\n type: \"object\",\n },\n );\n };\n\n getRequestBodyInfo = (routeInfo, routeParams, parsedSchemas, routeName) => {\n const { requestBody, consumes, requestBodyName, operationId } = routeInfo;\n let schema = null;\n let content = null;\n\n const contentTypes = this.getContentTypes(\n [requestBody],\n [...(consumes || []), routeInfo[\"x-contentType\"]],\n );\n let contentKind = this.getContentKind(contentTypes);\n\n let typeName = null;\n\n if (this.config.extractRequestBody) {\n typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.requestBodySuffix,\n resolver: this.config.extractingOptions.requestBodyNameResolver,\n });\n }\n\n if (routeParams.formData.length) {\n contentKind = CONTENT_KIND.FORM_DATA;\n schema = this.convertRouteParamsIntoObject(routeParams.formData);\n content = this.schemaParserFabric.getInlineParseContent(\n schema,\n typeName,\n [operationId],\n );\n } else if (contentKind === CONTENT_KIND.FORM_DATA) {\n schema = this.getSchemaFromRequestType(requestBody);\n content = this.schemaParserFabric.getInlineParseContent(\n schema,\n typeName,\n [operationId],\n );\n } else if (requestBody) {\n schema = this.getSchemaFromRequestType(requestBody);\n content = this.schemaParserFabric.schemaUtils.safeAddNullToType(\n requestBody,\n this.getTypeFromRequestInfo({\n requestInfo: requestBody,\n parsedSchemas,\n operationId,\n typeName,\n }),\n );\n\n // TODO: Refactor that.\n // It needed for cases when swagger schema is not declared request body type as form data\n // but request body data type contains form data types like File\n if (\n this.FORM_DATA_TYPES.some((dataType) =>\n content.includes(`: ${dataType}`),\n )\n ) {\n contentKind = CONTENT_KIND.FORM_DATA;\n }\n }\n\n if (schema && !schema.$ref && this.config.extractRequestBody) {\n schema = this.schemaParserFabric.createParsedComponent({\n schema,\n typeName,\n schemaPath: [operationId],\n });\n content = this.schemaParserFabric.getInlineParseContent({\n $ref: schema.$ref,\n });\n }\n\n return {\n paramName: requestBodyName || requestBody?.name || DEFAULT_BODY_ARG_NAME,\n contentTypes,\n contentKind,\n schema,\n type: content,\n required:\n requestBody &&\n (typeof requestBody.required === \"undefined\" || !!requestBody.required),\n };\n };\n\n createRequestParamsSchema = ({\n queryParams,\n queryObjectSchema,\n pathArgsSchemas,\n extractRequestParams,\n routeName,\n }) => {\n if (!queryParams || !queryParams.length) return null;\n\n const pathParams = pathArgsSchemas.reduce((acc, pathArgSchema) => {\n if (pathArgSchema.name) {\n acc[pathArgSchema.name] = {\n ...pathArgSchema,\n in: \"path\",\n };\n }\n\n return acc;\n }, {});\n\n const fixedQueryParams = lodash.reduce(\n lodash.get(queryObjectSchema, \"properties\", {}),\n (acc, property, name) => {\n if (name && typeof property === \"object\") {\n acc[name] = {\n ...property,\n in: \"query\",\n };\n }\n\n return acc;\n },\n {},\n );\n\n const schema = {\n ...queryObjectSchema,\n properties: {\n ...fixedQueryParams,\n ...pathParams,\n },\n };\n\n const fixedSchema = this.config.hooks.onCreateRequestParams(schema);\n\n if (fixedSchema) return fixedSchema;\n\n if (extractRequestParams) {\n const generatedTypeName = this.schemaUtils.resolveTypeName(\n routeName.usage,\n {\n suffixes: this.config.extractingOptions.requestParamsSuffix,\n resolver: this.config.extractingOptions.requestParamsNameResolver,\n },\n );\n\n return this.schemaParserFabric.createParsedComponent({\n typeName: generatedTypeName,\n schema: schema,\n });\n }\n\n return schema;\n };\n\n extractResponseBodyIfItNeeded = (routeInfo, responseBodyInfo, routeName) => {\n if (\n responseBodyInfo.responses.length &&\n responseBodyInfo.success &&\n responseBodyInfo.success.schema\n ) {\n const typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.responseBodySuffix,\n resolver: this.config.extractingOptions.responseBodyNameResolver,\n });\n\n const idx = responseBodyInfo.responses.indexOf(\n responseBodyInfo.success.schema,\n );\n\n const successResponse = responseBodyInfo.success;\n\n if (successResponse.schema && !successResponse.schema.$ref) {\n const contentKind = successResponse.schema.contentKind;\n const schema = this.getSchemaFromRequestType(successResponse.schema);\n successResponse.schema = this.schemaParserFabric.createParsedComponent({\n schema,\n typeName,\n schemaPath: [routeInfo.operationId],\n });\n successResponse.schema.contentKind = contentKind;\n successResponse.type = this.schemaParserFabric.getInlineParseContent({\n $ref: successResponse.schema.$ref,\n });\n\n if (idx > -1) {\n lodash.assign(responseBodyInfo.responses[idx], {\n ...successResponse.schema,\n type: successResponse.type,\n });\n }\n }\n }\n };\n\n extractResponseErrorIfItNeeded = (routeInfo, responseBodyInfo, routeName) => {\n if (\n responseBodyInfo.responses.length &&\n responseBodyInfo.error.schemas &&\n responseBodyInfo.error.schemas.length\n ) {\n const typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.responseErrorSuffix,\n resolver: this.config.extractingOptions.responseErrorNameResolver,\n });\n\n const errorSchemas = responseBodyInfo.error.schemas\n .map(this.getSchemaFromRequestType)\n .filter(Boolean);\n\n if (!errorSchemas.length) return;\n\n const schema = this.schemaParserFabric.parseSchema(\n {\n oneOf: errorSchemas,\n title: errorSchemas\n .map((schema) => schema.title)\n .filter(Boolean)\n .join(\" \"),\n description: errorSchemas\n .map((schema) => schema.description)\n .filter(Boolean)\n .join(\"\\n\"),\n },\n null,\n [routeInfo.operationId],\n );\n const component = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\"components\", \"schemas\", typeName]),\n { ...schema },\n );\n responseBodyInfo.error.schemas = [component];\n responseBodyInfo.error.type = this.typeNameFormatter.format(\n component.typeName,\n );\n }\n };\n\n getRouteName = (rawRouteInfo) => {\n const { moduleName } = rawRouteInfo;\n const { routeNameDuplicatesMap, templatesToRender } = this.config;\n const routeNameTemplate = templatesToRender.routeName;\n\n const routeNameFromTemplate = this.templatesWorker.renderTemplate(\n routeNameTemplate,\n {\n routeInfo: rawRouteInfo,\n },\n );\n\n const routeName =\n this.config.hooks.onFormatRouteName(\n rawRouteInfo,\n routeNameFromTemplate,\n ) || routeNameFromTemplate;\n\n const duplicateIdentifier = `${moduleName}|${routeName}`;\n\n if (routeNameDuplicatesMap.has(duplicateIdentifier)) {\n routeNameDuplicatesMap.set(\n duplicateIdentifier,\n routeNameDuplicatesMap.get(duplicateIdentifier) + 1,\n );\n\n consola.warn(\n `Module \"${moduleName}\" already has method \"${routeName}()\".`,\n `This method has been renamed to \"${\n routeName + routeNameDuplicatesMap.get(duplicateIdentifier)\n }()\" to solve conflict names.`,\n );\n } else {\n routeNameDuplicatesMap.set(duplicateIdentifier, 1);\n }\n\n const duplicates = routeNameDuplicatesMap.get(duplicateIdentifier);\n\n const routeNameInfo = {\n usage: routeName + (duplicates > 1 ? duplicates : \"\"),\n original: routeName,\n duplicate: duplicates > 1,\n };\n\n return (\n this.config.hooks.onCreateRouteName(routeNameInfo, rawRouteInfo) ||\n routeNameInfo\n );\n };\n\n parseRouteInfo = (\n rawRouteName,\n routeInfo,\n method,\n usageSchema,\n parsedSchemas,\n ) => {\n const { security: globalSecurity } = usageSchema;\n const { moduleNameIndex, moduleNameFirstTag, extractRequestParams } =\n this.config;\n const {\n operationId,\n requestBody,\n security,\n parameters,\n summary,\n description,\n tags,\n responses,\n requestBodyName,\n produces,\n consumes,\n ...otherInfo\n } = routeInfo;\n const {\n route,\n pathParams: pathParamsFromRouteName,\n queryParams: queryParamsFromRouteName,\n } = this.parseRouteName(rawRouteName);\n\n const routeId = generateId();\n const firstTag = tags && tags.length > 0 ? tags[0] : null;\n const moduleName =\n moduleNameFirstTag && firstTag\n ? lodash.camelCase(firstTag)\n : lodash.camelCase(lodash.compact(route.split(\"/\"))[moduleNameIndex]);\n let hasSecurity = !!globalSecurity?.length;\n if (security) {\n hasSecurity = security.length > 0;\n }\n\n const routeParams = this.getRouteParams(\n routeInfo,\n pathParamsFromRouteName,\n queryParamsFromRouteName,\n );\n\n const pathArgs = routeParams.path.map((pathArgSchema) => ({\n name: pathArgSchema.name,\n optional: !pathArgSchema.required,\n // mark it as any for now, because \"getInlineParseContent\" breaks type names of extracted enums\n type: this.config.Ts.Keyword.Any,\n description: pathArgSchema.description,\n }));\n const pathArgsNames = pathArgs.map((arg) => arg.name);\n\n const responseBodyInfo = this.getResponseBodyInfo(routeInfo, parsedSchemas);\n\n const rawRouteInfo = {\n ...otherInfo,\n pathArgs,\n operationId,\n method,\n route: rawRouteName,\n moduleName,\n responsesTypes: responseBodyInfo.responses,\n description,\n tags,\n summary,\n responses,\n produces,\n requestBody,\n consumes,\n security,\n };\n\n const queryObjectSchema = this.convertRouteParamsIntoObject(\n routeParams.query,\n );\n const pathObjectSchema = this.convertRouteParamsIntoObject(\n routeParams.path,\n );\n const headersObjectSchema = this.convertRouteParamsIntoObject(\n routeParams.header,\n );\n\n const routeName = this.getRouteName(rawRouteInfo);\n\n const requestBodyInfo = this.getRequestBodyInfo(\n routeInfo,\n routeParams,\n parsedSchemas,\n routeName,\n );\n\n const requestParamsSchema = this.createRequestParamsSchema({\n queryParams: routeParams.query,\n pathArgsSchemas: routeParams.path,\n queryObjectSchema,\n extractRequestParams,\n routeName,\n });\n\n if (this.config.extractResponseBody) {\n this.extractResponseBodyIfItNeeded(\n routeInfo,\n responseBodyInfo,\n routeName,\n );\n }\n if (this.config.extractResponseError) {\n this.extractResponseErrorIfItNeeded(\n routeInfo,\n responseBodyInfo,\n routeName,\n );\n }\n\n const typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.requestParamsSuffix,\n resolver: this.config.extractingOptions.requestParamsNameResolver,\n shouldReserve: false,\n });\n\n const queryType = routeParams.query.length\n ? this.schemaParserFabric.getInlineParseContent(queryObjectSchema, null, [\n typeName,\n ])\n : null;\n const pathType = routeParams.path.length\n ? this.schemaParserFabric.getInlineParseContent(pathObjectSchema, null, [\n typeName,\n ])\n : null;\n const headersType = routeParams.header.length\n ? this.schemaParserFabric.getInlineParseContent(\n headersObjectSchema,\n null,\n [typeName],\n )\n : null;\n\n const nameResolver = new SpecificArgNameResolver(\n this.config,\n pathArgsNames,\n );\n\n const specificArgs = {\n query: queryType\n ? {\n name: nameResolver.resolve(RESERVED_QUERY_ARG_NAMES),\n optional: this.schemaParserFabric.parseSchema(\n queryObjectSchema,\n null,\n [routeName.usage],\n ).allFieldsAreOptional,\n type: queryType,\n }\n : void 0,\n body: requestBodyInfo.type\n ? {\n name: nameResolver.resolve([\n requestBodyInfo.paramName,\n ...RESERVED_BODY_ARG_NAMES,\n ]),\n optional: !requestBodyInfo.required,\n type: requestBodyInfo.type,\n }\n : void 0,\n pathParams: pathType\n ? {\n name: nameResolver.resolve(RESERVED_PATH_ARG_NAMES),\n optional: this.schemaParserFabric.parseSchema(\n pathObjectSchema,\n null,\n [routeName.usage],\n ).allFieldsAreOptional,\n type: pathType,\n }\n : void 0,\n headers: headersType\n ? {\n name: nameResolver.resolve(RESERVED_HEADER_ARG_NAMES),\n optional: this.schemaParserFabric.parseSchema(\n headersObjectSchema,\n null,\n [routeName.usage],\n ).allFieldsAreOptional,\n type: headersType,\n }\n : void 0,\n };\n\n pathArgs.forEach((pathArg, i) => {\n pathArg.type = this.schemaParserFabric.getInlineParseContent(\n routeParams.path[i].schema,\n null,\n [typeName],\n );\n });\n\n return {\n id: routeId,\n namespace: moduleName.replace(/^(\\d)/, \"v$1\"),\n routeName,\n routeParams,\n requestBodyInfo,\n responseBodyInfo,\n specificArgs,\n queryObjectSchema,\n pathObjectSchema,\n headersObjectSchema,\n responseBodySchema: responseBodyInfo.success.schema,\n requestBodySchema: requestBodyInfo.schema,\n specificArgNameResolver: nameResolver,\n request: {\n contentTypes: requestBodyInfo.contentTypes,\n parameters: pathArgs,\n path: route,\n formData: requestBodyInfo.contentKind === CONTENT_KIND.FORM_DATA,\n isQueryBody: requestBodyInfo.contentKind === CONTENT_KIND.URL_ENCODED,\n security: hasSecurity,\n method: method,\n requestParams: requestParamsSchema,\n\n payload: specificArgs.body,\n query: specificArgs.query,\n pathParams: specificArgs.pathParams,\n headers: specificArgs.headers,\n },\n response: {\n contentTypes: responseBodyInfo.contentTypes,\n type: responseBodyInfo.success.type,\n errorType: responseBodyInfo.error.type,\n fullTypes: responseBodyInfo.full.types,\n },\n raw: rawRouteInfo,\n };\n };\n\n attachSchema = ({ usageSchema, parsedSchemas }) => {\n this.config.routeNameDuplicatesMap.clear();\n\n const pathsEntries = lodash.entries(usageSchema.paths);\n\n for (const [rawRouteName, routeInfoByMethodsMap] of pathsEntries) {\n const routeInfosMap = this.createRequestsMap(routeInfoByMethodsMap);\n\n for (const [method, routeInfo] of Object.entries(routeInfosMap)) {\n const parsedRouteInfo = this.parseRouteInfo(\n rawRouteName,\n routeInfo,\n method,\n usageSchema,\n parsedSchemas,\n );\n const processedRouteInfo =\n this.config.hooks.onCreateRoute(parsedRouteInfo);\n if (processedRouteInfo !== false) {\n const route = processedRouteInfo || parsedRouteInfo;\n\n if (!this.hasSecurityRoutes && route.security) {\n this.hasSecurityRoutes = route.security;\n }\n if (!this.hasQueryRoutes && route.hasQuery) {\n this.hasQueryRoutes = route.hasQuery;\n }\n if (!this.hasFormDataRoutes && route.hasFormDataParams) {\n this.hasFormDataRoutes = route.hasFormDataParams;\n }\n\n this.routes.push(route);\n }\n }\n }\n };\n\n getGroupedRoutes = () => {\n const groupedRoutes = this.routes.reduce(\n (modules, route) => {\n if (route.namespace) {\n if (!modules[route.namespace]) {\n modules[route.namespace] = [];\n }\n\n modules[route.namespace].push(route);\n } else {\n modules.$outOfModule.push(route);\n }\n\n return modules;\n },\n {\n $outOfModule: [],\n },\n );\n\n const routeGroups = lodash.reduce(\n groupedRoutes,\n (acc, routesGroup, moduleName) => {\n if (moduleName === \"$outOfModule\") {\n acc.outOfModule = routesGroup;\n } else {\n if (!acc.combined) acc.combined = [];\n\n acc.combined.push({\n moduleName,\n routes: routesGroup.map((route) => {\n const { original: originalName, usage: usageName } =\n route.routeName;\n\n // TODO: https://github.com/acacode/swagger-typescript-api/issues/152\n // TODO: refactor\n if (\n routesGroup.length > 1 &&\n usageName !== originalName &&\n !routesGroup.some(\n ({ routeName, id }) =>\n id !== route.id && originalName === routeName.original,\n )\n ) {\n return {\n ...route,\n routeName: {\n ...route.routeName,\n usage: originalName,\n },\n };\n }\n\n return route;\n }),\n });\n }\n return acc;\n },\n {},\n );\n\n if (this.config.sortRoutes) {\n if (routeGroups.outOfModule) {\n routeGroups.outOfModule = this.sortRoutes(routeGroups.outOfModule);\n }\n if (routeGroups.combined) {\n lodash.each(routeGroups.combined, (routeGroup) => {\n routeGroup.routes = this.sortRoutes(routeGroup.routes);\n });\n }\n }\n\n return routeGroups;\n };\n\n sortRoutes = (routes) => {\n return lodash\n .slice(routes)\n .sort((routeA, routeB) =>\n routeA.routeName.usage.localeCompare(routeB.routeName.usage),\n );\n };\n}\n\nexport { SchemaRoutes };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\n// TODO: WIP\n// this class will be needed to walk by schema everywhere\nclass SchemaWalker {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SwaggerSchemaResolver} */\n swaggerSchemaResolver;\n /** @type {Map<string, Record<string, any>>} */\n schemas = new Map();\n /** @type {Map<string, Record<string, any>>} */\n caches = new Map();\n\n constructor({ config }) {\n this.config = config;\n }\n\n /**\n * @param name {string}\n * @param schema {Record<string, any>}\n */\n addSchema = (name, schema) => {\n this.schemas.set(name, structuredClone(schema));\n };\n\n /**\n * @param ref {string}\n * @returns {any}\n */\n findByRef = (ref) => {\n consola.debug(\"try to resolve ref by path\", ref);\n\n if (this.caches.has(ref)) {\n return this.caches.get(ref);\n }\n\n const schemas = Array.from(this.schemas.values());\n if (this._isLocalRef(ref)) {\n for (const schema of schemas) {\n const refData = this._getRefDataFromSchema(schema, ref);\n if (refData) {\n return refData;\n }\n }\n } else if (this._isRemoteRef(ref)) {\n consola.debug(\"remote refs not supported\", ref);\n return null;\n } else {\n const [address, path] = path.split(\"#\");\n let swaggerSchemaObject;\n\n if (this.schemas.has(address)) {\n swaggerSchemaObject = this.schemas.get(address);\n } else {\n const pathToSchema = path.resolve(process.cwd(), address);\n const swaggerSchemaFile =\n this.swaggerSchemaResolver.getSwaggerSchemaByPath(pathToSchema);\n swaggerSchemaObject =\n this.swaggerSchemaResolver.processSwaggerSchemaFile(\n swaggerSchemaFile,\n );\n this.schemas.set(address, swaggerSchemaObject);\n }\n\n return this._getRefDataFromSchema(swaggerSchemaObject, path);\n }\n };\n\n _isLocalRef = (ref) => {\n return ref.startsWith(\"#\");\n };\n\n _isRemoteRef = (ref) => {\n return ref.startsWith(\"http://\") || ref.startsWith(\"https://\");\n };\n\n _getRefDataFromSchema = (schema, ref) => {\n const path = ref.replace(\"#\", \"\").split(\"/\");\n const refData = lodash.get(schema, path);\n if (refData) {\n this.caches.set(ref, refData);\n }\n return refData;\n };\n}\n\nexport { SchemaWalker };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\nclass Request {\n /**\n * @type {CodeGenConfig}\n */\n config;\n\n constructor(config) {\n this.config = config;\n }\n\n /**\n * @param url {string}\n * @param disableStrictSSL\n * @param authToken\n * @param options {Partial<RequestInit>}\n * @return {Promise<string>}\n */\n async download({ url, disableStrictSSL, authToken, ...options }) {\n /**\n * @type {Partial<RequestInit>}\n */\n const requestOptions = {};\n\n if (disableStrictSSL && !url.startsWith(\"http://\")) {\n const undiciGlobalDispatcher =\n global[Symbol.for(\"undici.globalDispatcher.1\")];\n if (!undiciGlobalDispatcher) {\n throw new Error(\"Could not find the global Undici dispatcher\");\n }\n const newDispatcher = new undiciGlobalDispatcher.constructor({\n connect: {\n rejectUnauthorized: false,\n },\n });\n global[unidiciGlobalDispatcherSymbol] = newDispatcher;\n }\n if (authToken) {\n requestOptions.headers = {\n Authorization: authToken,\n };\n }\n\n lodash.merge(requestOptions, options, this.config.requestOptions);\n\n try {\n const response = await fetch(url, requestOptions);\n return await response.text();\n } catch (error) {\n const message = `error while fetching data from URL \"${url}\"`;\n consola.error(message, \"response\" in error ? error.response : error);\n return message;\n }\n }\n}\n\nexport { Request };\n","import { consola } from \"consola\";\nimport * as yaml from \"js-yaml\";\nimport lodash from \"lodash\";\nimport * as swagger2openapi from \"swagger2openapi\";\nimport { Request } from \"./util/request.js\";\n\nclass SwaggerSchemaResolver {\n /**\n * @type {CodeGenConfig}\n */\n config;\n /**\n * @type {FileSystem}\n */\n fileSystem;\n /**\n * @type {Request}\n */\n request;\n\n constructor({ config, fileSystem }) {\n this.config = config;\n this.fileSystem = fileSystem;\n this.request = new Request(config);\n }\n\n /**\n *\n * @returns {Promise<{usageSchema: Record<string, *>, originalSchema: Record<string, *>}>}\n */\n async create() {\n const {\n spec,\n patch,\n input,\n url,\n disableStrictSSL,\n disableProxy,\n authorizationToken,\n } = this.config;\n\n if (this.config.spec) {\n return await this.convertSwaggerObject(spec, { patch });\n }\n\n const swaggerSchemaFile = await this.fetchSwaggerSchemaFile(\n input,\n url,\n disableStrictSSL,\n disableProxy,\n authorizationToken,\n );\n const swaggerSchemaObject =\n this.processSwaggerSchemaFile(swaggerSchemaFile);\n return await this.convertSwaggerObject(swaggerSchemaObject, { patch });\n }\n\n /**\n *\n * @param swaggerSchema {Record<string, any>}\n * @param converterOptions {{ patch?: boolean }}\n * @returns {Promise<{ usageSchema: Record<string, any>, originalSchema: Record<string, any>}>}\n */\n convertSwaggerObject(swaggerSchema, converterOptions) {\n return new Promise((resolve) => {\n const result = structuredClone(swaggerSchema);\n result.info = lodash.merge(\n {\n title: \"No title\",\n version: \"\",\n },\n result.info,\n );\n\n if (!result.openapi) {\n result.paths = lodash.merge({}, result.paths);\n\n swagger2openapi.convertObj(\n result,\n {\n ...converterOptions,\n warnOnly: true,\n refSiblings: \"preserve\",\n rbname: \"requestBodyName\",\n },\n (err, options) => {\n const parsedSwaggerSchema = lodash.get(\n err,\n \"options.openapi\",\n lodash.get(options, \"openapi\"),\n );\n if (!parsedSwaggerSchema && err) {\n throw new Error(err);\n }\n this.config.update({ convertedFromSwagger2: true });\n resolve({\n usageSchema: parsedSwaggerSchema,\n originalSchema: result,\n });\n },\n );\n } else {\n resolve({\n usageSchema: result,\n originalSchema: structuredClone(result),\n });\n }\n });\n }\n\n getSwaggerSchemaByPath = (pathToSwagger) => {\n consola.info(`try to get swagger by path \"${pathToSwagger}\"`);\n return this.fileSystem.getFileContent(pathToSwagger);\n };\n\n async fetchSwaggerSchemaFile(\n pathToSwagger,\n urlToSwagger,\n disableStrictSSL,\n disableProxy,\n authToken,\n ) {\n if (this.fileSystem.pathIsExist(pathToSwagger)) {\n return this.getSwaggerSchemaByPath(pathToSwagger);\n } else {\n consola.info(`try to get swagger by URL \"${urlToSwagger}\"`);\n return await this.request.download({\n url: urlToSwagger,\n disableStrictSSL,\n authToken,\n disableProxy,\n });\n }\n }\n\n processSwaggerSchemaFile(file) {\n if (typeof file !== \"string\") return file;\n\n try {\n return JSON.parse(file);\n } catch (e) {\n return yaml.load(file);\n }\n }\n\n fixSwaggerSchema({ usageSchema, originalSchema }) {\n const usagePaths = lodash.get(usageSchema, \"paths\");\n const originalPaths = lodash.get(originalSchema, \"paths\");\n\n // walk by routes\n lodash.each(usagePaths, (usagePathObject, route) => {\n const originalPathObject = lodash.get(originalPaths, route);\n\n // walk by methods\n lodash.each(usagePathObject, (usageRouteInfo, methodName) => {\n const originalRouteInfo = lodash.get(originalPathObject, methodName);\n const usageRouteParams = lodash.get(usageRouteInfo, \"parameters\", []);\n const originalRouteParams = lodash.get(\n originalRouteInfo,\n \"parameters\",\n [],\n );\n\n if (typeof usageRouteInfo === \"object\") {\n usageRouteInfo.consumes = lodash.uniq(\n lodash.compact([\n ...(usageRouteInfo.consumes || []),\n ...(originalRouteInfo.consumes || []),\n ]),\n );\n usageRouteInfo.produces = lodash.uniq(\n lodash.compact([\n ...(usageRouteInfo.produces || []),\n ...(originalRouteInfo.produces || []),\n ]),\n );\n }\n\n lodash.each(originalRouteParams, (originalRouteParam) => {\n const existUsageParam = usageRouteParams.find(\n (param) =>\n originalRouteParam.in === param.in &&\n originalRouteParam.name === param.name,\n );\n if (!existUsageParam) {\n usageRouteParams.push(originalRouteParam);\n }\n });\n });\n });\n }\n}\n\nexport { SwaggerSchemaResolver };\n","import * as path from \"node:path\";\nimport * as url from \"node:url\";\nimport { consola } from \"consola\";\nimport * as Eta from \"eta\";\nimport lodash from \"lodash\";\n\nclass TemplatesWorker {\n /**\n * @type {CodeGenConfig}\n */\n config;\n /**\n * @type {FileSystem}\n */\n fileSystem;\n\n getRenderTemplateData;\n\n constructor({ config, fileSystem, getRenderTemplateData }) {\n this.config = config;\n this.fileSystem = fileSystem;\n this.getRenderTemplateData = getRenderTemplateData;\n }\n\n /**\n *\n * @param config {CodeGenConfig}\n * @returns {CodeGenConfig.templatePaths}\n */\n getTemplatePaths = (config) => {\n const __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n const baseTemplatesPath = path.resolve(__dirname, \"../templates/base\");\n const defaultTemplatesPath = path.resolve(\n __dirname,\n \"../templates/default\",\n );\n const modularTemplatesPath = path.resolve(\n __dirname,\n \"../templates/modular\",\n );\n const originalTemplatesPath = config.modular\n ? modularTemplatesPath\n : defaultTemplatesPath;\n const customTemplatesPath =\n (config.templates && path.resolve(process.cwd(), config.templates)) ||\n null;\n\n return {\n /** `templates/base` */\n base: baseTemplatesPath,\n /** `templates/default` */\n default: defaultTemplatesPath,\n /** `templates/modular` */\n modular: modularTemplatesPath,\n /** usage path if `--templates` option is not set */\n original: originalTemplatesPath,\n /** custom path to templates (`--templates`) */\n custom: customTemplatesPath,\n };\n };\n\n cropExtension = (path) =>\n this.config.templateExtensions.reduce(\n (path, ext) => (path.endsWith(ext) ? path.replace(ext, \"\") : path),\n path,\n );\n\n getTemplateFullPath = (path_, fileName) => {\n const raw = path.resolve(path_, \"./\", this.cropExtension(fileName));\n const pathVariants = this.config.templateExtensions.map(\n (extension) => `${raw}${extension}`,\n );\n\n return pathVariants.find(\n (variant) => !!this.fileSystem.pathIsExist(variant),\n );\n };\n\n requireFnFromTemplate = async (packageOrPath) => {\n const isPath =\n packageOrPath.startsWith(\"./\") || packageOrPath.startsWith(\"../\");\n\n if (isPath) {\n return await import(\n path.resolve(\n this.config.templatePaths.custom ||\n this.config.templatePaths.original,\n packageOrPath,\n )\n );\n }\n\n return await import(packageOrPath);\n };\n\n getTemplate = ({ fileName, name, path }) => {\n const { templatePaths } = this.config;\n\n if (path) {\n return this.fileSystem.getFileContent(path);\n }\n\n if (!fileName) return \"\";\n\n const customFullPath =\n templatePaths.custom &&\n this.getTemplateFullPath(templatePaths.custom, fileName);\n let fileContent =\n customFullPath && this.fileSystem.getFileContent(customFullPath);\n\n if (fileContent) {\n consola.info(\n `\"${name.toLowerCase()}\" template found in \"${templatePaths.custom}\"`,\n );\n return fileContent;\n }\n\n const baseFullPath = this.getTemplateFullPath(templatePaths.base, fileName);\n\n if (baseFullPath) {\n fileContent = this.fileSystem.getFileContent(baseFullPath);\n } else {\n if (templatePaths.custom) {\n consola.warn(\n \"Code generator will use the default template:\",\n `\"${name.toLowerCase()}\"`,\n \"template not found in\",\n `\"${templatePaths.custom}\"`,\n );\n } else {\n consola.info(\n `Code generator will use the default template for \"${name.toLowerCase()}\"`,\n );\n }\n }\n\n const originalFullPath = this.getTemplateFullPath(\n templatePaths.original,\n fileName,\n );\n\n if (originalFullPath) {\n fileContent = this.fileSystem.getFileContent(originalFullPath);\n }\n\n return fileContent;\n };\n\n getTemplates = ({ templatePaths }) => {\n if (templatePaths.custom) {\n consola.info(\n `try to read templates from directory \"${templatePaths.custom}\"`,\n );\n }\n\n return lodash.reduce(\n this.config.templateInfos,\n (acc, { fileName, name }) => ({\n ...acc,\n [name]: this.getTemplate({ fileName, name }),\n }),\n {},\n );\n };\n\n findTemplateWithExt = (path) => {\n const raw = this.cropExtension(path);\n const pathVariants = this.config.templateExtensions.map(\n (extension) => `${raw}${extension}`,\n );\n return pathVariants.find((variant) => this.fileSystem.pathIsExist(variant));\n };\n\n getTemplateContent = (path_) => {\n const foundTemplatePathKey = lodash\n .keys(this.config.templatePaths)\n .find((key) => path_.startsWith(`@${key}`));\n\n const rawPath = path.resolve(\n path_.replace(\n `@${foundTemplatePathKey}`,\n this.config.templatePaths[foundTemplatePathKey],\n ),\n );\n const fixedPath = this.findTemplateWithExt(rawPath);\n\n if (fixedPath) {\n return this.fileSystem.getFileContent(fixedPath);\n }\n\n const customPath =\n this.config.templatePaths.custom &&\n this.findTemplateWithExt(\n path.resolve(this.config.templatePaths.custom, path_),\n );\n\n if (customPath) {\n return this.fileSystem.getFileContent(customPath);\n }\n\n const originalPath = this.findTemplateWithExt(\n path.resolve(this.config.templatePaths.original, path_),\n );\n\n if (originalPath) {\n return this.fileSystem.getFileContent(originalPath);\n }\n\n return \"\";\n };\n\n /**\n * @param template\n * @param configuration\n * @param options\n * @returns {Promise<string|string|void>}\n */\n renderTemplate = (template, configuration, options) => {\n if (!template) return \"\";\n\n return Eta.render(\n template,\n {\n ...this.getRenderTemplateData(),\n ...configuration,\n },\n {\n async: false,\n ...(options || {}),\n includeFile: (path, configuration, options) => {\n return this.renderTemplate(\n this.getTemplateContent(path),\n configuration,\n options,\n );\n },\n },\n );\n };\n}\n\nexport { TemplatesWorker };\n","/**\n * @typedef {{ fileName: string, fileExtension: string, fileContent: string }} TranslatorIO\n */\n\nclass Translator {\n /** @type {CodeGenConfig} */\n config;\n /** @type {CodeFormatter} */\n codeFormatter;\n\n /**\n * @param codeGenProcess\n */\n constructor(codeGenProcess) {\n this.config = codeGenProcess.config;\n this.codeFormatter = codeGenProcess.codeFormatter;\n }\n\n /**\n *\n * @param input {TranslatorIO}\n * @return {Promise<TranslatorIO[]>}\n */\n translate(input) {\n throw new Error(\"not implemented\");\n }\n}\n\nexport { Translator };\n","import * as typescript from \"typescript\";\nimport { Translator } from \"./translator.js\";\n\nclass JavascriptTranslator extends Translator {\n /**\n * @param {TranslatorIO} input\n * @returns {Record<string, string>}\n */\n compileTSCode = (input) => {\n const fileNameFull = `${input.fileName}${input.fileExtension}`;\n const output = {};\n const host = typescript.createCompilerHost(\n this.config.compilerTsConfig,\n true,\n );\n const fileNames = [fileNameFull];\n const originalSourceFileGet = host.getSourceFile.bind(host);\n host.getSourceFile = (\n sourceFileName,\n languageVersion,\n onError,\n shouldCreateNewSourceFile,\n ) => {\n if (sourceFileName !== fileNameFull)\n return originalSourceFileGet(\n sourceFileName,\n languageVersion,\n onError,\n shouldCreateNewSourceFile,\n );\n\n return typescript.createSourceFile(\n sourceFileName,\n input.fileContent,\n languageVersion,\n true,\n typescript.ScriptKind.TS,\n );\n };\n\n host.writeFile = (fileName, contents) => {\n output[fileName] = contents;\n };\n\n typescript\n .createProgram(fileNames, this.config.compilerTsConfig, host)\n .emit();\n\n return output;\n };\n\n translate = async (input) => {\n const compiled = this.compileTSCode(input);\n\n const jsFileName = `${input.fileName}${typescript.Extension.Js}`;\n const dtsFileName = `${input.fileName}${typescript.Extension.Dts}`;\n const sourceContent = compiled[jsFileName];\n const tsImportRows = input.fileContent\n .split(\"\\n\")\n .filter((line) => line.startsWith(\"import \"));\n const declarationContent = compiled[dtsFileName]\n .split(\"\\n\")\n .map((line) => {\n if (line.startsWith(\"import \")) {\n return tsImportRows.shift();\n }\n return line;\n })\n .join(\"\\n\");\n\n return [\n {\n fileName: input.fileName,\n fileExtension: typescript.Extension.Js,\n fileContent: await this.codeFormatter.formatCode(sourceContent),\n },\n {\n fileName: input.fileName,\n fileExtension: typescript.Extension.Dts,\n fileContent: await this.codeFormatter.formatCode(declarationContent),\n },\n ];\n };\n}\n\nexport { JavascriptTranslator };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\n/**\n * @typedef {\"enum-key\" | \"type-name\"} FormattingSchemaType\n */\n\nclass TypeNameFormatter {\n /** @type {Map<string, string>} */\n formattedModelNamesMap = new Map();\n /** @type {CodeGenConfig} */\n config;\n\n constructor({ config }) {\n this.config = config;\n }\n\n /**\n * @param name\n * @param options {{ type?: FormattingSchemaType }}\n * @return {string}\n */\n format = (name, options = {}) => {\n const schemaType = options.type ?? \"type-name\";\n\n const typePrefix =\n schemaType === \"enum-key\"\n ? this.config.enumKeyPrefix\n : this.config.typePrefix;\n const typeSuffix =\n schemaType === \"enum-key\"\n ? this.config.enumKeySuffix\n : this.config.typeSuffix;\n\n const hashKey = `${typePrefix}_${name}_${typeSuffix}`;\n\n if (typeof name !== \"string\") {\n consola.warn(\"wrong name of the model name\", name);\n return name;\n }\n\n // constant names like LEFT_ARROW, RIGHT_FORWARD, ETC_KEY, _KEY_NUM_\n if (/^([A-Z_]{1,})$/g.test(name)) {\n return lodash.compact([typePrefix, name, typeSuffix]).join(\"_\");\n }\n\n if (this.formattedModelNamesMap.has(hashKey)) {\n return this.formattedModelNamesMap.get(hashKey);\n }\n\n const fixedModelName = this.fixModelName(name, { type: schemaType });\n\n const formattedName = lodash\n .startCase(`${typePrefix}_${fixedModelName}_${typeSuffix}`)\n .replace(/\\s/g, \"\");\n const formattedResultName =\n this.config.hooks.onFormatTypeName(formattedName, name, schemaType) ||\n formattedName;\n\n this.formattedModelNamesMap.set(hashKey, formattedResultName);\n\n return formattedResultName;\n };\n\n isValidName = (name) => /^([A-Za-z$_]{1,})$/g.test(name);\n\n /**\n * @param name\n * @param options {{ type?: FormattingSchemaType }}\n * @return {string}\n */\n fixModelName = (name, options) => {\n const { type } = options || {};\n\n if (!this.isValidName(name)) {\n if (!/^[a-zA-Z_$]/g.test(name)) {\n const fixPrefix =\n type === \"enum-key\"\n ? this.config.fixInvalidEnumKeyPrefix\n : this.config.fixInvalidTypeNamePrefix;\n name = `${fixPrefix} ${name}`;\n }\n\n // specific replaces for TSOA 3.x\n if (name.includes(\".\"))\n name = name\n .replace(/Exclude_keyof[A-Za-z]+/g, () => \"ExcludeKeys\")\n .replace(/%22~AND~%22/g, \"And\")\n .replace(/%22~OR~%22/g, \"Or\")\n .replace(/(\\.?%22)|\\./g, \"_\")\n .replace(/__+$/, \"\");\n\n if (name.includes(\"-\")) name = lodash.startCase(name).replace(/ /g, \"\");\n }\n\n return name;\n };\n}\n\nexport { TypeNameFormatter };\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as url from \"node:url\";\nimport { consola } from \"consola\";\nimport lodash from \"lodash\";\n\nconst FILE_PREFIX = `/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\n`;\n\nclass FileSystem {\n getFileContent = (path) => {\n return fs.readFileSync(path, { encoding: \"utf8\" });\n };\n\n readDir = (path) => {\n return fs.readdirSync(path);\n };\n\n pathIsDir = (path) => {\n if (!path) return false;\n\n try {\n const stat = fs.statSync(path);\n return stat.isDirectory();\n } catch (e) {\n return false;\n }\n };\n\n cropExtension = (fileName) => {\n const fileNameParts = fileName.split(\".\");\n\n if (fileNameParts.length > 1) {\n fileNameParts.pop();\n }\n\n return fileNameParts.join(\".\");\n };\n\n removeDir = (path) => {\n try {\n if (typeof fs.rmSync === \"function\") {\n fs.rmSync(path, { recursive: true });\n } else {\n fs.rmdirSync(path, { recursive: true });\n }\n } catch (e) {\n consola.debug(\"failed to remove dir\", e);\n }\n };\n\n createDir = (path) => {\n try {\n fs.mkdirSync(path, { recursive: true });\n } catch (e) {\n consola.debug(\"failed to create dir\", e);\n }\n };\n\n cleanDir = (path) => {\n this.removeDir(path);\n this.createDir(path);\n };\n\n pathIsExist = (path) => {\n return !!path && fs.existsSync(path);\n };\n\n createFile = ({ path: path_, fileName, content, withPrefix }) => {\n const __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n const absolutePath = path.resolve(__dirname, path_, `./${fileName}`);\n const fileContent = `${withPrefix ? FILE_PREFIX : \"\"}${content}`;\n\n return fs.writeFileSync(absolutePath, fileContent, lodash.noop);\n };\n}\n\nexport { FileSystem };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\nimport * as typescript from \"typescript\";\nimport { CodeFormatter } from \"./code-formatter.js\";\nimport { CodeGenConfig } from \"./configuration.js\";\nimport { SchemaComponentsMap } from \"./schema-components-map.js\";\nimport { SchemaParserFabric } from \"./schema-parser/schema-parser-fabric.js\";\nimport { SchemaRoutes } from \"./schema-routes/schema-routes.js\";\nimport { SchemaWalker } from \"./schema-walker.js\";\nimport { SwaggerSchemaResolver } from \"./swagger-schema-resolver.js\";\nimport { TemplatesWorker } from \"./templates-worker.js\";\nimport { JavascriptTranslator } from \"./translators/javascript.js\";\nimport { TypeNameFormatter } from \"./type-name-formatter.js\";\nimport { FileSystem } from \"./util/file-system.js\";\nimport { internalCase } from \"./util/internal-case.js\";\nimport { NameResolver } from \"./util/name-resolver.js\";\nimport { pascalCase } from \"./util/pascal-case.js\";\nimport { sortByProperty } from \"./util/sort-by-property.js\";\n\nconst PATCHABLE_INSTANCES = [\n \"schemaWalker\",\n \"swaggerSchemaResolver\",\n \"schemaComponentsMap\",\n \"typeNameFormatter\",\n \"templatesWorker\",\n \"codeFormatter\",\n \"schemaParserFabric\",\n \"schemaRoutes\",\n \"javascriptTranslator\",\n];\n\nclass CodeGenProcess {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SwaggerSchemaResolver} */\n swaggerSchemaResolver;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaParserFabric} */\n schemaParserFabric;\n /** @type {SchemaRoutes} */\n schemaRoutes;\n /** @type {FileSystem} */\n fileSystem;\n /** @type {CodeFormatter} */\n codeFormatter;\n /** type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaWalker} */\n schemaWalker;\n /** @type {JavascriptTranslator} */\n javascriptTranslator;\n\n /**\n *\n * @param config {Partial<import(\"../index.d.ts\").GenerateApiConfiguration['config']>}\n */\n constructor(config) {\n this.config = new CodeGenConfig(config);\n this.fileSystem = new FileSystem(this);\n this.schemaWalker = new SchemaWalker(this);\n this.swaggerSchemaResolver = new SwaggerSchemaResolver(this);\n this.schemaComponentsMap = new SchemaComponentsMap(this);\n this.typeNameFormatter = new TypeNameFormatter(this);\n this.templatesWorker = new TemplatesWorker(this);\n this.codeFormatter = new CodeFormatter(this);\n this.schemaParserFabric = new SchemaParserFabric(this);\n this.schemaRoutes = new SchemaRoutes(this);\n this.javascriptTranslator = new JavascriptTranslator(this);\n }\n\n async start() {\n this.config.update({\n templatePaths: this.templatesWorker.getTemplatePaths(this.config),\n });\n this.config.update({\n templatesToRender: this.templatesWorker.getTemplates(this.config),\n });\n\n const swagger = await this.swaggerSchemaResolver.create();\n\n this.swaggerSchemaResolver.fixSwaggerSchema(swagger);\n\n this.config.update({\n swaggerSchema: swagger.usageSchema,\n originalSchema: swagger.originalSchema,\n });\n\n this.schemaWalker.addSchema(\"$usage\", swagger.usageSchema);\n this.schemaWalker.addSchema(\"$original\", swagger.originalSchema);\n\n consola.info(\"start generating your typescript api\");\n\n this.config.update(\n this.config.hooks.onInit(this.config, this) || this.config,\n );\n\n this.schemaComponentsMap.clear();\n\n lodash.each(swagger.usageSchema.components, (component, componentName) =>\n lodash.each(component, (rawTypeData, typeName) => {\n this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\n \"components\",\n componentName,\n typeName,\n ]),\n rawTypeData,\n );\n }),\n );\n\n /**\n * @type {SchemaComponent[]}\n */\n const componentsToParse = this.schemaComponentsMap.filter(\n lodash.compact([\"schemas\", this.config.extractResponses && \"responses\"]),\n );\n\n const parsedSchemas = componentsToParse.map((schemaComponent) => {\n const parsed = this.schemaParserFabric.parseSchema(\n schemaComponent.rawTypeData,\n schemaComponent.typeName,\n );\n schemaComponent.typeData = parsed;\n return parsed;\n });\n\n this.schemaRoutes.attachSchema({\n usageSchema: swagger.usageSchema,\n parsedSchemas,\n });\n\n const rawConfiguration = {\n apiConfig: this.createApiConfig(swagger.usageSchema),\n config: this.config,\n modelTypes: this.collectModelTypes(),\n hasSecurityRoutes: this.schemaRoutes.hasSecurityRoutes,\n hasQueryRoutes: this.schemaRoutes.hasQueryRoutes,\n hasFormDataRoutes: this.schemaRoutes.hasFormDataRoutes,\n generateResponses: this.config.generateResponses,\n routes: this.schemaRoutes.getGroupedRoutes(),\n extraTemplates: this.config.extraTemplates,\n fileName: this.config.fileName,\n translateToJavaScript: this.config.toJS,\n customTranslator: this.config.customTranslator\n ? new this.config.customTranslator(this)\n : null,\n utils: this.getRenderTemplateData().utils,\n };\n\n const configuration =\n this.config.hooks.onPrepareConfig(rawConfiguration) || rawConfiguration;\n\n if (this.fileSystem.pathIsExist(this.config.output)) {\n if (this.config.cleanOutput) {\n consola.debug(\"cleaning dir\", this.config.output);\n this.fileSystem.cleanDir(this.config.output);\n }\n } else {\n consola.debug(\n `path ${this.config.output} is not exist. creating dir by this path`,\n );\n this.fileSystem.createDir(this.config.output);\n }\n\n const files = await this.generateOutputFiles({\n configuration: configuration,\n });\n\n const isDirPath = this.fileSystem.pathIsDir(this.config.output);\n\n if (isDirPath) {\n for (const file of files) {\n this.fileSystem.createFile({\n path: this.config.output,\n fileName: `${file.fileName}${file.fileExtension}`,\n content: file.fileContent,\n withPrefix: true,\n });\n\n consola.success(\n \"api file\",\n `\"${file.fileName}${file.fileExtension}\"`,\n `created in ${this.config.output}`,\n );\n }\n }\n\n return {\n files,\n configuration,\n getTemplate: this.templatesWorker.getTemplate,\n renderTemplate: this.templatesWorker.renderTemplate,\n createFile: this.fileSystem.createFile,\n formatTSContent: this.codeFormatter.formatCode,\n };\n }\n\n getRenderTemplateData = () => {\n return {\n utils: {\n Ts: this.config.Ts,\n formatDescription:\n this.schemaParserFabric.schemaFormatters.formatDescription,\n internalCase: internalCase,\n classNameCase: pascalCase,\n pascalCase: pascalCase,\n getInlineParseContent: this.schemaParserFabric.getInlineParseContent,\n getParseContent: this.schemaParserFabric.getParseContent,\n getComponentByRef: this.schemaComponentsMap.get,\n parseSchema: this.schemaParserFabric.parseSchema,\n checkAndAddNull: this.schemaParserFabric.schemaUtils.safeAddNullToType,\n safeAddNullToType:\n this.schemaParserFabric.schemaUtils.safeAddNullToType,\n isNeedToAddNull:\n this.schemaParserFabric.schemaUtils.isNullMissingInType,\n inlineExtraFormatters: this.schemaParserFabric.schemaFormatters.inline,\n formatters: this.schemaParserFabric.schemaFormatters.base,\n formatModelName: this.typeNameFormatter.format,\n fmtToJSDocLine: function fmtToJSDocLine(line, { eol = true }) {\n return ` * ${line}${eol ? \"\\n\" : \"\"}`;\n },\n NameResolver: NameResolver,\n _: lodash,\n require: this.templatesWorker.requireFnFromTemplate,\n },\n config: this.config,\n };\n };\n\n collectModelTypes = () => {\n const components = this.schemaComponentsMap.getComponents();\n let modelTypes = [];\n\n const modelTypeComponents = lodash.compact([\n \"schemas\",\n this.config.extractResponses && \"responses\",\n ]);\n\n const getSchemaComponentsCount = () =>\n this.schemaComponentsMap.filter(...modelTypeComponents).length;\n\n let schemaComponentsCount = getSchemaComponentsCount();\n let processedCount = 0;\n\n while (processedCount < schemaComponentsCount) {\n modelTypes = [];\n processedCount = 0;\n for (const component of components) {\n if (modelTypeComponents.includes(component.componentName)) {\n const modelType = this.prepareModelType(component);\n if (modelType) {\n modelTypes.push(modelType);\n }\n processedCount++;\n }\n }\n schemaComponentsCount = getSchemaComponentsCount();\n }\n\n if (this.config.sortTypes) {\n return modelTypes.sort(sortByProperty(\"name\"));\n }\n\n return modelTypes;\n };\n\n prepareModelType = (typeInfo) => {\n if (typeInfo.$prepared) return typeInfo.$prepared;\n\n if (!typeInfo.typeData) {\n typeInfo.typeData = this.schemaParserFabric.parseSchema(\n typeInfo.rawTypeData,\n typeInfo.typeName,\n );\n }\n const rawTypeData = typeInfo.typeData;\n const typeData = this.schemaParserFabric.schemaFormatters.base[\n rawTypeData.type\n ]\n ? this.schemaParserFabric.schemaFormatters.base[rawTypeData.type](\n rawTypeData,\n )\n : rawTypeData;\n const {\n typeIdentifier,\n name: originalName,\n content,\n description,\n } = typeData;\n const name = this.typeNameFormatter.format(originalName);\n\n if (name === null) return null;\n\n const preparedModelType = {\n ...typeData,\n typeIdentifier,\n name,\n description,\n $content: rawTypeData.content,\n rawContent: rawTypeData.content,\n content: content,\n typeData,\n };\n\n typeInfo.$prepared = preparedModelType;\n\n return preparedModelType;\n };\n\n /**\n *\n * @param configuration\n * @returns {Promise<TranslatorIO[]>}\n */\n generateOutputFiles = async ({ configuration }) => {\n const { modular, templatesToRender } = this.config;\n\n const output = modular\n ? await this.createMultipleFileInfos(templatesToRender, configuration)\n : await this.createSingleFileInfo(templatesToRender, configuration);\n\n if (!lodash.isEmpty(configuration.extraTemplates)) {\n for (const extraTemplate of configuration.extraTemplates) {\n const content = this.templatesWorker.renderTemplate(\n this.fileSystem.getFileContent(extraTemplate.path),\n configuration,\n );\n output.push(\n ...(await this.createOutputFileInfo(\n configuration,\n extraTemplate.name,\n content,\n )),\n );\n }\n }\n\n return output.filter((fileInfo) => !!fileInfo && !!fileInfo.fileContent);\n };\n\n /**\n * @param templatesToRender\n * @param configuration\n * @returns {Promise<TranslatorIO[]>}\n */\n createMultipleFileInfos = async (templatesToRender, configuration) => {\n const { routes } = configuration;\n const { fileNames, generateRouteTypes, generateClient } =\n configuration.config;\n /**\n * @type {TranslatorIO[]}\n */\n const modularApiFileInfos = [];\n\n if (routes.$outOfModule) {\n if (generateRouteTypes) {\n const outOfModuleRouteContent = this.templatesWorker.renderTemplate(\n templatesToRender.routeTypes,\n {\n ...configuration,\n route: configuration.routes.$outOfModule,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n fileNames.outOfModuleApi,\n outOfModuleRouteContent,\n )),\n );\n }\n if (generateClient) {\n const outOfModuleApiContent = this.templatesWorker.renderTemplate(\n templatesToRender.api,\n {\n ...configuration,\n route: configuration.routes.$outOfModule,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n fileNames.outOfModuleApi,\n outOfModuleApiContent,\n )),\n );\n }\n }\n\n if (routes.combined) {\n for (const route of routes.combined) {\n if (generateRouteTypes) {\n const routeModuleContent = this.templatesWorker.renderTemplate(\n templatesToRender.routeTypes,\n {\n ...configuration,\n route,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n pascalCase(`${route.moduleName}_Route`),\n routeModuleContent,\n )),\n );\n }\n\n if (generateClient) {\n const apiModuleContent = this.templatesWorker.renderTemplate(\n templatesToRender.api,\n {\n ...configuration,\n route,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n pascalCase(route.moduleName),\n apiModuleContent,\n )),\n );\n }\n }\n }\n\n return [\n ...(await this.createOutputFileInfo(\n configuration,\n fileNames.dataContracts,\n this.templatesWorker.renderTemplate(\n templatesToRender.dataContracts,\n configuration,\n ),\n )),\n ...(generateClient\n ? await this.createOutputFileInfo(\n configuration,\n fileNames.httpClient,\n this.templatesWorker.renderTemplate(\n templatesToRender.httpClient,\n configuration,\n ),\n )\n : []),\n ...modularApiFileInfos,\n ];\n };\n\n /**\n *\n * @param templatesToRender\n * @param configuration\n * @returns {Promise<TranslatorIO[]>}\n */\n createSingleFileInfo = async (templatesToRender, configuration) => {\n const { generateRouteTypes, generateClient } = configuration.config;\n\n return await this.createOutputFileInfo(\n configuration,\n configuration.fileName,\n lodash\n .compact([\n this.templatesWorker.renderTemplate(\n templatesToRender.dataContracts,\n configuration,\n ),\n generateRouteTypes &&\n this.templatesWorker.renderTemplate(\n templatesToRender.routeTypes,\n configuration,\n ),\n generateClient &&\n this.templatesWorker.renderTemplate(\n templatesToRender.httpClient,\n configuration,\n ),\n generateClient &&\n this.templatesWorker.renderTemplate(\n templatesToRender.api,\n configuration,\n ),\n ])\n .join(\"\\n\"),\n );\n };\n\n /**\n *\n * @param configuration\n * @param fileNameFull\n * @param content\n * @returns {Promise<TranslatorIO[]>}\n */\n createOutputFileInfo = async (configuration, fileNameFull, content) => {\n const fileName = this.fileSystem.cropExtension(fileNameFull);\n const fileExtension = typescript.Extension.Ts;\n\n if (configuration.translateToJavaScript) {\n consola.debug(\"using js translator for\", fileName);\n return await this.javascriptTranslator.translate({\n fileName: fileName,\n fileExtension: fileExtension,\n fileContent: content,\n });\n }\n\n if (configuration.customTranslator) {\n consola.debug(\"using custom translator for\", fileName);\n return await configuration.customTranslator.translate({\n fileName: fileName,\n fileExtension: fileExtension,\n fileContent: content,\n });\n }\n\n consola.debug(\"generating output for\", `${fileName}${fileExtension}`);\n\n return [\n {\n fileName,\n fileExtension: fileExtension,\n fileContent: await this.codeFormatter.formatCode(content),\n },\n ];\n };\n\n createApiConfig = (swaggerSchema) => {\n const { info, servers, host, basePath, externalDocs, tags } = swaggerSchema;\n const server = servers?.[0] || { url: \"\" };\n const { title = \"No title\", version } = info || {};\n const { url: serverUrl } = server;\n\n return {\n info: info || {},\n servers: servers || [],\n basePath,\n host,\n externalDocs: lodash.merge(\n {\n url: \"\",\n description: \"\",\n },\n externalDocs,\n ),\n tags: lodash.compact(tags),\n baseUrl: serverUrl,\n title,\n version,\n };\n };\n\n injectClassInstance = (key, value) => {\n this[key] = value;\n for (const instanceKey of PATCHABLE_INSTANCES) {\n if (instanceKey !== key && key in this[instanceKey]) {\n this[instanceKey][key] = value;\n }\n }\n };\n}\n\nexport { CodeGenProcess };\n","import { HTTP_CLIENT, PROJECT_VERSION } from \"../../constants.js\";\nimport { objectAssign } from \"../../util/object-assign.js\";\n\n/**\n * @type {GenerateTemplatesParams}}\n */\nclass TemplatesGenConfig {\n cleanOutput = false;\n output = undefined;\n httpClientType = HTTP_CLIENT.FETCH;\n modular = false;\n silent = false;\n version = PROJECT_VERSION;\n rewrite = false;\n\n /**\n * @param config {GenerateTemplatesParams}\n */\n constructor(config) {\n this.update(config);\n }\n\n /**\n * @param update {Partial<GenerateTemplatesParams>}\n */\n update = (update) => {\n objectAssign(this, update);\n };\n}\n\nexport { TemplatesGenConfig };\n","import path from \"node:path\";\nimport url from \"node:url\";\nimport { consola } from \"consola\";\nimport { FileSystem } from \"../../util/file-system.js\";\nimport { TemplatesGenConfig } from \"./configuration.js\";\n\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\nclass TemplatesGenProcess {\n /**\n * @type {TemplatesGenConfig}\n */\n config;\n /**\n * @type {FileSystem}\n */\n fileSystem;\n\n rootDir = path.resolve(__dirname, \"../../../\");\n\n paths = {\n baseTemplates: \"templates/base\",\n httpClientTemplates: \"templates/base/http-clients\",\n moduleApiTemplates: \"templates/modular\",\n defaultApiTemplates: \"templates/default\",\n };\n\n importTemplatePrefixes = [\"@base\", \"@modular\", \"@default\"];\n\n constructor(config) {\n this.config = new TemplatesGenConfig(config);\n this.fileSystem = new FileSystem(this);\n }\n\n /**\n * @return {Promise<GenerateTemplatesOutput>}\n */\n async start() {\n consola.info('start generating source templates \".ejs\" for code generator');\n\n const templates = this.getTemplates();\n\n if (this.config.output) {\n consola.info(\"preparing output directory for source templates\");\n const outputPath = path.resolve(process.cwd(), this.config.output);\n\n if (this.fileSystem.pathIsExist(outputPath)) {\n if (this.config.cleanOutput) {\n this.fileSystem.cleanDir(outputPath);\n }\n } else {\n this.fileSystem.createDir(outputPath);\n }\n\n for (const template of templates) {\n const templateName = this.fileSystem.cropExtension(template.name);\n const templateEjsPath = path.resolve(outputPath, `${templateName}.ejs`);\n const templateEtaPath = path.resolve(outputPath, `${templateName}.eta`);\n const templateEjsPathExist =\n this.fileSystem.pathIsExist(templateEjsPath);\n const templateEtaPathExist =\n this.fileSystem.pathIsExist(templateEtaPath);\n\n const templateNotExist = !templateEjsPathExist && !templateEtaPathExist;\n\n if (templateNotExist) {\n this.fileSystem.createFile({\n path: outputPath,\n fileName: template.name,\n content: template.content,\n withPrefix: false,\n });\n } else if (this.config.rewrite) {\n if (templateEjsPathExist) {\n this.fileSystem.createFile({\n path: outputPath,\n fileName: `${templateName}.ejs`,\n content: template.content,\n withPrefix: false,\n });\n } else if (templateEtaPathExist) {\n this.fileSystem.createFile({\n path: outputPath,\n fileName: `${templateName}.eta`,\n content: template.content,\n withPrefix: false,\n });\n }\n }\n }\n\n consola.success(\n `source templates has been successfully created in \"${outputPath}\"`,\n );\n }\n\n return {\n files: templates,\n configuration: this.config,\n createFile: this.fileSystem.createFile,\n };\n }\n\n getTemplates = () => {\n const outputFiles = [];\n const baseTemplates = this.getTemplateNamesFromDir(\n this.paths.baseTemplates,\n );\n const httpClientTemplates = this.getTemplateNamesFromDir(\n this.paths.httpClientTemplates,\n );\n const apiTemplatesPath = this.config.modular\n ? this.paths.moduleApiTemplates\n : this.paths.defaultApiTemplates;\n const apiTemplates = this.getTemplateNamesFromDir(apiTemplatesPath);\n\n const usingHttpClientTemplate = httpClientTemplates.find((template) =>\n template.startsWith(`${this.config.httpClientType}-`),\n );\n\n let httpClientTemplateContent = \"\";\n\n if (usingHttpClientTemplate) {\n httpClientTemplateContent = this.fixTemplateContent(\n this.getTemplateContent(\n `${this.paths.httpClientTemplates}/${usingHttpClientTemplate}`,\n ),\n );\n }\n\n for (const fileName of baseTemplates) {\n const templateContent =\n (fileName === \"http-client.ejs\" && httpClientTemplateContent) ||\n this.fixTemplateContent(\n this.getTemplateContent(`${this.paths.baseTemplates}/${fileName}`),\n );\n\n outputFiles.push({\n name: fileName,\n content: templateContent,\n });\n }\n\n for (const fileName of apiTemplates) {\n outputFiles.push({\n name: fileName,\n content: this.fixTemplateContent(\n this.getTemplateContent(`${apiTemplatesPath}/${fileName}`),\n ),\n });\n }\n\n return outputFiles;\n };\n\n fixTemplateContent = (content) => {\n // includeFile(\"@base/\n const importsRegExp1 = new RegExp(\n `includeFile\\\\(\"(${this.importTemplatePrefixes\n .map((v) => `(${v})`)\n .join(\"|\")})/`,\n \"g\",\n );\n // includeFile(`@base/\n const importsRegExp2 = new RegExp(\n `includeFile\\\\(\\`(${this.importTemplatePrefixes\n .map((v) => `(${v})`)\n .join(\"|\")})/`,\n \"g\",\n );\n // includeFile('@base/\n const importsRegExp3 = new RegExp(\n `includeFile\\\\('(${this.importTemplatePrefixes\n .map((v) => `(${v})`)\n .join(\"|\")})/`,\n \"g\",\n );\n\n return content\n .replace(importsRegExp1, 'includeFile(\"./')\n .replace(importsRegExp2, \"includeFile(`./\")\n .replace(importsRegExp3, \"includeFile('./\");\n };\n\n getTemplateNamesFromDir = (dir) => {\n return this.fileSystem\n .readDir(path.resolve(this.rootDir, dir))\n .filter((file) => file.endsWith(\".ejs\"));\n };\n\n getTemplateContent = (pathToFile) => {\n return this.fileSystem.getFileContent(\n path.resolve(this.rootDir, pathToFile),\n );\n };\n}\n\nexport { TemplatesGenProcess };\n","#!/usr/bin/env node\n\nimport { TemplatesGenProcess } from \"./templates-gen-process.js\";\n\nasync function generateTemplates(config) {\n const codeGenProcess = new TemplatesGenProcess(config);\n return await codeGenProcess.start();\n}\n\nexport { generateTemplates };\n"]}
1
+ {"version":3,"sources":["../src/index.js","../src/code-formatter.js","../src/util/name-resolver.js","../src/util/random.js","../src/component-type-name-resolver.js","../src/constants.js","../package.json","../src/util/object-assign.js","../src/configuration.js","../src/schema-components-map.js","../src/schema-parser/schema-formatters.js","../src/schema-parser/schema-parser.js","../src/util/sort-by-property.js","../src/schema-parser/mono-schema-parser.js","../src/schema-parser/base-schema-parsers/array.js","../src/schema-parser/base-schema-parsers/complex.js","../src/schema-parser/base-schema-parsers/discriminator.js","../src/schema-parser/util/enum-key-resolver.js","../src/schema-parser/base-schema-parsers/enum.js","../src/schema-parser/base-schema-parsers/object.js","../src/schema-parser/base-schema-parsers/primitive.js","../src/schema-parser/complex-schema-parsers/all-of.js","../src/schema-parser/complex-schema-parsers/any-of.js","../src/schema-parser/complex-schema-parsers/not.js","../src/schema-parser/complex-schema-parsers/one-of.js","../src/util/internal-case.js","../src/util/pascal-case.js","../src/schema-parser/schema-utils.js","../src/schema-parser/schema-parser-fabric.js","../src/util/id.js","../src/schema-routes/util/specific-arg-name-resolver.js","../src/schema-routes/schema-routes.js","../src/schema-walker.js","../src/util/request.js","../src/swagger-schema-resolver.js","../src/templates-worker.js","../src/translators/translator.js","../src/translators/javascript.js","../src/type-name-formatter.js","../src/util/file-system.js","../src/code-gen-process.js","../src/commands/generate-templates/configuration.js","../src/commands/generate-templates/templates-gen-process.js","../src/commands/generate-templates/index.js"],"names":["CodeFormatter","config","content","tempFileName","host","TsLanguageServiceHost","fileTextChanges","d","span","newText","rt","code","removeUnusedImports","prettierFormat","fileName","tsconfig","encoding","path","NameResolver","reservedNames","getFallbackName","names","fixedNames","lodash","name","reservedName","variants","resolver","extras","shouldReserve","usageName","variant","consola","uniqVariants","getRandomFloat","min","max","getRandomInt","ComponentTypeNameResolver","randomVariant","variantCounter","dirtyResolvedName","fallbackName","constants_exports","__export","DEFAULT_BODY_ARG_NAME","FILE_PREFIX","HTTP_CLIENT","PRETTIER_OPTIONS","PROJECT_VERSION","RESERVED_BODY_ARG_NAMES","RESERVED_HEADER_ARG_NAMES","RESERVED_PATH_ARG_NAMES","RESERVED_QUERY_ARG_NAMES","RESERVED_REQ_PARAMS_ARG_NAMES","SCHEMA_TYPES","package_default","objectAssign","target","updaterFn","update","undefinedKeys","value","key","TsKeyword","TsCodeGenKeyword","CodeGenConfig","routePath","routeData","pathParam","schema","originalSchema","typeName","schemaType","parsedSchema","codeGenProcess","apiConfig","rawType","rawTypeName","routeInfo","templateRouteName","ie","contents","readonly","optional","enumStruct","formatFn","part","genericArgs","values","prettierOptions","getDefaultPrettierOptions","codeGenConstructs","primitiveTypeConstructs","constants","templateInfos","hooks","otherConfig","prettier","mt","SchemaComponentsMap","paths","ref","$ref","rawTypeData","parsed","componentName","componentSchema","usageComponent","refIndex","componentNames","it","c","SchemaFormatters","schemaParser","formatType","description","inline","fields","extraSpace","result","routeNameFromTemplate","sortByProperty","propertyName","o1","o2","MonoSchemaParser","schemaPath","ArraySchemaParser","contentType","type","items","tupleContent","item","ComplexSchemaParser","complexType","simpleSchema","complexSchemaContent","DiscriminatorSchemaParser","ts","discriminator","noDiscriminatorSchema","skipMappingType","abstractSchemaStruct","discriminatorSchemaStruct","schemaContent","refPath","mappingEntries","ableToCreateMappingType","mappingContents","mappingTypeName","mappingPropertySchemaEnumKeysMap","generatedTypeName","component","createMappingContent","mappingSchema","mappingKey","mappingUsageKey","discPropertyName","mappingPropertySchema","acc","index","enumKey","complexSchemaKeys","mappingRefSchema","schemaKey","schemaPropertyName","schemaProperty","schemaIsAny","EnumKeyResolver","generatedVariant","EnumSchemaParser","args","pathTypeName","customComponent","refType","enumNames","enumName","keyType","formatValue","enumValue","formattedKey","formatted","ObjectSchemaParser","contentProperties","properties","additionalProperties","propertiesContent","property","required","nullable","fieldName","fieldValue","readOnly","PrimitiveSchemaParser","fieldType","AllOfSchemaParser","ignoreTypes","combined","childSchema","filtered","AnyOfSchemaParser","NotSchemaParser","OneOfSchemaParser","internalCase","pascalCase","SchemaUtils","schemaComponentsMap","typeNameFormatter","schemaWalker","propertySchema","rootSchema","isRequired","rawSchema","enumFieldType","resultType","parentSchema","refData","existedRequiredKeys","filterFn","suffixes","prefixes","reserved","prefix","suffix","refTypeInfo","primitiveType","typeAlias","SchemaParser","schemaParserFabric","responseStruct","firstResponse","firstSchema","SchemaParserFabric","templatesWorker","linkedSchema","linkedComponent","otherSchemaProps","parser","schemaCopy","ALPHABET","generateId","ut","SpecificArgNameResolver","CONTENT_KIND","SchemaRoutes","routeInfoByMethodsMap","parameters","requestInfo","method","originalRouteName","routeName","pathParamMatches","pathParams","match","paramName","fixedRoute","i","arr","insertion","queryParamMatches","queryParams","paramNames","pathParamsFromRouteName","queryParamsFromRouteName","routeParams","parameter","routeParam","queryParam","extraContentTypes","requestInfoData","contentTypes","status","dataType","parsedSchemas","operationId","defaultType","foundedSchemaByName","foundSchemaByContent","foundSchema","typeNameWithoutOpId","requestInfos","produces","responses","responseInfos","successResponse","response","errorResponses","handleResponseHeaders","src","headerTypes","k","v","params","objectSchema","schemaPart","requestBody","consumes","requestBodyName","contentKind","queryObjectSchema","pathArgsSchemas","extractRequestParams","pathArgSchema","fixedQueryParams","fixedSchema","responseBodyInfo","idx","errorSchemas","rawRouteInfo","moduleName","routeNameDuplicatesMap","templatesToRender","routeNameTemplate","duplicateIdentifier","duplicates","routeNameInfo","rawRouteName","usageSchema","globalSecurity","moduleNameIndex","moduleNameFirstTag","security","summary","tags","otherInfo","route","routeId","firstTag","hasSecurity","pathArgs","pathArgsNames","arg","pathObjectSchema","headersObjectSchema","requestBodyInfo","requestParamsSchema","queryType","pathType","headersType","nameResolver","specificArgs","pathArg","pathsEntries","routeInfosMap","parsedRouteInfo","processedRouteInfo","groupedRoutes","modules","routeGroups","routesGroup","originalName","id","routeGroup","routes","routeA","routeB","SchemaWalker","schemas","address","swaggerSchemaObject","pathToSchema","swaggerSchemaFile","Request","url","disableStrictSSL","authToken","options","requestOptions","undiciGlobalDispatcher","newDispatcher","error","message","SwaggerSchemaResolver","fileSystem","spec","patch","input","disableProxy","authorizationToken","swaggerSchema","converterOptions","resolve","Tt","err","parsedSwaggerSchema","pathToSwagger","urlToSwagger","file","gt","usagePaths","originalPaths","usagePathObject","originalPathObject","usageRouteInfo","methodName","originalRouteInfo","usageRouteParams","originalRouteParams","originalRouteParam","param","TemplatesWorker","getRenderTemplateData","__dirname","F","St","baseTemplatesPath","defaultTemplatesPath","modularTemplatesPath","originalTemplatesPath","customTemplatesPath","ext","path_","raw","extension","packageOrPath","templatePaths","customFullPath","fileContent","baseFullPath","originalFullPath","foundTemplatePathKey","rawPath","fixedPath","customPath","originalPath","template","configuration","Nt","Translator","JavascriptTranslator","fileNameFull","output","R","fileNames","originalSourceFileGet","sourceFileName","languageVersion","onError","shouldCreateNewSourceFile","compiled","jsFileName","dtsFileName","sourceContent","tsImportRows","line","declarationContent","TypeNameFormatter","typePrefix","typeSuffix","hashKey","fixedModelName","formattedName","formattedResultName","FileSystem","N","fileNameParts","e","withPrefix","Ie","Rt","absolutePath","PATCHABLE_INSTANCES","CodeGenProcess","swagger","schemaComponent","rawConfiguration","files","eol","components","modelTypes","modelTypeComponents","getSchemaComponentsCount","schemaComponentsCount","processedCount","modelType","typeInfo","typeData","typeIdentifier","preparedModelType","modular","extraTemplate","fileInfo","generateRouteTypes","generateClient","modularApiFileInfos","outOfModuleRouteContent","outOfModuleApiContent","routeModuleContent","apiModuleContent","fileExtension","Et","info","servers","basePath","externalDocs","server","title","version","serverUrl","instanceKey","TemplatesGenConfig","TemplatesGenProcess","templates","outputPath","templateName","templateEjsPath","templateEtaPath","templateEjsPathExist","templateEtaPathExist","outputFiles","baseTemplates","httpClientTemplates","apiTemplatesPath","apiTemplates","usingHttpClientTemplate","httpClientTemplateContent","templateContent","importsRegExp1","importsRegExp2","importsRegExp3","dir","pathToFile","generateTemplates","generateApi"],"mappings":"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","file":"chunk-B7E4I4GW.cjs","sourcesContent":["#!/usr/bin/env node\n\nimport { consola } from \"consola\";\nimport { CodeGenProcess } from \"./code-gen-process.js\";\nimport { generateTemplates } from \"./commands/generate-templates/index.js\";\nimport * as constants from \"./constants.js\";\n\nasync function generateApi({ name, prettier, ...config }) {\n if (config.debug) {\n consola.level = Number.MAX_SAFE_INTEGER;\n }\n const codeGenProcess = new CodeGenProcess({\n ...config,\n fileName: name,\n prettierOptions: prettier,\n });\n return await codeGenProcess.start();\n}\n\nexport { constants, generateApi, generateTemplates };\n","import * as prettier from \"prettier\";\nimport * as typescript from \"typescript\";\n\nclass CodeFormatter {\n /**\n * @type {CodeGenConfig}\n */\n config;\n\n constructor({ config }) {\n this.config = config;\n }\n\n removeUnusedImports = (content) => {\n const tempFileName = \"file.ts\";\n\n const host = new TsLanguageServiceHost(tempFileName, content);\n const languageService = typescript.createLanguageService(host);\n\n const fileTextChanges = languageService.organizeImports(\n { type: \"file\", fileName: tempFileName },\n { newLineCharacter: typescript.sys.newLine },\n )[0];\n\n if (fileTextChanges?.textChanges.length) {\n return fileTextChanges.textChanges.reduceRight(\n (content, { span, newText }) =>\n `${content.slice(0, span.start)}${newText}${content.slice(\n span.start + span.length,\n )}`,\n content,\n );\n }\n\n return content;\n };\n\n /**\n * @param content\n * @returns {Promise<string>}\n */\n prettierFormat = async (content) => {\n const formatted = await prettier.format(\n content,\n this.config.prettierOptions,\n );\n return formatted;\n };\n\n formatCode = async (\n code,\n { removeUnusedImports = true, prettierFormat = true } = {},\n ) => {\n if (removeUnusedImports) {\n code = this.removeUnusedImports(code);\n }\n if (prettierFormat) {\n code = await this.prettierFormat(code);\n }\n return code;\n };\n}\n\nclass TsLanguageServiceHost {\n constructor(fileName, content) {\n const tsconfig = typescript.findConfigFile(\n fileName,\n typescript.sys.fileExists,\n );\n\n Object.assign(this, {\n fileName,\n content,\n compilerOptions: tsconfig\n ? typescript.convertCompilerOptionsFromJson(\n typescript.readConfigFile(tsconfig, typescript.sys.readFile).config\n .compilerOptions,\n ).options\n : typescript.getDefaultCompilerOptions(),\n });\n }\n\n getNewLine() {\n return \"newLine\" in typescript.sys ? typescript.sys.newLine : \"\\n\";\n }\n getScriptFileNames() {\n return [this.fileName];\n }\n getCompilationSettings() {\n return this.compilerOptions;\n }\n getDefaultLibFileName() {\n return typescript.getDefaultLibFileName(this.getCompilationSettings());\n }\n getCurrentDirectory() {\n return process.cwd();\n }\n getScriptVersion() {\n return typescript.version;\n }\n getScriptSnapshot() {\n return typescript.ScriptSnapshot.fromString(this.content);\n }\n readFile(fileName, encoding) {\n if (fileName === this.fileName) {\n return this.content;\n }\n\n return typescript.sys.readFile(fileName, encoding);\n }\n fileExists(path) {\n return typescript.sys.fileExists(path);\n }\n}\n\nexport { CodeFormatter };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\nclass NameResolver {\n reservedNames = [];\n getFallbackName = null;\n\n /** @type {CodeGenConfig} */\n config;\n\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames, getFallbackName) {\n this.config = config;\n this.getFallbackName = getFallbackName;\n this.reserve(reservedNames);\n }\n\n /**\n * @param {string[]} names\n */\n reserve(names) {\n const fixedNames = lodash.uniq(lodash.compact(names));\n for (const name of fixedNames) {\n if (this.reservedNames.indexOf(name) === -1) {\n this.reservedNames.push(name);\n }\n }\n }\n\n unreserve(names) {\n this.reservedNames.filter(\n (reservedName) => !names.some((name) => name === reservedName),\n );\n }\n\n isReserved(name) {\n return this.reservedNames.some((reservedName) => reservedName === name);\n }\n\n /**\n *\n * @param {(string[])} variants\n * @param {(reserved: string[]) => string)} [resolver]\n * @param {any} [extras]\n * @returns {string | null}\n */\n resolve(variants, resolver, extras, shouldReserve = true) {\n if (typeof resolver === \"function\") {\n let usageName = null;\n while (usageName === null) {\n const variant = resolver(variants, extras);\n\n if (variant === undefined) {\n consola.warn(\n \"unable to resolve name. current reserved names: \",\n this.reservedNames,\n );\n return null;\n }\n if (!shouldReserve || !this.isReserved(variant)) {\n usageName = variant;\n }\n }\n\n shouldReserve && this.reserve([usageName]);\n return usageName;\n }\n\n if (Array.isArray(variants)) {\n let usageName = null;\n const uniqVariants = lodash.uniq(lodash.compact(variants));\n\n for (const variant of uniqVariants) {\n if (!usageName && (!shouldReserve || !this.isReserved(variant))) {\n usageName = variant;\n }\n }\n\n if (usageName) {\n shouldReserve && this.reserve([usageName]);\n return usageName;\n }\n\n consola.debug(\n \"trying to resolve name with using fallback name generator using variants\",\n variants,\n );\n return this.resolve(variants, this.getFallbackName, extras);\n }\n\n consola.debug(\n \"problem with reserving names. current reserved names: \",\n this.reservedNames,\n );\n return null;\n }\n}\n\nexport { NameResolver };\n","const getRandomFloat = (min = 0, max = 1) => {\n return Math.random() * (max - min) + min;\n};\n\nconst getRandomInt = (min = 0, max = 1) => {\n if (min === max) return min;\n\n return Math.round(getRandomFloat(min, max));\n};\n\nexport { getRandomInt, getRandomFloat };\n","import { consola } from \"consola\";\nimport { NameResolver } from \"./util/name-resolver.js\";\nimport { getRandomInt } from \"./util/random.js\";\n\nclass ComponentTypeNameResolver extends NameResolver {\n counter = 1;\n fallbackNameCounter = 1;\n countersByVariant = new Map();\n\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames) {\n super(config, reservedNames, (variants) => {\n const randomVariant = variants[getRandomInt(0, variants.length - 1)];\n if (randomVariant) {\n if (!this.countersByVariant.has(randomVariant)) {\n this.countersByVariant.set(randomVariant, 0);\n }\n const variantCounter = this.countersByVariant.get(randomVariant) + 1;\n this.countersByVariant.set(randomVariant, variantCounter);\n const dirtyResolvedName = `${randomVariant}${variantCounter}`;\n consola.debug(\n \"generated dirty resolved type name for component - \",\n dirtyResolvedName,\n );\n return dirtyResolvedName;\n }\n\n const fallbackName = `${this.config.componentTypeNameResolver}${this\n .fallbackNameCounter++}`;\n consola.debug(\n \"generated fallback type name for component - \",\n fallbackName,\n );\n return fallbackName;\n });\n }\n}\n\nexport { ComponentTypeNameResolver };\n","import packageJson from \"../package.json\";\n\nconst DEFAULT_BODY_ARG_NAME = \"data\";\n\nconst FILE_PREFIX = `/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\n`;\n\nconst HTTP_CLIENT = {\n FETCH: \"fetch\",\n AXIOS: \"axios\",\n};\n\nconst PRETTIER_OPTIONS = {\n printWidth: 120,\n tabWidth: 2,\n trailingComma: \"all\",\n parser: \"typescript\",\n};\n\nconst PROJECT_VERSION = packageJson.version;\n\nconst RESERVED_BODY_ARG_NAMES = [\"data\", \"body\", \"reqBody\"];\n\nconst RESERVED_HEADER_ARG_NAMES = [\"headers\", \"headersParams\"];\n\nconst RESERVED_PATH_ARG_NAMES = [\"path\", \"pathParams\"];\n\nconst RESERVED_QUERY_ARG_NAMES = [\"query\", \"queryParams\", \"queryArg\"];\n\nconst RESERVED_REQ_PARAMS_ARG_NAMES = [\n \"params\",\n \"requestParams\",\n \"reqParams\",\n \"httpParams\",\n];\n\nconst SCHEMA_TYPES = {\n ARRAY: \"array\",\n OBJECT: \"object\",\n ENUM: \"enum\",\n REF: \"$ref\",\n PRIMITIVE: \"primitive\",\n COMPLEX: \"complex\",\n DISCRIMINATOR: \"discriminator\",\n COMPLEX_ONE_OF: \"oneOf\",\n COMPLEX_ANY_OF: \"anyOf\",\n COMPLEX_ALL_OF: \"allOf\",\n COMPLEX_NOT: \"not\",\n COMPLEX_UNKNOWN: \"__unknown\",\n};\n\nexport {\n DEFAULT_BODY_ARG_NAME,\n FILE_PREFIX,\n HTTP_CLIENT,\n PRETTIER_OPTIONS,\n PROJECT_VERSION,\n RESERVED_BODY_ARG_NAMES,\n RESERVED_HEADER_ARG_NAMES,\n RESERVED_PATH_ARG_NAMES,\n RESERVED_QUERY_ARG_NAMES,\n RESERVED_REQ_PARAMS_ARG_NAMES,\n SCHEMA_TYPES,\n};\n","{\n \"name\": \"swagger-typescript-api\",\n \"version\": \"13.0.23\",\n \"description\": \"Generate the API client for Fetch or Axios from an OpenAPI Specification\",\n \"homepage\": \"https://github.com/acacode/swagger-typescript-api\",\n \"bugs\": \"https://github.com/acacode/swagger-typescript-api/issues\",\n \"repository\": \"github:acacode/swagger-typescript-api\",\n \"license\": \"MIT\",\n \"author\": \"Sergey Volkov <js2me@outlook.com>\",\n \"contributors\": [\n \"Sora Morimoto <sora@morimoto.io>\"\n ],\n \"type\": \"module\",\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/types.d.ts\",\n \"default\": \"./dist/lib.js\"\n },\n \"require\": {\n \"types\": \"./dist/types.d.cts\",\n \"default\": \"./dist/lib.cjs\"\n }\n }\n },\n \"main\": \"./dist/lib.cjs\",\n \"module\": \"./dist/lib.js\",\n \"types\": \"./dist/types.d.cts\",\n \"bin\": {\n \"sta\": \"./dist/cli.js\",\n \"swagger-typescript-api\": \"./dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"templates\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"cli:help\": \"node index.js -h\",\n \"cli:json\": \"node index.js -r -d -p ./swagger-test-cli.json -n swagger-test-cli.ts\",\n \"cli:yaml\": \"node index.js -r -d -p ./swagger-test-cli.yaml -n swagger-test-cli.ts\",\n \"format\": \"biome format --write .\",\n \"format:check\": \"biome format .\",\n \"lint\": \"biome check\",\n \"prepack\": \"tsup\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@types/swagger-schema-official\": \"^2.0.25\",\n \"consola\": \"^3.2.3\",\n \"cosmiconfig\": \"^9.0.0\",\n \"didyoumean\": \"^1.2.2\",\n \"eta\": \"^2.2.0\",\n \"js-yaml\": \"^4.1.0\",\n \"lodash\": \"^4.17.21\",\n \"nanoid\": \"^3.3.7\",\n \"prettier\": \"~3.3.3\",\n \"swagger-schema-official\": \"2.0.0-bab6bed\",\n \"swagger2openapi\": \"^7.0.8\",\n \"typescript\": \"~5.5.4\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"1.8.3\",\n \"@tsconfig/node18\": \"18.2.4\",\n \"@tsconfig/strictest\": \"2.0.5\",\n \"@types/didyoumean\": \"1.2.2\",\n \"@types/js-yaml\": \"4.0.9\",\n \"@types/lodash\": \"4.17.7\",\n \"@types/node\": \"22.5.0\",\n \"@types/swagger2openapi\": \"7.0.4\",\n \"axios\": \"1.7.5\",\n \"shx\": \"0.3.4\",\n \"tsup\": \"8.2.4\",\n \"vitest\": \"2.0.5\"\n },\n \"packageManager\": \"yarn@4.4.1\",\n \"engines\": {\n \"node\": \">=18.0.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org\"\n }\n}\n","import lodash from \"lodash\";\n\nconst objectAssign = (target, updaterFn) => {\n if (!updaterFn) return;\n const update =\n typeof updaterFn === \"function\" ? updaterFn(target) : updaterFn;\n const undefinedKeys = lodash\n .map(update, (value, key) => value === undefined && key)\n .filter(Boolean);\n Object.assign(target, lodash.merge(target, update));\n for (const key of undefinedKeys) {\n target[key] = undefined;\n }\n};\n\nexport { objectAssign };\n","import * as cosmiconfig from \"cosmiconfig\";\nimport lodash from \"lodash\";\nimport * as typescript from \"typescript\";\nimport { ComponentTypeNameResolver } from \"./component-type-name-resolver.js\";\nimport * as CONSTANTS from \"./constants.js\";\nimport { objectAssign } from \"./util/object-assign.js\";\n\nconst TsKeyword = {\n Number: \"number\",\n String: \"string\",\n Boolean: \"boolean\",\n Any: \"any\",\n Void: \"void\",\n Unknown: \"unknown\",\n Null: \"null\",\n Undefined: \"undefined\",\n Object: \"object\",\n File: \"File\",\n Date: \"Date\",\n Type: \"type\",\n Enum: \"enum\",\n Interface: \"interface\",\n Array: \"Array\",\n Record: \"Record\",\n Intersection: \"&\",\n Union: \"|\",\n};\n\nconst TsCodeGenKeyword = {\n UtilRequiredKeys: \"UtilRequiredKeys\",\n};\n\n/**\n * @type {GenerateApiConfiguration[\"config\"]}}\n */\nclass CodeGenConfig {\n version = CONSTANTS.PROJECT_VERSION;\n /** CLI flag */\n templates = \"\";\n /** CLI flag */\n generateResponses = false;\n /** CLI flag */\n defaultResponseAsSuccess = false;\n /** CLI flag */\n generateRouteTypes = false;\n /** CLI flag */\n generateClient = true;\n /** CLI flag */\n generateUnionEnums = false;\n /** CLI flag */\n addReadonly = false;\n enumNamesAsValues = false;\n /** parsed swagger schema from getSwaggerObject() */\n\n /** parsed swagger schema ref */\n swaggerSchema = null;\n /** original (converted to json) swagger schema ref */\n originalSchema = null;\n\n /** { \"#/components/schemas/Foo\": @TypeInfo, ... } */\n componentsMap = {};\n /** flag for catching conversion from swagger 2.0 */\n convertedFromSwagger2 = false;\n\n /** url index from paths used for merging into modules */\n moduleNameIndex = 0;\n\n /** use the first tag for the module name */\n moduleNameFirstTag = false;\n disableStrictSSL = false;\n disableProxy = false;\n extractRequestParams = false;\n extractRequestBody = false;\n extractResponseBody = false;\n extractResponseError = false;\n extractResponses = false;\n extractEnums = false;\n fileNames = {\n dataContracts: \"data-contracts\",\n routeTypes: \"route-types\",\n httpClient: \"http-client\",\n outOfModuleApi: \"Common\",\n };\n routeNameDuplicatesMap = new Map();\n prettierOptions = { ...CONSTANTS.PRETTIER_OPTIONS };\n hooks = {\n onPreBuildRoutePath: (routePath) => void 0,\n onBuildRoutePath: (routeData) => void 0,\n onInsertPathParam: (pathParam) => void 0,\n onCreateComponent: (schema) => schema,\n onPreParseSchema: (originalSchema, typeName, schemaType) => void 0,\n onParseSchema: (originalSchema, parsedSchema) => parsedSchema,\n onCreateRoute: (routeData) => routeData,\n onInit: (config, codeGenProcess) => config,\n onPrepareConfig: (apiConfig) => apiConfig,\n onCreateRequestParams: (rawType) => {},\n onCreateRouteName: () => {},\n onFormatTypeName: (typeName, rawTypeName, schemaType) => {},\n onFormatRouteName: (routeInfo, templateRouteName) => {},\n };\n defaultResponseType;\n singleHttpClient = false;\n httpClientType = CONSTANTS.HTTP_CLIENT.FETCH;\n unwrapResponseData = false;\n disableThrowOnError = false;\n sortTypes = false;\n sortRoutes = false;\n templatePaths = {\n /** `templates/base` */\n base: \"\",\n /** `templates/default` */\n default: \"\",\n /** `templates/modular` */\n modular: \"\",\n /** usage path if `--templates` option is not set */\n original: \"\",\n /** custom path to templates (`--templates`) */\n custom: \"\",\n };\n /** Record<templateName, templateContent> */\n templatesToRender = {\n api: \"\",\n dataContracts: \"\",\n dataContractJsDoc: \"\",\n interfaceDataContract: \"\",\n typeDataContract: \"\",\n enumDataContract: \"\",\n objectFieldJsDoc: \"\",\n httpClient: \"\",\n routeTypes: \"\",\n routeName: \"\",\n };\n /**\n * @type {Record<string, (...args: any[]) => MonoSchemaParser>}\n */\n schemaParsers = {};\n toJS = false;\n silent = false;\n typePrefix = \"\";\n typeSuffix = \"\";\n enumKeyPrefix = \"\";\n enumKeySuffix = \"\";\n patch = false;\n /** @type {ComponentTypeNameResolver} */\n componentTypeNameResolver;\n /** name of the main exported class */\n apiClassName = \"Api\";\n debug = false;\n anotherArrayType = false;\n internalTemplateOptions = {\n addUtilRequiredKeysType: false,\n };\n extraTemplates = [];\n input = \"\";\n modular = false;\n output = \"\";\n url = \"\";\n cleanOutput = false;\n spec = null;\n fileName = \"Api.ts\";\n authorizationToken = void 0;\n requestOptions = null;\n\n jsPrimitiveTypes = [];\n jsEmptyTypes = [];\n fixInvalidTypeNamePrefix = \"Type\";\n fixInvalidEnumKeyPrefix = \"Value\";\n\n enumKeyResolverName = \"Value\";\n typeNameResolverName = \"ComponentType\";\n specificArgNameResolverName = \"arg\";\n\n successResponseStatusRange = [200, 299];\n\n /** @type {ExtractingOptions} */\n extractingOptions = {\n requestBodySuffix: [\"Payload\", \"Body\", \"Input\"],\n requestParamsSuffix: [\"Params\"],\n responseBodySuffix: [\"Data\", \"Result\", \"Output\"],\n responseErrorSuffix: [\n \"Error\",\n \"Fail\",\n \"Fails\",\n \"ErrorData\",\n \"HttpError\",\n \"BadResponse\",\n ],\n enumSuffix: [\"Enum\"],\n discriminatorMappingSuffix: [\"Mapping\", \"Mapper\", \"MapType\"],\n discriminatorAbstractPrefix: [\n \"Base\",\n \"Abstract\",\n \"Discriminator\",\n \"Internal\",\n \"Polymorph\",\n ],\n };\n\n compilerTsConfig = {\n module: typescript.ModuleKind.ESNext,\n noImplicitReturns: true,\n alwaysStrict: true,\n target: typescript.ScriptTarget.ESNext,\n declaration: true,\n noImplicitAny: false,\n sourceMap: false,\n removeComments: false,\n disableSizeLimit: true,\n esModuleInterop: true,\n emitDecoratorMetadata: true,\n skipLibCheck: true,\n };\n customTranslator;\n\n Ts = {\n Keyword: structuredClone(TsKeyword),\n CodeGenKeyword: structuredClone(TsCodeGenKeyword),\n /**\n * $A[] or Array<$A>\n */\n ArrayType: (content) => {\n if (this.anotherArrayType) {\n return this.Ts.TypeWithGeneric(this.Ts.Keyword.Array, [content]);\n }\n\n return `${this.Ts.ExpressionGroup(content)}[]`;\n },\n /**\n * \"$A\"\n */\n StringValue: (content) => `\"${content}\"`,\n /**\n * $A\n */\n BooleanValue: (content) => `${content}`,\n /**\n * $A\n */\n NumberValue: (content) => `${content}`,\n /**\n * $A\n */\n NullValue: (content) => \"null\",\n /**\n * $A1 | $A2\n */\n UnionType: (contents) =>\n lodash.join(lodash.uniq(contents), ` ${this.Ts.Keyword.Union} `),\n /**\n * ($A1)\n */\n ExpressionGroup: (content) => (content ? `(${content})` : \"\"),\n /**\n * $A1 & $A2\n */\n IntersectionType: (contents) =>\n lodash.join(lodash.uniq(contents), ` ${this.Ts.Keyword.Intersection} `),\n /**\n * Record<$A1, $A2>\n */\n RecordType: (key, value) =>\n this.Ts.TypeWithGeneric(this.Ts.Keyword.Record, [key, value]),\n /**\n * readonly $key?:$value\n */\n TypeField: ({ readonly, key, optional, value }) =>\n lodash\n .compact([readonly && \"readonly \", key, optional && \"?\", \": \", value])\n .join(\"\"),\n /**\n * [key: $A1]: $A2\n */\n InterfaceDynamicField: (key, value) => `[key: ${key}]: ${value}`,\n\n /**\n * EnumName.EnumKey\n */\n EnumUsageKey: (enumStruct, key) => `${enumStruct}.${key}`,\n /**\n * $A1 = $A2\n */\n EnumField: (key, value) => `${key} = ${value}`,\n /**\n * $A0.key = $A0.value,\n * $A1.key = $A1.value,\n * $AN.key = $AN.value,\n */\n EnumFieldsWrapper: (contents) =>\n lodash\n .map(contents, ({ key, value }) => ` ${this.Ts.EnumField(key, value)}`)\n .join(\",\\n\"),\n /**\n * {\\n $A \\n}\n */\n ObjectWrapper: (content) => `{\\n${content}\\n}`,\n /**\n * /** $A *\\/\n */\n MultilineComment: (contents, formatFn) =>\n [\n ...(contents.length === 1\n ? [`/** ${contents[0]} */`]\n : [\"/**\", ...contents.map((content) => ` * ${content}`), \" */\"]),\n ].map((part) => `${formatFn ? formatFn(part) : part}\\n`),\n /**\n * $A1<...$A2.join(,)>\n */\n TypeWithGeneric: (typeName, genericArgs) => {\n return `${typeName}${\n genericArgs.length ? `<${genericArgs.join(\",\")}>` : \"\"\n }`;\n },\n /**\n * [$A1, $A2, ...$AN]\n */\n Tuple: (values) => {\n return `[${values.join(\", \")}]`;\n },\n };\n\n /**\n * swagger schema type -> typescript type\n * https://json-schema.org/understanding-json-schema/reference/string.html#dates-and-times\n * @type {Record<string, string | ((schema: any, parser: SchemaParser) => string) | ({ $default: string } & Record<string, string | ((schema: any, parser: SchemaParser) => string)>)>}\n */\n primitiveTypes = {\n integer: () => this.Ts.Keyword.Number,\n number: () => this.Ts.Keyword.Number,\n boolean: () => this.Ts.Keyword.Boolean,\n object: () => this.Ts.Keyword.Object,\n file: () => this.Ts.Keyword.File,\n string: {\n $default: () => this.Ts.Keyword.String,\n\n /** formats */\n binary: () => this.Ts.Keyword.File,\n file: () => this.Ts.Keyword.File,\n \"date-time\": () => this.Ts.Keyword.String,\n time: () => this.Ts.Keyword.String,\n date: () => this.Ts.Keyword.String,\n duration: () => this.Ts.Keyword.String,\n email: () => this.Ts.Keyword.String,\n \"idn-email\": () => this.Ts.Keyword.String,\n \"idn-hostname\": () => this.Ts.Keyword.String,\n ipv4: () => this.Ts.Keyword.String,\n ipv6: () => this.Ts.Keyword.String,\n uuid: () => this.Ts.Keyword.String,\n uri: () => this.Ts.Keyword.String,\n \"uri-reference\": () => this.Ts.Keyword.String,\n \"uri-template\": () => this.Ts.Keyword.String,\n \"json-pointer\": () => this.Ts.Keyword.String,\n \"relative-json-pointer\": () => this.Ts.Keyword.String,\n regex: () => this.Ts.Keyword.String,\n },\n };\n\n templateInfos = [\n { name: \"api\", fileName: \"api\" },\n { name: \"dataContracts\", fileName: \"data-contracts\" },\n { name: \"dataContractJsDoc\", fileName: \"data-contract-jsdoc\" },\n { name: \"interfaceDataContract\", fileName: \"interface-data-contract\" },\n { name: \"typeDataContract\", fileName: \"type-data-contract\" },\n { name: \"enumDataContract\", fileName: \"enum-data-contract\" },\n { name: \"objectFieldJsDoc\", fileName: \"object-field-jsdoc\" },\n { name: \"httpClient\", fileName: \"http-client\" },\n { name: \"routeTypes\", fileName: \"route-types\" },\n { name: \"routeName\", fileName: \"route-name\" },\n ];\n\n templateExtensions = [\".eta\", \".ejs\"];\n\n /**\n * @param config {Partial<GenerateApiConfiguration['config']>}\n */\n constructor({\n prettierOptions = getDefaultPrettierOptions(),\n codeGenConstructs,\n primitiveTypeConstructs,\n constants,\n templateInfos,\n hooks,\n ...otherConfig\n }) {\n objectAssign(this.Ts, codeGenConstructs);\n objectAssign(this.primitiveTypes, primitiveTypeConstructs);\n\n this.defaultResponseType = this.Ts.Keyword.Void;\n\n this.update({\n ...otherConfig,\n prettierOptions:\n prettierOptions === undefined\n ? getDefaultPrettierOptions()\n : prettierOptions,\n hooks: lodash.merge(this.hooks, hooks || {}),\n constants: {\n ...CONSTANTS,\n ...constants,\n },\n templateInfos: templateInfos || this.templateInfos,\n });\n\n this.jsPrimitiveTypes = [\n this.Ts.Keyword.Number,\n this.Ts.Keyword.String,\n this.Ts.Keyword.Boolean,\n ];\n this.jsEmptyTypes = [this.Ts.Keyword.Null, this.Ts.Keyword.Undefined];\n this.componentTypeNameResolver = new ComponentTypeNameResolver(\n this,\n null,\n [],\n );\n }\n\n /**\n *\n * @param update {Partial<GenerateApiConfiguration[\"config\"]>}\n */\n update = (update) => {\n objectAssign(this, update);\n };\n}\n\nconst getDefaultPrettierOptions = () => {\n const prettier = cosmiconfig\n .cosmiconfigSync(\"prettier\", {\n searchStrategy: \"global\",\n })\n .search();\n\n if (prettier) {\n return {\n ...prettier.config,\n parser: \"typescript\",\n };\n }\n\n return { ...CONSTANTS.PRETTIER_OPTIONS };\n};\n\nexport { CodeGenConfig };\n","class SchemaComponentsMap {\n /** @type {SchemaComponent[]} */\n _data = [];\n /** @type {CodeGenConfig} */\n config;\n\n constructor({ config }) {\n this.config = config;\n }\n\n clear() {\n this._data = [];\n }\n\n createRef = (paths) => {\n return [\"#\", ...paths].join(\"/\");\n };\n\n parseRef = (ref) => {\n return ref.split(\"/\");\n };\n\n createComponent($ref, rawTypeData) {\n const parsed = this.parseRef($ref);\n const typeName = parsed[parsed.length - 1];\n const componentName = parsed[parsed.length - 2];\n const componentSchema = {\n $ref,\n typeName,\n rawTypeData,\n componentName,\n /** result from schema parser */\n typeData: null,\n };\n\n const usageComponent =\n this.config.hooks.onCreateComponent(componentSchema) || componentSchema;\n\n const refIndex = this._data.findIndex((c) => c.$ref === $ref);\n\n if (refIndex === -1) {\n this._data.push(usageComponent);\n } else {\n this._data[refIndex] = usageComponent;\n }\n\n return usageComponent;\n }\n\n /**\n * @returns {SchemaComponent[]}\n */\n getComponents() {\n return this._data;\n }\n\n /**\n * @params {...string[]} componentNames\n * @returns {SchemaComponent[]}\n */\n filter(...componentNames) {\n return this._data.filter((it) =>\n componentNames.some((componentName) =>\n it.$ref.startsWith(`#/components/${componentName}`),\n ),\n );\n }\n\n get($ref) {\n return this._data.find((c) => c.$ref === $ref) || null;\n }\n}\n\nexport { SchemaComponentsMap };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../constants.js\";\n\nclass SchemaFormatters {\n /** @type {CodeGenConfig} */\n config;\n /** @type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaUtils} */\n schemaUtils;\n\n /**\n * @param schemaParser {SchemaParser | SchemaParserFabric}\n */\n constructor(schemaParser) {\n this.config = schemaParser.config;\n this.schemaUtils = schemaParser.schemaUtils;\n this.templatesWorker = schemaParser.templatesWorker;\n }\n\n base = {\n [SCHEMA_TYPES.ENUM]: (parsedSchema) => {\n if (this.config.generateUnionEnums) {\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n content: this.config.Ts.UnionType(\n parsedSchema.content.map(({ value }) => value),\n ),\n };\n }\n\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n content: this.config.Ts.EnumFieldsWrapper(parsedSchema.content),\n };\n },\n [SCHEMA_TYPES.OBJECT]: (parsedSchema) => {\n if (parsedSchema.nullable)\n return this.inline[SCHEMA_TYPES.OBJECT](parsedSchema);\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n content: this.formatObjectContent(parsedSchema.content),\n };\n },\n [SCHEMA_TYPES.PRIMITIVE]: (parsedSchema) => {\n return {\n ...parsedSchema,\n $content: parsedSchema.content,\n };\n },\n };\n inline = {\n [SCHEMA_TYPES.ENUM]: (parsedSchema) => {\n return {\n ...parsedSchema,\n content: parsedSchema.$ref\n ? parsedSchema.typeName\n : this.config.Ts.UnionType(\n lodash.compact([\n ...parsedSchema.content.map(({ value }) => `${value}`),\n parsedSchema.nullable && this.config.Ts.Keyword.Null,\n ]),\n ) || this.config.Ts.Keyword.Any,\n };\n },\n [SCHEMA_TYPES.OBJECT]: (parsedSchema) => {\n if (typeof parsedSchema.content === \"string\")\n return {\n ...parsedSchema,\n typeIdentifier: this.config.Ts.Keyword.Type,\n content: this.schemaUtils.safeAddNullToType(parsedSchema.content),\n };\n\n return {\n ...parsedSchema,\n typeIdentifier: this.config.Ts.Keyword.Type,\n content: this.schemaUtils.safeAddNullToType(\n parsedSchema,\n parsedSchema.content.length\n ? this.config.Ts.ObjectWrapper(\n this.formatObjectContent(parsedSchema.content),\n )\n : this.config.Ts.RecordType(\n this.config.Ts.Keyword.String,\n this.config.Ts.Keyword.Any,\n ),\n ),\n };\n },\n };\n\n /**\n * @param parsedSchema {Record<string, any>}\n * @param formatType {\"base\" | \"inline\"}\n */\n formatSchema = (parsedSchema, formatType = \"base\") => {\n const schemaType =\n lodash.get(parsedSchema, [\"schemaType\"]) ||\n lodash.get(parsedSchema, [\"$parsed\", \"schemaType\"]);\n const formatterFn = lodash.get(this, [formatType, schemaType]);\n return formatterFn?.(parsedSchema) || parsedSchema;\n };\n\n formatDescription = (description, inline) => {\n if (!description) return \"\";\n\n const hasMultipleLines = description.includes(\"\\n\");\n\n if (!hasMultipleLines) return description;\n\n if (inline) {\n return lodash\n ._(description)\n .split(/\\n/g)\n .map((part) => part.trim())\n .compact()\n .join(\" \")\n .valueOf();\n }\n\n return description.replace(/\\n$/g, \"\");\n };\n\n formatObjectContent = (content) => {\n const fields = [];\n\n for (const part of content) {\n const extraSpace = \" \";\n const result = `${extraSpace}${part.field},\\n`;\n\n const renderedJsDoc = this.templatesWorker.renderTemplate(\n this.config.templatesToRender.dataContractJsDoc,\n {\n data: part,\n },\n );\n\n const routeNameFromTemplate = renderedJsDoc\n .split(\"\\n\")\n .map((c) => `${extraSpace}${c}`)\n .join(\"\\n\");\n\n if (routeNameFromTemplate) {\n fields.push(`${routeNameFromTemplate}${result}`);\n } else {\n fields.push(`${result}`);\n }\n }\n\n return fields.join(\"\");\n };\n}\n\nexport { SchemaFormatters };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../constants.js\";\nimport { sortByProperty } from \"../util/sort-by-property.js\";\nimport { ArraySchemaParser } from \"./base-schema-parsers/array.js\";\nimport { ComplexSchemaParser } from \"./base-schema-parsers/complex.js\";\nimport { DiscriminatorSchemaParser } from \"./base-schema-parsers/discriminator.js\";\nimport { EnumSchemaParser } from \"./base-schema-parsers/enum.js\";\nimport { ObjectSchemaParser } from \"./base-schema-parsers/object.js\";\nimport { PrimitiveSchemaParser } from \"./base-schema-parsers/primitive.js\";\nimport { AllOfSchemaParser } from \"./complex-schema-parsers/all-of.js\";\nimport { AnyOfSchemaParser } from \"./complex-schema-parsers/any-of.js\";\nimport { NotSchemaParser } from \"./complex-schema-parsers/not.js\";\nimport { OneOfSchemaParser } from \"./complex-schema-parsers/one-of.js\";\nimport { SchemaFormatters } from \"./schema-formatters.js\";\nimport { SchemaUtils } from \"./schema-utils.js\";\n\nclass SchemaParser {\n /** @type {SchemaParserFabric} */\n schemaParserFabric;\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaFormatters} */\n schemaFormatters;\n /** @type {SchemaUtils} */\n schemaUtils;\n /** @type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaWalker} */\n schemaWalker;\n\n typeName;\n schema;\n schemaPath = [];\n\n constructor(schemaParserFabric, { typeName, schema, schemaPath } = {}) {\n this.schemaParserFabric = schemaParserFabric;\n this.config = schemaParserFabric.config;\n this.templatesWorker = schemaParserFabric.templatesWorker;\n this.schemaComponentsMap = schemaParserFabric.schemaComponentsMap;\n this.typeNameFormatter = schemaParserFabric.typeNameFormatter;\n this.schemaWalker = schemaParserFabric.schemaWalker;\n this.schemaFormatters = schemaParserFabric.schemaFormatters;\n this.schemaUtils = schemaParserFabric.schemaUtils;\n\n this.typeName = typeName || null;\n this.schema = schema;\n this.schemaPath = [...(schemaPath || [])];\n }\n\n _complexSchemaParsers = {\n [SCHEMA_TYPES.COMPLEX_ONE_OF]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexOneOf || OneOfSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX_ALL_OF]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexAllOf || AllOfSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX_ANY_OF]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexAnyOf || AnyOfSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX_NOT]: (schema) => {\n const SchemaParser =\n this.config.schemaParsers.complexNot || NotSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n null,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n };\n\n _baseSchemaParsers = {\n [SCHEMA_TYPES.ENUM]: (schema, typeName) => {\n const SchemaParser = this.config.schemaParsers.enum || EnumSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.OBJECT]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.object || ObjectSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.COMPLEX]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.complex || ComplexSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.PRIMITIVE]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.primitive || PrimitiveSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.DISCRIMINATOR]: (schema, typeName) => {\n const SchemaParser =\n this.config.schemaParsers.discriminator || DiscriminatorSchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n [SCHEMA_TYPES.ARRAY]: (schema, typeName) => {\n const SchemaParser = this.config.schemaParsers.array || ArraySchemaParser;\n const schemaParser = new SchemaParser(\n this,\n schema,\n typeName,\n this.schemaPath,\n );\n return schemaParser.parse();\n },\n };\n\n /**\n * @return {Record<string, any>}\n */\n parseSchema = () => {\n if (!this.schema)\n return this._baseSchemaParsers[SCHEMA_TYPES.PRIMITIVE](\n null,\n this.typeName,\n );\n\n let schemaType = null;\n let parsedSchema = null;\n\n if (typeof this.schema === \"string\") {\n return this.schema;\n }\n\n if (!this.schema.$parsed) {\n if (!this.typeName && this.schemaUtils.isRefSchema(this.schema)) {\n this.typeName = this.schemaUtils.getSchemaType(this.schema);\n }\n\n //#region swagger schemas fixes\n\n // schema has items but don't have array type\n if (\n this.schema.items &&\n !Array.isArray(this.schema.items) &&\n !this.schema.type\n ) {\n this.schema.type = SCHEMA_TYPES.ARRAY;\n }\n // schema is enum with one null value\n if (\n Array.isArray(this.schema.enum) &&\n this.schema.enum.length === 1 &&\n this.schema.enum[0] == null\n ) {\n consola.debug(\"invalid enum schema\", this.schema);\n this.schema = { type: this.config.Ts.Keyword.Null };\n }\n // schema is response schema\n if (\"content\" in this.schema && typeof this.schema.content === \"object\") {\n const schema = this.extractSchemaFromResponseStruct(this.schema);\n const schemaParser = this.schemaParserFabric.createSchemaParser({\n schema,\n typeName: this.typeName,\n schemaPath: this.schemaPath,\n });\n this.schema.$parsed = schemaParser.parseSchema();\n return this.schema.$parsed;\n }\n\n //#endregion\n\n schemaType = this.schemaUtils.getInternalSchemaType(this.schema);\n\n this.schemaPath.push(this.typeName);\n\n lodash.merge(\n this.schema,\n this.config.hooks.onPreParseSchema(\n this.schema,\n this.typeName,\n schemaType,\n ),\n );\n parsedSchema = this._baseSchemaParsers[schemaType](\n this.schema,\n this.typeName,\n );\n this.schema.$parsed =\n this.config.hooks.onParseSchema(this.schema, parsedSchema) ||\n parsedSchema;\n\n if (\n this.config.sortTypes &&\n Array.isArray(this.schema.$parsed?.content)\n ) {\n this.schema.$parsed.content = this.schema.$parsed.content.sort(\n sortByProperty(\"name\"),\n );\n }\n }\n\n this.schemaPath.pop();\n\n return this.schema.$parsed;\n };\n\n getInlineParseContent = () => {\n const parsedSchema = this.parseSchema();\n const formattedSchema = this.schemaFormatters.formatSchema(\n parsedSchema,\n \"inline\",\n );\n return formattedSchema.content;\n };\n\n getParseContent = () => {\n const parsedSchema = this.parseSchema();\n const formattedSchema = this.schemaFormatters.formatSchema(\n parsedSchema,\n \"base\",\n );\n return formattedSchema.content;\n };\n\n extractSchemaFromResponseStruct = (responseStruct) => {\n const { content, ...extras } = responseStruct;\n\n const firstResponse = lodash.first(lodash.values(content));\n const firstSchema = lodash.get(firstResponse, \"schema\");\n\n if (!firstSchema) return;\n\n return {\n ...extras,\n ...lodash.omit(firstResponse, \"schema\"),\n ...firstSchema,\n };\n };\n}\n\nexport { SchemaParser };\n","/**\n * @param propertyName {string}\n * @returns {(o1: Record<string, any>, o2: Record<string, any>) => 1 | -1 | 0}\n */\nconst sortByProperty = (propertyName) => (o1, o2) => {\n if (o1[propertyName] > o2[propertyName]) {\n return 1;\n }\n if (o1[propertyName] < o2[propertyName]) {\n return -1;\n }\n return 0;\n};\n\nexport { sortByProperty };\n","class MonoSchemaParser {\n schema;\n typeName;\n schemaPath;\n\n /** @type {SchemaParser} */\n schemaParser;\n /** @type {SchemaParserFabric} */\n schemaParserFabric;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {SchemaUtils} */\n schemaUtils;\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaFormatters} */\n schemaFormatters;\n\n constructor(schemaParser, schema, typeName = null, schemaPath = []) {\n this.schemaParser = schemaParser;\n this.schemaParserFabric = schemaParser.schemaParserFabric;\n this.schema = schema;\n this.typeName = typeName;\n this.typeNameFormatter = schemaParser.typeNameFormatter;\n this.schemaPath = schemaPath;\n this.schemaComponentsMap = this.schemaParser.schemaComponentsMap;\n this.schemaUtils = this.schemaParser.schemaUtils;\n this.config = this.schemaParser.config;\n this.schemaFormatters = this.schemaParser.schemaFormatters;\n }\n\n parse() {\n throw new Error(\"not implemented\");\n }\n\n buildTypeNameFromPath = () => {\n return this.schemaUtils.buildTypeNameFromPath(this.schemaPath);\n };\n}\n\nexport { MonoSchemaParser };\n","import { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass ArraySchemaParser extends MonoSchemaParser {\n parse() {\n let contentType;\n const { type, description, items } = this.schema || {};\n\n if (Array.isArray(items) && type === SCHEMA_TYPES.ARRAY) {\n const tupleContent = [];\n for (const item of items) {\n tupleContent.push(\n this.schemaParserFabric\n .createSchemaParser({ schema: item, schemaPath: this.schemaPath })\n .getInlineParseContent(),\n );\n }\n contentType = this.config.Ts.Tuple(tupleContent);\n } else {\n const content = this.schemaParserFabric\n .createSchemaParser({ schema: items, schemaPath: this.schemaPath })\n .getInlineParseContent();\n contentType = this.config.Ts.ArrayType(content);\n }\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.PRIMITIVE,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: this.config.Ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(description),\n content: this.schemaUtils.safeAddNullToType(this.schema, contentType),\n };\n }\n}\n\nexport { ArraySchemaParser };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass ComplexSchemaParser extends MonoSchemaParser {\n parse() {\n const complexType = this.schemaUtils.getComplexType(this.schema);\n const simpleSchema = lodash.omit(\n lodash.clone(this.schema),\n lodash.keys(this.schemaParser._complexSchemaParsers),\n );\n const complexSchemaContent = this.schemaParser._complexSchemaParsers[\n complexType\n ](this.schema);\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.COMPLEX,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: this.config.Ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description ||\n lodash.compact(\n lodash.map(this.schema[complexType], \"description\"),\n )[0] ||\n \"\",\n ),\n content:\n this.config.Ts.IntersectionType(\n lodash.compact([\n this.config.Ts.ExpressionGroup(complexSchemaContent),\n this.schemaUtils.getInternalSchemaType(simpleSchema) ===\n SCHEMA_TYPES.OBJECT &&\n this.config.Ts.ExpressionGroup(\n this.schemaParserFabric\n .createSchemaParser({\n schema: simpleSchema,\n schemaPath: this.schemaPath,\n })\n .getInlineParseContent(),\n ),\n ]),\n ) || this.config.Ts.Keyword.Any,\n };\n }\n}\n\nexport { ComplexSchemaParser };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass DiscriminatorSchemaParser extends MonoSchemaParser {\n parse() {\n const ts = this.config.Ts;\n const { discriminator, ...noDiscriminatorSchema } = this.schema;\n\n if (!discriminator.mapping) {\n return this.schemaParserFabric\n .createSchemaParser({\n schema: noDiscriminatorSchema,\n typeName: this.typeName,\n schemaPath: this.schemaPath,\n })\n .parseSchema();\n }\n\n // https://github.com/acacode/swagger-typescript-api/issues/456\n // const skipMappingType = !!noDiscriminatorSchema.oneOf;\n const skipMappingType = false;\n\n const abstractSchemaStruct = this.createAbstractSchemaStruct();\n // const complexSchemaStruct = this.createComplexSchemaStruct();\n const discriminatorSchemaStruct = this.createDiscriminatorSchema({\n skipMappingType,\n abstractSchemaStruct,\n });\n\n const schemaContent = ts.IntersectionType(\n [\n abstractSchemaStruct?.content,\n discriminatorSchemaStruct?.content,\n ].filter(Boolean),\n );\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.COMPLEX,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description,\n ),\n content: schemaContent,\n };\n }\n\n createDiscriminatorSchema = ({ skipMappingType, abstractSchemaStruct }) => {\n const ts = this.config.Ts;\n\n const refPath = this.schemaComponentsMap.createRef([\n \"components\",\n \"schemas\",\n this.typeName,\n ]);\n const { discriminator } = this.schema;\n const mappingEntries = lodash.entries(discriminator.mapping);\n const ableToCreateMappingType =\n !skipMappingType &&\n !!(abstractSchemaStruct?.typeName && mappingEntries.length);\n const mappingContents = [];\n let mappingTypeName;\n\n /** { mapping_key: SchemaEnum.MappingKey, ... } */\n const mappingPropertySchemaEnumKeysMap =\n this.createMappingPropertySchemaEnumKeys({\n abstractSchemaStruct,\n discPropertyName: discriminator.propertyName,\n });\n\n if (ableToCreateMappingType) {\n const rawTypeName = `${abstractSchemaStruct.typeName}_${discriminator.propertyName}`;\n const generatedTypeName = this.schemaUtils.resolveTypeName(rawTypeName, {\n suffixes: this.config.extractingOptions.discriminatorMappingSuffix,\n resolver:\n this.config.extractingOptions.discriminatorMappingNameResolver,\n });\n\n const content = ts.IntersectionType([\n ts.ObjectWrapper(\n ts.TypeField({\n key: ts.StringValue(discriminator.propertyName),\n value: \"Key\",\n }),\n ),\n \"Type\",\n ]);\n\n const component = this.schemaParserFabric.createParsedComponent({\n typeName: generatedTypeName,\n schema: {\n type: \"object\",\n properties: {},\n genericArgs: [{ name: \"Key\" }, { name: \"Type\" }],\n internal: true,\n },\n });\n\n component.typeData.content = content;\n\n mappingTypeName = this.typeNameFormatter.format(component.typeName);\n }\n\n /** returns (GenericType<\"mapping_key\", MappingType>) or ({ discriminatorProperty: \"mapping_key\" } & MappingType) */\n const createMappingContent = (mappingSchema, mappingKey) => {\n const content = this.schemaParserFabric\n .createSchemaParser({\n schema: mappingSchema,\n schemaPath: this.schemaPath,\n })\n .getInlineParseContent();\n\n const mappingUsageKey =\n mappingPropertySchemaEnumKeysMap[mappingKey] ||\n ts.StringValue(mappingKey);\n\n if (ableToCreateMappingType) {\n return ts.TypeWithGeneric(mappingTypeName, [mappingUsageKey, content]);\n }\n\n return ts.ExpressionGroup(\n ts.IntersectionType([\n ts.ObjectWrapper(\n ts.TypeField({\n key: discriminator.propertyName,\n value: mappingUsageKey,\n }),\n ),\n content,\n ]),\n );\n };\n\n for (const [mappingKey, schema] of mappingEntries) {\n const mappingSchema =\n typeof schema === \"string\" ? { $ref: schema } : schema;\n\n this.mutateMappingDependentSchema({\n discPropertyName: discriminator.propertyName,\n abstractSchemaStruct,\n mappingSchema,\n refPath,\n mappingPropertySchemaEnumKeysMap,\n });\n\n mappingContents.push(createMappingContent(mappingSchema, mappingKey));\n }\n\n if (skipMappingType) return null;\n\n const content = ts.ExpressionGroup(ts.UnionType(mappingContents));\n\n return {\n content,\n };\n };\n\n createMappingPropertySchemaEnumKeys = ({\n abstractSchemaStruct,\n discPropertyName,\n }) => {\n const ts = this.config.Ts;\n\n let mappingPropertySchemaEnumKeysMap = {};\n let mappingPropertySchema = lodash.get(\n abstractSchemaStruct?.component?.rawTypeData,\n [\"properties\", discPropertyName],\n );\n if (this.schemaUtils.isRefSchema(mappingPropertySchema)) {\n mappingPropertySchema = this.schemaUtils.getSchemaRefType(\n mappingPropertySchema,\n );\n }\n\n if (\n mappingPropertySchema?.rawTypeData?.$parsed?.type === SCHEMA_TYPES.ENUM\n ) {\n mappingPropertySchemaEnumKeysMap = lodash.reduce(\n mappingPropertySchema.rawTypeData.$parsed.enum,\n (acc, key, index) => {\n const enumKey =\n mappingPropertySchema.rawTypeData.$parsed.content[index].key;\n acc[key] = ts.EnumUsageKey(\n mappingPropertySchema.rawTypeData.$parsed.typeName,\n enumKey,\n );\n return acc;\n },\n {},\n );\n }\n\n return mappingPropertySchemaEnumKeysMap;\n };\n\n mutateMappingDependentSchema = ({\n discPropertyName,\n abstractSchemaStruct,\n mappingSchema,\n refPath,\n mappingPropertySchemaEnumKeysMap,\n }) => {\n const complexSchemaKeys = lodash.keys(\n this.schemaParser._complexSchemaParsers,\n );\n // override parent dependencies\n if (mappingSchema.$ref && abstractSchemaStruct?.component?.$ref) {\n const mappingRefSchema =\n this.schemaUtils.getSchemaRefType(mappingSchema)?.rawTypeData;\n if (mappingRefSchema) {\n for (const schemaKey of complexSchemaKeys) {\n if (Array.isArray(mappingRefSchema[schemaKey])) {\n mappingRefSchema[schemaKey] = mappingRefSchema[schemaKey].map(\n (schema) => {\n if (schema.$ref === refPath) {\n return {\n ...schema,\n $ref: abstractSchemaStruct.component.$ref,\n };\n }\n if (\n this.schemaUtils.getInternalSchemaType(schema) ===\n SCHEMA_TYPES.OBJECT\n ) {\n for (const schemaPropertyName in schema.properties) {\n const schemaProperty =\n schema.properties[schemaPropertyName];\n if (\n schemaPropertyName === discPropertyName &&\n this.schemaUtils.getInternalSchemaType(schemaProperty) ===\n SCHEMA_TYPES.ENUM &&\n schemaProperty.enum.length === 1 &&\n mappingPropertySchemaEnumKeysMap[schemaProperty.enum[0]]\n ) {\n schema.properties[schemaPropertyName] =\n this.schemaParserFabric.createSchema({\n content:\n mappingPropertySchemaEnumKeysMap[\n schemaProperty.enum[0]\n ],\n });\n }\n }\n }\n return schema;\n },\n );\n }\n }\n }\n }\n };\n\n createAbstractSchemaStruct = () => {\n const { discriminator, ...noDiscriminatorSchema } = this.schema;\n const complexSchemaKeys = lodash.keys(\n this.schemaParser._complexSchemaParsers,\n );\n const schema = lodash.omit(\n structuredClone(noDiscriminatorSchema),\n complexSchemaKeys,\n );\n const schemaIsAny =\n this.schemaParserFabric.getInlineParseContent(structuredClone(schema)) ===\n this.config.Ts.Keyword.Any;\n const schemaIsEmpty = !lodash.keys(schema).length;\n\n if (schemaIsEmpty || schemaIsAny) return null;\n\n const typeName = this.schemaUtils.resolveTypeName(this.typeName, {\n prefixes: this.config.extractingOptions.discriminatorAbstractPrefix,\n resolver: this.config.extractingOptions.discriminatorAbstractResolver,\n });\n const component = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\"components\", \"schemas\", typeName]),\n {\n ...schema,\n internal: true,\n },\n );\n const content = this.schemaParserFabric\n .createSchemaParser({ schema: component, schemaPath: this.schemaPath })\n .getInlineParseContent();\n\n return {\n typeName,\n component,\n content,\n };\n };\n\n createComplexSchemaStruct = () => {\n const ts = this.config.Ts;\n const complexType = this.schemaUtils.getComplexType(this.schema);\n\n if (complexType === SCHEMA_TYPES.COMPLEX_UNKNOWN) return null;\n\n return {\n content: ts.ExpressionGroup(\n this.schemaParser._complexSchemaParsers[complexType](this.schema),\n ),\n };\n };\n}\n\nexport { DiscriminatorSchemaParser };\n","import { consola } from \"consola\";\nimport { NameResolver } from \"../../util/name-resolver.js\";\n\nclass EnumKeyResolver extends NameResolver {\n counter = 1;\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames) {\n super(config, reservedNames, (variants) => {\n const generatedVariant =\n (variants[0] && `${variants[0]}${this.counter++}`) ||\n `${this.config.enumKeyResolverName}${this.counter++}`;\n consola.debug(\n \"generated fallback type name for enum key - \",\n generatedVariant,\n );\n return generatedVariant;\n });\n }\n}\n\nexport { EnumKeyResolver };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\nimport { EnumKeyResolver } from \"../util/enum-key-resolver.js\";\n\nclass EnumSchemaParser extends MonoSchemaParser {\n /** @type {EnumKeyResolver} */\n enumKeyResolver;\n\n constructor(...args) {\n super(...args);\n this.enumKeyResolver = new EnumKeyResolver(this.config, []);\n }\n\n extractEnum = (pathTypeName) => {\n const generatedTypeName = this.schemaUtils.resolveTypeName(pathTypeName, {\n suffixes: this.config.extractingOptions.enumSuffix,\n resolver: this.config.extractingOptions.enumNameResolver,\n });\n const customComponent = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\n \"components\",\n \"schemas\",\n generatedTypeName,\n ]),\n {\n ...this.schema,\n },\n );\n return this.schemaParserFabric.parseSchema(customComponent);\n };\n\n parse() {\n const pathTypeName = this.buildTypeNameFromPath();\n\n if (this.config.extractEnums && !this.typeName && pathTypeName != null) {\n return this.extractEnum(pathTypeName);\n }\n\n const refType = this.schemaUtils.getSchemaRefType(this.schema);\n const $ref = refType?.$ref || null;\n\n // fix schema when enum has length 1+ but value is []\n if (Array.isArray(this.schema.enum)) {\n this.schema.enum = this.schema.enum.filter((key) => key != null);\n }\n\n if (Array.isArray(this.schema.enum) && Array.isArray(this.schema.enum[0])) {\n return this.schemaParserFabric.parseSchema(\n {\n oneOf: this.schema.enum.map((enumNames) => ({\n type: \"array\",\n items: enumNames.map((enumName) => ({\n type: \"string\",\n enum: [enumName],\n })),\n })),\n },\n this.typeName,\n this.schemaPath,\n );\n }\n\n const keyType = this.schemaUtils.getSchemaType(this.schema);\n const enumNames = this.schemaUtils.getEnumNames(this.schema);\n let content = null;\n\n const formatValue = (value) => {\n if (value === null) {\n return this.config.Ts.NullValue(value);\n }\n if (\n keyType.includes(this.schemaUtils.getSchemaType({ type: \"number\" }))\n ) {\n return this.config.Ts.NumberValue(value);\n }\n if (\n keyType.includes(this.schemaUtils.getSchemaType({ type: \"boolean\" }))\n ) {\n return this.config.Ts.BooleanValue(value);\n }\n\n return this.config.Ts.StringValue(value);\n };\n\n if (Array.isArray(enumNames) && lodash.size(enumNames)) {\n content = enumNames.map((enumName, index) => {\n const enumValue = lodash.get(this.schema.enum, index);\n const formattedKey = this.formatEnumKey({\n key: enumName,\n value: enumValue,\n });\n\n if (this.config.enumNamesAsValues || enumValue === undefined) {\n return {\n key: formattedKey,\n type: this.config.Ts.Keyword.String,\n value: this.config.Ts.StringValue(enumName),\n };\n }\n\n return {\n key: formattedKey,\n type: keyType,\n value: formatValue(enumValue),\n };\n });\n } else {\n content = this.schema.enum.map((value) => {\n return {\n key: this.formatEnumKey({ value }),\n type: keyType,\n value: formatValue(value),\n };\n });\n }\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $ref: $ref,\n typeName: this.typeName || ($ref && refType.typeName) || null,\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.ENUM,\n type: SCHEMA_TYPES.ENUM,\n keyType: keyType,\n typeIdentifier: this.config.generateUnionEnums\n ? this.config.Ts.Keyword.Type\n : this.config.Ts.Keyword.Enum,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description,\n ),\n content,\n };\n }\n\n formatEnumKey = ({ key, value }) => {\n let formatted;\n\n if (key) {\n formatted = this.typeNameFormatter.format(key, {\n type: \"enum-key\",\n });\n }\n\n if (!formatted) {\n formatted = this.typeNameFormatter.format(`${value}`, {\n type: \"enum-key\",\n });\n }\n\n return this.enumKeyResolver.resolve([formatted]);\n };\n}\n\nexport { EnumSchemaParser };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass ObjectSchemaParser extends MonoSchemaParser {\n parse() {\n const contentProperties = this.getObjectSchemaContent(this.schema);\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.OBJECT,\n type: SCHEMA_TYPES.OBJECT,\n typeIdentifier: this.config.Ts.Keyword.Interface,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(\n this.schema.description,\n ),\n allFieldsAreOptional: !contentProperties.some((part) => part.isRequired),\n content: contentProperties,\n };\n }\n\n getObjectSchemaContent = (schema) => {\n const { properties, additionalProperties } = schema || {};\n\n const propertiesContent = lodash.map(properties, (property, name) => {\n const required = this.schemaUtils.isPropertyRequired(\n name,\n property,\n schema,\n );\n const rawTypeData = lodash.get(\n this.schemaUtils.getSchemaRefType(property),\n \"rawTypeData\",\n {},\n );\n const nullable = !!(rawTypeData.nullable || property.nullable);\n const fieldName = this.typeNameFormatter.isValidName(name)\n ? name\n : this.config.Ts.StringValue(name);\n const fieldValue = this.schemaParserFabric\n .createSchemaParser({\n schema: property,\n schemaPath: [...this.schemaPath, name],\n })\n .getInlineParseContent();\n const readOnly = property.readOnly;\n\n return {\n ...property,\n $$raw: property,\n title: property.title,\n description:\n property.description ||\n lodash.compact(\n lodash.map(\n property[this.schemaUtils.getComplexType(property)],\n \"description\",\n ),\n )[0] ||\n rawTypeData.description ||\n lodash.compact(\n lodash.map(\n rawTypeData[this.schemaUtils.getComplexType(rawTypeData)],\n \"description\",\n ),\n )[0] ||\n \"\",\n isRequired: required,\n isNullable: nullable,\n name: fieldName,\n value: fieldValue,\n field: this.config.Ts.TypeField({\n readonly: readOnly && this.config.addReadonly,\n optional: !required,\n key: fieldName,\n value: fieldValue,\n }),\n };\n });\n\n if (additionalProperties) {\n propertiesContent.push({\n $$raw: { additionalProperties },\n description: \"\",\n isRequired: false,\n field: this.config.Ts.InterfaceDynamicField(\n this.config.Ts.Keyword.String,\n this.config.Ts.Keyword.Any,\n ),\n });\n }\n\n return propertiesContent;\n };\n}\n\nexport { ObjectSchemaParser };\n","import { SCHEMA_TYPES } from \"../../constants.js\";\nimport { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass PrimitiveSchemaParser extends MonoSchemaParser {\n parse() {\n let contentType = null;\n const { additionalProperties, type, description, items } =\n this.schema || {};\n\n if (type === this.config.Ts.Keyword.Object && additionalProperties) {\n const fieldType =\n typeof additionalProperties === \"object\"\n ? this.schemaParserFabric\n .createSchemaParser({\n schema: additionalProperties,\n schemaPath: this.schemaPath,\n })\n .getInlineParseContent()\n : this.config.Ts.Keyword.Any;\n contentType = this.config.Ts.RecordType(\n this.config.Ts.Keyword.String,\n fieldType,\n );\n }\n\n if (Array.isArray(type) && type.length) {\n contentType = this.schemaParser._complexSchemaParsers.oneOf({\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n oneOf: type.map((type) => ({ type })),\n });\n }\n\n if (Array.isArray(items) && type === SCHEMA_TYPES.ARRAY) {\n contentType = this.config.Ts.Tuple(\n items.map((item) =>\n this.schemaParserFabric\n .createSchemaParser({ schema: item, schemaPath: this.schemaPath })\n .getInlineParseContent(),\n ),\n );\n }\n\n return {\n ...(typeof this.schema === \"object\" ? this.schema : {}),\n $schemaPath: this.schemaPath.slice(),\n $parsedSchema: true,\n schemaType: SCHEMA_TYPES.PRIMITIVE,\n type: SCHEMA_TYPES.PRIMITIVE,\n typeIdentifier: this.config.Ts.Keyword.Type,\n name: this.typeName,\n description: this.schemaFormatters.formatDescription(description),\n // TODO: probably it should be refactored. `type === 'null'` is not flexible\n content:\n type === this.config.Ts.Keyword.Null\n ? type\n : contentType || this.schemaUtils.getSchemaType(this.schema),\n };\n }\n}\n\nexport { PrimitiveSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\n// T1 & T2\nclass AllOfSchemaParser extends MonoSchemaParser {\n parse() {\n const ignoreTypes = [this.config.Ts.Keyword.Any];\n const combined = this.schema.allOf.map((childSchema) =>\n this.schemaParserFabric.getInlineParseContent(\n this.schemaUtils.makeAddRequiredToChildSchema(this.schema, childSchema),\n null,\n this.schemaPath,\n ),\n );\n const filtered = this.schemaUtils.filterSchemaContents(\n combined,\n (content) => !ignoreTypes.includes(content),\n );\n\n const type = this.config.Ts.IntersectionType(filtered);\n\n return this.schemaUtils.safeAddNullToType(this.schema, type);\n }\n}\n\nexport { AllOfSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\n// T1 | T2\nclass AnyOfSchemaParser extends MonoSchemaParser {\n parse() {\n const ignoreTypes = [this.config.Ts.Keyword.Any];\n const combined = this.schema.anyOf.map((childSchema) =>\n this.schemaParserFabric.getInlineParseContent(\n this.schemaUtils.makeAddRequiredToChildSchema(this.schema, childSchema),\n null,\n this.schemaPath,\n ),\n );\n\n const filtered = this.schemaUtils.filterSchemaContents(\n combined,\n (content) => !ignoreTypes.includes(content),\n );\n\n const type = this.config.Ts.UnionType(filtered);\n\n return this.schemaUtils.safeAddNullToType(this.schema, type);\n }\n}\n\nexport { AnyOfSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\nclass NotSchemaParser extends MonoSchemaParser {\n parse() {\n return this.config.Ts.Keyword.Any;\n }\n}\n\nexport { NotSchemaParser };\n","import { MonoSchemaParser } from \"../mono-schema-parser.js\";\n\n// T1 | T2\nclass OneOfSchemaParser extends MonoSchemaParser {\n parse() {\n const ignoreTypes = [this.config.Ts.Keyword.Any];\n const combined = this.schema.oneOf.map((childSchema) =>\n this.schemaParserFabric.getInlineParseContent(\n this.schemaUtils.makeAddRequiredToChildSchema(this.schema, childSchema),\n null,\n this.schemaPath,\n ),\n );\n\n const filtered = this.schemaUtils.filterSchemaContents(\n combined,\n (content) => !ignoreTypes.includes(content),\n );\n\n const type = this.config.Ts.UnionType(filtered);\n\n return this.schemaUtils.safeAddNullToType(this.schema, type);\n }\n}\n\nexport { OneOfSchemaParser };\n","import lodash from \"lodash\";\n\nfunction internalCase(value) {\n return lodash.camelCase(lodash.lowerCase(value));\n}\n\nexport { internalCase };\n","import lodash from \"lodash\";\n\nfunction pascalCase(value) {\n return lodash.upperFirst(lodash.camelCase(value));\n}\n\nexport { pascalCase };\n","import lodash from \"lodash\";\nimport { SCHEMA_TYPES } from \"../constants.js\";\nimport { internalCase } from \"../util/internal-case.js\";\nimport { pascalCase } from \"../util/pascal-case.js\";\n\nclass SchemaUtils {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaWalker} */\n schemaWalker;\n\n constructor({\n config,\n schemaComponentsMap,\n typeNameFormatter,\n schemaWalker,\n }) {\n this.config = config;\n this.schemaComponentsMap = schemaComponentsMap;\n this.typeNameFormatter = typeNameFormatter;\n this.schemaWalker = schemaWalker;\n }\n\n getRequiredProperties = (schema) => {\n return lodash.uniq(\n (schema && Array.isArray(schema.required) && schema.required) || [],\n );\n };\n\n isRefSchema = (schema) => {\n return !!schema?.$ref;\n };\n\n getEnumNames = (schema) => {\n return (\n schema[\"x-enumNames\"] ||\n schema.xEnumNames ||\n schema[\"x-enumnames\"] ||\n schema[\"x-enum-varnames\"]\n );\n };\n\n getSchemaRefType = (schema) => {\n if (!this.isRefSchema(schema)) return null;\n // const resolved = this.schemaWalker.findByRef(schema.$ref);\n return this.schemaComponentsMap.get(schema.$ref);\n };\n\n isPropertyRequired = (name, propertySchema, rootSchema) => {\n if (propertySchema[\"x-omitempty\"] === false) {\n return true;\n }\n\n const isRequired =\n typeof propertySchema.required === \"boolean\"\n ? !!propertySchema.required\n : Array.isArray(rootSchema.required)\n ? rootSchema.required.includes(name)\n : !!rootSchema.required;\n\n if (this.config.convertedFromSwagger2) {\n return typeof propertySchema.nullable === this.config.Ts.Keyword.Undefined\n ? isRequired\n : !propertySchema.nullable;\n }\n return isRequired;\n };\n\n isNullMissingInType = (schema, type) => {\n const { nullable, type: schemaType } = schema || {};\n return (\n (nullable ||\n !!lodash.get(schema, \"x-nullable\") ||\n schemaType === this.config.Ts.Keyword.Null) &&\n typeof type === \"string\" &&\n !type.includes(` ${this.config.Ts.Keyword.Null}`) &&\n !type.includes(`${this.config.Ts.Keyword.Null} `)\n );\n };\n\n safeAddNullToType = (schema, type) => {\n if (this.isNullMissingInType(schema, type)) {\n return this.config.Ts.UnionType([type, this.config.Ts.Keyword.Null]);\n }\n return type;\n };\n\n getSchemaPrimitiveType = (rawSchema) => {\n const schema = rawSchema || {};\n\n if (schema.type) {\n return internalCase(schema.type);\n }\n if (schema.enum) {\n const enumFieldType = typeof schema.enum[0];\n if (enumFieldType === this.config.Ts.Keyword.Undefined) return;\n\n return internalCase(enumFieldType);\n }\n if (lodash.keys(schema.properties).length) {\n return SCHEMA_TYPES.OBJECT;\n }\n if (schema.items) {\n return SCHEMA_TYPES.ARRAY;\n }\n\n return null;\n };\n\n checkAndAddRequiredKeys = (schema, resultType) => {\n if (\"$$requiredKeys\" in schema && schema.$$requiredKeys.length) {\n this.config.update({\n internalTemplateOptions: {\n addUtilRequiredKeysType: true,\n },\n });\n return this.config.Ts.TypeWithGeneric(\n this.config.Ts.CodeGenKeyword.UtilRequiredKeys,\n [\n resultType,\n this.config.Ts.UnionType(\n schema.$$requiredKeys.map(this.config.Ts.StringValue),\n ),\n ],\n );\n }\n\n return resultType;\n };\n\n makeAddRequiredToChildSchema = (parentSchema, childSchema) => {\n if (!childSchema) return childSchema;\n\n const required = lodash.uniq([\n ...this.getRequiredProperties(parentSchema),\n ...this.getRequiredProperties(childSchema),\n ]);\n\n const refData = this.getSchemaRefType(childSchema);\n\n if (refData) {\n const refObjectProperties = lodash.keys(\n refData.rawTypeData?.properties || {},\n );\n const existedRequiredKeys = refObjectProperties.filter((key) =>\n required.includes(key),\n );\n\n if (!existedRequiredKeys.length) return childSchema;\n\n return {\n ...childSchema,\n $$requiredKeys: existedRequiredKeys,\n };\n }\n\n if (childSchema.properties) {\n const childSchemaProperties = lodash.keys(childSchema.properties);\n const existedRequiredKeys = childSchemaProperties.filter((key) =>\n required.includes(key),\n );\n\n if (!existedRequiredKeys.length) return childSchema;\n\n return {\n required: lodash.uniq([\n ...this.getRequiredProperties(childSchema),\n ...existedRequiredKeys,\n ]),\n ...childSchema,\n };\n }\n\n return childSchema;\n };\n\n filterSchemaContents = (contents, filterFn) => {\n return lodash.uniq(contents.filter((type) => filterFn(type)));\n };\n\n resolveTypeName = (\n typeName,\n { suffixes, resolver, prefixes, shouldReserve = true },\n ) => {\n if (resolver) {\n return this.config.componentTypeNameResolver.resolve(null, (reserved) => {\n return resolver(pascalCase(typeName), reserved);\n });\n }\n\n return this.config.componentTypeNameResolver.resolve(\n [\n ...(prefixes || []).map((prefix) =>\n pascalCase(`${prefix} ${typeName}`),\n ),\n ...(suffixes || []).map((suffix) =>\n pascalCase(`${typeName} ${suffix}`),\n ),\n ],\n shouldReserve,\n );\n };\n\n getComplexType = (schema) => {\n if (schema.oneOf) return SCHEMA_TYPES.COMPLEX_ONE_OF;\n if (schema.allOf) return SCHEMA_TYPES.COMPLEX_ALL_OF;\n if (schema.anyOf) return SCHEMA_TYPES.COMPLEX_ANY_OF;\n // TODO :(\n if (schema.not) return SCHEMA_TYPES.COMPLEX_NOT;\n\n return SCHEMA_TYPES.COMPLEX_UNKNOWN;\n };\n\n getInternalSchemaType = (schema) => {\n if (\n !lodash.isEmpty(schema.enum) ||\n !lodash.isEmpty(this.getEnumNames(schema))\n ) {\n return SCHEMA_TYPES.ENUM;\n }\n if (schema.discriminator) {\n return SCHEMA_TYPES.DISCRIMINATOR;\n }\n if (schema.allOf || schema.oneOf || schema.anyOf || schema.not) {\n return SCHEMA_TYPES.COMPLEX;\n }\n if (!lodash.isEmpty(schema.properties)) {\n return SCHEMA_TYPES.OBJECT;\n }\n if (schema.type === SCHEMA_TYPES.ARRAY) {\n return SCHEMA_TYPES.ARRAY;\n }\n\n return SCHEMA_TYPES.PRIMITIVE;\n };\n\n getSchemaType = (schema) => {\n if (!schema) return this.config.Ts.Keyword.Any;\n\n const refTypeInfo = this.getSchemaRefType(schema);\n\n if (refTypeInfo) {\n return this.checkAndAddRequiredKeys(\n schema,\n this.safeAddNullToType(\n schema,\n this.typeNameFormatter.format(refTypeInfo.typeName),\n ),\n );\n }\n\n let resultType;\n\n if (this.isConstantSchema(schema)) {\n resultType = this.formatJsValue(schema.const);\n } else {\n const primitiveType = this.getSchemaPrimitiveType(schema);\n\n if (primitiveType == null) {\n return this.config.Ts.Keyword.Any;\n }\n\n const typeAlias =\n lodash.get(this.config.primitiveTypes, [\n primitiveType,\n schema.format,\n ]) ||\n lodash.get(this.config.primitiveTypes, [primitiveType, \"$default\"]) ||\n this.config.primitiveTypes[primitiveType];\n\n if (typeof typeAlias === \"function\") {\n resultType = typeAlias(schema, this);\n } else {\n resultType = typeAlias || primitiveType;\n }\n }\n\n if (!resultType) {\n return this.config.Ts.Keyword.Any;\n }\n\n return this.checkAndAddRequiredKeys(\n schema,\n this.safeAddNullToType(schema, resultType),\n );\n };\n\n buildTypeNameFromPath = (schemaPath) => {\n schemaPath = lodash.uniq(lodash.compact(schemaPath));\n\n if (!schemaPath || !schemaPath[0]) return null;\n\n return pascalCase(\n lodash.camelCase(\n lodash\n .uniq([schemaPath[0], schemaPath[schemaPath.length - 1]])\n .join(\"_\"),\n ),\n );\n };\n\n isConstantSchema(schema) {\n return \"const\" in schema;\n }\n\n formatJsValue = (value) => {\n switch (typeof value) {\n case \"string\": {\n return this.config.Ts.StringValue(value);\n }\n case \"boolean\": {\n return this.config.Ts.BooleanValue(value);\n }\n case \"number\": {\n return this.config.Ts.NumberValue(value);\n }\n default: {\n if (value === null) {\n return this.config.Ts.NullValue(value);\n }\n\n return this.config.Ts.Keyword.Any;\n }\n }\n };\n}\n\nexport { SchemaUtils };\n","import { SchemaFormatters } from \"./schema-formatters.js\";\nimport { SchemaParser } from \"./schema-parser.js\";\nimport { SchemaUtils } from \"./schema-utils.js\";\n\nclass SchemaParserFabric {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaFormatters} */\n schemaFormatters;\n /** @type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaUtils} */\n schemaUtils;\n /** @type {SchemaWalker} */\n schemaWalker;\n\n constructor({\n config,\n templatesWorker,\n schemaComponentsMap,\n typeNameFormatter,\n schemaWalker,\n }) {\n this.config = config;\n this.schemaComponentsMap = schemaComponentsMap;\n this.typeNameFormatter = typeNameFormatter;\n this.templatesWorker = templatesWorker;\n this.schemaWalker = schemaWalker;\n this.schemaUtils = new SchemaUtils(this);\n this.schemaFormatters = new SchemaFormatters(this);\n }\n\n createSchemaParser = ({ schema, typeName, schemaPath }) => {\n return new SchemaParser(this, { schema, typeName, schemaPath });\n };\n\n /**\n *\n * @param content schema content\n * @param linkedSchema link content to attached schema\n * @param linkedComponent link content and other schema props to attached component\n * @param schemaPath\n * @param otherSchemaProps\n * @returns {{}}\n */\n createSchema = ({\n content,\n linkedSchema = {},\n linkedComponent,\n schemaPath,\n ...otherSchemaProps\n }) => {\n const parser = this.createSchemaParser({\n schema: linkedComponent || linkedSchema,\n schemaPath,\n });\n const parsed = parser.parseSchema();\n parsed.content = content;\n Object.assign(parsed, otherSchemaProps);\n if (linkedComponent) {\n linkedComponent.typeData = parsed;\n }\n return parser.schema;\n };\n\n createParsedComponent = ({ typeName, schema, schemaPath }) => {\n const schemaCopy = structuredClone(schema);\n const customComponent = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\"components\", \"schemas\", typeName]),\n schemaCopy,\n );\n const parsed = this.parseSchema(schemaCopy, null, schemaPath);\n\n parsed.name = typeName;\n customComponent.typeData = parsed;\n\n return customComponent;\n };\n\n /**\n *\n * @param schema {any}\n * @param typeName {null | string}\n * @param [schemaPath] {string[]}\n * @return {Record<string, any>}\n */\n parseSchema = (schema, typeName = null, schemaPath = []) => {\n const schemaParser = this.createSchemaParser({\n schema,\n typeName,\n schemaPath,\n });\n return schemaParser.parseSchema();\n };\n\n /**\n *\n * @param schema {any}\n * @param typeName {null | string}\n * @param [schemaPath] {string[]}\n * @return {Record<string, any>}\n */\n getInlineParseContent = (schema, typeName, schemaPath) => {\n const parser = this.createSchemaParser({ schema, typeName, schemaPath });\n return parser.getInlineParseContent();\n };\n\n /**\n *\n * @param schema {any}\n * @param typeName {null | string}\n * @param [schemaPath] {string[]}\n * @return {Record<string, any>}\n */\n getParseContent = (schema, typeName, schemaPath) => {\n const parser = this.createSchemaParser({ schema, typeName, schemaPath });\n return parser.getParseContent();\n };\n}\n\nexport { SchemaParserFabric };\n","import * as nanoid from \"nanoid\";\n\nconst ALPHABET = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n\nconst generateId = nanoid.customAlphabet(ALPHABET, 12);\n\nexport { generateId };\n","import { consola } from \"consola\";\nimport { NameResolver } from \"../../util/name-resolver.js\";\n\nclass SpecificArgNameResolver extends NameResolver {\n counter = 1;\n /**\n * @param {CodeGenConfig} config;\n * @param {string[]} reservedNames\n */\n constructor(config, reservedNames) {\n super(config, reservedNames, (variants) => {\n const generatedVariant =\n (variants[0] && `${variants[0]}${this.counter++}`) ||\n `${this.config.specificArgNameResolverName}${this.counter++}`;\n consola.debug(\n \"generated fallback type name for specific arg - \",\n generatedVariant,\n );\n return generatedVariant;\n });\n }\n}\n\nexport { SpecificArgNameResolver };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\nimport {\n DEFAULT_BODY_ARG_NAME,\n RESERVED_BODY_ARG_NAMES,\n RESERVED_HEADER_ARG_NAMES,\n RESERVED_PATH_ARG_NAMES,\n RESERVED_QUERY_ARG_NAMES,\n} from \"../constants.js\";\nimport { generateId } from \"../util/id.js\";\nimport { SpecificArgNameResolver } from \"./util/specific-arg-name-resolver.js\";\n\nconst CONTENT_KIND = {\n JSON: \"JSON\",\n URL_ENCODED: \"URL_ENCODED\",\n FORM_DATA: \"FORM_DATA\",\n IMAGE: \"IMAGE\",\n OTHER: \"OTHER\",\n TEXT: \"TEXT\",\n};\n\nclass SchemaRoutes {\n /**\n * @type {CodeGenConfig}\n */\n config;\n /**\n * @type {SchemaParserFabric}\n */\n schemaParserFabric;\n /**\n * @type {SchemaUtils}\n */\n schemaUtils;\n /**\n * @type {TypeNameFormatter}\n */\n typeNameFormatter;\n /**\n * @type {SchemaComponentsMap}\n */\n schemaComponentsMap;\n /**\n * @type {TemplatesWorker}\n */\n templatesWorker;\n\n FORM_DATA_TYPES = [];\n\n routes = [];\n hasSecurityRoutes = false;\n hasQueryRoutes = false;\n hasFormDataRoutes = false;\n\n constructor({\n config,\n schemaParserFabric,\n schemaComponentsMap,\n templatesWorker,\n typeNameFormatter,\n }) {\n this.config = config;\n this.schemaParserFabric = schemaParserFabric;\n this.schemaUtils = this.schemaParserFabric.schemaUtils;\n this.typeNameFormatter = typeNameFormatter;\n this.schemaComponentsMap = schemaComponentsMap;\n this.templatesWorker = templatesWorker;\n\n this.FORM_DATA_TYPES = lodash.uniq([\n this.schemaUtils.getSchemaType({ type: \"string\", format: \"file\" }),\n this.schemaUtils.getSchemaType({ type: \"string\", format: \"binary\" }),\n ]);\n }\n\n createRequestsMap = (routeInfoByMethodsMap) => {\n const parameters = lodash.get(routeInfoByMethodsMap, \"parameters\");\n\n return lodash.reduce(\n routeInfoByMethodsMap,\n (acc, requestInfo, method) => {\n if (\n method.startsWith(\"x-\") ||\n [\"parameters\", \"$ref\"].includes(method)\n ) {\n return acc;\n }\n\n acc[method] = {\n ...requestInfo,\n parameters: lodash.compact(\n lodash.concat(parameters, requestInfo.parameters),\n ),\n };\n\n return acc;\n },\n {},\n );\n };\n\n parseRouteName = (originalRouteName) => {\n const routeName =\n this.config.hooks.onPreBuildRoutePath(originalRouteName) ||\n originalRouteName;\n\n const pathParamMatches = (routeName || \"\").match(\n /({(([A-z]){1}([a-zA-Z0-9]-?_?\\.?)+)([0-9]+)?})|(:(([A-z]){1}([a-zA-Z0-9]-?_?\\.?)+)([0-9]+)?:?)/g,\n );\n\n // used in case when path parameters is not declared in requestInfo.parameters (\"in\": \"path\")\n const pathParams = lodash.reduce(\n pathParamMatches,\n (pathParams, match) => {\n const paramName = match.replace(/\\{|\\}|:/g, \"\");\n\n if (!paramName) return pathParams;\n\n if (paramName.includes(\"-\")) {\n consola.warn(\"wrong path param name\", paramName);\n }\n\n pathParams.push({\n $match: match,\n name: lodash.camelCase(paramName),\n required: true,\n type: \"string\",\n description: \"\",\n schema: {\n type: \"string\",\n },\n in: \"path\",\n });\n\n return pathParams;\n },\n [],\n );\n\n let fixedRoute = pathParams.reduce((fixedRoute, pathParam, i, arr) => {\n const insertion =\n this.config.hooks.onInsertPathParam(\n pathParam.name,\n i,\n arr,\n fixedRoute,\n ) || pathParam.name;\n return fixedRoute.replace(pathParam.$match, `\\${${insertion}}`);\n }, routeName || \"\");\n\n const queryParamMatches = fixedRoute.match(/(\\{\\?.*\\})/g);\n const queryParams = [];\n\n if (queryParamMatches?.length) {\n for (const match of queryParamMatches) {\n fixedRoute = fixedRoute.replace(match, \"\");\n }\n\n const paramNames = lodash.uniq(\n queryParamMatches\n .join(\",\")\n .replace(/(\\{\\?)|(\\})|\\s/g, \"\")\n .split(\",\"),\n );\n\n for (const paramName of paramNames) {\n if (paramName.includes(\"-\")) {\n consola.warn(\"wrong query param name\", paramName);\n }\n\n queryParams.push({\n $match: paramName,\n name: lodash.camelCase(paramName),\n required: true,\n type: \"string\",\n description: \"\",\n schema: {\n type: \"string\",\n },\n in: \"query\",\n });\n }\n }\n\n const result = {\n originalRoute: originalRouteName || \"\",\n route: fixedRoute,\n pathParams,\n queryParams,\n };\n\n return this.config.hooks.onBuildRoutePath(result) || result;\n };\n\n getRouteParams = (\n routeInfo,\n pathParamsFromRouteName,\n queryParamsFromRouteName,\n ) => {\n const { parameters } = routeInfo;\n\n const routeParams = {\n path: [],\n header: [],\n body: [],\n query: [],\n formData: [],\n cookie: [],\n };\n\n lodash.each(parameters, (parameter) => {\n const refTypeInfo =\n this.schemaParserFabric.schemaUtils.getSchemaRefType(parameter);\n let routeParam = null;\n\n if (refTypeInfo?.rawTypeData.in && refTypeInfo.rawTypeData) {\n if (!routeParams[refTypeInfo.rawTypeData.in]) {\n routeParams[refTypeInfo.rawTypeData.in] = [];\n }\n\n routeParam = {\n ...refTypeInfo.rawTypeData,\n ...(refTypeInfo.rawTypeData.schema || {}),\n };\n } else {\n if (!parameter.in) return;\n\n if (!routeParams[parameter.in]) {\n routeParams[parameter.in] = [];\n }\n\n routeParam = {\n ...parameter,\n ...(parameter.schema || {}),\n };\n }\n\n if (routeParam.in === \"path\") {\n if (!routeParam.name) return;\n\n routeParam.name = lodash.camelCase(routeParam.name);\n }\n\n if (routeParam) {\n routeParams[routeParam.in].push(routeParam);\n }\n });\n\n // used in case when path parameters is not declared in requestInfo.parameters (\"in\": \"path\")\n for (const pathParam of pathParamsFromRouteName) {\n const alreadyExist = routeParams.path.some(\n (parameter) => parameter.name === pathParam.name,\n );\n\n if (!alreadyExist) {\n routeParams.path.push(pathParam);\n }\n }\n\n // used in case when path parameters is not declared in requestInfo.parameters (\"in\": \"path\")\n for (const queryParam of queryParamsFromRouteName) {\n const alreadyExist = routeParams.query.some(\n (parameter) => parameter.name === queryParam.name,\n );\n\n if (!alreadyExist) {\n routeParams.query.push(queryParam);\n }\n }\n\n return routeParams;\n };\n\n getContentTypes = (requestInfo, extraContentTypes) =>\n lodash.uniq(\n lodash.compact([\n ...(extraContentTypes || []),\n ...lodash.flatten(\n lodash.map(\n requestInfo,\n (requestInfoData) =>\n requestInfoData && lodash.keys(requestInfoData.content),\n ),\n ),\n ]),\n );\n\n getContentKind = (contentTypes) => {\n if (\n contentTypes.some((contentType) =>\n contentType.startsWith(\"application/json\"),\n ) ||\n contentTypes.some((contentType) => contentType.endsWith(\"+json\"))\n ) {\n return CONTENT_KIND.JSON;\n }\n\n if (contentTypes.includes(\"application/x-www-form-urlencoded\")) {\n return CONTENT_KIND.URL_ENCODED;\n }\n\n if (contentTypes.includes(\"multipart/form-data\")) {\n return CONTENT_KIND.FORM_DATA;\n }\n\n if (contentTypes.some((contentType) => contentType.includes(\"image/\"))) {\n return CONTENT_KIND.IMAGE;\n }\n\n if (contentTypes.some((contentType) => contentType.startsWith(\"text/\"))) {\n return CONTENT_KIND.TEXT;\n }\n\n return CONTENT_KIND.OTHER;\n };\n\n isSuccessStatus = (status) =>\n (this.config.defaultResponseAsSuccess && status === \"default\") ||\n (+status >= this.config.successResponseStatusRange[0] &&\n +status <= this.config.successResponseStatusRange[1]) ||\n status === \"2xx\";\n\n getSchemaFromRequestType = (requestInfo) => {\n const content = lodash.get(requestInfo, \"content\");\n\n if (!content) return null;\n\n /* content: { \"multipart/form-data\": { schema: {...} }, \"application/json\": { schema: {...} } } */\n\n /* for example: dataType = \"multipart/form-data\" */\n for (const dataType in content) {\n if (content[dataType]?.schema) {\n return {\n ...content[dataType].schema,\n dataType,\n };\n }\n }\n\n return null;\n };\n\n getTypeFromRequestInfo = ({\n requestInfo,\n parsedSchemas,\n operationId,\n defaultType,\n typeName,\n }) => {\n // TODO: make more flexible pick schema without content type\n const schema = this.getSchemaFromRequestType(requestInfo);\n const refTypeInfo =\n this.schemaParserFabric.schemaUtils.getSchemaRefType(requestInfo);\n\n if (schema) {\n const content = this.schemaParserFabric.getInlineParseContent(\n schema,\n typeName,\n [operationId],\n );\n const foundedSchemaByName = parsedSchemas.find(\n (parsedSchema) =>\n this.typeNameFormatter.format(parsedSchema.name) === content,\n );\n const foundSchemaByContent = parsedSchemas.find((parsedSchema) =>\n lodash.isEqual(parsedSchema.content, content),\n );\n\n const foundSchema = foundedSchemaByName || foundSchemaByContent;\n\n return foundSchema\n ? this.typeNameFormatter.format(foundSchema.name)\n : content;\n }\n\n if (refTypeInfo) {\n // const refTypeWithoutOpId = refType.replace(operationId, '');\n // const foundedSchemaByName = _.find(parsedSchemas, ({ name }) => name === refType || name === refTypeWithoutOpId)\n\n // TODO:HACK fix problem of swagger2opeanpi\n const typeNameWithoutOpId = refTypeInfo.typeName.replace(operationId, \"\");\n if (parsedSchemas.find((schema) => schema.name === typeNameWithoutOpId)) {\n return this.typeNameFormatter.format(typeNameWithoutOpId);\n }\n\n switch (refTypeInfo.componentName) {\n case \"schemas\":\n return this.typeNameFormatter.format(refTypeInfo.typeName);\n case \"responses\":\n case \"requestBodies\":\n return this.schemaParserFabric.getInlineParseContent(\n this.getSchemaFromRequestType(refTypeInfo.rawTypeData),\n refTypeInfo.typeName || null,\n [operationId],\n );\n default:\n return this.schemaParserFabric.getInlineParseContent(\n refTypeInfo.rawTypeData,\n refTypeInfo.typeName || null,\n [operationId],\n );\n }\n }\n\n return defaultType || this.config.Ts.Keyword.Any;\n };\n\n getRequestInfoTypes = ({\n requestInfos,\n parsedSchemas,\n operationId,\n defaultType,\n }) =>\n lodash.reduce(\n requestInfos,\n (acc, requestInfo, status) => {\n const contentTypes = this.getContentTypes([requestInfo]);\n\n return [\n ...acc,\n {\n ...(requestInfo || {}),\n contentTypes: contentTypes,\n contentKind: this.getContentKind(contentTypes),\n type: this.schemaParserFabric.schemaUtils.safeAddNullToType(\n requestInfo,\n this.getTypeFromRequestInfo({\n requestInfo,\n parsedSchemas,\n operationId,\n defaultType,\n }),\n ),\n description:\n this.schemaParserFabric.schemaFormatters.formatDescription(\n requestInfo.description || \"\",\n true,\n ),\n status: Number.isNaN(+status) ? status : +status,\n isSuccess: this.isSuccessStatus(status),\n },\n ];\n },\n [],\n );\n\n getResponseBodyInfo = (routeInfo, parsedSchemas) => {\n const { produces, operationId, responses } = routeInfo;\n\n const contentTypes = this.getContentTypes(responses, [\n ...(produces || []),\n routeInfo[\"x-accepts\"],\n ]);\n\n const responseInfos = this.getRequestInfoTypes({\n requestInfos: responses,\n parsedSchemas,\n operationId,\n defaultType: this.config.defaultResponseType,\n });\n\n const successResponse = responseInfos.find(\n (response) => response.isSuccess,\n );\n const errorResponses = responseInfos.filter(\n (response) =>\n !response.isSuccess && response.type !== this.config.Ts.Keyword.Any,\n );\n\n const handleResponseHeaders = (src) => {\n if (!src) {\n return \"headers: {},\";\n }\n const headerTypes = Object.fromEntries(\n Object.entries(src).map(([k, v]) => {\n return [k, this.schemaUtils.getSchemaType(v)];\n }),\n );\n const r = `headers: { ${Object.entries(headerTypes)\n .map(([k, v]) => `\"${k}\": ${v}`)\n .join(\",\")} },`;\n return r;\n };\n\n return {\n contentTypes,\n responses: responseInfos,\n success: {\n schema: successResponse,\n type: successResponse?.type || this.config.Ts.Keyword.Any,\n },\n error: {\n schemas: errorResponses,\n type:\n this.config.Ts.UnionType(\n errorResponses.map((response) => response.type),\n ) || this.config.Ts.Keyword.Any,\n },\n full: {\n types:\n this.config.Ts.UnionType(\n responseInfos.map(\n (response) => `{\n data: ${response.type}, status: ${response.status}, statusCode: ${\n response.status\n }, statusText: \"${response.description}\", ${handleResponseHeaders(\n response.headers,\n )} config: {} }`,\n ),\n ) || this.config.Ts.Keyword.Any,\n },\n };\n };\n\n convertRouteParamsIntoObject = (params) => {\n return params.reduce(\n (objectSchema, schemaPart) => {\n if (!schemaPart || !schemaPart.name) return objectSchema;\n\n let usageName = `${schemaPart.name}`;\n\n if (usageName.includes(\".\")) {\n usageName = lodash.camelCase(usageName);\n }\n\n return {\n ...objectSchema,\n properties: {\n ...objectSchema.properties,\n [usageName]: {\n ...schemaPart,\n ...(schemaPart.schema || {}),\n $origName: schemaPart.name,\n name: usageName,\n },\n },\n };\n },\n {\n properties: {},\n type: \"object\",\n },\n );\n };\n\n getRequestBodyInfo = (routeInfo, routeParams, parsedSchemas, routeName) => {\n const { requestBody, consumes, requestBodyName, operationId } = routeInfo;\n let schema = null;\n let content = null;\n\n const contentTypes = this.getContentTypes(\n [requestBody],\n [...(consumes || []), routeInfo[\"x-contentType\"]],\n );\n let contentKind = this.getContentKind(contentTypes);\n\n let typeName = null;\n\n if (this.config.extractRequestBody) {\n typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.requestBodySuffix,\n resolver: this.config.extractingOptions.requestBodyNameResolver,\n });\n }\n\n if (routeParams.formData.length) {\n contentKind = CONTENT_KIND.FORM_DATA;\n schema = this.convertRouteParamsIntoObject(routeParams.formData);\n content = this.schemaParserFabric.getInlineParseContent(\n schema,\n typeName,\n [operationId],\n );\n } else if (contentKind === CONTENT_KIND.FORM_DATA) {\n schema = this.getSchemaFromRequestType(requestBody);\n content = this.schemaParserFabric.getInlineParseContent(\n schema,\n typeName,\n [operationId],\n );\n } else if (requestBody) {\n schema = this.getSchemaFromRequestType(requestBody);\n content = this.schemaParserFabric.schemaUtils.safeAddNullToType(\n requestBody,\n this.getTypeFromRequestInfo({\n requestInfo: requestBody,\n parsedSchemas,\n operationId,\n typeName,\n }),\n );\n\n // TODO: Refactor that.\n // It needed for cases when swagger schema is not declared request body type as form data\n // but request body data type contains form data types like File\n if (\n this.FORM_DATA_TYPES.some((dataType) =>\n content.includes(`: ${dataType}`),\n )\n ) {\n contentKind = CONTENT_KIND.FORM_DATA;\n }\n }\n\n if (schema && !schema.$ref && this.config.extractRequestBody) {\n schema = this.schemaParserFabric.createParsedComponent({\n schema,\n typeName,\n schemaPath: [operationId],\n });\n content = this.schemaParserFabric.getInlineParseContent({\n $ref: schema.$ref,\n });\n }\n\n return {\n paramName: requestBodyName || requestBody?.name || DEFAULT_BODY_ARG_NAME,\n contentTypes,\n contentKind,\n schema,\n type: content,\n required:\n requestBody &&\n (typeof requestBody.required === \"undefined\" || !!requestBody.required),\n };\n };\n\n createRequestParamsSchema = ({\n queryParams,\n queryObjectSchema,\n pathArgsSchemas,\n extractRequestParams,\n routeName,\n }) => {\n if (!queryParams || !queryParams.length) return null;\n\n const pathParams = pathArgsSchemas.reduce((acc, pathArgSchema) => {\n if (pathArgSchema.name) {\n acc[pathArgSchema.name] = {\n ...pathArgSchema,\n in: \"path\",\n };\n }\n\n return acc;\n }, {});\n\n const fixedQueryParams = lodash.reduce(\n lodash.get(queryObjectSchema, \"properties\", {}),\n (acc, property, name) => {\n if (name && typeof property === \"object\") {\n acc[name] = {\n ...property,\n in: \"query\",\n };\n }\n\n return acc;\n },\n {},\n );\n\n const schema = {\n ...queryObjectSchema,\n properties: {\n ...fixedQueryParams,\n ...pathParams,\n },\n };\n\n const fixedSchema = this.config.hooks.onCreateRequestParams(schema);\n\n if (fixedSchema) return fixedSchema;\n\n if (extractRequestParams) {\n const generatedTypeName = this.schemaUtils.resolveTypeName(\n routeName.usage,\n {\n suffixes: this.config.extractingOptions.requestParamsSuffix,\n resolver: this.config.extractingOptions.requestParamsNameResolver,\n },\n );\n\n return this.schemaParserFabric.createParsedComponent({\n typeName: generatedTypeName,\n schema: schema,\n });\n }\n\n return schema;\n };\n\n extractResponseBodyIfItNeeded = (routeInfo, responseBodyInfo, routeName) => {\n if (\n responseBodyInfo.responses.length &&\n responseBodyInfo.success &&\n responseBodyInfo.success.schema\n ) {\n const typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.responseBodySuffix,\n resolver: this.config.extractingOptions.responseBodyNameResolver,\n });\n\n const idx = responseBodyInfo.responses.indexOf(\n responseBodyInfo.success.schema,\n );\n\n const successResponse = responseBodyInfo.success;\n\n if (successResponse.schema && !successResponse.schema.$ref) {\n const contentKind = successResponse.schema.contentKind;\n const schema = this.getSchemaFromRequestType(successResponse.schema);\n successResponse.schema = this.schemaParserFabric.createParsedComponent({\n schema,\n typeName,\n schemaPath: [routeInfo.operationId],\n });\n successResponse.schema.contentKind = contentKind;\n successResponse.type = this.schemaParserFabric.getInlineParseContent({\n $ref: successResponse.schema.$ref,\n });\n\n if (idx > -1) {\n lodash.assign(responseBodyInfo.responses[idx], {\n ...successResponse.schema,\n type: successResponse.type,\n });\n }\n }\n }\n };\n\n extractResponseErrorIfItNeeded = (routeInfo, responseBodyInfo, routeName) => {\n if (\n responseBodyInfo.responses.length &&\n responseBodyInfo.error.schemas &&\n responseBodyInfo.error.schemas.length\n ) {\n const typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.responseErrorSuffix,\n resolver: this.config.extractingOptions.responseErrorNameResolver,\n });\n\n const errorSchemas = responseBodyInfo.error.schemas\n .map(this.getSchemaFromRequestType)\n .filter(Boolean);\n\n if (!errorSchemas.length) return;\n\n const schema = this.schemaParserFabric.parseSchema(\n {\n oneOf: errorSchemas,\n title: errorSchemas\n .map((schema) => schema.title)\n .filter(Boolean)\n .join(\" \"),\n description: errorSchemas\n .map((schema) => schema.description)\n .filter(Boolean)\n .join(\"\\n\"),\n },\n null,\n [routeInfo.operationId],\n );\n const component = this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\"components\", \"schemas\", typeName]),\n { ...schema },\n );\n responseBodyInfo.error.schemas = [component];\n responseBodyInfo.error.type = this.typeNameFormatter.format(\n component.typeName,\n );\n }\n };\n\n getRouteName = (rawRouteInfo) => {\n const { moduleName } = rawRouteInfo;\n const { routeNameDuplicatesMap, templatesToRender } = this.config;\n const routeNameTemplate = templatesToRender.routeName;\n\n const routeNameFromTemplate = this.templatesWorker.renderTemplate(\n routeNameTemplate,\n {\n routeInfo: rawRouteInfo,\n },\n );\n\n const routeName =\n this.config.hooks.onFormatRouteName(\n rawRouteInfo,\n routeNameFromTemplate,\n ) || routeNameFromTemplate;\n\n const duplicateIdentifier = `${moduleName}|${routeName}`;\n\n if (routeNameDuplicatesMap.has(duplicateIdentifier)) {\n routeNameDuplicatesMap.set(\n duplicateIdentifier,\n routeNameDuplicatesMap.get(duplicateIdentifier) + 1,\n );\n\n consola.warn(\n `Module \"${moduleName}\" already has method \"${routeName}()\".`,\n `This method has been renamed to \"${\n routeName + routeNameDuplicatesMap.get(duplicateIdentifier)\n }()\" to solve conflict names.`,\n );\n } else {\n routeNameDuplicatesMap.set(duplicateIdentifier, 1);\n }\n\n const duplicates = routeNameDuplicatesMap.get(duplicateIdentifier);\n\n const routeNameInfo = {\n usage: routeName + (duplicates > 1 ? duplicates : \"\"),\n original: routeName,\n duplicate: duplicates > 1,\n };\n\n return (\n this.config.hooks.onCreateRouteName(routeNameInfo, rawRouteInfo) ||\n routeNameInfo\n );\n };\n\n parseRouteInfo = (\n rawRouteName,\n routeInfo,\n method,\n usageSchema,\n parsedSchemas,\n ) => {\n const { security: globalSecurity } = usageSchema;\n const { moduleNameIndex, moduleNameFirstTag, extractRequestParams } =\n this.config;\n const {\n operationId,\n requestBody,\n security,\n parameters,\n summary,\n description,\n tags,\n responses,\n requestBodyName,\n produces,\n consumes,\n ...otherInfo\n } = routeInfo;\n const {\n route,\n pathParams: pathParamsFromRouteName,\n queryParams: queryParamsFromRouteName,\n } = this.parseRouteName(rawRouteName);\n\n const routeId = generateId();\n const firstTag = tags && tags.length > 0 ? tags[0] : null;\n const moduleName =\n moduleNameFirstTag && firstTag\n ? lodash.camelCase(firstTag)\n : lodash.camelCase(lodash.compact(route.split(\"/\"))[moduleNameIndex]);\n let hasSecurity = !!globalSecurity?.length;\n if (security) {\n hasSecurity = security.length > 0;\n }\n\n const routeParams = this.getRouteParams(\n routeInfo,\n pathParamsFromRouteName,\n queryParamsFromRouteName,\n );\n\n const pathArgs = routeParams.path.map((pathArgSchema) => ({\n name: pathArgSchema.name,\n optional: !pathArgSchema.required,\n // mark it as any for now, because \"getInlineParseContent\" breaks type names of extracted enums\n type: this.config.Ts.Keyword.Any,\n description: pathArgSchema.description,\n }));\n const pathArgsNames = pathArgs.map((arg) => arg.name);\n\n const responseBodyInfo = this.getResponseBodyInfo(routeInfo, parsedSchemas);\n\n const rawRouteInfo = {\n ...otherInfo,\n pathArgs,\n operationId,\n method,\n route: rawRouteName,\n moduleName,\n responsesTypes: responseBodyInfo.responses,\n description,\n tags,\n summary,\n responses,\n produces,\n requestBody,\n consumes,\n security,\n };\n\n const queryObjectSchema = this.convertRouteParamsIntoObject(\n routeParams.query,\n );\n const pathObjectSchema = this.convertRouteParamsIntoObject(\n routeParams.path,\n );\n const headersObjectSchema = this.convertRouteParamsIntoObject(\n routeParams.header,\n );\n\n const routeName = this.getRouteName(rawRouteInfo);\n\n const requestBodyInfo = this.getRequestBodyInfo(\n routeInfo,\n routeParams,\n parsedSchemas,\n routeName,\n );\n\n const requestParamsSchema = this.createRequestParamsSchema({\n queryParams: routeParams.query,\n pathArgsSchemas: routeParams.path,\n queryObjectSchema,\n extractRequestParams,\n routeName,\n });\n\n if (this.config.extractResponseBody) {\n this.extractResponseBodyIfItNeeded(\n routeInfo,\n responseBodyInfo,\n routeName,\n );\n }\n if (this.config.extractResponseError) {\n this.extractResponseErrorIfItNeeded(\n routeInfo,\n responseBodyInfo,\n routeName,\n );\n }\n\n const typeName = this.schemaUtils.resolveTypeName(routeName.usage, {\n suffixes: this.config.extractingOptions.requestParamsSuffix,\n resolver: this.config.extractingOptions.requestParamsNameResolver,\n shouldReserve: false,\n });\n\n const queryType = routeParams.query.length\n ? this.schemaParserFabric.getInlineParseContent(queryObjectSchema, null, [\n typeName,\n ])\n : null;\n const pathType = routeParams.path.length\n ? this.schemaParserFabric.getInlineParseContent(pathObjectSchema, null, [\n typeName,\n ])\n : null;\n const headersType = routeParams.header.length\n ? this.schemaParserFabric.getInlineParseContent(\n headersObjectSchema,\n null,\n [typeName],\n )\n : null;\n\n const nameResolver = new SpecificArgNameResolver(\n this.config,\n pathArgsNames,\n );\n\n const specificArgs = {\n query: queryType\n ? {\n name: nameResolver.resolve(RESERVED_QUERY_ARG_NAMES),\n optional: this.schemaParserFabric.parseSchema(\n queryObjectSchema,\n null,\n [routeName.usage],\n ).allFieldsAreOptional,\n type: queryType,\n }\n : void 0,\n body: requestBodyInfo.type\n ? {\n name: nameResolver.resolve([\n requestBodyInfo.paramName,\n ...RESERVED_BODY_ARG_NAMES,\n ]),\n optional: !requestBodyInfo.required,\n type: requestBodyInfo.type,\n }\n : void 0,\n pathParams: pathType\n ? {\n name: nameResolver.resolve(RESERVED_PATH_ARG_NAMES),\n optional: this.schemaParserFabric.parseSchema(\n pathObjectSchema,\n null,\n [routeName.usage],\n ).allFieldsAreOptional,\n type: pathType,\n }\n : void 0,\n headers: headersType\n ? {\n name: nameResolver.resolve(RESERVED_HEADER_ARG_NAMES),\n optional: this.schemaParserFabric.parseSchema(\n headersObjectSchema,\n null,\n [routeName.usage],\n ).allFieldsAreOptional,\n type: headersType,\n }\n : void 0,\n };\n\n pathArgs.forEach((pathArg, i) => {\n pathArg.type = this.schemaParserFabric.getInlineParseContent(\n routeParams.path[i].schema,\n null,\n [typeName],\n );\n });\n\n return {\n id: routeId,\n namespace: moduleName.replace(/^(\\d)/, \"v$1\"),\n routeName,\n routeParams,\n requestBodyInfo,\n responseBodyInfo,\n specificArgs,\n queryObjectSchema,\n pathObjectSchema,\n headersObjectSchema,\n responseBodySchema: responseBodyInfo.success.schema,\n requestBodySchema: requestBodyInfo.schema,\n specificArgNameResolver: nameResolver,\n request: {\n contentTypes: requestBodyInfo.contentTypes,\n parameters: pathArgs,\n path: route,\n formData: requestBodyInfo.contentKind === CONTENT_KIND.FORM_DATA,\n isQueryBody: requestBodyInfo.contentKind === CONTENT_KIND.URL_ENCODED,\n security: hasSecurity,\n method: method,\n requestParams: requestParamsSchema,\n\n payload: specificArgs.body,\n query: specificArgs.query,\n pathParams: specificArgs.pathParams,\n headers: specificArgs.headers,\n },\n response: {\n contentTypes: responseBodyInfo.contentTypes,\n type: responseBodyInfo.success.type,\n errorType: responseBodyInfo.error.type,\n fullTypes: responseBodyInfo.full.types,\n },\n raw: rawRouteInfo,\n };\n };\n\n attachSchema = ({ usageSchema, parsedSchemas }) => {\n this.config.routeNameDuplicatesMap.clear();\n\n const pathsEntries = lodash.entries(usageSchema.paths);\n\n for (const [rawRouteName, routeInfoByMethodsMap] of pathsEntries) {\n const routeInfosMap = this.createRequestsMap(routeInfoByMethodsMap);\n\n for (const [method, routeInfo] of Object.entries(routeInfosMap)) {\n const parsedRouteInfo = this.parseRouteInfo(\n rawRouteName,\n routeInfo,\n method,\n usageSchema,\n parsedSchemas,\n );\n const processedRouteInfo =\n this.config.hooks.onCreateRoute(parsedRouteInfo);\n if (processedRouteInfo !== false) {\n const route = processedRouteInfo || parsedRouteInfo;\n\n if (!this.hasSecurityRoutes && route.security) {\n this.hasSecurityRoutes = route.security;\n }\n if (!this.hasQueryRoutes && route.hasQuery) {\n this.hasQueryRoutes = route.hasQuery;\n }\n if (!this.hasFormDataRoutes && route.hasFormDataParams) {\n this.hasFormDataRoutes = route.hasFormDataParams;\n }\n\n this.routes.push(route);\n }\n }\n }\n };\n\n getGroupedRoutes = () => {\n const groupedRoutes = this.routes.reduce(\n (modules, route) => {\n if (route.namespace) {\n if (!modules[route.namespace]) {\n modules[route.namespace] = [];\n }\n\n modules[route.namespace].push(route);\n } else {\n modules.$outOfModule.push(route);\n }\n\n return modules;\n },\n {\n $outOfModule: [],\n },\n );\n\n const routeGroups = lodash.reduce(\n groupedRoutes,\n (acc, routesGroup, moduleName) => {\n if (moduleName === \"$outOfModule\") {\n acc.outOfModule = routesGroup;\n } else {\n if (!acc.combined) acc.combined = [];\n\n acc.combined.push({\n moduleName,\n routes: routesGroup.map((route) => {\n const { original: originalName, usage: usageName } =\n route.routeName;\n\n // TODO: https://github.com/acacode/swagger-typescript-api/issues/152\n // TODO: refactor\n if (\n routesGroup.length > 1 &&\n usageName !== originalName &&\n !routesGroup.some(\n ({ routeName, id }) =>\n id !== route.id && originalName === routeName.original,\n )\n ) {\n return {\n ...route,\n routeName: {\n ...route.routeName,\n usage: originalName,\n },\n };\n }\n\n return route;\n }),\n });\n }\n return acc;\n },\n {},\n );\n\n if (this.config.sortRoutes) {\n if (routeGroups.outOfModule) {\n routeGroups.outOfModule = this.sortRoutes(routeGroups.outOfModule);\n }\n if (routeGroups.combined) {\n lodash.each(routeGroups.combined, (routeGroup) => {\n routeGroup.routes = this.sortRoutes(routeGroup.routes);\n });\n }\n }\n\n return routeGroups;\n };\n\n sortRoutes = (routes) => {\n return lodash\n .slice(routes)\n .sort((routeA, routeB) =>\n routeA.routeName.usage.localeCompare(routeB.routeName.usage),\n );\n };\n}\n\nexport { SchemaRoutes };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\n// TODO: WIP\n// this class will be needed to walk by schema everywhere\nclass SchemaWalker {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SwaggerSchemaResolver} */\n swaggerSchemaResolver;\n /** @type {Map<string, Record<string, any>>} */\n schemas = new Map();\n /** @type {Map<string, Record<string, any>>} */\n caches = new Map();\n\n constructor({ config }) {\n this.config = config;\n }\n\n /**\n * @param name {string}\n * @param schema {Record<string, any>}\n */\n addSchema = (name, schema) => {\n this.schemas.set(name, structuredClone(schema));\n };\n\n /**\n * @param ref {string}\n * @returns {any}\n */\n findByRef = (ref) => {\n consola.debug(\"try to resolve ref by path\", ref);\n\n if (this.caches.has(ref)) {\n return this.caches.get(ref);\n }\n\n const schemas = Array.from(this.schemas.values());\n if (this._isLocalRef(ref)) {\n for (const schema of schemas) {\n const refData = this._getRefDataFromSchema(schema, ref);\n if (refData) {\n return refData;\n }\n }\n } else if (this._isRemoteRef(ref)) {\n consola.debug(\"remote refs not supported\", ref);\n return null;\n } else {\n const [address, path] = path.split(\"#\");\n let swaggerSchemaObject;\n\n if (this.schemas.has(address)) {\n swaggerSchemaObject = this.schemas.get(address);\n } else {\n const pathToSchema = path.resolve(process.cwd(), address);\n const swaggerSchemaFile =\n this.swaggerSchemaResolver.getSwaggerSchemaByPath(pathToSchema);\n swaggerSchemaObject =\n this.swaggerSchemaResolver.processSwaggerSchemaFile(\n swaggerSchemaFile,\n );\n this.schemas.set(address, swaggerSchemaObject);\n }\n\n return this._getRefDataFromSchema(swaggerSchemaObject, path);\n }\n };\n\n _isLocalRef = (ref) => {\n return ref.startsWith(\"#\");\n };\n\n _isRemoteRef = (ref) => {\n return ref.startsWith(\"http://\") || ref.startsWith(\"https://\");\n };\n\n _getRefDataFromSchema = (schema, ref) => {\n const path = ref.replace(\"#\", \"\").split(\"/\");\n const refData = lodash.get(schema, path);\n if (refData) {\n this.caches.set(ref, refData);\n }\n return refData;\n };\n}\n\nexport { SchemaWalker };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\nclass Request {\n /**\n * @type {CodeGenConfig}\n */\n config;\n\n constructor(config) {\n this.config = config;\n }\n\n /**\n * @param url {string}\n * @param disableStrictSSL\n * @param authToken\n * @param options {Partial<RequestInit>}\n * @return {Promise<string>}\n */\n async download({ url, disableStrictSSL, authToken, ...options }) {\n /**\n * @type {Partial<RequestInit>}\n */\n const requestOptions = {};\n\n if (disableStrictSSL && !url.startsWith(\"http://\")) {\n const undiciGlobalDispatcher =\n global[Symbol.for(\"undici.globalDispatcher.1\")];\n if (!undiciGlobalDispatcher) {\n throw new Error(\"Could not find the global Undici dispatcher\");\n }\n const newDispatcher = new undiciGlobalDispatcher.constructor({\n connect: {\n rejectUnauthorized: false,\n },\n });\n global[unidiciGlobalDispatcherSymbol] = newDispatcher;\n }\n if (authToken) {\n requestOptions.headers = {\n Authorization: authToken,\n };\n }\n\n lodash.merge(requestOptions, options, this.config.requestOptions);\n\n try {\n const response = await fetch(url, requestOptions);\n return await response.text();\n } catch (error) {\n const message = `error while fetching data from URL \"${url}\"`;\n consola.error(message, \"response\" in error ? error.response : error);\n return message;\n }\n }\n}\n\nexport { Request };\n","import { consola } from \"consola\";\nimport * as yaml from \"js-yaml\";\nimport lodash from \"lodash\";\nimport * as swagger2openapi from \"swagger2openapi\";\nimport { Request } from \"./util/request.js\";\n\nclass SwaggerSchemaResolver {\n /**\n * @type {CodeGenConfig}\n */\n config;\n /**\n * @type {FileSystem}\n */\n fileSystem;\n /**\n * @type {Request}\n */\n request;\n\n constructor({ config, fileSystem }) {\n this.config = config;\n this.fileSystem = fileSystem;\n this.request = new Request(config);\n }\n\n /**\n *\n * @returns {Promise<{usageSchema: Record<string, *>, originalSchema: Record<string, *>}>}\n */\n async create() {\n const {\n spec,\n patch,\n input,\n url,\n disableStrictSSL,\n disableProxy,\n authorizationToken,\n } = this.config;\n\n if (this.config.spec) {\n return await this.convertSwaggerObject(spec, { patch });\n }\n\n const swaggerSchemaFile = await this.fetchSwaggerSchemaFile(\n input,\n url,\n disableStrictSSL,\n disableProxy,\n authorizationToken,\n );\n const swaggerSchemaObject =\n this.processSwaggerSchemaFile(swaggerSchemaFile);\n return await this.convertSwaggerObject(swaggerSchemaObject, { patch });\n }\n\n /**\n *\n * @param swaggerSchema {Record<string, any>}\n * @param converterOptions {{ patch?: boolean }}\n * @returns {Promise<{ usageSchema: Record<string, any>, originalSchema: Record<string, any>}>}\n */\n convertSwaggerObject(swaggerSchema, converterOptions) {\n return new Promise((resolve) => {\n const result = structuredClone(swaggerSchema);\n result.info = lodash.merge(\n {\n title: \"No title\",\n version: \"\",\n },\n result.info,\n );\n\n if (!result.openapi) {\n result.paths = lodash.merge({}, result.paths);\n\n swagger2openapi.convertObj(\n result,\n {\n ...converterOptions,\n warnOnly: true,\n refSiblings: \"preserve\",\n rbname: \"requestBodyName\",\n },\n (err, options) => {\n const parsedSwaggerSchema = lodash.get(\n err,\n \"options.openapi\",\n lodash.get(options, \"openapi\"),\n );\n if (!parsedSwaggerSchema && err) {\n throw new Error(err);\n }\n this.config.update({ convertedFromSwagger2: true });\n resolve({\n usageSchema: parsedSwaggerSchema,\n originalSchema: result,\n });\n },\n );\n } else {\n resolve({\n usageSchema: result,\n originalSchema: structuredClone(result),\n });\n }\n });\n }\n\n getSwaggerSchemaByPath = (pathToSwagger) => {\n consola.info(`try to get swagger by path \"${pathToSwagger}\"`);\n return this.fileSystem.getFileContent(pathToSwagger);\n };\n\n async fetchSwaggerSchemaFile(\n pathToSwagger,\n urlToSwagger,\n disableStrictSSL,\n disableProxy,\n authToken,\n ) {\n if (this.fileSystem.pathIsExist(pathToSwagger)) {\n return this.getSwaggerSchemaByPath(pathToSwagger);\n } else {\n consola.info(`try to get swagger by URL \"${urlToSwagger}\"`);\n return await this.request.download({\n url: urlToSwagger,\n disableStrictSSL,\n authToken,\n disableProxy,\n });\n }\n }\n\n processSwaggerSchemaFile(file) {\n if (typeof file !== \"string\") return file;\n\n try {\n return JSON.parse(file);\n } catch (e) {\n return yaml.load(file);\n }\n }\n\n fixSwaggerSchema({ usageSchema, originalSchema }) {\n const usagePaths = lodash.get(usageSchema, \"paths\");\n const originalPaths = lodash.get(originalSchema, \"paths\");\n\n // walk by routes\n lodash.each(usagePaths, (usagePathObject, route) => {\n const originalPathObject = lodash.get(originalPaths, route);\n\n // walk by methods\n lodash.each(usagePathObject, (usageRouteInfo, methodName) => {\n const originalRouteInfo = lodash.get(originalPathObject, methodName);\n const usageRouteParams = lodash.get(usageRouteInfo, \"parameters\", []);\n const originalRouteParams = lodash.get(\n originalRouteInfo,\n \"parameters\",\n [],\n );\n\n if (typeof usageRouteInfo === \"object\") {\n usageRouteInfo.consumes = lodash.uniq(\n lodash.compact([\n ...(usageRouteInfo.consumes || []),\n ...(originalRouteInfo.consumes || []),\n ]),\n );\n usageRouteInfo.produces = lodash.uniq(\n lodash.compact([\n ...(usageRouteInfo.produces || []),\n ...(originalRouteInfo.produces || []),\n ]),\n );\n }\n\n lodash.each(originalRouteParams, (originalRouteParam) => {\n const existUsageParam = usageRouteParams.find(\n (param) =>\n originalRouteParam.in === param.in &&\n originalRouteParam.name === param.name,\n );\n if (!existUsageParam) {\n usageRouteParams.push(originalRouteParam);\n }\n });\n });\n });\n }\n}\n\nexport { SwaggerSchemaResolver };\n","import * as path from \"node:path\";\nimport * as url from \"node:url\";\nimport { consola } from \"consola\";\nimport * as Eta from \"eta\";\nimport lodash from \"lodash\";\n\nclass TemplatesWorker {\n /**\n * @type {CodeGenConfig}\n */\n config;\n /**\n * @type {FileSystem}\n */\n fileSystem;\n\n getRenderTemplateData;\n\n constructor({ config, fileSystem, getRenderTemplateData }) {\n this.config = config;\n this.fileSystem = fileSystem;\n this.getRenderTemplateData = getRenderTemplateData;\n }\n\n /**\n *\n * @param config {CodeGenConfig}\n * @returns {CodeGenConfig.templatePaths}\n */\n getTemplatePaths = (config) => {\n const __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n const baseTemplatesPath = path.resolve(__dirname, \"../templates/base\");\n const defaultTemplatesPath = path.resolve(\n __dirname,\n \"../templates/default\",\n );\n const modularTemplatesPath = path.resolve(\n __dirname,\n \"../templates/modular\",\n );\n const originalTemplatesPath = config.modular\n ? modularTemplatesPath\n : defaultTemplatesPath;\n const customTemplatesPath =\n (config.templates && path.resolve(process.cwd(), config.templates)) ||\n null;\n\n return {\n /** `templates/base` */\n base: baseTemplatesPath,\n /** `templates/default` */\n default: defaultTemplatesPath,\n /** `templates/modular` */\n modular: modularTemplatesPath,\n /** usage path if `--templates` option is not set */\n original: originalTemplatesPath,\n /** custom path to templates (`--templates`) */\n custom: customTemplatesPath,\n };\n };\n\n cropExtension = (path) =>\n this.config.templateExtensions.reduce(\n (path, ext) => (path.endsWith(ext) ? path.replace(ext, \"\") : path),\n path,\n );\n\n getTemplateFullPath = (path_, fileName) => {\n const raw = path.resolve(path_, \"./\", this.cropExtension(fileName));\n const pathVariants = this.config.templateExtensions.map(\n (extension) => `${raw}${extension}`,\n );\n\n return pathVariants.find(\n (variant) => !!this.fileSystem.pathIsExist(variant),\n );\n };\n\n requireFnFromTemplate = async (packageOrPath) => {\n const isPath =\n packageOrPath.startsWith(\"./\") || packageOrPath.startsWith(\"../\");\n\n if (isPath) {\n return await import(\n path.resolve(\n this.config.templatePaths.custom ||\n this.config.templatePaths.original,\n packageOrPath,\n )\n );\n }\n\n return await import(packageOrPath);\n };\n\n getTemplate = ({ fileName, name, path }) => {\n const { templatePaths } = this.config;\n\n if (path) {\n return this.fileSystem.getFileContent(path);\n }\n\n if (!fileName) return \"\";\n\n const customFullPath =\n templatePaths.custom &&\n this.getTemplateFullPath(templatePaths.custom, fileName);\n let fileContent =\n customFullPath && this.fileSystem.getFileContent(customFullPath);\n\n if (fileContent) {\n consola.info(\n `\"${name.toLowerCase()}\" template found in \"${templatePaths.custom}\"`,\n );\n return fileContent;\n }\n\n const baseFullPath = this.getTemplateFullPath(templatePaths.base, fileName);\n\n if (baseFullPath) {\n fileContent = this.fileSystem.getFileContent(baseFullPath);\n } else {\n if (templatePaths.custom) {\n consola.warn(\n \"Code generator will use the default template:\",\n `\"${name.toLowerCase()}\"`,\n \"template not found in\",\n `\"${templatePaths.custom}\"`,\n );\n } else {\n consola.info(\n `Code generator will use the default template for \"${name.toLowerCase()}\"`,\n );\n }\n }\n\n const originalFullPath = this.getTemplateFullPath(\n templatePaths.original,\n fileName,\n );\n\n if (originalFullPath) {\n fileContent = this.fileSystem.getFileContent(originalFullPath);\n }\n\n return fileContent;\n };\n\n getTemplates = ({ templatePaths }) => {\n if (templatePaths.custom) {\n consola.info(\n `try to read templates from directory \"${templatePaths.custom}\"`,\n );\n }\n\n return lodash.reduce(\n this.config.templateInfos,\n (acc, { fileName, name }) => ({\n ...acc,\n [name]: this.getTemplate({ fileName, name }),\n }),\n {},\n );\n };\n\n findTemplateWithExt = (path) => {\n const raw = this.cropExtension(path);\n const pathVariants = this.config.templateExtensions.map(\n (extension) => `${raw}${extension}`,\n );\n return pathVariants.find((variant) => this.fileSystem.pathIsExist(variant));\n };\n\n getTemplateContent = (path_) => {\n const foundTemplatePathKey = lodash\n .keys(this.config.templatePaths)\n .find((key) => path_.startsWith(`@${key}`));\n\n const rawPath = path.resolve(\n path_.replace(\n `@${foundTemplatePathKey}`,\n this.config.templatePaths[foundTemplatePathKey],\n ),\n );\n const fixedPath = this.findTemplateWithExt(rawPath);\n\n if (fixedPath) {\n return this.fileSystem.getFileContent(fixedPath);\n }\n\n const customPath =\n this.config.templatePaths.custom &&\n this.findTemplateWithExt(\n path.resolve(this.config.templatePaths.custom, path_),\n );\n\n if (customPath) {\n return this.fileSystem.getFileContent(customPath);\n }\n\n const originalPath = this.findTemplateWithExt(\n path.resolve(this.config.templatePaths.original, path_),\n );\n\n if (originalPath) {\n return this.fileSystem.getFileContent(originalPath);\n }\n\n return \"\";\n };\n\n /**\n * @param template\n * @param configuration\n * @param options\n * @returns {Promise<string|string|void>}\n */\n renderTemplate = (template, configuration, options) => {\n if (!template) return \"\";\n\n return Eta.render(\n template,\n {\n ...this.getRenderTemplateData(),\n ...configuration,\n },\n {\n async: false,\n ...(options || {}),\n includeFile: (path, configuration, options) => {\n return this.renderTemplate(\n this.getTemplateContent(path),\n configuration,\n options,\n );\n },\n },\n );\n };\n}\n\nexport { TemplatesWorker };\n","/**\n * @typedef {{ fileName: string, fileExtension: string, fileContent: string }} TranslatorIO\n */\n\nclass Translator {\n /** @type {CodeGenConfig} */\n config;\n /** @type {CodeFormatter} */\n codeFormatter;\n\n /**\n * @param codeGenProcess\n */\n constructor(codeGenProcess) {\n this.config = codeGenProcess.config;\n this.codeFormatter = codeGenProcess.codeFormatter;\n }\n\n /**\n *\n * @param input {TranslatorIO}\n * @return {Promise<TranslatorIO[]>}\n */\n translate(input) {\n throw new Error(\"not implemented\");\n }\n}\n\nexport { Translator };\n","import * as typescript from \"typescript\";\nimport { Translator } from \"./translator.js\";\n\nclass JavascriptTranslator extends Translator {\n /**\n * @param {TranslatorIO} input\n * @returns {Record<string, string>}\n */\n compileTSCode = (input) => {\n const fileNameFull = `${input.fileName}${input.fileExtension}`;\n const output = {};\n const host = typescript.createCompilerHost(\n this.config.compilerTsConfig,\n true,\n );\n const fileNames = [fileNameFull];\n const originalSourceFileGet = host.getSourceFile.bind(host);\n host.getSourceFile = (\n sourceFileName,\n languageVersion,\n onError,\n shouldCreateNewSourceFile,\n ) => {\n if (sourceFileName !== fileNameFull)\n return originalSourceFileGet(\n sourceFileName,\n languageVersion,\n onError,\n shouldCreateNewSourceFile,\n );\n\n return typescript.createSourceFile(\n sourceFileName,\n input.fileContent,\n languageVersion,\n true,\n typescript.ScriptKind.TS,\n );\n };\n\n host.writeFile = (fileName, contents) => {\n output[fileName] = contents;\n };\n\n typescript\n .createProgram(fileNames, this.config.compilerTsConfig, host)\n .emit();\n\n return output;\n };\n\n translate = async (input) => {\n const compiled = this.compileTSCode(input);\n\n const jsFileName = `${input.fileName}${typescript.Extension.Js}`;\n const dtsFileName = `${input.fileName}${typescript.Extension.Dts}`;\n const sourceContent = compiled[jsFileName];\n const tsImportRows = input.fileContent\n .split(\"\\n\")\n .filter((line) => line.startsWith(\"import \"));\n const declarationContent = compiled[dtsFileName]\n .split(\"\\n\")\n .map((line) => {\n if (line.startsWith(\"import \")) {\n return tsImportRows.shift();\n }\n return line;\n })\n .join(\"\\n\");\n\n return [\n {\n fileName: input.fileName,\n fileExtension: typescript.Extension.Js,\n fileContent: await this.codeFormatter.formatCode(sourceContent),\n },\n {\n fileName: input.fileName,\n fileExtension: typescript.Extension.Dts,\n fileContent: await this.codeFormatter.formatCode(declarationContent),\n },\n ];\n };\n}\n\nexport { JavascriptTranslator };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\n\n/**\n * @typedef {\"enum-key\" | \"type-name\"} FormattingSchemaType\n */\n\nclass TypeNameFormatter {\n /** @type {Map<string, string>} */\n formattedModelNamesMap = new Map();\n /** @type {CodeGenConfig} */\n config;\n\n constructor({ config }) {\n this.config = config;\n }\n\n /**\n * @param name\n * @param options {{ type?: FormattingSchemaType }}\n * @return {string}\n */\n format = (name, options = {}) => {\n const schemaType = options.type ?? \"type-name\";\n\n const typePrefix =\n schemaType === \"enum-key\"\n ? this.config.enumKeyPrefix\n : this.config.typePrefix;\n const typeSuffix =\n schemaType === \"enum-key\"\n ? this.config.enumKeySuffix\n : this.config.typeSuffix;\n\n const hashKey = `${typePrefix}_${name}_${typeSuffix}`;\n\n if (typeof name !== \"string\") {\n consola.warn(\"wrong name of the model name\", name);\n return name;\n }\n\n // constant names like LEFT_ARROW, RIGHT_FORWARD, ETC_KEY, _KEY_NUM_\n if (/^([A-Z_]{1,})$/g.test(name)) {\n return lodash.compact([typePrefix, name, typeSuffix]).join(\"_\");\n }\n\n if (this.formattedModelNamesMap.has(hashKey)) {\n return this.formattedModelNamesMap.get(hashKey);\n }\n\n const fixedModelName = this.fixModelName(name, { type: schemaType });\n\n const formattedName = lodash\n .startCase(`${typePrefix}_${fixedModelName}_${typeSuffix}`)\n .replace(/\\s/g, \"\");\n const formattedResultName =\n this.config.hooks.onFormatTypeName(formattedName, name, schemaType) ||\n formattedName;\n\n this.formattedModelNamesMap.set(hashKey, formattedResultName);\n\n return formattedResultName;\n };\n\n isValidName = (name) => /^([A-Za-z$_]{1,})$/g.test(name);\n\n /**\n * @param name\n * @param options {{ type?: FormattingSchemaType }}\n * @return {string}\n */\n fixModelName = (name, options) => {\n const { type } = options || {};\n\n if (!this.isValidName(name)) {\n if (!/^[a-zA-Z_$]/g.test(name)) {\n const fixPrefix =\n type === \"enum-key\"\n ? this.config.fixInvalidEnumKeyPrefix\n : this.config.fixInvalidTypeNamePrefix;\n name = `${fixPrefix} ${name}`;\n }\n\n // specific replaces for TSOA 3.x\n if (name.includes(\".\"))\n name = name\n .replace(/Exclude_keyof[A-Za-z]+/g, () => \"ExcludeKeys\")\n .replace(/%22~AND~%22/g, \"And\")\n .replace(/%22~OR~%22/g, \"Or\")\n .replace(/(\\.?%22)|\\./g, \"_\")\n .replace(/__+$/, \"\");\n\n if (name.includes(\"-\")) name = lodash.startCase(name).replace(/ /g, \"\");\n }\n\n return name;\n };\n}\n\nexport { TypeNameFormatter };\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as url from \"node:url\";\nimport { consola } from \"consola\";\nimport lodash from \"lodash\";\n\nconst FILE_PREFIX = `/* eslint-disable */\n/* tslint:disable */\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API ##\n * ## ##\n * ## AUTHOR: acacode ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\n\n`;\n\nclass FileSystem {\n getFileContent = (path) => {\n return fs.readFileSync(path, { encoding: \"utf8\" });\n };\n\n readDir = (path) => {\n return fs.readdirSync(path);\n };\n\n pathIsDir = (path) => {\n if (!path) return false;\n\n try {\n const stat = fs.statSync(path);\n return stat.isDirectory();\n } catch (e) {\n return false;\n }\n };\n\n cropExtension = (fileName) => {\n const fileNameParts = fileName.split(\".\");\n\n if (fileNameParts.length > 1) {\n fileNameParts.pop();\n }\n\n return fileNameParts.join(\".\");\n };\n\n removeDir = (path) => {\n try {\n if (typeof fs.rmSync === \"function\") {\n fs.rmSync(path, { recursive: true });\n } else {\n fs.rmdirSync(path, { recursive: true });\n }\n } catch (e) {\n consola.debug(\"failed to remove dir\", e);\n }\n };\n\n createDir = (path) => {\n try {\n fs.mkdirSync(path, { recursive: true });\n } catch (e) {\n consola.debug(\"failed to create dir\", e);\n }\n };\n\n cleanDir = (path) => {\n this.removeDir(path);\n this.createDir(path);\n };\n\n pathIsExist = (path) => {\n return !!path && fs.existsSync(path);\n };\n\n createFile = ({ path: path_, fileName, content, withPrefix }) => {\n const __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n const absolutePath = path.resolve(__dirname, path_, `./${fileName}`);\n const fileContent = `${withPrefix ? FILE_PREFIX : \"\"}${content}`;\n\n return fs.writeFileSync(absolutePath, fileContent, lodash.noop);\n };\n}\n\nexport { FileSystem };\n","import { consola } from \"consola\";\nimport lodash from \"lodash\";\nimport * as typescript from \"typescript\";\nimport { CodeFormatter } from \"./code-formatter.js\";\nimport { CodeGenConfig } from \"./configuration.js\";\nimport { SchemaComponentsMap } from \"./schema-components-map.js\";\nimport { SchemaParserFabric } from \"./schema-parser/schema-parser-fabric.js\";\nimport { SchemaRoutes } from \"./schema-routes/schema-routes.js\";\nimport { SchemaWalker } from \"./schema-walker.js\";\nimport { SwaggerSchemaResolver } from \"./swagger-schema-resolver.js\";\nimport { TemplatesWorker } from \"./templates-worker.js\";\nimport { JavascriptTranslator } from \"./translators/javascript.js\";\nimport { TypeNameFormatter } from \"./type-name-formatter.js\";\nimport { FileSystem } from \"./util/file-system.js\";\nimport { internalCase } from \"./util/internal-case.js\";\nimport { NameResolver } from \"./util/name-resolver.js\";\nimport { pascalCase } from \"./util/pascal-case.js\";\nimport { sortByProperty } from \"./util/sort-by-property.js\";\n\nconst PATCHABLE_INSTANCES = [\n \"schemaWalker\",\n \"swaggerSchemaResolver\",\n \"schemaComponentsMap\",\n \"typeNameFormatter\",\n \"templatesWorker\",\n \"codeFormatter\",\n \"schemaParserFabric\",\n \"schemaRoutes\",\n \"javascriptTranslator\",\n];\n\nclass CodeGenProcess {\n /** @type {CodeGenConfig} */\n config;\n /** @type {SwaggerSchemaResolver} */\n swaggerSchemaResolver;\n /** @type {SchemaComponentsMap} */\n schemaComponentsMap;\n /** @type {TypeNameFormatter} */\n typeNameFormatter;\n /** @type {SchemaParserFabric} */\n schemaParserFabric;\n /** @type {SchemaRoutes} */\n schemaRoutes;\n /** @type {FileSystem} */\n fileSystem;\n /** @type {CodeFormatter} */\n codeFormatter;\n /** type {TemplatesWorker} */\n templatesWorker;\n /** @type {SchemaWalker} */\n schemaWalker;\n /** @type {JavascriptTranslator} */\n javascriptTranslator;\n\n /**\n *\n * @param config {Partial<import(\"../index.d.ts\").GenerateApiConfiguration['config']>}\n */\n constructor(config) {\n this.config = new CodeGenConfig(config);\n this.fileSystem = new FileSystem(this);\n this.schemaWalker = new SchemaWalker(this);\n this.swaggerSchemaResolver = new SwaggerSchemaResolver(this);\n this.schemaComponentsMap = new SchemaComponentsMap(this);\n this.typeNameFormatter = new TypeNameFormatter(this);\n this.templatesWorker = new TemplatesWorker(this);\n this.codeFormatter = new CodeFormatter(this);\n this.schemaParserFabric = new SchemaParserFabric(this);\n this.schemaRoutes = new SchemaRoutes(this);\n this.javascriptTranslator = new JavascriptTranslator(this);\n }\n\n async start() {\n this.config.update({\n templatePaths: this.templatesWorker.getTemplatePaths(this.config),\n });\n this.config.update({\n templatesToRender: this.templatesWorker.getTemplates(this.config),\n });\n\n const swagger = await this.swaggerSchemaResolver.create();\n\n this.swaggerSchemaResolver.fixSwaggerSchema(swagger);\n\n this.config.update({\n swaggerSchema: swagger.usageSchema,\n originalSchema: swagger.originalSchema,\n });\n\n this.schemaWalker.addSchema(\"$usage\", swagger.usageSchema);\n this.schemaWalker.addSchema(\"$original\", swagger.originalSchema);\n\n consola.info(\"start generating your typescript api\");\n\n this.config.update(\n this.config.hooks.onInit(this.config, this) || this.config,\n );\n\n this.schemaComponentsMap.clear();\n\n lodash.each(swagger.usageSchema.components, (component, componentName) =>\n lodash.each(component, (rawTypeData, typeName) => {\n this.schemaComponentsMap.createComponent(\n this.schemaComponentsMap.createRef([\n \"components\",\n componentName,\n typeName,\n ]),\n rawTypeData,\n );\n }),\n );\n\n /**\n * @type {SchemaComponent[]}\n */\n const componentsToParse = this.schemaComponentsMap.filter(\n lodash.compact([\"schemas\", this.config.extractResponses && \"responses\"]),\n );\n\n const parsedSchemas = componentsToParse.map((schemaComponent) => {\n const parsed = this.schemaParserFabric.parseSchema(\n schemaComponent.rawTypeData,\n schemaComponent.typeName,\n );\n schemaComponent.typeData = parsed;\n return parsed;\n });\n\n this.schemaRoutes.attachSchema({\n usageSchema: swagger.usageSchema,\n parsedSchemas,\n });\n\n const rawConfiguration = {\n apiConfig: this.createApiConfig(swagger.usageSchema),\n config: this.config,\n modelTypes: this.collectModelTypes(),\n hasSecurityRoutes: this.schemaRoutes.hasSecurityRoutes,\n hasQueryRoutes: this.schemaRoutes.hasQueryRoutes,\n hasFormDataRoutes: this.schemaRoutes.hasFormDataRoutes,\n generateResponses: this.config.generateResponses,\n routes: this.schemaRoutes.getGroupedRoutes(),\n extraTemplates: this.config.extraTemplates,\n fileName: this.config.fileName,\n translateToJavaScript: this.config.toJS,\n customTranslator: this.config.customTranslator\n ? new this.config.customTranslator(this)\n : null,\n utils: this.getRenderTemplateData().utils,\n };\n\n const configuration =\n this.config.hooks.onPrepareConfig(rawConfiguration) || rawConfiguration;\n\n if (this.fileSystem.pathIsExist(this.config.output)) {\n if (this.config.cleanOutput) {\n consola.debug(\"cleaning dir\", this.config.output);\n this.fileSystem.cleanDir(this.config.output);\n }\n } else {\n consola.debug(\n `path ${this.config.output} is not exist. creating dir by this path`,\n );\n this.fileSystem.createDir(this.config.output);\n }\n\n const files = await this.generateOutputFiles({\n configuration: configuration,\n });\n\n const isDirPath = this.fileSystem.pathIsDir(this.config.output);\n\n if (isDirPath) {\n for (const file of files) {\n this.fileSystem.createFile({\n path: this.config.output,\n fileName: `${file.fileName}${file.fileExtension}`,\n content: file.fileContent,\n withPrefix: true,\n });\n\n consola.success(\n \"api file\",\n `\"${file.fileName}${file.fileExtension}\"`,\n `created in ${this.config.output}`,\n );\n }\n }\n\n return {\n files,\n configuration,\n getTemplate: this.templatesWorker.getTemplate,\n renderTemplate: this.templatesWorker.renderTemplate,\n createFile: this.fileSystem.createFile,\n formatTSContent: this.codeFormatter.formatCode,\n };\n }\n\n getRenderTemplateData = () => {\n return {\n utils: {\n Ts: this.config.Ts,\n formatDescription:\n this.schemaParserFabric.schemaFormatters.formatDescription,\n internalCase: internalCase,\n classNameCase: pascalCase,\n pascalCase: pascalCase,\n getInlineParseContent: this.schemaParserFabric.getInlineParseContent,\n getParseContent: this.schemaParserFabric.getParseContent,\n getComponentByRef: this.schemaComponentsMap.get,\n parseSchema: this.schemaParserFabric.parseSchema,\n checkAndAddNull: this.schemaParserFabric.schemaUtils.safeAddNullToType,\n safeAddNullToType:\n this.schemaParserFabric.schemaUtils.safeAddNullToType,\n isNeedToAddNull:\n this.schemaParserFabric.schemaUtils.isNullMissingInType,\n inlineExtraFormatters: this.schemaParserFabric.schemaFormatters.inline,\n formatters: this.schemaParserFabric.schemaFormatters.base,\n formatModelName: this.typeNameFormatter.format,\n fmtToJSDocLine: function fmtToJSDocLine(line, { eol = true }) {\n return ` * ${line}${eol ? \"\\n\" : \"\"}`;\n },\n NameResolver: NameResolver,\n _: lodash,\n require: this.templatesWorker.requireFnFromTemplate,\n },\n config: this.config,\n };\n };\n\n collectModelTypes = () => {\n const components = this.schemaComponentsMap.getComponents();\n let modelTypes = [];\n\n const modelTypeComponents = lodash.compact([\n \"schemas\",\n this.config.extractResponses && \"responses\",\n ]);\n\n const getSchemaComponentsCount = () =>\n this.schemaComponentsMap.filter(...modelTypeComponents).length;\n\n let schemaComponentsCount = getSchemaComponentsCount();\n let processedCount = 0;\n\n while (processedCount < schemaComponentsCount) {\n modelTypes = [];\n processedCount = 0;\n for (const component of components) {\n if (modelTypeComponents.includes(component.componentName)) {\n const modelType = this.prepareModelType(component);\n if (modelType) {\n modelTypes.push(modelType);\n }\n processedCount++;\n }\n }\n schemaComponentsCount = getSchemaComponentsCount();\n }\n\n if (this.config.sortTypes) {\n return modelTypes.sort(sortByProperty(\"name\"));\n }\n\n return modelTypes;\n };\n\n prepareModelType = (typeInfo) => {\n if (typeInfo.$prepared) return typeInfo.$prepared;\n\n if (!typeInfo.typeData) {\n typeInfo.typeData = this.schemaParserFabric.parseSchema(\n typeInfo.rawTypeData,\n typeInfo.typeName,\n );\n }\n const rawTypeData = typeInfo.typeData;\n const typeData = this.schemaParserFabric.schemaFormatters.base[\n rawTypeData.type\n ]\n ? this.schemaParserFabric.schemaFormatters.base[rawTypeData.type](\n rawTypeData,\n )\n : rawTypeData;\n const {\n typeIdentifier,\n name: originalName,\n content,\n description,\n } = typeData;\n const name = this.typeNameFormatter.format(originalName);\n\n if (name === null) return null;\n\n const preparedModelType = {\n ...typeData,\n typeIdentifier,\n name,\n description,\n $content: rawTypeData.content,\n rawContent: rawTypeData.content,\n content: content,\n typeData,\n };\n\n typeInfo.$prepared = preparedModelType;\n\n return preparedModelType;\n };\n\n /**\n *\n * @param configuration\n * @returns {Promise<TranslatorIO[]>}\n */\n generateOutputFiles = async ({ configuration }) => {\n const { modular, templatesToRender } = this.config;\n\n const output = modular\n ? await this.createMultipleFileInfos(templatesToRender, configuration)\n : await this.createSingleFileInfo(templatesToRender, configuration);\n\n if (!lodash.isEmpty(configuration.extraTemplates)) {\n for (const extraTemplate of configuration.extraTemplates) {\n const content = this.templatesWorker.renderTemplate(\n this.fileSystem.getFileContent(extraTemplate.path),\n configuration,\n );\n output.push(\n ...(await this.createOutputFileInfo(\n configuration,\n extraTemplate.name,\n content,\n )),\n );\n }\n }\n\n return output.filter((fileInfo) => !!fileInfo && !!fileInfo.fileContent);\n };\n\n /**\n * @param templatesToRender\n * @param configuration\n * @returns {Promise<TranslatorIO[]>}\n */\n createMultipleFileInfos = async (templatesToRender, configuration) => {\n const { routes } = configuration;\n const { fileNames, generateRouteTypes, generateClient } =\n configuration.config;\n /**\n * @type {TranslatorIO[]}\n */\n const modularApiFileInfos = [];\n\n if (routes.$outOfModule) {\n if (generateRouteTypes) {\n const outOfModuleRouteContent = this.templatesWorker.renderTemplate(\n templatesToRender.routeTypes,\n {\n ...configuration,\n route: configuration.routes.$outOfModule,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n fileNames.outOfModuleApi,\n outOfModuleRouteContent,\n )),\n );\n }\n if (generateClient) {\n const outOfModuleApiContent = this.templatesWorker.renderTemplate(\n templatesToRender.api,\n {\n ...configuration,\n route: configuration.routes.$outOfModule,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n fileNames.outOfModuleApi,\n outOfModuleApiContent,\n )),\n );\n }\n }\n\n if (routes.combined) {\n for (const route of routes.combined) {\n if (generateRouteTypes) {\n const routeModuleContent = this.templatesWorker.renderTemplate(\n templatesToRender.routeTypes,\n {\n ...configuration,\n route,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n pascalCase(`${route.moduleName}_Route`),\n routeModuleContent,\n )),\n );\n }\n\n if (generateClient) {\n const apiModuleContent = this.templatesWorker.renderTemplate(\n templatesToRender.api,\n {\n ...configuration,\n route,\n },\n );\n\n modularApiFileInfos.push(\n ...(await this.createOutputFileInfo(\n configuration,\n pascalCase(route.moduleName),\n apiModuleContent,\n )),\n );\n }\n }\n }\n\n return [\n ...(await this.createOutputFileInfo(\n configuration,\n fileNames.dataContracts,\n this.templatesWorker.renderTemplate(\n templatesToRender.dataContracts,\n configuration,\n ),\n )),\n ...(generateClient\n ? await this.createOutputFileInfo(\n configuration,\n fileNames.httpClient,\n this.templatesWorker.renderTemplate(\n templatesToRender.httpClient,\n configuration,\n ),\n )\n : []),\n ...modularApiFileInfos,\n ];\n };\n\n /**\n *\n * @param templatesToRender\n * @param configuration\n * @returns {Promise<TranslatorIO[]>}\n */\n createSingleFileInfo = async (templatesToRender, configuration) => {\n const { generateRouteTypes, generateClient } = configuration.config;\n\n return await this.createOutputFileInfo(\n configuration,\n configuration.fileName,\n lodash\n .compact([\n this.templatesWorker.renderTemplate(\n templatesToRender.dataContracts,\n configuration,\n ),\n generateRouteTypes &&\n this.templatesWorker.renderTemplate(\n templatesToRender.routeTypes,\n configuration,\n ),\n generateClient &&\n this.templatesWorker.renderTemplate(\n templatesToRender.httpClient,\n configuration,\n ),\n generateClient &&\n this.templatesWorker.renderTemplate(\n templatesToRender.api,\n configuration,\n ),\n ])\n .join(\"\\n\"),\n );\n };\n\n /**\n *\n * @param configuration\n * @param fileNameFull\n * @param content\n * @returns {Promise<TranslatorIO[]>}\n */\n createOutputFileInfo = async (configuration, fileNameFull, content) => {\n const fileName = this.fileSystem.cropExtension(fileNameFull);\n const fileExtension = typescript.Extension.Ts;\n\n if (configuration.translateToJavaScript) {\n consola.debug(\"using js translator for\", fileName);\n return await this.javascriptTranslator.translate({\n fileName: fileName,\n fileExtension: fileExtension,\n fileContent: content,\n });\n }\n\n if (configuration.customTranslator) {\n consola.debug(\"using custom translator for\", fileName);\n return await configuration.customTranslator.translate({\n fileName: fileName,\n fileExtension: fileExtension,\n fileContent: content,\n });\n }\n\n consola.debug(\"generating output for\", `${fileName}${fileExtension}`);\n\n return [\n {\n fileName,\n fileExtension: fileExtension,\n fileContent: await this.codeFormatter.formatCode(content),\n },\n ];\n };\n\n createApiConfig = (swaggerSchema) => {\n const { info, servers, host, basePath, externalDocs, tags } = swaggerSchema;\n const server = servers?.[0] || { url: \"\" };\n const { title = \"No title\", version } = info || {};\n const { url: serverUrl } = server;\n\n return {\n info: info || {},\n servers: servers || [],\n basePath,\n host,\n externalDocs: lodash.merge(\n {\n url: \"\",\n description: \"\",\n },\n externalDocs,\n ),\n tags: lodash.compact(tags),\n baseUrl: serverUrl,\n title,\n version,\n };\n };\n\n injectClassInstance = (key, value) => {\n this[key] = value;\n for (const instanceKey of PATCHABLE_INSTANCES) {\n if (instanceKey !== key && key in this[instanceKey]) {\n this[instanceKey][key] = value;\n }\n }\n };\n}\n\nexport { CodeGenProcess };\n","import { HTTP_CLIENT, PROJECT_VERSION } from \"../../constants.js\";\nimport { objectAssign } from \"../../util/object-assign.js\";\n\n/**\n * @type {GenerateTemplatesParams}}\n */\nclass TemplatesGenConfig {\n cleanOutput = false;\n output = undefined;\n httpClientType = HTTP_CLIENT.FETCH;\n modular = false;\n silent = false;\n version = PROJECT_VERSION;\n rewrite = false;\n\n /**\n * @param config {GenerateTemplatesParams}\n */\n constructor(config) {\n this.update(config);\n }\n\n /**\n * @param update {Partial<GenerateTemplatesParams>}\n */\n update = (update) => {\n objectAssign(this, update);\n };\n}\n\nexport { TemplatesGenConfig };\n","import path from \"node:path\";\nimport url from \"node:url\";\nimport { consola } from \"consola\";\nimport { FileSystem } from \"../../util/file-system.js\";\nimport { TemplatesGenConfig } from \"./configuration.js\";\n\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\nclass TemplatesGenProcess {\n /**\n * @type {TemplatesGenConfig}\n */\n config;\n /**\n * @type {FileSystem}\n */\n fileSystem;\n\n rootDir = path.resolve(__dirname, \"../../../\");\n\n paths = {\n baseTemplates: \"templates/base\",\n httpClientTemplates: \"templates/base/http-clients\",\n moduleApiTemplates: \"templates/modular\",\n defaultApiTemplates: \"templates/default\",\n };\n\n importTemplatePrefixes = [\"@base\", \"@modular\", \"@default\"];\n\n constructor(config) {\n this.config = new TemplatesGenConfig(config);\n this.fileSystem = new FileSystem(this);\n }\n\n /**\n * @return {Promise<GenerateTemplatesOutput>}\n */\n async start() {\n consola.info('start generating source templates \".ejs\" for code generator');\n\n const templates = this.getTemplates();\n\n if (this.config.output) {\n consola.info(\"preparing output directory for source templates\");\n const outputPath = path.resolve(process.cwd(), this.config.output);\n\n if (this.fileSystem.pathIsExist(outputPath)) {\n if (this.config.cleanOutput) {\n this.fileSystem.cleanDir(outputPath);\n }\n } else {\n this.fileSystem.createDir(outputPath);\n }\n\n for (const template of templates) {\n const templateName = this.fileSystem.cropExtension(template.name);\n const templateEjsPath = path.resolve(outputPath, `${templateName}.ejs`);\n const templateEtaPath = path.resolve(outputPath, `${templateName}.eta`);\n const templateEjsPathExist =\n this.fileSystem.pathIsExist(templateEjsPath);\n const templateEtaPathExist =\n this.fileSystem.pathIsExist(templateEtaPath);\n\n const templateNotExist = !templateEjsPathExist && !templateEtaPathExist;\n\n if (templateNotExist) {\n this.fileSystem.createFile({\n path: outputPath,\n fileName: template.name,\n content: template.content,\n withPrefix: false,\n });\n } else if (this.config.rewrite) {\n if (templateEjsPathExist) {\n this.fileSystem.createFile({\n path: outputPath,\n fileName: `${templateName}.ejs`,\n content: template.content,\n withPrefix: false,\n });\n } else if (templateEtaPathExist) {\n this.fileSystem.createFile({\n path: outputPath,\n fileName: `${templateName}.eta`,\n content: template.content,\n withPrefix: false,\n });\n }\n }\n }\n\n consola.success(\n `source templates has been successfully created in \"${outputPath}\"`,\n );\n }\n\n return {\n files: templates,\n configuration: this.config,\n createFile: this.fileSystem.createFile,\n };\n }\n\n getTemplates = () => {\n const outputFiles = [];\n const baseTemplates = this.getTemplateNamesFromDir(\n this.paths.baseTemplates,\n );\n const httpClientTemplates = this.getTemplateNamesFromDir(\n this.paths.httpClientTemplates,\n );\n const apiTemplatesPath = this.config.modular\n ? this.paths.moduleApiTemplates\n : this.paths.defaultApiTemplates;\n const apiTemplates = this.getTemplateNamesFromDir(apiTemplatesPath);\n\n const usingHttpClientTemplate = httpClientTemplates.find((template) =>\n template.startsWith(`${this.config.httpClientType}-`),\n );\n\n let httpClientTemplateContent = \"\";\n\n if (usingHttpClientTemplate) {\n httpClientTemplateContent = this.fixTemplateContent(\n this.getTemplateContent(\n `${this.paths.httpClientTemplates}/${usingHttpClientTemplate}`,\n ),\n );\n }\n\n for (const fileName of baseTemplates) {\n const templateContent =\n (fileName === \"http-client.ejs\" && httpClientTemplateContent) ||\n this.fixTemplateContent(\n this.getTemplateContent(`${this.paths.baseTemplates}/${fileName}`),\n );\n\n outputFiles.push({\n name: fileName,\n content: templateContent,\n });\n }\n\n for (const fileName of apiTemplates) {\n outputFiles.push({\n name: fileName,\n content: this.fixTemplateContent(\n this.getTemplateContent(`${apiTemplatesPath}/${fileName}`),\n ),\n });\n }\n\n return outputFiles;\n };\n\n fixTemplateContent = (content) => {\n // includeFile(\"@base/\n const importsRegExp1 = new RegExp(\n `includeFile\\\\(\"(${this.importTemplatePrefixes\n .map((v) => `(${v})`)\n .join(\"|\")})/`,\n \"g\",\n );\n // includeFile(`@base/\n const importsRegExp2 = new RegExp(\n `includeFile\\\\(\\`(${this.importTemplatePrefixes\n .map((v) => `(${v})`)\n .join(\"|\")})/`,\n \"g\",\n );\n // includeFile('@base/\n const importsRegExp3 = new RegExp(\n `includeFile\\\\('(${this.importTemplatePrefixes\n .map((v) => `(${v})`)\n .join(\"|\")})/`,\n \"g\",\n );\n\n return content\n .replace(importsRegExp1, 'includeFile(\"./')\n .replace(importsRegExp2, \"includeFile(`./\")\n .replace(importsRegExp3, \"includeFile('./\");\n };\n\n getTemplateNamesFromDir = (dir) => {\n return this.fileSystem\n .readDir(path.resolve(this.rootDir, dir))\n .filter((file) => file.endsWith(\".ejs\"));\n };\n\n getTemplateContent = (pathToFile) => {\n return this.fileSystem.getFileContent(\n path.resolve(this.rootDir, pathToFile),\n );\n };\n}\n\nexport { TemplatesGenProcess };\n","#!/usr/bin/env node\n\nimport { TemplatesGenProcess } from \"./templates-gen-process.js\";\n\nasync function generateTemplates(config) {\n const codeGenProcess = new TemplatesGenProcess(config);\n return await codeGenProcess.start();\n}\n\nexport { generateTemplates };\n"]}