@hey-api/openapi-ts 0.67.5 → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/chunk-PKFRS7FD.js +13 -0
- package/dist/chunk-PKFRS7FD.js.map +1 -0
- package/dist/index.cjs +183 -183
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/internal.cjs +11 -11
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +2 -2
- package/dist/internal.d.ts +2 -2
- package/dist/internal.js +1 -1
- package/dist/{types.d-Bo4RQoDC.d.cts → types.d-D0iY8bQ2.d.cts} +155 -45
- package/dist/{types.d-Bo4RQoDC.d.ts → types.d-D0iY8bQ2.d.ts} +155 -45
- package/package.json +1 -1
- package/dist/chunk-MVNXF7LB.js +0 -13
- package/dist/chunk-MVNXF7LB.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generate/utils.ts","../src/mergeHeaders.ts","../src/getSpec.ts","../src/utils/regexp.ts","../src/utils/escape.ts","../src/plugins/@hey-api/client-core/utils.ts","../src/utils/config.ts","../src/compiler/utils.ts","../src/compiler/types.ts","../src/compiler/module.ts","../src/compiler/classes.ts","../src/compiler/convert.ts","../src/compiler/return.ts","../src/compiler/transform.ts","../src/compiler/typedef.ts","../src/compiler/index.ts","../src/openApi/shared/utils/identifier.ts","../src/utils/stringCase.ts","../src/generate/files.ts","../src/utils/ref.ts","../src/ir/context.ts","../src/openApi/shared/utils/filter.ts","../src/openApi/shared/utils/parameter.ts","../src/openApi/common/parser/sanitize.ts","../src/openApi/shared/utils/operation.ts","../src/ir/mediaType.ts","../src/openApi/2.0.x/parser/mediaType.ts","../src/ir/pagination.ts","../src/ir/utils.ts","../src/openApi/shared/utils/discriminator.ts","../src/openApi/shared/utils/schema.ts","../src/openApi/2.0.x/parser/schema.ts","../src/openApi/2.0.x/parser/pagination.ts","../src/openApi/2.0.x/parser/operation.ts","../src/openApi/2.0.x/parser/parameter.ts","../src/utils/url.ts","../src/openApi/2.0.x/parser/server.ts","../src/openApi/2.0.x/parser/index.ts","../src/openApi/3.0.x/parser/mediaType.ts","../src/openApi/3.0.x/parser/schema.ts","../src/openApi/3.0.x/parser/pagination.ts","../src/openApi/3.0.x/parser/operation.ts","../src/openApi/3.0.x/parser/parameter.ts","../src/openApi/3.0.x/parser/requestBody.ts","../src/openApi/3.0.x/parser/server.ts","../src/openApi/3.0.x/parser/index.ts","../src/openApi/3.1.x/parser/mediaType.ts","../src/openApi/3.1.x/parser/schema.ts","../src/openApi/3.1.x/parser/pagination.ts","../src/openApi/3.1.x/parser/operation.ts","../src/openApi/3.1.x/parser/parameter.ts","../src/openApi/3.1.x/parser/requestBody.ts","../src/openApi/3.1.x/parser/server.ts","../src/openApi/3.1.x/parser/index.ts","../src/openApi/common/parser/service.ts","../src/utils/const.ts","../src/utils/transform.ts","../src/openApi/v3/parser/inferType.ts","../src/openApi/common/parser/stripNamespace.ts","../src/openApi/common/parser/type.ts","../src/utils/unique.ts","../src/openApi/common/parser/getEnums.ts","../src/openApi/common/parser/getPattern.ts","../src/openApi/v2/parser/getModelProperties.ts","../src/openApi/common/parser/getRef.ts","../src/openApi/v2/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v2/parser/getModelComposition.ts","../src/openApi/v2/parser/getModel.ts","../src/openApi/v2/parser/getModels.ts","../src/utils/sort.ts","../src/utils/enum.ts","../src/utils/meta.ts","../src/utils/type.ts","../src/openApi/common/parser/operation.ts","../src/openApi/common/parser/getDefault.ts","../src/openApi/v2/parser/getOperationParameter.ts","../src/openApi/v2/parser/getOperationParameters.ts","../src/openApi/common/parser/sort.ts","../src/openApi/v2/parser/getOperationResponse.ts","../src/openApi/v2/parser/getOperationResponses.ts","../src/openApi/v2/parser/operation.ts","../src/openApi/v2/parser/getOperations.ts","../src/openApi/v2/parser/getServer.ts","../src/openApi/v2/index.ts","../src/openApi/v3/parser/discriminator.ts","../src/openApi/v3/parser/getModelProperties.ts","../src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v3/parser/getModelComposition.ts","../src/openApi/v3/parser/getModel.ts","../src/openApi/v3/parser/parameter.ts","../src/openApi/v3/parser/getModels.ts","../src/openApi/v3/parser/getOperationParameter.ts","../src/openApi/v3/parser/getOperationParameters.ts","../src/openApi/v3/parser/getContent.ts","../src/openApi/v3/parser/getOperationRequestBody.ts","../src/openApi/v3/parser/getOperationResponse.ts","../src/openApi/v3/parser/getOperationResponses.ts","../src/openApi/v3/parser/operation.ts","../src/openApi/v3/parser/getOperations.ts","../src/openApi/v3/parser/getServer.ts","../src/openApi/v3/index.ts","../src/openApi/index.ts","../src/getLogs.ts","../src/plugins/@hey-api/client-core/config.ts","../src/generate/client.ts","../src/plugins/shared/utils/ref.ts","../src/plugins/@hey-api/typescript/ref.ts","../src/plugins/@hey-api/client-core/client.ts","../src/plugins/@hey-api/client-core/createClientConfig.ts","../src/plugins/@hey-api/client-core/plugin.ts","../src/plugins/@hey-api/client-axios/config.ts","../src/plugins/@hey-api/client-fetch/config.ts","../src/plugins/@hey-api/client-next/config.ts","../src/plugins/@hey-api/client-nuxt/config.ts","../src/plugins/@hey-api/legacy-angular/config.ts","../src/plugins/@hey-api/legacy-axios/config.ts","../src/plugins/@hey-api/legacy-fetch/config.ts","../src/plugins/@hey-api/legacy-node/config.ts","../src/plugins/@hey-api/legacy-xhr/config.ts","../src/plugins/@hey-api/schemas/plugin.ts","../src/plugins/@hey-api/schemas/plugin-legacy.ts","../src/plugins/@hey-api/schemas/config.ts","../src/ir/parameter.ts","../src/ir/schema.ts","../src/ir/operation.ts","../src/utils/postprocess.ts","../src/plugins/shared/utils/operation.ts","../src/plugins/zod/plugin.ts","../src/plugins/@hey-api/transformers/plugin.ts","../src/plugins/@hey-api/sdk/constants.ts","../src/plugins/@hey-api/sdk/plugin-legacy.ts","../src/plugins/@hey-api/sdk/typeOptions.ts","../src/plugins/@hey-api/sdk/plugin.ts","../src/plugins/@hey-api/sdk/config.ts","../src/plugins/@hey-api/typescript/plugin-legacy.ts","../src/plugins/@hey-api/transformers/plugin-legacy.ts","../src/plugins/@hey-api/transformers/config.ts","../src/plugins/@hey-api/typescript/plugin.ts","../src/plugins/shared/utils/case.ts","../src/plugins/@hey-api/typescript/clientOptions.ts","../src/plugins/@hey-api/typescript/config.ts","../src/plugins/@tanstack/query-core/infiniteQueryOptions.ts","../src/plugins/@tanstack/query-core/useType.ts","../src/plugins/@tanstack/query-core/queryKey.ts","../src/plugins/@tanstack/query-core/mutationOptions.ts","../src/plugins/@tanstack/query-core/queryOptions.ts","../src/plugins/@tanstack/query-core/plugin.ts","../src/plugins/@tanstack/query-core/plugin-legacy.ts","../src/plugins/@tanstack/angular-query-experimental/config.ts","../src/plugins/@tanstack/react-query/config.ts","../src/plugins/@tanstack/solid-query/config.ts","../src/plugins/@tanstack/svelte-query/config.ts","../src/plugins/@tanstack/vue-query/config.ts","../src/plugins/fastify/plugin.ts","../src/plugins/fastify/config.ts","../src/plugins/zod/config.ts","../src/plugins/index.ts","../src/initConfigs.ts"],"names":["ensureDirSync","path","fs","removeDirSync","relativeModulePath","moduleOutput","sourceOutput","outputParts","mergeHeaders","headers","mergedHeaders","header","iterator","key","value","v","getSpec","fetchOptions","inputPath","timeout","watch","refParser","$RefParser","resolvedInput","getResolvedInput","arrayBuffer","hasChanged","response","request","sendRequest","error","eTag","lastModified","content","illegalStartCharactersRegExp","numberRegExp","reservedBrowserGlobalsRegExp","reservedJavaScriptGlobalsRegExp","reservedJavaScriptKeywordsRegExp","reservedNodeGlobalsRegExp","reservedTypeScriptKeywordsRegExp","validTypescriptIdentifierRegExp","escapeName","unescapeName","escapeComment","_l","w","EOL","clientId","getClientBaseUrlKey","config","client","getClientPlugin","name","plugin","_config","getConfig","setConfig","isLegacyClient","legacyNameFromConfig","printer","ts","createSourceFile","sourceText","blankSourceFile","unescapeUnicode","_","hex","tsNodeToString","node","unescape","result","stringToTsNodes","createIdentifier","text","ots","alias","asType","nameNode","aliasNode","hasBothQuotes","hasNewlines","hasUnescapedBackticks","isBacktickEscaped","createStringLiteral","isTsNode","isType","processCommentObject","commentObject","lines","line","jsdocTexts","index","jsdoc","cleanedJsdoc","addLeadingComments","comments","isObjectStyle","comment","commentObjects","createTypeNode","base","args","createTypeReferenceNode","arg","createPropertyAccessChain","expression","createPropertyAccessExpression","isOptional","nodeExpression","nodeName","createNull","toExpression","identifiers","isValueAccess","shorthand","createArrayLiteralExpression","createObjectType","parts","toAccessLevelModifiers","access","keyword","modifiers","toParameterDeclarations","parameters","parameter","createParameterDeclaration","param","createKeywordTypeNode","kind","toTypeParameters","types","createTypeParameterDeclaration","createTypeOperatorNode","operator","type","operatorKeyword","constraint","defaultType","createMappedTypeNode","members","nameType","questionToken","readonlyToken","typeParameter","createLiteralTypeNode","literal","createArrowFunction","async","multiLine","returnType","statements","createBlock","createAnonymousFunction","elements","createAwaitExpression","createFunctionTypeNode","typeParameters","obj","properties","canShorthand","assignment","nameIdentifier","createAsExpression","initializer","createPropertyAssignment","createEnumDeclaration","enumMemberComments","enumMember","createEnumMember","createNamespaceDeclaration","createIndexedAccessTypeNode","indexType","objectType","isSingleQuote","createConditionalExpression","condition","whenFalse","whenTrue","createTypeOfExpression","createTypeAliasDeclaration","exportType","typeArguments","typeName","createTypeParenthesizedNode","required","createNewExpression","argumentsArray","createForOfStatement","awaitModifier","statement","createAssignment","left","right","createRegularExpressionLiteral","flags","createTemplateLiteralType","spans","spanText","item","span","createExportAllDeclaration","module","createCallExpression","functionName","createNamedExportDeclarations","exports","exportedTypes","hasNonTypeExport","exportClause","moduleSpecifier","createConstVariable","assertion","destructure","exportConst","declaration","createNamedImportDeclarations","imports","importedTypes","hasNonTypeImport","namedBindings","importClause","createConstructorDeclaration","accessLevel","createMethodDeclaration","isStatic","createClassDeclaration","decorator","m","member","expressionToStatement","createReturnStatement","createReturnFunctionCall","createReturnVariable","createSafeAccessExpression","element","createAccessExpression","createPropertyAccessExpressions","expressions","createBinaryExpression","createIfStatement","elseStatement","thenStatement","createDateTransformMutation","safeAccessExpression","accessExpression","createFunctionTransformMutation","transformerName","createArrayTransformMutation","createDateTransformerExpression","parameterName","createArrayMapTransform","transformExpression","nullNode","maybeNullable","isNullable","createTypeInterfaceNode","indexProperty","useLegacyResolution","property","signature","indexSignature","createTypeUnionNode","nodes","createTypeIntersectionNode","createTypeTupleNode","createTypeRecordNode","keys","values","keyNode","valueNode","createTypeArrayNode","compiler","regexps","ensureValidIdentifier","identifier","regexp","uppercaseRegExp","lowercaseRegExp","identifierRegExp","separatorsRegExp","leadingSeparatorsRegExp","separatorsAndIdentifierRegExp","numbersAndIdentifierRegExp","preserveCase","_case","string","isLastCharLower","isLastCharUpper","isLastLastCharUpper","isLastLastCharPreserved","separator","character","nextIndex","nextCharacter","isSeparatorBeforeNextCharacter","characterLower","characterUpper","stringCase","stripLeadingSeparators","match","offset","TypeScriptFile","dir","exportFromIndex","id","identifierCase","$ref","namespace","refValue","ensureUniqueIdentifier","importedItem","moduleMap","splitNameAndExtension","context","filePath","configFileParts","cfgParts","file","thisPathParts","filePathParts","relativePath","part","pathArray","relativePathToFile","relativeFolder","fileName","options","extension","tsConfig","output","shouldAppendJs","importsStringArray","_module","resolvedModule","parseRefPath","ref","baseRef","propIndex","prop","count","create","nameTransformer","nameWithTransform","nameWithCasing","nameValue","irRef","isRefOpenApiComponent","refToParts","refToName","resolveRef","spec","current","p","IRContext","event","callbackFn","outputDir","createdFile","isFiltersMatch","filters","schema","filter","field","canProcessRef","excludeFilters","includeFilters","state","createFilter","matcher","createFilters","matchers","mergeParametersObjects","source","target","ensureValidTypeScriptJavaScriptIdentifier","replaced","sanitizeNamespaceIdentifier","sanitizeOperationParameterName","withoutBrackets","ensureUniqueOperationId","method","operationIds","operationKey","operationToId","urlWithoutPlaceholders","fileLikeRegExp","jsonMimeRegExp","multipartFormDataMimeRegExp","textMimeRegExp","xWwwFormUrlEncodedMimeRegExp","octetStreamMimeRegExp","isMediaTypeFileLike","mediaType","mediaTypeToIrMediaType","contentToSchema","mediaTypeObject","mimeTypes","DEFAULT_PAGINATION_KEYWORDS","getPaginationKeywordsRegExp","keywords","pattern","addItemsToSchema","items","logicalOperator","mutateSchemaOneItem","discriminatorValues","mapping","mergeSchemaAccessScopes","a","b","mergedScopes","scope","getSchemaType","parseSchemaJsDoc","irSchema","parseSchemaMeta","parseArray","schemaItems","irItemsSchema","schemaToIrSchema","ofArray","parseBoolean","parseNumber","parseObject","schemaProperties","irPropertySchema","irAdditionalPropertiesSchema","parseString","initIrSchema","parseAllOf","schemaType","compositionSchemas","compositionSchema","irCompositionSchema","valueSchemas","irDiscriminatorSchema","irRefSchema","irObjectSchema","parseOneType","requiredProperty","finalCompositionSchema","nestedItems","parseEnum","enumValue","typeOfEnumValue","enumType","irTypeSchema","parseRef","refSchema","parseNullableType","typeIrSchema","parseType","parseUnknown","parseSchema","isPaginationType","paginationField","finalSchema","allOf","pagination","parseOperationJsDoc","irOperation","operation","initIrOperation","operationToIrOperation","securitySchemesMap","isRequestBodyRequired","requestBodyObject","requestBodyObjectRequired","requestBodyParameter","requestBody","responseObject","securitySchemeObjects","securityRequirementObject","securitySchemeObject","irSecuritySchemeObject","parseOperation","defaultExplode","collectionFormat","defaultStyle","_in","parametersArrayToObject","parametersObject","parameterOrReference","parameterToIrParameter","style","irParameter","parseUrlRegExp","parseUrl","errorResponse","host","protocol","parseServers","schemes","url","servers","scheme","parseV2_0_X","shouldProcessRef","pathItem","finalPathItem","commonOperation","operationArgs","$refDelete","$refGet","$refHead","$refOptions","$refPatch","$refPost","$refPut","parseAnyOf","parseOneOf","defaultAllowReserved","explode","parseParameter","requestBodyToIrRequestBody","irRequestBody","parseRequestBody","parseV3_0_X","securityOrReference","requestBodyOrReference","$refTrace","getSchemaTypes","irItemSchema","parseNull","schemaTypes","irResolvedRefSchema","parseManyTypes","nonNullCompositionSchemas","parseV3_1_X","allowedServiceMethods","getServiceVersion","version","refParametersPartial","refSchemasPartial","transformServiceName","transformTypeName","cleanAndTransformTypeName","transformed","inferType","definition","definitionTypes","isDefinitionTypeNullable","getDefinitionTypes","isDefinitionNullable","stripNamespace","getMappedType","format","hasSquareBracketsRegExp","getType","debug","joinedType","mapped","typeWithoutNamespace","matches","match1","match2","encodedType","unique","arr","getEnums","descriptions","names","getPattern","getModelProperties","getModel","openApi","models","propertyName","propertyRequired","model","ESCAPED_REF_SLASH","ESCAPED_REF_TILDE","getRef","paths","decodedPath","getRequiredPropertiesFromComposition","definitions","getModelComposition","composition","hasProperties","hasEnums","requiredProperties","modelProperties","modelProperty","isDefinition","meta","definitionRef","enums","arrayItems","additionalProperties","definitionType","getModels","definitionName","sort","nameA","nameB","sorterByName","sortByName","enumKey","customName","enumUnionType","enumerator","union","enumEntry","enumMeta","serialized","getParametersMeta","getSchemasMeta","isModelDate","typeReference","typeNode","typeArray","toType","typeEnum","typeDict","typeUnionOrIntersection","typeInterface","isLegacy","maybeRequired","transformTypeKeyName","setUniqueTypeName","unsetUniqueTypeName","getOperationKey","getOperationResponseHeader","operationResponses","isOperationParameterRequired","parseResponseStatusCode","code","sorterByResponseStatusCode","isErrorStatusCode","isSuccessStatusCode","inferDefaultResponseTypes","responses","addResponseType","description","$refs","errorKeywords","operationFilterFn","operationNameFn","operationId","operationParameterFilterFn","operationParameterNameFn","tagResponseTypes","getDefault","getOperationParameter","operationParameterWithoutName","operationParameter","allowedIn","getOperationParameters","operationParameters","parameterDef","skip","toSortedByRequired","aNeedsValue","bNeedsValue","getOperationResponse","operationResponse","getOperationResponses","responseCode","responseOrReference","getOperation","op","pathParams","operationWithoutName","successResponses","getOperations","operations","pathParameters","getServer","basePath","parse","server","inverseDictionary","map","m2","findOneOfParentDiscriminator","parent","mapPropertyValue","discriminator","getAdditionalPropertiesModel","ap","apModel","apType","additionalPropertiesType","propertyValues","findModelComposition","def","foundComposition","propertiesProperty","initialValues","parentDefinition","inferredType","acc","arrayItemsDefinition","definitionConst","modelConst","getParameterSchema","contents","BASIC_MEDIA_TYPES","getContent","basicMediaTypeWithSchema","cleanMediaType","firstMediaTypeWithSchema","getOperationRequestBody","body","mergeParameters","opParams","globalParams","mergedParameters","pendingParameters","pendingParam","requestBodyDef","variables","variable","parseLegacy","parseOpenApiSpec","getLogs","userConfig","logs","clientDefaultConfig","getClientSrcPath","pluginFilePathComponents","clientModulePath","clientSrcPath","outputPath","clientApi","generateClientBundle","dirPath","clientModulePathComponents","__require","clientDistPath","distFiles","operationIrRef","affix","typesId","refIdentifier","onGet","importIdentifierData","identifierData","importIdentifierError","identifierError","importIdentifierResponse","identifierResponse","resolveBaseUrlString","baseUrl","createClient","clientModule","createConfig","clientOptions","createClientConfig","defaultValues","resolvedBaseUrl","createConfigParameters","createClientConfigType","configType","defaultClientOptions","defaultClientOptionsType","tType","typeCreateClientConfig","clientPluginHandler","defaultConfig","schemasId","stripSchema","schemaToJsonSchemaDraft_04","_schema","schemaToJsonSchemaDraft_05","schemaToJsonSchema2020_12","schemaName","schemasV2_0_X","schemasV3_0_X","schemasV3_1_X","handler","ensureValidSchemaOutput","parentKey","toSchemaName","validName","handlerLegacy","files","addSchema","hasParameterGroupObjectRequired","parameterGroup","hasParametersObjectRequired","parameterWithPagination","deduplicateSchema","uniqueItems","typeIds","typeId","liftedSchema","hasOperationDataRequired","operationPagination","resolvedSchema","paginationProp","statusCodeToGroup","statusCode","operationResponsesMap","errors","defaultResponse","inferred","errorKeys","errorUnion","responseKeys","responseUnion","postProcessClient","postProcessModel","postProcessOperations","postProcessService","services","parserOperation","tag","getServiceName","service","getNewService","clone","postProcessServiceOperations","createOperationComment","zodId","andIdentifier","coerceIdentifier","defaultIdentifier","intersectionIdentifier","lazyIdentifier","lengthIdentifier","literalIdentifier","maxIdentifier","minIdentifier","objectIdentifier","optionalIdentifier","readonlyIdentifier","regexIdentifier","unionIdentifier","zIdentifier","arrayTypeToZodSchema","arrayExpression","unknownTypeToZodSchema","itemExpressions","schemaToZodSchema","booleanTypeToZodSchema","enumTypeToZodSchema","enumMembers","enumExpression","neverTypeToZodSchema","nullTypeToZodSchema","numberParameter","isBigInt","numberTypeToZodSchema","numberExpression","objectTypeToZodSchema","isRequired","propertyExpression","stringTypeToZodSchema","stringExpression","tupleTypeToZodSchema","tupleElements","undefinedTypeToZodSchema","voidTypeToZodSchema","schemaTypeToZodSchema","operationToZodSchema","optional","anyType","isCircularReference","identifierRef","zodSchema","itemTypes","firstSchema","callParameter","bigIntExpressions","dataExpression","bigIntCallExpression","dateExpressions","identifierDate","operationTransformerIrRef","schemaIrRef","schemaResponseTransformerRef","transformersId","dataVariableName","ensureStatements","isNodeReturnStatement","schemaResponseTransformerNodes","processSchemaType","callExpression","mapCallbackStatements","stmt","propertyAccessExpression","propertyNodes","noNullableTypesInSchema","x","arrayNodes","identifierItem","identifierResponseTransformer","responseTransformerNode","nuxtTypeComposable","nuxtTypeDefault","nuxtTypeResponse","sdkId","generateImport","onImport","setUniqueTypeNameArgs","created","modelResponseTransformerTypeName","operationDataTypeName","operationErrorTypeName","operationResponseTransformerTypeName","operationResponseTypeName","operationOptionsLegacyParserType","importedType","throwOnError","optionsName","toOperationParamType","getDefaultPrintable","typePath","toOperationReturnType","toOperationComment","params","toRequestOptions","onClientImport","responseTransformerName","toObj","prev","curr","errorResponses","serviceFunctionIdentifier","handleIllegal","toOperationStatements","errorType","responseType","processService","onNode","clientPlugin","throwOnErrorTypeGeneric","compileFunctionParams","sdkOutput","imported","createTypeOptions","isNuxtClient","tDataShape","clientType","typeOptions","operationOptionsType","getResponseType","contentType","cleanContent","securitySchemeObjectToAuthObject","operationAuth","auth","authObject","operationStatements","isRequiredOptions","requestOptions","identifierTransformer","identifierSchema","heyApiClient","optionsClient","generateClassSdk","sdks","uniqueTags","generateFlatSdk","treeName","emptyModel","generateEnum","leadingComment","generateType","onCreated","processComposition","props","enumDeclarations","processType","processEnum","processScopedEnum","processModel","processServiceTypes","pathsMap","pathMap","methodMap","bodyParameters","bodyParameter","headerParameters","queryParameters","operationProperties","_method","methodParameters","operationName","reqKey","reqResParameters","resKey","isVoidResponse","getRefModels","refModel","ensureModelResponseTransformerExists","modelName","generateResponseTransformer","processArray","refModels","nameModelResponseTransformer","processProperty","onRemoveNode","nonVoidResponses","nameCreated","fieldName","stringType","serverToBaseUrlType","createClientOptions","typeClientOptions","scopeToRef","accessScope","refParts","nameBuilder","processedName","processNameBuilder","shouldSkipSchema","addJavaScriptEnum","enumObject","schemaToEnumObject","typeofItems","typeOfItemConst","addTypeEnum","schemaToType","addTypeScriptEnum","arrayTypeToIdentifier","booleanTypeToIdentifier","enumTypeToIdentifier","isRefComponent","shouldExportEnum","objectNode","enumNode","numberTypeToIdentifier","objectTypeToIdentifier","indexPropertyItems","hasOptionalProperties","hasSkippedProperties","stringTypeToIdentifier","tupleTypeToIdentifier","schemaTypeToIdentifier","irParametersToIrSchema","operationToDataType","data","dataRequired","operationToType","identifierErrors","errorsType","keyofType","identifierResponses","responsesType","isSchemaSplit","scopes","hasSchemaScope","finalRef","useTypeData","useTypeError","typeError","axiosError","useTypeResponse","createQueryKeyFn","queryKeyName","TOptionsType","infiniteIdentifier","optionsIdentifier","createQueryKeyFunction","identifierCreateQueryKey","fn","createQueryKeyLiteral","isInfinite","createQueryKeyType","queryKeyType","queryKeyFunctionIdentifier","queryKeyStatement","typeQueryKey","typeData","identifierQueryKey","createInfiniteParamsFn","infiniteQueryOptionsFn","createInfiniteParamsFunction","infiniteQueryOptionsFunctionIdentifier","createInfiniteQueryOptions","queryFn","typeResponse","typePageObjectParam","typePageParam","infiniteQueryKeyName","mutationOptionsFn","mutationOptionsFunctionIdentifier","createMutationOptions","mutationsType","mutationType","queryOptionsFn","queryOptionsFunctionIdentifier","createQueryOptions","toInfiniteQueryOptionsName","toMutationOptionsName","toQueryOptionsName","toQueryKeyName","getPaginationIn","createTypeData","typesModulePath","nameTypeData","createTypeError","pluginName","nameTypeError","createTypeResponse","nameTypeResponse","typeInfiniteData","hasCreateInfiniteParamsFunction","hasCreateQueryKeyParamsFunction","hasInfiniteQueries","hasMutations","hasQueries","processedOperations","hasUsedQueryFn","paginationParameter","fastifyId","operationToRouteHandler","fileTypes","errorsTypeReference","responsesTypeReference","replyTypes","routeHandlers","routeHandler","defaultPluginConfigs","defaultPlugins","getInput","input","getPluginsConfig","pluginConfigs","userPlugins","userPluginsConfig","circularReferenceTracker","pluginOrder","plugins","dfs","defaultOptions","userOptions","nativePluginOption","dependency","errorMessage","userPlugin","getOutput","isPluginClient","getPlugins","definedPlugins","getWatch","initConfigs","configurationFile","configFromFile","loadConfig","configFile","dryRun","experimentalParser","exportCore","useOptions"],"mappings":"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","file":"chunk-MVNXF7LB.js","sourcesContent":["import type { PathLike } from 'node:fs';\nimport fs from 'node:fs';\n\nexport const ensureDirSync = (path: PathLike) => {\n if (!fs.existsSync(path)) {\n fs.mkdirSync(path, { recursive: true });\n }\n};\n\nexport const removeDirSync = (path: PathLike) => {\n if (fs.existsSync(path)) {\n fs.rmSync(path, { force: true, recursive: true });\n }\n};\n\n/**\n * Construct a relative import path to modules. This is used for example\n * in plugins to import types or SDK module.\n */\nexport const relativeModulePath = ({\n moduleOutput,\n sourceOutput,\n}: {\n /**\n * Output path to the imported module.\n * @example\n * 'types'\n */\n moduleOutput: string;\n /**\n * Output path to the source module.\n * @example\n * '@tanstack/react-query'\n */\n sourceOutput: string;\n}): string => {\n const outputParts = sourceOutput.split('/');\n const relativePath =\n Array.from({ length: outputParts.length }).fill('').join('../') || './';\n return `${relativePath}${moduleOutput}`;\n};\n","// copy-pasted from @hey-api/client-fetch\nexport const mergeHeaders = (\n ...headers: Array<RequestInit['headers'] | undefined>\n): Headers => {\n const mergedHeaders = new Headers();\n for (const header of headers) {\n if (!header || typeof header !== 'object') {\n continue;\n }\n\n const iterator =\n header instanceof Headers ? header.entries() : Object.entries(header);\n\n for (const [key, value] of iterator) {\n if (value === null) {\n mergedHeaders.delete(key);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n mergedHeaders.append(key, v as string);\n }\n } else if (value !== undefined) {\n // assume object headers are meant to be JSON stringified, i.e. their\n // content value in OpenAPI specification is 'application/json'\n mergedHeaders.set(\n key,\n typeof value === 'object' ? JSON.stringify(value) : (value as string),\n );\n }\n }\n }\n return mergedHeaders;\n};\n","import {\n $RefParser,\n getResolvedInput,\n type JSONSchema,\n sendRequest,\n} from '@hey-api/json-schema-ref-parser';\n\nimport { mergeHeaders } from './mergeHeaders';\nimport type { Config } from './types/config';\nimport type { WatchValues } from './types/types';\n\ninterface SpecResponse {\n data: JSONSchema;\n error?: undefined;\n response?: undefined;\n}\n\ninterface SpecError {\n data?: undefined;\n error: 'not-modified' | 'not-ok';\n response: Response;\n}\n\n/**\n * @internal\n */\nexport const getSpec = async ({\n fetchOptions,\n inputPath,\n timeout,\n watch,\n}: {\n fetchOptions?: RequestInit;\n inputPath: Config['input']['path'];\n timeout: number;\n watch: WatchValues;\n}): Promise<SpecResponse | SpecError> => {\n const refParser = new $RefParser();\n const resolvedInput = getResolvedInput({ pathOrUrlOrSchema: inputPath });\n\n let arrayBuffer: ArrayBuffer | undefined;\n // boolean signals whether the file has **definitely** changed\n let hasChanged: boolean | undefined;\n let response: Response | undefined;\n\n if (resolvedInput.type === 'url') {\n // do NOT send HEAD request on first run or if unsupported\n if (watch.lastValue && watch.isHeadMethodSupported !== false) {\n try {\n const request = await sendRequest({\n fetchOptions: {\n method: 'HEAD',\n ...fetchOptions,\n headers: mergeHeaders(fetchOptions?.headers, watch.headers),\n },\n timeout,\n url: resolvedInput.path,\n });\n\n if (request.response.status >= 300) {\n return {\n error: 'not-ok',\n response: request.response,\n };\n }\n\n response = request.response;\n } catch (error) {\n return {\n error: 'not-ok',\n response: new Response(error.message),\n };\n }\n\n if (!response.ok && watch.isHeadMethodSupported) {\n // assume the server is no longer running\n // do nothing, it might be restarted later\n return {\n error: 'not-ok',\n response,\n };\n }\n\n if (watch.isHeadMethodSupported === undefined) {\n watch.isHeadMethodSupported = response.ok;\n }\n\n if (response.status === 304) {\n return {\n error: 'not-modified',\n response,\n };\n }\n\n if (hasChanged === undefined) {\n const eTag = response.headers.get('ETag');\n if (eTag) {\n hasChanged = eTag !== watch.headers.get('If-None-Match');\n\n if (hasChanged) {\n watch.headers.set('If-None-Match', eTag);\n }\n }\n }\n\n if (hasChanged === undefined) {\n const lastModified = response.headers.get('Last-Modified');\n if (lastModified) {\n hasChanged = lastModified !== watch.headers.get('If-Modified-Since');\n\n if (hasChanged) {\n watch.headers.set('If-Modified-Since', lastModified);\n }\n }\n }\n\n // we definitely know the input has not changed\n if (hasChanged === false) {\n return {\n error: 'not-modified',\n response,\n };\n }\n }\n\n try {\n const request = await sendRequest({\n fetchOptions: {\n method: 'GET',\n ...fetchOptions,\n },\n timeout,\n url: resolvedInput.path,\n });\n\n if (request.response.status >= 300) {\n return {\n error: 'not-ok',\n response: request.response,\n };\n }\n\n response = request.response;\n } catch (error) {\n return {\n error: 'not-ok',\n response: new Response(error.message),\n };\n }\n\n if (!response.ok) {\n // assume the server is no longer running\n // do nothing, it might be restarted later\n return {\n error: 'not-ok',\n response,\n };\n }\n\n arrayBuffer = response.body\n ? await response.arrayBuffer()\n : new ArrayBuffer(0);\n\n if (hasChanged === undefined) {\n const content = new TextDecoder().decode(arrayBuffer);\n hasChanged = content !== watch.lastValue;\n watch.lastValue = content;\n }\n } else {\n // we do not support watch mode for files or raw spec data\n if (!watch.lastValue) {\n watch.lastValue = resolvedInput.type;\n } else {\n hasChanged = false;\n }\n }\n\n if (hasChanged === false) {\n return {\n error: 'not-modified',\n response: response!,\n };\n }\n\n const data = await refParser.bundle({\n arrayBuffer,\n pathOrUrlOrSchema: undefined,\n resolvedInput,\n });\n\n return {\n data,\n };\n};\n","/**\n * Matches characters from the start as long as they're not allowed.\n */\nexport const illegalStartCharactersRegExp = /^[^$_\\p{ID_Start}]+/u;\n\n/**\n * Matches string if it contains only digits and optionally decimal point or\n * leading minus sign.\n */\nexport const numberRegExp = /^-?\\d+(\\.\\d+)?$/;\n\nexport const reservedBrowserGlobalsRegExp =\n /^(document|history|location|navigator|window)$/g;\n\nexport const reservedJavaScriptGlobalsRegExp =\n /^(console|Array|Date|Error|Function|JSON|Map|Math|Object|Promise|RegExp|Set|WeakMap|WeakSet)$/g;\n\nexport const reservedJavaScriptKeywordsRegExp =\n /^(arguments|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|from|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g;\n\nexport const reservedNodeGlobalsRegExp = /^(global|process|Buffer)$/g;\n\nexport const reservedTypeScriptKeywordsRegExp =\n /^(any|as|bigint|boolean|namespace|never|null|number|string|symbol|type|undefined|unknown|void)$/g;\n\n/**\n * Javascript identifier regexp pattern retrieved from\n * {@link} https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nexport const validTypescriptIdentifierRegExp =\n /^[$_\\p{ID_Start}][$\\u200c\\u200d\\p{ID_Continue}]*$/u;\n","import { EOL } from 'os';\n\nimport { validTypescriptIdentifierRegExp } from './regexp';\n\nexport const escapeName = (value: string): string => {\n if (value || value === '') {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n const validName = validTypescriptIdentifierRegExp.test(value);\n if (!validName) {\n return `'${value}'`;\n }\n }\n return value;\n};\n\nexport const unescapeName = (value: string): string => {\n if (value && value.startsWith(\"'\") && value.endsWith(\"'\")) {\n return value.slice(1, value.length - 1);\n }\n return value;\n};\n\nexport const escapeComment = (value: string) =>\n value\n .replace(/\\*\\//g, '*')\n .replace(/\\/\\*/g, '*')\n .replace(/\\r?\\n(.*)/g, (_l, w) => EOL + w.trim());\n","import type { Config } from '../../../types/config';\nimport type { PluginClientNames } from '../../types';\n\nexport const clientId = 'client';\n\ntype Plugins = Required<Config>['plugins'];\n\nexport const getClientBaseUrlKey = (config: Config) => {\n const client = getClientPlugin(config);\n if (\n client.name === '@hey-api/client-axios' ||\n client.name === '@hey-api/client-nuxt'\n ) {\n return 'baseURL';\n }\n return 'baseUrl';\n};\n\nexport const getClientPlugin = (\n config: Config,\n): Required<Plugins>[PluginClientNames] => {\n for (const name of config.pluginOrder) {\n const plugin = config.plugins[name];\n if (plugin?._tags?.includes('client')) {\n return plugin as Required<Plugins>[PluginClientNames];\n }\n }\n\n return {\n // @ts-expect-error\n name: '',\n };\n};\n","import { getClientPlugin } from '../plugins/@hey-api/client-core/utils';\nimport type { Config } from '../types/config';\n\nlet _config: Config;\n\nexport const getConfig = () => {\n const config = _config;\n const plugin = getClientPlugin(config);\n // patch legacy config to avoid breaking handlebars\n // @ts-expect-error\n config.client = plugin;\n return config;\n};\n\nexport const setConfig = (config: Config) => {\n _config = config;\n return getConfig();\n};\n\nexport const isLegacyClient = (config: Config) => {\n const plugin = getClientPlugin(config);\n return plugin.name.startsWith('legacy/');\n};\n\n/**\n * Wrap legacy `name` option so we don't use it when not using legacy clients.\n */\nexport const legacyNameFromConfig = (config: Config) => {\n if (!isLegacyClient(config)) {\n return;\n }\n\n return config.name;\n};\n","import ts from 'typescript';\n\nimport { getConfig } from '../utils/config';\nimport { unescapeName } from '../utils/escape';\nimport { createStringLiteral } from './types';\n\nexport interface ImportExportItemObject {\n alias?: string;\n asType?: boolean;\n name: string;\n}\n\nconst printer = ts.createPrinter({\n newLine: ts.NewLineKind.LineFeed,\n removeComments: false,\n});\n\nexport const createSourceFile = (sourceText: string) =>\n ts.createSourceFile(\n '',\n sourceText,\n ts.ScriptTarget.ESNext,\n false,\n ts.ScriptKind.TS,\n );\n\nconst blankSourceFile = createSourceFile('');\n\nconst unescapeUnicode = (value: string) =>\n value.replace(/\\\\u([0-9a-fA-F]{4})/g, (_, hex: string) =>\n String.fromCharCode(Number.parseInt(hex, 16)),\n );\n\n/**\n * Print a TypeScript node to a string.\n * @param node the node to print\n * @returns string\n */\nexport function tsNodeToString({\n node,\n unescape = false,\n}: {\n node: ts.Node;\n unescape?: boolean;\n}): string {\n const result = printer.printNode(\n ts.EmitHint.Unspecified,\n node,\n blankSourceFile,\n );\n\n if (!unescape) {\n return result;\n }\n\n try {\n /**\n * TypeScript Compiler API escapes unicode characters by default and there\n * is no way to disable this behavior\n * {@link https://github.com/microsoft/TypeScript/issues/36174}\n */\n return unescapeUnicode(result);\n } catch {\n if (getConfig().logs.level === 'debug') {\n console.warn('Could not decode value:', result);\n }\n return result;\n }\n}\n\n/**\n * Convert a string to a TypeScript Node\n * @param value the string to convert.\n * @returns ts.Node\n */\nexport function stringToTsNodes(value: string): ts.Node {\n const file = createSourceFile(value);\n return file.statements[0]!;\n}\n\nexport const createIdentifier = ({ text }: { text: string }) => {\n const identifier = ts.factory.createIdentifier(text);\n return identifier;\n};\n\n/**\n * ots for @hey-api/openapi-ts are helpers to reduce repetition of basic TypeScript\n * factory functions.\n */\nexport const ots = {\n /**\n * Create a boolean expression based on value.\n */\n boolean: (value: boolean) =>\n value ? ts.factory.createTrue() : ts.factory.createFalse(),\n export: ({ alias, asType = false, name }: ImportExportItemObject) => {\n const nameNode = createIdentifier({ text: name });\n if (alias) {\n const aliasNode = createIdentifier({ text: alias });\n return ts.factory.createExportSpecifier(asType, nameNode, aliasNode);\n }\n return ts.factory.createExportSpecifier(asType, undefined, nameNode);\n },\n import: ({ alias, asType = false, name }: ImportExportItemObject) => {\n const nameNode = createIdentifier({ text: name });\n if (alias) {\n const aliasNode = createIdentifier({ text: alias });\n return ts.factory.createImportSpecifier(asType, nameNode, aliasNode);\n }\n return ts.factory.createImportSpecifier(asType, undefined, nameNode);\n },\n /**\n * Create a numeric expression, handling negative numbers.\n */\n number: (value: number) => {\n if (value < 0) {\n return ts.factory.createPrefixUnaryExpression(\n ts.SyntaxKind.MinusToken,\n ts.factory.createNumericLiteral(Math.abs(value)),\n );\n }\n return ts.factory.createNumericLiteral(value);\n },\n /**\n * Create a string literal. This handles strings that start with '`' or \"'\".\n */\n string: (value: string, unescape = false) => {\n let text = value;\n if (unescape) {\n text = unescapeName(text);\n }\n const hasBothQuotes = text.includes(\"'\") && text.includes('\"');\n const hasNewlines = text.includes('\\n');\n const hasUnescapedBackticks = text.startsWith('`');\n const isBacktickEscaped = text.startsWith('\\\\`') && text.endsWith('\\\\`');\n if (\n (hasNewlines || hasBothQuotes || hasUnescapedBackticks) &&\n !isBacktickEscaped\n ) {\n text = `\\`${text.replace(/(?<!\\\\)`/g, '\\\\`').replace(/\\${/g, '\\\\${')}\\``;\n }\n if (text.startsWith('`')) {\n return createIdentifier({ text });\n }\n return createStringLiteral({ text });\n },\n};\n\nexport const isTsNode = (node: any): node is ts.Expression =>\n node !== null &&\n typeof node === 'object' &&\n typeof node.kind === 'number' &&\n typeof node.flags === 'number' &&\n typeof node.pos === 'number' &&\n typeof node.end === 'number';\n\nexport const isType = <T>(value: T | undefined): value is T =>\n value !== undefined;\n\ntype CommentLines = Array<string | null | false | undefined>;\ntype CommentObject = {\n jsdoc?: boolean;\n lines: CommentLines;\n};\nexport type Comments = CommentLines | Array<CommentObject>;\n\nconst processCommentObject = ({\n commentObject,\n node,\n}: {\n commentObject: CommentObject;\n node: ts.Node;\n}) => {\n const lines = commentObject.lines.filter(\n (line) => Boolean(line) || line === '',\n ) as string[];\n if (!lines.length) {\n return;\n }\n\n if (!commentObject.jsdoc) {\n for (const line of lines) {\n ts.addSyntheticLeadingComment(\n node,\n ts.SyntaxKind.SingleLineCommentTrivia,\n ` ${line}`,\n true,\n );\n }\n return;\n }\n\n const jsdocTexts = lines.map((line, index) => {\n let text = line;\n if (index !== lines.length) {\n text = `${text}\\n`;\n }\n const jsdocText = ts.factory.createJSDocText(text);\n return jsdocText;\n });\n\n const jsdoc = ts.factory.createJSDocComment(\n ts.factory.createNodeArray(jsdocTexts),\n undefined,\n );\n\n const cleanedJsdoc = tsNodeToString({ node: jsdoc, unescape: true })\n .replace('/*', '')\n .replace('* */', '');\n\n ts.addSyntheticLeadingComment(\n node,\n ts.SyntaxKind.MultiLineCommentTrivia,\n cleanedJsdoc,\n true,\n );\n};\n\nexport const addLeadingComments = ({\n comments = [],\n node,\n}: {\n comments?: Comments;\n node: ts.Node;\n}) => {\n const isObjectStyle = Boolean(\n comments.find((comment) => typeof comment === 'object' && comment),\n );\n\n let commentObjects = comments as Array<CommentObject>;\n if (!isObjectStyle) {\n commentObjects = [\n {\n jsdoc: true,\n lines: comments as CommentLines,\n },\n ];\n }\n\n for (const commentObject of commentObjects) {\n processCommentObject({\n commentObject,\n node,\n });\n }\n};\n","import ts from 'typescript';\n\nimport { escapeName } from '../utils/escape';\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n isTsNode,\n isType,\n ots,\n} from './utils';\n\nexport type AccessLevel = 'public' | 'protected' | 'private';\n\nexport type FunctionParameter =\n | {\n accessLevel?: AccessLevel;\n default?: any;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name: string;\n type?: any | ts.TypeNode;\n }\n | {\n destructure: ReadonlyArray<FunctionParameter>;\n };\n\nexport interface FunctionTypeParameter {\n default?: any;\n extends?: string | ts.TypeNode;\n name: string | ts.Identifier;\n}\n\nexport const createTypeNode = (\n base: any | ts.TypeNode,\n args?: (any | ts.TypeNode)[],\n): ts.TypeNode => {\n if (ts.isTypeNode(base)) {\n return base;\n }\n\n if (typeof base === 'number') {\n return ts.factory.createLiteralTypeNode(ots.number(base));\n }\n\n return createTypeReferenceNode({\n typeArguments: args?.map((arg) => createTypeNode(arg)),\n typeName: base,\n });\n};\n\nexport const createPropertyAccessChain = ({\n expression,\n name,\n}: {\n expression: ts.Expression;\n name: string | ts.MemberName;\n}) => {\n const node = ts.factory.createPropertyAccessChain(\n expression,\n ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),\n name,\n );\n return node;\n};\n\nexport const createPropertyAccessExpression = ({\n expression,\n isOptional,\n name,\n}: {\n expression: string | ts.Expression;\n isOptional?: boolean;\n name: string | ts.MemberName;\n}):\n | ts.PropertyAccessChain\n | ts.PropertyAccessExpression\n | ts.ElementAccessExpression => {\n const nodeExpression =\n typeof expression === 'string'\n ? createIdentifier({ text: expression })\n : expression;\n\n if (isOptional) {\n return createPropertyAccessChain({\n expression: nodeExpression,\n name,\n });\n }\n\n if (typeof name === 'string') {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n if (!validTypescriptIdentifierRegExp.test(name)) {\n // TODO: parser - this should escape name only for new parser\n if (!name.startsWith(\"'\") && !name.endsWith(\"'\")) {\n // eslint-disable-next-line no-useless-escape\n name = `\\'${name}\\'`;\n }\n const nodeName = createIdentifier({ text: name });\n return ts.factory.createElementAccessExpression(nodeExpression, nodeName);\n }\n }\n\n const nodeName =\n typeof name === 'string' ? createIdentifier({ text: name }) : name;\n\n return ts.factory.createPropertyAccessExpression(nodeExpression, nodeName);\n};\n\nexport const createNull = (): ts.NullLiteral => ts.factory.createNull();\n\n/**\n * Convert an unknown value to an expression.\n * @param identifiers - list of keys that are treated as identifiers.\n * @param shorthand - if shorthand syntax is allowed.\n * @param unescape - if string should be unescaped.\n * @param value - the unknown value.\n * @returns ts.Expression\n */\nexport const toExpression = <T = unknown>({\n identifiers = [],\n isValueAccess,\n shorthand,\n unescape,\n value,\n}: {\n identifiers?: string[];\n isValueAccess?: boolean;\n shorthand?: boolean;\n unescape?: boolean;\n value: T;\n}): ts.Expression | undefined => {\n if (value === null) {\n return createNull();\n }\n\n if (Array.isArray(value)) {\n return createArrayLiteralExpression({ elements: value });\n }\n\n if (typeof value === 'object') {\n return createObjectType({\n identifiers,\n obj: value,\n shorthand,\n });\n }\n\n if (typeof value === 'number') {\n return ots.number(value);\n }\n\n if (typeof value === 'boolean') {\n return ots.boolean(value);\n }\n\n if (typeof value === 'string') {\n if (isValueAccess) {\n // TODO; handle more than single nested level, i.e. foo.bar.baz\n const parts = value.split('.');\n return createPropertyAccessExpression({\n expression: parts[0]!,\n name: parts[1]!,\n });\n }\n return ots.string(value, unescape);\n }\n};\n\n/**\n * Convert AccessLevel to proper TypeScript compiler API modifier.\n * @param access - the access level.\n * @returns ts.ModifierLike[]\n */\nexport const toAccessLevelModifiers = (\n access?: AccessLevel,\n): ts.ModifierLike[] => {\n const keyword =\n access === 'public'\n ? ts.SyntaxKind.PublicKeyword\n : access === 'protected'\n ? ts.SyntaxKind.ProtectedKeyword\n : access === 'private'\n ? ts.SyntaxKind.PrivateKeyword\n : undefined;\n const modifiers: ts.ModifierLike[] = [];\n if (keyword) {\n modifiers.push(ts.factory.createModifier(keyword));\n }\n return modifiers;\n};\n\n/**\n * Convert parameters to the declaration array expected by compiler API.\n * @param parameters - the parameters to convert to declarations\n * @returns ts.ParameterDeclaration[]\n */\nexport const toParameterDeclarations = (\n parameters: ReadonlyArray<FunctionParameter>,\n) =>\n parameters.map((parameter) => {\n if ('destructure' in parameter) {\n return createParameterDeclaration({\n name: ts.factory.createObjectBindingPattern(\n parameter.destructure\n .map((param) => {\n // TODO: add support for nested destructuring, not needed at the moment\n if ('destructure' in param) {\n return;\n }\n\n const result = ts.factory.createBindingElement(\n undefined,\n undefined,\n createIdentifier({ text: param.name }),\n undefined,\n );\n return result;\n })\n .filter(Boolean) as ts.BindingElement[],\n ),\n });\n }\n\n let modifiers = toAccessLevelModifiers(parameter.accessLevel);\n\n if (parameter.isReadOnly) {\n modifiers = [\n ...modifiers,\n ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword),\n ];\n }\n\n return createParameterDeclaration({\n initializer:\n parameter.default !== undefined\n ? toExpression({ value: parameter.default })\n : undefined,\n modifiers,\n name: createIdentifier({ text: parameter.name }),\n required: parameter.isRequired !== false,\n type:\n parameter.type !== undefined\n ? createTypeNode(parameter.type)\n : undefined,\n });\n });\n\nexport const createKeywordTypeNode = ({\n keyword,\n}: {\n keyword:\n | 'any'\n | 'boolean'\n | 'never'\n | 'number'\n | 'string'\n | 'undefined'\n | 'unknown'\n | 'void';\n}) => {\n let kind: ts.KeywordTypeSyntaxKind = ts.SyntaxKind.AnyKeyword;\n switch (keyword) {\n case 'boolean':\n kind = ts.SyntaxKind.BooleanKeyword;\n break;\n case 'never':\n kind = ts.SyntaxKind.NeverKeyword;\n break;\n case 'number':\n kind = ts.SyntaxKind.NumberKeyword;\n break;\n case 'string':\n kind = ts.SyntaxKind.StringKeyword;\n break;\n case 'undefined':\n kind = ts.SyntaxKind.UndefinedKeyword;\n break;\n case 'unknown':\n kind = ts.SyntaxKind.UnknownKeyword;\n break;\n case 'void':\n kind = ts.SyntaxKind.VoidKeyword;\n break;\n }\n return ts.factory.createKeywordTypeNode(kind);\n};\n\nexport const toTypeParameters = (\n types: (FunctionTypeParameter | ts.TypeParameterDeclaration)[],\n) =>\n types.map((node) => {\n // @ts-expect-error\n if (ts.isTypeParameterDeclaration(node)) {\n return node;\n }\n\n return createTypeParameterDeclaration({\n // TODO: support other extends values\n constraint: node.extends\n ? typeof node.extends === 'string'\n ? createKeywordTypeNode({ keyword: 'boolean' })\n : node.extends\n : undefined,\n // TODO: support other default types\n defaultType:\n node.default !== undefined\n ? isTsNode(node.default)\n ? (node.default as unknown as ts.TypeNode)\n : ts.factory.createLiteralTypeNode(\n node.default\n ? ts.factory.createTrue()\n : ts.factory.createFalse(),\n )\n : undefined,\n name: node.name,\n });\n });\n\nexport const createTypeOperatorNode = ({\n operator,\n type,\n}: {\n operator: 'keyof' | 'readonly' | 'unique';\n type: ts.TypeNode;\n}) => {\n const operatorKeyword =\n operator === 'keyof'\n ? ts.SyntaxKind.KeyOfKeyword\n : operator === 'readonly'\n ? ts.SyntaxKind.ReadonlyKeyword\n : ts.SyntaxKind.UniqueKeyword;\n return ts.factory.createTypeOperatorNode(operatorKeyword, type);\n};\n\nexport const createTypeParameterDeclaration = ({\n constraint,\n defaultType,\n modifiers,\n name,\n}: {\n constraint?: ts.TypeNode;\n defaultType?: ts.TypeNode;\n modifiers?: Array<ts.Modifier>;\n name: string | ts.Identifier;\n}) =>\n ts.factory.createTypeParameterDeclaration(\n modifiers,\n name,\n constraint,\n defaultType,\n );\n\nexport const createMappedTypeNode = ({\n members,\n nameType,\n questionToken,\n readonlyToken,\n type,\n typeParameter,\n}: {\n members?: ts.NodeArray<ts.TypeElement>;\n nameType?: ts.TypeNode;\n questionToken?: ts.QuestionToken | ts.PlusToken | ts.MinusToken;\n readonlyToken?: ts.ReadonlyKeyword | ts.PlusToken | ts.MinusToken;\n type?: ts.TypeNode;\n typeParameter: ts.TypeParameterDeclaration;\n}) =>\n ts.factory.createMappedTypeNode(\n readonlyToken,\n typeParameter,\n nameType,\n questionToken,\n type,\n members,\n );\n\nexport const createLiteralTypeNode = ({\n literal,\n}: {\n literal: ts.LiteralTypeNode['literal'];\n}) => {\n const node = ts.factory.createLiteralTypeNode(literal);\n return node;\n};\n\n/**\n * Create arrow function type expression.\n */\nexport const createArrowFunction = ({\n async,\n comment,\n multiLine,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n async?: boolean;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: ReadonlyArray<FunctionParameter>;\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[] | ts.Expression;\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createArrowFunction(\n async ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)] : undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n undefined,\n Array.isArray(statements)\n ? createBlock({ multiLine, statements })\n : statements,\n );\n\n addLeadingComments({\n comments: comment,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create anonymous function type expression.\n */\nexport const createAnonymousFunction = ({\n async,\n comment,\n multiLine,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n async?: boolean;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[];\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createFunctionExpression(\n async ? [ts.factory.createModifier(ts.SyntaxKind.AsyncKeyword)] : undefined,\n undefined,\n undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n createBlock({ multiLine, statements }),\n );\n\n addLeadingComments({\n comments: comment,\n node: expression,\n });\n\n return expression;\n};\n\n/**\n * Create Array type expression.\n */\nexport const createArrayLiteralExpression = <T>({\n elements,\n multiLine = false,\n}: {\n /**\n * The array to create.\n */\n elements: T[];\n /**\n * Should the array be multi line?\n *\n * @default false\n */\n multiLine?: boolean;\n}): ts.ArrayLiteralExpression => {\n const expression = ts.factory.createArrayLiteralExpression(\n elements\n .map((value) => (isTsNode(value) ? value : toExpression({ value })))\n .filter(isType<ts.Expression>),\n // multiline if array contains objects\n multiLine ||\n (!Array.isArray(elements[0]) && typeof elements[0] === 'object'),\n );\n return expression;\n};\n\nexport const createAwaitExpression = ({\n expression,\n}: {\n expression: ts.Expression;\n}) => ts.factory.createAwaitExpression(expression);\n\nexport const createFunctionTypeNode = ({\n parameters = [],\n returnType,\n typeParameters,\n}: {\n parameters?: ts.ParameterDeclaration[];\n returnType: ts.TypeNode;\n typeParameters?: ts.TypeParameterDeclaration[];\n}) => {\n const node = ts.factory.createFunctionTypeNode(\n typeParameters,\n parameters,\n returnType,\n );\n return node;\n};\n\nexport type ObjectValue =\n | {\n assertion?: 'any' | ts.TypeNode;\n comments?: Comments;\n spread: string;\n }\n | {\n comments?: Comments;\n isValueAccess?: boolean;\n key: string;\n shorthand?: boolean;\n value: any;\n };\n\ntype ObjectAssignment =\n | ts.PropertyAssignment\n | ts.ShorthandPropertyAssignment\n | ts.SpreadAssignment;\n\n/**\n * Create Object type expression.\n * @param comments - comments to add to each property.\n * @param identifier - keys that should be treated as identifiers.\n * @param multiLine - if the object should be multiline.\n * @param obj - the object to create expression with.\n * @param shorthand - if shorthand syntax should be used.\n * @param unescape - if properties strings should be unescaped.\n * @returns ts.ObjectLiteralExpression\n */\nexport const createObjectType = <\n T extends Record<string, any> | Array<ObjectValue>,\n>({\n comments,\n identifiers = [],\n multiLine = true,\n obj,\n shorthand,\n unescape = false,\n}: {\n comments?: Comments;\n identifiers?: string[];\n multiLine?: boolean;\n obj: T;\n shorthand?: boolean;\n unescape?: boolean;\n}): ts.ObjectLiteralExpression => {\n const properties = Array.isArray(obj)\n ? obj\n .map((value: ObjectValue) => {\n // Check key value equality before possibly modifying it\n let canShorthand = false;\n if ('key' in value) {\n const { key } = value;\n canShorthand = key === value.value;\n const firstDigitAndNonDigits =\n key.match(/^[0-9]/) && key.match(/\\D+/g);\n if (\n (firstDigitAndNonDigits || key.match(/\\W/g) || key === '') &&\n !key.startsWith(\"'\") &&\n !key.endsWith(\"'\")\n ) {\n value.key = `'${key}'`;\n }\n }\n let assignment: ObjectAssignment;\n if ('spread' in value) {\n const nameIdentifier = isTsNode(value.spread)\n ? value.spread\n : createIdentifier({ text: value.spread });\n assignment = ts.factory.createSpreadAssignment(\n value.assertion\n ? createAsExpression({\n expression: nameIdentifier,\n type:\n typeof value.assertion === 'string'\n ? createKeywordTypeNode({ keyword: value.assertion })\n : value.assertion,\n })\n : nameIdentifier,\n );\n } else if (value.shorthand || (shorthand && canShorthand)) {\n assignment = ts.factory.createShorthandPropertyAssignment(\n value.value,\n );\n } else {\n let initializer: ts.Expression | undefined = isTsNode(value.value)\n ? value.value\n : Array.isArray(value.value) &&\n (!value.value.length || typeof value.value[0] === 'object')\n ? createObjectType({\n multiLine,\n obj: value.value,\n shorthand,\n unescape,\n })\n : toExpression({\n identifiers: identifiers.includes(value.key)\n ? Object.keys(value.value)\n : [],\n isValueAccess: value.isValueAccess,\n shorthand,\n unescape,\n value: value.value,\n });\n if (!initializer) {\n return undefined;\n }\n // Create a identifier if the current key is one and it is not an object\n if (\n identifiers.includes(value.key) &&\n !ts.isObjectLiteralExpression(initializer)\n ) {\n initializer = createIdentifier({ text: value.value as string });\n }\n assignment = createPropertyAssignment({\n initializer,\n name: value.key,\n });\n }\n\n addLeadingComments({\n comments: value.comments,\n node: assignment,\n });\n\n return assignment;\n })\n .filter(isType<ObjectAssignment>)\n : Object.entries(obj)\n .map(([key, value]) => {\n // Pass all object properties as identifiers if the whole object is an identifier\n let initializer: ts.Expression | undefined = toExpression({\n identifiers: identifiers.includes(key) ? Object.keys(value) : [],\n shorthand,\n unescape,\n value,\n });\n if (!initializer) {\n return undefined;\n }\n // Create a identifier if the current key is one and it is not an object\n if (\n identifiers.includes(key) &&\n !ts.isObjectLiteralExpression(initializer)\n ) {\n initializer = createIdentifier({ text: value as string });\n }\n // Check key value equality before possibly modifying it\n const canShorthand = key === value;\n if (\n key.match(/^[0-9]/) &&\n key.match(/\\D+/g) &&\n !key.startsWith(\"'\") &&\n !key.endsWith(\"'\")\n ) {\n key = `'${key}'`;\n }\n if (key.match(/\\W/g) && !key.startsWith(\"'\") && !key.endsWith(\"'\")) {\n key = `'${key}'`;\n }\n const assignment =\n shorthand && canShorthand\n ? ts.factory.createShorthandPropertyAssignment(value)\n : createPropertyAssignment({ initializer, name: key });\n\n return assignment;\n })\n .filter(isType<ObjectAssignment>);\n\n const node = ts.factory.createObjectLiteralExpression(\n properties as any[],\n multiLine,\n );\n\n addLeadingComments({\n comments,\n node,\n });\n\n return node;\n};\n\n/**\n * Create enum declaration. Example `export enum T = { X, Y };`\n * @param comments - comments to add to each property.\n * @param leadingComment - leading comment to add to enum.\n * @param name - the name of the enum.\n * @param obj - the object representing the enum.\n * @returns ts.EnumDeclaration\n */\nexport const createEnumDeclaration = <\n T extends Record<string, any> | Array<ObjectValue>,\n>({\n comments: enumMemberComments = {},\n leadingComment: comments,\n name,\n obj,\n}: {\n comments?: Record<string | number, Comments>;\n leadingComment?: Comments;\n name: string;\n obj: T;\n}): ts.EnumDeclaration => {\n const members: Array<ts.EnumMember> = Array.isArray(obj)\n ? obj.map((value) => {\n const enumMember = createEnumMember({\n initializer: toExpression({\n value: value.value,\n }),\n name: value.key,\n });\n\n addLeadingComments({\n comments: value.comments,\n node: enumMember,\n });\n\n return enumMember;\n })\n : // TODO: parser - deprecate object syntax\n Object.entries(obj).map(([key, value]) => {\n const enumMember = ts.factory.createEnumMember(\n key,\n toExpression({\n unescape: true,\n value,\n }),\n );\n\n addLeadingComments({\n comments: enumMemberComments[key],\n node: enumMember,\n });\n\n return enumMember;\n });\n\n const node = ts.factory.createEnumDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n createIdentifier({ text: name }),\n members,\n );\n\n addLeadingComments({\n comments,\n node,\n });\n\n return node;\n};\n\nconst createEnumMember = ({\n initializer,\n name,\n}: {\n initializer?: ts.Expression;\n name: string | ts.PropertyName;\n}) => {\n let key = name;\n if (typeof key === 'string') {\n if (key.startsWith(\"'\") && key.endsWith(\"'\")) {\n key = createStringLiteral({\n isSingleQuote: false,\n text: key,\n });\n } else {\n key = escapeName(key);\n }\n }\n return ts.factory.createEnumMember(key, initializer);\n};\n\n/**\n * Create namespace declaration. Example `export namespace MyNamespace { ... }`\n * @param name - the name of the namespace.\n * @param nodes - the nodes in the namespace.\n * @returns\n */\nexport const createNamespaceDeclaration = ({\n name,\n statements,\n}: {\n name: string;\n statements: Array<ts.Statement>;\n}) =>\n ts.factory.createModuleDeclaration(\n [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],\n createIdentifier({ text: name }),\n ts.factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n );\n\nexport const createIndexedAccessTypeNode = ({\n indexType,\n objectType,\n}: {\n indexType: ts.TypeNode;\n objectType: ts.TypeNode;\n}) => {\n const node = ts.factory.createIndexedAccessTypeNode(objectType, indexType);\n return node;\n};\n\nexport const createStringLiteral = ({\n isSingleQuote,\n text,\n}: {\n isSingleQuote?: boolean;\n text: string;\n}) => {\n if (isSingleQuote === undefined) {\n isSingleQuote = !text.includes(\"'\");\n }\n const node = ts.factory.createStringLiteral(text, isSingleQuote);\n return node;\n};\n\nexport const createConditionalExpression = ({\n condition,\n whenFalse,\n whenTrue,\n}: {\n condition: ts.Expression;\n whenFalse: ts.Expression;\n whenTrue: ts.Expression;\n}) => {\n const expression = ts.factory.createConditionalExpression(\n condition,\n ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n whenTrue,\n ts.factory.createToken(ts.SyntaxKind.ColonToken),\n whenFalse,\n );\n return expression;\n};\n\nexport const createTypeOfExpression = ({ text }: { text: string }) => {\n const expression = ts.factory.createTypeOfExpression(\n createIdentifier({ text }),\n );\n return expression;\n};\n\n/**\n * Create a type alias declaration. Example `export type X = Y;`.\n * @param comment (optional) comments to add\n * @param name the name of the type\n * @param type the type\n * @returns ts.TypeAliasDeclaration\n */\nexport const createTypeAliasDeclaration = ({\n comment,\n exportType,\n name,\n type,\n typeParameters = [],\n}: {\n comment?: Comments;\n exportType?: boolean;\n name: string;\n type: string | ts.TypeNode;\n typeParameters?: FunctionTypeParameter[];\n}): ts.TypeAliasDeclaration => {\n const node = ts.factory.createTypeAliasDeclaration(\n exportType\n ? [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)]\n : undefined,\n createIdentifier({ text: name }),\n toTypeParameters(typeParameters),\n createTypeNode(type),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\nexport const createTypeReferenceNode = ({\n typeArguments,\n typeName,\n}: {\n typeArguments?: ts.TypeNode[];\n typeName: string | ts.EntityName;\n}) => {\n const node = ts.factory.createTypeReferenceNode(typeName, typeArguments);\n return node;\n};\n\nexport const createTypeParenthesizedNode = ({\n type,\n}: {\n type: ts.TypeNode;\n}) => {\n const node = ts.factory.createParenthesizedType(type);\n return node;\n};\n\nexport const createParameterDeclaration = ({\n initializer,\n modifiers,\n name,\n required = true,\n type,\n}: {\n initializer?: ts.Expression;\n modifiers?: ts.ModifierLike[];\n name: string | ts.BindingName;\n required?: boolean;\n type?: ts.TypeNode;\n}) => {\n const node = ts.factory.createParameterDeclaration(\n modifiers,\n undefined,\n name,\n required ? undefined : ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n type,\n initializer,\n );\n return node;\n};\n\nexport const createNewExpression = ({\n argumentsArray,\n expression,\n typeArguments,\n}: {\n argumentsArray?: Array<ts.Expression>;\n expression: ts.Expression;\n typeArguments?: Array<ts.TypeNode>;\n}) => {\n const node = ts.factory.createNewExpression(\n expression,\n typeArguments,\n argumentsArray,\n );\n return node;\n};\n\nexport const createForOfStatement = ({\n awaitModifier,\n expression,\n initializer,\n statement,\n}: {\n // TODO: parser - simplify this to be await?: boolean\n awaitModifier?: ts.AwaitKeyword;\n expression: ts.Expression;\n initializer: ts.ForInitializer;\n statement: ts.Statement;\n}) => {\n const node = ts.factory.createForOfStatement(\n awaitModifier,\n initializer,\n expression,\n statement,\n );\n return node;\n};\n\nexport const createAssignment = ({\n left,\n right,\n}: {\n left: ts.Expression;\n right: ts.Expression;\n}) => ts.factory.createAssignment(left, right);\n\nexport const createBlock = ({\n multiLine = true,\n statements,\n}: {\n multiLine?: boolean;\n statements: Array<ts.Statement>;\n}) => ts.factory.createBlock(statements, multiLine);\n\nexport const createPropertyAssignment = ({\n initializer,\n name,\n}: {\n initializer: ts.Expression;\n name: string | ts.PropertyName;\n}) => ts.factory.createPropertyAssignment(name, initializer);\n\nexport const createRegularExpressionLiteral = ({\n flags = [],\n text,\n}: {\n flags?: ReadonlyArray<'g' | 'i' | 'm' | 's' | 'u' | 'y'>;\n text: string;\n}) => ts.factory.createRegularExpressionLiteral(`/${text}/${flags.join('')}`);\n\nexport const createAsExpression = ({\n expression,\n type,\n}: {\n expression: ts.Expression;\n type: ts.TypeNode;\n}) => ts.factory.createAsExpression(expression, type);\n\nexport const createTemplateLiteralType = ({\n value,\n}: {\n value: ReadonlyArray<string | ts.TypeNode>;\n}) => {\n const spans: Array<ts.TemplateLiteralTypeSpan> = [];\n let spanText = '';\n\n for (const item of value.slice(0).reverse()) {\n if (typeof item === 'string') {\n spanText = `${item}${spanText}`;\n } else {\n const literal = spans.length\n ? ts.factory.createTemplateMiddle(spanText)\n : ts.factory.createTemplateTail(spanText);\n const span = ts.factory.createTemplateLiteralTypeSpan(item, literal);\n spans.push(span);\n spanText = '';\n }\n }\n\n const templateLiteralType = ts.factory.createTemplateLiteralType(\n ts.factory.createTemplateHead(spanText),\n spans.reverse(),\n );\n return templateLiteralType;\n};\n","import ts from 'typescript';\n\nimport { createAsExpression, createTypeReferenceNode } from './types';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n type ImportExportItemObject,\n ots,\n} from './utils';\n\n/**\n * Create export all declaration. Example: `export * from './y'`.\n * @param module - module containing exports\n * @returns ts.ExportDeclaration\n */\nexport const createExportAllDeclaration = ({\n module,\n}: {\n module: string;\n}): ts.ExportDeclaration => {\n const statement = ts.factory.createExportDeclaration(\n undefined,\n false,\n undefined,\n ots.string(module),\n );\n return statement;\n};\n\nexport type ImportExportItem = ImportExportItemObject | string;\n\nexport const createCallExpression = ({\n functionName,\n parameters = [],\n types,\n}: {\n functionName:\n | string\n | ts.PropertyAccessExpression\n | ts.PropertyAccessChain\n | ts.ElementAccessExpression\n | ts.Expression;\n parameters?: Array<string | ts.Expression | undefined>;\n types?: ReadonlyArray<ts.TypeNode>;\n}) => {\n const expression =\n typeof functionName === 'string'\n ? createIdentifier({ text: functionName })\n : functionName;\n const argumentsArray = parameters\n .filter((parameter) => parameter !== undefined)\n .map((parameter) =>\n typeof parameter === 'string'\n ? createIdentifier({ text: parameter })\n : parameter,\n );\n const callExpression = ts.factory.createCallExpression(\n expression,\n types,\n argumentsArray,\n );\n return callExpression;\n};\n\n/**\n * Create a named export declaration. Example: `export { X } from './y'`.\n * @param exports - named imports to export\n * @param module - module containing exports\n * @returns ts.ExportDeclaration\n */\nexport const createNamedExportDeclarations = ({\n exports,\n module,\n}: {\n exports: Array<ImportExportItem> | ImportExportItem;\n module: string;\n}): ts.ExportDeclaration => {\n const exportedTypes = Array.isArray(exports) ? exports : [exports];\n const hasNonTypeExport = exportedTypes.some(\n (item) => typeof item !== 'object' || !item.asType,\n );\n const elements = exportedTypes.map((name) => {\n const item = typeof name === 'string' ? { name } : name;\n return ots.export({\n alias: item.alias,\n asType: hasNonTypeExport && item.asType,\n name: item.name,\n });\n });\n const exportClause = ts.factory.createNamedExports(elements);\n const moduleSpecifier = ots.string(module);\n const statement = ts.factory.createExportDeclaration(\n undefined,\n !hasNonTypeExport,\n exportClause,\n moduleSpecifier,\n );\n return statement;\n};\n\n/**\n * Create a const variable. Optionally, it can use const assertion or export\n * statement. Example: `export x = {} as const`.\n * @param assertion use const assertion?\n * @param exportConst export created variable?\n * @param expression expression for the variable.\n * @param name name of the variable.\n * @returns ts.VariableStatement\n */\nexport const createConstVariable = ({\n assertion,\n comment,\n destructure,\n exportConst,\n expression,\n name,\n typeName,\n}: {\n assertion?: 'const' | ts.TypeNode;\n comment?: Comments;\n destructure?: boolean;\n exportConst?: boolean;\n expression: ts.Expression;\n name: string;\n // TODO: support a more intuitive definition of generics for example\n typeName?: string | ts.IndexedAccessTypeNode | ts.TypeNode;\n}): ts.VariableStatement => {\n const initializer = assertion\n ? createAsExpression({\n expression,\n type:\n typeof assertion === 'string'\n ? createTypeReferenceNode({ typeName: assertion })\n : assertion,\n })\n : expression;\n const nameIdentifier = createIdentifier({ text: name });\n const declaration = ts.factory.createVariableDeclaration(\n destructure\n ? ts.factory.createObjectBindingPattern([\n ts.factory.createBindingElement(\n undefined,\n undefined,\n nameIdentifier,\n undefined,\n ),\n ])\n : nameIdentifier,\n undefined,\n typeName\n ? typeof typeName === 'string'\n ? createTypeReferenceNode({ typeName })\n : typeName\n : undefined,\n initializer,\n );\n const statement = ts.factory.createVariableStatement(\n exportConst\n ? [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)]\n : undefined,\n ts.factory.createVariableDeclarationList([declaration], ts.NodeFlags.Const),\n );\n\n addLeadingComments({\n comments: comment,\n node: statement,\n });\n\n return statement;\n};\n\n/**\n * Create a named import declaration. Example: `import { X } from './y'`.\n * @param imports - named exports to import\n * @param module - module containing imports\n * @returns ts.ImportDeclaration\n */\nexport const createNamedImportDeclarations = ({\n imports,\n module,\n}: {\n imports: Array<ImportExportItem> | ImportExportItem;\n module: string;\n}): ts.ImportDeclaration => {\n const importedTypes = Array.isArray(imports) ? imports : [imports];\n const hasNonTypeImport = importedTypes.some(\n (item) => typeof item !== 'object' || !item.asType,\n );\n const elements = importedTypes.map((name) => {\n const item = typeof name === 'string' ? { name } : name;\n return ots.import({\n alias: item.alias,\n asType: hasNonTypeImport && item.asType,\n name: item.name,\n });\n });\n const namedBindings = ts.factory.createNamedImports(elements);\n const importClause = ts.factory.createImportClause(\n !hasNonTypeImport,\n undefined,\n namedBindings,\n );\n const moduleSpecifier = ots.string(module);\n const statement = ts.factory.createImportDeclaration(\n undefined,\n importClause,\n moduleSpecifier,\n );\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createCallExpression } from './module';\nimport {\n type AccessLevel,\n createBlock,\n createTypeNode,\n type FunctionParameter,\n type FunctionTypeParameter,\n toAccessLevelModifiers,\n toExpression,\n toParameterDeclarations,\n toTypeParameters,\n} from './types';\nimport type { Comments } from './utils';\nimport { addLeadingComments, createIdentifier, isType } from './utils';\n\n/**\n * Create a class constructor declaration.\n * @param accessLevel - the access level of the constructor.\n * @param comment - comment to add to function.\n * @param multiLine - if it should be multi line.\n * @param parameters - parameters for the constructor.\n * @param statements - statements to put in the constructor body.\n * @returns ts.ConstructorDeclaration\n */\nexport const createConstructorDeclaration = ({\n accessLevel,\n comment,\n multiLine = true,\n parameters = [],\n statements = [],\n}: {\n accessLevel?: AccessLevel;\n comment?: Comments;\n multiLine?: boolean;\n parameters?: FunctionParameter[];\n statements?: ts.Statement[];\n}) => {\n const node = ts.factory.createConstructorDeclaration(\n toAccessLevelModifiers(accessLevel),\n toParameterDeclarations(parameters),\n createBlock({ multiLine, statements }),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\n/**\n * Create a class method declaration.\n * @param accessLevel - the access level of the method.\n * @param comment - comment to add to function.\n * @param isStatic - if the function is static.\n * @param multiLine - if it should be multi line.\n * @param name - name of the method.\n * @param parameters - parameters for the method.\n * @param returnType - the return type of the method.\n * @param statements - statements to put in the constructor body.\n * @returns ts.MethodDeclaration\n */\nexport const createMethodDeclaration = ({\n accessLevel,\n comment,\n isStatic = false,\n multiLine = true,\n name,\n parameters = [],\n returnType,\n statements = [],\n types = [],\n}: {\n accessLevel?: AccessLevel;\n comment?: Comments;\n isStatic?: boolean;\n multiLine?: boolean;\n name: string;\n parameters?: ReadonlyArray<FunctionParameter>;\n returnType?: string | ts.TypeNode;\n statements?: ts.Statement[];\n types?: FunctionTypeParameter[];\n}) => {\n let modifiers = toAccessLevelModifiers(accessLevel);\n\n if (isStatic) {\n modifiers = [\n ...modifiers,\n ts.factory.createModifier(ts.SyntaxKind.StaticKeyword),\n ];\n }\n\n const node = ts.factory.createMethodDeclaration(\n modifiers,\n undefined,\n createIdentifier({ text: name }),\n undefined,\n types ? toTypeParameters(types) : undefined,\n toParameterDeclarations(parameters),\n returnType ? createTypeNode(returnType) : undefined,\n createBlock({ multiLine, statements }),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\ntype ClassDecorator = {\n args: any[];\n name: string;\n};\n\n/**\n * Create a class declaration.\n * @param decorator - the class decorator\n * @param members - elements in the class.\n * @param name - name of the class.\n * @returns ts.ClassDeclaration\n */\nexport const createClassDeclaration = ({\n decorator,\n members = [],\n name,\n}: {\n decorator?: ClassDecorator;\n members?: ts.ClassElement[];\n name: string;\n}) => {\n let modifiers: ts.ModifierLike[] = [\n ts.factory.createModifier(ts.SyntaxKind.ExportKeyword),\n ];\n\n if (decorator) {\n modifiers = [\n ts.factory.createDecorator(\n createCallExpression({\n functionName: decorator.name,\n parameters: decorator.args\n .map((arg) => toExpression({ value: arg }))\n .filter(isType<ts.Expression>),\n }),\n ),\n ...modifiers,\n ];\n }\n\n // Add newline between each class member.\n let m: ts.ClassElement[] = [];\n members.forEach((member) => {\n // @ts-expect-error\n m = [...m, member, createIdentifier({ text: '\\n' })];\n });\n\n return ts.factory.createClassDeclaration(\n modifiers,\n createIdentifier({ text: name }),\n [],\n [],\n m,\n );\n};\n","import ts from 'typescript';\n\nexport const expressionToStatement = ({\n expression,\n}: {\n expression: ts.Expression;\n}) => {\n const statement = ts.factory.createExpressionStatement(expression);\n return statement;\n};\n","import ts from 'typescript';\n\nimport { createCallExpression } from './module';\nimport { createTypeReferenceNode } from './types';\nimport { createIdentifier, isType } from './utils';\n\nexport const createReturnStatement = ({\n expression,\n}: {\n expression?: ts.Expression;\n}) => ts.factory.createReturnStatement(expression);\n\n/**\n * Create a return function call statement.\n *\n * @example `return fn<string>(params)`\n *\n * @returns ts.ReturnStatement\n */\nexport const createReturnFunctionCall = ({\n args = [],\n name,\n types = [],\n}: {\n /**\n * Arguments to pass to the function.\n */\n args: any[];\n /**\n * Name of the function to call or expression.\n */\n name: string | ts.Expression;\n /**\n * List of function types.\n */\n types?: string[];\n}) => {\n const typeArguments = types.map((type) =>\n createTypeReferenceNode({ typeName: type }),\n );\n const argumentsArray = args\n .map((arg) =>\n ts.isExpression(arg) ? arg : createIdentifier({ text: arg }),\n )\n .filter(isType<ts.Identifier | ts.Expression>);\n const expression = createCallExpression({\n functionName: name,\n parameters: argumentsArray,\n types: typeArguments,\n });\n const statement = createReturnStatement({ expression });\n return statement;\n};\n\nexport const createReturnVariable = ({\n expression,\n}: {\n expression: string | ts.Expression;\n}) => {\n const statement = createReturnStatement({\n expression:\n typeof expression === 'string'\n ? createIdentifier({ text: expression })\n : expression,\n });\n return statement;\n};\n","import ts from 'typescript';\n\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport { expressionToStatement } from './convert';\nimport { createCallExpression } from './module';\nimport {\n createArrowFunction,\n createBlock,\n createNewExpression,\n createPropertyAccessChain,\n createPropertyAccessExpression,\n} from './types';\nimport { createIdentifier } from './utils';\n\nexport const createSafeAccessExpression = (path: string[]) =>\n path.slice(1).reduce<ts.Expression>(\n (expression, element) => {\n validTypescriptIdentifierRegExp.lastIndex = 0;\n if (validTypescriptIdentifierRegExp.test(element)) {\n return createPropertyAccessChain({\n expression,\n name: element,\n });\n }\n\n return ts.factory.createElementAccessChain(\n expression,\n ts.factory.createToken(ts.SyntaxKind.QuestionDotToken),\n createIdentifier({ text: element }),\n );\n },\n createIdentifier({ text: path[0]! }),\n );\n\nexport const createAccessExpression = (path: string[]) =>\n path.slice(1).reduce<ts.Expression>(\n (expression, element) =>\n createPropertyAccessExpression({\n expression,\n name: element,\n }),\n createIdentifier({ text: path[0]! }),\n );\n\n/**\n * Handles an array of access expressions instead of nesting them (default TypeScript syntax)\n */\nexport const createPropertyAccessExpressions = ({\n expressions,\n}: {\n expressions: Array<string | ts.Expression | ts.MemberName>;\n}): ts.PropertyAccessExpression => {\n const expression = expressions.reduce((expression, name) => {\n const node = createPropertyAccessExpression({\n expression,\n // @ts-expect-error\n name,\n });\n return node;\n });\n return expression as ts.PropertyAccessExpression;\n};\n\nexport const createBinaryExpression = ({\n left,\n operator = '=',\n right,\n}: {\n left: ts.Expression;\n operator?: '=' | '===' | 'in' | '??';\n right: ts.Expression | string;\n}) => {\n const expression = ts.factory.createBinaryExpression(\n left,\n // TODO: add support for other tokens\n operator === '='\n ? ts.SyntaxKind.EqualsToken\n : operator === '==='\n ? ts.SyntaxKind.EqualsEqualsEqualsToken\n : operator === '??'\n ? ts.SyntaxKind.QuestionQuestionToken\n : ts.SyntaxKind.InKeyword,\n typeof right === 'string' ? createIdentifier({ text: right }) : right,\n );\n return expression;\n};\n\nexport const createIfStatement = ({\n elseStatement,\n expression,\n thenStatement,\n}: {\n elseStatement?: ts.Statement;\n expression: ts.Expression;\n thenStatement: ts.Statement;\n}) => ts.factory.createIfStatement(expression, thenStatement, elseStatement);\n\nexport const createDateTransformMutation = ({\n path,\n}: {\n path: string[];\n}): ts.Statement => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const thenStatement = createBlock({\n statements: [\n expressionToStatement({\n expression: createBinaryExpression({\n left: accessExpression,\n right: createNewExpression({\n argumentsArray: [accessExpression],\n expression: createIdentifier({ text: 'Date' }),\n }),\n }),\n }),\n ],\n });\n\n const statement = createIfStatement({\n expression: safeAccessExpression,\n thenStatement,\n });\n\n return statement;\n};\n\nexport const createFunctionTransformMutation = ({\n path,\n transformerName,\n}: {\n path: string[];\n transformerName: string;\n}) => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const thenStatement = createBlock({\n statements: [\n expressionToStatement({\n expression: createCallExpression({\n functionName: transformerName,\n parameters: [accessExpression],\n }),\n }),\n ],\n });\n\n const statement = [\n createIfStatement({\n expression: safeAccessExpression,\n thenStatement,\n }),\n ];\n\n return statement;\n};\n\nexport const createArrayTransformMutation = ({\n path,\n transformerName,\n}: {\n path: string[];\n transformerName: string;\n}): ts.Statement => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const statement = createIfStatement({\n expression: createCallExpression({\n functionName: createPropertyAccessExpression({\n expression: 'Array',\n name: 'isArray',\n }),\n parameters: [safeAccessExpression],\n }),\n thenStatement: createBlock({\n statements: [\n expressionToStatement({\n expression: ts.factory.createCallChain(\n createPropertyAccessExpression({\n expression: accessExpression,\n name: 'forEach',\n }),\n undefined,\n undefined,\n [createIdentifier({ text: transformerName })],\n ),\n }),\n ],\n }),\n });\n\n return statement;\n};\n\nexport const createDateTransformerExpression = ({\n parameterName,\n}: {\n parameterName: string;\n}) => {\n const expression = createIdentifier({ text: 'Date' });\n const newExpression = createNewExpression({\n argumentsArray: [createIdentifier({ text: parameterName })],\n expression,\n });\n return newExpression;\n};\n\nexport const createArrayMapTransform = ({\n path,\n transformExpression,\n}: {\n path: string[];\n transformExpression: ts.Expression;\n}) => {\n const safeAccessExpression = createSafeAccessExpression(path);\n const accessExpression = createAccessExpression(path);\n\n const statement = createIfStatement({\n expression: createCallExpression({\n functionName: createPropertyAccessExpression({\n expression: 'Array',\n name: 'isArray',\n }),\n parameters: [safeAccessExpression],\n }),\n thenStatement: createBlock({\n statements: [\n expressionToStatement({\n expression: createBinaryExpression({\n left: accessExpression,\n right: ts.factory.createCallChain(\n createPropertyAccessExpression({\n expression: accessExpression,\n name: 'map',\n }),\n undefined,\n undefined,\n [\n createArrowFunction({\n parameters: [\n {\n name: 'item',\n },\n ],\n statements: transformExpression,\n }),\n ],\n ),\n }),\n }),\n ],\n }),\n });\n\n return statement;\n};\n","import ts from 'typescript';\n\nimport { validTypescriptIdentifierRegExp } from '../utils/regexp';\nimport {\n createKeywordTypeNode,\n createParameterDeclaration,\n createStringLiteral,\n createTypeNode,\n createTypeReferenceNode,\n} from './types';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n tsNodeToString,\n} from './utils';\n\nconst nullNode = createTypeReferenceNode({ typeName: 'null' });\n\n// Property of a interface type node.\nexport type Property = {\n comment?: Comments;\n isReadOnly?: boolean;\n isRequired?: boolean;\n name: string | ts.PropertyName;\n type: any | ts.TypeNode;\n};\n\n/**\n * Returns a union of provided node with null if marked as nullable,\n * otherwise returns the provided node unmodified.\n */\nconst maybeNullable = ({\n isNullable,\n node,\n}: {\n isNullable?: boolean;\n node: ts.TypeNode;\n}) => {\n if (!isNullable) {\n return node;\n }\n return ts.factory.createUnionTypeNode([node, nullNode]);\n};\n\n/**\n * Create a interface type node. Example `{ readonly x: string, y?: number }`\n * @param properties - the properties of the interface.\n * @param isNullable - if the whole interface can be nullable\n * @returns ts.TypeLiteralNode | ts.TypeUnionNode\n */\nexport const createTypeInterfaceNode = ({\n indexProperty,\n isNullable,\n properties,\n useLegacyResolution,\n}: {\n /**\n * Adds an index signature if defined.\n * @example\n * ```ts\n * type IndexProperty = {\n * [key: string]: string\n * }\n * ```\n */\n indexProperty?: Property;\n isNullable?: boolean;\n properties: Property[];\n useLegacyResolution: boolean;\n}) => {\n const propertyTypes: Array<ts.TypeNode> = [];\n\n const members: Array<ts.TypeElement> = properties.map((property) => {\n const modifiers: readonly ts.Modifier[] | undefined = property.isReadOnly\n ? [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)]\n : undefined;\n\n const questionToken: ts.QuestionToken | undefined =\n property.isRequired !== false\n ? undefined\n : ts.factory.createToken(ts.SyntaxKind.QuestionToken);\n\n const type: ts.TypeNode | undefined = createTypeNode(property.type);\n propertyTypes.push(type);\n\n const signature = ts.factory.createPropertySignature(\n modifiers,\n useLegacyResolution ||\n (typeof property.name === 'string' &&\n property.name.match(validTypescriptIdentifierRegExp)) ||\n (typeof property.name !== 'string' && ts.isPropertyName(property.name))\n ? property.name\n : createStringLiteral({ text: property.name }),\n questionToken,\n type,\n );\n\n addLeadingComments({\n comments: property.comment,\n node: signature,\n });\n\n return signature;\n });\n\n if (indexProperty) {\n const modifiers: readonly ts.Modifier[] | undefined =\n indexProperty.isReadOnly\n ? [ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword)]\n : undefined;\n const indexSignature = ts.factory.createIndexSignature(\n modifiers,\n [\n createParameterDeclaration({\n name: createIdentifier({ text: String(indexProperty.name) }),\n type: createKeywordTypeNode({ keyword: 'string' }),\n }),\n ],\n createTypeNode(indexProperty.type),\n );\n members.push(indexSignature);\n }\n\n const node = ts.factory.createTypeLiteralNode(members);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type union node. Example `string | number | boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.UnionTypeNode\n */\nexport const createTypeUnionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createUnionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type intersection node. Example `string & number & boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.IntersectionTypeNode | ts.UnionTypeNode\n */\nexport const createTypeIntersectionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createIntersectionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type tuple node. Example `string, number, boolean`\n * @param isNullable if the whole type can be null\n * @param types the types in the union\n * @returns ts.UnionTypeNode\n */\nexport const createTypeTupleNode = ({\n isNullable = false,\n types,\n}: {\n isNullable?: boolean;\n types: Array<any | ts.TypeNode>;\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createTupleTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type record node. Example `{ [key: string]: string }`\n * @param keys - key types.\n * @param values - value types.\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeRecordNode = (\n keys: (any | ts.TypeNode)[],\n values: (any | ts.TypeNode)[],\n isNullable: boolean = false,\n useLegacyResolution: boolean = true,\n) => {\n const keyNode = createTypeUnionNode({\n types: keys,\n });\n const valueNode = createTypeUnionNode({\n types: values,\n });\n // NOTE: We use the syntax `{ [key: string]: string }` because using a Record causes\n // invalid types with circular dependencies. This is functionally the same.\n // Ref: https://github.com/hey-api/openapi-ts/issues/370\n const node = createTypeInterfaceNode({\n properties: [\n {\n name: `[key: ${tsNodeToString({ node: keyNode, unescape: true })}]`,\n type: valueNode,\n },\n ],\n useLegacyResolution,\n });\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type array node. Example `Array<string | number>`\n * @param types - the types\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeArrayNode = (\n types: (any | ts.TypeNode)[] | ts.TypeNode | string,\n isNullable: boolean = false,\n) => {\n const node = createTypeReferenceNode({\n typeArguments: [\n // @ts-expect-error\n Array.isArray(types) ? createTypeUnionNode({ types }) : types,\n ],\n typeName: 'Array',\n });\n return maybeNullable({ isNullable, node });\n};\n","import * as classes from './classes';\nimport * as convert from './convert';\nimport * as module from './module';\nimport * as _return from './return';\nimport * as transform from './transform';\nimport * as typedef from './typedef';\nimport * as types from './types';\nimport * as utils from './utils';\n\nexport type { Property } from './typedef';\nexport type { FunctionParameter } from './types';\nexport type { Comments } from './utils';\n\nexport const compiler = {\n anonymousFunction: types.createAnonymousFunction,\n arrayLiteralExpression: types.createArrayLiteralExpression,\n arrowFunction: types.createArrowFunction,\n asExpression: types.createAsExpression,\n assignment: types.createAssignment,\n awaitExpression: types.createAwaitExpression,\n binaryExpression: transform.createBinaryExpression,\n block: types.createBlock,\n callExpression: module.createCallExpression,\n classDeclaration: classes.createClassDeclaration,\n conditionalExpression: types.createConditionalExpression,\n constVariable: module.createConstVariable,\n constructorDeclaration: classes.createConstructorDeclaration,\n enumDeclaration: types.createEnumDeclaration,\n exportAllDeclaration: module.createExportAllDeclaration,\n exportNamedDeclaration: module.createNamedExportDeclarations,\n expressionToStatement: convert.expressionToStatement,\n forOfStatement: types.createForOfStatement,\n functionTypeNode: types.createFunctionTypeNode,\n identifier: utils.createIdentifier,\n ifStatement: transform.createIfStatement,\n indexedAccessTypeNode: types.createIndexedAccessTypeNode,\n isTsNode: utils.isTsNode,\n keywordTypeNode: types.createKeywordTypeNode,\n literalTypeNode: types.createLiteralTypeNode,\n mappedTypeNode: types.createMappedTypeNode,\n methodDeclaration: classes.createMethodDeclaration,\n namedImportDeclarations: module.createNamedImportDeclarations,\n namespaceDeclaration: types.createNamespaceDeclaration,\n newExpression: types.createNewExpression,\n nodeToString: utils.tsNodeToString,\n null: types.createNull,\n objectExpression: types.createObjectType,\n ots: utils.ots,\n parameterDeclaration: types.createParameterDeclaration,\n propertyAccessExpression: types.createPropertyAccessExpression,\n propertyAccessExpressions: transform.createPropertyAccessExpressions,\n propertyAssignment: types.createPropertyAssignment,\n regularExpressionLiteral: types.createRegularExpressionLiteral,\n returnFunctionCall: _return.createReturnFunctionCall,\n returnStatement: _return.createReturnStatement,\n returnVariable: _return.createReturnVariable,\n safeAccessExpression: transform.createSafeAccessExpression,\n stringLiteral: types.createStringLiteral,\n stringToTsNodes: utils.stringToTsNodes,\n templateLiteralType: types.createTemplateLiteralType,\n transformArrayMap: transform.createArrayMapTransform,\n transformArrayMutation: transform.createArrayTransformMutation,\n transformDateMutation: transform.createDateTransformMutation,\n transformFunctionMutation: transform.createFunctionTransformMutation,\n transformNewDate: transform.createDateTransformerExpression,\n typeAliasDeclaration: types.createTypeAliasDeclaration,\n typeArrayNode: typedef.createTypeArrayNode,\n typeInterfaceNode: typedef.createTypeInterfaceNode,\n typeIntersectionNode: typedef.createTypeIntersectionNode,\n typeNode: types.createTypeNode,\n typeOfExpression: types.createTypeOfExpression,\n typeOperatorNode: types.createTypeOperatorNode,\n typeParameterDeclaration: types.createTypeParameterDeclaration,\n typeParenthesizedNode: types.createTypeParenthesizedNode,\n typeRecordNode: typedef.createTypeRecordNode,\n typeReferenceNode: types.createTypeReferenceNode,\n typeTupleNode: typedef.createTypeTupleNode,\n typeUnionNode: typedef.createTypeUnionNode,\n valueToExpression: types.toExpression,\n};\n","import {\n illegalStartCharactersRegExp,\n reservedBrowserGlobalsRegExp,\n reservedJavaScriptGlobalsRegExp,\n reservedJavaScriptKeywordsRegExp,\n reservedNodeGlobalsRegExp,\n reservedTypeScriptKeywordsRegExp,\n} from '../../../utils/regexp';\n\nconst regexps = [\n reservedJavaScriptKeywordsRegExp,\n reservedTypeScriptKeywordsRegExp,\n reservedJavaScriptGlobalsRegExp,\n reservedNodeGlobalsRegExp,\n reservedBrowserGlobalsRegExp,\n];\n\nexport const ensureValidIdentifier = (name: string): string => {\n let identifier = name.replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_');\n\n illegalStartCharactersRegExp.lastIndex = 0;\n if (illegalStartCharactersRegExp.test(identifier)) {\n return `_${identifier}`;\n }\n\n for (const regexp of regexps) {\n if (identifier.startsWith('_')) {\n return identifier;\n }\n\n identifier = identifier.replace(regexp, '_$1');\n }\n\n return identifier;\n};\n","import type { StringCase } from '../types/config';\n\nconst uppercaseRegExp = /[\\p{Lu}]/u;\nconst lowercaseRegExp = /[\\p{Ll}]/u;\nconst identifierRegExp = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst separatorsRegExp = /[_.\\- `\\\\[\\]{}\\\\/]+/;\n\nconst leadingSeparatorsRegExp = new RegExp(`^${separatorsRegExp.source}`);\nconst separatorsAndIdentifierRegExp = new RegExp(\n `${separatorsRegExp.source}${identifierRegExp.source}`,\n 'gu',\n);\nconst numbersAndIdentifierRegExp = new RegExp(\n `\\\\d+${identifierRegExp.source}`,\n 'gu',\n);\n\nconst preserveCase = ({\n case: _case,\n string,\n}: {\n readonly case: StringCase;\n string: string;\n}) => {\n let isLastCharLower = false;\n let isLastCharUpper = false;\n let isLastLastCharUpper = false;\n let isLastLastCharPreserved = false;\n\n const separator =\n _case === 'snake_case' || _case === 'SCREAMING_SNAKE_CASE' ? '_' : '-';\n\n for (let index = 0; index < string.length; index++) {\n const character = string[index]!;\n isLastLastCharPreserved =\n index > 2 ? string[index - 3] === separator : true;\n\n let nextIndex = index + 1;\n let nextCharacter = string[nextIndex];\n separatorsRegExp.lastIndex = 0;\n while (nextCharacter && separatorsRegExp.test(nextCharacter)) {\n nextIndex += 1;\n nextCharacter = string[nextIndex];\n }\n const isSeparatorBeforeNextCharacter = nextIndex !== index + 1;\n\n lowercaseRegExp.lastIndex = 0;\n uppercaseRegExp.lastIndex = 0;\n if (\n uppercaseRegExp.test(character) &&\n (isLastCharLower ||\n (nextCharacter &&\n !isSeparatorBeforeNextCharacter &&\n nextCharacter !== 's' &&\n lowercaseRegExp.test(nextCharacter)))\n ) {\n // insert separator behind character\n string = `${string.slice(0, index)}${separator}${string.slice(index)}`;\n index++;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharLower = false;\n isLastCharUpper = true;\n } else if (\n isLastCharUpper &&\n isLastLastCharUpper &&\n lowercaseRegExp.test(character) &&\n !isLastLastCharPreserved &&\n // naive detection of plurals\n !(\n character === 's' &&\n (!nextCharacter || nextCharacter.toLocaleLowerCase() !== nextCharacter)\n )\n ) {\n // insert separator 2 characters behind\n string = `${string.slice(0, index - 1)}${separator}${string.slice(index - 1)}`;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharLower = true;\n isLastCharUpper = false;\n } else {\n const characterLower = character.toLocaleLowerCase();\n const characterUpper = character.toLocaleUpperCase();\n isLastLastCharUpper = isLastCharUpper;\n isLastCharLower =\n characterLower === character && characterUpper !== character;\n isLastCharUpper =\n characterUpper === character && characterLower !== character;\n }\n }\n\n return string;\n};\n\nexport const stringCase = ({\n case: _case,\n stripLeadingSeparators = true,\n value,\n}: {\n readonly case: StringCase | undefined;\n /**\n * If leading separators have a semantic meaning, we might not want to\n * remove them.\n */\n stripLeadingSeparators?: boolean;\n value: string;\n}): string => {\n let result = value.trim();\n\n if (!result.length) {\n return '';\n }\n\n if (!_case || _case === 'preserve') {\n return result;\n }\n\n if (result.length === 1) {\n separatorsRegExp.lastIndex = 0;\n if (separatorsRegExp.test(result)) {\n return '';\n }\n\n return _case === 'PascalCase' || _case === 'SCREAMING_SNAKE_CASE'\n ? result.toLocaleUpperCase()\n : result.toLocaleLowerCase();\n }\n\n const hasUpperCase = result !== result.toLocaleLowerCase();\n\n if (hasUpperCase) {\n result = preserveCase({ case: _case, string: result });\n }\n\n if (stripLeadingSeparators || result[0] !== value[0]) {\n result = result.replace(leadingSeparatorsRegExp, '');\n }\n\n result =\n _case === 'SCREAMING_SNAKE_CASE'\n ? result.toLocaleUpperCase()\n : result.toLocaleLowerCase();\n\n if (_case === 'PascalCase') {\n result = `${result.charAt(0).toLocaleUpperCase()}${result.slice(1)}`;\n }\n\n if (_case === 'snake_case' || _case === 'SCREAMING_SNAKE_CASE') {\n result = result.replaceAll(\n separatorsAndIdentifierRegExp,\n (match, identifier, offset) => {\n if (offset === 0 && !stripLeadingSeparators) {\n return match;\n }\n return `_${identifier}`;\n },\n );\n\n if (result[result.length - 1] === '_') {\n // strip trailing underscore\n result = result.slice(0, result.length - 1);\n }\n } else {\n separatorsAndIdentifierRegExp.lastIndex = 0;\n numbersAndIdentifierRegExp.lastIndex = 0;\n\n result = result.replaceAll(\n numbersAndIdentifierRegExp,\n (match, _, offset) => {\n if (['_', '-', '.'].includes(result.charAt(offset + match.length))) {\n return match;\n }\n\n return match.toLocaleUpperCase();\n },\n );\n\n result = result.replaceAll(\n separatorsAndIdentifierRegExp,\n (match, identifier, offset) => {\n if (\n offset === 0 &&\n !stripLeadingSeparators &&\n match[0] &&\n value.startsWith(match[0])\n ) {\n return match;\n }\n return identifier.toLocaleUpperCase();\n },\n );\n }\n\n return result;\n};\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport ts from 'typescript';\n\nimport { compiler } from '../compiler';\nimport { type ImportExportItemObject, tsNodeToString } from '../compiler/utils';\nimport type { IR } from '../ir/types';\nimport { ensureValidIdentifier } from '../openApi/shared/utils/identifier';\nimport type { StringCase } from '../types/config';\nimport { stringCase } from '../utils/stringCase';\nimport { ensureDirSync } from './utils';\n\nexport interface Identifier {\n /**\n * Did this function add a new property to the file's `identifiers` map?\n */\n created: boolean;\n /**\n * The resolved identifier name. False means the identifier has been blacklisted.\n */\n name: string | false;\n}\n\ntype Namespace = Record<\n string,\n Pick<Identifier, 'name'> & {\n /**\n * Ref to the type in OpenAPI specification.\n */\n $ref: string;\n }\n>;\n\ninterface Namespaces {\n /**\n * Type namespace. Types, interfaces, and type aliases exist here.\n * @example\n * ```ts\n * export type Foo = string;\n * ```\n */\n type: Namespace;\n /**\n * Value namespace. Variables, functions, classes, and constants exist here.\n * @example\n * ```js\n * export const foo = '';\n * ```\n */\n value: Namespace;\n}\n\nexport type FileImportResult = Pick<ImportExportItemObject, 'asType' | 'name'>;\n\nexport class TypeScriptFile {\n /**\n * Should the exports from this file be re-exported in the index barrel file?\n */\n private _exportFromIndex: boolean;\n private _headers: Array<string> = [];\n private _id: string;\n private _identifierCase: StringCase | undefined;\n private _imports = new Map<string, Map<string, ImportExportItemObject>>();\n private _items: Array<ts.Node | string> = [];\n private _name: string;\n private _path: string;\n\n public namespaces: Namespaces = {\n type: {},\n value: {},\n };\n /**\n * Path relative to the client output root.\n */\n // TODO: parser - add relative path property for quick access, currently\n // everything is resolved into an absolute path with cwd\n // public relativePath: string;\n\n public constructor({\n dir,\n exportFromIndex = false,\n header = true,\n id,\n identifierCase,\n name,\n }: {\n dir: string;\n /**\n * Should the exports from this file be re-exported in the index barrel file?\n */\n exportFromIndex?: boolean;\n header?: boolean;\n /**\n * Unique file ID. Used to generate correct relative paths to the file.\n * This should be refactored later as it's basically the file name unless\n * nested inside another folder.\n */\n id: string;\n identifierCase?: StringCase;\n name: string;\n }) {\n this._exportFromIndex = exportFromIndex;\n this._id = id;\n this._identifierCase = identifierCase;\n this._name = this._setName(name);\n this._path = path.resolve(dir, this._name);\n\n if (header) {\n this._headers.push(\n '// This file is auto-generated by @hey-api/openapi-ts',\n );\n }\n }\n\n public add(...nodes: Array<ts.Node | string>) {\n this._items = this._items.concat(nodes);\n }\n\n /**\n * Prevents a specific identifier from being created. This is useful for\n * transformers where we know a certain transformer won't be needed, and\n * we want to avoid attempting to create since we know it won't happen.\n */\n public blockIdentifier({\n $ref,\n namespace,\n }: Pick<EnsureUniqueIdentifierData, '$ref'> & {\n namespace: keyof Namespaces;\n }): Identifier {\n const refValue = this.namespaces[namespace][$ref];\n if (!refValue) {\n throw new Error(\n `Identifier for $ref ${$ref} in namespace ${namespace} not found`,\n );\n }\n\n refValue.name = false;\n\n return {\n created: false,\n name: refValue.name,\n };\n }\n\n public get exportFromIndex(): boolean {\n return this._exportFromIndex;\n }\n\n public get id(): string {\n return this._id;\n }\n\n public identifier({\n namespace,\n ...args\n }: Omit<EnsureUniqueIdentifierData, 'case' | 'namespace'> & {\n namespace: keyof Namespaces;\n }): Identifier {\n return ensureUniqueIdentifier({\n case: this._identifierCase,\n namespace: this.namespaces[namespace],\n ...args,\n });\n }\n\n /**\n * Adds an import to the provided module. Handles duplication, returns added\n * import. Returns the imported name. If we import an aliased export, `name`\n * will be equal to the specified `alias`.\n */\n public import({\n module,\n ...importedItem\n }: ImportExportItemObject & {\n module: string;\n }): FileImportResult {\n let moduleMap = this._imports.get(module);\n\n if (!moduleMap) {\n moduleMap = new Map<string, ImportExportItemObject>();\n this._imports.set(module, moduleMap);\n }\n\n const match = moduleMap.get(importedItem.name);\n if (match) {\n return {\n ...match,\n name: match.alias || match.name,\n };\n }\n\n moduleMap.set(importedItem.name, importedItem);\n return {\n ...importedItem,\n name: importedItem.alias || importedItem.name,\n };\n }\n\n public isEmpty() {\n return !this._items.length;\n }\n\n public nameWithoutExtension() {\n const { name } = splitNameAndExtension(this._name);\n return name;\n }\n\n public relativePathToFile({\n context,\n id,\n }: {\n context: IR.Context;\n id: string;\n }): string {\n let filePath = '';\n\n // relative file path\n if (id.startsWith('.')) {\n let configFileParts: Array<string> = [];\n // if providing a custom configuration file, relative paths must resolve\n // relative to the configuration file.\n if (context.config.configFile) {\n const cfgParts = context.config.configFile.split('/');\n configFileParts = cfgParts.slice(0, cfgParts.length - 1);\n }\n filePath = path.resolve(process.cwd(), ...configFileParts, id);\n } else {\n const file = context.file({ id });\n if (!file) {\n throw new Error(`File with id ${id} does not exist`);\n }\n filePath = file._path;\n }\n\n const thisPathParts = this._path.split(path.sep);\n const filePathParts = filePath.split(path.sep);\n\n let index = -1;\n let relativePath = '';\n for (const part of thisPathParts) {\n index += 1;\n if (filePathParts[index] !== part) {\n const pathArray = Array.from({\n length: thisPathParts.length - index,\n }).fill('');\n const relativePathToFile = filePathParts.slice(index);\n const relativeFolder = relativePathToFile.slice(\n 0,\n relativePathToFile.length - 1,\n );\n if (relativeFolder.length) {\n relativeFolder.push('');\n }\n relativePath =\n (pathArray.join('../') || './') + relativeFolder.join('/');\n break;\n }\n }\n\n const fileName = filePathParts[filePathParts.length - 1]!;\n // TODO: parser - cache responses\n return `${relativePath}${splitNameAndExtension(fileName).name}`;\n }\n\n public remove(options?: Parameters<typeof fs.rmSync>[1]) {\n fs.rmSync(this._path, options);\n }\n\n /**\n * Removes last node form the stack. Works as undo.\n */\n public removeNode() {\n this._items = this._items.slice(0, this._items.length - 1);\n }\n\n private _setName(fileName: string) {\n if (fileName.includes('index')) {\n return fileName;\n }\n\n const { extension, name } = splitNameAndExtension(fileName);\n return [name, 'gen', extension].filter(Boolean).join('.');\n }\n\n private _toString(separator: string, tsConfig: ts.ParsedCommandLine | null) {\n let output: Array<string> = [];\n if (this._headers.length) {\n output.push(this._headers.join('\\n'));\n }\n\n const shouldAppendJs =\n tsConfig?.options.moduleResolution === ts.ModuleResolutionKind.NodeNext;\n\n const importsStringArray: Array<string> = [];\n\n for (const [_module, moduleMap] of this._imports.entries()) {\n const imports = Array.from(moduleMap.values());\n\n let resolvedModule = _module;\n if (\n shouldAppendJs &&\n (resolvedModule.startsWith('./') || resolvedModule.startsWith('../'))\n ) {\n resolvedModule = `${resolvedModule}.js`;\n }\n\n const node = compiler.namedImportDeclarations({\n imports,\n module: resolvedModule,\n });\n importsStringArray.push(tsNodeToString({ node }));\n }\n if (importsStringArray.length) {\n output.push(importsStringArray.join('\\n'));\n }\n output = output.concat(\n this._items.map((node) =>\n typeof node === 'string'\n ? node\n : tsNodeToString({ node, unescape: true }),\n ),\n );\n return output.join(separator);\n }\n\n public write(separator = '\\n', tsConfig: ts.ParsedCommandLine | null = null) {\n if (this.isEmpty()) {\n this.remove({ force: true });\n return;\n }\n\n let dir = this._path;\n if (typeof this._path === 'string') {\n const parts = this._path.split(path.sep);\n dir = parts.slice(0, parts.length - 1).join(path.sep);\n }\n ensureDirSync(dir);\n fs.writeFileSync(this._path, this._toString(separator, tsConfig));\n }\n}\n\nfunction parseRefPath(ref: string): {\n baseRef: string;\n name: string;\n properties: string[];\n} {\n let baseRef = ref;\n const properties: string[] = [];\n\n const parts = baseRef.split('/');\n let name = parts[parts.length - 1] || '';\n\n let propIndex = parts.indexOf('properties');\n\n if (propIndex !== -1) {\n baseRef = parts.slice(0, propIndex).join('/');\n name = parts[propIndex - 1] || '';\n\n while (propIndex + 1 < parts.length) {\n const prop = parts[propIndex + 1];\n if (!prop) {\n throw new Error(`Invalid $ref: ${ref}`);\n }\n properties.push(prop);\n propIndex += 2;\n }\n }\n\n return {\n baseRef,\n name,\n properties,\n };\n}\n\ninterface EnsureUniqueIdentifierData {\n $ref: string;\n case: StringCase | undefined;\n count?: number;\n create?: boolean;\n /**\n * Transforms name obtained from `$ref` before it's passed to `stringCase()`.\n */\n nameTransformer?: (name: string) => string;\n namespace: Namespace;\n}\n\nconst ensureUniqueIdentifier = ({\n $ref,\n case: identifierCase,\n count = 1,\n create = false,\n nameTransformer,\n namespace,\n}: EnsureUniqueIdentifierData): Identifier => {\n const { baseRef, name, properties } = parseRefPath($ref);\n\n if (!name) {\n return {\n created: false,\n name: '',\n };\n }\n\n const refValue = namespace[baseRef];\n if (refValue) {\n let name = refValue.name;\n if (properties.length) {\n name += properties.map((property) => `['${property}']`).join('');\n }\n return {\n created: false,\n name: name as string,\n };\n }\n\n const nameWithTransform = nameTransformer?.(name) ?? name;\n let nameWithCasing = stringCase({\n case: identifierCase,\n value: nameWithTransform,\n });\n\n if (count > 1) {\n nameWithCasing = `${nameWithCasing}${count}`;\n }\n\n let nameValue = namespace[nameWithCasing];\n if (nameValue) {\n if (nameValue.$ref === baseRef) {\n return {\n created: false,\n name: nameValue.name,\n };\n }\n\n return ensureUniqueIdentifier({\n $ref: baseRef,\n case: identifierCase,\n count: count + 1,\n create,\n nameTransformer,\n namespace,\n });\n }\n\n if (!create) {\n return {\n created: false,\n name: '',\n };\n }\n\n nameValue = {\n $ref: baseRef,\n name: ensureValidIdentifier(nameWithCasing),\n };\n namespace[nameWithCasing] = nameValue;\n namespace[nameValue.$ref] = nameValue;\n\n return {\n created: true,\n name: nameValue.name,\n };\n};\n\nconst splitNameAndExtension = (fileName: string) => {\n const match = fileName.match(/\\.[0-9a-z]+$/i);\n const extension = match ? match[0].slice(1) : '';\n const name = fileName.slice(\n 0,\n fileName.length - (extension ? extension.length + 1 : 0),\n );\n return { extension, name };\n};\n\nexport const _test = {\n ensureUniqueIdentifier,\n parseRefPath,\n splitNameAndExtension,\n};\n","export const irRef = '#/ir/';\n\nexport const isRefOpenApiComponent = ($ref: string): boolean => {\n const parts = refToParts($ref);\n // reusable components are nested within components/<namespace>/<name>\n return parts.length === 3 && parts[0] === 'components';\n};\n\n/**\n * Returns the reusable component name from `$ref`.\n */\nexport const refToName = ($ref: string): string => {\n const parts = refToParts($ref);\n const name = parts[parts.length - 1]!;\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n return decodeURI(name);\n};\n\nconst refToParts = ($ref: string): string[] => {\n // Remove the leading `#` and split by `/` to traverse the object\n const parts = $ref.replace(/^#\\//, '').split('/');\n return parts;\n};\n\nexport const resolveRef = <T>({\n $ref,\n spec,\n}: {\n $ref: string;\n spec: Record<string, any>;\n}): T => {\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n const parts = refToParts(decodeURI($ref));\n\n let current = spec;\n\n for (const part of parts) {\n const p = part as keyof typeof current;\n if (current[p] === undefined) {\n throw new Error(`Reference not found: ${$ref}`);\n }\n current = current[p];\n }\n\n return current as T;\n};\n","import path from 'node:path';\n\nimport { TypeScriptFile } from '../generate/files';\nimport type { Config, StringCase } from '../types/config';\nimport type { Files } from '../types/utils';\nimport { resolveRef } from '../utils/ref';\nimport type { IR } from './types';\n\ninterface ContextFile {\n /**\n * Should the exports from this file be re-exported in the index barrel file?\n */\n exportFromIndex?: boolean;\n /**\n * Unique file identifier.\n */\n id: string;\n /**\n * Define casing for identifiers in this file.\n */\n identifierCase?: StringCase;\n /**\n * Relative file path to the output path.\n * @example\n * 'bar/foo.ts'\n */\n path: string;\n}\n\ninterface Events {\n /**\n * Called after parsing.\n */\n after: () => void;\n /**\n * Called before parsing.\n */\n before: () => void;\n operation: (args: {\n method: keyof IR.PathItemObject;\n operation: IR.OperationObject;\n path: string;\n }) => void;\n parameter: (args: {\n $ref: string;\n name: string;\n parameter: IR.ParameterObject;\n }) => void;\n requestBody: (args: {\n $ref: string;\n name: string;\n requestBody: IR.RequestBodyObject;\n }) => void;\n schema: (args: {\n $ref: string;\n name: string;\n schema: IR.SchemaObject;\n }) => void;\n server: (args: { server: IR.ServerObject }) => void;\n}\n\ntype Listeners = {\n [T in keyof Events]?: Array<Events[T]>;\n};\n\nexport class IRContext<Spec extends Record<string, any> = any> {\n /**\n * Configuration for parsing and generating the output. This\n * is a mix of user-provided and default values.\n */\n public config: Config;\n /**\n * A map of files that will be generated from `spec`.\n */\n public files: Files;\n /**\n * Intermediate representation model obtained from `spec`.\n */\n public ir: IR.Model;\n /**\n * Resolved specification from `input`.\n */\n public spec: Spec;\n\n /**\n * A map of event listeners.\n */\n private listeners: Listeners;\n\n constructor({ config, spec }: { config: Config; spec: Spec }) {\n this.config = config;\n this.files = {};\n this.ir = {};\n this.listeners = {};\n this.spec = spec;\n }\n\n /**\n * Notify all event listeners about `event`.\n */\n public async broadcast<T extends keyof Events>(\n event: T,\n ...args: Parameters<Events[T]>\n ): Promise<void> {\n if (!this.listeners[event]) {\n return;\n }\n\n await Promise.all(\n this.listeners[event].map((callbackFn, index) => {\n try {\n // @ts-expect-error\n const response = callbackFn(...args);\n return Promise.resolve(response);\n } catch (error) {\n console.error(\n `🔥 Event broadcast: \"${event}\"\\nindex: ${index}\\narguments: ${JSON.stringify(args, null, 2)}`,\n );\n throw error;\n }\n }),\n );\n }\n\n /**\n * Create and return a new TypeScript file. Also set the current file context\n * to the newly created file.\n */\n public createFile(file: ContextFile): TypeScriptFile {\n // TODO: parser - handle attempt to create duplicate\n const outputParts = file.path.split('/');\n const outputDir = path.resolve(\n this.config.output.path,\n ...outputParts.slice(0, outputParts.length - 1),\n );\n const createdFile = new TypeScriptFile({\n dir: outputDir,\n exportFromIndex: file.exportFromIndex,\n id: file.id,\n identifierCase: file.identifierCase,\n name: `${outputParts[outputParts.length - 1]}.ts`,\n });\n this.files[file.id] = createdFile;\n return createdFile;\n }\n\n /**\n * Returns a specific file by ID from `files`.\n */\n public file({ id }: Pick<ContextFile, 'id'>): TypeScriptFile | undefined {\n return this.files[id];\n }\n\n // TODO: parser - works the same as resolveRef, but for IR schemas.\n // for now, they map 1:1, but if they diverge (like with OpenAPI 2.0),\n // we will want to rewrite $refs at parse time, so they continue pointing\n // to the correct IR location\n public resolveIrRef<T>($ref: string) {\n return resolveRef<T>({\n $ref,\n spec: this.ir,\n });\n }\n\n /**\n * Returns a resolved reference from `spec`.\n */\n public resolveRef<T>($ref: string) {\n return resolveRef<T>({\n $ref,\n spec: this.spec,\n });\n }\n\n /**\n * Register a new `event` listener.\n */\n public subscribe<T extends keyof Events>(\n event: T,\n callbackFn: Events[T],\n ): void {\n if (!this.listeners[event]) {\n this.listeners[event] = [];\n }\n this.listeners[event].push(callbackFn);\n }\n}\n","type Filter = RegExp | ReadonlyArray<string>;\ntype Filters = ReadonlyArray<Filter> | undefined;\n\nconst isFiltersMatch = ({\n $ref,\n filters,\n schema,\n}: {\n $ref: string;\n filters: NonNullable<Filters>;\n schema: Record<string, unknown>;\n}): boolean => {\n for (const filter of filters) {\n if (filter instanceof RegExp) {\n filter.lastIndex = 0;\n if (filter.test($ref)) {\n return true;\n }\n } else {\n const field = filter[0] || '';\n const value = filter[1];\n if (value === undefined) {\n if (schema[field]) {\n return true;\n }\n } else if (schema[field] === value) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n/**\n * Exclude takes precedence over include.\n */\nexport const canProcessRef = ({\n excludeFilters,\n includeFilters,\n ...state\n}: {\n $ref: string;\n excludeFilters: Filters;\n includeFilters: Filters;\n schema: Record<string, unknown>;\n}): boolean => {\n if (!excludeFilters && !includeFilters) {\n return true;\n }\n\n if (excludeFilters) {\n if (isFiltersMatch({ ...state, filters: excludeFilters })) {\n return false;\n }\n }\n\n if (includeFilters) {\n return isFiltersMatch({ ...state, filters: includeFilters });\n }\n\n return true;\n};\n\nconst createFilter = (matcher: string): Filter => {\n if (matcher.startsWith('@')) {\n return matcher.slice(1).split(':');\n }\n\n return new RegExp(matcher);\n};\n\nexport const createFilters = (\n matchers: ReadonlyArray<string> | string | undefined,\n): Filters => {\n if (!matchers) {\n return;\n }\n\n if (typeof matchers === 'string') {\n return [createFilter(matchers)];\n }\n\n return matchers.map((matcher) => createFilter(matcher));\n};\n","import type { IR } from '../../../ir/types';\n\nexport const mergeParametersObjects = ({\n source,\n target,\n}: {\n source: IR.ParametersObject | undefined;\n target: IR.ParametersObject | undefined;\n}): IR.ParametersObject | undefined => {\n const result = { ...target };\n\n if (source) {\n if (source.cookie) {\n if (result.cookie) {\n result.cookie = {\n ...result.cookie,\n ...source.cookie,\n };\n } else {\n result.cookie = source.cookie;\n }\n }\n\n if (source.header) {\n if (result.header) {\n result.header = {\n ...result.header,\n ...source.header,\n };\n } else {\n result.header = source.header;\n }\n }\n\n if (source.path) {\n if (result.path) {\n result.path = {\n ...result.path,\n ...source.path,\n };\n } else {\n result.path = source.path;\n }\n }\n\n if (source.query) {\n if (result.query) {\n result.query = {\n ...result.query,\n ...source.query,\n };\n } else {\n result.query = source.query;\n }\n }\n }\n\n if (!Object.keys(result).length) {\n return;\n }\n\n return result;\n};\n","import { illegalStartCharactersRegExp } from '../../../utils/regexp';\n\nexport const ensureValidTypeScriptJavaScriptIdentifier = (name: string) => {\n const replaced = name.replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_');\n illegalStartCharactersRegExp.lastIndex = 0;\n const startsWithIllegalCharacter =\n illegalStartCharactersRegExp.test(replaced);\n const valid = startsWithIllegalCharacter ? `_${replaced}` : replaced;\n return valid;\n};\n\n/**\n * Sanitizes namespace identifiers so they are valid TypeScript identifiers of a certain form.\n *\n * 1: Remove any leading characters that are illegal as starting character of a typescript identifier.\n * 2: Replace illegal characters in remaining part of type name with hyphen (-).\n *\n * Step 1 should perhaps instead also replace illegal characters with underscore, or prefix with it, like sanitizeEnumName\n * does. The way this is now one could perhaps end up removing all characters, if all are illegal start characters. It\n * would be sort of a breaking change to do so, though, previously generated code might change then.\n *\n * JavaScript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n *\n * The output of this is expected to be converted to PascalCase\n */\nexport const sanitizeNamespaceIdentifier = (name: string) =>\n name\n .replace(/^[^\\p{ID_Start}]+/u, '')\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '-')\n .replace(/[$+]/g, '-');\n\nexport const sanitizeOperationParameterName = (name: string) => {\n const withoutBrackets = name.replace('[]', 'Array');\n return sanitizeNamespaceIdentifier(withoutBrackets);\n};\n","import type { IR } from '../../../ir/types';\nimport { stringCase } from '../../../utils/stringCase';\nimport { sanitizeNamespaceIdentifier } from '../../common/parser/sanitize';\nimport type { State } from '../types/state';\n\n/**\n * Verifies that operation ID is unique. For now, we only warn when this isn't\n * true as people like to not follow this part of the specification. In the\n * future, we should add a strict check and throw on duplicate identifiers.\n */\nexport const ensureUniqueOperationId = ({\n context,\n id,\n method,\n operationIds,\n path,\n}: {\n context: IR.Context;\n id: string | undefined;\n method: IR.OperationObject['method'];\n operationIds: Map<string, string>;\n path: keyof IR.PathsObject;\n}) => {\n if (!id) {\n return;\n }\n\n const operationKey = `${method.toUpperCase()} ${path}`;\n\n if (operationIds.has(id)) {\n if (context.config.logs.level !== 'silent') {\n // TODO: parser - support throw on duplicate\n console.warn(\n `❗️ Duplicate operationId: ${id} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n }\n } else {\n operationIds.set(id, operationKey);\n }\n};\n\n/**\n * Returns an operation ID to use across the application. By default, we try\n * to use the provided ID. If it's not provided or the SDK is configured\n * to exclude it, we generate operation ID from its location.\n */\nexport const operationToId = ({\n context,\n count = 1,\n id,\n method,\n path,\n state,\n}: {\n context: IR.Context;\n count?: number;\n id: string | undefined;\n method: string;\n path: string;\n state: Pick<State, 'ids'>;\n}): string => {\n let result: string;\n\n if (\n id &&\n (!context.config.plugins['@hey-api/sdk'] ||\n context.config.plugins['@hey-api/sdk'].operationId)\n ) {\n result = stringCase({\n case: 'camelCase',\n value: sanitizeNamespaceIdentifier(id),\n });\n } else {\n const urlWithoutPlaceholders = path\n .replace(/{(.*?)}/g, 'by-$1')\n // replace slashes with hyphens for camelcase method at the end\n .replace(/[/:+]/g, '-');\n\n result = stringCase({\n case: 'camelCase',\n value: `${method}-${urlWithoutPlaceholders}`,\n });\n }\n\n if (count > 1) {\n result = `${result}${count}`;\n }\n\n if (state.ids.has(result)) {\n return operationToId({\n context,\n count: count + 1,\n id,\n method,\n path,\n state,\n });\n }\n\n const operationKey = `${method.toUpperCase()} ${path}`;\n state.ids.set(result, operationKey);\n\n return result;\n};\n","const fileLikeRegExp =\n /^(application\\/(pdf|rtf|msword|vnd\\.(ms-|openxmlformats-officedocument\\.)|zip|x-(7z|tar|rar|zip|iso)|octet-stream|gzip|x-msdownload|json\\+download|xml|x-yaml|x-7z-compressed|x-tar)|text\\/(yaml|css|javascript)|audio\\/(mpeg|wav)|video\\/(mp4|x-matroska)|image\\/(vnd\\.adobe\\.photoshop|svg\\+xml))(; ?charset=[^;]+)?$/i;\nconst jsonMimeRegExp = /^application\\/(.*\\+)?json(;.*)?$/i;\nconst multipartFormDataMimeRegExp = /^multipart\\/form-data(;.*)?$/i;\nconst textMimeRegExp = /^text\\/[a-z0-9.+-]+(;.*)?$/i;\nconst xWwwFormUrlEncodedMimeRegExp =\n /^application\\/x-www-form-urlencoded(;.*)?$/i;\nconst octetStreamMimeRegExp = /^application\\/octet-stream(;.*)?$/i;\n\nexport type IRMediaType =\n | 'form-data'\n | 'json'\n | 'text'\n | 'url-search-params'\n | 'octet-stream';\n\nexport const isMediaTypeFileLike = ({\n mediaType,\n}: {\n mediaType: string;\n}): boolean => {\n fileLikeRegExp.lastIndex = 0;\n return fileLikeRegExp.test(mediaType);\n};\n\nexport const mediaTypeToIrMediaType = ({\n mediaType,\n}: {\n mediaType: string;\n}): IRMediaType | undefined => {\n jsonMimeRegExp.lastIndex = 0;\n if (jsonMimeRegExp.test(mediaType)) {\n return 'json';\n }\n\n multipartFormDataMimeRegExp.lastIndex = 0;\n if (multipartFormDataMimeRegExp.test(mediaType)) {\n return 'form-data';\n }\n\n textMimeRegExp.lastIndex = 0;\n if (textMimeRegExp.test(mediaType)) {\n return 'text';\n }\n\n xWwwFormUrlEncodedMimeRegExp.lastIndex = 0;\n if (xWwwFormUrlEncodedMimeRegExp.test(mediaType)) {\n return 'url-search-params';\n }\n\n octetStreamMimeRegExp.lastIndex = 0;\n if (octetStreamMimeRegExp.test(mediaType)) {\n return 'octet-stream';\n }\n};\n","import type { IRMediaType } from '../../../ir/mediaType';\nimport {\n isMediaTypeFileLike,\n mediaTypeToIrMediaType,\n} from '../../../ir/mediaType';\nimport type {\n ReferenceObject,\n ResponseObject,\n SchemaObject,\n} from '../types/spec';\n\ninterface Content {\n mediaType: string;\n schema: SchemaObject | ReferenceObject | undefined;\n type: IRMediaType | undefined;\n}\n\nexport const contentToSchema = ({\n content,\n}: {\n content: Content;\n}): SchemaObject | undefined => {\n const { mediaType, schema } = content;\n\n if (schema && '$ref' in schema) {\n return {\n allOf: [{ ...schema }],\n };\n }\n\n if (!schema) {\n if (isMediaTypeFileLike({ mediaType })) {\n return {\n format: 'binary',\n type: 'string',\n };\n }\n return;\n }\n\n if (\n schema.type === 'string' &&\n !schema.format &&\n isMediaTypeFileLike({ mediaType })\n ) {\n return {\n ...schema,\n format: 'binary',\n };\n }\n\n return schema;\n};\n\nexport const mediaTypeObject = ({\n mimeTypes,\n response,\n}: {\n mimeTypes: ReadonlyArray<string> | undefined;\n response: Pick<ResponseObject, 'schema'>;\n}): Content | undefined => {\n // return the first supported MIME type\n for (const mediaType of mimeTypes ?? []) {\n return {\n mediaType,\n schema: response.schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n };\n }\n};\n","import type { Config } from '../types/config';\nimport type { IR } from './types';\n\nexport const DEFAULT_PAGINATION_KEYWORDS = [\n 'after',\n 'before',\n 'cursor',\n 'offset',\n 'page',\n 'start',\n] as const;\n\nexport function getPaginationKeywordsRegExp({\n keywords = DEFAULT_PAGINATION_KEYWORDS,\n}: Config['input']['pagination'] = {}): RegExp {\n if (keywords.length === 0) {\n keywords = DEFAULT_PAGINATION_KEYWORDS;\n }\n const pattern = `^(${keywords.join('|')})$`;\n return new RegExp(pattern);\n}\n\nexport interface Pagination {\n in: string;\n name: string;\n schema: IR.SchemaObject;\n}\n","import type { IR } from './types';\n\n/**\n * Simply adds `items` to the schema. Also handles setting the logical operator\n * and avoids setting it for a single item or tuples.\n */\nexport const addItemsToSchema = ({\n items,\n logicalOperator = 'or',\n mutateSchemaOneItem = false,\n schema,\n}: {\n items: Array<IR.SchemaObject>;\n logicalOperator?: IR.SchemaObject['logicalOperator'];\n mutateSchemaOneItem?: boolean;\n schema: IR.SchemaObject;\n}) => {\n if (!items.length) {\n return schema;\n }\n\n if (schema.type === 'tuple') {\n schema.items = items;\n return schema;\n }\n\n if (items.length !== 1) {\n schema.items = items;\n schema.logicalOperator = logicalOperator;\n return schema;\n }\n\n if (mutateSchemaOneItem) {\n // bring composition up to avoid extraneous brackets\n schema = {\n ...schema,\n ...items[0],\n };\n return schema;\n }\n\n schema.items = items;\n return schema;\n};\n","import { refToName } from '../../../utils/ref';\n\nexport const discriminatorValues = (\n $ref: string,\n mapping?: Record<string, string>,\n): ReadonlyArray<string> => {\n const values: Array<string> = [];\n\n for (const name in mapping) {\n if (mapping[name] === $ref) {\n values.push(name);\n }\n }\n\n if (!values.length) {\n return [refToName($ref)];\n }\n\n return values;\n};\n","/**\n * Accepts `accessScopes` from two schemas and returns a merged and\n * deduplicated value.\n */\nexport const mergeSchemaAccessScopes = (\n a: ReadonlyArray<'both' | 'read' | 'write'> | undefined,\n b: ReadonlyArray<'both' | 'read' | 'write'> | undefined,\n): ReadonlyArray<'both' | 'read' | 'write'> | undefined => {\n if (!a?.length) {\n return b?.length ? b : undefined;\n }\n\n if (!b?.length) {\n return a;\n }\n\n const mergedScopes = new Set(a);\n\n for (const scope of b) {\n mergedScopes.add(scope);\n }\n\n return mergedScopes.size > a.length ? Array.from(mergedScopes) : a;\n};\n","import type { IR } from '../../../ir/types';\nimport { addItemsToSchema } from '../../../ir/utils';\nimport { refToName } from '../../../utils/ref';\nimport type {\n SchemaState,\n SchemaType,\n SchemaWithRequired,\n} from '../../shared/types/schema';\nimport { discriminatorValues } from '../../shared/utils/discriminator';\nimport { mergeSchemaAccessScopes } from '../../shared/utils/schema';\nimport type { SchemaObject } from '../types/spec';\n\nexport const getSchemaType = ({\n schema,\n}: {\n schema: SchemaObject;\n}): SchemaType<SchemaObject> | undefined => {\n if (schema.type) {\n return schema.type;\n }\n\n // infer object based on the presence of properties\n if (schema.properties) {\n return 'object';\n }\n};\n\nconst parseSchemaJsDoc = ({\n irSchema,\n schema,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.description) {\n irSchema.description = schema.description;\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n state,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}) => {\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum) {\n if (schema.maximum !== undefined) {\n irSchema.exclusiveMaximum = schema.maximum;\n }\n } else if (schema.maximum !== undefined) {\n irSchema.maximum = schema.maximum;\n }\n\n if (schema.exclusiveMinimum) {\n if (schema.minimum !== undefined) {\n irSchema.exclusiveMinimum = schema.minimum;\n }\n } else if (schema.minimum !== undefined) {\n irSchema.minimum = schema.minimum;\n }\n\n if (schema.format) {\n irSchema.format = schema.format;\n }\n\n if (schema.maxItems !== undefined) {\n irSchema.maxItems = schema.maxItems;\n }\n\n if (schema.maxLength !== undefined) {\n irSchema.maxLength = schema.maxLength;\n }\n\n if (schema.minItems !== undefined) {\n irSchema.minItems = schema.minItems;\n }\n\n if (schema.minLength !== undefined) {\n irSchema.minLength = schema.minLength;\n }\n\n if (schema.pattern) {\n irSchema.pattern = schema.pattern;\n }\n\n if (schema.readOnly) {\n irSchema.accessScope = 'read';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'read',\n ]);\n } else if (state.isProperty) {\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'both',\n ]);\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (schema.maxItems && schema.maxItems === schema.minItems) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IR.SchemaObject> = [];\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemsSchema.accessScopes,\n );\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n if ('$ref' in schema.items) {\n schemaItems.push(irItemsSchema);\n } else {\n const ofArray = schema.items.allOf;\n if (ofArray && ofArray.length > 1 && !schema.items['x-nullable']) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n schema,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = schema.type;\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IR.SchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n const irPropertySchema = schemaToIrSchema({\n context,\n schema: property,\n state: {\n ...state,\n isProperty: true,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irPropertySchema.accessScopes,\n );\n schemaProperties[name] = irPropertySchema;\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties === undefined) {\n if (!irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else if (typeof schema.additionalProperties === 'boolean') {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n state,\n });\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'string';\n\n return irSchema;\n};\n\nconst initIrSchema = ({\n schema,\n}: {\n schema: SchemaObject;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n parseSchemaJsDoc({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nconst parseAllOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'allOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.allOf;\n\n for (const compositionSchema of compositionSchemas) {\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (schema.required) {\n if (irCompositionSchema.required) {\n irCompositionSchema.required = [\n ...irCompositionSchema.required,\n ...schema.required,\n ];\n } else {\n irCompositionSchema.required = schema.required;\n }\n }\n\n schemaItems.push(irCompositionSchema);\n\n if (compositionSchema.$ref) {\n const ref = context.resolveRef<SchemaObject>(compositionSchema.$ref);\n // `$ref` should be passed from the root `parseSchema()` call\n if (ref.discriminator && state.$ref) {\n const values = discriminatorValues(state.$ref);\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [ref.discriminator]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n if (ref.required?.includes(ref.discriminator)) {\n irDiscriminatorSchema.required = [ref.discriminator];\n }\n schemaItems.push(irDiscriminatorSchema);\n }\n\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n const irRefSchema = schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n }\n }\n\n if (schemaType === 'object') {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema = compositionSchema.$ref\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaType({ schema: finalCompositionSchema }) === 'object'\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schema['x-nullable']) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IR.SchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original deprecated\n if (nestedItems[0]!.deprecated) {\n irSchema.deprecated = nestedItems[0]!.deprecated;\n }\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original description\n if (nestedItems[0]!.description) {\n irSchema.description = nestedItems[0]!.description;\n }\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'enum'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IR.SchemaObject> = [];\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n let enumType: SchemaType<SchemaObject> | 'null' | undefined;\n\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n enumType = typeOfEnumValue;\n } else if (typeOfEnumValue === 'object' && Array.isArray(enumValue)) {\n enumType = 'array';\n } else if (enumValue === null) {\n // nullable must be true\n if (schema['x-nullable']) {\n enumType = 'null';\n }\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n\n if (!enumType) {\n continue;\n }\n\n const irTypeSchema = parseOneType({\n context,\n schema: {\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ?? schema['x-enumNames']?.[index],\n // cast enum to string temporarily\n type: enumType === 'null' ? 'string' : enumType,\n },\n state,\n });\n\n irTypeSchema.const = enumValue;\n\n // cast enum back\n if (enumType === 'null') {\n irTypeSchema.type = enumType;\n }\n\n if (irTypeSchema.type === 'array') {\n irTypeSchema.type = 'tuple';\n }\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseRef = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, '$ref'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n irSchema.$ref = decodeURI(schema.$ref);\n\n // rewrite definitions refs as the internal schema follows OpenAPI 3.x syntax\n // and stores all definitions as reusable schemas\n irSchema.$ref = irSchema.$ref.replace(\n /#\\/definitions\\/([^/]+)/g,\n '#/components/schemas/$1',\n );\n\n if (!state.circularReferenceTracker.has(schema.$ref)) {\n const refSchema = context.resolveRef<SchemaObject>(schema.$ref);\n const irRefSchema = schemaToIrSchema({\n context,\n schema: refSchema,\n state: {\n ...state,\n $ref: schema.$ref,\n isProperty: false,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n\n return irSchema;\n};\n\nconst parseNullableType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n const typeIrSchema: IR.SchemaObject = {};\n\n parseSchemaMeta({\n irSchema: typeIrSchema,\n schema,\n state,\n });\n\n if (typeIrSchema.default === null) {\n // clear to avoid duplicate default inside the non-null schema.\n // this would produce incorrect validator output\n delete typeIrSchema.default;\n }\n\n const schemaItems: Array<IR.SchemaObject> = [\n parseOneType({\n context,\n irSchema: typeIrSchema,\n schema,\n state,\n }),\n {\n type: 'null',\n },\n ];\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseType = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n const type = getSchemaType({ schema });\n\n if (!type) {\n return irSchema;\n }\n\n if (schema['x-nullable']) {\n return parseNullableType({\n context,\n irSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n }\n\n return parseOneType({\n context,\n irSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n};\n\nconst parseOneType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n }\n\n switch (schema.type) {\n case 'array':\n return parseArray({\n context,\n irSchema,\n schema,\n state,\n });\n case 'boolean':\n return parseBoolean({\n context,\n irSchema,\n schema,\n state,\n });\n case 'integer':\n case 'number':\n return parseNumber({\n context,\n irSchema,\n schema,\n state,\n });\n case 'object':\n return parseObject({\n context,\n irSchema,\n schema,\n state,\n });\n case 'string':\n return parseString({\n context,\n irSchema,\n schema,\n state,\n });\n default:\n // gracefully handle invalid type\n return parseUnknown({\n context,\n irSchema,\n schema,\n state,\n });\n }\n};\n\nconst parseUnknown = ({\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n return irSchema;\n};\n\nexport const schemaToIrSchema = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaObject;\n state: SchemaState | undefined;\n}): IR.SchemaObject => {\n if (!state) {\n state = {\n circularReferenceTracker: new Set(),\n };\n }\n\n if (state.$ref) {\n state.circularReferenceTracker.add(state.$ref);\n }\n\n if (schema.$ref) {\n return parseRef({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, '$ref'>,\n state,\n });\n }\n\n if (schema.enum) {\n return parseEnum({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'enum'>,\n state,\n });\n }\n\n if (schema.allOf) {\n return parseAllOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'allOf'>,\n state,\n });\n }\n\n // infer object based on the presence of properties\n if (schema.type || schema.properties) {\n return parseType({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'type'>,\n state,\n });\n }\n\n return parseUnknown({\n context,\n schema,\n state,\n });\n};\n\nexport const parseSchema = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IR.Context;\n schema: SchemaObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.schemas) {\n context.ir.components.schemas = {};\n }\n\n context.ir.components.schemas[refToName($ref)] = schemaToIrSchema({\n context,\n schema,\n state: {\n $ref,\n circularReferenceTracker: new Set(),\n },\n });\n};\n","import { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport type { SchemaType } from '../../shared/types/schema';\nimport type { ParameterObject, ReferenceObject } from '../types/spec';\nimport type { SchemaObject } from '../types/spec';\nimport { getSchemaType } from './schema';\n\nconst isPaginationType = (\n schemaType: SchemaType<SchemaObject> | undefined,\n): boolean =>\n schemaType === 'boolean' ||\n schemaType === 'integer' ||\n schemaType === 'number' ||\n schemaType === 'string';\n\n// We handle only simple values for now, up to 1 nested field\nexport const paginationField = ({\n context,\n name,\n schema,\n}: {\n context: IR.Context;\n name: string;\n schema:\n | ParameterObject\n | SchemaObject\n | ReferenceObject\n | {\n in: undefined;\n };\n}): boolean | string => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n if (paginationRegExp.test(name)) {\n return true;\n }\n\n if ('$ref' in schema) {\n const ref = context.resolveRef<ParameterObject | SchemaObject>(\n schema.$ref ?? '',\n );\n\n if ('in' in ref && ref.in) {\n const refSchema =\n 'schema' in ref\n ? ref.schema\n : {\n ...ref,\n in: undefined,\n };\n\n return paginationField({\n context,\n name,\n schema: refSchema,\n });\n }\n\n return paginationField({\n context,\n name,\n schema: ref,\n });\n }\n\n if ('in' in schema) {\n if (!schema.in) {\n return false;\n }\n\n const finalSchema =\n 'schema' in schema\n ? schema.schema\n : {\n ...schema,\n in: undefined,\n };\n\n return paginationField({\n context,\n name,\n schema: finalSchema,\n });\n }\n\n for (const name in schema.properties) {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n\n if (paginationRegExp.test(name)) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean' && !('$ref' in property)) {\n const schemaType = getSchemaType({ schema: property });\n // TODO: resolve deeper references\n\n if (isPaginationType(schemaType)) {\n return name;\n }\n }\n }\n }\n\n for (const allOf of schema.allOf ?? []) {\n const pagination = paginationField({\n context,\n name,\n schema: allOf,\n });\n if (pagination) {\n return pagination;\n }\n }\n\n return false;\n};\n","import type { IR, IRBodyObject } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport {\n ensureUniqueOperationId,\n operationToId,\n} from '../../shared/utils/operation';\nimport type {\n OperationObject,\n ParameterObject,\n PathItemObject,\n ResponseObject,\n SchemaObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { contentToSchema, mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\ninterface Operation\n extends Omit<OperationObject, 'parameters'>,\n Pick<IR.OperationObject, 'parameters'> {\n requestBody?: OperationObject['parameters'];\n}\n\nconst parseOperationJsDoc = ({\n irOperation,\n operation,\n}: {\n irOperation: IR.OperationObject;\n operation: Operation;\n}) => {\n if (operation.deprecated !== undefined) {\n irOperation.deprecated = operation.deprecated;\n }\n\n if (operation.description) {\n irOperation.description = operation.description;\n }\n\n if (operation.summary) {\n irOperation.summary = operation.summary;\n }\n\n if (operation.tags?.length) {\n irOperation.tags = operation.tags;\n }\n};\n\nconst initIrOperation = ({\n context,\n method,\n operation,\n path,\n state,\n}: Pick<IR.OperationObject, 'method' | 'path'> & {\n context: IR.Context;\n operation: Operation;\n state: State;\n}): IR.OperationObject => {\n const irOperation: IR.OperationObject = {\n id: operationToId({\n context,\n id: operation.operationId,\n method,\n path,\n state,\n }),\n method,\n path,\n };\n\n parseOperationJsDoc({\n irOperation,\n operation,\n });\n\n return irOperation;\n};\n\nconst operationToIrOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: Pick<IR.OperationObject, 'method' | 'path'> & {\n context: IR.Context;\n operation: Operation;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}): IR.OperationObject => {\n const irOperation = initIrOperation({\n context,\n method,\n operation,\n path,\n state,\n });\n\n if (operation.parameters) {\n irOperation.parameters = operation.parameters;\n }\n\n let isRequestBodyRequired = false;\n const requestBodyObject: IRBodyObject = {\n mediaType: '',\n schema: {\n properties: {},\n required: [],\n type: 'object',\n },\n };\n const requestBodyObjectRequired: Array<string> = [];\n\n for (const requestBodyParameter of operation.requestBody ?? []) {\n const requestBody =\n '$ref' in requestBodyParameter\n ? context.resolveRef<ParameterObject>(requestBodyParameter.$ref)\n : requestBodyParameter;\n const schema: SchemaObject =\n requestBody.in === 'body'\n ? requestBody.schema\n : {\n ...requestBody,\n format: requestBody.type === 'file' ? 'binary' : requestBody.format,\n required: undefined,\n type: requestBody.type === 'file' ? 'string' : requestBody.type,\n };\n const content = mediaTypeObject({\n mimeTypes: operation.consumes,\n response: { schema },\n });\n\n if (content) {\n const pagination = paginationField({\n context,\n name: '',\n schema:\n content.schema && '$ref' in content.schema\n ? {\n allOf: [{ ...content.schema }],\n description: requestBody.description,\n }\n : {\n description: requestBody.description,\n ...content.schema,\n },\n });\n\n const irSchema = schemaToIrSchema({\n context,\n schema:\n '$ref' in requestBody\n ? {\n allOf: [\n {\n ...requestBody,\n $ref: requestBody.$ref as string,\n required: [],\n type: 'string',\n },\n ],\n description: requestBody.description,\n }\n : content.schema && '$ref' in content.schema\n ? {\n allOf: [{ ...content.schema }],\n description: requestBody.description,\n }\n : {\n description: requestBody.description,\n ...content.schema,\n },\n state: undefined,\n });\n\n requestBodyObject.mediaType = content.mediaType;\n\n if (requestBody.in === 'body') {\n requestBodyObject.schema = irSchema;\n } else {\n requestBodyObject.schema.properties![requestBody.name] = irSchema;\n\n if (requestBody.required) {\n requestBodyObjectRequired.push(requestBody.name);\n }\n }\n\n if (pagination) {\n requestBodyObject.pagination = pagination;\n }\n\n if (content.type) {\n requestBodyObject.type = content.type;\n }\n }\n\n if (requestBody.required) {\n isRequestBodyRequired = true;\n }\n }\n\n if (requestBodyObject.mediaType) {\n if (requestBodyObjectRequired.length) {\n requestBodyObject.schema.required = requestBodyObjectRequired;\n }\n\n irOperation.body = requestBodyObject;\n\n if (isRequestBodyRequired) {\n irOperation.body.required = isRequestBodyRequired;\n }\n }\n\n for (const name in operation.responses) {\n if (!irOperation.responses) {\n irOperation.responses = {};\n }\n\n const response = operation.responses[name]!;\n const responseObject =\n '$ref' in response\n ? context.resolveRef<ResponseObject>(response.$ref)\n : response;\n const content = mediaTypeObject({\n // assume JSON by default\n mimeTypes: operation.produces ? operation.produces : ['application/json'],\n response: responseObject,\n });\n\n if (content) {\n irOperation.responses[name] = {\n mediaType: content.mediaType,\n schema: schemaToIrSchema({\n context,\n schema: {\n description: responseObject.description,\n ...contentToSchema({ content }),\n },\n state: undefined,\n }),\n };\n } else {\n irOperation.responses[name] = {\n schema: {\n description: responseObject.description,\n // TODO: parser - cover all statues with empty response bodies\n // 1xx, 204, 205, 304\n type: name === '204' ? 'void' : 'unknown',\n },\n };\n }\n }\n\n if (operation.security) {\n const securitySchemeObjects: Array<IR.SecurityObject> = [];\n\n for (const securityRequirementObject of operation.security) {\n for (const name in securityRequirementObject) {\n const securitySchemeObject = securitySchemesMap.get(name);\n\n if (!securitySchemeObject) {\n continue;\n }\n\n let irSecuritySchemeObject: IR.SecurityObject | undefined;\n\n if (securitySchemeObject.type === 'apiKey') {\n irSecuritySchemeObject = securitySchemeObject;\n }\n\n if (securitySchemeObject.type === 'basic') {\n irSecuritySchemeObject = {\n description: securitySchemeObject.description,\n scheme: 'basic',\n type: 'http',\n };\n }\n\n if (securitySchemeObject.type === 'oauth2') {\n irSecuritySchemeObject = {\n description: securitySchemeObject.description,\n flows: {},\n type: 'oauth2',\n };\n\n switch (securitySchemeObject.flow) {\n case 'accessCode':\n irSecuritySchemeObject.flows.authorizationCode = {\n authorizationUrl: securitySchemeObject.authorizationUrl!,\n scopes: securitySchemeObject.scopes,\n tokenUrl: securitySchemeObject.tokenUrl!,\n };\n break;\n case 'application':\n irSecuritySchemeObject.flows.clientCredentials = {\n scopes: securitySchemeObject.scopes,\n tokenUrl: securitySchemeObject.tokenUrl!,\n };\n break;\n case 'implicit':\n irSecuritySchemeObject.flows.implicit = {\n authorizationUrl: securitySchemeObject.authorizationUrl!,\n scopes: securitySchemeObject.scopes,\n };\n break;\n case 'password':\n irSecuritySchemeObject.flows.password = {\n scopes: securitySchemeObject.scopes,\n tokenUrl: securitySchemeObject.tokenUrl!,\n };\n break;\n }\n }\n\n if (!irSecuritySchemeObject) {\n continue;\n }\n\n securitySchemeObjects.push(irSecuritySchemeObject);\n }\n }\n\n if (securitySchemeObjects.length) {\n irOperation.security = securitySchemeObjects;\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n ensureUniqueOperationId({\n context,\n id: operation.operationId,\n method,\n operationIds: state.operationIds,\n path,\n });\n\n if (!context.ir.paths) {\n context.ir.paths = {};\n }\n\n if (!context.ir.paths[path]) {\n context.ir.paths[path] = {};\n }\n\n context.ir.paths[path][method] = operationToIrOperation({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport type {\n OperationObject,\n ParameterObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\ntype Parameter = Exclude<ParameterObject, { in: 'body' }>;\n\n/**\n * Returns default parameter `explode` based on value of `collectionFormat`.\n */\nconst defaultExplode = (\n collectionFormat: Parameter['collectionFormat'],\n): boolean => {\n switch (collectionFormat) {\n case 'multi':\n return true;\n case 'csv':\n case 'pipes':\n case 'ssv':\n case 'tsv':\n default:\n return false;\n }\n};\n\n/**\n * Returns default parameter `style` based on value of `in`.\n */\nconst defaultStyle = (\n _in: Parameter['in'],\n): Required<IR.ParameterObject>['style'] => {\n switch (_in) {\n case 'header':\n case 'path':\n return 'simple';\n case 'query':\n default:\n return 'form';\n }\n};\n\nexport const parametersArrayToObject = ({\n context,\n operation,\n parameters,\n}: {\n context: IR.Context;\n operation: OperationObject;\n parameters?: ReadonlyArray<ParameterObject | ReferenceObject>;\n}): IR.ParametersObject | undefined => {\n if (!parameters || !Object.keys(parameters).length) {\n return;\n }\n\n const parametersObject: IR.ParametersObject = {};\n\n for (const parameterOrReference of parameters) {\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n // push request body parameters into a separate field\n if (parameter.in === 'body' || parameter.in === 'formData') {\n // @ts-expect-error\n if (!operation.requestBody) {\n // @ts-expect-error\n operation.requestBody = [];\n }\n\n // @ts-expect-error\n operation.requestBody.push(parameter);\n continue;\n }\n\n if (!parametersObject[parameter.in]) {\n parametersObject[parameter.in] = {};\n }\n\n parametersObject[parameter.in]![parameter.name] = parameterToIrParameter({\n context,\n parameter,\n });\n }\n\n return parametersObject;\n};\n\nconst parameterToIrParameter = ({\n context,\n parameter,\n}: {\n context: IR.Context;\n parameter: Parameter;\n}): IR.ParameterObject => {\n const schema = parameter;\n\n const finalSchema: SchemaObject =\n schema && '$ref' in schema\n ? {\n allOf: [\n {\n ...schema,\n $ref: schema.$ref as string,\n required: Array.isArray(schema.required) ? schema.required : [],\n type: schema.type as SchemaObject['type'],\n },\n ],\n description: parameter.description,\n }\n : {\n description: parameter.description,\n ...schema,\n required: Array.isArray(schema.required) ? schema.required : [],\n type: schema.type as SchemaObject['type'],\n };\n\n const pagination = paginationField({\n context,\n name: parameter.name,\n schema: finalSchema,\n });\n\n const style = defaultStyle(parameter.in);\n const explode = defaultExplode(parameter.collectionFormat);\n const allowReserved = false;\n\n const irParameter: IR.ParameterObject = {\n allowReserved,\n explode,\n location: parameter.in as IR.ParameterObject['location'],\n name: parameter.name,\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n state: undefined,\n }),\n style,\n };\n\n if (parameter.description) {\n irParameter.description = parameter.description;\n }\n\n if (pagination) {\n irParameter.pagination = pagination;\n }\n\n if (parameter.required) {\n irParameter.required = parameter.required;\n }\n\n return irParameter;\n};\n","const parseUrlRegExp =\n /^(([^:/?#]+):)?((\\/\\/)?([^:/?#]*)(:?([^/?#]*)))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n\ninterface Url {\n host: string;\n path: string;\n port: string;\n protocol: string;\n}\n\nexport const parseUrl = (value: string): Url => {\n const errorResponse: Url = {\n host: '',\n path: '',\n port: '',\n protocol: '',\n };\n\n parseUrlRegExp.lastIndex = 0;\n const match = value.match(parseUrlRegExp);\n\n if (!match) {\n return errorResponse;\n }\n\n const host = match[5] || '';\n\n // value is a relative file system path\n if (host === '.' || host === '..') {\n return errorResponse;\n }\n\n const path = match[8] || '';\n const protocol = match[2] || '';\n\n // value is probably a Windows file system path\n if (protocol.length === 1) {\n return errorResponse;\n }\n\n return {\n host,\n path: path === '/' ? '' : path,\n port: match[7] || '',\n protocol,\n };\n};\n","import type { IR } from '../../../ir/types';\nimport { parseUrl } from '../../../utils/url';\n\nexport const parseServers = ({ context }: { context: IR.Context }) => {\n let schemes: ReadonlyArray<string> = context.spec.schemes ?? [];\n let host = context.spec.host ?? '';\n const path = context.spec.basePath ?? '';\n\n if (typeof context.config.input.path === 'string') {\n const url = parseUrl(context.config.input.path);\n\n if (!schemes.length) {\n if (url.protocol) {\n schemes = [url.protocol] as typeof schemes;\n }\n }\n\n if (!host) {\n host = `${url.host}${url.port ? `:${url.port}` : ''}`;\n }\n }\n\n if (!schemes.length) {\n schemes = [''];\n }\n\n const servers = schemes\n .map((scheme) => `${scheme ? `${scheme}://` : ''}${host}${path}`)\n .filter(Boolean);\n\n if (servers.length) {\n context.ir.servers = servers.map((url) => ({\n url,\n }));\n }\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport { canProcessRef, createFilters } from '../../shared/utils/filter';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport type {\n OpenApiV2_0_X,\n OperationObject,\n PathItemObject,\n PathsObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { parseOperation } from './operation';\nimport { parametersArrayToObject } from './parameter';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\n\ntype PathKeys<T extends keyof PathsObject = keyof PathsObject> =\n keyof T extends infer K ? (K extends `/${string}` ? K : never) : never;\n\nexport const parseV2_0_X = (context: IR.Context<OpenApiV2_0_X>) => {\n const state: State = {\n ids: new Map(),\n operationIds: new Map(),\n };\n const securitySchemesMap = new Map<string, SecuritySchemeObject>();\n\n const excludeFilters = createFilters(context.config.input.exclude);\n const includeFilters = createFilters(context.config.input.include);\n\n const shouldProcessRef = ($ref: string, schema: Record<string, any>) =>\n canProcessRef({\n $ref,\n excludeFilters,\n includeFilters,\n schema,\n });\n\n for (const name in context.spec.securityDefinitions) {\n const securitySchemeObject = context.spec.securityDefinitions[name]!;\n securitySchemesMap.set(name, securitySchemeObject);\n }\n\n if (context.spec.definitions) {\n for (const name in context.spec.definitions) {\n const $ref = `#/definitions/${name}`;\n const schema = context.spec.definitions[name]!;\n\n if (!shouldProcessRef($ref, schema)) {\n continue;\n }\n\n parseSchema({\n $ref,\n context,\n schema,\n });\n }\n }\n\n parseServers({ context });\n\n for (const path in context.spec.paths) {\n if (path.startsWith('x-')) {\n continue;\n }\n\n const pathItem = context.spec.paths[path as PathKeys]!;\n\n const finalPathItem = pathItem.$ref\n ? {\n ...context.resolveRef<PathItemObject>(pathItem.$ref),\n ...pathItem,\n }\n : pathItem;\n\n const commonOperation: OperationObject = {\n consumes: context.spec.consumes,\n produces: context.spec.produces,\n responses: {},\n security: context.spec.security,\n };\n const operationArgs: Omit<Parameters<typeof parseOperation>[0], 'method'> =\n {\n context,\n operation: {\n ...commonOperation,\n parameters: parametersArrayToObject({\n context,\n operation: commonOperation,\n parameters: finalPathItem.parameters,\n }),\n },\n path: path as PathKeys,\n securitySchemesMap,\n state,\n };\n\n const $refDelete = `#/paths${path}/delete`;\n if (\n finalPathItem.delete &&\n shouldProcessRef($refDelete, finalPathItem.delete)\n ) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.delete,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters,\n },\n });\n }\n\n const $refGet = `#/paths${path}/get`;\n if (finalPathItem.get && shouldProcessRef($refGet, finalPathItem.get)) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.get,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters,\n },\n });\n }\n\n const $refHead = `#/paths${path}/head`;\n if (finalPathItem.head && shouldProcessRef($refHead, finalPathItem.head)) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.head,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters,\n },\n });\n }\n\n const $refOptions = `#/paths${path}/options`;\n if (\n finalPathItem.options &&\n shouldProcessRef($refOptions, finalPathItem.options)\n ) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.options,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters,\n },\n });\n }\n\n const $refPatch = `#/paths${path}/patch`;\n if (\n finalPathItem.patch &&\n shouldProcessRef($refPatch, finalPathItem.patch)\n ) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.patch,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters,\n },\n });\n }\n\n const $refPost = `#/paths${path}/post`;\n if (finalPathItem.post && shouldProcessRef($refPost, finalPathItem.post)) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.post,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters,\n },\n });\n }\n\n const $refPut = `#/paths${path}/put`;\n if (finalPathItem.put && shouldProcessRef($refPut, finalPathItem.put)) {\n const parameters = mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n operation: finalPathItem.put,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n });\n parseOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters,\n },\n });\n }\n }\n};\n","import type { IRMediaType } from '../../../ir/mediaType';\nimport {\n isMediaTypeFileLike,\n mediaTypeToIrMediaType,\n} from '../../../ir/mediaType';\nimport type {\n MediaTypeObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\n\ninterface Content {\n mediaType: string;\n schema: SchemaObject | ReferenceObject | undefined;\n type: IRMediaType | undefined;\n}\n\nexport const contentToSchema = ({\n content,\n}: {\n content: Content;\n}): SchemaObject | undefined => {\n const { mediaType, schema } = content;\n\n if (schema && '$ref' in schema) {\n return {\n allOf: [{ ...schema }],\n };\n }\n\n if (!schema) {\n if (isMediaTypeFileLike({ mediaType })) {\n return {\n format: 'binary',\n type: 'string',\n };\n }\n return;\n }\n\n if (\n schema.type === 'string' &&\n !schema.format &&\n isMediaTypeFileLike({ mediaType })\n ) {\n return {\n ...schema,\n format: 'binary',\n };\n }\n\n return schema;\n};\n\nexport const mediaTypeObject = ({\n content,\n}: {\n content: Record<string, MediaTypeObject> | undefined;\n}): Content | undefined => {\n // return the first supported MIME type\n for (const mediaType in content) {\n return {\n mediaType,\n schema: content[mediaType]!.schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n };\n }\n};\n","import type { IR } from '../../../ir/types';\nimport { addItemsToSchema } from '../../../ir/utils';\nimport { refToName } from '../../../utils/ref';\nimport type {\n SchemaState,\n SchemaType,\n SchemaWithRequired,\n} from '../../shared/types/schema';\nimport { discriminatorValues } from '../../shared/utils/discriminator';\nimport { mergeSchemaAccessScopes } from '../../shared/utils/schema';\nimport type { ReferenceObject, SchemaObject } from '../types/spec';\n\nexport const getSchemaType = ({\n schema,\n}: {\n schema: SchemaObject;\n}): SchemaType<SchemaObject> | undefined => {\n if (schema.type) {\n return schema.type;\n }\n\n // infer object based on the presence of properties\n if (schema.properties) {\n return 'object';\n }\n};\n\nconst parseSchemaJsDoc = ({\n irSchema,\n schema,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.deprecated !== undefined) {\n irSchema.deprecated = schema.deprecated;\n }\n\n if (schema.description) {\n irSchema.description = schema.description;\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n state,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}) => {\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum) {\n if (schema.maximum !== undefined) {\n irSchema.exclusiveMaximum = schema.maximum;\n }\n } else if (schema.maximum !== undefined) {\n irSchema.maximum = schema.maximum;\n }\n\n if (schema.exclusiveMinimum) {\n if (schema.minimum !== undefined) {\n irSchema.exclusiveMinimum = schema.minimum;\n }\n } else if (schema.minimum !== undefined) {\n irSchema.minimum = schema.minimum;\n }\n\n if (schema.format) {\n irSchema.format = schema.format;\n }\n\n if (schema.maxItems !== undefined) {\n irSchema.maxItems = schema.maxItems;\n }\n\n if (schema.maxLength !== undefined) {\n irSchema.maxLength = schema.maxLength;\n }\n\n if (schema.minItems !== undefined) {\n irSchema.minItems = schema.minItems;\n }\n\n if (schema.minLength !== undefined) {\n irSchema.minLength = schema.minLength;\n }\n\n if (schema.pattern) {\n irSchema.pattern = schema.pattern;\n }\n\n if (schema.readOnly) {\n irSchema.accessScope = 'read';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'read',\n ]);\n } else if (schema.writeOnly) {\n irSchema.accessScope = 'write';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'write',\n ]);\n } else if (state.isProperty) {\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'both',\n ]);\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (schema.maxItems && schema.maxItems === schema.minItems) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IR.SchemaObject> = [];\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemsSchema.accessScopes,\n );\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n if ('$ref' in schema.items) {\n schemaItems.push(irItemsSchema);\n } else {\n const ofArray =\n schema.items.allOf || schema.items.anyOf || schema.items.oneOf;\n if (ofArray && ofArray.length > 1 && !schema.items.nullable) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n schema,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = schema.type;\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IR.SchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n const irPropertySchema = schemaToIrSchema({\n context,\n schema: property,\n state: {\n ...state,\n isProperty: true,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irPropertySchema.accessScopes,\n );\n schemaProperties[name] = irPropertySchema;\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties === undefined) {\n if (!irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else if (typeof schema.additionalProperties === 'boolean') {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n state,\n });\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'string';\n\n return irSchema;\n};\n\nconst initIrSchema = ({\n schema,\n}: {\n schema: SchemaObject;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n parseSchemaJsDoc({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nconst parseAllOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'allOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.allOf;\n\n for (const compositionSchema of compositionSchemas) {\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (schema.required) {\n if (irCompositionSchema.required) {\n irCompositionSchema.required = [\n ...irCompositionSchema.required,\n ...schema.required,\n ];\n } else {\n irCompositionSchema.required = schema.required;\n }\n }\n\n schemaItems.push(irCompositionSchema);\n\n if ('$ref' in compositionSchema) {\n const ref = context.resolveRef<SchemaObject>(compositionSchema.$ref);\n // `$ref` should be passed from the root `parseSchema()` call\n if (ref.discriminator && state.$ref) {\n const values = discriminatorValues(\n state.$ref,\n ref.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [ref.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n if (ref.required?.includes(ref.discriminator.propertyName)) {\n irDiscriminatorSchema.required = [ref.discriminator.propertyName];\n }\n schemaItems.push(irDiscriminatorSchema);\n }\n\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n const irRefSchema = schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n }\n }\n\n if (schemaType === 'object') {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema =\n '$ref' in compositionSchema\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaType({ schema: finalCompositionSchema }) === 'object'\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schema.nullable) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IR.SchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original deprecated\n if (nestedItems[0]!.deprecated) {\n irSchema.deprecated = nestedItems[0]!.deprecated;\n }\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original description\n if (nestedItems[0]!.description) {\n irSchema.description = nestedItems[0]!.description;\n }\n }\n\n return irSchema;\n};\n\nconst parseAnyOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'anyOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.anyOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && '$ref' in compositionSchema) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n schemaItems.push(irCompositionSchema);\n }\n\n if (schema.nullable) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaType === 'object') {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'enum'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IR.SchemaObject> = [];\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n let enumType: SchemaType<SchemaObject> | 'null' | undefined;\n\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n enumType = typeOfEnumValue;\n } else if (typeOfEnumValue === 'object' && Array.isArray(enumValue)) {\n enumType = 'array';\n } else if (enumValue === null) {\n // nullable must be true\n if (schema.nullable) {\n enumType = 'null';\n }\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n\n if (!enumType) {\n continue;\n }\n\n const irTypeSchema = parseOneType({\n context,\n schema: {\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ?? schema['x-enumNames']?.[index],\n // cast enum to string temporarily\n type: enumType === 'null' ? 'string' : enumType,\n },\n state,\n });\n\n irTypeSchema.const = enumValue;\n\n // cast enum back\n if (enumType === 'null') {\n irTypeSchema.type = enumType;\n }\n\n if (irTypeSchema.type === 'array') {\n irTypeSchema.type = 'tuple';\n }\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'oneOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n let schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.oneOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && '$ref' in compositionSchema) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n required: [schema.discriminator.propertyName],\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n // since we know oneOf will be using \"or\" logical operator, if the parsed\n // composition schema also has an \"or\" operator, we can bring it up\n // to avoid unnecessary brackets\n if (\n irCompositionSchema.logicalOperator === 'or' &&\n irCompositionSchema.items\n ) {\n schemaItems = schemaItems.concat(irCompositionSchema.items);\n } else {\n schemaItems.push(irCompositionSchema);\n }\n }\n\n if (schema.nullable) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaType === 'object') {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseRef = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: ReferenceObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n irSchema.$ref = decodeURI(schema.$ref);\n\n if (!state.circularReferenceTracker.has(schema.$ref)) {\n const refSchema = context.resolveRef<SchemaObject>(schema.$ref);\n const irRefSchema = schemaToIrSchema({\n context,\n schema: refSchema,\n state: {\n ...state,\n $ref: schema.$ref,\n isProperty: false,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n\n return irSchema;\n};\n\nconst parseNullableType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n const typeIrSchema: IR.SchemaObject = {};\n\n parseSchemaMeta({\n irSchema: typeIrSchema,\n schema,\n state,\n });\n\n if (typeIrSchema.default === null) {\n // clear to avoid duplicate default inside the non-null schema.\n // this would produce incorrect validator output\n delete typeIrSchema.default;\n }\n\n const schemaItems: Array<IR.SchemaObject> = [\n parseOneType({\n context,\n irSchema: typeIrSchema,\n schema,\n state,\n }),\n {\n type: 'null',\n },\n ];\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseType = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n const type = getSchemaType({ schema });\n\n if (!type) {\n return irSchema;\n }\n\n if (!schema.nullable) {\n return parseOneType({\n context,\n irSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n }\n\n return parseNullableType({\n context,\n irSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n};\n\nconst parseOneType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n }\n\n switch (schema.type) {\n case 'array':\n return parseArray({\n context,\n irSchema,\n schema,\n state,\n });\n case 'boolean':\n return parseBoolean({\n context,\n irSchema,\n schema,\n state,\n });\n case 'integer':\n case 'number':\n return parseNumber({\n context,\n irSchema,\n schema,\n state,\n });\n case 'object':\n return parseObject({\n context,\n irSchema,\n schema,\n state,\n });\n case 'string':\n return parseString({\n context,\n irSchema,\n schema,\n state,\n });\n default:\n // gracefully handle invalid type\n return parseUnknown({\n context,\n irSchema,\n schema,\n state,\n });\n }\n};\n\nconst parseUnknown = ({\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n return irSchema;\n};\n\nexport const schemaToIrSchema = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaObject | ReferenceObject;\n state: SchemaState | undefined;\n}): IR.SchemaObject => {\n if (!state) {\n state = {\n circularReferenceTracker: new Set(),\n };\n }\n\n if (state.$ref) {\n state.circularReferenceTracker.add(state.$ref);\n }\n\n if ('$ref' in schema) {\n return parseRef({\n context,\n schema,\n state,\n });\n }\n\n if (schema.enum) {\n return parseEnum({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'enum'>,\n state,\n });\n }\n\n if (schema.allOf) {\n return parseAllOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'allOf'>,\n state,\n });\n }\n\n if (schema.anyOf) {\n return parseAnyOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'anyOf'>,\n state,\n });\n }\n\n if (schema.oneOf) {\n return parseOneOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'oneOf'>,\n state,\n });\n }\n\n // infer object based on the presence of properties\n if (schema.type || schema.properties) {\n return parseType({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'type'>,\n state,\n });\n }\n\n return parseUnknown({\n context,\n schema,\n state,\n });\n};\n\nexport const parseSchema = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IR.Context;\n schema: SchemaObject | ReferenceObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.schemas) {\n context.ir.components.schemas = {};\n }\n\n context.ir.components.schemas[refToName($ref)] = schemaToIrSchema({\n context,\n schema,\n state: {\n $ref,\n circularReferenceTracker: new Set(),\n },\n });\n};\n","import { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport type { SchemaType } from '../../shared/types/schema';\nimport type {\n ParameterObject,\n ReferenceObject,\n RequestBodyObject,\n} from '../types/spec';\nimport type { SchemaObject } from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { getSchemaType } from './schema';\n\nconst isPaginationType = (\n schemaType: SchemaType<SchemaObject> | undefined,\n): boolean =>\n schemaType === 'boolean' ||\n schemaType === 'integer' ||\n schemaType === 'number' ||\n schemaType === 'string';\n\n// We handle only simple values for now, up to 1 nested field\nexport const paginationField = ({\n context,\n name,\n schema,\n}: {\n context: IR.Context;\n name: string;\n schema: SchemaObject | ReferenceObject;\n}): boolean | string => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n if (paginationRegExp.test(name)) {\n return true;\n }\n\n if ('$ref' in schema) {\n const ref = context.resolveRef<\n ParameterObject | RequestBodyObject | SchemaObject\n >(schema.$ref);\n\n if ('content' in ref || 'in' in ref) {\n let refSchema: SchemaObject | ReferenceObject | undefined;\n\n if ('in' in ref) {\n refSchema = ref.schema;\n }\n\n if (!refSchema) {\n // parameter or body\n const content = mediaTypeObject({ content: ref.content });\n if (content?.schema) {\n refSchema = content.schema;\n }\n }\n\n if (!refSchema) {\n return false;\n }\n\n return paginationField({\n context,\n name,\n schema: refSchema,\n });\n }\n\n return paginationField({\n context,\n name,\n schema: ref,\n });\n }\n\n for (const name in schema.properties) {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n\n if (paginationRegExp.test(name)) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean' && !('$ref' in property)) {\n const schemaType = getSchemaType({ schema: property });\n // TODO: resolve deeper references\n\n if (isPaginationType(schemaType)) {\n return name;\n }\n }\n }\n }\n\n for (const allOf of schema.allOf ?? []) {\n const pagination = paginationField({\n context,\n name,\n schema: allOf,\n });\n if (pagination) {\n return pagination;\n }\n }\n\n return false;\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport {\n ensureUniqueOperationId,\n operationToId,\n} from '../../shared/utils/operation';\nimport type {\n OperationObject,\n PathItemObject,\n RequestBodyObject,\n ResponseObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { contentToSchema, mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\ninterface Operation\n extends Omit<OperationObject, 'parameters'>,\n Pick<IR.OperationObject, 'parameters'> {}\n\nconst parseOperationJsDoc = ({\n irOperation,\n operation,\n}: {\n irOperation: IR.OperationObject;\n operation: Operation;\n}) => {\n if (operation.deprecated !== undefined) {\n irOperation.deprecated = operation.deprecated;\n }\n\n if (operation.description) {\n irOperation.description = operation.description;\n }\n\n if (operation.summary) {\n irOperation.summary = operation.summary;\n }\n\n if (operation.tags?.length) {\n irOperation.tags = operation.tags;\n }\n};\n\nconst initIrOperation = ({\n context,\n method,\n operation,\n path,\n state,\n}: Pick<IR.OperationObject, 'method' | 'path'> & {\n context: IR.Context;\n operation: Operation;\n state: State;\n}): IR.OperationObject => {\n const irOperation: IR.OperationObject = {\n id: operationToId({\n context,\n id: operation.operationId,\n method,\n path,\n state,\n }),\n method,\n path,\n };\n\n parseOperationJsDoc({\n irOperation,\n operation,\n });\n\n return irOperation;\n};\n\nconst operationToIrOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: Pick<IR.OperationObject, 'method' | 'path'> & {\n context: IR.Context;\n operation: Operation;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}): IR.OperationObject => {\n const irOperation = initIrOperation({\n context,\n method,\n operation,\n path,\n state,\n });\n\n if (operation.parameters) {\n irOperation.parameters = operation.parameters;\n }\n\n if (operation.requestBody) {\n const requestBody =\n '$ref' in operation.requestBody\n ? context.resolveRef<RequestBodyObject>(operation.requestBody.$ref)\n : operation.requestBody;\n const content = mediaTypeObject({\n content: requestBody.content,\n });\n if (content) {\n const pagination = paginationField({\n context,\n name: '',\n schema:\n content.schema && '$ref' in content.schema\n ? {\n allOf: [{ ...content.schema }],\n description: requestBody.description,\n }\n : {\n description: requestBody.description,\n ...content.schema,\n },\n });\n\n irOperation.body = {\n mediaType: content.mediaType,\n schema: schemaToIrSchema({\n context,\n schema:\n '$ref' in operation.requestBody\n ? {\n allOf: [{ ...operation.requestBody }],\n description: requestBody.description,\n }\n : content.schema && '$ref' in content.schema\n ? {\n allOf: [{ ...content.schema }],\n description: requestBody.description,\n }\n : {\n description: requestBody.description,\n ...content.schema,\n },\n state: undefined,\n }),\n };\n\n if (pagination) {\n irOperation.body.pagination = pagination;\n }\n\n if (requestBody.required) {\n irOperation.body.required = requestBody.required;\n }\n\n if (content.type) {\n irOperation.body.type = content.type;\n }\n }\n }\n\n for (const name in operation.responses) {\n if (!irOperation.responses) {\n irOperation.responses = {};\n }\n\n const response = operation.responses[name]!;\n const responseObject =\n '$ref' in response\n ? context.resolveRef<ResponseObject>(response.$ref)\n : response;\n const content = mediaTypeObject({\n content: responseObject.content,\n });\n\n if (content) {\n irOperation.responses[name] = {\n mediaType: content.mediaType,\n schema: schemaToIrSchema({\n context,\n schema: {\n description: responseObject.description,\n ...contentToSchema({ content }),\n },\n state: undefined,\n }),\n };\n } else {\n irOperation.responses[name] = {\n schema: {\n description: responseObject.description,\n // TODO: parser - cover all statues with empty response bodies\n // 1xx, 204, 205, 304\n type: name === '204' ? 'void' : 'unknown',\n },\n };\n }\n }\n\n if (operation.security) {\n const securitySchemeObjects: Array<IR.SecurityObject> = [];\n\n for (const securityRequirementObject of operation.security) {\n for (const name in securityRequirementObject) {\n const securitySchemeObject = securitySchemesMap.get(name);\n\n if (!securitySchemeObject) {\n continue;\n }\n\n securitySchemeObjects.push(securitySchemeObject);\n }\n }\n\n if (securitySchemeObjects.length) {\n irOperation.security = securitySchemeObjects;\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n ensureUniqueOperationId({\n context,\n id: operation.operationId,\n method,\n operationIds: state.operationIds,\n path,\n });\n\n if (!context.ir.paths) {\n context.ir.paths = {};\n }\n\n if (!context.ir.paths[path]) {\n context.ir.paths[path] = {};\n }\n\n if (operation.servers) {\n context.ir.servers = [...(context.ir.servers ?? []), ...operation.servers];\n }\n\n context.ir.paths[path][method] = operationToIrOperation({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport { refToName } from '../../../utils/ref';\nimport type {\n ParameterObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\n/**\n * Returns default parameter `allowReserved` based on value of `in`.\n */\nconst defaultAllowReserved = (\n _in: ParameterObject['in'],\n): boolean | undefined => {\n switch (_in) {\n // this keyword only applies to parameters with an `in` value of `query`\n case 'query':\n return false;\n default:\n return;\n }\n};\n\n/**\n * Returns default parameter `explode` based on value of `style`.\n */\nconst defaultExplode = (style: Required<ParameterObject>['style']): boolean => {\n switch (style) {\n // default value for `deepObject` is `false`, but that behavior is undefined\n // so we use `true` to make this work with the `client-fetch` package\n case 'deepObject':\n case 'form':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * Returns default parameter `style` based on value of `in`.\n */\nconst defaultStyle = (\n _in: ParameterObject['in'],\n): Required<IR.ParameterObject>['style'] => {\n switch (_in) {\n case 'header':\n case 'path':\n return 'simple';\n case 'cookie':\n case 'query':\n return 'form';\n }\n};\n\nexport const parametersArrayToObject = ({\n context,\n parameters,\n}: {\n context: IR.Context;\n parameters?: ReadonlyArray<ParameterObject | ReferenceObject>;\n}): IR.ParametersObject | undefined => {\n if (!parameters || !Object.keys(parameters).length) {\n return;\n }\n\n const parametersObject: IR.ParametersObject = {};\n\n for (const parameterOrReference of parameters) {\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n if (!parametersObject[parameter.in]) {\n parametersObject[parameter.in] = {};\n }\n\n parametersObject[parameter.in]![parameter.name] = parameterToIrParameter({\n context,\n parameter,\n });\n }\n\n return parametersObject;\n};\n\nconst parameterToIrParameter = ({\n context,\n parameter,\n}: {\n context: IR.Context;\n parameter: ParameterObject;\n}): IR.ParameterObject => {\n // TODO: parser - fix\n let schema = parameter.schema;\n\n if (!schema) {\n const content = mediaTypeObject({\n content: parameter.content,\n });\n if (content) {\n schema = content.schema;\n }\n }\n\n const finalSchema: SchemaObject =\n schema && '$ref' in schema\n ? {\n allOf: [{ ...schema }],\n deprecated: parameter.deprecated,\n description: parameter.description,\n }\n : {\n deprecated: parameter.deprecated,\n description: parameter.description,\n ...schema,\n };\n\n const pagination = paginationField({\n context,\n name: parameter.name,\n schema: finalSchema,\n });\n\n const style = parameter.style || defaultStyle(parameter.in);\n const explode =\n parameter.explode !== undefined ? parameter.explode : defaultExplode(style);\n const allowReserved =\n parameter.allowReserved !== undefined\n ? parameter.allowReserved\n : defaultAllowReserved(parameter.in);\n\n const irParameter: IR.ParameterObject = {\n allowReserved,\n explode,\n location: parameter.in,\n name: parameter.name,\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n state: undefined,\n }),\n style,\n };\n\n if (parameter.deprecated) {\n irParameter.deprecated = parameter.deprecated;\n }\n\n if (parameter.description) {\n irParameter.description = parameter.description;\n }\n\n if (pagination) {\n irParameter.pagination = pagination;\n }\n\n if (parameter.required) {\n irParameter.required = parameter.required;\n }\n\n return irParameter;\n};\n\nexport const parseParameter = ({\n $ref,\n context,\n parameter,\n}: {\n $ref: string;\n context: IR.Context;\n parameter: ParameterObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.parameters) {\n context.ir.components.parameters = {};\n }\n\n context.ir.components.parameters[refToName($ref)] = parameterToIrParameter({\n context,\n parameter,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport { refToName } from '../../../utils/ref';\nimport type { RequestBodyObject, SchemaObject } from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { schemaToIrSchema } from './schema';\n\nconst requestBodyToIrRequestBody = ({\n context,\n requestBody,\n}: {\n context: IR.Context;\n requestBody: RequestBodyObject;\n}): IR.RequestBodyObject => {\n // TODO: parser - fix\n const content = mediaTypeObject({\n content: requestBody.content,\n });\n const schema = content ? content.schema : undefined;\n\n const finalSchema: SchemaObject = {\n description: requestBody.description,\n ...schema,\n };\n\n const irRequestBody: IR.RequestBodyObject = {\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n state: undefined,\n }),\n };\n\n if (requestBody.description) {\n irRequestBody.description = requestBody.description;\n }\n\n if (requestBody.required) {\n irRequestBody.required = requestBody.required;\n }\n\n return irRequestBody;\n};\n\nexport const parseRequestBody = ({\n $ref,\n context,\n requestBody,\n}: {\n $ref: string;\n context: IR.Context;\n requestBody: RequestBodyObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.requestBodies) {\n context.ir.components.requestBodies = {};\n }\n\n context.ir.components.requestBodies[refToName($ref)] =\n requestBodyToIrRequestBody({\n context,\n requestBody,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport { parseUrl } from '../../../utils/url';\n\nexport const parseServers = ({ context }: { context: IR.Context }) => {\n if (context.spec.servers) {\n context.ir.servers = context.spec.servers;\n return;\n }\n\n if (typeof context.config.input.path === 'string') {\n const url = parseUrl(context.config.input.path);\n context.ir.servers = [\n {\n url: `${url.protocol ? `${url.protocol}://` : ''}${url.host}${url.port ? `:${url.port}` : ''}`,\n },\n ];\n }\n\n if (!context.ir.servers) {\n context.ir.servers = [\n {\n url: '/',\n },\n ];\n }\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport { canProcessRef, createFilters } from '../../shared/utils/filter';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport type {\n OpenApiV3_0_X,\n ParameterObject,\n PathItemObject,\n PathsObject,\n RequestBodyObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { parseOperation } from './operation';\nimport { parametersArrayToObject, parseParameter } from './parameter';\nimport { parseRequestBody } from './requestBody';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\n\nexport const parseV3_0_X = (context: IR.Context<OpenApiV3_0_X>) => {\n const state: State = {\n ids: new Map(),\n operationIds: new Map(),\n };\n const securitySchemesMap = new Map<string, SecuritySchemeObject>();\n\n const excludeFilters = createFilters(context.config.input.exclude);\n const includeFilters = createFilters(context.config.input.include);\n\n const shouldProcessRef = ($ref: string, schema: Record<string, any>) =>\n canProcessRef({\n $ref,\n excludeFilters,\n includeFilters,\n schema,\n });\n\n // TODO: parser - handle more component types, old parser handles only parameters and schemas\n if (context.spec.components) {\n for (const name in context.spec.components.securitySchemes) {\n const securityOrReference =\n context.spec.components.securitySchemes[name]!;\n const securitySchemeObject =\n '$ref' in securityOrReference\n ? context.resolveRef<SecuritySchemeObject>(securityOrReference.$ref)\n : securityOrReference;\n securitySchemesMap.set(name, securitySchemeObject);\n }\n\n for (const name in context.spec.components.parameters) {\n const $ref = `#/components/parameters/${name}`;\n const parameterOrReference = context.spec.components.parameters[name]!;\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n if (!shouldProcessRef($ref, parameter)) {\n continue;\n }\n\n parseParameter({\n $ref,\n context,\n parameter,\n });\n }\n\n for (const name in context.spec.components.requestBodies) {\n const $ref = `#/components/requestBodies/${name}`;\n const requestBodyOrReference =\n context.spec.components.requestBodies[name]!;\n const requestBody =\n '$ref' in requestBodyOrReference\n ? context.resolveRef<RequestBodyObject>(requestBodyOrReference.$ref)\n : requestBodyOrReference;\n\n if (!shouldProcessRef($ref, requestBody)) {\n continue;\n }\n\n parseRequestBody({\n $ref,\n context,\n requestBody,\n });\n }\n\n for (const name in context.spec.components.schemas) {\n const $ref = `#/components/schemas/${name}`;\n const schema = context.spec.components.schemas[name]!;\n\n if (!shouldProcessRef($ref, schema)) {\n continue;\n }\n\n parseSchema({\n $ref,\n context,\n schema,\n });\n }\n }\n\n parseServers({ context });\n\n for (const path in context.spec.paths) {\n const pathItem = context.spec.paths[path as keyof PathsObject]!;\n\n const finalPathItem = pathItem.$ref\n ? {\n ...context.resolveRef<PathItemObject>(pathItem.$ref),\n ...pathItem,\n }\n : pathItem;\n\n const operationArgs: Omit<\n Parameters<typeof parseOperation>[0],\n 'method' | 'operation'\n > & {\n operation: Omit<\n Parameters<typeof parseOperation>[0]['operation'],\n 'responses'\n >;\n } = {\n context,\n operation: {\n description: finalPathItem.description,\n parameters: parametersArrayToObject({\n context,\n parameters: finalPathItem.parameters,\n }),\n security: context.spec.security,\n servers: finalPathItem.servers,\n summary: finalPathItem.summary,\n },\n path: path as keyof PathsObject,\n securitySchemesMap,\n state,\n };\n\n const $refDelete = `#/paths${path}/delete`;\n if (\n finalPathItem.delete &&\n shouldProcessRef($refDelete, finalPathItem.delete)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refGet = `#/paths${path}/get`;\n if (finalPathItem.get && shouldProcessRef($refGet, finalPathItem.get)) {\n parseOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refHead = `#/paths${path}/head`;\n if (finalPathItem.head && shouldProcessRef($refHead, finalPathItem.head)) {\n parseOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refOptions = `#/paths${path}/options`;\n if (\n finalPathItem.options &&\n shouldProcessRef($refOptions, finalPathItem.options)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refPatch = `#/paths${path}/patch`;\n if (\n finalPathItem.patch &&\n shouldProcessRef($refPatch, finalPathItem.patch)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refPost = `#/paths${path}/post`;\n if (finalPathItem.post && shouldProcessRef($refPost, finalPathItem.post)) {\n parseOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refPut = `#/paths${path}/put`;\n if (finalPathItem.put && shouldProcessRef($refPut, finalPathItem.put)) {\n parseOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refTrace = `#/paths${path}/trace`;\n if (\n finalPathItem.trace &&\n shouldProcessRef($refTrace, finalPathItem.trace)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'trace',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.trace,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.trace.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n }\n};\n","import type { IRMediaType } from '../../../ir/mediaType';\nimport {\n isMediaTypeFileLike,\n mediaTypeToIrMediaType,\n} from '../../../ir/mediaType';\nimport type { MediaTypeObject, SchemaObject } from '../types/spec';\n\ninterface Content {\n mediaType: string;\n schema: SchemaObject | undefined;\n type: IRMediaType | undefined;\n}\n\nexport const contentToSchema = ({\n content,\n}: {\n content: Content;\n}): SchemaObject | undefined => {\n const { mediaType, schema } = content;\n\n if (!schema) {\n if (isMediaTypeFileLike({ mediaType })) {\n return {\n format: 'binary',\n type: 'string',\n };\n }\n return;\n }\n\n if (\n schema.type === 'string' &&\n !schema.format &&\n isMediaTypeFileLike({ mediaType })\n ) {\n return {\n ...schema,\n format: 'binary',\n };\n }\n\n return schema;\n};\n\nexport const mediaTypeObject = ({\n content,\n}: {\n content: Record<string, MediaTypeObject> | undefined;\n}): Content | undefined => {\n // return the first supported MIME type\n for (const mediaType in content) {\n return {\n mediaType,\n schema: content[mediaType]!.schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n };\n }\n};\n","import type { IR } from '../../../ir/types';\nimport { addItemsToSchema } from '../../../ir/utils';\nimport { refToName } from '../../../utils/ref';\nimport type {\n SchemaState,\n SchemaType,\n SchemaWithRequired,\n} from '../../shared/types/schema';\nimport { discriminatorValues } from '../../shared/utils/discriminator';\nimport { mergeSchemaAccessScopes } from '../../shared/utils/schema';\nimport type { SchemaObject } from '../types/spec';\n\nexport const getSchemaTypes = ({\n schema,\n}: {\n schema: SchemaObject;\n}): ReadonlyArray<SchemaType<SchemaObject>> => {\n if (typeof schema.type === 'string') {\n return [schema.type];\n }\n\n if (schema.type) {\n return schema.type;\n }\n\n // infer object based on the presence of properties\n if (schema.properties) {\n return ['object'];\n }\n\n return [];\n};\n\nconst parseSchemaJsDoc = ({\n irSchema,\n schema,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.deprecated !== undefined) {\n irSchema.deprecated = schema.deprecated;\n }\n\n if (schema.description) {\n irSchema.description = schema.description;\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n state,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}) => {\n if (schema.const !== undefined) {\n irSchema.const = schema.const;\n\n // try to infer schema type\n if (!schema.type) {\n if (schema.const === null) {\n irSchema.type = 'null';\n } else {\n switch (typeof schema.const) {\n case 'bigint':\n case 'number':\n irSchema.type = 'number';\n break;\n case 'boolean':\n irSchema.type = 'boolean';\n break;\n case 'string':\n irSchema.type = 'string';\n break;\n }\n }\n }\n }\n\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum) {\n irSchema.exclusiveMaximum = schema.exclusiveMaximum;\n }\n\n if (schema.exclusiveMinimum) {\n irSchema.exclusiveMinimum = schema.exclusiveMinimum;\n }\n\n if (schema.format) {\n irSchema.format = schema.format;\n }\n\n if (schema.maximum !== undefined) {\n irSchema.maximum = schema.maximum;\n }\n\n if (schema.maxItems !== undefined) {\n irSchema.maxItems = schema.maxItems;\n }\n\n if (schema.maxLength !== undefined) {\n irSchema.maxLength = schema.maxLength;\n }\n\n if (schema.minimum !== undefined) {\n irSchema.minimum = schema.minimum;\n }\n\n if (schema.minItems !== undefined) {\n irSchema.minItems = schema.minItems;\n }\n\n if (schema.minLength !== undefined) {\n irSchema.minLength = schema.minLength;\n }\n\n if (schema.pattern) {\n irSchema.pattern = schema.pattern;\n }\n\n if (schema.readOnly) {\n irSchema.accessScope = 'read';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'read',\n ]);\n } else if (schema.writeOnly) {\n irSchema.accessScope = 'write';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'write',\n ]);\n } else if (state.isProperty) {\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'both',\n ]);\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (\n (schema.prefixItems && schema.prefixItems.length) ||\n (schema.maxItems && schema.maxItems === schema.minItems) ||\n schema.const !== undefined\n ) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IR.SchemaObject> = [];\n\n for (const item of schema.prefixItems ?? []) {\n const irItemSchema = schemaToIrSchema({\n context,\n schema: item,\n state,\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemSchema.accessScopes,\n );\n schemaItems.push(irItemSchema);\n }\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemsSchema.accessScopes,\n );\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n const ofArray =\n schema.items.allOf || schema.items.anyOf || schema.items.oneOf;\n if (\n ofArray &&\n ofArray.length > 1 &&\n !getSchemaTypes({ schema: schema.items }).includes('null')\n ) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n}): IR.SchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNull = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n irSchema.type = 'null';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n schema,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: SchemaType<SchemaObject>;\n };\n}): IR.SchemaObject => {\n irSchema.type = schema.type;\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IR.SchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n const irPropertySchema = schemaToIrSchema({\n context,\n schema: property,\n state: {\n ...state,\n isProperty: true,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irPropertySchema.accessScopes,\n );\n schemaProperties[name] = irPropertySchema;\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties === undefined) {\n if (!irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else if (typeof schema.additionalProperties === 'boolean') {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n state,\n });\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n}): IR.SchemaObject => {\n irSchema.type = 'string';\n\n return irSchema;\n};\n\nconst initIrSchema = ({\n schema,\n}: {\n schema: SchemaObject;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n parseSchemaJsDoc({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nconst parseAllOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'allOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n const compositionSchemas = schema.allOf;\n\n for (const compositionSchema of compositionSchemas) {\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (schema.required) {\n if (irCompositionSchema.required) {\n irCompositionSchema.required = [\n ...irCompositionSchema.required,\n ...schema.required,\n ];\n } else {\n irCompositionSchema.required = schema.required;\n }\n }\n\n schemaItems.push(irCompositionSchema);\n\n if (compositionSchema.$ref) {\n const ref = context.resolveRef<SchemaObject>(compositionSchema.$ref);\n // `$ref` should be passed from the root `parseSchema()` call\n if (ref.discriminator && state.$ref) {\n const values = discriminatorValues(\n state.$ref,\n ref.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [ref.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n if (ref.required?.includes(ref.discriminator.propertyName)) {\n irDiscriminatorSchema.required = [ref.discriminator.propertyName];\n }\n schemaItems.push(irDiscriminatorSchema);\n }\n\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n const irRefSchema = schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n }\n }\n\n if (schemaTypes.includes('object')) {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema = compositionSchema.$ref\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaTypes({ schema: finalCompositionSchema }).includes(\n 'object',\n )\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('null')) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IR.SchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n }\n\n return irSchema;\n};\n\nconst parseAnyOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'anyOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n const compositionSchemas = schema.anyOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && compositionSchema.$ref) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n schemaItems.push(irCompositionSchema);\n }\n\n if (schemaTypes.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('object')) {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'enum'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n let enumType: SchemaType<SchemaObject> | undefined;\n\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n enumType = typeOfEnumValue;\n } else if (typeOfEnumValue === 'object' && Array.isArray(enumValue)) {\n enumType = 'array';\n } else if (enumValue === null) {\n // type must contain null\n if (schemaTypes.includes('null')) {\n enumType = 'null';\n }\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n\n if (!enumType) {\n continue;\n }\n\n const irTypeSchema = parseOneType({\n context,\n schema: {\n const: enumValue,\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ?? schema['x-enumNames']?.[index],\n type: enumType,\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'oneOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n let schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n const compositionSchemas = schema.oneOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && compositionSchema.$ref) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n required: [schema.discriminator.propertyName],\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n // since we know oneOf will be using \"or\" logical operator, if the parsed\n // composition schema also has an \"or\" operator, we can bring it up\n // to avoid unnecessary brackets\n if (\n irCompositionSchema.logicalOperator === 'or' &&\n irCompositionSchema.items\n ) {\n schemaItems = schemaItems.concat(irCompositionSchema.items);\n } else {\n schemaItems.push(irCompositionSchema);\n }\n }\n\n if (schemaTypes.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('object')) {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseRef = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, '$ref'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const irRefSchema: IR.SchemaObject = {};\n\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n irRefSchema.$ref = decodeURI(schema.$ref);\n\n if (!state.circularReferenceTracker.has(schema.$ref)) {\n const refSchema = context.resolveRef<SchemaObject>(schema.$ref);\n const irResolvedRefSchema = schemaToIrSchema({\n context,\n schema: refSchema,\n state: {\n ...state,\n $ref: schema.$ref,\n isProperty: false,\n },\n });\n irRefSchema.accessScopes = mergeSchemaAccessScopes(\n irRefSchema.accessScopes,\n irResolvedRefSchema.accessScopes,\n );\n }\n\n const schemaItems: Array<IR.SchemaObject> = [];\n schemaItems.push(irRefSchema);\n\n if (schema.type && typeof schema.type !== 'string') {\n if (schema.type.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: SchemaType<SchemaObject>;\n };\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n }\n\n switch (schema.type) {\n case 'array':\n return parseArray({\n context,\n irSchema,\n schema,\n state,\n });\n case 'boolean':\n return parseBoolean({\n context,\n irSchema,\n schema,\n });\n case 'integer':\n case 'number':\n return parseNumber({\n context,\n irSchema,\n schema,\n });\n case 'null':\n return parseNull({\n context,\n irSchema,\n schema,\n });\n case 'object':\n return parseObject({\n context,\n irSchema,\n schema,\n state,\n });\n case 'string':\n return parseString({\n context,\n irSchema,\n schema,\n });\n default:\n // gracefully handle invalid type\n return parseUnknown({\n context,\n irSchema,\n schema,\n state,\n });\n }\n};\n\nconst parseManyTypes = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: ReadonlyArray<SchemaType<SchemaObject>>;\n };\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n const typeIrSchema: IR.SchemaObject = {};\n\n parseSchemaMeta({\n irSchema: typeIrSchema,\n schema,\n state,\n });\n\n if (schema.type.includes('null') && typeIrSchema.default === null) {\n // clear to avoid duplicate default inside the non-null schema.\n // this would produce incorrect validator output\n delete typeIrSchema.default;\n }\n\n const schemaItems: Array<IR.SchemaObject> = [];\n\n for (const type of schema.type) {\n if (type === 'null') {\n schemaItems.push({ type: 'null' });\n } else {\n const irTypeSchema = parseOneType({\n context,\n irSchema: typeIrSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseType = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n const schemaTypes = getSchemaTypes({ schema });\n\n if (schemaTypes.length === 1) {\n return parseOneType({\n context,\n irSchema,\n schema: {\n ...schema,\n type: schemaTypes[0]!,\n },\n state,\n });\n }\n\n return parseManyTypes({\n context,\n irSchema,\n schema: {\n ...schema,\n type: schemaTypes,\n },\n state,\n });\n};\n\nconst parseUnknown = ({\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n return irSchema;\n};\n\nexport const schemaToIrSchema = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaObject;\n state: SchemaState | undefined;\n}): IR.SchemaObject => {\n if (!state) {\n state = {\n circularReferenceTracker: new Set(),\n };\n }\n\n if (state.$ref) {\n state.circularReferenceTracker.add(state.$ref);\n }\n\n if (schema.$ref) {\n return parseRef({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, '$ref'>,\n state,\n });\n }\n\n if (schema.enum) {\n return parseEnum({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'enum'>,\n state,\n });\n }\n\n if (schema.allOf) {\n return parseAllOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'allOf'>,\n state,\n });\n }\n\n if (schema.anyOf) {\n return parseAnyOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'anyOf'>,\n state,\n });\n }\n\n if (schema.oneOf) {\n return parseOneOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'oneOf'>,\n state,\n });\n }\n\n // infer object based on the presence of properties\n if (schema.type || schema.properties) {\n return parseType({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'type'>,\n state,\n });\n }\n\n return parseUnknown({\n context,\n schema,\n state,\n });\n};\n\nexport const parseSchema = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IR.Context;\n schema: SchemaObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.schemas) {\n context.ir.components.schemas = {};\n }\n\n context.ir.components.schemas[refToName($ref)] = schemaToIrSchema({\n context,\n schema,\n state: {\n $ref,\n circularReferenceTracker: new Set(),\n },\n });\n};\n","import { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport type { SchemaType } from '../../shared/types/schema';\nimport type { ParameterObject, RequestBodyObject } from '../types/spec';\nimport type { SchemaObject } from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { getSchemaTypes } from './schema';\n\nconst isPaginationType = (\n schemaTypes: ReadonlyArray<SchemaType<SchemaObject>>,\n): boolean =>\n schemaTypes.includes('boolean') ||\n schemaTypes.includes('integer') ||\n schemaTypes.includes('number') ||\n schemaTypes.includes('string');\n\n// We handle only simple values for now, up to 1 nested field\nexport const paginationField = ({\n context,\n name,\n schema,\n}: {\n context: IR.Context;\n name: string;\n schema: SchemaObject;\n}): boolean | string => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n if (paginationRegExp.test(name)) {\n return true;\n }\n\n if (schema.$ref) {\n const ref = context.resolveRef<\n ParameterObject | RequestBodyObject | SchemaObject\n >(schema.$ref);\n\n if ('content' in ref || 'in' in ref) {\n let refSchema: SchemaObject | undefined;\n\n if ('in' in ref) {\n refSchema = ref.schema;\n }\n\n if (!refSchema) {\n // parameter or body\n const content = mediaTypeObject({ content: ref.content });\n if (content?.schema) {\n refSchema = content.schema;\n }\n }\n\n if (!refSchema) {\n return false;\n }\n\n return paginationField({\n context,\n name,\n schema: refSchema,\n });\n }\n\n return paginationField({\n context,\n name,\n schema: ref,\n });\n }\n\n for (const name in schema.properties) {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n\n if (paginationRegExp.test(name)) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean') {\n // TODO: resolve deeper references\n const schemaTypes = getSchemaTypes({ schema: property });\n\n if (!schemaTypes.length) {\n const compositionSchemas = property.anyOf ?? property.oneOf;\n const nonNullCompositionSchemas = (compositionSchemas ?? []).filter(\n (schema) => schema.type !== 'null',\n );\n if (nonNullCompositionSchemas.length === 1) {\n const schemaTypes = getSchemaTypes({\n schema: nonNullCompositionSchemas[0]!,\n });\n if (isPaginationType(schemaTypes)) {\n return name;\n }\n }\n }\n\n if (isPaginationType(schemaTypes)) {\n return name;\n }\n }\n }\n }\n\n for (const allOf of schema.allOf ?? []) {\n const pagination = paginationField({\n context,\n name,\n schema: allOf,\n });\n if (pagination) {\n return pagination;\n }\n }\n\n return false;\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport {\n ensureUniqueOperationId,\n operationToId,\n} from '../../shared/utils/operation';\nimport type {\n OperationObject,\n PathItemObject,\n RequestBodyObject,\n ResponseObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { contentToSchema, mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\ninterface Operation\n extends Omit<OperationObject, 'parameters'>,\n Pick<IR.OperationObject, 'parameters'> {}\n\nconst parseOperationJsDoc = ({\n irOperation,\n operation,\n}: {\n irOperation: IR.OperationObject;\n operation: Operation;\n}) => {\n if (operation.deprecated !== undefined) {\n irOperation.deprecated = operation.deprecated;\n }\n\n if (operation.description) {\n irOperation.description = operation.description;\n }\n\n if (operation.summary) {\n irOperation.summary = operation.summary;\n }\n\n if (operation.tags?.length) {\n irOperation.tags = operation.tags;\n }\n};\n\nconst initIrOperation = ({\n context,\n method,\n operation,\n path,\n state,\n}: Pick<IR.OperationObject, 'method' | 'path'> & {\n context: IR.Context;\n operation: Operation;\n state: State;\n}): IR.OperationObject => {\n const irOperation: IR.OperationObject = {\n id: operationToId({\n context,\n id: operation.operationId,\n method,\n path,\n state,\n }),\n method,\n path,\n };\n\n parseOperationJsDoc({\n irOperation,\n operation,\n });\n\n return irOperation;\n};\n\nconst operationToIrOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: Pick<IR.OperationObject, 'method' | 'path'> & {\n context: IR.Context;\n operation: Operation;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}): IR.OperationObject => {\n const irOperation = initIrOperation({\n context,\n method,\n operation,\n path,\n state,\n });\n\n if (operation.parameters) {\n irOperation.parameters = operation.parameters;\n }\n\n if (operation.requestBody) {\n const requestBody =\n '$ref' in operation.requestBody\n ? context.resolveRef<RequestBodyObject>(operation.requestBody.$ref)\n : operation.requestBody;\n const content = mediaTypeObject({\n content: requestBody.content,\n });\n if (content) {\n const pagination = paginationField({\n context,\n name: '',\n schema: {\n description: requestBody.description,\n ...content.schema,\n },\n });\n\n irOperation.body = {\n mediaType: content.mediaType,\n schema: schemaToIrSchema({\n context,\n schema: {\n description: requestBody.description,\n ...('$ref' in operation.requestBody\n ? operation.requestBody\n : content.schema),\n },\n state: undefined,\n }),\n };\n\n if (pagination) {\n irOperation.body.pagination = pagination;\n }\n\n if (requestBody.required) {\n irOperation.body.required = requestBody.required;\n }\n\n if (content.type) {\n irOperation.body.type = content.type;\n }\n }\n }\n\n for (const name in operation.responses) {\n if (!irOperation.responses) {\n irOperation.responses = {};\n }\n\n const response = operation.responses[name]!;\n const responseObject =\n '$ref' in response\n ? context.resolveRef<ResponseObject>(response.$ref)\n : response;\n const content = mediaTypeObject({\n content: responseObject.content,\n });\n\n if (content) {\n irOperation.responses[name] = {\n mediaType: content.mediaType,\n schema: schemaToIrSchema({\n context,\n schema: {\n description: responseObject.description,\n ...contentToSchema({ content }),\n },\n state: undefined,\n }),\n };\n } else {\n irOperation.responses[name] = {\n schema: {\n description: responseObject.description,\n // TODO: parser - cover all statues with empty response bodies\n // 1xx, 204, 205, 304\n type: name === '204' ? 'void' : 'unknown',\n },\n };\n }\n }\n\n if (operation.security) {\n const securitySchemeObjects: Array<IR.SecurityObject> = [];\n\n for (const securityRequirementObject of operation.security) {\n for (const name in securityRequirementObject) {\n const securitySchemeObject = securitySchemesMap.get(name);\n\n if (!securitySchemeObject) {\n continue;\n }\n\n securitySchemeObjects.push(securitySchemeObject);\n }\n }\n\n if (securitySchemeObjects.length) {\n irOperation.security = securitySchemeObjects;\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n ensureUniqueOperationId({\n context,\n id: operation.operationId,\n method,\n operationIds: state.operationIds,\n path,\n });\n\n if (!context.ir.paths) {\n context.ir.paths = {};\n }\n\n if (!context.ir.paths[path]) {\n context.ir.paths[path] = {};\n }\n\n if (operation.servers) {\n context.ir.servers = [...(context.ir.servers ?? []), ...operation.servers];\n }\n\n context.ir.paths[path][method] = operationToIrOperation({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport { refToName } from '../../../utils/ref';\nimport type {\n ParameterObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { paginationField } from './pagination';\nimport { schemaToIrSchema } from './schema';\n\n/**\n * Returns default parameter `allowReserved` based on value of `in`.\n */\nconst defaultAllowReserved = (\n _in: ParameterObject['in'],\n): boolean | undefined => {\n switch (_in) {\n // this keyword only applies to parameters with an `in` value of `query`\n case 'query':\n return false;\n default:\n return;\n }\n};\n\n/**\n * Returns default parameter `explode` based on value of `style`.\n */\nconst defaultExplode = (style: Required<ParameterObject>['style']): boolean => {\n switch (style) {\n // default value for `deepObject` is `false`, but that behavior is undefined\n // so we use `true` to make this work with the `client-fetch` package\n case 'deepObject':\n case 'form':\n return true;\n default:\n return false;\n }\n};\n\n/**\n * Returns default parameter `style` based on value of `in`.\n */\nconst defaultStyle = (\n _in: ParameterObject['in'],\n): Required<ParameterObject>['style'] => {\n switch (_in) {\n case 'header':\n case 'path':\n return 'simple';\n case 'cookie':\n case 'query':\n return 'form';\n }\n};\n\nexport const parametersArrayToObject = ({\n context,\n parameters,\n}: {\n context: IR.Context;\n parameters?: ReadonlyArray<ParameterObject | ReferenceObject>;\n}): IR.ParametersObject | undefined => {\n if (!parameters || !Object.keys(parameters).length) {\n return;\n }\n\n const parametersObject: IR.ParametersObject = {};\n\n for (const parameterOrReference of parameters) {\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n if (!parametersObject[parameter.in]) {\n parametersObject[parameter.in] = {};\n }\n\n parametersObject[parameter.in]![parameter.name] = parameterToIrParameter({\n context,\n parameter,\n });\n }\n\n return parametersObject;\n};\n\nconst parameterToIrParameter = ({\n context,\n parameter,\n}: {\n context: IR.Context;\n parameter: ParameterObject;\n}): IR.ParameterObject => {\n // TODO: parser - fix\n let schema = parameter.schema;\n\n if (!schema) {\n const content = mediaTypeObject({\n content: parameter.content,\n });\n if (content) {\n schema = content.schema;\n }\n }\n\n const finalSchema: SchemaObject = {\n deprecated: parameter.deprecated,\n description: parameter.description,\n ...schema,\n };\n\n const pagination = paginationField({\n context,\n name: parameter.name,\n schema: finalSchema,\n });\n\n const style = parameter.style || defaultStyle(parameter.in);\n const explode =\n parameter.explode !== undefined ? parameter.explode : defaultExplode(style);\n const allowReserved =\n parameter.allowReserved !== undefined\n ? parameter.allowReserved\n : defaultAllowReserved(parameter.in);\n\n const irParameter: IR.ParameterObject = {\n allowReserved,\n explode,\n location: parameter.in,\n name: parameter.name,\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n state: undefined,\n }),\n style,\n };\n\n if (parameter.deprecated) {\n irParameter.deprecated = parameter.deprecated;\n }\n\n if (parameter.description) {\n irParameter.description = parameter.description;\n }\n\n if (pagination) {\n irParameter.pagination = pagination;\n }\n\n if (parameter.required) {\n irParameter.required = parameter.required;\n }\n\n return irParameter;\n};\n\nexport const parseParameter = ({\n $ref,\n context,\n parameter,\n}: {\n $ref: string;\n context: IR.Context;\n parameter: ParameterObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.parameters) {\n context.ir.components.parameters = {};\n }\n\n context.ir.components.parameters[refToName($ref)] = parameterToIrParameter({\n context,\n parameter,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport { refToName } from '../../../utils/ref';\nimport type { RequestBodyObject, SchemaObject } from '../types/spec';\nimport { mediaTypeObject } from './mediaType';\nimport { schemaToIrSchema } from './schema';\n\nconst requestBodyToIrRequestBody = ({\n context,\n requestBody,\n}: {\n context: IR.Context;\n requestBody: RequestBodyObject;\n}): IR.RequestBodyObject => {\n // TODO: parser - fix\n const content = mediaTypeObject({\n content: requestBody.content,\n });\n const schema = content ? content.schema : undefined;\n\n const finalSchema: SchemaObject = {\n description: requestBody.description,\n ...schema,\n };\n\n const irRequestBody: IR.RequestBodyObject = {\n schema: schemaToIrSchema({\n context,\n schema: finalSchema,\n state: undefined,\n }),\n };\n\n if (requestBody.description) {\n irRequestBody.description = requestBody.description;\n }\n\n if (requestBody.required) {\n irRequestBody.required = requestBody.required;\n }\n\n return irRequestBody;\n};\n\nexport const parseRequestBody = ({\n $ref,\n context,\n requestBody,\n}: {\n $ref: string;\n context: IR.Context;\n requestBody: RequestBodyObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.requestBodies) {\n context.ir.components.requestBodies = {};\n }\n\n context.ir.components.requestBodies[refToName($ref)] =\n requestBodyToIrRequestBody({\n context,\n requestBody,\n });\n};\n","import type { IR } from '../../../ir/types';\nimport { parseUrl } from '../../../utils/url';\n\nexport const parseServers = ({ context }: { context: IR.Context }) => {\n if (context.spec.servers) {\n context.ir.servers = context.spec.servers;\n return;\n }\n\n if (typeof context.config.input.path === 'string') {\n const url = parseUrl(context.config.input.path);\n context.ir.servers = [\n {\n url: `${url.protocol ? `${url.protocol}://` : ''}${url.host}${url.port ? `:${url.port}` : ''}`,\n },\n ];\n }\n\n if (!context.ir.servers) {\n context.ir.servers = [\n {\n url: '/',\n },\n ];\n }\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport { canProcessRef, createFilters } from '../../shared/utils/filter';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport type {\n OpenApiV3_1_X,\n ParameterObject,\n PathItemObject,\n PathsObject,\n RequestBodyObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { parseOperation } from './operation';\nimport { parametersArrayToObject, parseParameter } from './parameter';\nimport { parseRequestBody } from './requestBody';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\nexport const parseV3_1_X = (context: IR.Context<OpenApiV3_1_X>) => {\n const state: State = {\n ids: new Map(),\n operationIds: new Map(),\n };\n const securitySchemesMap = new Map<string, SecuritySchemeObject>();\n\n const excludeFilters = createFilters(context.config.input.exclude);\n const includeFilters = createFilters(context.config.input.include);\n\n const shouldProcessRef = ($ref: string, schema: Record<string, any>) =>\n canProcessRef({\n $ref,\n excludeFilters,\n includeFilters,\n schema,\n });\n\n // TODO: parser - handle more component types, old parser handles only parameters and schemas\n if (context.spec.components) {\n for (const name in context.spec.components.securitySchemes) {\n const securityOrReference =\n context.spec.components.securitySchemes[name]!;\n const securitySchemeObject =\n '$ref' in securityOrReference\n ? context.resolveRef<SecuritySchemeObject>(securityOrReference.$ref)\n : securityOrReference;\n securitySchemesMap.set(name, securitySchemeObject);\n }\n\n for (const name in context.spec.components.parameters) {\n const $ref = `#/components/parameters/${name}`;\n const parameterOrReference = context.spec.components.parameters[name]!;\n const parameter =\n '$ref' in parameterOrReference\n ? context.resolveRef<ParameterObject>(parameterOrReference.$ref)\n : parameterOrReference;\n\n if (!shouldProcessRef($ref, parameter)) {\n continue;\n }\n\n parseParameter({\n $ref,\n context,\n parameter,\n });\n }\n\n for (const name in context.spec.components.requestBodies) {\n const $ref = `#/components/requestBodies/${name}`;\n const requestBodyOrReference =\n context.spec.components.requestBodies[name]!;\n const requestBody =\n '$ref' in requestBodyOrReference\n ? context.resolveRef<RequestBodyObject>(requestBodyOrReference.$ref)\n : requestBodyOrReference;\n\n if (!shouldProcessRef($ref, requestBody)) {\n continue;\n }\n\n parseRequestBody({\n $ref,\n context,\n requestBody,\n });\n }\n\n for (const name in context.spec.components.schemas) {\n const $ref = `#/components/schemas/${name}`;\n const schema = context.spec.components.schemas[name]!;\n\n if (!shouldProcessRef($ref, schema)) {\n continue;\n }\n\n parseSchema({\n $ref,\n context,\n schema,\n });\n }\n }\n\n parseServers({ context });\n\n for (const path in context.spec.paths) {\n const pathItem = context.spec.paths[path as keyof PathsObject]!;\n\n const finalPathItem = pathItem.$ref\n ? {\n ...context.resolveRef<PathItemObject>(pathItem.$ref),\n ...pathItem,\n }\n : pathItem;\n\n const operationArgs: Omit<Parameters<typeof parseOperation>[0], 'method'> =\n {\n context,\n operation: {\n description: finalPathItem.description,\n parameters: parametersArrayToObject({\n context,\n parameters: finalPathItem.parameters,\n }),\n security: context.spec.security,\n servers: finalPathItem.servers,\n summary: finalPathItem.summary,\n },\n path: path as keyof PathsObject,\n securitySchemesMap,\n state,\n };\n\n const $refDelete = `#/paths${path}/delete`;\n if (\n finalPathItem.delete &&\n shouldProcessRef($refDelete, finalPathItem.delete)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refGet = `#/paths${path}/get`;\n if (finalPathItem.get && shouldProcessRef($refGet, finalPathItem.get)) {\n parseOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refHead = `#/paths${path}/head`;\n if (finalPathItem.head && shouldProcessRef($refHead, finalPathItem.head)) {\n parseOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refOptions = `#/paths${path}/options`;\n if (\n finalPathItem.options &&\n shouldProcessRef($refOptions, finalPathItem.options)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refPatch = `#/paths${path}/patch`;\n if (\n finalPathItem.patch &&\n shouldProcessRef($refPatch, finalPathItem.patch)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refPost = `#/paths${path}/post`;\n if (finalPathItem.post && shouldProcessRef($refPost, finalPathItem.post)) {\n parseOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refPut = `#/paths${path}/put`;\n if (finalPathItem.put && shouldProcessRef($refPut, finalPathItem.put)) {\n parseOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n const $refTrace = `#/paths${path}/trace`;\n if (\n finalPathItem.trace &&\n shouldProcessRef($refTrace, finalPathItem.trace)\n ) {\n parseOperation({\n ...operationArgs,\n method: 'trace',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.trace,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.trace.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n }\n};\n","export const allowedServiceMethods = [\n 'connect',\n 'delete',\n 'get',\n 'head',\n 'options',\n 'patch',\n 'post',\n 'put',\n 'trace',\n] as const;\n\n/**\n * Convert the service version to 'normal' version.\n * This basically removes any \"v\" prefix from the version string.\n * @param version\n */\nexport function getServiceVersion(version = '1.0'): string {\n return String(version).replace(/^v/gi, '');\n}\n","export const refParametersPartial = '#/components/parameters/';\n\nexport const refSchemasPartial = '#/components/schemas/';\n","import { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport type { Config } from '../types/config';\nimport { getConfig } from './config';\nimport { reservedJavaScriptKeywordsRegExp } from './regexp';\nimport { stringCase } from './stringCase';\n\nexport const transformServiceName = ({\n config,\n name,\n}: {\n config: Config;\n name: string;\n}) => {\n if (config.plugins['@hey-api/sdk']?.serviceNameBuilder) {\n return config.plugins['@hey-api/sdk'].serviceNameBuilder.replace(\n '{{name}}',\n name,\n );\n }\n\n return name;\n};\n\nexport const transformTypeName = (name: string) => {\n const config = getConfig();\n if (config.plugins['@hey-api/typescript']?.style === 'PascalCase') {\n return stringCase({\n case: 'PascalCase',\n value: name,\n });\n }\n return name;\n};\n\n/**\n * This method is meant to be used to process definition names\n * and return a cleaned up, transformed version that is legal\n * to use in the output code.\n *\n * For example, a definition with name \"400\" would result in \"_400\",\n * \"import\" would result in \"_import\", etc. This also respects the\n * casing configuration for types.\n *\n * @param name Name of the definition in OpenAPI specification.\n * @returns A cleaned up, transformed name usable in output code.\n */\nexport const cleanAndTransformTypeName = (name: string) => {\n const transformed = transformTypeName(name);\n const cleaned = ensureValidTypeScriptJavaScriptIdentifier(transformed);\n const result = cleaned.replace(reservedJavaScriptKeywordsRegExp, '_$1');\n return result;\n};\n","import type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const inferType = (\n definition: OpenApiSchema,\n definitionTypes: string[],\n) => {\n if (definition.enum && !definitionTypes.includes('boolean')) {\n return 'enum';\n }\n return undefined;\n};\n\nexport const isDefinitionTypeNullable = (\n definition: Pick<OpenApiSchema, 'type'>,\n) => getDefinitionTypes(definition).includes('null');\n\nexport const isDefinitionNullable = (\n definition: Pick<OpenApiSchema, 'nullable' | 'type'>,\n) => definition.nullable === true || isDefinitionTypeNullable(definition);\n\nexport const getDefinitionTypes = ({ type }: Pick<OpenApiSchema, 'type'>) => {\n if (Array.isArray(type)) {\n return type;\n }\n if (type) {\n return [type];\n }\n return [];\n};\n","/**\n * Strip (OpenAPI) namespaces from values.\n * @param value\n */\nexport const stripNamespace = (value: string): string =>\n value\n .trim()\n .replace(/^#\\/definitions\\//, '')\n .replace(/^#\\/parameters\\//, '')\n .replace(/^#\\/responses\\//, '')\n .replace(/^#\\/securityDefinitions\\//, '')\n .replace(/^#\\/components\\/schemas\\//, '')\n .replace(/^#\\/components\\/responses\\//, '')\n .replace(/^#\\/components\\/parameters\\//, '')\n .replace(/^#\\/components\\/examples\\//, '')\n .replace(/^#\\/components\\/requestBodies\\//, '')\n .replace(/^#\\/components\\/headers\\//, '')\n .replace(/^#\\/components\\/securitySchemes\\//, '')\n .replace(/^#\\/components\\/links\\//, '')\n .replace(/^#\\/components\\/callbacks\\//, '');\n","import { refParametersPartial } from '../../../utils/const';\nimport { transformTypeName } from '../../../utils/transform';\nimport { isDefinitionTypeNullable } from '../../v3/parser/inferType';\nimport type { Type } from '../interfaces/Type';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from './sanitize';\nimport { stripNamespace } from './stripNamespace';\n\n/**\n * Get mapped type for given type to basic Typescript/Javascript type.\n */\nexport const getMappedType = (\n type: string,\n format?: string,\n): string | undefined => {\n if (format === 'binary') {\n return 'binary';\n }\n switch (type) {\n case 'any':\n case 'object':\n case 'unknown':\n return 'unknown';\n case 'array':\n return 'unknown[]';\n case 'boolean':\n return 'boolean';\n case 'byte':\n case 'double':\n case 'float':\n case 'int':\n case 'integer':\n case 'long':\n case 'number':\n case 'short':\n return 'number';\n case 'char':\n case 'date':\n case 'date-time':\n case 'password':\n case 'string':\n return 'string';\n case 'file':\n return 'binary';\n case 'null':\n return 'null';\n case 'void':\n return 'void';\n }\n};\n\n/**\n * Matches characters inside square brackets, including the brackets. Does not\n * match if the opening bracket is preceded by \"`1\" which is a syntax for generics\n * from C#.\n *\n * Hello[World] -> matches [World]\n * Hello`1[World] -> no match\n * string[] -> matches []\n */\nexport const hasSquareBracketsRegExp = /(?<!`1)\\[.*\\]$/g;\n\n/**\n * Parse any string value into a type object.\n * @param type String or String[] value like \"integer\", \"Link[Model]\" or [\"string\", \"null\"].\n * @param format String value like \"binary\" or \"date\".\n */\nexport const getType = ({\n debug,\n format,\n type = 'unknown',\n}: {\n debug?: boolean;\n format?: string;\n /**\n * Type can be the name of a schema component, a ref string, or any definition type.\n */\n type?: string | string[];\n}): Type => {\n const result: Type = {\n $refs: [],\n base: 'unknown',\n imports: [],\n isNullable: false,\n template: null,\n type: 'unknown',\n };\n\n // Special case for JSON Schema spec (december 2020, page 17),\n // that allows type to be an array of primitive types...\n if (Array.isArray(type)) {\n const joinedType = type\n .filter((value) => value !== 'null')\n .map((value) => getMappedType(value, format))\n .filter(Boolean)\n .join(' | ');\n result.type = joinedType;\n result.base = joinedType;\n result.isNullable = isDefinitionTypeNullable({ type });\n return result;\n }\n\n const mapped = getMappedType(type, format);\n if (mapped) {\n result.type = mapped;\n result.base = mapped;\n return result;\n }\n\n const typeWithoutNamespace = decodeURIComponent(stripNamespace(type));\n\n hasSquareBracketsRegExp.lastIndex = 0;\n if (hasSquareBracketsRegExp.test(typeWithoutNamespace)) {\n const matches = typeWithoutNamespace.match(/(.*?)\\[(.*)\\]$/);\n if (matches?.length) {\n const match1 = getType({\n debug,\n type: ensureValidTypeScriptJavaScriptIdentifier(matches[1]!),\n });\n const match2 = getType({\n debug,\n type: ensureValidTypeScriptJavaScriptIdentifier(matches[2]!),\n });\n\n if (match1.type === 'unknown[]') {\n result.type = `${match2.type}[]`;\n result.base = `${match2.type}`;\n match1.$refs = [];\n match1.imports = [];\n } else if (match2.type) {\n result.type = `${match1.type}<${match2.type}>`;\n result.base = match1.type;\n result.template = match2.type;\n } else {\n result.type = match1.type;\n result.base = match1.type;\n result.template = match1.type;\n }\n\n result.$refs = [...result.$refs, ...match1.$refs, ...match2.$refs];\n result.imports = [\n ...result.imports,\n ...match1.imports,\n ...match2.imports,\n ];\n return result;\n }\n }\n\n if (typeWithoutNamespace) {\n let encodedType = transformTypeName(\n ensureValidTypeScriptJavaScriptIdentifier(typeWithoutNamespace),\n );\n if (type.startsWith(refParametersPartial)) {\n // prefix parameter names to avoid conflicts, assuming people are mostly\n // interested in importing schema types and don't care about this naming\n encodedType = `Parameter${encodedType}`;\n }\n result.type = encodedType;\n result.base = encodedType;\n if (type.startsWith('#')) {\n result.$refs = [...result.$refs, decodeURIComponent(type)];\n }\n result.imports = [...result.imports, encodedType];\n return result;\n }\n\n return result;\n};\n","export function unique<T>(value: T, index: number, arr: T[]): boolean {\n return arr.indexOf(value) === index;\n}\n","import { unique } from '../../../utils/unique';\nimport type { Enum } from '../interfaces/client';\nimport type { WithEnumExtension } from '../interfaces/WithEnumExtension';\n\nexport const getEnums = (\n definition: WithEnumExtension,\n values?: ReadonlyArray<string | number>,\n): Enum[] => {\n if (!Array.isArray(values)) {\n return [];\n }\n\n const descriptions = (definition['x-enum-descriptions'] ?? []).filter(\n (value) => typeof value === 'string',\n );\n const names = (\n definition['x-enum-varnames'] ??\n definition['x-enumNames'] ??\n []\n ).filter((value) => typeof value === 'string');\n\n return values\n .filter(unique)\n .filter((value) => typeof value === 'number' || typeof value === 'string')\n .map((value, index) => ({\n customDescription: descriptions[index],\n customName: names[index],\n description: undefined,\n value,\n }));\n};\n","/**\n * The spec generates a pattern like this '^\\d{3}-\\d{2}-\\d{4}$'\n * However, to use it in HTML or inside new RegExp() we need to\n * escape the pattern to become: '^\\\\d{3}-\\\\d{2}-\\\\d{4}$' in order\n * to make it a valid regexp string.\n *\n * Also, escape single quote characters, because the output uses single quotes for strings\n *\n * @param pattern\n */\nexport const getPattern = (pattern?: string): string | undefined =>\n pattern?.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n","import type { Client } from '../../../types/client';\nimport { escapeName } from '../../../utils/escape';\nimport type { Model } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getModelProperties = ({\n definition,\n getModel,\n openApi,\n types,\n}: {\n definition: OpenApiSchema;\n getModel: GetModelFn;\n openApi: OpenApi;\n types: Client['types'];\n}): Model[] => {\n const models: Model[] = [];\n\n Object.entries(definition.properties ?? {}).forEach(\n ([propertyName, property]) => {\n const propertyRequired = Boolean(\n definition.required?.includes(propertyName),\n );\n if (property.$ref) {\n const model = getType({ type: property.$ref });\n models.push({\n $refs: [],\n base: model.base,\n description: property.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n export: 'reference',\n format: property.format,\n imports: model.imports,\n in: '',\n isDefinition: false,\n isNullable: property['x-nullable'] === true,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n link: null,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n properties: [],\n template: model.template,\n type: model.type,\n uniqueItems: property.uniqueItems,\n });\n } else {\n const model = getModel({ definition: property, openApi, types });\n models.push({\n $refs: [],\n base: model.base,\n description: property.description || null,\n enum: model.enum,\n enums: model.enums,\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n export: model.export,\n format: property.format,\n imports: model.imports,\n in: '',\n isDefinition: false,\n isNullable: property['x-nullable'] === true,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n link: model.link,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n properties: model.properties,\n template: model.template,\n type: model.type,\n uniqueItems: property.uniqueItems,\n });\n }\n },\n );\n\n return models;\n};\n","import type { OpenApiReference as OpenApiReferenceV2 } from '../../v2/interfaces/OpenApiReference';\nimport type { OpenApiReference as OpenApiReferenceV3 } from '../../v3/interfaces/OpenApiReference';\nimport type { OpenApi } from '../interfaces/OpenApi';\n\nconst ESCAPED_REF_SLASH = /~1/g;\nconst ESCAPED_REF_TILDE = /~0/g;\n\nexport function getRef<T>(\n openApi: OpenApi,\n item: T & (OpenApiReferenceV2 | OpenApiReferenceV3),\n): T {\n if (item.$ref) {\n // Fetch the paths to the definitions, this converts:\n // \"#/components/schemas/Form\" to [\"components\", \"schemas\", \"Form\"]\n const paths = item.$ref.replace(/^#/g, '').split('/').filter(Boolean);\n\n // Try to find the reference by walking down the path,\n // if we cannot find it, then we throw an error.\n let result = openApi;\n paths.forEach((path) => {\n const decodedPath = decodeURIComponent(\n path.replace(ESCAPED_REF_SLASH, '/').replace(ESCAPED_REF_TILDE, '~'),\n );\n if (result.hasOwnProperty(decodedPath)) {\n // @ts-expect-error\n result = result[decodedPath];\n } else {\n throw new Error(`Could not find reference: \"${item.$ref}\"`);\n }\n });\n return result as T;\n }\n return item as T;\n}\n","import type { Client } from '../../../types/client';\nimport type { Model } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getRequiredPropertiesFromComposition = ({\n definitions,\n getModel,\n openApi,\n required,\n types,\n}: {\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n required: string[];\n types: Client['types'];\n}): Model[] =>\n definitions\n .reduce((properties, definition) => {\n if (definition.$ref) {\n const schema = getRef<OpenApiSchema>(openApi, definition);\n return [\n ...properties,\n ...getModel({ definition: schema, openApi, types }).properties,\n ];\n }\n return [\n ...properties,\n ...getModel({ definition, openApi, types }).properties,\n ];\n }, [] as Model[])\n .filter(\n (property) => !property.isRequired && required.includes(property.name),\n )\n .map((property) => ({\n ...property,\n isRequired: true,\n }));\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelComposition } from '../../common/interfaces/client';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelProperties } from './getModelProperties';\nimport { getRequiredPropertiesFromComposition } from './getRequiredPropertiesFromComposition';\n\nexport const getModelComposition = ({\n definition,\n definitions,\n getModel,\n openApi,\n type,\n types,\n}: {\n definition: OpenApiSchema;\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n type: 'one-of' | 'any-of' | 'all-of';\n types: Client['types'];\n}): ModelComposition => {\n const composition: ModelComposition = {\n $refs: [],\n enums: [],\n export: type,\n imports: [],\n properties: [],\n };\n\n const properties: Model[] = [];\n\n definitions\n .map((definition) => getModel({ definition, openApi, types }))\n .filter((model) => {\n const hasProperties = model.properties.length;\n const hasEnums = model.enums.length;\n const isObject = model.type === 'unknown';\n const isEmpty = isObject && !hasProperties && !hasEnums;\n return !isEmpty;\n })\n .forEach((model) => {\n composition.imports.push(...model.imports);\n composition.enums.push(...model.enums);\n composition.properties.push(model);\n });\n\n if (definition.required && type === 'all-of') {\n const requiredProperties = getRequiredPropertiesFromComposition({\n definitions,\n getModel,\n openApi,\n required: definition.required,\n types,\n });\n requiredProperties.forEach((requiredProperty) => {\n composition.imports.push(...requiredProperty.imports);\n composition.enums.push(...requiredProperty.enums);\n });\n properties.push(...requiredProperties);\n }\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n composition.imports.push(...modelProperty.imports);\n composition.enums.push(...modelProperty.enums);\n if (modelProperty.export === 'enum') {\n composition.enums.push(modelProperty);\n }\n });\n properties.push(...modelProperties);\n }\n\n if (properties.length) {\n composition.properties.push({\n $refs: [],\n base: 'unknown',\n description: '',\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: 'properties',\n properties,\n template: null,\n type: 'unknown',\n });\n }\n\n return composition;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelMeta } from '../../common/interfaces/client';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelComposition } from './getModelComposition';\nimport { getModelProperties } from './getModelProperties';\n\nexport const getModel = ({\n definition,\n isDefinition = false,\n meta,\n openApi,\n types,\n}: Pick<Client, 'types'> & {\n definition: OpenApiSchema;\n isDefinition?: boolean;\n meta?: ModelMeta;\n openApi: OpenApi;\n}): Model => {\n const model: Model = {\n $refs: [],\n base: 'unknown',\n description: definition.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: definition.exclusiveMaximum,\n exclusiveMinimum: definition.exclusiveMinimum,\n export: 'interface',\n format: definition.format,\n imports: [],\n in: '',\n isDefinition,\n isNullable: definition['x-nullable'] === true,\n isReadOnly: definition.readOnly === true,\n isRequired: false,\n link: null,\n maxItems: definition.maxItems,\n maxLength: definition.maxLength,\n maxProperties: definition.maxProperties,\n maximum: definition.maximum,\n meta,\n minItems: definition.minItems,\n minLength: definition.minLength,\n minProperties: definition.minProperties,\n minimum: definition.minimum,\n multipleOf: definition.multipleOf,\n name: meta?.name ?? '',\n pattern: getPattern(definition.pattern),\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: definition.uniqueItems,\n };\n\n if (definition.$ref) {\n const definitionRef = getType({ type: definition.$ref });\n model.export = 'reference';\n model.type = definitionRef.type;\n model.base = definitionRef.base;\n model.template = definitionRef.template;\n model.imports.push(...definitionRef.imports);\n return model;\n }\n\n if (definition.enum && definition.type !== 'boolean') {\n const enums = getEnums(definition, definition.enum);\n if (enums.length) {\n model.base = 'string';\n model.enum = [...model.enum, ...enums];\n model.export = 'enum';\n model.type = 'string';\n return model;\n }\n }\n\n if (definition.type === 'array' && definition.items) {\n if (definition.items.$ref) {\n const arrayItems = getType({ type: definition.items.$ref });\n model.export = 'array';\n model.type = arrayItems.type;\n model.base = arrayItems.base;\n model.template = arrayItems.template;\n model.imports.push(...arrayItems.imports);\n return model;\n } else {\n const arrayItems = getModel({\n definition: definition.items,\n openApi,\n types,\n });\n model.export = 'array';\n model.type = arrayItems.type;\n model.base = arrayItems.base;\n model.template = arrayItems.template;\n model.link = arrayItems;\n model.imports.push(...arrayItems.imports);\n return model;\n }\n }\n\n if (\n definition.type === 'object' &&\n typeof definition.additionalProperties === 'object'\n ) {\n if (definition.additionalProperties.$ref) {\n const additionalProperties = getType({\n type: definition.additionalProperties.$ref,\n });\n model.export = 'dictionary';\n model.type = additionalProperties.type;\n model.base = additionalProperties.base;\n model.template = additionalProperties.template;\n model.imports.push(...additionalProperties.imports);\n return model;\n } else {\n const additionalProperties = getModel({\n definition: definition.additionalProperties,\n openApi,\n types,\n });\n model.export = 'dictionary';\n model.type = additionalProperties.type;\n model.base = additionalProperties.base;\n model.template = additionalProperties.template;\n model.link = additionalProperties;\n model.imports.push(...additionalProperties.imports);\n return model;\n }\n }\n\n if (definition.allOf?.length) {\n const composition = getModelComposition({\n definition,\n definitions: definition.allOf,\n getModel,\n openApi,\n type: 'all-of',\n types,\n });\n model.export = composition.export;\n model.imports.push(...composition.imports);\n model.properties.push(...composition.properties);\n model.enums = [...model.enums, ...composition.enums];\n return model;\n }\n\n if (definition.type === 'object') {\n model.export = 'interface';\n model.type = 'unknown';\n model.base = 'unknown';\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n model.imports.push(...modelProperty.imports);\n model.enums = [...model.enums, ...modelProperty.enums];\n model.properties.push(modelProperty);\n if (modelProperty.export === 'enum') {\n model.enums = [...model.enums, modelProperty];\n }\n });\n }\n return model;\n }\n\n // If the schema has a type than it can be a basic or generic type.\n if (definition.type) {\n const definitionType = getType({\n format: definition.format,\n type: definition.type,\n });\n model.export = 'generic';\n model.type = definitionType.type;\n model.base = definitionType.base;\n model.template = definitionType.template;\n model.imports.push(...definitionType.imports);\n return model;\n }\n\n return model;\n};\n","import type { Client } from '../../../types/client';\nimport { reservedJavaScriptKeywordsRegExp } from '../../../utils/regexp';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getModel } from './getModel';\n\nexport const getModels = (\n openApi: OpenApi,\n): Pick<Client, 'models' | 'types'> => {\n const types: Client['types'] = {};\n let models: Client['models'] = [];\n\n Object.entries(openApi.definitions ?? {}).forEach(\n ([definitionName, definition]) => {\n const definitionType = getType({ type: definitionName });\n const name = definitionType.base.replace(\n reservedJavaScriptKeywordsRegExp,\n '_$1',\n );\n const meta = {\n $ref: `#/definitions/${definitionName}`,\n name,\n };\n types[name] = meta;\n const model = getModel({\n definition,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n models = [...models, model];\n },\n );\n\n return {\n models,\n types,\n };\n};\n","export function sort(a: string, b: string): number {\n const nameA = a.toLocaleLowerCase();\n const nameB = b.toLocaleLowerCase();\n return nameA.localeCompare(nameB, 'en');\n}\n\nexport const sorterByName = <T extends { name: string }>(a: T, b: T) =>\n sort(a.name, b.name);\n\nexport function sortByName<T extends { name: string }>(items: T[]): T[] {\n return items.sort(sorterByName);\n}\n","import type { Enum, Model } from '../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../openApi';\nimport { unescapeName } from './escape';\nimport { sort } from './sort';\nimport { unique } from './unique';\n\n/**\n * Sanitizes names of enums, so they are valid typescript identifiers of a certain form.\n *\n * 1: Replace all characters not legal as part of identifier with '_'\n * 2: Add '_' prefix if first character of enum name has character not legal for start of identifier\n * 3: Add '_' where the string transitions from lowercase to uppercase\n * 4: Transform the whole string to uppercase\n *\n * Javascript identifier regexp pattern retrieved from https://developer.mozilla.org/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers\n */\nexport const enumKey = (value?: string | number, customName?: string) => {\n if (customName) {\n return customName;\n }\n // prefix numbers with underscore\n if (typeof value === 'number') {\n return `'_${value}'`;\n }\n\n let key = '';\n if (typeof value === 'string') {\n key = value\n .replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, '_')\n .replace(/^([^$_\\p{ID_Start}])/u, '_$1')\n .replace(/(\\p{Lowercase})(\\p{Uppercase}+)/gu, '$1_$2');\n }\n key = key.trim();\n if (!key) {\n key = 'empty_string';\n }\n return key.toUpperCase();\n};\n\nexport const enumUnionType = (enums: Enum[]) =>\n enums\n .map((enumerator) => enumValue(enumerator.value, true))\n .filter(unique)\n .join(' | ');\n\nexport const enumValue = (value?: string | number, union: boolean = false) => {\n if (typeof value === 'string') {\n if (value.includes(\"'\") && union) {\n return `\"${value}\"`;\n }\n return `'${value}'`;\n }\n return value;\n};\n\nexport const enumEntry = (enumerator: Enum) => {\n const key = enumKey(enumerator.value, enumerator.customName);\n const value = enumValue(enumerator.value);\n return { key, value };\n};\n\n/**\n * Represent enum in `meta` object for deduplication\n */\nexport const enumMeta = (model: Model): Required<Model>['meta'] => {\n // serialize enum values in namespace for quick lookup\n const serialized = model.enum\n .map((enumerator) => enumEntry(enumerator))\n .sort((a, b) => sort(a.key, b.key))\n .map((enumerator) => `${enumerator.key}=${enumerator.value}`)\n .join('&');\n return {\n $ref: `enum/${model.name}/${serialized}`,\n name: ensureValidTypeScriptJavaScriptIdentifier(unescapeName(model.name)),\n };\n};\n","import { getType } from '../openApi';\nimport { refParametersPartial, refSchemasPartial } from './const';\nimport { reservedJavaScriptKeywordsRegExp } from './regexp';\nimport { cleanAndTransformTypeName } from './transform';\n\nexport const getParametersMeta = (definitionName: string) => {\n const definitionType = getType({ type: definitionName });\n /**\n * Prefix parameter names to avoid name conflicts with schemas.\n * Assuming people are mostly interested in importing schema types\n * and don't care about this name as much. It should be resolved in\n * a cleaner way, there just isn't a good deduplication strategy\n * today. This is a workaround in the meantime, hopefully reducing\n * the chance of conflicts.\n *\n * Example where this would break: schema named `ParameterFoo` and\n * parameter named `Foo` (this would transform to `ParameterFoo`)\n *\n * Note: there's a related code to this workaround in `getType()`\n * method that needs to be cleaned up when this is addressed.\n */\n const name = `Parameter${definitionType.base.replace(reservedJavaScriptKeywordsRegExp, '_$1')}`;\n const meta = {\n $ref: refParametersPartial + definitionName,\n name,\n };\n return meta;\n};\n\n/**\n * @param definitionName Name of the schema definition in OpenAPI specification.\n * @returns meta object\n */\nexport const getSchemasMeta = (definitionName: string) => {\n const name = cleanAndTransformTypeName(definitionName);\n const meta = {\n $ref: refSchemasPartial + definitionName,\n name,\n };\n return meta;\n};\n","import type ts from 'typescript';\n\nimport { compiler, type Property } from '../compiler';\nimport type { Model } from '../openApi';\nimport { sanitizeOperationParameterName } from '../openApi';\nimport type { Client } from '../types/client';\nimport { getConfig, isLegacyClient } from './config';\nimport { refSchemasPartial } from './const';\nimport { enumValue } from './enum';\nimport { escapeComment, escapeName, unescapeName } from './escape';\nimport { getSchemasMeta } from './meta';\nimport { reservedJavaScriptKeywordsRegExp } from './regexp';\nimport { stringCase } from './stringCase';\nimport { unique } from './unique';\n\nexport const isModelDate = (model: Model): boolean =>\n model.format === 'date' || model.format === 'date-time';\n\nconst base = (model: Model) => {\n const config = getConfig();\n\n if (model.base === 'binary') {\n return compiler.typeUnionNode({\n types: ['Blob', 'File'],\n });\n }\n\n if (config.plugins['@hey-api/transformers']?.dates && isModelDate(model)) {\n return compiler.typeNode('Date');\n }\n\n return compiler.typeNode(model.base);\n};\n\nconst typeReference = (model: Model) => {\n // nullable is false when base is null to avoid duplicate null statements\n const isNullable = model.base === 'null' ? false : model.isNullable;\n let typeNode = base(model);\n /**\n * special handling for single reference. The current approach didn't handle\n * transformed names, this fixes that. We should add a more robust solution,\n * but this will work for now.\n * {@link https://github.com/hey-api/openapi-ts/issues/768}\n */\n if (model.export === 'reference' && model.$refs.length === 1) {\n if (model.$refs[0]!.startsWith(refSchemasPartial)) {\n const meta = getSchemasMeta(model.base);\n typeNode = compiler.typeNode(meta.name);\n }\n }\n const unionNode = compiler.typeUnionNode({\n isNullable,\n types: [typeNode],\n });\n return unionNode;\n};\n\nconst typeArray = (model: Model) => {\n if (model.link) {\n // We treat an array of `model.link` as constant size array definition.\n if (Array.isArray(model.link)) {\n const types = model.link.map((m) => toType(m));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n // Special case where we use tuple to define constant size array.\n if (\n model.export === 'array' &&\n model.maxItems &&\n model.minItems &&\n model.maxItems === model.minItems &&\n model.maxItems <= 100\n ) {\n const types = Array(model.maxItems).fill(toType(model.link));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n return compiler.typeArrayNode([toType(model.link)], model.isNullable);\n }\n\n return compiler.typeArrayNode([base(model)], model.isNullable);\n};\n\nconst typeEnum = (model: Model) => {\n const values = model.enum.map((enumerator) => enumValue(enumerator.value));\n return compiler.typeUnionNode({\n isNullable: model.isNullable,\n types: values,\n });\n};\n\nconst typeDict = (model: Model) => {\n const type =\n model.link && !Array.isArray(model.link) ? toType(model.link) : base(model);\n return compiler.typeRecordNode(['string'], [type], model.isNullable, true);\n};\n\nconst typeUnionOrIntersection = ({\n model,\n style,\n}: {\n model: Model;\n style: 'intersection' | 'union';\n}) => {\n const types = model.properties\n .map((model) => {\n const str = compiler.nodeToString({\n node: toType(model),\n unescape: true,\n });\n return str;\n })\n .filter(unique);\n\n const node =\n style === 'union'\n ? compiler.typeUnionNode({\n // avoid printing duplicate null statements\n isNullable:\n model.isNullable &&\n !model.properties.find((property) => property.isNullable),\n types,\n })\n : compiler.typeIntersectionNode({\n isNullable: model.isNullable,\n types,\n });\n\n // top-level models don't need parentheses around them\n if (model.meta) {\n return node;\n }\n\n return compiler.typeParenthesizedNode({\n type: node,\n });\n};\n\nconst typeInterface = (model: Model) => {\n if (!model.properties.length) {\n return compiler.typeNode('unknown');\n }\n\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n const properties: Property[] = model.properties.map((property) => {\n let maybeRequired = property.isRequired ? '' : '?';\n let value = toType(property);\n let name = !isLegacy\n ? escapeName(unescapeName(transformTypeKeyName(property.name)))\n : // special test for 1XX status codes. We need a more robust system\n // for escaping values depending on context in which they're printed,\n // but since this works for client packages, it's not worth it right now\n /^\\dXX$/.test(property.name)\n ? escapeName(property.name)\n : property.name;\n // special case for additional properties type\n if (property.name === '[key: string]') {\n name = property.name;\n if (maybeRequired) {\n maybeRequired = '';\n value = compiler.typeUnionNode({\n types: [value, 'undefined'],\n });\n }\n }\n return {\n comment: [\n property.description && escapeComment(property.description),\n property.deprecated && '@deprecated',\n ],\n isReadOnly: property.isReadOnly,\n isRequired: maybeRequired === '',\n name,\n type: value,\n };\n });\n\n return compiler.typeInterfaceNode({\n isNullable: model.isNullable,\n properties,\n useLegacyResolution: true,\n });\n};\n\nexport const toType = (model: Model): ts.TypeNode => {\n switch (model.export) {\n case 'all-of':\n return typeUnionOrIntersection({\n model,\n style: 'intersection',\n });\n case 'any-of':\n case 'one-of':\n return typeUnionOrIntersection({\n model,\n style: 'union',\n });\n case 'array':\n return typeArray(model);\n case 'dictionary':\n return typeDict(model);\n case 'enum':\n return typeEnum(model);\n case 'interface':\n return typeInterface(model);\n case 'const':\n case 'generic':\n case 'reference':\n default:\n return typeReference(model);\n }\n};\n\nexport interface SetUniqueTypeNameResult {\n /**\n * Did this function add a new property to the `client.types` object?\n */\n created: boolean;\n /**\n * Unique name for the exported type.\n */\n name: string;\n}\n\n/**\n * Generates a unique name for the exported type for given model meta.\n * @param args.client Internal client instance\n * @param args.count Unique key for deduplication\n * @param args.create If a name record does not exist, should it be created?\n * @param args.meta Meta property from the model\n * @param args.nameTransformer Function for transforming name into the final\n * value. In different contexts, a different strategy might be used. For\n * example, slashes `/` are invalid in TypeScript identifiers, but okay in\n * a JavaScript object key name.\n * @returns {SetUniqueTypeNameResult}\n */\nexport const setUniqueTypeName = ({\n client,\n count = 1,\n create = false,\n meta,\n nameTransformer,\n}: Pick<Required<Model>, 'meta'> & {\n client: Client;\n count?: number;\n create?: boolean;\n nameTransformer?: (value: string) => string;\n}): SetUniqueTypeNameResult => {\n let result: SetUniqueTypeNameResult = {\n created: false,\n name: '',\n };\n let name = meta.name;\n if (nameTransformer) {\n name = nameTransformer(name);\n }\n if (count > 1) {\n name = `${name}${count}`;\n }\n const type = client.types[name];\n if (!type) {\n if (create) {\n client.types[name] = meta;\n result = {\n created: true,\n name,\n };\n }\n } else if (type.$ref === meta.$ref) {\n result = {\n created: false,\n name,\n };\n } else {\n result = setUniqueTypeName({\n client,\n count: count + 1,\n create,\n meta,\n nameTransformer,\n });\n }\n return result;\n};\n\nexport interface UnsetUniqueTypeNameResult {\n /**\n * Did this function delete a property from the `client.types` object?\n */\n deleted: boolean;\n /**\n * Unique name removed from the `client.types` object.\n */\n name: string;\n}\n\nexport const unsetUniqueTypeName = ({\n client,\n name,\n}: {\n client: Client;\n name: string;\n}): UnsetUniqueTypeNameResult => {\n let result: UnsetUniqueTypeNameResult = {\n deleted: false,\n name: '',\n };\n if (!client.types[name]) {\n return result;\n }\n delete client.types[name];\n result = {\n deleted: true,\n name,\n };\n return result;\n};\n\n/**\n * Replaces any invalid characters from a parameter name.\n * For example: 'filter.someProperty' becomes 'filterSomeProperty'.\n */\nexport const transformTypeKeyName = (value: string): string => {\n const config = getConfig();\n\n // transform only for legacy clients\n if (!isLegacyClient(config)) {\n return value;\n }\n\n const name = stringCase({\n case: 'camelCase',\n value: sanitizeOperationParameterName(value),\n }).replace(reservedJavaScriptKeywordsRegExp, '_$1');\n return name;\n};\n","import type { Config } from '../../../types/config';\nimport { getConfig, isLegacyClient } from '../../../utils/config';\nimport { stringCase } from '../../../utils/stringCase';\nimport { transformTypeKeyName } from '../../../utils/type';\nimport type {\n OperationParameter,\n OperationResponse,\n} from '../interfaces/client';\nimport { sanitizeNamespaceIdentifier } from './sanitize';\n\nexport const getOperationKey = (operation: {\n method: string;\n path: string;\n}) => {\n const operationKey = `${operation.method.toUpperCase()} ${operation.path}`;\n return operationKey;\n};\n\nexport const getOperationResponseHeader = (\n operationResponses: OperationResponse[],\n): string | null => {\n const header = operationResponses.find(\n (operationResponses) => operationResponses.in === 'header',\n );\n if (header) {\n return header.name;\n }\n return null;\n};\n\n/**\n * Does this operation have at least one required parameter?\n * @returns boolean\n */\nexport const isOperationParameterRequired = (\n parameters: OperationParameter[],\n) => {\n const isRequired = parameters.some((parameter) => parameter.isRequired);\n return isRequired;\n};\n\n/**\n * Attempts to parse response status code from string into number.\n * @param value string status code from OpenAPI definition\n * @returns Parsed status code or null if invalid value\n */\nexport const parseResponseStatusCode = (\n value: string,\n): OperationResponse['code'] | null => {\n if (value === 'default') {\n return 'default';\n }\n\n if (value === '1XX') {\n return '1XX';\n }\n\n if (value === '2XX') {\n return '2XX';\n }\n\n if (value === '3XX') {\n return '3XX';\n }\n\n if (value === '4XX') {\n return '4XX';\n }\n\n if (value === '5XX') {\n return '5XX';\n }\n\n if (/\\d{3}/g.test(value)) {\n const code = Number.parseInt(value, 10);\n if (code >= 100 && code < 600) {\n return code;\n }\n }\n\n return null;\n};\n\nexport const sorterByResponseStatusCode = (\n a: OperationResponse,\n b: OperationResponse,\n) => {\n if (a.code > b.code) {\n return 1;\n }\n\n if (a.code < b.code) {\n return -1;\n }\n\n return 0;\n};\n\nconst isErrorStatusCode = (code: OperationResponse['code']) =>\n code === '3XX' ||\n code === '4XX' ||\n code === '5XX' ||\n (typeof code === 'number' && code >= 300);\n\nconst isSuccessStatusCode = (code: OperationResponse['code']) =>\n code === '2XX' || (typeof code === 'number' && code >= 200 && code < 300);\n\n/**\n * Detects whether default response is meant to be used\n * for error or success response.\n */\nconst inferDefaultResponseTypes = (\n response: OperationResponse,\n responses: OperationResponse[],\n) => {\n let types: Array<'error' | 'success'> = [];\n\n const addResponseType = (type: (typeof types)[number]) => {\n if (!types.includes(type)) {\n types = [...types, type];\n }\n };\n\n const hasSuccessResponse = responses.some(({ code }) =>\n isSuccessStatusCode(code),\n );\n if (!hasSuccessResponse) {\n addResponseType('success');\n }\n\n const description = (response.description ?? '').toLocaleLowerCase();\n const $refs = response.$refs.join('|').toLocaleLowerCase();\n\n // must be in lowercase\n const errorKeywords = ['error', 'problem'];\n const successKeywords = ['success'];\n\n if (\n successKeywords.some(\n (keyword) => description.includes(keyword) || $refs.includes(keyword),\n )\n ) {\n addResponseType('success');\n }\n\n if (\n errorKeywords.some(\n (keyword) => description.includes(keyword) || $refs.includes(keyword),\n )\n ) {\n addResponseType('error');\n }\n\n if (!types.length) {\n addResponseType('error');\n }\n\n return types;\n};\n\nexport const operationFilterFn = ({\n config,\n operationKey,\n}: {\n config: Config;\n operationKey: string;\n}): boolean => {\n const regexp = config.plugins['@hey-api/sdk']?.filter\n ? new RegExp(config.plugins['@hey-api/sdk']?.filter)\n : undefined;\n return !regexp || regexp.test(operationKey);\n};\n\n/**\n * Convert the input value to a correct operation (method) class name.\n * This will use the operation ID - if available - and otherwise fallback\n * on a generated name from the URL\n */\nexport const operationNameFn = ({\n config,\n method,\n operationId,\n path,\n}: {\n config: Config;\n method: string;\n operationId: string | undefined;\n path: string;\n}): string => {\n if (config.plugins['@hey-api/sdk']?.operationId && operationId) {\n return stringCase({\n case: 'camelCase',\n value: sanitizeNamespaceIdentifier(operationId),\n });\n }\n\n let urlWithoutPlaceholders = path;\n\n // legacy clients ignore the \"api-version\" param since we do not want to\n // add it as the first/default parameter for each of the service calls\n if (isLegacyClient(config)) {\n urlWithoutPlaceholders = urlWithoutPlaceholders.replace(\n /[^/]*?{api-version}.*?\\//g,\n '',\n );\n }\n\n urlWithoutPlaceholders = urlWithoutPlaceholders\n .replace(/{(.*?)}/g, 'by-$1')\n // replace slashes with hyphens for camelcase method at the end\n .replace(/[/:+]/g, '-');\n\n return stringCase({\n case: 'camelCase',\n value: `${method}-${urlWithoutPlaceholders}`,\n });\n};\n\nexport const operationParameterFilterFn = (\n parameter: OperationParameter,\n): boolean => {\n const config = getConfig();\n\n // legacy clients ignore the \"api-version\" param since we do not want to\n // add it as the first/default parameter for each of the service calls\n return !isLegacyClient(config) || parameter.prop !== 'api-version';\n};\n\nexport const operationParameterNameFn = (\n parameter: Omit<OperationParameter, 'name'>,\n): string => {\n const config = getConfig();\n\n return !isLegacyClient(config)\n ? parameter.prop\n : transformTypeKeyName(parameter.prop);\n};\n\nexport const tagResponseTypes = (responses: OperationResponse[]) =>\n responses.map((response) => {\n const { code } = response;\n if (code === 'default') {\n response.responseTypes = inferDefaultResponseTypes(response, responses);\n } else if (isSuccessStatusCode(code)) {\n response.responseTypes = ['success'];\n } else if (isErrorStatusCode(code)) {\n response.responseTypes = ['error'];\n }\n return response;\n });\n","import type { Model } from '../../common/interfaces/client';\nimport type { OpenApiParameter } from '../../v2/interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../../v3/interfaces/OpenApiSchema';\nimport { getDefinitionTypes } from '../../v3/parser/inferType';\nimport type { OperationParameter } from '../interfaces/client';\n\nexport const getDefault = (\n definition: OpenApiSchema | OpenApiParameter,\n model?: Model | OperationParameter,\n): unknown | undefined => {\n if (definition.default === undefined || definition.default === null) {\n return definition.default;\n }\n\n const definitionTypes = getDefinitionTypes(definition);\n\n const type =\n definitionTypes.find((type) => type !== 'null') ||\n typeof definition.default;\n\n switch (type) {\n case 'int':\n case 'integer':\n case 'number':\n if (\n model?.export === 'enum' &&\n model.enum?.[definition.default as number]\n ) {\n const { value } = model.enum[definition.default as number]!;\n return value;\n }\n return definition.default;\n case 'array':\n case 'boolean':\n case 'object':\n case 'string':\n return definition.default;\n default:\n return undefined;\n }\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { operationParameterNameFn } from '../../common/parser/operation';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\n\nexport const getOperationParameter = ({\n openApi,\n parameter,\n types,\n}: {\n openApi: OpenApi;\n parameter: OpenApiParameter;\n types: Client['types'];\n}): OperationParameter => {\n const operationParameterWithoutName: Omit<OperationParameter, 'name'> = {\n $refs: [],\n base: 'unknown',\n description: parameter.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: parameter.exclusiveMaximum,\n exclusiveMinimum: parameter.exclusiveMinimum,\n export: 'interface',\n format: parameter.format,\n imports: [],\n in: parameter.in,\n isDefinition: false,\n isNullable: parameter['x-nullable'] === true,\n isReadOnly: false,\n isRequired: parameter.required === true,\n link: null,\n maxItems: parameter.maxItems,\n maxLength: parameter.maxLength,\n maximum: parameter.maximum,\n mediaType: null,\n minItems: parameter.minItems,\n minLength: parameter.minLength,\n minimum: parameter.minimum,\n multipleOf: parameter.multipleOf,\n pattern: getPattern(parameter.pattern),\n prop: parameter.name,\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: parameter.uniqueItems,\n };\n let operationParameter = {\n ...operationParameterWithoutName,\n name: operationParameterNameFn(operationParameterWithoutName),\n };\n\n if (parameter.$ref) {\n const model = getType({ type: parameter.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n if (parameter.enum) {\n const model = getEnums(parameter, parameter.enum);\n if (model.length) {\n operationParameter = {\n ...operationParameter,\n base: 'string',\n enum: [...operationParameter.enum, ...model],\n export: 'enum',\n type: 'string',\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n }\n\n if (parameter.type === 'array' && parameter.items) {\n const model = getType({\n format: parameter.items.format,\n type: parameter.items.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'array',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n if (parameter.type === 'object' && parameter.items) {\n const model = getType({\n format: parameter.items.format,\n type: parameter.items.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'dictionary',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n let schema = parameter.schema;\n if (schema) {\n if (schema.$ref?.startsWith('#/parameters/')) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n enum: [...operationParameter.enum, ...model.enum],\n enums: [...operationParameter.enums, ...model.enums],\n export: model.export,\n imports: [...operationParameter.imports, ...model.imports],\n link: model.link,\n properties: [...operationParameter.properties, ...model.properties],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n // If the parameter has a type than it can be a basic or generic type.\n if (parameter.type) {\n const model = getType({\n format: parameter.format,\n type: parameter.type,\n });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'generic',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(parameter, operationParameter);\n return operationParameter;\n }\n\n return operationParameter;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameters } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { operationParameterFilterFn } from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport { getOperationParameter } from './getOperationParameter';\n\nconst allowedIn = ['body', 'formData', 'header', 'path', 'query'] as const;\n\nexport const getOperationParameters = ({\n openApi,\n parameters,\n types,\n}: {\n openApi: OpenApi;\n parameters: OpenApiParameter[];\n types: Client['types'];\n}): OperationParameters => {\n const operationParameters: OperationParameters = {\n $refs: [],\n imports: [],\n parameters: [],\n parametersBody: null,\n parametersCookie: [], // not used in v2\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [],\n };\n\n parameters.forEach((parameterOrReference) => {\n const parameterDef = getRef<OpenApiParameter>(\n openApi,\n parameterOrReference,\n );\n const parameter = getOperationParameter({\n openApi,\n parameter: parameterDef,\n types,\n });\n\n const skip = !operationParameterFilterFn(parameter);\n if (!allowedIn.includes(parameterDef.in) || skip) {\n return;\n }\n\n switch (parameterDef.in) {\n case 'body':\n operationParameters.parametersBody = parameter;\n break;\n case 'formData':\n operationParameters.parametersForm = [\n ...operationParameters.parametersForm,\n parameter,\n ];\n break;\n case 'header':\n operationParameters.parametersHeader = [\n ...operationParameters.parametersHeader,\n parameter,\n ];\n break;\n case 'path':\n operationParameters.parametersPath = [\n ...operationParameters.parametersPath,\n parameter,\n ];\n break;\n case 'query':\n operationParameters.parametersQuery = [\n ...operationParameters.parametersQuery,\n parameter,\n ];\n break;\n }\n\n operationParameters.$refs = [\n ...operationParameters.$refs,\n ...parameter.$refs,\n ];\n operationParameters.imports = [\n ...operationParameters.imports,\n ...parameter.imports,\n ];\n operationParameters.parameters = [\n ...operationParameters.parameters,\n parameter,\n ];\n });\n\n return operationParameters;\n};\n","/**\n * Sort list of values and ensure that required parameters are first so that we do not generate\n * invalid types. Optional parameters cannot be positioned after required ones.\n */\nexport function toSortedByRequired<\n T extends { default?: unknown; isRequired: boolean },\n>(values: T[]): T[] {\n return values.sort((a, b) => {\n const aNeedsValue = a.isRequired && a.default === undefined;\n const bNeedsValue = b.isRequired && b.default === undefined;\n if (aNeedsValue && !bNeedsValue) return -1;\n if (bNeedsValue && !aNeedsValue) return 1;\n return 0;\n });\n}\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\n\nexport const getOperationResponse = ({\n code,\n openApi,\n response,\n types,\n}: {\n code: OperationResponse['code'];\n openApi: OpenApi;\n response: OpenApiResponse;\n types: Client['types'];\n}): OperationResponse => {\n const operationResponse: OperationResponse = {\n $refs: [],\n base: code !== 204 ? 'unknown' : 'void',\n code,\n description: response.description || null,\n enum: [],\n enums: [],\n export: 'generic',\n imports: [],\n in: 'response',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n responseTypes: [],\n template: null,\n type: code !== 204 ? 'unknown' : 'void',\n };\n\n let schema = response.schema;\n if (schema) {\n if (schema.$ref?.startsWith('#/responses/')) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationResponse.export = 'reference';\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n return operationResponse;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationResponse.export = model.export;\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.link = model.link;\n operationResponse.isReadOnly = model.isReadOnly;\n operationResponse.isRequired = model.isRequired;\n operationResponse.isNullable = model.isNullable;\n operationResponse.format = model.format;\n operationResponse.maximum = model.maximum;\n operationResponse.exclusiveMaximum = model.exclusiveMaximum;\n operationResponse.minimum = model.minimum;\n operationResponse.exclusiveMinimum = model.exclusiveMinimum;\n operationResponse.multipleOf = model.multipleOf;\n operationResponse.maxLength = model.maxLength;\n operationResponse.minLength = model.minLength;\n operationResponse.maxItems = model.maxItems;\n operationResponse.minItems = model.minItems;\n operationResponse.uniqueItems = model.uniqueItems;\n operationResponse.maxProperties = model.maxProperties;\n operationResponse.minProperties = model.minProperties;\n operationResponse.pattern = getPattern(model.pattern);\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.enum = [...operationResponse.enum, ...model.enum];\n operationResponse.enums = [...operationResponse.enums, ...model.enums];\n operationResponse.properties = [\n ...operationResponse.properties,\n ...model.properties,\n ];\n return operationResponse;\n }\n\n // We support basic properties from response headers, since both\n // fetch and XHR client just support string types.\n if (response.headers) {\n for (const name in response.headers) {\n operationResponse.in = 'header';\n operationResponse.name = name;\n operationResponse.type = 'string';\n operationResponse.base = 'string';\n return operationResponse;\n }\n }\n\n return operationResponse;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n parseResponseStatusCode,\n sorterByResponseStatusCode,\n tagResponseTypes,\n} from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiResponses } from '../interfaces/OpenApiResponses';\nimport { getOperationResponse } from './getOperationResponse';\n\nexport const getOperationResponses = ({\n openApi,\n responses,\n types,\n}: {\n openApi: OpenApi;\n responses: OpenApiResponses;\n types: Client['types'];\n}): OperationResponse[] => {\n let operationResponses: OperationResponse[] = [];\n\n Object.entries(responses).forEach(([responseCode, responseOrReference]) => {\n const code = parseResponseStatusCode(responseCode);\n if (!code) {\n return;\n }\n\n const response = getRef<OpenApiResponse>(openApi, responseOrReference);\n const operationResponse = getOperationResponse({\n code,\n openApi,\n response,\n types,\n });\n operationResponses = [...operationResponses, operationResponse];\n });\n\n operationResponses = tagResponseTypes(operationResponses);\n\n return operationResponses.sort(sorterByResponseStatusCode);\n};\n","import type { Client } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport type {\n Operation,\n OperationParameters,\n} from '../../common/interfaces/client';\nimport {\n getOperationResponseHeader,\n operationNameFn,\n} from '../../common/parser/operation';\nimport { toSortedByRequired } from '../../common/parser/sort';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiOperation } from '../interfaces/OpenApiOperation';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperationResponses } from './getOperationResponses';\n\nexport const getOperation = ({\n method,\n op,\n openApi,\n pathParams,\n types,\n url,\n}: {\n method: Lowercase<Operation['method']>;\n op: OpenApiOperation;\n openApi: OpenApi;\n pathParams: OperationParameters;\n types: Client['types'];\n url: string;\n}): Operation => {\n const operationWithoutName: Omit<Operation, 'name'> = {\n $refs: [],\n deprecated: op.deprecated === true,\n description: op.description || null,\n id: op.operationId || null,\n imports: [],\n method: method.toUpperCase() as Operation['method'],\n parameters: [...pathParams.parameters],\n parametersBody: pathParams.parametersBody,\n parametersCookie: [...pathParams.parametersCookie],\n parametersForm: [...pathParams.parametersForm],\n parametersHeader: [...pathParams.parametersHeader],\n parametersPath: [...pathParams.parametersPath],\n parametersQuery: [...pathParams.parametersQuery],\n path: url,\n responseHeader: null,\n responses: [],\n summary: op.summary || null,\n tags: op.tags || null,\n };\n const operation = {\n ...operationWithoutName,\n name: operationNameFn({\n config: getConfig(),\n method: operationWithoutName.method,\n operationId: op.operationId,\n path: operationWithoutName.path,\n }),\n };\n\n if (op.parameters) {\n const parameters = getOperationParameters({\n openApi,\n parameters: op.parameters,\n types,\n });\n operation.$refs = [...operation.$refs, ...parameters.$refs];\n operation.imports = [...operation.imports, ...parameters.imports];\n operation.parameters = [...operation.parameters, ...parameters.parameters];\n operation.parametersBody = parameters.parametersBody;\n operation.parametersCookie = [\n ...operation.parametersCookie,\n ...parameters.parametersCookie,\n ];\n operation.parametersForm = [\n ...operation.parametersForm,\n ...parameters.parametersForm,\n ];\n operation.parametersHeader = [\n ...operation.parametersHeader,\n ...parameters.parametersHeader,\n ];\n operation.parametersPath = [\n ...operation.parametersPath,\n ...parameters.parametersPath,\n ];\n operation.parametersQuery = [\n ...operation.parametersQuery,\n ...parameters.parametersQuery,\n ];\n }\n\n if (op.responses) {\n operation.responses = getOperationResponses({\n openApi,\n responses: op.responses,\n types,\n });\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n operation.responseHeader = getOperationResponseHeader(successResponses);\n\n successResponses.forEach((response) => {\n operation.$refs = [...operation.$refs, ...response.$refs];\n operation.imports = [...operation.imports, ...response.imports];\n });\n }\n\n operation.parameters = toSortedByRequired(operation.parameters);\n\n return operation;\n};\n","import { getConfig } from '../../../utils/config';\nimport type { Client, Operation } from '../../common/interfaces/client';\nimport {\n getOperationKey,\n operationFilterFn,\n} from '../../common/parser/operation';\nimport { allowedServiceMethods } from '../../common/parser/service';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperation } from './operation';\n\nexport const getOperations = ({\n openApi,\n types,\n}: {\n openApi: OpenApi;\n types: Client['types'];\n}): Operation[] => {\n const operationIds = new Map<string, string>();\n const operations: Operation[] = [];\n\n const config = getConfig();\n\n for (const path in openApi.paths) {\n const pathItem = openApi.paths[path]!;\n const pathParameters = getOperationParameters({\n openApi,\n parameters: pathItem.parameters ?? [],\n types,\n });\n\n for (const name in pathItem) {\n const method = name as Lowercase<Operation['method']>;\n\n const operationKey = getOperationKey({\n method,\n path,\n });\n\n if (allowedServiceMethods.includes(method)) {\n const op = pathItem[method]!;\n\n if (op.operationId) {\n if (operationIds.has(op.operationId)) {\n if (config.logs.level !== 'silent') {\n console.warn(\n `❗️ Duplicate operationId: ${op.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n }\n } else {\n operationIds.set(op.operationId, operationKey);\n }\n }\n\n if (\n operationFilterFn({\n config,\n operationKey,\n })\n ) {\n const operation = getOperation({\n method,\n op,\n openApi,\n pathParams: pathParameters,\n types,\n url: path,\n });\n operations.push(operation);\n }\n }\n }\n }\n\n return operations;\n};\n","import type { OpenApi } from '../interfaces/OpenApi';\n\n/**\n * Get the base server url.\n * @param openApi\n */\nexport const getServer = (openApi: OpenApi): string => {\n const scheme = openApi.schemes?.[0] || 'http';\n const host = openApi.host;\n const basePath = openApi.basePath || '';\n const url = host ? `${scheme}://${host}${basePath}` : basePath;\n return url.replace(/\\/$/g, '');\n};\n","import type { Client } from '../common/interfaces/client';\nimport { getServiceVersion } from '../common/parser/service';\nimport type { OpenApi } from './interfaces/OpenApi';\nimport { getModels } from './parser/getModels';\nimport { getOperations } from './parser/getOperations';\nimport { getServer } from './parser/getServer';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, operations and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport const parse = (openApi: OpenApi): Omit<Client, 'config'> => {\n const version = getServiceVersion(openApi.info.version);\n const server = getServer(openApi);\n const { models, types } = getModels(openApi);\n const operations = getOperations({ openApi, types });\n\n return {\n models,\n operations,\n server,\n types,\n version,\n };\n};\n","import type { Model } from '../../common/interfaces/client';\nimport type { Dictionary } from '../../common/interfaces/Dictionary';\nimport { stripNamespace } from '../../common/parser/stripNamespace';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiDiscriminator } from '../interfaces/OpenApiDiscriminator';\n\nconst inverseDictionary = (map: Dictionary<string>): Dictionary<string> => {\n const m2: Dictionary<string> = {};\n for (const name in map) {\n m2[map[name]!] = name;\n }\n return m2;\n};\n\nexport const findOneOfParentDiscriminator = (\n openApi: OpenApi,\n parent?: Model,\n): OpenApiDiscriminator | undefined => {\n if (openApi.components && parent) {\n for (const definitionName in openApi.components.schemas) {\n if (openApi.components.schemas.hasOwnProperty(definitionName)) {\n const schema = openApi.components.schemas[definitionName]!;\n if (\n schema.discriminator &&\n schema.oneOf?.length &&\n schema.oneOf.some(\n (definition) =>\n definition.$ref && stripNamespace(definition.$ref) == parent.name,\n )\n ) {\n return schema.discriminator;\n }\n }\n }\n }\n return undefined;\n};\n\nexport const mapPropertyValue = (\n discriminator: OpenApiDiscriminator,\n parent: Model,\n): string => {\n if (discriminator.mapping) {\n const mapping = inverseDictionary(discriminator.mapping);\n const key = Object.keys(mapping).find(\n (item) => stripNamespace(item) == parent.name,\n );\n if (key && mapping[key]) {\n return mapping[key];\n }\n }\n return parent.name;\n};\n","import type { Client } from '../../../types/client';\nimport { escapeName } from '../../../utils/escape';\nimport { unique } from '../../../utils/unique';\nimport type { Model } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport {\n findOneOfParentDiscriminator,\n mapPropertyValue,\n} from './discriminator';\nimport { isDefinitionNullable } from './inferType';\n\nexport const getAdditionalPropertiesModel = ({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n}: {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n model: Model;\n openApi: OpenApi;\n types: Client['types'];\n}): Model => {\n const ap =\n typeof definition.additionalProperties === 'object'\n ? definition.additionalProperties\n : {};\n const apModel = getModel({\n debug,\n definition: ap,\n openApi,\n parentDefinition: definition,\n types,\n });\n\n if (ap.$ref) {\n const apType = getType({ type: ap.$ref });\n model.base = apType.base;\n model.default = getDefault(definition, model);\n model.export = 'dictionary';\n model.imports.push(...apType.imports);\n model.template = apType.template;\n model.type = apType.type;\n return model;\n }\n\n if (\n definition.additionalProperties &&\n definition.properties &&\n Object.keys(definition.properties).length > 0\n ) {\n const additionalPropertiesType =\n typeof definition.additionalProperties === 'object' &&\n definition.additionalProperties.type &&\n !Array.isArray(definition.additionalProperties.type)\n ? definition.additionalProperties.type\n : apModel.base;\n const additionalProperties = [\n getType({ type: additionalPropertiesType }).base,\n ...model.properties.map((property) => property.base),\n ];\n apModel.base = additionalProperties.filter(unique).join(' | ');\n apModel.default = getDefault(definition, model);\n apModel.export = 'generic';\n apModel.isRequired = definition.additionalProperties === true;\n apModel.name = '[key: string]';\n return apModel;\n }\n\n model.base = apModel.base;\n model.default = getDefault(definition, model);\n model.export = 'dictionary';\n model.imports.push(...apModel.imports);\n model.link = apModel;\n model.template = apModel.template;\n model.type = apModel.type;\n return model;\n};\n\nexport const getModelProperties = ({\n debug,\n definition,\n getModel,\n openApi,\n parent,\n types,\n}: {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n openApi: OpenApi;\n parent?: Model;\n types: Client['types'];\n}): Model[] => {\n let models: Model[] = [];\n const discriminator = findOneOfParentDiscriminator(openApi, parent);\n\n Object.entries(definition.properties ?? {}).forEach(\n ([propertyName, property]) => {\n const propertyRequired = Boolean(\n definition.required?.includes(propertyName),\n );\n\n const propertyValues: Omit<\n Model,\n | '$refs'\n | 'base'\n | 'enum'\n | 'enums'\n | 'export'\n | 'imports'\n | 'isNullable'\n | 'link'\n | 'properties'\n | 'template'\n | 'type'\n > = {\n default: property.default,\n deprecated: property.deprecated === true,\n description: property.description || null,\n exclusiveMaximum: property.exclusiveMaximum,\n exclusiveMinimum: property.exclusiveMinimum,\n format:\n property.type === 'array'\n ? (property.items?.format ?? property.format)\n : property.format,\n in: '',\n isDefinition: false,\n isReadOnly: property.readOnly === true,\n isRequired: propertyRequired,\n maxItems: property.maxItems,\n maxLength: property.maxLength,\n maxProperties: property.maxProperties,\n maximum: property.maximum,\n minItems: property.minItems,\n minLength: property.minLength,\n minProperties: property.minProperties,\n minimum: property.minimum,\n multipleOf: property.multipleOf,\n name: escapeName(propertyName),\n pattern: getPattern(property.pattern),\n uniqueItems: property.uniqueItems,\n };\n\n if (parent && discriminator?.propertyName == propertyName) {\n models = [\n ...models,\n {\n ...propertyValues,\n $refs: [],\n base: `'${mapPropertyValue(discriminator, parent)}'`,\n enum: [],\n enums: [],\n export: 'reference',\n imports: [],\n isNullable: isDefinitionNullable(property),\n link: null,\n properties: [],\n template: null,\n type: 'string',\n },\n ];\n return;\n }\n\n if (property.$ref) {\n const model = getType({ type: property.$ref });\n models = [\n ...models,\n {\n ...propertyValues,\n $refs: model.$refs,\n base: model.base,\n enum: [],\n enums: [],\n export: 'reference',\n imports: model.imports,\n isNullable: model.isNullable || isDefinitionNullable(property),\n link: null,\n properties: [],\n template: model.template,\n type: model.type,\n },\n ];\n return;\n }\n\n const model = getModel({\n debug,\n definition: property,\n initialValues: propertyValues,\n openApi,\n parentDefinition: definition,\n types,\n });\n model.isNullable = model.isNullable || isDefinitionNullable(property);\n models = [...models, model];\n },\n );\n\n return models;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getRequiredPropertiesFromComposition = ({\n debug,\n definitions,\n getModel,\n openApi,\n required,\n types,\n}: {\n debug?: boolean;\n definitions: OpenApiSchema[];\n getModel: GetModelFn;\n openApi: OpenApi;\n required: string[];\n types: Client['types'];\n}): Model[] => {\n const requiredProperties = definitions\n .reduce((properties, definition) => {\n if (definition.$ref) {\n const type = getType({ type: definition.$ref });\n // avoid circular references if two refs reference each other\n // if (types[type.base] && types[type.base].$ref === definition.$ref) {\n // const schema = getRef<OpenApiSchema>(openApi, definition);\n // return [...properties]\n // }\n\n const meta = {\n $ref: definition.$ref,\n name: type.base,\n };\n types[type.base] = meta;\n const schema = getRef<OpenApiSchema>(openApi, definition);\n return [\n ...properties,\n ...getModel({\n debug,\n definition: schema,\n meta,\n openApi,\n types,\n }).properties,\n ];\n }\n\n return [\n ...properties,\n ...getModel({\n debug,\n definition,\n openApi,\n parentDefinition: definition,\n types,\n }).properties,\n ];\n }, [] as Model[])\n .filter(\n (property) => !property.isRequired && required.includes(property.name),\n )\n .map((property) => ({\n ...property,\n isRequired: true,\n }));\n\n return requiredProperties;\n};\n","import type { Client } from '../../../types/client';\nimport type { Model, ModelComposition } from '../../common/interfaces/client';\nimport type { GetModelFn } from '../interfaces/Model';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModelProperties } from './getModelProperties';\nimport { getRequiredPropertiesFromComposition } from './getRequiredPropertiesFromComposition';\n\ntype Composition = {\n definitions: OpenApiSchema[];\n type: ModelComposition['export'];\n};\n\nexport const findModelComposition = (\n definition: OpenApiSchema,\n): Composition | undefined => {\n const compositions: ReadonlyArray<{\n definitions: Composition['definitions'] | undefined;\n type: Composition['type'];\n }> = [\n {\n definitions: definition.allOf,\n type: 'all-of',\n },\n {\n definitions: definition.anyOf,\n type: 'any-of',\n },\n {\n definitions: definition.oneOf,\n type: 'one-of',\n },\n ];\n return compositions.find(\n (composition) => composition.definitions?.length,\n ) as ReturnType<typeof findModelComposition>;\n};\n\nexport const getModelComposition = ({\n debug,\n definition,\n definitions,\n getModel,\n model,\n openApi,\n type,\n types,\n}: Composition &\n Pick<Client, 'types'> & {\n debug?: boolean;\n definition: OpenApiSchema;\n getModel: GetModelFn;\n model: Model;\n openApi: OpenApi;\n }): ModelComposition => {\n const composition: ModelComposition = {\n $refs: model.$refs,\n enums: model.enums,\n export: type,\n imports: model.imports,\n properties: model.properties,\n };\n\n let properties: Model[] = [];\n\n definitions\n .map((def) => {\n const modelFromDef = getModel({\n debug,\n definition: def,\n openApi,\n parentDefinition: definition,\n types,\n });\n return modelFromDef;\n })\n .forEach((model) => {\n composition.$refs = [...composition.$refs, ...model.$refs];\n composition.imports = [...composition.imports, ...model.imports];\n composition.enums = [...composition.enums, ...model.enums];\n composition.properties = [...composition.properties, model];\n });\n\n if (definition.required && type === 'all-of') {\n const requiredProperties = getRequiredPropertiesFromComposition({\n debug,\n definitions,\n getModel,\n openApi,\n required: definition.required,\n types,\n });\n requiredProperties.forEach((requiredProperty) => {\n composition.$refs = [...composition.$refs, ...requiredProperty.$refs];\n composition.imports = [\n ...composition.imports,\n ...requiredProperty.imports,\n ];\n composition.enums = [...composition.enums, ...requiredProperty.enums];\n });\n properties = [...properties, ...requiredProperties];\n }\n\n if (definition.properties) {\n const modelProperties = getModelProperties({\n definition,\n getModel,\n openApi,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n composition.$refs = [...composition.$refs, ...modelProperty.$refs];\n composition.imports = [...composition.imports, ...modelProperty.imports];\n composition.enums = [...composition.enums, ...modelProperty.enums];\n if (modelProperty.export === 'enum') {\n composition.enums = [...composition.enums, modelProperty];\n }\n });\n properties = [...properties, ...modelProperties];\n }\n\n if (properties.length) {\n const foundComposition = findModelComposition(definition);\n if (foundComposition) {\n const propertiesProperty: Model = {\n $refs: [],\n base: 'unknown',\n description: '',\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: 'properties',\n properties,\n template: null,\n type: 'unknown',\n };\n\n if (foundComposition.type === 'one-of') {\n composition.properties = [\n {\n ...composition,\n base: '',\n description: null,\n enum: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: true,\n link: null,\n name: '',\n template: null,\n type: '',\n },\n propertiesProperty,\n ];\n composition.export = 'all-of';\n } else {\n composition.properties = [\n ...composition.properties,\n propertiesProperty,\n ];\n }\n }\n }\n\n return composition;\n};\n","import type { Client } from '../../../types/client';\nimport { enumMeta } from '../../../utils/enum';\nimport type { Model, ModelMeta } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getEnums } from '../../common/parser/getEnums';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport {\n findModelComposition,\n getModelComposition,\n} from './getModelComposition';\nimport {\n getAdditionalPropertiesModel,\n getModelProperties,\n} from './getModelProperties';\nimport {\n getDefinitionTypes,\n inferType,\n isDefinitionNullable,\n} from './inferType';\n\nexport const getModel = ({\n debug,\n definition,\n initialValues = {},\n isDefinition = false,\n meta,\n openApi,\n parentDefinition = null,\n types,\n}: Pick<Client, 'types'> & {\n debug?: boolean;\n definition: OpenApiSchema;\n /**\n * Pass through initial model values\n */\n initialValues?: Partial<Model>;\n isDefinition?: boolean;\n meta?: ModelMeta;\n openApi: OpenApi;\n parentDefinition?: OpenApiSchema | null;\n}): Model => {\n const definitionTypes = getDefinitionTypes(definition);\n const inferredType = inferType(definition, definitionTypes);\n\n const model: Model = {\n $refs: [],\n base: 'unknown',\n deprecated: Boolean(definition.deprecated),\n description: definition.description || null,\n enum: [],\n enums: [],\n exclusiveMaximum: definition.exclusiveMaximum,\n exclusiveMinimum: definition.exclusiveMinimum,\n export: 'interface',\n format: definition.format,\n imports: [],\n in: '',\n isDefinition,\n isNullable: isDefinitionNullable(definition),\n isReadOnly: definition.readOnly === true,\n isRequired: false,\n link: null,\n maxItems: definition.maxItems,\n maxLength: definition.maxLength,\n maxProperties: definition.maxProperties,\n maximum: definition.maximum,\n meta,\n minItems: definition.minItems,\n minLength: definition.minLength,\n minProperties: definition.minProperties,\n minimum: definition.minimum,\n multipleOf: definition.multipleOf,\n name: meta?.name ?? '',\n pattern: getPattern(definition.pattern),\n properties: [],\n template: null,\n type: 'unknown',\n uniqueItems: definition.uniqueItems,\n ...initialValues,\n };\n\n if (definition.$ref) {\n const definitionRef = getType({\n debug,\n type: definition.$ref,\n });\n model.$refs = [...model.$refs, decodeURIComponent(definition.$ref)];\n model.base = definitionRef.base;\n model.export = 'reference';\n model.imports = [...model.imports, ...definitionRef.imports];\n model.template = definitionRef.template;\n model.type = definitionRef.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (inferredType === 'enum') {\n const enums = getEnums(definition, definition.enum);\n if (enums.length) {\n model.base = 'string';\n model.enum = [...model.enum, ...enums];\n model.export = 'enum';\n model.type = 'string';\n model.default = getDefault(definition, model);\n if (!model.meta) {\n model.meta = enumMeta(model);\n }\n return model;\n }\n }\n\n if (\n definitionTypes.includes('array') &&\n (definition.items || definition.prefixItems)\n ) {\n if (definition.prefixItems) {\n const arrayItems = definition.prefixItems.map((item) =>\n getModel({\n definition: item,\n openApi,\n parentDefinition: definition,\n types,\n }),\n );\n\n model.export = 'array';\n model.$refs = [\n ...model.$refs,\n ...arrayItems.reduce(\n (acc, m) => [...acc, ...m.$refs],\n [] as Model['$refs'],\n ),\n ];\n model.imports = [\n ...model.imports,\n ...arrayItems.reduce(\n (acc, m) => [...acc, ...m.imports],\n [] as Model['imports'],\n ),\n ];\n model.link = arrayItems;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (!definition.items) {\n return model;\n }\n\n if (definition.items.$ref) {\n const arrayItems = getType({ type: definition.items.$ref });\n model.$refs = [...model.$refs, decodeURIComponent(definition.items.$ref)];\n model.base = arrayItems.base;\n model.export = 'array';\n model.imports = [...model.imports, ...arrayItems.imports];\n model.template = arrayItems.template;\n model.type = arrayItems.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n if (definition.items.anyOf && parentDefinition && parentDefinition.type) {\n const foundComposition = findModelComposition(parentDefinition);\n if (\n foundComposition &&\n foundComposition.definitions.some(\n (definition) => !getDefinitionTypes(definition).includes('array'),\n )\n ) {\n return getModel({\n definition: definition.items,\n openApi,\n parentDefinition: definition,\n types,\n });\n }\n }\n\n /**\n * if items are a plain array, infer any-of composition\n * {@link} https://github.com/ferdikoomen/openapi-typescript-codegen/issues/2062\n */\n const arrayItemsDefinition: OpenApiSchema = Array.isArray(definition.items)\n ? {\n anyOf: definition.items,\n }\n : definition.items;\n const arrayItems = getModel({\n definition: arrayItemsDefinition,\n openApi,\n parentDefinition: definition,\n types,\n });\n model.base = arrayItems.base;\n model.export = 'array';\n model.$refs = [...model.$refs, ...arrayItems.$refs];\n model.imports = [...model.imports, ...arrayItems.imports];\n model.link = arrayItems;\n model.template = arrayItems.template;\n model.type = arrayItems.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n const foundComposition = findModelComposition(definition);\n if (foundComposition) {\n const composition = getModelComposition({\n ...foundComposition,\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n const result = { ...model, ...composition };\n return result;\n }\n\n if (\n definitionTypes.includes('object') ||\n definition.properties ||\n definition.additionalProperties\n ) {\n if (\n definition.properties &&\n (Object.keys(definition.properties).length > 0 ||\n !definition.additionalProperties)\n ) {\n model.base = 'unknown';\n model.export = 'interface';\n model.type = 'unknown';\n model.default = getDefault(definition, model);\n\n const modelProperties = getModelProperties({\n debug,\n definition,\n getModel,\n openApi,\n parent: model,\n types,\n });\n modelProperties.forEach((modelProperty) => {\n model.$refs = [...model.$refs, ...modelProperty.$refs];\n model.enums = [...model.enums, ...modelProperty.enums];\n model.imports = [...model.imports, ...modelProperty.imports];\n model.properties = [...model.properties, modelProperty];\n if (modelProperty.export === 'enum') {\n model.enums = [...model.enums, modelProperty];\n }\n });\n\n if (definition.additionalProperties) {\n const modelProperty = getAdditionalPropertiesModel({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n model.properties = [...model.properties, modelProperty];\n }\n\n // objects with no explicit properties accept any key/value pair\n if (\n !model.properties.length &&\n model.base === 'unknown' &&\n model.type === 'unknown'\n ) {\n model.export = 'dictionary';\n if (!model.name) {\n model.name = '[key: string]';\n }\n }\n\n return model;\n }\n\n const result = getAdditionalPropertiesModel({\n debug,\n definition,\n getModel,\n model,\n openApi,\n types,\n });\n return result;\n }\n\n if (definition.const !== undefined) {\n const definitionConst = definition.const;\n const modelConst =\n typeof definitionConst === 'string'\n ? `\"${definitionConst}\"`\n : `${definitionConst}`;\n model.base = modelConst;\n model.export = 'const';\n model.type = modelConst;\n return model;\n }\n\n // If the schema has a type than it can be a basic or generic type.\n if (definitionTypes.length) {\n const definitionType = getType({\n format: definition.format,\n type: definition.type,\n });\n model.base = definitionType.base;\n model.export = 'generic';\n model.$refs = [...model.$refs, ...definitionType.$refs];\n model.imports = [...model.imports, ...definitionType.imports];\n model.isNullable = definitionType.isNullable || model.isNullable;\n model.template = definitionType.template;\n model.type = definitionType.type;\n model.default = getDefault(definition, model);\n return model;\n }\n\n return model;\n};\n","import type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport const getParameterSchema = (\n definition: OpenApiParameter,\n): OpenApiSchema | undefined => {\n if (definition.schema) {\n return definition.schema;\n }\n\n if (definition.content) {\n // treat every media type the same for now, types should be modified to\n // preserve this data so client knows which headers to use and how to\n // parse response bodies\n const contents = Object.entries(definition.content);\n for (const [key, mediaTypeObject] of contents) {\n if (mediaTypeObject.schema) {\n const mediaType = key as keyof Required<OpenApiParameter>['content'];\n return definition.content[mediaType].schema;\n }\n }\n }\n};\n","import type { Client } from '../../../types/client';\nimport { getParametersMeta, getSchemasMeta } from '../../../utils/meta';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getModel } from './getModel';\nimport { getParameterSchema } from './parameter';\n\nexport const getModels = (\n openApi: OpenApi,\n): Pick<Client, 'models' | 'types'> => {\n const types: Client['types'] = {};\n let models: Client['models'] = [];\n\n if (!openApi.components) {\n return {\n models,\n types,\n };\n }\n\n Object.entries(openApi.components.schemas ?? {}).forEach(\n ([definitionName, definition]) => {\n const meta = getSchemasMeta(definitionName);\n types[meta.name] = meta;\n const model = getModel({\n definition,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n models = [...models, model];\n },\n );\n\n Object.entries(openApi.components.parameters ?? {}).forEach(\n ([definitionName, definition]) => {\n const schema = getParameterSchema(definition);\n if (!schema) {\n return;\n }\n\n const meta = getParametersMeta(definitionName);\n types[meta.name] = meta;\n const model = getModel({\n definition: schema,\n isDefinition: true,\n meta,\n openApi,\n types,\n });\n model.deprecated = definition.deprecated;\n model.description = definition.description || null;\n models = [...models, model];\n },\n );\n\n return {\n models,\n types,\n };\n};\n","import type { Client } from '../../../types/client';\nimport { refParametersPartial } from '../../../utils/const';\nimport { enumMeta } from '../../../utils/enum';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getDefault } from '../../common/parser/getDefault';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { operationParameterNameFn } from '../../common/parser/operation';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getModel } from './getModel';\nimport { isDefinitionNullable } from './inferType';\nimport { getParameterSchema } from './parameter';\n\nexport const getOperationParameter = ({\n openApi,\n parameter,\n types,\n}: {\n openApi: OpenApi;\n parameter: OpenApiParameter;\n types: Client['types'];\n}): OperationParameter => {\n const operationParameterWithoutName: Omit<OperationParameter, 'name'> = {\n $refs: [],\n base: 'unknown',\n deprecated: parameter.deprecated === true,\n description: parameter.description || null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: parameter.in,\n isDefinition: false,\n isNullable: isDefinitionNullable(parameter),\n isReadOnly: false,\n isRequired: parameter.required === true,\n link: null,\n mediaType: null,\n prop: parameter.name,\n properties: [],\n template: null,\n type: 'unknown',\n };\n let operationParameter = {\n ...operationParameterWithoutName,\n name: operationParameterNameFn(operationParameterWithoutName),\n };\n\n if (parameter.$ref) {\n const model = getType({ type: parameter.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n return operationParameter;\n }\n\n let schema = getParameterSchema(parameter);\n if (schema) {\n if (schema.$ref?.startsWith(refParametersPartial)) {\n schema = getRef<OpenApiSchema>(openApi, schema);\n }\n\n if (schema.$ref) {\n const model = getType({ type: schema.$ref });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n export: 'reference',\n imports: [...operationParameter.imports, ...model.imports],\n template: model.template,\n type: model.type,\n };\n operationParameter.default = getDefault(schema);\n return operationParameter;\n }\n\n const model = getModel({ definition: schema, openApi, types });\n operationParameter = {\n ...operationParameter,\n $refs: [...operationParameter.$refs, ...model.$refs],\n base: model.base,\n enum: [...operationParameter.enum, ...model.enum],\n enums: [...operationParameter.enums, ...model.enums],\n exclusiveMaximum: model.exclusiveMaximum,\n exclusiveMinimum: model.exclusiveMinimum,\n export: model.export,\n format: model.format,\n imports: [...operationParameter.imports, ...model.imports],\n isNullable: operationParameter.isNullable || model.isNullable,\n isReadOnly: model.isReadOnly,\n isRequired: operationParameter.isRequired || model.isRequired,\n link: model.link,\n maxItems: model.maxItems,\n maxLength: model.maxLength,\n maxProperties: model.maxProperties,\n maximum: model.maximum,\n minItems: model.minItems,\n minLength: model.minLength,\n minProperties: model.minProperties,\n minimum: model.minimum,\n multipleOf: model.multipleOf,\n pattern: getPattern(model.pattern),\n properties: [...operationParameter.properties, ...model.properties],\n template: model.template,\n type: model.type,\n uniqueItems: model.uniqueItems,\n };\n if (\n (operationParameter.enum.length || operationParameter.enums.length) &&\n !operationParameter.meta\n ) {\n operationParameter.meta = enumMeta(operationParameter);\n }\n operationParameter.default = model.default;\n return operationParameter;\n }\n\n return operationParameter;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameters } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport { operationParameterFilterFn } from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiParameter } from '../interfaces/OpenApiParameter';\nimport { getOperationParameter } from './getOperationParameter';\n\nconst allowedIn = ['cookie', 'formData', 'header', 'path', 'query'] as const;\n\nexport const getOperationParameters = ({\n openApi,\n parameters,\n types,\n}: {\n openApi: OpenApi;\n parameters: OpenApiParameter[];\n types: Client['types'];\n}): OperationParameters => {\n const operationParameters: OperationParameters = {\n $refs: [],\n imports: [],\n parameters: [],\n parametersBody: null,\n parametersCookie: [],\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [], // not used in v3 -> @see requestBody\n };\n\n parameters.forEach((parameterOrReference) => {\n const parameterDef = getRef<OpenApiParameter>(\n openApi,\n parameterOrReference,\n );\n const parameter = getOperationParameter({\n openApi,\n parameter: parameterDef,\n types,\n });\n\n const skip = !operationParameterFilterFn(parameter);\n if (!allowedIn.includes(parameterDef.in) || skip) {\n return;\n }\n\n switch (parameterDef.in) {\n case 'cookie':\n operationParameters.parametersCookie = [\n ...operationParameters.parametersCookie,\n parameter,\n ];\n break;\n case 'formData':\n operationParameters.parametersForm = [\n ...operationParameters.parametersForm,\n parameter,\n ];\n break;\n case 'header':\n operationParameters.parametersHeader = [\n ...operationParameters.parametersHeader,\n parameter,\n ];\n break;\n case 'path':\n operationParameters.parametersPath = [\n ...operationParameters.parametersPath,\n parameter,\n ];\n break;\n case 'query':\n operationParameters.parametersQuery = [\n ...operationParameters.parametersQuery,\n parameter,\n ];\n break;\n }\n\n operationParameters.$refs = [\n ...operationParameters.$refs,\n ...parameter.$refs,\n ];\n operationParameters.imports = [\n ...operationParameters.imports,\n ...parameter.imports,\n ];\n operationParameters.parameters = [\n ...operationParameters.parameters,\n parameter,\n ];\n });\n\n return operationParameters;\n};\n","import type { Dictionary } from '../../common/interfaces/Dictionary';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiMediaType } from '../interfaces/OpenApiMediaType';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\n\nexport interface Content {\n mediaType: string;\n schema: OpenApiSchema;\n}\n\nconst BASIC_MEDIA_TYPES = [\n 'application/json-patch+json',\n 'application/json',\n 'application/ld+json',\n 'application/x-www-form-urlencoded',\n 'multipart/batch',\n 'multipart/form-data',\n 'multipart/mixed',\n 'multipart/related',\n 'text/json',\n 'text/plain',\n];\n\nexport const getContent = (\n openApi: OpenApi,\n content: Dictionary<OpenApiMediaType>,\n): Content | undefined => {\n const basicMediaTypeWithSchema = Object.keys(content)\n .filter((mediaType) => {\n const cleanMediaType = mediaType.split(';')[0]!.trim();\n return BASIC_MEDIA_TYPES.includes(cleanMediaType);\n })\n .find((mediaType) => Boolean(content[mediaType]?.schema));\n\n if (basicMediaTypeWithSchema) {\n return {\n mediaType: basicMediaTypeWithSchema,\n schema: content[basicMediaTypeWithSchema]!.schema as OpenApiSchema,\n };\n }\n\n const firstMediaTypeWithSchema = Object.keys(content).find((mediaType) =>\n Boolean(content[mediaType]?.schema),\n );\n\n if (firstMediaTypeWithSchema) {\n return {\n mediaType: firstMediaTypeWithSchema,\n schema: content[firstMediaTypeWithSchema]!.schema as OpenApiSchema,\n };\n }\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationParameter } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';\nimport { getContent } from './getContent';\nimport { getModel } from './getModel';\n\nexport const getOperationRequestBody = ({\n body,\n debug,\n openApi,\n types,\n}: {\n body: OpenApiRequestBody;\n debug?: boolean;\n openApi: OpenApi;\n types: Client['types'];\n}): OperationParameter => {\n const name = body['x-body-name'] ?? 'requestBody';\n\n const requestBody: OperationParameter = {\n $refs: [],\n base: 'unknown',\n default: undefined,\n description: body.description || null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: 'body',\n isDefinition: false,\n isNullable: body.nullable === true,\n isReadOnly: false,\n isRequired: body.required === true,\n link: null,\n mediaType: null,\n name,\n prop: name,\n properties: [],\n template: null,\n type: 'unknown',\n };\n\n if (!body.content) {\n return requestBody;\n }\n\n const content = getContent(openApi, body.content);\n if (!content) {\n return requestBody;\n }\n\n requestBody.mediaType = content.mediaType;\n\n switch (requestBody.mediaType) {\n case 'application/x-www-form-urlencoded':\n case 'multipart/form-data':\n requestBody.in = 'formData';\n requestBody.name = 'formData';\n requestBody.prop = 'formData';\n break;\n }\n\n if (content.schema.$ref) {\n const model = getType({ type: content.schema.$ref });\n requestBody.export = 'reference';\n requestBody.type = model.type;\n requestBody.base = model.base;\n requestBody.template = model.template;\n requestBody.$refs = [...requestBody.$refs, ...model.$refs];\n requestBody.imports = [...requestBody.imports, ...model.imports];\n return requestBody;\n }\n\n const model = getModel({\n debug,\n definition: content.schema,\n openApi,\n types,\n });\n requestBody.$refs = [...requestBody.$refs, ...model.$refs];\n requestBody.base = model.base;\n requestBody.enum = [...requestBody.enum, ...model.enum];\n requestBody.enums = [...requestBody.enums, ...model.enums];\n requestBody.exclusiveMaximum = model.exclusiveMaximum;\n requestBody.exclusiveMinimum = model.exclusiveMinimum;\n requestBody.export = model.export;\n requestBody.format = model.format;\n requestBody.imports = [...requestBody.imports, ...model.imports];\n requestBody.isNullable = requestBody.isNullable || model.isNullable;\n requestBody.isReadOnly = model.isReadOnly;\n requestBody.isRequired = requestBody.isRequired || model.isRequired;\n requestBody.link = model.link;\n requestBody.maximum = model.maximum;\n requestBody.maxItems = model.maxItems;\n requestBody.maxLength = model.maxLength;\n requestBody.maxProperties = model.maxProperties;\n requestBody.minimum = model.minimum;\n requestBody.minItems = model.minItems;\n requestBody.minLength = model.minLength;\n requestBody.minProperties = model.minProperties;\n requestBody.multipleOf = model.multipleOf;\n requestBody.pattern = getPattern(model.pattern);\n requestBody.properties = [...requestBody.properties, ...model.properties];\n requestBody.template = model.template;\n requestBody.type = model.type;\n requestBody.uniqueItems = model.uniqueItems;\n return requestBody;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getPattern } from '../../common/parser/getPattern';\nimport { getRef } from '../../common/parser/getRef';\nimport { getType } from '../../common/parser/type';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiSchema } from '../interfaces/OpenApiSchema';\nimport { getContent } from './getContent';\nimport { getModel } from './getModel';\n\nexport const getOperationResponse = ({\n code,\n openApi,\n response,\n types,\n}: {\n code: OperationResponse['code'];\n openApi: OpenApi;\n response: OpenApiResponse;\n types: Client['types'];\n}): OperationResponse => {\n const operationResponse: OperationResponse = {\n $refs: [],\n base: code !== 204 ? 'unknown' : 'void',\n code,\n description: response.description || null,\n enum: [],\n enums: [],\n export: 'generic',\n imports: [],\n in: 'response',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n responseTypes: [],\n template: null,\n type: code !== 204 ? 'unknown' : 'void',\n };\n\n if (response.content) {\n const content = getContent(openApi, response.content);\n if (content) {\n if (content.schema.$ref?.startsWith('#/components/responses/')) {\n content.schema = getRef<OpenApiSchema>(openApi, content.schema);\n }\n\n if (content.schema.$ref) {\n const model = getType({ type: content.schema.$ref });\n operationResponse.base = model.base;\n operationResponse.export = 'reference';\n operationResponse.$refs = [...operationResponse.$refs, ...model.$refs];\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.template = model.template;\n operationResponse.type = model.type;\n return operationResponse;\n }\n\n const model = getModel({ definition: content.schema, openApi, types });\n operationResponse.export = model.export;\n operationResponse.type = model.type;\n operationResponse.base = model.base;\n operationResponse.template = model.template;\n operationResponse.link = model.link;\n operationResponse.isReadOnly = model.isReadOnly;\n operationResponse.isRequired = model.isRequired;\n operationResponse.isNullable = model.isNullable;\n operationResponse.format = model.format;\n operationResponse.maximum = model.maximum;\n operationResponse.exclusiveMaximum = model.exclusiveMaximum;\n operationResponse.minimum = model.minimum;\n operationResponse.exclusiveMinimum = model.exclusiveMinimum;\n operationResponse.multipleOf = model.multipleOf;\n operationResponse.maxLength = model.maxLength;\n operationResponse.minLength = model.minLength;\n operationResponse.maxItems = model.maxItems;\n operationResponse.minItems = model.minItems;\n operationResponse.uniqueItems = model.uniqueItems;\n operationResponse.maxProperties = model.maxProperties;\n operationResponse.minProperties = model.minProperties;\n operationResponse.pattern = getPattern(model.pattern);\n operationResponse.$refs = [...operationResponse.$refs, ...model.$refs];\n operationResponse.imports = [\n ...operationResponse.imports,\n ...model.imports,\n ];\n operationResponse.enum = [...operationResponse.enum, ...model.enum];\n operationResponse.enums = [...operationResponse.enums, ...model.enums];\n operationResponse.properties = [\n ...operationResponse.properties,\n ...model.properties,\n ];\n return operationResponse;\n }\n }\n\n // We support basic properties from response headers, since both\n // fetch and XHR client just support string types.\n if (response.headers) {\n for (const name in response.headers) {\n operationResponse.in = 'header';\n operationResponse.name = name;\n operationResponse.type = 'string';\n operationResponse.base = 'string';\n return operationResponse;\n }\n }\n\n return operationResponse;\n};\n","import type { Client } from '../../../types/client';\nimport type { OperationResponse } from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n parseResponseStatusCode,\n sorterByResponseStatusCode,\n tagResponseTypes,\n} from '../../common/parser/operation';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiResponse } from '../interfaces/OpenApiResponse';\nimport type { OpenApiResponses } from '../interfaces/OpenApiResponses';\nimport { getOperationResponse } from './getOperationResponse';\n\nexport const getOperationResponses = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n debug,\n openApi,\n responses,\n types,\n}: {\n debug?: boolean;\n openApi: OpenApi;\n responses: OpenApiResponses;\n types: Client['types'];\n}): OperationResponse[] => {\n let operationResponses: OperationResponse[] = [];\n\n Object.entries(responses).forEach(([responseCode, responseOrReference]) => {\n const code = parseResponseStatusCode(responseCode);\n if (!code) {\n return;\n }\n\n const response = getRef<OpenApiResponse>(openApi, responseOrReference);\n const operationResponse = getOperationResponse({\n code,\n openApi,\n response,\n types,\n });\n operationResponses = [...operationResponses, operationResponse];\n });\n\n operationResponses = tagResponseTypes(operationResponses);\n\n return operationResponses.sort(sorterByResponseStatusCode);\n};\n","import type { Client } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport type {\n Operation,\n OperationParameter,\n OperationParameters,\n} from '../../common/interfaces/client';\nimport { getRef } from '../../common/parser/getRef';\nimport {\n getOperationResponseHeader,\n operationNameFn,\n} from '../../common/parser/operation';\nimport { toSortedByRequired } from '../../common/parser/sort';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport type { OpenApiOperation } from '../interfaces/OpenApiOperation';\nimport type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperationRequestBody } from './getOperationRequestBody';\nimport { getOperationResponses } from './getOperationResponses';\n\n// add global path parameters, skip duplicate names\nconst mergeParameters = (\n opParams: OperationParameter[],\n globalParams: OperationParameter[],\n): OperationParameter[] => {\n let mergedParameters = [...opParams];\n let pendingParameters = [...globalParams];\n while (pendingParameters.length > 0) {\n const pendingParam = pendingParameters[0]!;\n pendingParameters = pendingParameters.slice(1);\n const canMerge = mergedParameters.every(\n (param) =>\n param.in !== pendingParam.in || param.name !== pendingParam.name,\n );\n if (canMerge) {\n mergedParameters = [...mergedParameters, pendingParam];\n }\n }\n return mergedParameters;\n};\n\nexport const getOperation = ({\n debug,\n method,\n op,\n openApi,\n pathParams,\n types,\n url,\n}: {\n debug?: boolean;\n method: Lowercase<Operation['method']>;\n op: OpenApiOperation;\n openApi: OpenApi;\n pathParams: OperationParameters;\n types: Client['types'];\n url: string;\n}): Operation => {\n const operationWithoutName: Omit<Operation, 'name'> = {\n $refs: [],\n deprecated: Boolean(op.deprecated),\n description: op.description || null,\n id: op.operationId || null,\n imports: [],\n method: method.toUpperCase() as Operation['method'],\n parameters: [],\n parametersBody: pathParams.parametersBody,\n parametersCookie: [],\n parametersForm: [],\n parametersHeader: [],\n parametersPath: [],\n parametersQuery: [],\n path: url,\n responseHeader: null,\n responses: [],\n summary: op.summary || null,\n tags: op.tags || null,\n };\n const operation = {\n ...operationWithoutName,\n name: operationNameFn({\n config: getConfig(),\n method: operationWithoutName.method,\n operationId: op.operationId,\n path: operationWithoutName.path,\n }),\n };\n\n if (op.parameters) {\n const parameters = getOperationParameters({\n openApi,\n parameters: op.parameters,\n types,\n });\n operation.$refs = [...operation.$refs, ...parameters.$refs];\n operation.imports = [...operation.imports, ...parameters.imports];\n operation.parameters = [...operation.parameters, ...parameters.parameters];\n operation.parametersBody = parameters.parametersBody;\n operation.parametersCookie = [\n ...operation.parametersCookie,\n ...parameters.parametersCookie,\n ];\n operation.parametersForm = [\n ...operation.parametersForm,\n ...parameters.parametersForm,\n ];\n operation.parametersHeader = [\n ...operation.parametersHeader,\n ...parameters.parametersHeader,\n ];\n operation.parametersPath = [\n ...operation.parametersPath,\n ...parameters.parametersPath,\n ];\n operation.parametersQuery = [\n ...operation.parametersQuery,\n ...parameters.parametersQuery,\n ];\n }\n\n if (op.requestBody) {\n const requestBodyDef = getRef<OpenApiRequestBody>(openApi, op.requestBody);\n const requestBody = getOperationRequestBody({\n body: requestBodyDef,\n debug,\n openApi,\n types,\n });\n operation.$refs = [...operation.$refs, ...requestBody.$refs];\n operation.imports = [...operation.imports, ...requestBody.imports];\n operation.parameters = [...operation.parameters, requestBody];\n operation.parametersBody = requestBody;\n }\n\n if (op.responses) {\n operation.responses = getOperationResponses({\n openApi,\n responses: op.responses,\n types,\n });\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n operation.responseHeader = getOperationResponseHeader(successResponses);\n\n successResponses.forEach((response) => {\n operation.$refs = [...operation.$refs, ...response.$refs];\n operation.imports = [...operation.imports, ...response.imports];\n });\n }\n\n operation.parameters = mergeParameters(\n operation.parameters,\n pathParams.parameters,\n );\n operation.parametersCookie = mergeParameters(\n operation.parametersCookie,\n pathParams.parametersCookie,\n );\n operation.parametersForm = mergeParameters(\n operation.parametersForm,\n pathParams.parametersForm,\n );\n operation.parametersHeader = mergeParameters(\n operation.parametersHeader,\n pathParams.parametersHeader,\n );\n operation.parametersPath = mergeParameters(\n operation.parametersPath,\n pathParams.parametersPath,\n );\n operation.parametersQuery = mergeParameters(\n operation.parametersQuery,\n pathParams.parametersQuery,\n );\n\n operation.parameters = toSortedByRequired(operation.parameters);\n\n return operation;\n};\n","import { getConfig } from '../../../utils/config';\nimport type { Client, Operation } from '../../common/interfaces/client';\nimport {\n getOperationKey,\n operationFilterFn,\n} from '../../common/parser/operation';\nimport { allowedServiceMethods } from '../../common/parser/service';\nimport type { OpenApi } from '../interfaces/OpenApi';\nimport { getOperationParameters } from './getOperationParameters';\nimport { getOperation } from './operation';\n\nexport const getOperations = ({\n openApi,\n types,\n}: {\n openApi: OpenApi;\n types: Client['types'];\n}): Operation[] => {\n const operationIds = new Map<string, string>();\n const operations: Operation[] = [];\n\n const config = getConfig();\n\n for (const path in openApi.paths) {\n const pathItem = openApi.paths[path]!;\n const pathParameters = getOperationParameters({\n openApi,\n parameters: pathItem.parameters ?? [],\n types,\n });\n\n for (const name in pathItem) {\n const method = name as Lowercase<Operation['method']>;\n\n const operationKey = getOperationKey({\n method,\n path,\n });\n\n if (allowedServiceMethods.includes(method)) {\n const op = pathItem[method]!;\n\n if (op.operationId) {\n if (operationIds.has(op.operationId)) {\n if (config.logs.level !== 'silent') {\n console.warn(\n `❗️ Duplicate operationId: ${op.operationId} in ${operationKey}. Please ensure your operation IDs are unique. This behavior is not supported and will likely lead to unexpected results.`,\n );\n }\n } else {\n operationIds.set(op.operationId, operationKey);\n }\n }\n\n if (\n operationFilterFn({\n config,\n operationKey,\n })\n ) {\n const operation = getOperation({\n method,\n op,\n openApi,\n pathParams: pathParameters,\n types,\n url: path,\n });\n operations.push(operation);\n }\n }\n }\n }\n\n return operations;\n};\n","import type { OpenApi } from '../interfaces/OpenApi';\n\nexport const getServer = (openApi: OpenApi): string => {\n const server = openApi.servers?.[0];\n const variables = server?.variables || {};\n let url = server?.url || '';\n Object.entries(variables).forEach(([name, variable]) => {\n url = url.replace(`{${name}}`, variable.default);\n });\n return url.replace(/\\/$/g, '');\n};\n","import type { Client } from '../common/interfaces/client';\nimport { getServiceVersion } from '../common/parser/service';\nimport type { OpenApi } from './interfaces/OpenApi';\nimport { getModels } from './parser/getModels';\nimport { getOperations } from './parser/getOperations';\nimport { getServer } from './parser/getServer';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, operations and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport const parse = (openApi: OpenApi): Omit<Client, 'config'> => {\n const version = getServiceVersion(openApi.info.version);\n const server = getServer(openApi);\n const { models, types } = getModels(openApi);\n const operations = getOperations({ openApi, types });\n\n return {\n models,\n operations,\n server,\n types,\n version,\n };\n};\n","import { IRContext } from '../ir/context';\nimport type { IR } from '../ir/types';\nimport type { Config } from '../types/config';\nimport { parseV2_0_X } from './2.0.x';\nimport { parseV3_0_X } from './3.0.x';\nimport { parseV3_1_X } from './3.1.x';\nimport type { Client } from './common/interfaces/client';\nimport type { OpenApi as LegacyOpenApi } from './common/interfaces/OpenApi';\nimport type { OpenApi } from './types';\nimport { parse as parseV2 } from './v2';\nimport { parse as parseV3 } from './v3';\n\nexport type {\n Client,\n Enum,\n Method,\n Model,\n ModelMeta,\n Operation,\n OperationParameter,\n OperationResponse,\n} from './common/interfaces/client';\nexport type { OpenApi } from './common/interfaces/OpenApi';\nexport { isOperationParameterRequired } from './common/parser/operation';\nexport {\n ensureValidTypeScriptJavaScriptIdentifier,\n sanitizeNamespaceIdentifier,\n sanitizeOperationParameterName,\n} from './common/parser/sanitize';\nexport { getType } from './common/parser/type';\nexport type { OpenApiSchema as OpenApiV2Schema } from './v2/interfaces/OpenApiSchema';\nexport type { OpenApiSchema as OpenApiV3Schema } from './v3/interfaces/OpenApiSchema';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, services and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport function parseLegacy({\n openApi,\n}: {\n openApi: unknown;\n}): Omit<Client, 'config'> {\n const spec = openApi as LegacyOpenApi;\n\n if ('openapi' in spec) {\n return parseV3(spec);\n }\n\n if ('swagger' in spec) {\n return parseV2(spec);\n }\n\n throw new Error(\n `Unsupported OpenAPI specification: ${JSON.stringify(spec, null, 2)}`,\n );\n}\n\n/**\n * @internal\n * Parse the resolved OpenAPI specification. This will populate and return\n * `context` with intermediate representation obtained from the parsed spec.\n */\nexport const parseOpenApiSpec = ({\n config,\n spec,\n}: {\n config: Config;\n spec: unknown;\n}): IR.Context | undefined => {\n const context = new IRContext({\n config,\n spec: spec as OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X,\n });\n\n if ('swagger' in context.spec) {\n parseV2_0_X(context as IR.Context<OpenApi.V2_0_X>);\n return context;\n }\n\n switch (context.spec.openapi) {\n case '3.0.0':\n case '3.0.1':\n case '3.0.2':\n case '3.0.3':\n case '3.0.4':\n parseV3_0_X(context as IR.Context<OpenApi.V3_0_X>);\n return context;\n case '3.1.0':\n case '3.1.1':\n parseV3_1_X(context as IR.Context<OpenApi.V3_1_X>);\n return context;\n default:\n break;\n }\n\n throw new Error('Unsupported OpenAPI specification');\n};\n","import type { Config, UserConfig } from './types/config';\n\nexport const getLogs = (userConfig: UserConfig | undefined): Config['logs'] => {\n let logs: Config['logs'] = {\n file: true,\n level: 'info',\n path: process.cwd(),\n };\n if (typeof userConfig?.logs === 'string') {\n logs.path = userConfig.logs;\n } else {\n logs = {\n ...logs,\n ...userConfig?.logs,\n };\n }\n return logs;\n};\n","export const clientDefaultConfig = {\n _dependencies: ['@hey-api/typescript'],\n _tags: ['client'],\n baseUrl: true,\n bundle: false,\n exportFromIndex: false,\n output: 'client',\n} as const;\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { ImportExportItemObject } from '../compiler/utils';\nimport type { Client } from '../plugins/@hey-api/client-core/types';\nimport { getClientPlugin } from '../plugins/@hey-api/client-core/utils';\nimport type { Plugin } from '../plugins/types';\nimport type { Config } from '../types/config';\nimport { ensureDirSync, relativeModulePath } from './utils';\n\nconst getClientSrcPath = (name: string) => {\n const pluginFilePathComponents = name.split(path.sep);\n const clientSrcPath = pluginFilePathComponents\n .slice(0, pluginFilePathComponents.length - 1)\n .join(path.sep);\n return clientSrcPath;\n};\n\n/**\n * Returns path to the client module. When using client packages, this will be\n * simply the name of the package. When bundling a client, this will be a\n * relative path to the bundled client folder.\n */\nexport const clientModulePath = ({\n config,\n sourceOutput,\n}: {\n config: Config;\n sourceOutput: string;\n}): string => {\n const client = getClientPlugin(config);\n\n if ('bundle' in client && client.bundle) {\n return relativeModulePath({\n moduleOutput: 'client',\n sourceOutput,\n });\n }\n\n if (path.isAbsolute(client.name)) {\n const clientSrcPath = getClientSrcPath(client.name);\n const outputPath = path.resolve(config.output.path);\n return path.relative(outputPath, clientSrcPath).replace(/\\\\/g, '/');\n }\n\n return client.name;\n};\n\nexport const clientApi = {\n Options: {\n asType: true,\n name: 'Options',\n },\n OptionsLegacyParser: {\n asType: true,\n name: 'OptionsLegacyParser',\n },\n} satisfies Record<string, ImportExportItemObject>;\n\n/**\n * Creates a `client` folder containing the same modules as the client package.\n */\nexport const generateClientBundle = ({\n outputPath,\n plugin,\n}: {\n outputPath: string;\n plugin: Plugin.Config<Client.Config & { name: any }>;\n}): void => {\n // create folder for client modules\n const dirPath = path.resolve(outputPath, 'client');\n ensureDirSync(dirPath);\n\n let clientSrcPath = '';\n if (path.isAbsolute(plugin.name)) {\n clientSrcPath = getClientSrcPath(plugin.name);\n }\n\n if (plugin.bundleSource_EXPERIMENTAL && !clientSrcPath) {\n const clientModulePath = path.normalize(require.resolve(plugin.name));\n const clientModulePathComponents = clientModulePath.split(path.sep);\n clientSrcPath = [\n ...clientModulePathComponents.slice(\n 0,\n clientModulePathComponents.indexOf('dist'),\n ),\n 'src',\n ].join(path.sep);\n }\n\n if (clientSrcPath) {\n fs.cpSync(clientSrcPath, dirPath, {\n recursive: true,\n });\n return;\n }\n\n const clientModulePath = path.normalize(require.resolve(plugin.name));\n const clientModulePathComponents = clientModulePath.split(path.sep);\n const clientDistPath = clientModulePathComponents\n .slice(0, clientModulePathComponents.indexOf('dist') + 1)\n .join(path.sep);\n\n const indexJsFile =\n clientModulePathComponents[clientModulePathComponents.length - 1];\n const distFiles = [indexJsFile!, 'index.d.ts'];\n if (plugin.name !== '@hey-api/client-nuxt') {\n distFiles.push('index.d.cts');\n }\n for (const file of distFiles) {\n fs.copyFileSync(\n path.resolve(clientDistPath, file),\n path.resolve(dirPath, file),\n );\n }\n};\n","import type { Config, StringCase } from '../../../types/config';\nimport { irRef } from '../../../utils/ref';\nimport { stringCase } from '../../../utils/stringCase';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\n}\n\nexport const operationIrRef = ({\n case: _case = 'PascalCase',\n config,\n id,\n type,\n}: OperationIRRef & {\n readonly case?: StringCase;\n config: Pick<Config, 'plugins'>;\n type: 'data' | 'error' | 'errors' | 'response' | 'responses';\n}): string => {\n let affix = '';\n switch (type) {\n case 'data':\n case 'error': // error union\n case 'errors': // errors map\n case 'response': // response union\n case 'responses': // responses map\n affix = `${(type[0] ?? '').toLocaleUpperCase()}${type.slice(1)}`;\n break;\n }\n let separator = true;\n if (config.plugins['@hey-api/typescript']?.identifierCase === 'preserve') {\n separator = false;\n }\n return `${irRef}${stringCase({\n case: _case,\n value: id,\n })}${separator ? '-' : ''}${affix}`;\n};\n","import type { Identifier, TypeScriptFile } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { operationIrRef } from '../../shared/utils/ref';\n\nexport const typesId = 'types';\n\nfunction refIdentifier<T extends Identifier>(\n identifier: T,\n onGet?: (identifier: T) => void,\n): T {\n return {\n ...identifier,\n get name() {\n onGet?.(identifier);\n return identifier.name;\n },\n };\n}\n\nexport const importIdentifierData = ({\n context,\n file,\n operation,\n}: {\n context: IR.Context;\n file: TypeScriptFile;\n operation: IR.OperationObject;\n}): Identifier => {\n const identifierData = context.file({ id: typesId })!.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'data',\n }),\n namespace: 'type',\n });\n return refIdentifier(identifierData, (identifier) => {\n if (identifier.name) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifier.name,\n });\n }\n });\n};\n\nexport const importIdentifierError = ({\n context,\n file,\n operation,\n}: {\n context: IR.Context;\n file: TypeScriptFile;\n operation: IR.OperationObject;\n}): Identifier => {\n const identifierError = context.file({ id: typesId })!.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'error',\n }),\n namespace: 'type',\n });\n return refIdentifier(identifierError, (identifier) => {\n if (identifier.name) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifier.name,\n });\n }\n });\n};\n\nexport const importIdentifierResponse = ({\n context,\n file,\n operation,\n}: {\n context: IR.Context;\n file: TypeScriptFile;\n operation: IR.OperationObject;\n}): Identifier => {\n const identifierResponse = context.file({ id: typesId })!.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'response',\n }),\n namespace: 'type',\n });\n return refIdentifier(identifierResponse, (identifier) => {\n if (identifier.name) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifier.name,\n });\n }\n });\n};\n","import { compiler } from '../../../compiler';\nimport { clientModulePath } from '../../../generate/client';\nimport { parseUrl } from '../../../utils/url';\nimport { typesId } from '../typescript/ref';\nimport type { PluginHandler } from './types';\nimport { clientId, getClientBaseUrlKey } from './utils';\n\nconst resolveBaseUrlString: PluginHandler<string | undefined> = ({\n context,\n plugin,\n}) => {\n const { baseUrl } = plugin;\n\n if (baseUrl === false) {\n return;\n }\n\n if (typeof baseUrl === 'string') {\n return baseUrl;\n }\n\n const { servers } = context.ir;\n\n if (!servers) {\n return;\n }\n\n return servers[typeof baseUrl === 'number' ? baseUrl : 0]?.url;\n};\n\nexport const createClient: PluginHandler = ({ context, plugin }) => {\n const file = context.file({ id: clientId })!;\n\n const clientModule = clientModulePath({\n config: context.config,\n sourceOutput: file.nameWithoutExtension(),\n });\n const createClient = file.import({\n module: clientModule,\n name: 'createClient',\n });\n const createConfig = file.import({\n module: clientModule,\n name: 'createConfig',\n });\n const clientOptions = file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: 'ClientOptions',\n });\n\n const createClientConfig = plugin.runtimeConfigPath\n ? file.import({\n module: file.relativePathToFile({\n context,\n id: plugin.runtimeConfigPath,\n }),\n name: 'createClientConfig',\n })\n : undefined;\n\n const defaultValues: Array<unknown> = [];\n\n const resolvedBaseUrl = resolveBaseUrlString({ context, plugin });\n if (resolvedBaseUrl) {\n const url = parseUrl(resolvedBaseUrl);\n if (url.protocol && url.host && !resolvedBaseUrl.includes('{')) {\n defaultValues.push({\n key: getClientBaseUrlKey(context.config),\n value: resolvedBaseUrl,\n });\n } else if (resolvedBaseUrl !== '/' && resolvedBaseUrl.startsWith('/')) {\n const baseUrl = resolvedBaseUrl.endsWith('/')\n ? resolvedBaseUrl.slice(0, -1)\n : resolvedBaseUrl;\n defaultValues.push({\n key: getClientBaseUrlKey(context.config),\n value: baseUrl,\n });\n }\n }\n\n if ('throwOnError' in plugin && plugin.throwOnError) {\n defaultValues.push({\n key: 'throwOnError',\n value: true,\n });\n }\n\n const createConfigParameters = [\n compiler.callExpression({\n functionName: createConfig.name,\n parameters: defaultValues.length\n ? [compiler.objectExpression({ obj: defaultValues })]\n : undefined,\n types: [compiler.typeReferenceNode({ typeName: clientOptions.name })],\n }),\n ];\n\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: createClient.name,\n parameters: createClientConfig\n ? [\n compiler.callExpression({\n functionName: createClientConfig.name,\n parameters: createConfigParameters,\n }),\n ]\n : createConfigParameters,\n }),\n name: 'client',\n });\n file.add(statement);\n};\n","import { compiler } from '../../../compiler';\nimport { clientModulePath } from '../../../generate/client';\nimport { clientId } from '../client-core/utils';\nimport { typesId } from '../typescript/ref';\nimport type { PluginHandler } from './types';\n\nexport const createClientConfigType: PluginHandler = ({ context }) => {\n const file = context.file({ id: clientId })!;\n\n const clientModule = clientModulePath({\n config: context.config,\n sourceOutput: file.nameWithoutExtension(),\n });\n const clientOptions = file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: 'ClientOptions',\n });\n const configType = file.import({\n asType: true,\n module: clientModule,\n name: 'Config',\n });\n const defaultClientOptions = file.import({\n alias: 'DefaultClientOptions',\n asType: true,\n module: clientModule,\n name: 'ClientOptions',\n });\n\n const defaultClientOptionsType = compiler.typeReferenceNode({\n typeName: defaultClientOptions.name,\n });\n const tType = compiler.typeReferenceNode({ typeName: 'T' });\n\n const typeCreateClientConfig = compiler.typeAliasDeclaration({\n comment: [\n 'The `createClientConfig()` function will be called on client initialization',\n \"and the returned object will become the client's initial configuration.\",\n '',\n 'You may want to initialize your client this way instead of calling',\n \"`setConfig()`. This is useful for example if you're using Next.js\",\n 'to ensure your client always has the correct values.',\n ],\n exportType: true,\n name: 'CreateClientConfig',\n type: compiler.functionTypeNode({\n parameters: [\n compiler.parameterDeclaration({\n name: 'override',\n required: false,\n type: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeIntersectionNode({\n types: [defaultClientOptionsType, tType],\n }),\n ],\n typeName: configType.name,\n }),\n }),\n ],\n returnType: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeArguments: [defaultClientOptionsType],\n typeName: 'Required',\n }),\n tType,\n ],\n }),\n ],\n typeName: configType.name,\n }),\n }),\n typeParameters: [\n {\n default: compiler.typeReferenceNode({ typeName: clientOptions.name }),\n extends: defaultClientOptionsType,\n name: 'T',\n },\n ],\n });\n\n file.add(typeCreateClientConfig);\n};\n","import { clientId } from '../client-core/utils';\nimport { createClient } from './client';\nimport { createClientConfigType } from './createClientConfig';\nimport type { PluginHandler } from './types';\n\nexport const clientPluginHandler: PluginHandler = ({ context, plugin }) => {\n context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: clientId,\n path: plugin.output,\n });\n\n createClientConfigType({ context, plugin });\n createClient({ context, plugin });\n};\n","import type { Plugin } from '../../types';\nimport { clientDefaultConfig } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n ...clientDefaultConfig,\n _handler: clientPluginHandler,\n _handlerLegacy: () => {},\n name: '@hey-api/client-axios',\n throwOnError: false,\n};\n\n/**\n * Type helper for `@hey-api/client-axios` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { clientDefaultConfig } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n ...clientDefaultConfig,\n _handler: clientPluginHandler,\n _handlerLegacy: () => {},\n name: '@hey-api/client-fetch',\n throwOnError: false,\n};\n\n/**\n * Type helper for `@hey-api/client-fetch` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { clientDefaultConfig } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n ...clientDefaultConfig,\n _handler: clientPluginHandler,\n _handlerLegacy: () => {},\n name: '@hey-api/client-next',\n throwOnError: false,\n};\n\n/**\n * Type helper for `@hey-api/client-next` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { clientDefaultConfig } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n ...clientDefaultConfig,\n _handler: clientPluginHandler,\n _handlerLegacy: () => {},\n name: '@hey-api/client-nuxt',\n};\n\n/**\n * Type helper for `@hey-api/client-nuxt` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: () => {},\n _handlerLegacy: () => {},\n _tags: ['client'],\n name: 'legacy/angular',\n output: 'client',\n};\n\n/**\n * Type helper for `legacy/angular` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: () => {},\n _handlerLegacy: () => {},\n _tags: ['client'],\n name: 'legacy/axios',\n output: 'client',\n};\n\n/**\n * Type helper for `legacy/axios` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: () => {},\n _handlerLegacy: () => {},\n _tags: ['client'],\n name: 'legacy/fetch',\n output: 'client',\n};\n\n/**\n * Type helper for `legacy/fetch` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: () => {},\n _handlerLegacy: () => {},\n _tags: ['client'],\n name: 'legacy/node',\n output: 'client',\n};\n\n/**\n * Type helper for `legacy/node` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: () => {},\n _handlerLegacy: () => {},\n _tags: ['client'],\n name: 'legacy/xhr',\n output: 'client',\n};\n\n/**\n * Type helper for `legacy/xhr` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import { compiler } from '../../../compiler';\nimport type { IR } from '../../../ir/types';\nimport type { SchemaObject as OpenApiV2_0_XSchemaObject } from '../../../openApi/2.0.x/types/spec';\nimport type {\n ReferenceObject as OpenApiV3_0_XReferenceObject,\n SchemaObject as OpenApiV3_0_XSchemaObject,\n} from '../../../openApi/3.0.x/types/spec';\nimport type { SchemaObject as OpenApiV3_1_XSchemaObject } from '../../../openApi/3.1.x/types/spec';\nimport { ensureValidIdentifier } from '../../../openApi/shared/utils/identifier';\nimport type { OpenApi } from '../../../openApi/types';\nimport type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nconst schemasId = 'schemas';\n\nconst stripSchema = ({\n plugin,\n schema,\n}: {\n plugin: Plugin.Instance<Config>;\n schema:\n | OpenApiV2_0_XSchemaObject\n | OpenApiV3_0_XSchemaObject\n | OpenApiV3_1_XSchemaObject;\n}) => {\n if (plugin.type === 'form') {\n if (schema.description) {\n delete schema.description;\n }\n\n if (schema['x-enum-descriptions']) {\n delete schema['x-enum-descriptions'];\n }\n\n if (schema['x-enum-varnames']) {\n delete schema['x-enum-varnames'];\n }\n\n if (schema['x-enumNames']) {\n delete schema['x-enumNames'];\n }\n\n if (schema.title) {\n delete schema.title;\n }\n }\n};\n\nconst schemaToJsonSchemaDraft_04 = ({\n context,\n plugin,\n schema: _schema,\n}: {\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: OpenApiV2_0_XSchemaObject;\n}): OpenApiV2_0_XSchemaObject => {\n if (Array.isArray(_schema)) {\n return _schema.map((item) =>\n schemaToJsonSchemaDraft_04({\n context,\n plugin,\n schema: item,\n }),\n ) as unknown as OpenApiV2_0_XSchemaObject;\n }\n\n const schema = structuredClone(_schema);\n\n if (schema.$ref) {\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n schema.$ref = decodeURI(schema.$ref);\n return schema;\n }\n\n stripSchema({ plugin, schema });\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties !== 'boolean'\n ) {\n schema.additionalProperties = schemaToJsonSchemaDraft_04({\n context,\n plugin,\n schema: schema.additionalProperties,\n });\n }\n\n if (schema.allOf) {\n schema.allOf = schema.allOf.map((item) =>\n schemaToJsonSchemaDraft_04({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.items) {\n schema.items = schemaToJsonSchemaDraft_04({\n context,\n plugin,\n schema: schema.items as OpenApiV2_0_XSchemaObject,\n });\n }\n\n if (schema.properties) {\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean') {\n schema.properties[name] = schemaToJsonSchemaDraft_04({\n context,\n plugin,\n schema: property,\n });\n }\n }\n }\n\n return schema;\n};\n\nconst schemaToJsonSchemaDraft_05 = ({\n context,\n plugin,\n schema: _schema,\n}: {\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: OpenApiV3_0_XSchemaObject | OpenApiV3_0_XReferenceObject;\n}): OpenApiV3_0_XSchemaObject | OpenApiV3_0_XReferenceObject => {\n if (Array.isArray(_schema)) {\n return _schema.map((item) =>\n schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: item,\n }),\n ) as OpenApiV3_0_XSchemaObject | OpenApiV3_0_XReferenceObject;\n }\n\n const schema = structuredClone(_schema);\n\n if ('$ref' in schema) {\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n schema.$ref = decodeURI(schema.$ref);\n return schema;\n }\n\n stripSchema({ plugin, schema });\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties !== 'boolean'\n ) {\n schema.additionalProperties = schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: schema.additionalProperties,\n });\n }\n\n if (schema.allOf) {\n schema.allOf = schema.allOf.map((item) =>\n schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.anyOf) {\n schema.anyOf = schema.anyOf.map((item) =>\n schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.items) {\n schema.items = schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: schema.items,\n });\n }\n\n if (schema.oneOf) {\n schema.oneOf = schema.oneOf.map((item) =>\n schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.properties) {\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean') {\n schema.properties[name] = schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: property,\n });\n }\n }\n }\n\n return schema;\n};\n\nconst schemaToJsonSchema2020_12 = ({\n context,\n plugin,\n schema: _schema,\n}: {\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: OpenApiV3_1_XSchemaObject;\n}): OpenApiV3_1_XSchemaObject => {\n if (Array.isArray(_schema)) {\n return _schema.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: item,\n }),\n ) as OpenApiV3_1_XSchemaObject;\n }\n\n const schema = structuredClone(_schema);\n\n stripSchema({ plugin, schema });\n\n if (schema.$ref) {\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n schema.$ref = decodeURI(schema.$ref);\n }\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties !== 'boolean'\n ) {\n schema.additionalProperties = schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: schema.additionalProperties,\n });\n }\n\n if (schema.allOf) {\n schema.allOf = schema.allOf.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.anyOf) {\n schema.anyOf = schema.anyOf.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.items) {\n schema.items = schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: schema.items,\n });\n }\n\n if (schema.oneOf) {\n schema.oneOf = schema.oneOf.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.prefixItems) {\n schema.prefixItems = schema.prefixItems.map((item) =>\n schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: item,\n }),\n );\n }\n\n if (schema.properties) {\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean') {\n schema.properties[name] = schemaToJsonSchema2020_12({\n context,\n plugin,\n schema: property,\n });\n }\n }\n }\n\n return schema;\n};\n\nconst schemaName = ({\n name,\n plugin,\n schema,\n}: {\n name: string;\n plugin: Plugin.Instance<Config>;\n schema:\n | OpenApiV2_0_XSchemaObject\n | OpenApiV3_0_XReferenceObject\n | OpenApiV3_0_XSchemaObject\n | OpenApiV3_1_XSchemaObject;\n}): string => {\n const customName = plugin.nameBuilder?.(name, schema) ?? `${name}Schema`;\n return ensureValidIdentifier(customName);\n};\n\nconst schemasV2_0_X = ({\n context,\n plugin,\n}: {\n context: IR.Context<OpenApi.V2_0_X>;\n plugin: Plugin.Instance<Config>;\n}) => {\n if (!context.spec.definitions) {\n return;\n }\n\n for (const name in context.spec.definitions) {\n const schema = context.spec.definitions[name]!;\n const obj = schemaToJsonSchemaDraft_04({\n context,\n plugin,\n schema,\n });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nconst schemasV3_0_X = ({\n context,\n plugin,\n}: {\n context: IR.Context<OpenApi.V3_0_X>;\n plugin: Plugin.Instance<Config>;\n}) => {\n if (!context.spec.components) {\n return;\n }\n\n for (const name in context.spec.components.schemas) {\n const schema = context.spec.components.schemas[name]!;\n const obj = schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema,\n });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nconst schemasV3_1_X = ({\n context,\n plugin,\n}: {\n context: IR.Context<OpenApi.V3_1_X>;\n plugin: Plugin.Instance<Config>;\n}) => {\n if (!context.spec.components) {\n return;\n }\n\n for (const name in context.spec.components.schemas) {\n const schema = context.spec.components.schemas[name]!;\n const obj = schemaToJsonSchema2020_12({\n context,\n plugin,\n schema,\n });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nexport const handler: Plugin.Handler<Config> = ({ context, plugin }) => {\n context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: schemasId,\n path: plugin.output,\n });\n\n if ('swagger' in context.spec) {\n schemasV2_0_X({\n context: context as IR.Context<OpenApi.V2_0_X>,\n plugin,\n });\n return;\n }\n\n switch (context.spec.openapi) {\n case '3.0.0':\n case '3.0.1':\n case '3.0.2':\n case '3.0.3':\n case '3.0.4':\n schemasV3_0_X({\n context: context as IR.Context<OpenApi.V3_0_X>,\n plugin,\n });\n break;\n case '3.1.0':\n case '3.1.1':\n schemasV3_1_X({\n context: context as IR.Context<OpenApi.V3_1_X>,\n plugin,\n });\n break;\n default:\n break;\n }\n};\n","import { compiler } from '../../../compiler';\nimport { TypeScriptFile } from '../../../generate/files';\nimport type { OpenApiV2Schema, OpenApiV3Schema } from '../../../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../../../openApi';\nimport { getConfig } from '../../../utils/config';\nimport type { Plugin } from '../../types';\nimport type { Config } from './types';\n\nconst ensureValidSchemaOutput = (\n schema: unknown,\n parentKey?: string,\n): object => {\n const config = getConfig();\n\n if (Array.isArray(schema)) {\n return schema.map((item) => ensureValidSchemaOutput(item));\n }\n\n if (typeof schema !== 'object' || schema === null) {\n return schema as object;\n }\n\n const result = { ...schema };\n Object.entries(result).forEach(([key, value]) => {\n if (config.plugins['@hey-api/schemas']?.type === 'form') {\n if (\n [\n 'description',\n 'x-enum-descriptions',\n 'x-enum-varnames',\n 'x-enumNames',\n 'title',\n ].includes(key) &&\n parentKey !== 'properties'\n ) {\n // @ts-expect-error\n delete result[key];\n return;\n }\n }\n\n // refs are encoded probably by json-schema-ref-parser, didn't investigate\n // further\n if (key === '$ref' && typeof value === 'string') {\n // @ts-expect-error\n result[key] = decodeURIComponent(value);\n }\n\n if (value && typeof value === 'object') {\n // @ts-expect-error\n result[key] = ensureValidSchemaOutput(value, key);\n }\n });\n return result;\n};\n\nconst toSchemaName = (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n): string => {\n const config = getConfig();\n\n const validName = ensureValidTypeScriptJavaScriptIdentifier(name);\n\n if (config.plugins['@hey-api/schemas']?.nameBuilder) {\n return config.plugins['@hey-api/schemas'].nameBuilder(validName, schema);\n }\n\n return `${validName}Schema`;\n};\n\nexport const handlerLegacy: Plugin.LegacyHandler<Config> = ({\n files,\n openApi,\n}) => {\n const config = getConfig();\n\n files.schemas = new TypeScriptFile({\n dir: config.output.path,\n id: 'schemas',\n name: 'schemas.ts',\n });\n\n const addSchema = (\n name: string,\n schema: OpenApiV2Schema | OpenApiV3Schema,\n ) => {\n const obj = ensureValidSchemaOutput(schema);\n const expression = compiler.objectExpression({ obj });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression,\n name: toSchemaName(name, schema),\n });\n files.schemas!.add(statement);\n };\n\n // OpenAPI 2.0\n if ('swagger' in openApi) {\n Object.entries(openApi.definitions ?? {}).forEach(([name, definition]) => {\n addSchema(name, definition);\n });\n }\n\n // OpenAPI 3.x\n if ('openapi' in openApi) {\n Object.entries(openApi.components?.schemas ?? {}).forEach(\n ([name, schema]) => {\n addSchema(name, schema);\n },\n );\n }\n};\n","import type { Plugin } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n exportFromIndex: false,\n name: '@hey-api/schemas',\n nameBuilder: (name) => `${name}Schema`,\n output: 'schemas',\n type: 'json',\n};\n\n/**\n * Type helper for `@hey-api/schemas` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Pagination } from './pagination';\nimport type { IR } from './types';\n\nexport const hasParameterGroupObjectRequired = (\n parameterGroup?: Record<string, IR.ParameterObject>,\n): boolean => {\n for (const name in parameterGroup) {\n if (parameterGroup[name]!.required) {\n return true;\n }\n }\n\n return false;\n};\n\nexport const hasParametersObjectRequired = (\n parameters: IR.ParametersObject | undefined,\n): boolean => {\n if (!parameters) {\n return false;\n }\n\n if (hasParameterGroupObjectRequired(parameters.cookie)) {\n return true;\n }\n\n if (hasParameterGroupObjectRequired(parameters.header)) {\n return true;\n }\n\n if (hasParameterGroupObjectRequired(parameters.path)) {\n return true;\n }\n\n if (hasParameterGroupObjectRequired(parameters.query)) {\n return true;\n }\n\n return false;\n};\n\nexport const parameterWithPagination = (\n parameters: IR.ParametersObject | undefined,\n): Pagination | undefined => {\n if (!parameters) {\n return;\n }\n\n for (const name in parameters.cookie) {\n const parameter = parameters.cookie[name]!;\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination]!,\n };\n }\n }\n\n for (const name in parameters.header) {\n const parameter = parameters.header[name]!;\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination]!,\n };\n }\n }\n\n for (const name in parameters.path) {\n const parameter = parameters.path[name]!;\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination]!,\n };\n }\n }\n\n for (const name in parameters.query) {\n const parameter = parameters.query[name]!;\n if (parameter.pagination) {\n return {\n in: parameter.location,\n name:\n parameter.pagination === true\n ? name\n : `${name}.${parameter.pagination}`,\n schema:\n parameter.pagination === true\n ? parameter.schema\n : parameter.schema.properties![parameter.pagination]!,\n };\n }\n }\n};\n","import type { IR } from './types';\n\n/**\n * Ensure we don't produce redundant types, e.g. string | string.\n */\nexport const deduplicateSchema = <T extends IR.SchemaObject>({\n schema,\n}: {\n schema: T;\n}): T => {\n if (!schema.items) {\n return schema;\n }\n\n const uniqueItems: Array<IR.SchemaObject> = [];\n const typeIds: Array<string> = [];\n\n for (const item of schema.items) {\n // skip nested schemas for now, handle if necessary\n if ((!item.type && item.items) || schema.type === 'tuple') {\n uniqueItems.push(item);\n continue;\n }\n\n if (\n // no `type` might still include `$ref` or `const`\n !item.type ||\n item.type === 'boolean' ||\n item.type === 'integer' ||\n item.type === 'null' ||\n item.type === 'number' ||\n item.type === 'string' ||\n item.type === 'unknown' ||\n item.type === 'void'\n ) {\n // const needs namespace to handle empty string values, otherwise\n // fallback would equal an actual value and we would skip an item\n const typeId = `${item.$ref ?? ''}${item.type ?? ''}${item.const !== undefined ? `const-${item.const}` : ''}`;\n if (!typeIds.includes(typeId)) {\n typeIds.push(typeId);\n uniqueItems.push(item);\n }\n continue;\n }\n\n uniqueItems.push(item);\n }\n\n schema.items = uniqueItems;\n\n if (\n schema.items.length <= 1 &&\n schema.type !== 'array' &&\n schema.type !== 'enum' &&\n schema.type !== 'tuple'\n ) {\n // bring the only item up to clean up the schema\n const liftedSchema = schema.items[0];\n delete schema.logicalOperator;\n delete schema.items;\n schema = {\n ...schema,\n ...liftedSchema,\n };\n }\n\n // exclude unknown if it's the only type left\n if (schema.type === 'unknown') {\n return {} as T;\n }\n\n return schema;\n};\n","import type { Pagination } from './pagination';\nimport {\n hasParametersObjectRequired,\n parameterWithPagination,\n} from './parameter';\nimport { deduplicateSchema } from './schema';\nimport type { IR } from './types';\nimport { addItemsToSchema } from './utils';\n\nexport const hasOperationDataRequired = (\n operation: IR.OperationObject,\n): boolean => {\n if (hasParametersObjectRequired(operation.parameters)) {\n return true;\n }\n\n if (operation.body?.required) {\n return true;\n }\n\n return false;\n};\n\nexport const operationPagination = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}): Pagination | undefined => {\n const body = operation.body;\n\n if (!body || !body.pagination) {\n return parameterWithPagination(operation.parameters);\n }\n\n if (body.pagination === true) {\n return {\n in: 'body',\n name: 'body',\n schema: body.schema,\n };\n }\n\n const schema = body.schema;\n const resolvedSchema = schema.$ref\n ? context.resolveIrRef<IR.RequestBodyObject | IR.SchemaObject>(schema.$ref)\n : schema;\n\n const finalSchema =\n 'schema' in resolvedSchema ? resolvedSchema.schema : resolvedSchema;\n const paginationProp = finalSchema?.properties?.[body.pagination];\n\n if (!paginationProp) {\n return parameterWithPagination(operation.parameters);\n }\n\n return {\n in: 'body',\n name: body.pagination,\n schema: paginationProp,\n };\n};\n\ntype StatusGroup = '1XX' | '2XX' | '3XX' | '4XX' | '5XX' | 'default';\n\nexport const statusCodeToGroup = ({\n statusCode,\n}: {\n statusCode: string;\n}): StatusGroup => {\n switch (statusCode) {\n case '1XX':\n return '1XX';\n case '2XX':\n return '2XX';\n case '3XX':\n return '3XX';\n case '4XX':\n return '4XX';\n case '5XX':\n return '5XX';\n case 'default':\n return 'default';\n default:\n return `${statusCode[0]}XX` as StatusGroup;\n }\n};\n\ninterface OperationResponsesMap {\n /**\n * A deduplicated union of all error types. Unknown types are omitted.\n */\n error?: IR.SchemaObject;\n /**\n * An object containing a map of status codes for each error type.\n */\n errors?: IR.SchemaObject;\n /**\n * A deduplicated union of all response types. Unknown types are omitted.\n */\n response?: IR.SchemaObject;\n /**\n * An object containing a map of status codes for each response type.\n */\n responses?: IR.SchemaObject;\n}\n\nexport const operationResponsesMap = (\n operation: IR.OperationObject,\n): OperationResponsesMap => {\n const result: OperationResponsesMap = {};\n\n if (!operation.responses) {\n return result;\n }\n\n const errors: Omit<IR.SchemaObject, 'properties'> &\n Pick<Required<IR.SchemaObject>, 'properties'> = {\n properties: {},\n type: 'object',\n };\n\n const responses: Omit<IR.SchemaObject, 'properties'> &\n Pick<Required<IR.SchemaObject>, 'properties'> = {\n properties: {},\n type: 'object',\n };\n\n // store default response to be evaluated last\n let defaultResponse: IR.ResponseObject | undefined;\n\n for (const name in operation.responses) {\n const response = operation.responses[name]!;\n\n switch (statusCodeToGroup({ statusCode: name })) {\n case '1XX':\n case '3XX':\n // TODO: parser - handle informational and redirection status codes\n break;\n case '2XX':\n responses.properties[name] = response.schema;\n break;\n case '4XX':\n case '5XX':\n errors.properties[name] = response.schema;\n break;\n case 'default':\n defaultResponse = response;\n break;\n }\n }\n\n // infer default response type\n if (defaultResponse) {\n let inferred = false;\n\n // assume default is intended for success if none exists yet\n if (!Object.keys(responses.properties).length) {\n responses.properties.default = defaultResponse.schema;\n inferred = true;\n }\n\n const description = (\n defaultResponse.schema.description ?? ''\n ).toLocaleLowerCase();\n const $ref = (defaultResponse.schema.$ref ?? '').toLocaleLowerCase();\n\n // TODO: parser - this could be rewritten using regular expressions\n const successKeywords = ['success'];\n if (\n successKeywords.some(\n (keyword) => description.includes(keyword) || $ref.includes(keyword),\n )\n ) {\n responses.properties.default = defaultResponse.schema;\n inferred = true;\n }\n\n // TODO: parser - this could be rewritten using regular expressions\n const errorKeywords = ['error', 'problem'];\n if (\n errorKeywords.some(\n (keyword) => description.includes(keyword) || $ref.includes(keyword),\n )\n ) {\n errors.properties.default = defaultResponse.schema;\n inferred = true;\n }\n\n // if no keyword match, assume default schema is intended for error\n if (!inferred) {\n errors.properties.default = defaultResponse.schema;\n }\n }\n\n const errorKeys = Object.keys(errors.properties);\n if (errorKeys.length) {\n errors.required = errorKeys;\n result.errors = errors;\n\n let errorUnion = addItemsToSchema({\n items: Object.values(errors.properties),\n mutateSchemaOneItem: true,\n schema: {},\n });\n errorUnion = deduplicateSchema({ schema: errorUnion });\n if (Object.keys(errorUnion).length && errorUnion.type !== 'unknown') {\n result.error = errorUnion;\n }\n }\n\n const responseKeys = Object.keys(responses.properties);\n if (responseKeys.length) {\n responses.required = responseKeys;\n result.responses = responses;\n\n let responseUnion = addItemsToSchema({\n items: Object.values(responses.properties),\n mutateSchemaOneItem: true,\n schema: {},\n });\n responseUnion = deduplicateSchema({ schema: responseUnion });\n if (Object.keys(responseUnion).length && responseUnion.type !== 'unknown') {\n result.response = responseUnion;\n }\n }\n\n return result;\n};\n","import type { Client as ParserClient, Model } from '../openApi';\nimport { sanitizeNamespaceIdentifier } from '../openApi';\nimport type { Client, Operation, Service } from '../types/client';\nimport type { Config } from '../types/config';\nimport { getConfig, legacyNameFromConfig } from './config';\nimport { sort } from './sort';\nimport { stringCase } from './stringCase';\nimport { unique } from './unique';\n\n/**\n * Post process client\n * @param client Client object with all the models, services, etc.\n */\nexport function postProcessClient(\n client: Omit<ParserClient, 'config'>,\n config: Config,\n): Client {\n return {\n ...client,\n config,\n models: client.models.map((model) => postProcessModel(model)),\n services: postProcessOperations(client.operations).map(postProcessService),\n types: {},\n };\n}\n\nconst postProcessModel = (model: Model): Model => ({\n ...model,\n $refs: model.$refs.filter((value, index, arr) => unique(value, index, arr)),\n enum: model.enum.filter(\n (value, index, arr) =>\n arr.findIndex((item) => item.value === value.value) === index,\n ),\n enums: model.enums.filter(\n (value, index, arr) =>\n arr.findIndex((item) => item.name === value.name) === index,\n ),\n imports: model.imports\n .filter(\n (value, index, arr) => unique(value, index, arr) && value !== model.name,\n )\n .sort(sort),\n});\n\nconst postProcessOperations = (\n operations: ParserClient['operations'],\n): Client['services'] => {\n const config = getConfig();\n\n const services = new Map<string, Service>();\n\n operations.forEach((parserOperation) => {\n const tags =\n parserOperation.tags?.length &&\n (config.plugins['@hey-api/sdk']?.asClass || legacyNameFromConfig(config))\n ? parserOperation.tags.filter(unique)\n : ['Default'];\n tags.forEach((tag) => {\n const operation: Operation = {\n ...parserOperation,\n service: getServiceName(tag),\n };\n const service =\n services.get(operation.service) || getNewService(operation);\n service.$refs = [...service.$refs, ...operation.$refs];\n service.imports = [...service.imports, ...operation.imports];\n service.operations = [...service.operations, operation];\n services.set(operation.service, service);\n });\n });\n\n return Array.from(services.values());\n};\n\nconst postProcessService = (service: Service): Service => {\n const clone = { ...service };\n clone.operations = postProcessServiceOperations(clone);\n clone.operations.forEach((operation) => {\n clone.imports.push(...operation.imports);\n });\n clone.imports = clone.imports.filter(unique).sort(sort);\n return clone;\n};\n\nconst postProcessServiceOperations = (service: Service): Operation[] => {\n const names = new Map<string, number>();\n\n return service.operations.map((operation) => {\n const clone = { ...operation };\n\n // Parse the service parameters and successes, very similar to how we parse\n // properties of models. These methods will extend the type if needed.\n clone.imports.push(\n ...clone.parameters.flatMap((parameter) => parameter.imports),\n );\n const successResponses = clone.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n clone.imports.push(...successResponses.flatMap((result) => result.imports));\n\n // Check if the operation name is unique, if not then prefix this with a number\n const name = clone.name;\n const index = names.get(name) || 0;\n if (index > 0) {\n clone.name = `${name}${index}`;\n }\n names.set(name, index + 1);\n\n return clone;\n });\n};\n\nexport const getNewService = (operation: Operation): Service => ({\n $refs: [],\n imports: [],\n name: operation.service,\n operations: [],\n});\n\n/**\n * Convert the input value to a correct service name. This converts\n * the input string to PascalCase.\n */\nexport const getServiceName = (value: string): string =>\n stringCase({\n case: 'PascalCase',\n value: sanitizeNamespaceIdentifier(value),\n });\n","import type { Comments } from '../../../compiler';\nimport type { IR } from '../../../ir/types';\nimport { escapeComment } from '../../../utils/escape';\n\nexport const createOperationComment = ({\n operation,\n}: {\n operation: IR.OperationObject;\n}): Comments | undefined => {\n const comments: Array<string> = [];\n\n if (operation.deprecated) {\n comments.push('@deprecated');\n }\n\n if (operation.summary) {\n comments.push(escapeComment(operation.summary));\n }\n\n if (operation.description) {\n comments.push(escapeComment(operation.description));\n }\n\n return comments.length ? comments : undefined;\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../../compiler';\nimport { operationResponsesMap } from '../../ir/operation';\nimport { deduplicateSchema } from '../../ir/schema';\nimport type { IR } from '../../ir/types';\nimport { numberRegExp } from '../../utils/regexp';\nimport { operationIrRef } from '../shared/utils/ref';\nimport type { Plugin } from '../types';\nimport type { Config } from './types';\n\ninterface SchemaWithType<T extends Required<IR.SchemaObject>['type']>\n extends Omit<IR.SchemaObject, 'type'> {\n type: Extract<Required<IR.SchemaObject>['type'], T>;\n}\n\ninterface Result {\n circularReferenceTracker: Set<string>;\n hasCircularReference: boolean;\n}\n\nexport const zodId = 'zod';\n\n// frequently used identifiers\nconst andIdentifier = compiler.identifier({ text: 'and' });\nconst coerceIdentifier = compiler.identifier({ text: 'coerce' });\nconst defaultIdentifier = compiler.identifier({ text: 'default' });\nconst intersectionIdentifier = compiler.identifier({ text: 'intersection' });\nconst lazyIdentifier = compiler.identifier({ text: 'lazy' });\nconst lengthIdentifier = compiler.identifier({ text: 'length' });\nconst literalIdentifier = compiler.identifier({ text: 'literal' });\nconst maxIdentifier = compiler.identifier({ text: 'max' });\nconst minIdentifier = compiler.identifier({ text: 'min' });\nconst objectIdentifier = compiler.identifier({ text: 'object' });\nconst optionalIdentifier = compiler.identifier({ text: 'optional' });\nconst readonlyIdentifier = compiler.identifier({ text: 'readonly' });\nconst regexIdentifier = compiler.identifier({ text: 'regex' });\nconst unionIdentifier = compiler.identifier({ text: 'union' });\nconst zIdentifier = compiler.identifier({ text: 'z' });\n\nconst nameTransformer = (name: string) => `z-${name}`;\n\nconst arrayTypeToZodSchema = ({\n context,\n result,\n schema,\n}: {\n context: IR.Context;\n result: Result;\n schema: SchemaWithType<'array'>;\n}): ts.CallExpression => {\n const functionName = compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'array' }),\n });\n\n let arrayExpression: ts.CallExpression | undefined;\n\n if (!schema.items) {\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: [\n unknownTypeToZodSchema({\n context,\n schema: {\n type: 'unknown',\n },\n }),\n ],\n });\n } else {\n schema = deduplicateSchema({ schema });\n\n // at least one item is guaranteed\n const itemExpressions = schema.items!.map((item) =>\n schemaToZodSchema({\n context,\n result,\n schema: item,\n }),\n );\n\n if (itemExpressions.length === 1) {\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return compiler.typeArrayNode(\n // compiler.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n // TODO: parser - handle union\n // return compiler.typeArrayNode(compiler.typeUnionNode({ types: itemExpressions }));\n\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: [\n unknownTypeToZodSchema({\n context,\n schema: {\n type: 'unknown',\n },\n }),\n ],\n });\n }\n }\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: lengthIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minItems })],\n });\n } else {\n if (schema.minItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: minIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minItems })],\n });\n }\n\n if (schema.maxItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: maxIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.maxItems })],\n });\n }\n }\n\n return arrayExpression;\n};\n\nconst booleanTypeToZodSchema = ({\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'boolean'>;\n}) => {\n if (typeof schema.const === 'boolean') {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.ots.boolean(schema.const)],\n });\n return expression;\n }\n\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'boolean' }),\n }),\n });\n return expression;\n};\n\nconst enumTypeToZodSchema = ({\n context,\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'enum'>;\n}): ts.CallExpression => {\n const enumMembers: Array<ts.LiteralExpression> = [];\n\n let isNullable = false;\n\n for (const item of schema.items ?? []) {\n // Zod supports only string enums\n if (item.type === 'string' && typeof item.const === 'string') {\n enumMembers.push(\n compiler.stringLiteral({\n text: item.const,\n }),\n );\n } else if (item.type === 'null' || item.const === null) {\n isNullable = true;\n }\n }\n\n if (!enumMembers.length) {\n return unknownTypeToZodSchema({\n context,\n schema: {\n type: 'unknown',\n },\n });\n }\n\n let enumExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'enum' }),\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n enumExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: enumExpression,\n name: compiler.identifier({ text: 'nullable' }),\n }),\n });\n }\n\n return enumExpression;\n};\n\nconst neverTypeToZodSchema = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'never'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'never' }),\n }),\n });\n return expression;\n};\n\nconst nullTypeToZodSchema = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'null'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'null' }),\n }),\n });\n return expression;\n};\n\nconst numberParameter = ({\n isBigInt,\n value,\n}: {\n isBigInt: boolean;\n value: number;\n}) => {\n const expression = compiler.valueToExpression({ value });\n\n if (isBigInt) {\n return compiler.callExpression({\n functionName: 'BigInt',\n parameters: [expression],\n });\n }\n\n return expression;\n};\n\nconst numberTypeToZodSchema = ({\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'integer' | 'number'>;\n}) => {\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n\n if (typeof schema.const === 'number') {\n // TODO: parser - handle bigint constants\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.ots.number(schema.const)],\n });\n return expression;\n }\n\n let numberExpression = compiler.callExpression({\n functionName: isBigInt\n ? compiler.propertyAccessExpression({\n expression: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: coerceIdentifier,\n }),\n name: compiler.identifier({ text: 'bigint' }),\n })\n : compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'number' }),\n }),\n });\n\n if (!isBigInt && schema.type === 'integer') {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'int' }),\n }),\n });\n }\n\n if (schema.exclusiveMinimum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'gt' }),\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMinimum }),\n ],\n });\n } else if (schema.minimum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'gte' }),\n }),\n parameters: [numberParameter({ isBigInt, value: schema.minimum })],\n });\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'lt' }),\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMaximum }),\n ],\n });\n } else if (schema.maximum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'lte' }),\n }),\n parameters: [numberParameter({ isBigInt, value: schema.maximum })],\n });\n }\n\n return numberExpression;\n};\n\nconst objectTypeToZodSchema = ({\n context,\n result,\n schema,\n}: {\n context: IR.Context;\n result: Result;\n schema: SchemaWithType<'object'>;\n}): {\n anyType: string;\n expression: ts.CallExpression;\n} => {\n // TODO: parser - handle constants\n const properties: Array<ts.PropertyAssignment> = [];\n\n // let indexProperty: Property | undefined;\n // const schemaProperties: Array<Property> = [];\n // let indexPropertyItems: Array<IR.SchemaObject> = [];\n const required = schema.required ?? [];\n // let hasOptionalProperties = false;\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n const isRequired = required.includes(name);\n\n const propertyExpression = schemaToZodSchema({\n context,\n optional: !isRequired,\n result,\n schema: property,\n });\n\n numberRegExp.lastIndex = 0;\n let propertyName;\n if (numberRegExp.test(name)) {\n // For numeric literals, we'll handle negative numbers by using a string literal\n // instead of trying to use a PrefixUnaryExpression\n propertyName = name.startsWith('-')\n ? ts.factory.createStringLiteral(name)\n : ts.factory.createNumericLiteral(name);\n } else {\n propertyName = name;\n }\n // TODO: parser - abstract safe property name logic\n if (\n ((name.match(/^[0-9]/) && name.match(/\\D+/g)) || name.match(/\\W/g)) &&\n !name.startsWith(\"'\") &&\n !name.endsWith(\"'\")\n ) {\n propertyName = `'${name}'`;\n }\n properties.push(\n compiler.propertyAssignment({\n initializer: propertyExpression,\n name: propertyName,\n }),\n );\n\n // indexPropertyItems.push(property);\n // if (!isRequired) {\n // hasOptionalProperties = true;\n // }\n }\n\n // if (\n // schema.additionalProperties &&\n // (schema.additionalProperties.type !== 'never' || !indexPropertyItems.length)\n // ) {\n // if (schema.additionalProperties.type === 'never') {\n // indexPropertyItems = [schema.additionalProperties];\n // } else {\n // indexPropertyItems.unshift(schema.additionalProperties);\n // }\n\n // if (hasOptionalProperties) {\n // indexPropertyItems.push({\n // type: 'undefined',\n // });\n // }\n\n // indexProperty = {\n // isRequired: true,\n // name: 'key',\n // type: schemaToZodSchema({\n // context,\n // schema:\n // indexPropertyItems.length === 1\n // ? indexPropertyItems[0]\n // : {\n // items: indexPropertyItems,\n // logicalOperator: 'or',\n // },\n // }),\n // };\n // }\n\n // return compiler.typeInterfaceNode({\n // indexProperty,\n // properties: schemaProperties,\n // useLegacyResolution: false,\n // });\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: objectIdentifier,\n }),\n parameters: [ts.factory.createObjectLiteralExpression(properties, true)],\n });\n return {\n anyType: 'AnyZodObject',\n expression,\n };\n};\n\nconst stringTypeToZodSchema = ({\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'string'>;\n}) => {\n if (typeof schema.const === 'string') {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.ots.string(schema.const)],\n });\n return expression;\n }\n\n let stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'string' }),\n }),\n });\n\n if (schema.format) {\n switch (schema.format) {\n case 'date-time':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: 'datetime' }),\n }),\n });\n break;\n case 'ipv4':\n case 'ipv6':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: 'ip' }),\n }),\n });\n break;\n case 'uri':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: 'url' }),\n }),\n });\n break;\n case 'date':\n case 'email':\n case 'time':\n case 'uuid':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: schema.format }),\n }),\n });\n break;\n }\n }\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: lengthIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minLength })],\n });\n } else {\n if (schema.minLength !== undefined) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: minIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minLength })],\n });\n }\n\n if (schema.maxLength !== undefined) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: maxIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.maxLength })],\n });\n }\n }\n\n if (schema.pattern) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: regexIdentifier,\n }),\n parameters: [compiler.regularExpressionLiteral({ text: schema.pattern })],\n });\n }\n\n return stringExpression;\n};\n\nconst tupleTypeToZodSchema = ({\n context,\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'tuple'>;\n}) => {\n if (schema.const && Array.isArray(schema.const)) {\n const tupleElements = schema.const.map((value) =>\n compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value })],\n }),\n );\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'tuple' }),\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n }\n\n // TODO: parser - handle tuple items\n // const itemTypes: Array<ts.TypeNode> = [];\n\n // for (const item of schema.items ?? []) {\n // itemTypes.push(\n // schemaToType({\n // context,\n // namespace,\n // plugin,\n // schema: item,\n // }),\n // );\n // }\n\n // return compiler.typeTupleNode({\n // types: itemTypes,\n // });\n\n return unknownTypeToZodSchema({\n context,\n schema: {\n type: 'unknown',\n },\n });\n};\n\nconst undefinedTypeToZodSchema = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'undefined'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'undefined' }),\n }),\n });\n return expression;\n};\n\nconst unknownTypeToZodSchema = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'unknown'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'unknown' }),\n }),\n });\n return expression;\n};\n\nconst voidTypeToZodSchema = ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n schema,\n}: {\n context: IR.Context;\n schema: SchemaWithType<'void'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'void' }),\n }),\n });\n return expression;\n};\n\nconst schemaTypeToZodSchema = ({\n context,\n result,\n schema,\n}: {\n context: IR.Context;\n result: Result;\n schema: IR.SchemaObject;\n}): {\n anyType?: string;\n expression: ts.Expression;\n} => {\n switch (schema.type as Required<IR.SchemaObject>['type']) {\n case 'array':\n return {\n expression: arrayTypeToZodSchema({\n context,\n result,\n schema: schema as SchemaWithType<'array'>,\n }),\n };\n case 'boolean':\n return {\n expression: booleanTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'boolean'>,\n }),\n };\n case 'enum':\n return {\n expression: enumTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'enum'>,\n }),\n };\n case 'integer':\n case 'number':\n return {\n expression: numberTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'integer' | 'number'>,\n }),\n };\n case 'never':\n return {\n expression: neverTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'never'>,\n }),\n };\n case 'null':\n return {\n expression: nullTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'null'>,\n }),\n };\n case 'object':\n return objectTypeToZodSchema({\n context,\n result,\n schema: schema as SchemaWithType<'object'>,\n });\n case 'string':\n return {\n expression: stringTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'string'>,\n }),\n };\n case 'tuple':\n return {\n expression: tupleTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'tuple'>,\n }),\n };\n case 'undefined':\n return {\n expression: undefinedTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'undefined'>,\n }),\n };\n case 'unknown':\n return {\n expression: unknownTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'unknown'>,\n }),\n };\n case 'void':\n return {\n expression: voidTypeToZodSchema({\n context,\n schema: schema as SchemaWithType<'void'>,\n }),\n };\n }\n};\n\nconst operationToZodSchema = ({\n context,\n operation,\n result,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n result: Result;\n}) => {\n if (operation.responses) {\n const { response } = operationResponsesMap(operation);\n\n if (response) {\n schemaToZodSchema({\n $ref: operationIrRef({\n case: 'camelCase',\n config: context.config,\n id: operation.id,\n type: 'response',\n }),\n context,\n result,\n schema: response,\n });\n }\n }\n};\n\nconst schemaToZodSchema = ({\n $ref,\n context,\n optional,\n result,\n schema,\n}: {\n /**\n * When $ref is supplied, a node will be emitted to the file.\n */\n $ref?: string;\n context: IR.Context;\n /**\n * Accept `optional` to handle optional object properties. We can't handle\n * this inside the object function because `.optional()` must come before\n * `.default()` which is handled in this function.\n */\n optional?: boolean;\n result: Result;\n schema: IR.SchemaObject;\n}): ts.Expression => {\n const file = context.file({ id: zodId })!;\n\n let anyType: string | undefined;\n let expression: ts.Expression | undefined;\n let identifier: ReturnType<typeof file.identifier> | undefined;\n\n if ($ref) {\n result.circularReferenceTracker.add($ref);\n\n identifier = file.identifier({\n $ref,\n create: true,\n nameTransformer,\n namespace: 'value',\n });\n }\n\n if (schema.$ref) {\n const isCircularReference = result.circularReferenceTracker.has(\n schema.$ref,\n );\n\n // if $ref hasn't been processed yet, inline it to avoid the\n // \"Block-scoped variable used before its declaration.\" error\n // this could be (maybe?) fixed by reshuffling the generation order\n let identifierRef = file.identifier({\n $ref: schema.$ref,\n nameTransformer,\n namespace: 'value',\n });\n\n if (!identifierRef.name) {\n const ref = context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n expression = schemaToZodSchema({\n $ref: schema.$ref,\n context,\n result,\n schema: ref,\n });\n\n identifierRef = file.identifier({\n $ref: schema.$ref,\n nameTransformer,\n namespace: 'value',\n });\n }\n\n // if `identifierRef.name` is falsy, we already set expression above\n if (identifierRef.name) {\n const refIdentifier = compiler.identifier({ text: identifierRef.name });\n if (isCircularReference) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: lazyIdentifier,\n }),\n parameters: [\n compiler.arrowFunction({\n statements: [\n compiler.returnStatement({\n expression: refIdentifier,\n }),\n ],\n }),\n ],\n });\n result.hasCircularReference = true;\n } else {\n expression = refIdentifier;\n }\n }\n } else if (schema.type) {\n const zodSchema = schemaTypeToZodSchema({\n context,\n result,\n schema,\n });\n anyType = zodSchema.anyType;\n expression = zodSchema.expression;\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n\n if (schema.items) {\n const itemTypes = schema.items.map((item) =>\n schemaToZodSchema({\n context,\n result,\n schema: item,\n }),\n );\n\n if (schema.logicalOperator === 'and') {\n const firstSchema = schema.items[0]!;\n // we want to add an intersection, but not every schema can use the same API.\n // if the first item contains another array or not an object, we cannot use\n // `.merge()` as that does not exist on `.union()` and non-object schemas.\n if (\n firstSchema.logicalOperator === 'or' ||\n (firstSchema.type && firstSchema.type !== 'object')\n ) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: intersectionIdentifier,\n }),\n parameters: itemTypes,\n });\n } else {\n expression = itemTypes[0];\n itemTypes.slice(1).forEach((item) => {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: expression!,\n name: andIdentifier,\n }),\n parameters: [item],\n });\n });\n }\n } else {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: unionIdentifier,\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n }\n } else {\n expression = schemaToZodSchema({\n context,\n result,\n schema,\n });\n }\n } else {\n // catch-all fallback for failed schemas\n const zodSchema = schemaTypeToZodSchema({\n context,\n result,\n schema: {\n type: 'unknown',\n },\n });\n anyType = zodSchema.anyType;\n expression = zodSchema.expression;\n }\n\n if ($ref) {\n result.circularReferenceTracker.delete($ref);\n }\n\n if (expression) {\n if (schema.accessScope === 'read') {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: readonlyIdentifier,\n }),\n });\n }\n\n if (optional) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: optionalIdentifier,\n }),\n });\n }\n\n if (schema.default !== undefined) {\n const callParameter = compiler.valueToExpression({\n value: schema.default,\n });\n if (callParameter) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: defaultIdentifier,\n }),\n parameters: [callParameter],\n });\n }\n }\n }\n\n // emit nodes only if $ref points to a reusable component\n if (identifier && identifier.name && identifier.created) {\n const statement = compiler.constVariable({\n exportConst: true,\n expression: expression!,\n name: identifier.name,\n typeName: result.hasCircularReference\n ? (compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: anyType || 'ZodTypeAny',\n }) as unknown as ts.TypeNode)\n : undefined,\n });\n file.add(statement);\n }\n\n return expression!;\n};\n\nexport const handler: Plugin.Handler<Config> = ({ context, plugin }) => {\n const file = context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: zodId,\n identifierCase: 'camelCase',\n path: plugin.output,\n });\n\n file.import({\n module: 'zod',\n name: 'z',\n });\n\n context.subscribe('operation', ({ operation }) => {\n const result: Result = {\n circularReferenceTracker: new Set(),\n hasCircularReference: false,\n };\n\n operationToZodSchema({\n context,\n operation,\n result,\n });\n });\n\n context.subscribe('schema', ({ $ref, schema }) => {\n const result: Result = {\n circularReferenceTracker: new Set(),\n hasCircularReference: false,\n };\n\n schemaToZodSchema({\n $ref,\n context,\n result,\n schema,\n });\n });\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport { operationResponsesMap } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { irRef } from '../../../utils/ref';\nimport { stringCase } from '../../../utils/stringCase';\nimport { operationIrRef } from '../../shared/utils/ref';\nimport type { Plugin } from '../../types';\nimport { typesId } from '../typescript/ref';\nimport type { Config } from './types';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\n}\n\nconst bigIntExpressions = ({\n dataExpression,\n}: {\n dataExpression?: ts.Expression | string;\n}): Array<ts.Expression> => {\n const bigIntCallExpression =\n dataExpression !== undefined\n ? compiler.callExpression({\n functionName: 'BigInt',\n parameters: [\n compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: dataExpression,\n name: 'toString',\n }),\n }),\n ],\n })\n : undefined;\n\n if (bigIntCallExpression) {\n if (typeof dataExpression === 'string') {\n return [bigIntCallExpression];\n }\n\n if (dataExpression) {\n return [\n compiler.assignment({\n left: dataExpression,\n right: bigIntCallExpression,\n }),\n ];\n }\n }\n\n return [];\n};\n\nconst dateExpressions = ({\n dataExpression,\n}: {\n dataExpression?: ts.Expression | string;\n}): Array<ts.Expression> => {\n const identifierDate = compiler.identifier({ text: 'Date' });\n\n if (typeof dataExpression === 'string') {\n return [\n compiler.newExpression({\n argumentsArray: [compiler.identifier({ text: dataExpression })],\n expression: identifierDate,\n }),\n ];\n }\n\n if (dataExpression) {\n return [\n compiler.assignment({\n left: dataExpression,\n right: compiler.newExpression({\n argumentsArray: [dataExpression],\n expression: identifierDate,\n }),\n }),\n ];\n }\n\n return [];\n};\n\nexport const operationTransformerIrRef = ({\n id,\n type,\n}: OperationIRRef & {\n type: 'data' | 'error' | 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'data':\n affix = 'DataResponseTransformer';\n break;\n case 'error':\n affix = 'ErrorResponseTransformer';\n break;\n case 'response':\n affix = 'ResponseTransformer';\n break;\n }\n return `${irRef}${stringCase({\n // TODO: parser - do not pascalcase for functions, only for types\n case: 'camelCase',\n value: id,\n })}${affix}`;\n};\n\nconst schemaIrRef = ({\n $ref,\n type,\n}: {\n $ref: string;\n type: 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'response':\n affix = 'SchemaResponseTransformer';\n break;\n }\n const parts = $ref.split('/');\n return `${parts.slice(0, parts.length - 1).join('/')}/${stringCase({\n case: 'camelCase',\n value: parts[parts.length - 1]!,\n })}${affix}`;\n};\n\nexport const schemaResponseTransformerRef = ({\n $ref,\n}: {\n $ref: string;\n}): string => schemaIrRef({ $ref, type: 'response' });\n\nexport const transformersId = 'transformers';\nconst dataVariableName = 'data';\n\nconst ensureStatements = (\n nodes: Array<ts.Expression | ts.Statement>,\n): Array<ts.Statement> =>\n nodes.map((node) =>\n ts.isStatement(node)\n ? node\n : compiler.expressionToStatement({ expression: node }),\n );\n\nconst isNodeReturnStatement = ({\n node,\n}: {\n node: ts.Expression | ts.Statement;\n}) => node.kind === ts.SyntaxKind.ReturnStatement;\n\nconst schemaResponseTransformerNodes = ({\n context,\n plugin,\n schema,\n}: {\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: IR.SchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const identifierData = compiler.identifier({ text: dataVariableName });\n const nodes = processSchemaType({\n context,\n dataExpression: identifierData,\n plugin,\n schema,\n });\n // append return statement if one does not already exist\n if (\n nodes.length &&\n !isNodeReturnStatement({ node: nodes[nodes.length - 1]! })\n ) {\n nodes.push(compiler.returnStatement({ expression: identifierData }));\n }\n return nodes;\n};\n\nconst processSchemaType = ({\n context,\n dataExpression,\n plugin,\n schema,\n}: {\n context: IR.Context;\n dataExpression?: ts.Expression | string;\n plugin: Plugin.Instance<Config>;\n schema: IR.SchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const file = context.file({ id: transformersId })!;\n\n if (schema.$ref) {\n let identifier = file.identifier({\n $ref: schemaResponseTransformerRef({ $ref: schema.$ref }),\n create: true,\n namespace: 'value',\n });\n\n if (identifier.created && identifier.name) {\n // create each schema response transformer only once\n const refSchema = context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n const nodes = schemaResponseTransformerNodes({\n context,\n plugin,\n schema: refSchema,\n });\n if (nodes.length) {\n const node = compiler.constVariable({\n expression: compiler.arrowFunction({\n async: false,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transforms\n type: compiler.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n statements: ensureStatements(nodes),\n }),\n name: identifier.name,\n });\n file.add(node);\n } else {\n // the created schema response transformer was empty, do not generate\n // it and prevent any future attempts\n identifier = file.blockIdentifier({\n $ref: schemaResponseTransformerRef({ $ref: schema.$ref }),\n namespace: 'value',\n });\n }\n }\n\n if (identifier.name) {\n const callExpression = compiler.callExpression({\n functionName: identifier.name,\n parameters: [dataExpression],\n });\n\n if (dataExpression) {\n // In a map callback, the item needs to be returned, not just the transformation result\n if (typeof dataExpression === 'string' && dataExpression === 'item') {\n return [\n compiler.returnStatement({\n expression: callExpression,\n }),\n ];\n }\n\n return [\n typeof dataExpression === 'string'\n ? callExpression\n : compiler.assignment({\n left: dataExpression,\n right: callExpression,\n }),\n ];\n }\n }\n\n return [];\n }\n\n if (schema.type === 'array') {\n if (!dataExpression || typeof dataExpression === 'string') {\n return [];\n }\n\n // TODO: parser - handle tuples and complex arrays\n const nodes = !schema.items\n ? []\n : processSchemaType({\n context,\n dataExpression: 'item',\n plugin,\n schema: schema.items?.[0]\n ? schema.items[0]\n : {\n ...schema,\n type: undefined,\n },\n });\n\n if (!nodes.length) {\n return [];\n }\n\n // Ensure the map callback has a return statement for the item\n const mapCallbackStatements = ensureStatements(nodes);\n const hasReturnStatement = mapCallbackStatements.some((stmt) =>\n isNodeReturnStatement({ node: stmt }),\n );\n\n if (!hasReturnStatement) {\n mapCallbackStatements.push(\n compiler.returnStatement({\n expression: compiler.identifier({ text: 'item' }),\n }),\n );\n }\n\n return [\n compiler.assignment({\n left: dataExpression,\n right: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: dataExpression,\n name: 'map',\n }),\n parameters: [\n compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'item',\n type: 'any',\n },\n ],\n statements: mapCallbackStatements,\n }),\n ],\n }),\n }),\n ];\n }\n\n if (schema.type === 'object') {\n let nodes: Array<ts.Expression | ts.Statement> = [];\n const required = schema.required ?? [];\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n const propertyAccessExpression = compiler.propertyAccessExpression({\n expression: dataExpression || dataVariableName,\n name,\n });\n const propertyNodes = processSchemaType({\n context,\n dataExpression: propertyAccessExpression,\n plugin,\n schema: property,\n });\n if (!propertyNodes.length) {\n continue;\n }\n const noNullableTypesInSchema = !property.items?.find(\n (x) => x.type === 'null',\n );\n const requiredField = required.includes(name);\n // Cannot fully rely on required fields\n // Such value has to be present, but it doesn't guarantee that this value is not nullish\n if (requiredField && noNullableTypesInSchema) {\n nodes = nodes.concat(propertyNodes);\n } else {\n nodes.push(\n // todo: Probably, it would make more sense to go with if(x !== undefined && x !== null) instead of if(x)\n // this place influences all underlying transformers, while it's not exactly transformer itself\n // Keep in mind that !!0 === false, so it already makes output for Bigint undesirable\n compiler.ifStatement({\n expression: propertyAccessExpression,\n thenStatement: compiler.block({\n statements: ensureStatements(propertyNodes),\n }),\n }),\n );\n }\n }\n\n return nodes;\n }\n\n if (\n plugin.dates &&\n schema.type === 'string' &&\n (schema.format === 'date' || schema.format === 'date-time')\n ) {\n return dateExpressions({ dataExpression });\n }\n\n if (plugin.bigInt && schema.type === 'integer' && schema.format === 'int64') {\n return bigIntExpressions({ dataExpression });\n }\n\n if (schema.items) {\n if (schema.items.length === 1) {\n return processSchemaType({\n context,\n dataExpression: 'item',\n plugin,\n schema: schema.items[0]!,\n });\n }\n\n let arrayNodes: Array<ts.Expression | ts.Statement> = [];\n // process 2 items if one of them is null\n if (\n schema.logicalOperator === 'and' ||\n (schema.items.length === 2 &&\n schema.items.find(\n (item) => item.type === 'null' || item.type === 'void',\n ))\n ) {\n for (const item of schema.items) {\n const nodes = processSchemaType({\n context,\n dataExpression: dataExpression || 'item',\n plugin,\n schema: item,\n });\n if (nodes.length) {\n if (dataExpression) {\n arrayNodes = arrayNodes.concat(nodes);\n } else {\n const identifierItem = compiler.identifier({ text: 'item' });\n // processed means the item was transformed\n arrayNodes.push(\n compiler.ifStatement({\n expression: identifierItem,\n thenStatement: compiler.block({\n statements: ensureStatements(nodes),\n }),\n }),\n compiler.returnStatement({ expression: identifierItem }),\n );\n }\n }\n }\n return arrayNodes;\n }\n\n // assume enums do not contain transformable values\n if (schema.type !== 'enum') {\n console.warn(\n `❗️ Transformers warning: schema ${JSON.stringify(schema)} is too complex and won't be currently processed. This will likely produce an incomplete transformer which is not what you want. Please open an issue if you'd like this improved https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n }\n\n return [];\n};\n\n// handles only response transformers for now\nexport const handler: Plugin.Handler<Config> = ({ context, plugin }) => {\n const file = context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: transformersId,\n path: plugin.output,\n });\n\n context.subscribe('operation', ({ operation }) => {\n const { response } = operationResponsesMap(operation);\n\n if (!response) {\n return;\n }\n\n if (response.items && response.items.length > 1) {\n if (context.config.logs.level === 'debug') {\n console.warn(\n `❗️ Transformers warning: route ${`${operation.method.toUpperCase()} ${operation.path}`} has ${response.items.length} non-void success responses. This is currently not handled and we will not generate a response transformer. Please open an issue if you'd like this feature https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n return;\n }\n\n const identifierResponse = context.file({ id: typesId })!.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'response',\n }),\n namespace: 'type',\n });\n if (!identifierResponse.name) {\n return;\n }\n\n let identifierResponseTransformer = file.identifier({\n $ref: operationTransformerIrRef({ id: operation.id, type: 'response' }),\n create: true,\n namespace: 'value',\n });\n if (!identifierResponseTransformer.name) {\n return;\n }\n\n // TODO: parser - consider handling simple string response which is also a date\n const nodes = schemaResponseTransformerNodes({\n context,\n plugin,\n schema: response,\n });\n if (nodes.length) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierResponse.name,\n });\n const responseTransformerNode = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transforms\n type: compiler.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n returnType: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n }),\n ],\n typeName: 'Promise',\n }),\n statements: ensureStatements(nodes),\n }),\n name: identifierResponseTransformer.name,\n });\n file.add(responseTransformerNode);\n } else {\n // the created schema response transformer was empty, do not generate\n // it and prevent any future attempts\n identifierResponseTransformer = file.blockIdentifier({\n $ref: operationTransformerIrRef({\n id: operation.id,\n type: 'response',\n }),\n namespace: 'value',\n });\n }\n });\n};\n","export const nuxtTypeComposable = 'TComposable';\nexport const nuxtTypeDefault = 'DefaultT';\nexport const nuxtTypeResponse = 'ResT';\n\nexport const sdkId = 'sdk';\n","import type ts from 'typescript';\n\nimport type { Comments, FunctionParameter } from '../../../compiler';\nimport { compiler } from '../../../compiler';\nimport type {\n FunctionTypeParameter,\n ObjectValue,\n} from '../../../compiler/types';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { TypeScriptFile } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport type {\n Client,\n Model,\n Operation,\n OperationParameter,\n Service,\n} from '../../../types/client';\nimport type { Config as ClientConfig } from '../../../types/config';\nimport {\n getConfig,\n isLegacyClient,\n legacyNameFromConfig,\n} from '../../../utils/config';\nimport { escapeComment, escapeName } from '../../../utils/escape';\nimport { reservedJavaScriptKeywordsRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { transformServiceName } from '../../../utils/transform';\nimport { setUniqueTypeName } from '../../../utils/type';\nimport { unique } from '../../../utils/unique';\nimport type { Plugin } from '../../types';\nimport { getClientPlugin } from '../client-core/utils';\nimport type { Config } from './types';\n\ntype OnNode = (node: ts.Node) => void;\ntype OnImport = (name: string) => void;\n\nexport const generateImport = ({\n meta,\n onImport,\n ...setUniqueTypeNameArgs\n}: Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> & {\n onImport: OnImport;\n }) => {\n // generate imports only for top-level models\n if (!meta) {\n // TODO: this used to return undefined. We could refactor this function to\n // return undefined again, but we will need to improve types so we can safely\n // do `const { name } = generateImport({ meta: ... })` (note when meta is defined\n // we guarantee the response to be an object). For now, nothing relies on this\n // response shape except for plugins, so it was acceptable to patch it that way\n return { created: false, name: '' };\n }\n\n const { created, name } = setUniqueTypeName({\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (name) {\n onImport(name);\n }\n return { created, name };\n};\n\nexport const modelResponseTransformerTypeName = (name: string) =>\n `${name}ModelResponseTransformer`;\n\nexport const operationDataTypeName = (name: string) =>\n `${stringCase({\n case: 'PascalCase',\n value: name,\n })}Data`;\n\nexport const operationErrorTypeName = (name: string) =>\n `${stringCase({\n case: 'PascalCase',\n value: name,\n })}Error`;\n\n// operation response type ends with \"Response\", it's enough to append \"Transformer\"\nexport const operationResponseTransformerTypeName = (name: string) =>\n `${name}Transformer`;\n\nexport const operationResponseTypeName = (name: string) =>\n `${stringCase({\n case: 'PascalCase',\n value: name,\n })}Response`;\n\n/**\n * @param importedType unique type name returned from `setUniqueTypeName()`\n * @returns options type\n */\nexport const operationOptionsLegacyParserType = ({\n importedType,\n throwOnError,\n}: {\n importedType?: string | false;\n throwOnError?: string;\n}) => {\n const optionsName = clientApi.OptionsLegacyParser.name;\n // TODO: refactor this to be more generic, works for now\n if (throwOnError) {\n return `${optionsName}<${importedType || 'unknown'}, ${throwOnError}>`;\n }\n return importedType ? `${optionsName}<${importedType}>` : optionsName;\n};\n\nconst toOperationParamType = (\n client: Client,\n operation: Operation,\n): FunctionParameter[] => {\n const config = getConfig();\n\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n if (!isLegacyClient(config)) {\n return [\n {\n isRequired,\n name: 'options',\n type: operationOptionsLegacyParserType({\n importedType,\n throwOnError: 'ThrowOnError',\n }),\n },\n ];\n }\n\n if (!operation.parameters.length) {\n return [];\n }\n\n const getDefaultPrintable = (\n p: OperationParameter | Model,\n ): string | undefined => {\n if (p.default === undefined) {\n return undefined;\n }\n return JSON.stringify(p.default, null, 4);\n };\n\n // legacy configuration\n if (!config.useOptions) {\n return operation.parameters.map((p) => {\n const typePath = `${importedType}['${p.name}']`;\n return {\n default: p?.default,\n isRequired:\n (!p.isRequired && !getDefaultPrintable(p) ? '?' : '') === '',\n name: p.name,\n type: typePath,\n };\n });\n }\n\n return [\n {\n default: isRequired ? undefined : {},\n name: 'data',\n type: importedType,\n },\n ];\n};\n\nconst toOperationReturnType = (client: Client, operation: Operation) => {\n const config = getConfig();\n\n let returnType = compiler.typeNode('void');\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n // TODO: we should return nothing when successes don't exist\n // can't remove this logic without removing request/name config\n // as it complicates things\n if (successResponses.length) {\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n });\n returnType = compiler.typeUnionNode({\n types: [importedType],\n });\n }\n\n if (\n config.useOptions &&\n config.plugins['@hey-api/sdk']?.response === 'response'\n ) {\n returnType = compiler.typeNode('ApiResult', [returnType]);\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === 'legacy/angular') {\n returnType = compiler.typeNode('Observable', [returnType]);\n } else {\n returnType = compiler.typeNode('CancelablePromise', [returnType]);\n }\n\n return returnType;\n};\n\nconst toOperationComment = (operation: Operation): Comments => {\n const config = getConfig();\n\n if (!isLegacyClient(config)) {\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ];\n return comment;\n }\n\n let params: string[] = [];\n\n if (operation.parameters.length) {\n if (config.useOptions) {\n params = [\n '@param data The data for the request.',\n ...operation.parameters.map(\n (parameter) =>\n `@param data.${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n ),\n ];\n } else {\n params = operation.parameters.map(\n (parameter) =>\n `@param ${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n );\n }\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ...params,\n ...successResponses.map(\n (response) =>\n `@returns ${response.type} ${response.description ? escapeComment(response.description) : ''}`,\n ),\n '@throws ApiError',\n ];\n return comment;\n};\n\nconst toRequestOptions = ({\n client,\n onClientImport,\n onImport,\n operation,\n}: {\n client: Client;\n onClientImport: OnImport | undefined;\n onImport: OnImport;\n operation: Operation;\n}) => {\n const config = getConfig();\n\n const name = operationResponseTypeName(operation.name);\n const { name: responseTransformerName } = setUniqueTypeName({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n nameTransformer: operationResponseTransformerTypeName,\n });\n\n if (responseTransformerName) {\n onImport(responseTransformerName);\n }\n\n if (!isLegacyClient(config)) {\n let obj: ObjectValue[] = [\n {\n spread: 'options',\n },\n ];\n\n const bodyParameters = operation.parameters.filter(\n (parameter) => parameter.in === 'body' || parameter.in === 'formData',\n );\n const contents = bodyParameters\n .map(\n (parameter) =>\n parameter.mediaType ||\n (parameter.in === 'formData' ? 'multipart/form-data' : undefined),\n )\n .filter(Boolean)\n .filter(unique);\n if (contents.length === 1) {\n if (contents[0] === 'multipart/form-data') {\n obj = [\n ...obj,\n {\n spread: 'formDataBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n // no need for Content-Type header, browser will set it automatically\n key: 'Content-Type',\n value: null,\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('formDataBodySerializer');\n }\n\n if (contents[0] === 'application/x-www-form-urlencoded') {\n obj = [\n ...obj,\n {\n spread: 'urlSearchParamsBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n key: 'Content-Type',\n value: contents[0],\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('urlSearchParamsBodySerializer');\n }\n }\n\n // TODO: set parseAs to skip inference if every result has the same\n // content type. currently impossible because successes do not contain\n // header information\n\n obj = [\n ...obj,\n {\n key: 'url',\n value: operation.path,\n },\n ];\n\n if (responseTransformerName) {\n obj = [\n ...obj,\n {\n key: 'responseTransformer',\n value: responseTransformerName,\n },\n ];\n }\n\n return compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj,\n });\n }\n\n const toObj = (parameters: OperationParameter[]) =>\n parameters.reduce(\n (prev, curr) => {\n const key = curr.prop;\n const value = config.useOptions ? `data.${curr.name}` : curr.name;\n if (key === value) {\n prev[key] = key;\n } else if (escapeName(key) === key) {\n prev[key] = value;\n } else {\n prev[`'${key}'`] = value;\n }\n return prev;\n },\n {} as Record<string, unknown>,\n );\n\n const obj: Record<string, any> = {\n method: operation.method,\n url: operation.path,\n };\n\n if (operation.parametersPath.length) {\n obj.path = toObj(operation.parametersPath);\n }\n\n if (operation.parametersCookie.length) {\n obj.cookies = toObj(operation.parametersCookie);\n }\n\n if (operation.parametersHeader.length) {\n obj.headers = toObj(operation.parametersHeader);\n }\n\n if (operation.parametersQuery.length) {\n obj.query = toObj(operation.parametersQuery);\n }\n\n if (operation.parametersForm.length) {\n obj.formData = toObj(operation.parametersForm);\n }\n\n if (operation.parametersBody) {\n if (operation.parametersBody.in === 'formData') {\n if (config.useOptions) {\n obj.formData = `data.${operation.parametersBody.name}`;\n } else {\n obj.formData = operation.parametersBody.name;\n }\n }\n if (operation.parametersBody.in === 'body') {\n if (config.useOptions) {\n obj.body = `data.${operation.parametersBody.name}`;\n } else {\n obj.body = operation.parametersBody.name;\n }\n }\n }\n\n if (operation.parametersBody?.mediaType) {\n obj.mediaType = operation.parametersBody?.mediaType;\n }\n\n if (operation.responseHeader) {\n obj.responseHeader = operation.responseHeader;\n }\n\n if (responseTransformerName) {\n obj.responseTransformer = responseTransformerName;\n }\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n if (errorResponses.length > 0) {\n const errors: Record<number | string, string> = {};\n errorResponses.forEach((response) => {\n errors[response.code] = response.description ?? '';\n });\n obj.errors = errors;\n }\n\n return compiler.objectExpression({\n identifiers: [\n 'body',\n 'cookies',\n 'formData',\n 'headers',\n 'path',\n 'query',\n 'responseTransformer',\n ],\n obj,\n shorthand: true,\n });\n};\n\nexport const serviceFunctionIdentifier = ({\n config,\n handleIllegal,\n id,\n operation,\n}: {\n config: ClientConfig;\n handleIllegal?: boolean;\n id: string;\n operation: IR.OperationObject | Operation;\n}) => {\n if (config.plugins['@hey-api/sdk']?.methodNameBuilder) {\n return config.plugins['@hey-api/sdk'].methodNameBuilder(operation);\n }\n\n if (handleIllegal && id.match(reservedJavaScriptKeywordsRegExp)) {\n return `${id}_`;\n }\n\n return id;\n};\n\nconst toOperationStatements = ({\n client,\n onClientImport,\n onImport,\n operation,\n}: {\n client: Client;\n onClientImport?: OnImport;\n onImport: OnImport;\n operation: Operation;\n}) => {\n const config = getConfig();\n\n const options = toRequestOptions({\n client,\n onClientImport,\n onImport,\n operation,\n });\n\n if (!isLegacyClient(config)) {\n const errorType = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n }).name;\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n const responseType = successResponses.length\n ? setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n }).name\n : 'void';\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: `(options?.client ?? client).${operation.method.toLocaleLowerCase()}`,\n types:\n errorType && responseType\n ? [responseType, errorType, 'ThrowOnError']\n : errorType\n ? ['unknown', errorType, 'ThrowOnError']\n : responseType\n ? [responseType, 'unknown', 'ThrowOnError']\n : [],\n }),\n ];\n }\n\n if (legacyNameFromConfig(config)) {\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: 'this.httpRequest.request',\n }),\n ];\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === 'legacy/angular') {\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', 'this.http', options],\n name: '__request',\n }),\n ];\n }\n\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', options],\n name: '__request',\n }),\n ];\n};\n\nconst processService = ({\n client,\n onClientImport,\n onImport,\n onNode,\n service,\n}: {\n client: Client;\n onClientImport: OnImport;\n onImport: OnImport;\n onNode: OnNode;\n service: Service;\n}) => {\n const config = getConfig();\n\n const clientPlugin = getClientPlugin(config);\n const isLegacy = isLegacyClient(config);\n\n for (const operation of service.operations) {\n if (operation.parameters.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onImport,\n });\n }\n\n if (!isLegacy) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport,\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n if (successResponses.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport,\n });\n }\n }\n\n const throwOnErrorTypeGeneric: FunctionTypeParameter = {\n default:\n ('throwOnError' in clientPlugin ? clientPlugin.throwOnError : false) ??\n false,\n extends: 'boolean',\n name: 'ThrowOnError',\n };\n\n if (\n !config.plugins['@hey-api/sdk']?.asClass &&\n !legacyNameFromConfig(config)\n ) {\n for (const operation of service.operations) {\n const compileFunctionParams = {\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements({\n client,\n onClientImport,\n onImport,\n operation,\n }),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n };\n const expression =\n clientPlugin.name === 'legacy/angular'\n ? compiler.anonymousFunction(compileFunctionParams)\n : compiler.arrowFunction(compileFunctionParams);\n const statement = compiler.constVariable({\n comment: toOperationComment(operation),\n exportConst: true,\n expression,\n name: serviceFunctionIdentifier({\n config,\n handleIllegal: true,\n id: operation.name,\n operation,\n }),\n });\n onNode(statement);\n }\n return;\n }\n\n let members: ts.ClassElement[] = service.operations.map((operation) => {\n const node = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: toOperationComment(operation),\n isStatic:\n legacyNameFromConfig(config) === undefined &&\n clientPlugin.name !== 'legacy/angular',\n name: serviceFunctionIdentifier({\n config,\n id: operation.name,\n operation,\n }),\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements({\n client,\n onClientImport,\n onImport,\n operation,\n }),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n });\n return node;\n });\n\n if (!members.length) {\n return;\n }\n\n // Push constructor to front if needed\n if (legacyNameFromConfig(config)) {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'httpRequest',\n type: 'BaseHttpRequest',\n },\n ],\n }),\n ...members,\n ];\n } else if (clientPlugin.name === 'legacy/angular') {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'http',\n type: 'HttpClient',\n },\n ],\n }),\n ...members,\n ];\n }\n\n const statement = compiler.classDeclaration({\n decorator:\n clientPlugin.name === 'legacy/angular'\n ? { args: [{ providedIn: 'root' }], name: 'Injectable' }\n : undefined,\n members,\n name: transformServiceName({\n config,\n name: service.name,\n }),\n });\n onNode(statement);\n};\n\nexport const handlerLegacy: Plugin.LegacyHandler<Config> = ({\n client,\n files,\n}) => {\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n const sdkOutput = 'sdk';\n\n files.sdk = new TypeScriptFile({\n dir: config.output.path,\n id: 'sdk',\n name: `${sdkOutput}.ts`,\n });\n\n // Import required packages and core files.\n if (!isLegacy) {\n files.sdk.import({\n module: clientModulePath({ config, sourceOutput: sdkOutput }),\n name: 'createClient',\n });\n files.sdk.import({\n module: clientModulePath({ config, sourceOutput: sdkOutput }),\n name: 'createConfig',\n });\n files.sdk.import({\n ...clientApi.OptionsLegacyParser,\n module: clientModulePath({ config, sourceOutput: sdkOutput }),\n });\n } else {\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === 'legacy/angular') {\n files.sdk.import({\n module: '@angular/core',\n name: 'Injectable',\n });\n\n if (!legacyNameFromConfig(config)) {\n files.sdk.import({\n module: '@angular/common/http',\n name: 'HttpClient',\n });\n }\n\n files.sdk.import({\n asType: true,\n module: 'rxjs',\n name: 'Observable',\n });\n } else {\n files.sdk.import({\n asType: true,\n module: './core/CancelablePromise',\n name: 'CancelablePromise',\n });\n }\n\n if (config.plugins['@hey-api/sdk']?.response === 'response') {\n files.sdk.import({\n asType: true,\n module: './core/ApiResult',\n name: 'ApiResult',\n });\n }\n\n if (legacyNameFromConfig(config)) {\n const clientPlugin = getClientPlugin(config);\n files.sdk.import({\n asType: clientPlugin.name !== 'legacy/angular',\n module: './core/BaseHttpRequest',\n name: 'BaseHttpRequest',\n });\n } else {\n files.sdk.import({\n module: './core/OpenAPI',\n name: 'OpenAPI',\n });\n files.sdk.import({\n alias: '__request',\n module: './core/request',\n name: 'request',\n });\n }\n }\n\n // define client first\n if (!isLegacy) {\n const clientPlugin = getClientPlugin(config);\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: 'createClient',\n parameters: [\n compiler.callExpression({\n functionName: 'createConfig',\n parameters: [\n 'throwOnError' in clientPlugin && clientPlugin.throwOnError\n ? compiler.objectExpression({\n obj: [\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n })\n : undefined,\n ],\n }),\n ],\n }),\n name: 'client',\n });\n files.sdk.add(statement);\n }\n\n for (const service of client.services) {\n processService({\n client,\n onClientImport: (imported) => {\n files.sdk!.import({\n module: clientModulePath({ config, sourceOutput: sdkOutput }),\n name: imported,\n });\n },\n onImport: (imported) => {\n files.sdk!.import({\n // this detection could be done safer, but it shouldn't cause any issues\n asType: !imported.endsWith('Transformer'),\n module: `./${files.types!.nameWithoutExtension()}`,\n name: imported,\n });\n },\n onNode: (node) => {\n files.sdk!.add(node);\n },\n service,\n });\n }\n};\n","import { compiler } from '../../../compiler';\nimport { clientModulePath } from '../../../generate/client';\nimport type { FileImportResult } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport type { Plugin } from '../../types';\nimport { getClientPlugin } from '../client-core/utils';\nimport { nuxtTypeDefault, nuxtTypeResponse, sdkId } from './constants';\nimport type { Config } from './types';\n\nexport const createTypeOptions = ({\n clientOptions,\n context,\n plugin,\n}: {\n clientOptions: FileImportResult;\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n}) => {\n const file = context.file({ id: sdkId })!;\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const clientModule = clientModulePath({\n config: context.config,\n sourceOutput: file.nameWithoutExtension(),\n });\n const tDataShape = file.import({\n asType: true,\n module: clientModule,\n name: 'TDataShape',\n });\n const clientType = file.import({\n asType: true,\n module: clientModule,\n name: 'Client',\n });\n\n const typeOptions = compiler.typeAliasDeclaration({\n exportType: true,\n name: 'Options',\n type: compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeArguments: isNuxtClient\n ? [\n compiler.typeReferenceNode({ typeName: 'TComposable' }),\n compiler.typeReferenceNode({ typeName: 'TData' }),\n compiler.typeReferenceNode({ typeName: nuxtTypeResponse }),\n compiler.typeReferenceNode({ typeName: nuxtTypeDefault }),\n ]\n : [\n compiler.typeReferenceNode({ typeName: 'TData' }),\n compiler.typeReferenceNode({ typeName: 'ThrowOnError' }),\n ],\n typeName: clientOptions.name,\n }),\n compiler.typeInterfaceNode({\n properties: [\n {\n comment: [\n 'You can provide a client instance returned by `createClient()` instead of',\n 'individual options. This might be also useful if you want to implement a',\n 'custom client.',\n ],\n isRequired: !plugin.client,\n name: 'client',\n type: compiler.typeReferenceNode({ typeName: clientType.name }),\n },\n {\n comment: [\n 'You can pass arbitrary values through the `meta` object. This can be',\n \"used to access values that aren't defined as part of the SDK function.\",\n ],\n isRequired: false,\n name: 'meta',\n type: compiler.typeReferenceNode({\n typeArguments: [\n compiler.keywordTypeNode({ keyword: 'string' }),\n compiler.keywordTypeNode({ keyword: 'unknown' }),\n ],\n typeName: 'Record',\n }),\n },\n ],\n useLegacyResolution: false,\n }),\n ],\n }),\n typeParameters: isNuxtClient\n ? [\n compiler.typeParameterDeclaration({\n constraint: compiler.typeReferenceNode({ typeName: 'Composable' }),\n name: 'TComposable',\n }),\n compiler.typeParameterDeclaration({\n constraint: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n defaultType: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n name: 'TData',\n }),\n compiler.typeParameterDeclaration({\n defaultType: compiler.keywordTypeNode({ keyword: 'unknown' }),\n name: nuxtTypeResponse,\n }),\n compiler.typeParameterDeclaration({\n defaultType: compiler.keywordTypeNode({ keyword: 'undefined' }),\n name: nuxtTypeDefault,\n }),\n ]\n : [\n compiler.typeParameterDeclaration({\n constraint: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n defaultType: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n name: 'TData',\n }),\n compiler.typeParameterDeclaration({\n constraint: compiler.keywordTypeNode({ keyword: 'boolean' }),\n defaultType: compiler.keywordTypeNode({ keyword: 'boolean' }),\n name: 'ThrowOnError',\n }),\n ],\n });\n\n file.add(typeOptions);\n};\n","import type ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport type { ObjectValue } from '../../../compiler/types';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport type { TypeScriptFile } from '../../../generate/files';\nimport {\n hasOperationDataRequired,\n statusCodeToGroup,\n} from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { getServiceName } from '../../../utils/postprocess';\nimport { transformServiceName } from '../../../utils/transform';\nimport { createOperationComment } from '../../shared/utils/operation';\nimport { operationIrRef } from '../../shared/utils/ref';\nimport type { Plugin } from '../../types';\nimport { zodId } from '../../zod/plugin';\nimport { clientId, getClientPlugin } from '../client-core/utils';\nimport {\n operationTransformerIrRef,\n transformersId,\n} from '../transformers/plugin';\nimport {\n importIdentifierData,\n importIdentifierError,\n importIdentifierResponse,\n} from '../typescript/ref';\nimport { nuxtTypeComposable, nuxtTypeDefault } from './constants';\nimport { serviceFunctionIdentifier } from './plugin-legacy';\nimport { createTypeOptions } from './typeOptions';\nimport type { Config } from './types';\n\n// copy-pasted from @hey-api/client-core\nexport interface Auth {\n /**\n * Which part of the request do we use to send the auth?\n *\n * @default 'header'\n */\n in?: 'header' | 'query' | 'cookie';\n /**\n * Header or query parameter name.\n *\n * @default 'Authorization'\n */\n name?: string;\n scheme?: 'basic' | 'bearer';\n type: 'apiKey' | 'http';\n}\n\nexport const operationOptionsType = ({\n context,\n file,\n operation,\n throwOnError,\n}: {\n context: IR.Context;\n file: TypeScriptFile;\n operation: IR.OperationObject;\n throwOnError?: string;\n}) => {\n const identifierData = importIdentifierData({ context, file, operation });\n const identifierResponse = importIdentifierResponse({\n context,\n file,\n operation,\n });\n\n const optionsName = clientApi.Options.name;\n\n const client = getClientPlugin(context.config);\n if (client.name === '@hey-api/client-nuxt') {\n return `${optionsName}<${nuxtTypeComposable}, ${identifierData.name || 'unknown'}, ${identifierResponse.name || 'unknown'}, ${nuxtTypeDefault}>`;\n }\n\n // TODO: refactor this to be more generic, works for now\n if (throwOnError) {\n return `${optionsName}<${identifierData.name || 'unknown'}, ${throwOnError}>`;\n }\n return identifierData.name\n ? `${optionsName}<${identifierData.name}>`\n : optionsName;\n};\n\nexport const sdkId = 'sdk';\n\n/**\n * Infers `responseType` value from provided response content type. This is\n * an adapted version of `getParseAs()` from the Fetch API client.\n *\n * From Axios documentation:\n * `responseType` indicates the type of data that the server will respond with\n * options are: 'arraybuffer', 'document', 'json', 'text', 'stream'\n * browser only: 'blob'\n */\nexport const getResponseType = (\n contentType: string | null | undefined,\n):\n | 'arraybuffer'\n | 'blob'\n | 'document'\n | 'json'\n | 'stream'\n | 'text'\n | undefined => {\n if (!contentType) {\n return;\n }\n\n const cleanContent = contentType.split(';')[0]?.trim();\n\n if (!cleanContent) {\n return;\n }\n\n if (\n cleanContent.startsWith('application/json') ||\n cleanContent.endsWith('+json')\n ) {\n return 'json';\n }\n\n // Axios does not handle form data out of the box\n // if (cleanContent === 'multipart/form-data') {\n // return 'formData';\n // }\n\n if (\n ['application/', 'audio/', 'image/', 'video/'].some((type) =>\n cleanContent.startsWith(type),\n )\n ) {\n return 'blob';\n }\n\n if (cleanContent.startsWith('text/')) {\n return 'text';\n }\n};\n\n// TODO: parser - handle more security types\nconst securitySchemeObjectToAuthObject = ({\n securitySchemeObject,\n}: {\n securitySchemeObject: IR.SecurityObject;\n}): Auth | undefined => {\n if (securitySchemeObject.type === 'openIdConnect') {\n return {\n scheme: 'bearer',\n type: 'http',\n };\n }\n\n if (securitySchemeObject.type === 'oauth2') {\n if (\n securitySchemeObject.flows.password ||\n securitySchemeObject.flows.authorizationCode ||\n securitySchemeObject.flows.clientCredentials ||\n securitySchemeObject.flows.implicit\n ) {\n return {\n scheme: 'bearer',\n type: 'http',\n };\n }\n\n return;\n }\n\n if (securitySchemeObject.type === 'apiKey') {\n if (securitySchemeObject.in === 'header') {\n return {\n name: securitySchemeObject.name,\n type: 'apiKey',\n };\n }\n\n if (\n securitySchemeObject.in === 'query' ||\n securitySchemeObject.in == 'cookie'\n ) {\n return {\n in: securitySchemeObject.in,\n name: securitySchemeObject.name,\n type: 'apiKey',\n };\n }\n\n return;\n }\n\n if (securitySchemeObject.type === 'http') {\n const scheme = securitySchemeObject.scheme.toLowerCase();\n if (scheme === 'bearer' || scheme === 'basic') {\n return {\n scheme: scheme as 'bearer' | 'basic',\n type: 'http',\n };\n }\n\n return;\n }\n};\n\nconst operationAuth = ({\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: Plugin.Instance<Config>;\n}): Array<Auth> => {\n if (!operation.security || !plugin.auth) {\n return [];\n }\n\n const auth: Array<Auth> = [];\n\n for (const securitySchemeObject of operation.security) {\n const authObject = securitySchemeObjectToAuthObject({\n securitySchemeObject,\n });\n if (authObject) {\n auth.push(authObject);\n } else {\n console.warn(\n `❗️ SDK warning: unsupported security scheme. Please open an issue if you'd like it added https://github.com/hey-api/openapi-ts/issues\\n${JSON.stringify(securitySchemeObject, null, 2)}`,\n );\n }\n }\n\n return auth;\n};\n\nconst operationStatements = ({\n context,\n isRequiredOptions,\n operation,\n plugin,\n}: {\n context: IR.Context;\n isRequiredOptions: boolean;\n operation: IR.OperationObject;\n plugin: Plugin.Instance<Config>;\n}): Array<ts.Statement> => {\n const file = context.file({ id: sdkId })!;\n const sdkOutput = file.nameWithoutExtension();\n\n const identifierError = importIdentifierError({ context, file, operation });\n const identifierResponse = importIdentifierResponse({\n context,\n file,\n operation,\n });\n\n // TODO: transform parameters\n // const query = {\n // BarBaz: options.query.bar_baz,\n // qux_quux: options.query.qux_quux,\n // fooBar: options.query.foo_bar,\n // };\n\n // if (operation.parameters) {\n // for (const name in operation.parameters.query) {\n // const parameter = operation.parameters.query[name]\n // if (parameter.name !== fieldName({ context, name: parameter.name })) {\n // console.warn(parameter.name)\n // }\n // }\n // }\n\n const requestOptions: ObjectValue[] = [];\n\n if (operation.body) {\n switch (operation.body.type) {\n case 'form-data':\n requestOptions.push({ spread: 'formDataBodySerializer' });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'formDataBodySerializer',\n });\n break;\n case 'json':\n // jsonBodySerializer is the default, no need to specify\n break;\n case 'text':\n case 'octet-stream':\n // ensure we don't use any serializer by default\n requestOptions.push({\n key: 'bodySerializer',\n value: null,\n });\n break;\n case 'url-search-params':\n requestOptions.push({ spread: 'urlSearchParamsBodySerializer' });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'urlSearchParamsBodySerializer',\n });\n break;\n }\n }\n\n const client = getClientPlugin(context.config);\n if (client.name === '@hey-api/client-axios') {\n // try to infer `responseType` option for Axios. We don't need this in\n // Fetch API client because it automatically detects the correct response\n // during runtime.\n for (const statusCode in operation.responses) {\n // this doesn't handle default status code for now\n if (statusCodeToGroup({ statusCode }) === '2XX') {\n const response = operation.responses[statusCode];\n const responseType = getResponseType(response?.mediaType);\n // json is the default, skip it\n if (responseType && responseType !== 'json') {\n requestOptions.push({\n key: 'responseType',\n value: responseType,\n });\n }\n }\n }\n }\n\n // TODO: parser - set parseAs to skip inference if every response has the same\n // content type. currently impossible because successes do not contain\n // header information\n\n const auth = operationAuth({ context, operation, plugin });\n if (auth.length) {\n requestOptions.push({\n key: 'security',\n value: compiler.arrayLiteralExpression({ elements: auth }),\n });\n }\n\n for (const name in operation.parameters?.query) {\n const parameter = operation.parameters.query[name]!;\n if (\n (parameter.schema.type === 'array' ||\n parameter.schema.type === 'tuple') &&\n (parameter.style !== 'form' || !parameter.explode)\n ) {\n // override the default settings for `querySerializer`\n requestOptions.push({\n key: 'querySerializer',\n value: [\n {\n key: 'array',\n value: [\n {\n key: 'explode',\n value: false,\n },\n {\n key: 'style',\n value: 'form',\n },\n ],\n },\n ],\n });\n break;\n }\n }\n\n if (plugin.transformer === '@hey-api/transformers') {\n const identifierTransformer = context\n .file({ id: transformersId })!\n .identifier({\n $ref: operationTransformerIrRef({ id: operation.id, type: 'response' }),\n namespace: 'value',\n });\n\n if (identifierTransformer.name) {\n file.import({\n module: file.relativePathToFile({\n context,\n id: transformersId,\n }),\n name: identifierTransformer.name,\n });\n\n requestOptions.push({\n key: 'responseTransformer',\n value: identifierTransformer.name,\n });\n }\n }\n\n if (plugin.validator === 'zod') {\n const identifierSchema = context.file({ id: zodId })!.identifier({\n $ref: operationIrRef({\n case: 'camelCase',\n config: context.config,\n id: operation.id,\n type: 'response',\n }),\n namespace: 'value',\n });\n\n if (identifierSchema.name) {\n file.import({\n module: file.relativePathToFile({\n context,\n id: zodId,\n }),\n name: identifierSchema.name,\n });\n\n requestOptions.push({\n key: 'responseValidator',\n value: compiler.arrowFunction({\n async: true,\n parameters: [\n {\n name: 'data',\n },\n ],\n statements: [\n compiler.returnStatement({\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: identifierSchema.name,\n }),\n name: compiler.identifier({ text: 'parseAsync' }),\n }),\n parameters: [compiler.identifier({ text: 'data' })],\n }),\n }),\n }),\n ],\n }),\n });\n }\n }\n\n requestOptions.push({\n key: 'url',\n value: operation.path,\n });\n\n // options must go last to allow overriding parameters above\n requestOptions.push({ spread: 'options' });\n if (operation.body) {\n requestOptions.push({\n key: 'headers',\n value: [\n {\n key: 'Content-Type',\n // form-data does not need Content-Type header, browser will set it automatically\n value:\n operation.body.type === 'form-data'\n ? null\n : operation.body.mediaType,\n },\n {\n spread: 'options?.headers',\n },\n ],\n });\n }\n\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n const responseType = identifierResponse.name || 'unknown';\n const errorType = identifierError.name || 'unknown';\n\n const heyApiClient = plugin.client\n ? file.import({\n alias: '_heyApiClient',\n module: file.relativePathToFile({\n context,\n id: clientId,\n }),\n name: 'client',\n })\n : undefined;\n\n const optionsClient = compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: !isRequiredOptions,\n name: 'client',\n });\n\n return [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj: requestOptions,\n }),\n ],\n name: compiler.propertyAccessExpression({\n expression: heyApiClient?.name\n ? compiler.binaryExpression({\n left: optionsClient,\n operator: '??',\n right: compiler.identifier({ text: heyApiClient.name }),\n })\n : optionsClient,\n name: compiler.identifier({ text: operation.method }),\n }),\n types: isNuxtClient\n ? [\n nuxtTypeComposable,\n `${responseType} | ${nuxtTypeDefault}`,\n errorType,\n nuxtTypeDefault,\n ]\n : [responseType, errorType, 'ThrowOnError'],\n }),\n ];\n};\n\nconst generateClassSdk = ({\n context,\n plugin,\n}: {\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n}) => {\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n const file = context.file({ id: sdkId })!;\n const sdks = new Map<string, Array<ts.MethodDeclaration>>();\n\n context.subscribe('operation', ({ operation }) => {\n const isRequiredOptions =\n !plugin.client || isNuxtClient || hasOperationDataRequired(operation);\n const identifierResponse = importIdentifierResponse({\n context,\n file,\n operation,\n });\n const node = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: createOperationComment({ operation }),\n isStatic: true,\n name: serviceFunctionIdentifier({\n config: context.config,\n handleIllegal: false,\n id: operation.id,\n operation,\n }),\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: operationOptionsType({\n context,\n file,\n operation,\n throwOnError: isNuxtClient ? undefined : 'ThrowOnError',\n }),\n },\n ],\n returnType: undefined,\n statements: operationStatements({\n context,\n isRequiredOptions,\n operation,\n plugin,\n }),\n types: isNuxtClient\n ? [\n {\n // default: compiler.ots.string('$fetch'),\n extends: compiler.typeNode('Composable'),\n name: nuxtTypeComposable,\n },\n {\n default: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : compiler.typeNode('undefined'),\n extends: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : undefined,\n name: nuxtTypeDefault,\n },\n ]\n : [\n {\n default:\n ('throwOnError' in client ? client.throwOnError : false) ??\n false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n });\n\n const uniqueTags = Array.from(new Set(operation.tags));\n if (!uniqueTags.length) {\n uniqueTags.push('default');\n }\n\n for (const tag of uniqueTags) {\n const name = getServiceName(tag);\n const nodes = sdks.get(name) ?? [];\n nodes.push(node);\n sdks.set(name, nodes);\n }\n });\n\n context.subscribe('after', () => {\n for (const [name, nodes] of sdks) {\n const node = compiler.classDeclaration({\n decorator: undefined,\n members: nodes,\n name: transformServiceName({\n config: context.config,\n name,\n }),\n });\n file.add(node);\n }\n });\n};\n\nconst generateFlatSdk = ({\n context,\n plugin,\n}: {\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n}) => {\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n const file = context.file({ id: sdkId })!;\n\n context.subscribe('operation', ({ operation }) => {\n const isRequiredOptions =\n !plugin.client || isNuxtClient || hasOperationDataRequired(operation);\n const identifierResponse = importIdentifierResponse({\n context,\n file,\n operation,\n });\n const node = compiler.constVariable({\n comment: createOperationComment({ operation }),\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: operationOptionsType({\n context,\n file,\n operation,\n throwOnError: isNuxtClient ? undefined : 'ThrowOnError',\n }),\n },\n ],\n returnType: undefined,\n statements: operationStatements({\n context,\n isRequiredOptions,\n operation,\n plugin,\n }),\n types: isNuxtClient\n ? [\n {\n // default: compiler.ots.string('$fetch'),\n extends: compiler.typeNode('Composable'),\n name: nuxtTypeComposable,\n },\n {\n default: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : compiler.typeNode('undefined'),\n extends: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : undefined,\n name: nuxtTypeDefault,\n },\n ]\n : [\n {\n default:\n ('throwOnError' in client ? client.throwOnError : false) ??\n false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n }),\n name: serviceFunctionIdentifier({\n config: context.config,\n handleIllegal: true,\n id: operation.id,\n operation,\n }),\n });\n file.add(node);\n });\n};\n\nexport const handler: Plugin.Handler<Config> = ({ context, plugin }) => {\n const file = context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: sdkId,\n path: plugin.output,\n });\n\n // import required packages and core files\n const clientModule = clientModulePath({\n config: context.config,\n sourceOutput: file.nameWithoutExtension(),\n });\n const clientOptions = file.import({\n ...clientApi.Options,\n alias: 'ClientOptions',\n module: clientModule,\n });\n\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n if (isNuxtClient) {\n file.import({\n asType: true,\n module: clientModule,\n name: 'Composable',\n });\n }\n\n createTypeOptions({\n clientOptions,\n context,\n plugin,\n });\n\n if (plugin.asClass) {\n generateClassSdk({ context, plugin });\n } else {\n generateFlatSdk({ context, plugin });\n }\n};\n","import type { Plugin } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n _infer: (config, context) => {\n if (config.client) {\n if (typeof config.client === 'boolean') {\n config.client = context.pluginByTag(\n 'client',\n '🚫 client needs to be set to generate SDKs - which HTTP client do you want to use?',\n ) as unknown as typeof config.client;\n }\n\n context.ensureDependency(config.client);\n }\n\n if (config.transformer) {\n if (typeof config.transformer === 'boolean') {\n config.transformer = context.pluginByTag(\n 'transformer',\n ) as unknown as typeof config.transformer;\n }\n\n context.ensureDependency(config.transformer);\n }\n\n if (config.validator) {\n if (typeof config.validator === 'boolean') {\n config.validator = context.pluginByTag(\n 'validator',\n ) as unknown as typeof config.validator;\n }\n\n context.ensureDependency(config.validator);\n }\n },\n asClass: false,\n auth: true,\n client: true,\n exportFromIndex: true,\n name: '@hey-api/sdk',\n operationId: true,\n output: 'sdk',\n response: 'body',\n serviceNameBuilder: '{{name}}Service',\n};\n\n/**\n * Type helper for `@hey-api/sdk` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type ts from 'typescript';\n\nimport { type Comments, compiler } from '../../../compiler';\nimport { TypeScriptFile } from '../../../generate/files';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport type {\n Client,\n Method,\n Model,\n OperationParameter,\n} from '../../../types/client';\nimport { getConfig, isLegacyClient } from '../../../utils/config';\nimport { enumEntry, enumUnionType } from '../../../utils/enum';\nimport { escapeComment } from '../../../utils/escape';\nimport { sortByName, sorterByName } from '../../../utils/sort';\nimport {\n setUniqueTypeName,\n type SetUniqueTypeNameResult,\n toType,\n} from '../../../utils/type';\nimport type { Plugin } from '../../types';\nimport {\n operationDataTypeName,\n operationErrorTypeName,\n operationResponseTypeName,\n} from '../sdk/plugin-legacy';\nimport type { Config } from './types';\n\nexport interface TypesProps {\n client: Client;\n model: Model;\n onNode: (node: ts.Node) => void;\n onRemoveNode?: VoidFunction;\n}\n\nconst treeName = '$OpenApiTs';\n\nexport const emptyModel: Model = {\n $refs: [],\n base: '',\n description: null,\n enum: [],\n enums: [],\n export: 'interface',\n imports: [],\n in: '',\n isDefinition: false,\n isNullable: false,\n isReadOnly: false,\n isRequired: false,\n link: null,\n name: '',\n properties: [],\n template: null,\n type: '',\n};\n\nconst generateEnum = ({\n comments,\n leadingComment,\n meta,\n obj,\n onNode,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.enumDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'>) => {\n // generate types only for top-level models\n if (!meta) {\n return;\n }\n\n const { created, name } = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (created) {\n const node = compiler.enumDeclaration({\n comments,\n leadingComment,\n name,\n obj,\n });\n onNode(node);\n }\n};\n\nexport const generateType = ({\n comment,\n meta,\n onCreated,\n onNode,\n type,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.typeAliasDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'> & {\n onCreated?: (name: string) => void;\n }): SetUniqueTypeNameResult => {\n // generate types only for top-level models\n if (!meta) {\n return {\n created: false,\n name: '',\n };\n }\n\n const result = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n const { created, name } = result;\n if (created) {\n const node = compiler.typeAliasDeclaration({\n comment,\n exportType: true,\n name,\n type,\n });\n onNode(node);\n\n onCreated?.(name);\n }\n return result;\n};\n\nconst processComposition = (props: TypesProps) => {\n const config = getConfig();\n\n const enumDeclarations = [] as ts.EnumDeclaration[];\n\n processType(props);\n\n props.model.enums.forEach((enumerator) => {\n if (\n config.plugins['@hey-api/typescript']?.enums !== 'typescript+namespace'\n ) {\n return processEnum({\n ...props,\n model: enumerator,\n });\n }\n\n return processScopedEnum({\n ...props,\n model: enumerator,\n onNode: (node) => {\n enumDeclarations.push(node as ts.EnumDeclaration);\n },\n });\n });\n\n if (enumDeclarations.length) {\n props.onNode(\n compiler.namespaceDeclaration({\n name: props.model.name,\n statements: enumDeclarations,\n }),\n );\n }\n};\n\nconst processEnum = ({ client, model, onNode }: TypesProps) => {\n const config = getConfig();\n\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n\n const comment = [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ];\n\n if (\n config.plugins['@hey-api/typescript']?.enums === 'typescript' ||\n config.plugins['@hey-api/typescript']?.enums === 'typescript+namespace'\n ) {\n generateEnum({\n client,\n comments,\n leadingComment: comment,\n meta: model.meta,\n obj: properties,\n onNode,\n });\n return;\n }\n\n generateType({\n client,\n comment,\n meta: model.meta,\n onCreated: (name) => {\n // create a separate JavaScript object export\n if (config.plugins['@hey-api/typescript']?.enums === 'javascript') {\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: Object.entries(properties).map(([key, value]) => ({\n comments: comments[key],\n key,\n value,\n })),\n unescape: true,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment,\n exportConst: true,\n expression,\n name,\n });\n onNode(node);\n }\n },\n onNode,\n type: enumUnionType(model.enum),\n });\n};\n\nconst processScopedEnum = ({ model, onNode }: TypesProps) => {\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n onNode(\n compiler.enumDeclaration({\n comments,\n leadingComment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n name: model.meta?.name || model.name,\n obj: properties,\n }),\n );\n};\n\nconst processType = ({ client, model, onNode }: TypesProps) => {\n generateType({\n client,\n comment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n meta: model.meta,\n onNode,\n type: toType(model),\n });\n};\n\nconst processModel = (props: TypesProps) => {\n switch (props.model.export) {\n case 'all-of':\n case 'any-of':\n case 'one-of':\n case 'interface':\n return processComposition(props);\n case 'enum':\n return processEnum(props);\n default:\n return processType(props);\n }\n};\n\ninterface MethodMap {\n $ref?: string;\n req?: OperationParameter[];\n res?: Record<number | string, Model>;\n}\n\ntype PathMap = {\n [method in Method]?: MethodMap;\n};\n\ntype PathsMap = Record<string, PathMap>;\n\nconst processServiceTypes = ({\n client,\n onNode,\n}: Pick<TypesProps, 'client' | 'onNode'>) => {\n const pathsMap: PathsMap = {};\n\n const config = getConfig();\n\n if (\n !config.plugins['@hey-api/sdk'] &&\n !config.plugins['@hey-api/typescript']?.tree\n ) {\n return;\n }\n\n const isLegacy = isLegacyClient(config);\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n if (!operation.parameters.length && !operation.responses.length) {\n continue;\n }\n\n if (!pathsMap[operation.path]) {\n pathsMap[operation.path] = {};\n }\n const pathMap = pathsMap[operation.path]!;\n\n if (!pathMap[operation.method]) {\n pathMap[operation.method] = {};\n }\n const methodMap = pathMap[operation.method]!;\n methodMap.$ref = operation.name;\n\n if (operation.responses.length > 0) {\n if (!methodMap.res) {\n methodMap.res = {};\n }\n\n if (Array.isArray(methodMap.res)) {\n continue;\n }\n\n operation.responses.forEach((response) => {\n methodMap.res![response.code] = response;\n });\n }\n\n if (operation.parameters.length > 0) {\n let bodyParameters: OperationParameter = {\n mediaType: null,\n ...emptyModel,\n in: 'body',\n name: 'body',\n prop: 'body',\n };\n let bodyParameter = operation.parameters.filter(\n (parameter) => parameter.in === 'body',\n );\n if (!bodyParameter.length) {\n bodyParameter = operation.parameters.filter(\n (parameter) => parameter.in === 'formData',\n );\n }\n\n if (bodyParameter.length === 1) {\n bodyParameters = {\n ...emptyModel,\n ...bodyParameter[0]!,\n in: 'body',\n isRequired: bodyParameter[0]!.isRequired,\n name: 'body',\n prop: 'body',\n };\n // assume we have multiple formData parameters from Swagger 2.0\n } else if (bodyParameter.length > 1) {\n bodyParameters = {\n ...emptyModel,\n in: 'body',\n isRequired: bodyParameter.some((parameter) => parameter.isRequired),\n mediaType: 'multipart/form-data',\n name: 'body',\n prop: 'body',\n properties: bodyParameter,\n };\n }\n\n const headerParameters: OperationParameter = {\n ...emptyModel,\n in: 'header',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter(\n (parameter) => parameter.in === 'header',\n ),\n ),\n mediaType: null,\n name: isLegacy ? 'header' : 'headers',\n prop: isLegacy ? 'header' : 'headers',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'header')\n .sort(sorterByName),\n };\n const pathParameters: OperationParameter = {\n ...emptyModel,\n in: 'path',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter((parameter) => parameter.in === 'path'),\n ),\n mediaType: null,\n name: 'path',\n prop: 'path',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'path')\n .sort(sorterByName),\n };\n const queryParameters: OperationParameter = {\n ...emptyModel,\n in: 'query',\n isRequired: isOperationParameterRequired(\n operation.parameters.filter(\n (parameter) => parameter.in === 'query',\n ),\n ),\n mediaType: null,\n name: 'query',\n prop: 'query',\n properties: operation.parameters\n .filter((parameter) => parameter.in === 'query')\n .sort(sorterByName),\n };\n const operationProperties = !isLegacy\n ? [\n bodyParameters,\n headerParameters,\n pathParameters,\n queryParameters,\n ].filter(\n (param) =>\n param.properties.length ||\n param.$refs.length ||\n param.mediaType,\n )\n : sortByName([...operation.parameters]);\n\n methodMap.req = operationProperties;\n\n // create type export for operation data\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onNode,\n type: toType({\n ...emptyModel,\n isRequired: true,\n properties: operationProperties,\n }),\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n if (successResponses.length > 0) {\n // create type export for operation response\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onNode,\n type: toType({\n ...emptyModel,\n export: 'any-of',\n isRequired: true,\n properties: successResponses,\n }),\n });\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n\n if (!isLegacy) {\n // create type export for operation error\n generateType({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onNode,\n type: toType(\n errorResponses.length\n ? {\n ...emptyModel,\n export: 'one-of',\n isRequired: true,\n properties: errorResponses,\n }\n : {\n ...emptyModel,\n base: 'unknown',\n isRequired: true,\n type: 'unknown',\n },\n ),\n });\n }\n }\n }\n }\n\n const properties = Object.entries(pathsMap).map(([path, pathMap]) => {\n const pathParameters = Object.entries(pathMap)\n .map(([_method, methodMap]) => {\n const method = _method as Method;\n\n let methodParameters: Model[] = [];\n\n if (methodMap.req) {\n const operationName = methodMap.$ref!;\n const { name: base } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operationName,\n name: operationName,\n },\n nameTransformer: operationDataTypeName,\n });\n const reqKey: Model = {\n ...emptyModel,\n base,\n export: 'reference',\n isRequired: true,\n name: 'req',\n properties: [],\n type: base,\n };\n methodParameters = [...methodParameters, reqKey];\n }\n\n if (methodMap.res) {\n const reqResParameters = Object.entries(methodMap.res).map(\n ([code, base]) => {\n // TODO: move query params into separate query key\n const value: Model = {\n ...emptyModel,\n ...base,\n isRequired: true,\n name: String(code),\n };\n return value;\n },\n );\n\n const resKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: 'res',\n properties: reqResParameters,\n };\n methodParameters = [...methodParameters, resKey];\n }\n\n const methodKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: method.toLocaleLowerCase(),\n properties: methodParameters,\n };\n return methodKey;\n })\n .filter(Boolean);\n const pathKey: Model = {\n ...emptyModel,\n isRequired: true,\n name: `'${path}'`,\n properties: pathParameters as Model[],\n };\n return pathKey;\n });\n\n if (config.plugins['@hey-api/typescript']?.tree) {\n generateType({\n client,\n meta: {\n $ref: '@hey-api/openapi-ts',\n name: treeName,\n },\n onNode,\n type: toType({\n ...emptyModel,\n properties,\n }),\n });\n }\n};\n\nexport const handlerLegacy: Plugin.LegacyHandler<Config> = ({\n client,\n files,\n}) => {\n const config = getConfig();\n\n files.types = new TypeScriptFile({\n dir: config.output.path,\n id: 'types',\n name: 'types.ts',\n });\n\n const onNode: TypesProps['onNode'] = (node) => {\n files.types?.add(node);\n };\n\n for (const model of client.models) {\n processModel({ client, model, onNode });\n }\n\n processServiceTypes({ client, onNode });\n};\n","import type ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport { getOperationKey } from '../../../openApi/common/parser/operation';\nimport type { ModelMeta, OperationResponse } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport { isModelDate, unsetUniqueTypeName } from '../../../utils/type';\nimport type { Plugin } from '../../types';\nimport {\n modelResponseTransformerTypeName,\n operationResponseTransformerTypeName,\n operationResponseTypeName,\n} from '../sdk/plugin-legacy';\nimport { generateType, type TypesProps } from '../typescript/plugin-legacy';\nimport type { Config } from './types';\n\ninterface ModelProps extends TypesProps {\n meta?: ModelMeta;\n path: Array<string>;\n}\n\nconst dataVariableName = 'data';\n\nconst isVoidResponse = (response: OperationResponse) =>\n response.base === 'unknown' &&\n response.export === 'generic' &&\n response.type === 'unknown';\n\nconst getRefModels = ({\n client,\n model,\n}: Pick<TypesProps, 'client' | 'model'>) => {\n const refModels = model.$refs.map((ref) => {\n const refModel = client.models.find((model) => model.meta?.$ref === ref);\n if (!refModel) {\n throw new Error(\n `Ref ${ref} could not be found. Transformers cannot be generated without having access to all refs.`,\n );\n }\n return refModel;\n });\n return refModels;\n};\n\nconst ensureModelResponseTransformerExists = (\n props: Omit<ModelProps, 'path'>,\n) => {\n const modelName = props.model.meta!.name;\n\n const { name } = generateType({\n ...props,\n meta: {\n $ref: `transformers/${modelName}`,\n name: modelName,\n },\n nameTransformer: modelResponseTransformerTypeName,\n onCreated: (name) => {\n const statements = processModel({\n ...props,\n meta: {\n $ref: `transformers/${modelName}`,\n name,\n },\n path: [dataVariableName],\n });\n generateResponseTransformer({\n ...props,\n async: false,\n name,\n statements,\n });\n },\n type: `(${dataVariableName}: any) => ${modelName}`,\n });\n\n const result = {\n created: Boolean(props.client.types[name]),\n name,\n };\n return result;\n};\n\nconst processArray = (props: ModelProps) => {\n const { model } = props;\n const refModels = getRefModels(props);\n\n if (refModels.length === 1) {\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({ ...props, model: refModels[0]! });\n\n if (!created) {\n return [];\n }\n\n return [\n compiler.transformArrayMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n }),\n ];\n }\n\n if (\n isModelDate(model) ||\n (model.link &&\n !Array.isArray(model.link) &&\n model.link.export === 'any-of' &&\n model.link.properties.find((property) => isModelDate(property)))\n ) {\n return [\n compiler.transformArrayMap({\n path: props.path,\n transformExpression: compiler.conditionalExpression({\n condition: compiler.identifier({ text: 'item' }),\n whenFalse: compiler.identifier({ text: 'item' }),\n whenTrue: compiler.transformNewDate({\n parameterName: 'item',\n }),\n }),\n }),\n ];\n }\n\n // Not transform for this type\n return [];\n};\n\nconst processProperty = (props: ModelProps) => {\n const { model } = props;\n const path = [...props.path, model.name];\n\n if (\n model.type === 'string' &&\n model.export !== 'array' &&\n isModelDate(model)\n ) {\n return [compiler.transformDateMutation({ path })];\n }\n\n // otherwise we recurse in case it's an object/array, and if it's not that will just bail with []\n return processModel({\n ...props,\n model,\n path,\n });\n};\n\nconst processModel = (props: ModelProps): ts.Statement[] => {\n const { model } = props;\n\n switch (model.export) {\n case 'array':\n return processArray(props);\n case 'interface':\n return model.properties.flatMap((property) =>\n processProperty({ ...props, model: property }),\n );\n case 'reference': {\n if (model.$refs.length !== 1) {\n return [];\n }\n const refModels = getRefModels(props);\n\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({\n ...props,\n model: refModels[0]!,\n });\n\n if (!created) {\n return [];\n }\n\n return model.in === 'response'\n ? [\n compiler.expressionToStatement({\n expression: compiler.callExpression({\n functionName: nameModelResponseTransformer,\n parameters: [dataVariableName],\n }),\n }),\n ]\n : compiler.transformFunctionMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n });\n }\n // unsupported\n default:\n return [];\n }\n};\n\nconst generateResponseTransformer = ({\n async,\n client,\n name,\n onNode,\n onRemoveNode,\n statements,\n}: Pick<TypesProps, 'client' | 'onNode' | 'onRemoveNode'> & {\n async: boolean;\n name: string;\n statements: Array<ts.Statement>;\n}) => {\n const result = {\n created: false,\n name,\n };\n\n if (!statements.length) {\n // clean up created type for response transformer if it turns out\n // the transformer was never generated\n unsetUniqueTypeName({\n client,\n name,\n });\n onRemoveNode?.();\n return result;\n }\n\n const expression = compiler.arrowFunction({\n async,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n },\n ],\n statements: [\n ...statements,\n compiler.returnVariable({\n expression: dataVariableName,\n }),\n ],\n });\n const statement = compiler.constVariable({\n exportConst: true,\n expression,\n name,\n typeName: name,\n });\n onNode(statement);\n\n return {\n created: true,\n name,\n };\n};\n\n// handles only response transformers for now\nexport const handlerLegacy: Plugin.LegacyHandler<Config> = ({\n client,\n files,\n}) => {\n const config = getConfig();\n\n const onNode: TypesProps['onNode'] = (node) => {\n files.types?.add(node);\n };\n const onRemoveNode: TypesProps['onRemoveNode'] = () => {\n files.types?.removeNode();\n };\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n if (!successResponses.length) {\n continue;\n }\n\n const nonVoidResponses = successResponses.filter(\n (response) => !isVoidResponse(response),\n );\n\n if (!nonVoidResponses.length) {\n continue;\n }\n\n if (nonVoidResponses.length > 1) {\n if (config.logs.level === 'debug') {\n console.warn(\n `❗️ Transformers warning: route ${getOperationKey(operation)} has ${nonVoidResponses.length} non-void success responses. This is currently not handled and we will not generate a response transformer. Please open an issue if you'd like this feature https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n continue;\n }\n\n const name = operationResponseTypeName(operation.name);\n generateType({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n nameTransformer: operationResponseTransformerTypeName,\n onCreated: (nameCreated) => {\n const statements =\n successResponses.length > 1\n ? successResponses.flatMap((response) => {\n const statements = processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: response,\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n\n // assume unprocessed responses are void\n if (!statements.length) {\n return [];\n }\n\n return [\n compiler.ifStatement({\n expression: compiler.safeAccessExpression(['data']),\n thenStatement: compiler.block({ statements }),\n }),\n ];\n })\n : processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: successResponses[0]!,\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n generateResponseTransformer({\n async: true,\n client,\n name: nameCreated,\n onNode,\n onRemoveNode,\n statements,\n });\n },\n onNode,\n type: `(${dataVariableName}: any) => Promise<${name}>`,\n });\n }\n }\n};\n","import type { Plugin } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n _tags: ['transformer'],\n bigInt: true,\n dates: true,\n exportFromIndex: false,\n name: '@hey-api/transformers',\n output: 'transformers',\n};\n\n/**\n * Type helper for `@hey-api/transformers`, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import ts from 'typescript';\n\nimport type { Property } from '../../../compiler';\nimport { compiler } from '../../../compiler';\nimport { operationResponsesMap } from '../../../ir/operation';\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { escapeComment } from '../../../utils/escape';\nimport { irRef, isRefOpenApiComponent } from '../../../utils/ref';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { fieldName } from '../../shared/utils/case';\nimport { operationIrRef } from '../../shared/utils/ref';\nimport type { Plugin } from '../../types';\nimport { createClientOptions } from './clientOptions';\nimport { typesId } from './ref';\nimport type { Config } from './types';\n\ninterface SchemaWithType<T extends Required<IR.SchemaObject>['type']>\n extends Omit<IR.SchemaObject, 'type'> {\n type: Extract<Required<IR.SchemaObject>['type'], T>;\n}\n\ninterface State {\n /**\n * If set, we keep the specified properties (read-only or write-only) and\n * strip the other type.\n */\n accessScope?: 'read' | 'write';\n}\n\nconst parseSchemaJsDoc = ({ schema }: { schema: IR.SchemaObject }) => {\n const comments = [\n schema.description && escapeComment(schema.description),\n schema.deprecated && '@deprecated',\n ].filter(Boolean);\n\n if (!comments.length) {\n return;\n }\n\n return comments;\n};\n\nconst scopeToRef = ({\n $ref,\n accessScope,\n plugin,\n}: {\n $ref: string;\n accessScope?: 'both' | 'read' | 'write';\n plugin: Plugin.Instance<Config>;\n}) => {\n if (!accessScope || accessScope === 'both') {\n return $ref;\n }\n\n const refParts = $ref.split('/');\n const name = refParts.pop()!;\n const nameBuilder =\n accessScope === 'read'\n ? plugin.readableNameBuilder\n : plugin.writableNameBuilder;\n const processedName = processNameBuilder({ name, nameBuilder });\n refParts.push(processedName);\n return refParts.join('/');\n};\n\nconst processNameBuilder = ({\n name,\n nameBuilder,\n}: {\n name: string;\n nameBuilder: string | undefined;\n}) => {\n if (!nameBuilder) {\n return name;\n }\n\n return nameBuilder.replace('{{name}}', name);\n};\n\nconst shouldSkipSchema = ({\n schema,\n state,\n}: {\n schema: IR.SchemaObject;\n state: State | undefined;\n}) =>\n Boolean(\n state?.accessScope &&\n ((schema.accessScope && state.accessScope !== schema.accessScope) ||\n (schema.$ref &&\n schema.accessScopes &&\n !schema.accessScopes.includes(state.accessScope) &&\n !schema.accessScopes.includes('both'))),\n );\n\nconst addJavaScriptEnum = ({\n $ref,\n context,\n plugin,\n schema,\n}: {\n $ref: string;\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'enum'>;\n}) => {\n const file = context.file({ id: typesId })!;\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (!identifier.created) {\n return;\n }\n\n const enumObject = schemaToEnumObject({ plugin, schema });\n\n // JavaScript enums might want to ignore null values\n if (\n plugin.enumsConstantsIgnoreNull &&\n enumObject.typeofItems.includes('object')\n ) {\n enumObject.obj = enumObject.obj.filter((item) => item.value !== null);\n }\n\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: enumObject.obj,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment: parseSchemaJsDoc({ schema }),\n exportConst: true,\n expression,\n name: identifier.name || '',\n });\n return node;\n};\n\nconst schemaToEnumObject = ({\n plugin,\n schema,\n}: {\n plugin: Plugin.Instance<Config>;\n schema: IR.SchemaObject;\n}) => {\n const typeofItems: Array<\n | 'bigint'\n | 'boolean'\n | 'function'\n | 'number'\n | 'object'\n | 'string'\n | 'symbol'\n | 'undefined'\n > = [];\n\n const obj = (schema.items ?? []).map((item, index) => {\n const typeOfItemConst = typeof item.const;\n\n if (!typeofItems.includes(typeOfItemConst)) {\n // track types of enum values because some modes support\n // only enums with string and number types\n typeofItems.push(typeOfItemConst);\n }\n\n let key: string | undefined;\n if (item.title) {\n key = item.title;\n } else if (typeOfItemConst === 'number' || typeOfItemConst === 'string') {\n key = `${item.const}`;\n } else if (typeOfItemConst === 'boolean') {\n key = item.const ? 'true' : 'false';\n } else if (item.const === null) {\n key = 'null';\n } else {\n key = `${index}`;\n }\n\n if (key) {\n key = stringCase({\n case: plugin.enumsCase,\n stripLeadingSeparators: false,\n value: key,\n });\n\n numberRegExp.lastIndex = 0;\n // TypeScript enum keys cannot be numbers\n if (\n numberRegExp.test(key) &&\n (plugin.enums === 'typescript' ||\n plugin.enums === 'typescript+namespace')\n ) {\n key = `_${key}`;\n }\n }\n\n return {\n comments: parseSchemaJsDoc({ schema: item }),\n key,\n value: item.const,\n };\n });\n\n return {\n obj,\n typeofItems,\n };\n};\n\nconst addTypeEnum = ({\n $ref,\n context,\n plugin,\n schema,\n state,\n}: {\n $ref: string;\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'enum'>;\n state: State | undefined;\n}): ts.TypeAliasDeclaration | undefined => {\n const file = context.file({ id: typesId })!;\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'type',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (\n !identifier.created &&\n !isRefOpenApiComponent($ref) &&\n plugin.enums !== 'typescript+namespace'\n ) {\n return;\n }\n\n const type = schemaToType({\n context,\n plugin,\n schema: {\n ...schema,\n type: undefined,\n },\n state,\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n comment: parseSchemaJsDoc({ schema }),\n exportType: true,\n name: identifier.name || '',\n type,\n });\n return node;\n }\n};\n\nconst addTypeScriptEnum = ({\n $ref,\n context,\n plugin,\n schema,\n state,\n}: {\n $ref: string;\n context: IR.Context;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'enum'>;\n state: State | undefined;\n}) => {\n const file = context.file({ id: typesId })!;\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (!identifier.created && plugin.enums !== 'typescript+namespace') {\n return;\n }\n\n const enumObject = schemaToEnumObject({ plugin, schema });\n\n // TypeScript enums support only string and number values so we need to fallback to types\n if (\n enumObject.typeofItems.filter(\n (type) => type !== 'number' && type !== 'string',\n ).length\n ) {\n const node = addTypeEnum({\n $ref,\n context,\n plugin,\n schema,\n state,\n });\n return node;\n }\n\n const node = compiler.enumDeclaration({\n leadingComment: parseSchemaJsDoc({ schema }),\n name: identifier.name || '',\n obj: enumObject.obj,\n });\n return node;\n};\n\nconst arrayTypeToIdentifier = ({\n context,\n namespace,\n plugin,\n schema,\n state,\n}: {\n context: IR.Context;\n namespace: Array<ts.Statement>;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'array'>;\n state: State | undefined;\n}): ts.TypeNode => {\n if (!schema.items) {\n return compiler.typeArrayNode(\n compiler.keywordTypeNode({\n keyword: 'unknown',\n }),\n );\n }\n\n schema = deduplicateSchema({ schema });\n\n const itemTypes: Array<ts.TypeNode> = [];\n\n // at least one item is guaranteed (or at least was before read/write only)\n for (const item of schema.items!) {\n const type = schemaToType({\n context,\n namespace,\n plugin,\n schema: item,\n state,\n });\n\n if (type) {\n itemTypes.push(type);\n }\n }\n\n if (itemTypes.length === 1) {\n return compiler.typeArrayNode(itemTypes[0]!);\n }\n\n if (schema.logicalOperator === 'and') {\n return compiler.typeArrayNode(\n compiler.typeIntersectionNode({ types: itemTypes }),\n );\n }\n\n return compiler.typeArrayNode(compiler.typeUnionNode({ types: itemTypes }));\n};\n\nconst booleanTypeToIdentifier = ({\n schema,\n}: {\n context: IR.Context;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'boolean'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.ots.boolean(schema.const as boolean),\n });\n }\n\n return compiler.keywordTypeNode({\n keyword: 'boolean',\n });\n};\n\nconst enumTypeToIdentifier = ({\n $ref,\n context,\n namespace,\n plugin,\n schema,\n state,\n}: {\n $ref?: string;\n context: IR.Context;\n namespace: Array<ts.Statement>;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'enum'>;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n const file = context.file({ id: typesId })!;\n const isRefComponent = $ref ? isRefOpenApiComponent($ref) : false;\n const shouldExportEnum = isRefComponent || Boolean(plugin.exportInlineEnums);\n\n if ($ref && shouldExportEnum) {\n // when enums are disabled (default), emit only reusable components\n // as types, otherwise the output would be broken if we skipped all enums\n if (!plugin.enums) {\n const typeNode = addTypeEnum({\n $ref,\n context,\n plugin,\n schema,\n state,\n });\n if (typeNode) {\n file.add(typeNode);\n }\n }\n\n if (plugin.enums === 'javascript') {\n const typeNode = addTypeEnum({\n $ref,\n context,\n plugin,\n schema,\n state,\n });\n if (typeNode) {\n file.add(typeNode);\n }\n\n const objectNode = addJavaScriptEnum({\n $ref,\n context,\n plugin,\n schema,\n });\n if (objectNode) {\n file.add(objectNode);\n }\n }\n\n if (plugin.enums === 'typescript') {\n const enumNode = addTypeScriptEnum({\n $ref,\n context,\n plugin,\n schema,\n state,\n });\n if (enumNode) {\n file.add(enumNode);\n }\n }\n\n if (plugin.enums === 'typescript+namespace') {\n const enumNode = addTypeScriptEnum({\n $ref,\n context,\n plugin,\n schema,\n state,\n });\n if (enumNode) {\n if (isRefComponent) {\n file.add(enumNode);\n } else {\n // emit enum inside TypeScript namespace\n namespace.push(enumNode);\n }\n }\n }\n }\n\n const type = schemaToType({\n context,\n plugin,\n schema: {\n ...schema,\n type: undefined,\n },\n state,\n });\n return type;\n};\n\nconst numberTypeToIdentifier = ({\n context,\n schema,\n}: {\n context: IR.Context;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'integer' | 'number'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.ots.number(schema.const as number),\n });\n }\n\n if (schema.type === 'integer' && schema.format === 'int64') {\n // TODO: parser - add ability to skip type transformers\n if (context.config.plugins['@hey-api/transformers']?.bigInt) {\n return compiler.typeReferenceNode({ typeName: 'bigint' });\n }\n }\n\n return compiler.keywordTypeNode({\n keyword: 'number',\n });\n};\n\nconst objectTypeToIdentifier = ({\n context,\n namespace,\n plugin,\n schema,\n state,\n}: {\n context: IR.Context;\n namespace: Array<ts.Statement>;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'object'>;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n // TODO: parser - handle constants\n let indexProperty: Property | undefined;\n const schemaProperties: Array<Property> = [];\n let indexPropertyItems: Array<IR.SchemaObject> = [];\n const required = schema.required ?? [];\n let hasOptionalProperties = false;\n let hasSkippedProperties = false;\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n\n const skip = shouldSkipSchema({\n schema: property,\n state,\n });\n\n if (skip) {\n hasSkippedProperties = true;\n continue;\n }\n\n const isRequired = required.includes(name);\n schemaProperties.push({\n comment: parseSchemaJsDoc({ schema: property }),\n isReadOnly: property.accessScope === 'read',\n isRequired,\n name: fieldName({ context, name }),\n type: schemaToType({\n $ref: `${irRef}${name}`,\n context,\n namespace,\n plugin,\n schema: property,\n state,\n }),\n });\n indexPropertyItems.push(property);\n\n if (!isRequired) {\n hasOptionalProperties = true;\n }\n }\n\n if (\n schema.additionalProperties &&\n (schema.additionalProperties.type !== 'never' || !indexPropertyItems.length)\n ) {\n if (schema.additionalProperties.type === 'never') {\n indexPropertyItems = [schema.additionalProperties];\n } else {\n indexPropertyItems.unshift(schema.additionalProperties);\n }\n\n if (hasOptionalProperties) {\n indexPropertyItems.push({\n type: 'undefined',\n });\n }\n\n indexProperty = {\n isRequired: true,\n name: 'key',\n type: schemaToType({\n context,\n namespace,\n plugin,\n schema:\n indexPropertyItems.length === 1\n ? indexPropertyItems[0]!\n : {\n items: indexPropertyItems,\n logicalOperator: 'or',\n },\n state,\n }),\n };\n }\n\n if (hasSkippedProperties && !schemaProperties.length && !indexProperty) {\n return;\n }\n\n return compiler.typeInterfaceNode({\n indexProperty,\n properties: schemaProperties,\n useLegacyResolution: false,\n });\n};\n\nconst stringTypeToIdentifier = ({\n context,\n schema,\n}: {\n context: IR.Context;\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'string'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: schema.const as string }),\n });\n }\n\n if (schema.format) {\n if (schema.format === 'binary') {\n return compiler.typeUnionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: 'Blob',\n }),\n compiler.typeReferenceNode({\n typeName: 'File',\n }),\n ],\n });\n }\n\n if (schema.format === 'date-time' || schema.format === 'date') {\n // TODO: parser - add ability to skip type transformers\n if (context.config.plugins['@hey-api/transformers']?.dates) {\n return compiler.typeReferenceNode({ typeName: 'Date' });\n }\n }\n }\n\n return compiler.keywordTypeNode({\n keyword: 'string',\n });\n};\n\nconst tupleTypeToIdentifier = ({\n context,\n namespace,\n plugin,\n schema,\n state,\n}: {\n context: IR.Context;\n namespace: Array<ts.Statement>;\n plugin: Plugin.Instance<Config>;\n schema: SchemaWithType<'tuple'>;\n state: State | undefined;\n}): ts.TypeNode => {\n let itemTypes: Array<ts.Expression | ts.TypeNode> = [];\n\n if (schema.const && Array.isArray(schema.const)) {\n itemTypes = schema.const.map((value) => {\n const expression = compiler.valueToExpression({ value });\n return expression ?? compiler.identifier({ text: 'unknown' });\n });\n } else if (schema.items) {\n for (const item of schema.items) {\n const type = schemaToType({\n context,\n namespace,\n plugin,\n schema: item,\n state,\n });\n\n if (type) {\n itemTypes.push(type);\n }\n }\n }\n\n return compiler.typeTupleNode({\n types: itemTypes,\n });\n};\n\nconst schemaTypeToIdentifier = ({\n $ref,\n context,\n namespace,\n plugin,\n schema,\n state,\n}: {\n $ref?: string;\n context: IR.Context;\n namespace: Array<ts.Statement>;\n plugin: Plugin.Instance<Config>;\n schema: IR.SchemaObject;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n switch (schema.type as Required<IR.SchemaObject>['type']) {\n case 'array':\n return arrayTypeToIdentifier({\n context,\n namespace,\n plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n });\n case 'boolean':\n return booleanTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'boolean'>,\n });\n case 'enum':\n return enumTypeToIdentifier({\n $ref,\n context,\n namespace,\n plugin,\n schema: schema as SchemaWithType<'enum'>,\n state,\n });\n case 'integer':\n case 'number':\n return numberTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'integer' | 'number'>,\n });\n case 'never':\n return compiler.keywordTypeNode({\n keyword: 'never',\n });\n case 'null':\n return compiler.literalTypeNode({\n literal: compiler.null(),\n });\n case 'object':\n return objectTypeToIdentifier({\n context,\n namespace,\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n return stringTypeToIdentifier({\n context,\n namespace,\n schema: schema as SchemaWithType<'string'>,\n });\n case 'tuple':\n return tupleTypeToIdentifier({\n context,\n namespace,\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n });\n case 'undefined':\n return compiler.keywordTypeNode({\n keyword: 'undefined',\n });\n case 'unknown':\n return compiler.keywordTypeNode({\n keyword: 'unknown',\n });\n case 'void':\n return compiler.keywordTypeNode({\n keyword: 'void',\n });\n }\n};\n\nconst irParametersToIrSchema = ({\n parameters,\n}: {\n parameters: Record<string, IR.ParameterObject>;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {\n type: 'object',\n };\n\n if (parameters) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const name in parameters) {\n const parameter = parameters[name]!;\n\n properties[name] = deduplicateSchema({\n schema: parameter.schema,\n });\n\n if (parameter.required) {\n required.push(name);\n }\n }\n\n irSchema.properties = properties;\n\n if (required.length) {\n irSchema.required = required;\n }\n }\n\n return irSchema;\n};\n\nconst operationToDataType = ({\n context,\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: Plugin.Instance<Config>;\n}) => {\n const file = context.file({ id: typesId })!;\n const data: IR.SchemaObject = {\n type: 'object',\n };\n const dataRequired: Array<string> = [];\n\n if (!data.properties) {\n data.properties = {};\n }\n\n if (operation.body) {\n data.properties.body = operation.body.schema;\n\n if (operation.body.required) {\n dataRequired.push('body');\n }\n } else {\n data.properties.body = {\n type: 'never',\n };\n }\n\n // TODO: parser - handle cookie parameters\n\n // do not set headers to never so we can always pass arbitrary values\n if (operation.parameters?.header) {\n data.properties.headers = irParametersToIrSchema({\n parameters: operation.parameters.header,\n });\n\n if (data.properties.headers.required) {\n dataRequired.push('headers');\n }\n }\n\n if (operation.parameters?.path) {\n data.properties.path = irParametersToIrSchema({\n parameters: operation.parameters.path,\n });\n\n if (data.properties.path.required) {\n dataRequired.push('path');\n }\n } else {\n data.properties.path = {\n type: 'never',\n };\n }\n\n if (operation.parameters?.query) {\n data.properties.query = irParametersToIrSchema({\n parameters: operation.parameters.query,\n });\n\n if (data.properties.query.required) {\n dataRequired.push('query');\n }\n } else {\n data.properties.query = {\n type: 'never',\n };\n }\n\n data.properties.url = {\n const: operation.path,\n type: 'string',\n };\n dataRequired.push('url');\n\n data.required = dataRequired;\n\n const identifier = file.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'data',\n }),\n create: true,\n namespace: 'type',\n });\n const type = schemaToType({\n context,\n plugin,\n schema: data,\n state:\n plugin.readOnlyWriteOnlyBehavior === 'off'\n ? undefined\n : {\n accessScope: 'write',\n },\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name || '',\n type,\n });\n file.add(node);\n }\n};\n\nconst operationToType = ({\n context,\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: Plugin.Instance<Config>;\n}) => {\n operationToDataType({\n context,\n operation,\n plugin,\n });\n\n const file = context.file({ id: typesId })!;\n\n const { error, errors, response, responses } =\n operationResponsesMap(operation);\n\n if (errors) {\n const identifierErrors = file.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'errors',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierErrors.name) {\n const type = schemaToType({\n context,\n plugin,\n schema: errors,\n state:\n plugin.readOnlyWriteOnlyBehavior === 'off'\n ? undefined\n : {\n accessScope: 'read',\n },\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierErrors.name,\n type,\n });\n file.add(node);\n }\n\n if (error) {\n const identifierError = file.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'error',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierError.name) {\n const errorsType = compiler.typeReferenceNode({\n typeName: identifierErrors.name,\n });\n const keyofType = ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n errorsType,\n );\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierError.name,\n type: compiler.indexedAccessTypeNode({\n indexType: keyofType,\n objectType: errorsType,\n }),\n });\n file.add(node);\n }\n }\n }\n }\n\n if (responses) {\n const identifierResponses = file.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'responses',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierResponses.name) {\n const type = schemaToType({\n context,\n plugin,\n schema: responses,\n state:\n plugin.readOnlyWriteOnlyBehavior === 'off'\n ? undefined\n : {\n accessScope: 'read',\n },\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierResponses.name,\n type,\n });\n file.add(node);\n }\n\n if (response) {\n const identifierResponse = file.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'response',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierResponse.name) {\n const responsesType = compiler.typeReferenceNode({\n typeName: identifierResponses.name,\n });\n const keyofType = ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n responsesType,\n );\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierResponse.name,\n type: compiler.indexedAccessTypeNode({\n indexType: keyofType,\n objectType: responsesType,\n }),\n });\n file.add(node);\n }\n }\n }\n }\n};\n\n/**\n * Is this schema split into a readable and writable variant? We won't split\n * schemas if they don't contain any read-only or write-only fields or if they\n * contain ONLY read-only or write-only fields. We split only when there's a\n * mix of different access scopes for the schema.\n */\nconst isSchemaSplit = ({ schema }: { schema: IR.SchemaObject }): boolean => {\n const scopes = schema.accessScopes;\n return scopes !== undefined && scopes.length > 1;\n};\n\nconst hasSchemaScope = ({\n accessScope,\n schema,\n}: {\n accessScope: Required<State>['accessScope'];\n schema: IR.SchemaObject;\n}): boolean => {\n const scopes = schema.accessScopes;\n return (\n !scopes ||\n (scopes !== undefined &&\n (scopes.includes(accessScope) || scopes.includes('both')))\n );\n};\n\nexport const schemaToType = ({\n $ref,\n context,\n namespace = [],\n plugin,\n schema,\n state,\n}: {\n $ref?: string;\n context: IR.Context;\n namespace?: Array<ts.Statement>;\n plugin: Plugin.Instance<Config>;\n schema: IR.SchemaObject;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n const file = context.file({ id: typesId })!;\n\n let type: ts.TypeNode | undefined;\n\n if (schema.$ref) {\n const refSchema = context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n\n if (\n !state?.accessScope ||\n hasSchemaScope({ accessScope: state.accessScope, schema: refSchema })\n ) {\n const finalRef = scopeToRef({\n $ref: schema.$ref,\n accessScope: isSchemaSplit({ schema: refSchema })\n ? state?.accessScope\n : undefined,\n plugin,\n });\n const identifier = file.identifier({\n $ref: finalRef,\n create: true,\n namespace: 'type',\n });\n type = compiler.typeReferenceNode({\n typeName: identifier.name || '',\n });\n }\n } else if (schema.type) {\n type = schemaTypeToIdentifier({\n $ref,\n context,\n namespace,\n plugin,\n schema,\n state,\n });\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n if (schema.items) {\n const itemTypes: Array<ts.TypeNode> = [];\n\n for (const item of schema.items) {\n const type = schemaToType({\n context,\n namespace,\n plugin,\n schema: item,\n state,\n });\n if (type) {\n itemTypes.push(type);\n }\n }\n\n type =\n schema.logicalOperator === 'and'\n ? compiler.typeIntersectionNode({ types: itemTypes })\n : compiler.typeUnionNode({ types: itemTypes });\n } else {\n type = schemaToType({\n context,\n namespace,\n plugin,\n schema,\n state,\n });\n }\n } else {\n // catch-all fallback for failed schemas\n type = schemaTypeToIdentifier({\n context,\n namespace,\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n }\n\n // emit nodes only if $ref points to a reusable component\n if ($ref && isRefOpenApiComponent($ref)) {\n // emit namespace if it has any members\n if (namespace.length) {\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n const node = compiler.namespaceDeclaration({\n name: identifier.name || '',\n statements: namespace,\n });\n file.add(node);\n }\n\n // enum handler emits its own artifacts\n if (schema.type !== 'enum' && type) {\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'type',\n });\n const node = compiler.typeAliasDeclaration({\n comment: parseSchemaJsDoc({ schema }),\n exportType: true,\n name: identifier.name || '',\n type,\n });\n file.add(node);\n }\n }\n\n return type;\n};\n\nexport const handler: Plugin.Handler<Config> = ({ context, plugin }) => {\n const file = context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: typesId,\n identifierCase: plugin.identifierCase,\n path: plugin.output,\n });\n\n // reserve identifier for ClientOptions\n const clientOptions = file.identifier({\n $ref: 'ClientOptions',\n create: true,\n namespace: 'type',\n });\n\n context.subscribe('schema', ({ $ref, schema }) => {\n if (\n plugin.readOnlyWriteOnlyBehavior === 'off' ||\n !isSchemaSplit({ schema })\n ) {\n schemaToType({\n $ref,\n context,\n plugin,\n schema,\n state: undefined,\n });\n return;\n }\n\n if (hasSchemaScope({ accessScope: 'read', schema })) {\n schemaToType({\n $ref: scopeToRef({\n $ref,\n accessScope: 'read',\n plugin,\n }),\n context,\n plugin,\n schema,\n state: {\n accessScope: 'read',\n },\n });\n }\n\n if (hasSchemaScope({ accessScope: 'write', schema })) {\n schemaToType({\n $ref: scopeToRef({\n $ref,\n accessScope: 'write',\n plugin,\n }),\n context,\n plugin,\n schema,\n state: {\n accessScope: 'write',\n },\n });\n }\n });\n\n context.subscribe('parameter', ({ $ref, parameter }) => {\n schemaToType({\n $ref,\n context,\n plugin,\n schema: parameter.schema,\n state: undefined,\n });\n });\n\n context.subscribe('requestBody', ({ $ref, requestBody }) => {\n schemaToType({\n $ref,\n context,\n plugin,\n schema: requestBody.schema,\n state:\n plugin.readOnlyWriteOnlyBehavior === 'off'\n ? undefined\n : {\n accessScope: 'write',\n },\n });\n });\n\n context.subscribe('operation', ({ operation }) => {\n operationToType({\n context,\n operation,\n plugin,\n });\n });\n\n const servers: Array<IR.ServerObject> = [];\n\n context.subscribe('server', ({ server }) => {\n servers.push(server);\n });\n\n context.subscribe('after', () => {\n createClientOptions({\n context,\n identifier: clientOptions,\n plugin,\n servers,\n });\n });\n};\n","import ts from 'typescript';\n\nimport type { IR } from '../../../ir/types';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\n\n/**\n * Returns final field name for object properties. This might differ from the\n * original value as applying case transform function might alter it.\n */\nexport const fieldName = ({\n context,\n name,\n}: {\n context: IR.Context;\n name: string;\n}) => {\n numberRegExp.lastIndex = 0;\n if (numberRegExp.test(name)) {\n // For negative numbers, use string literals instead\n if (name.startsWith('-')) {\n return ts.factory.createStringLiteral(name);\n }\n return ts.factory.createNumericLiteral(name);\n }\n\n // if (typeof context.config.output.case === 'function') {\n // return context.config.output.case({ value: name });\n // }\n\n return stringCase({ case: context.config.output.case, value: name });\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport type { Identifier } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { parseUrl } from '../../../utils/url';\nimport type { Plugin } from '../../types';\nimport { getClientBaseUrlKey, getClientPlugin } from '../client-core/utils';\nimport { typesId } from './ref';\nimport type { Config } from './types';\n\nconst stringType = compiler.keywordTypeNode({ keyword: 'string' });\n\nconst serverToBaseUrlType = ({ server }: { server: IR.ServerObject }) => {\n const url = parseUrl(server.url);\n\n if (url.protocol && url.host) {\n return compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: server.url }),\n });\n }\n\n return compiler.templateLiteralType({\n value: [\n url.protocol || stringType,\n '://',\n url.host || stringType,\n url.port ? `:${url.port}` : '',\n url.path || '',\n ],\n });\n};\n\nexport const createClientOptions = ({\n context,\n identifier,\n servers,\n}: {\n context: IR.Context;\n identifier: Identifier;\n plugin: Plugin.Instance<Config>;\n servers: ReadonlyArray<IR.ServerObject>;\n}) => {\n const file = context.file({ id: typesId })!;\n\n if (!identifier.name) {\n return;\n }\n\n const client = getClientPlugin(context.config);\n\n const types: Array<ts.TypeNode> = servers.map((server) =>\n serverToBaseUrlType({ server }),\n );\n\n if (!servers.length) {\n types.push(stringType);\n } else if (!('strictBaseUrl' in client && client.strictBaseUrl)) {\n types.push(\n compiler.typeIntersectionNode({\n types: [stringType, ts.factory.createTypeLiteralNode([])],\n }),\n );\n }\n\n const typeClientOptions = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name,\n type: compiler.typeInterfaceNode({\n properties: [\n {\n name: getClientBaseUrlKey(context.config),\n type: compiler.typeUnionNode({ types }),\n },\n ],\n useLegacyResolution: false,\n }),\n });\n\n file.add(typeClientOptions);\n};\n","import type { Plugin } from '../../types';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n enums: false,\n enumsCase: 'SCREAMING_SNAKE_CASE',\n enumsConstantsIgnoreNull: false,\n exportFromIndex: true,\n exportInlineEnums: false,\n identifierCase: 'PascalCase',\n name: '@hey-api/typescript',\n output: 'types',\n readOnlyWriteOnlyBehavior: 'split',\n readableNameBuilder: '{{name}}Readable',\n style: 'preserve',\n tree: false,\n writableNameBuilder: '{{name}}Writable',\n};\n\n/**\n * Type helper for `@hey-api/typescript` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport { tsNodeToString } from '../../../compiler/utils';\nimport { clientApi } from '../../../generate/client';\nimport {\n hasOperationDataRequired,\n operationPagination,\n} from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { serviceFunctionIdentifier } from '../../@hey-api/sdk/plugin-legacy';\nimport { schemaToType } from '../../@hey-api/typescript/plugin';\nimport { createOperationComment } from '../../shared/utils/operation';\nimport {\n createQueryKeyFunction,\n createQueryKeyType,\n queryKeyFunctionIdentifier,\n queryKeyName,\n queryKeyStatement,\n} from './queryKey';\nimport type { PluginInstance, PluginState } from './types';\nimport { useTypeData, useTypeError, useTypeResponse } from './useType';\n\nconst createInfiniteParamsFn = 'createInfiniteParams';\nconst infiniteQueryOptionsFn = 'infiniteQueryOptions';\n\nconst createInfiniteParamsFunction = ({\n context,\n plugin,\n}: {\n context: IR.Context;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeReferenceNode({\n typeName: `QueryKey<${clientApi.Options.name}>`,\n }),\n },\n {\n name: 'page',\n type: compiler.typeReferenceNode({ typeName: 'K' }),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].path',\n },\n {\n assertion: 'any',\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].query',\n },\n {\n assertion: 'any',\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: compiler.asExpression({\n expression: compiler.asExpression({\n expression: compiler.identifier({ text: 'params' }),\n type: compiler.keywordTypeNode({ keyword: 'unknown' }),\n }),\n type: ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n }),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: `Pick<QueryKey<${clientApi.Options.name}>[0], 'body' | 'headers' | 'path' | 'query'>`,\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: createInfiniteParamsFn,\n });\n file.add(fn);\n};\n\nconst infiniteQueryOptionsFunctionIdentifier = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}InfiniteOptions`;\n\nexport const createInfiniteQueryOptions = ({\n context,\n operation,\n plugin,\n queryFn,\n state,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n queryFn: string;\n state: PluginState;\n}) => {\n if (\n !plugin.infiniteQueryOptions ||\n !(['get', 'post'] as (typeof operation.method)[]).includes(operation.method)\n ) {\n return state;\n }\n\n const pagination = operationPagination({ context, operation });\n\n if (!pagination) {\n return state;\n }\n\n const file = context.file({ id: plugin.name })!;\n const isRequired = hasOperationDataRequired(operation);\n\n if (!state.hasInfiniteQueries) {\n state.hasInfiniteQueries = true;\n\n if (!state.hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ context, plugin });\n createQueryKeyFunction({ context, plugin });\n state.hasCreateQueryKeyParamsFunction = true;\n }\n\n if (!state.hasCreateInfiniteParamsFunction) {\n createInfiniteParamsFunction({ context, plugin });\n state.hasCreateInfiniteParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: infiniteQueryOptionsFn,\n });\n\n state.typeInfiniteData = file.import({\n asType: true,\n module: plugin.name,\n name: 'InfiniteData',\n });\n }\n\n state.hasUsedQueryFn = true;\n\n const typeData = useTypeData({ context, operation, plugin });\n const typeError = useTypeError({ context, operation, plugin });\n const typeResponse = useTypeResponse({ context, operation, plugin });\n\n const typeQueryKey = `${queryKeyName}<${typeData}>`;\n const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`;\n // TODO: parser - this is a bit clunky, need to compile type to string because\n // `compiler.returnFunctionCall()` accepts only strings, should be cleaned up\n const type = schemaToType({\n context,\n plugin: context.config.plugins['@hey-api/typescript'] as Parameters<\n typeof schemaToType\n >[0]['plugin'],\n schema: pagination.schema,\n state: undefined,\n });\n const typePageParam = type\n ? `${tsNodeToString({\n node: type,\n unescape: true,\n })} | ${typePageObjectParam}`\n : `${typePageObjectParam}`;\n\n const node = queryKeyStatement({\n context,\n isInfinite: true,\n operation,\n plugin,\n typeQueryKey,\n });\n file.add(node);\n\n const infiniteQueryKeyName = queryKeyFunctionIdentifier({\n context,\n isInfinite: true,\n operation,\n });\n const identifierQueryKey = file.identifier({\n $ref: `#/queryKey/${infiniteQueryKeyName}`,\n namespace: 'value',\n });\n\n const statement = compiler.constVariable({\n comment: plugin.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.ots.string('object'),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.in,\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: createInfiniteParamsFn,\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: identifierQueryKey.name || '',\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof state.typeInfiniteData === 'string' ? state.typeInfiniteData : state.typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: infiniteQueryOptionsFunctionIdentifier({\n context,\n operation,\n }),\n });\n file.add(statement);\n};\n","import type { ImportExportItemObject } from '../../../compiler/utils';\nimport type { IR } from '../../../ir/types';\nimport { getClientPlugin } from '../../@hey-api/client-core/utils';\nimport { operationOptionsType } from '../../@hey-api/sdk/plugin';\nimport {\n importIdentifierError,\n importIdentifierResponse,\n} from '../../@hey-api/typescript/ref';\nimport type { PluginInstance } from './types';\n\nexport const useTypeData = ({\n context,\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n\n const typeData = operationOptionsType({\n context,\n file,\n operation,\n });\n return typeData;\n};\n\nexport const useTypeError = ({\n context,\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n const identifierError = importIdentifierError({ context, file, operation });\n let typeError: ImportExportItemObject = {\n asType: true,\n name: identifierError.name || '',\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: plugin.name,\n name: 'DefaultError',\n });\n }\n const client = getClientPlugin(context.config);\n if (client.name === '@hey-api/client-axios') {\n const axiosError = file.import({\n asType: true,\n module: 'axios',\n name: 'AxiosError',\n });\n typeError = {\n ...axiosError,\n name: `${axiosError.name}<${typeError.name}>`,\n };\n }\n return typeError;\n};\n\nexport const useTypeResponse = ({\n context,\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n const identifierResponse = importIdentifierResponse({\n context,\n file,\n operation,\n });\n const typeResponse = identifierResponse.name || 'unknown';\n return typeResponse;\n};\n","import { compiler, type Property } from '../../../compiler';\nimport { clientApi } from '../../../generate/client';\nimport { hasOperationDataRequired } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { getClientBaseUrlKey } from '../../@hey-api/client-core/utils';\nimport { serviceFunctionIdentifier } from '../../@hey-api/sdk/plugin-legacy';\nimport type { PluginInstance } from './types';\nimport { useTypeData } from './useType';\n\nconst createQueryKeyFn = 'createQueryKey';\nexport const queryKeyName = 'QueryKey';\nconst TOptionsType = 'TOptions';\n\nconst infiniteIdentifier = compiler.identifier({ text: 'infinite' });\nconst optionsIdentifier = compiler.identifier({ text: 'options' });\n\nexport const createQueryKeyFunction = ({\n context,\n plugin,\n}: {\n context: IR.Context;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n\n const identifierCreateQueryKey = file.identifier({\n $ref: `#/ir/${createQueryKeyFn}`,\n create: true,\n namespace: 'value',\n });\n\n if (identifierCreateQueryKey.name) {\n const returnType = compiler.indexedAccessTypeNode({\n indexType: compiler.literalTypeNode({\n literal: compiler.ots.number(0),\n }),\n objectType: compiler.typeReferenceNode({\n typeArguments: [compiler.typeReferenceNode({ typeName: TOptionsType })],\n typeName: queryKeyName,\n }),\n });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeReferenceNode({ typeName: 'string' }),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeReferenceNode({ typeName: TOptionsType }),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeReferenceNode({ typeName: 'boolean' }),\n },\n ],\n returnType: compiler.typeTupleNode({\n types: [returnType],\n }),\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(context.config),\n value: compiler.identifier({\n text: `(options?.client ?? _heyApiClient).getConfig().${getClientBaseUrlKey(context.config)}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnStatement({\n expression: compiler.arrayLiteralExpression({\n elements: [compiler.identifier({ text: 'params' })],\n }),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.Options.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: identifierCreateQueryKey.name,\n });\n file.add(fn);\n }\n};\n\nconst createQueryKeyLiteral = ({\n context,\n id,\n isInfinite,\n plugin,\n}: {\n context: IR.Context;\n id: string;\n isInfinite?: boolean;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n const identifierCreateQueryKey = file.identifier({\n $ref: `#/ir/${createQueryKeyFn}`,\n namespace: 'value',\n });\n const createQueryKeyCallExpression = compiler.callExpression({\n functionName: identifierCreateQueryKey.name || '',\n parameters: [\n compiler.ots.string(id),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n });\n return createQueryKeyCallExpression;\n};\n\nexport const createQueryKeyType = ({\n context,\n plugin,\n}: {\n context: IR.Context;\n plugin: PluginInstance;\n}) => {\n const file = context.file({ id: plugin.name })!;\n\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n exportType: true,\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey(context.config)}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.Options.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nexport const queryKeyFunctionIdentifier = ({\n context,\n isInfinite,\n operation,\n}: {\n context: IR.Context;\n isInfinite?: boolean;\n operation: IR.OperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}${isInfinite ? 'Infinite' : ''}QueryKey`;\n\nexport const queryKeyStatement = ({\n context,\n isInfinite,\n operation,\n plugin,\n typeQueryKey,\n}: {\n context: IR.Context;\n isInfinite: boolean;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n typeQueryKey?: string;\n}) => {\n const file = context.file({ id: plugin.name })!;\n const typeData = useTypeData({ context, operation, plugin });\n const name = queryKeyFunctionIdentifier({\n context,\n isInfinite,\n operation,\n });\n const identifierQueryKey = file.identifier({\n $ref: `#/queryKey/${name}`,\n create: true,\n namespace: 'value',\n });\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: hasOperationDataRequired(operation),\n name: 'options',\n type: typeData,\n },\n ],\n returnType: isInfinite ? typeQueryKey : undefined,\n statements: createQueryKeyLiteral({\n context,\n id: operation.id,\n isInfinite,\n plugin,\n }),\n }),\n name: identifierQueryKey.name || '',\n });\n return statement;\n};\n","import { compiler } from '../../../compiler';\nimport type { IR } from '../../../ir/types';\nimport { serviceFunctionIdentifier } from '../../@hey-api/sdk/plugin-legacy';\nimport { createOperationComment } from '../../shared/utils/operation';\nimport type { PluginInstance, PluginState } from './types';\nimport { useTypeData, useTypeError, useTypeResponse } from './useType';\n\nconst mutationOptionsFn = 'mutationOptions';\n\nconst mutationOptionsFunctionIdentifier = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}Mutation`;\n\nexport const createMutationOptions = ({\n context,\n operation,\n plugin,\n queryFn,\n state,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n queryFn: string;\n state: PluginState;\n}) => {\n if (\n !plugin.mutationOptions ||\n !(\n ['delete', 'patch', 'post', 'put'] as (typeof operation.method)[]\n ).includes(operation.method)\n ) {\n return state;\n }\n\n const mutationsType =\n plugin.name === '@tanstack/angular-query-experimental' ||\n plugin.name === '@tanstack/svelte-query' ||\n plugin.name === '@tanstack/solid-query'\n ? 'MutationOptions'\n : 'UseMutationOptions';\n\n const file = context.file({ id: plugin.name })!;\n\n if (!state.hasMutations) {\n state.hasMutations = true;\n\n file.import({\n asType: true,\n module: plugin.name,\n name: mutationsType,\n });\n }\n\n state.hasUsedQueryFn = true;\n\n const typeData = useTypeData({ context, operation, plugin });\n const typeError = useTypeError({ context, operation, plugin });\n const typeResponse = useTypeResponse({ context, operation, plugin });\n // TODO: better types syntax\n const mutationType = `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`;\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n returnType: mutationType,\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n typeName: mutationType,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n comment: plugin.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression,\n name: mutationOptionsFunctionIdentifier({ context, operation }),\n });\n file.add(statement);\n\n return state;\n};\n","import { compiler } from '../../../compiler';\nimport { hasOperationDataRequired } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { serviceFunctionIdentifier } from '../../@hey-api/sdk/plugin-legacy';\nimport { createOperationComment } from '../../shared/utils/operation';\nimport {\n createQueryKeyFunction,\n createQueryKeyType,\n queryKeyFunctionIdentifier,\n queryKeyStatement,\n} from './queryKey';\nimport type { PluginInstance, PluginState } from './types';\nimport { useTypeData } from './useType';\n\nconst queryOptionsFn = 'queryOptions';\n\nconst queryOptionsFunctionIdentifier = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}) =>\n `${serviceFunctionIdentifier({\n config: context.config,\n id: operation.id,\n operation,\n })}Options`;\n\nexport const createQueryOptions = ({\n context,\n operation,\n plugin,\n queryFn,\n state,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n queryFn: string;\n state: PluginState;\n}) => {\n if (\n !plugin.queryOptions ||\n !(['get', 'post'] as (typeof operation.method)[]).includes(operation.method)\n ) {\n return state;\n }\n\n const file = context.file({ id: plugin.name })!;\n const isRequired = hasOperationDataRequired(operation);\n\n if (!state.hasQueries) {\n state.hasQueries = true;\n\n if (!state.hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ context, plugin });\n createQueryKeyFunction({ context, plugin });\n state.hasCreateQueryKeyParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: queryOptionsFn,\n });\n }\n\n state.hasUsedQueryFn = true;\n\n const node = queryKeyStatement({\n context,\n isInfinite: false,\n operation,\n plugin,\n });\n file.add(node);\n\n const typeData = useTypeData({ context, operation, plugin });\n\n const queryKeyName = queryKeyFunctionIdentifier({\n context,\n isInfinite: false,\n operation,\n });\n const identifierQueryKey = file.identifier({\n $ref: `#/queryKey/${queryKeyName}`,\n namespace: 'value',\n });\n\n const statement = compiler.constVariable({\n comment: plugin.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: identifierQueryKey.name || '',\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: queryOptionsFunctionIdentifier({ context, operation }),\n // TODO: add type error\n // TODO: AxiosError<PutSubmissionMetaError>\n });\n file.add(statement);\n\n return state;\n};\n","import { clientApi } from '../../../generate/client';\nimport { getServiceName } from '../../../utils/postprocess';\nimport { transformServiceName } from '../../../utils/transform';\nimport { clientId } from '../../@hey-api/client-core/utils';\nimport { sdkId } from '../../@hey-api/sdk/constants';\nimport { serviceFunctionIdentifier } from '../../@hey-api/sdk/plugin-legacy';\nimport { createInfiniteQueryOptions } from './infiniteQueryOptions';\nimport { createMutationOptions } from './mutationOptions';\nimport { createQueryOptions } from './queryOptions';\nimport type { PluginHandler, PluginState } from './types';\n\nexport const handler: PluginHandler = ({ context, plugin }) => {\n const file = context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: plugin.name,\n path: plugin.output,\n });\n\n const state: PluginState = {\n hasCreateInfiniteParamsFunction: false,\n hasCreateQueryKeyParamsFunction: false,\n hasInfiniteQueries: false,\n hasMutations: false,\n hasQueries: false,\n hasUsedQueryFn: false,\n typeInfiniteData: undefined!,\n };\n\n context.subscribe('before', () => {\n file.import({\n ...clientApi.Options,\n module: file.relativePathToFile({ context, id: sdkId }),\n });\n });\n\n context.subscribe('operation', ({ operation }) => {\n state.hasUsedQueryFn = false;\n\n const queryFn = [\n context.config.plugins['@hey-api/sdk']?.asClass &&\n transformServiceName({\n config: context.config,\n name: getServiceName(operation.tags?.[0] || 'default'),\n }),\n serviceFunctionIdentifier({\n config: context.config,\n handleIllegal: !context.config.plugins['@hey-api/sdk']?.asClass,\n id: operation.id,\n operation,\n }),\n ]\n .filter(Boolean)\n .join('.');\n\n createQueryOptions({\n context,\n operation,\n plugin,\n queryFn,\n state,\n });\n\n createInfiniteQueryOptions({\n context,\n operation,\n plugin,\n queryFn,\n state,\n });\n\n createMutationOptions({\n context,\n operation,\n plugin,\n queryFn,\n state,\n });\n\n if (state.hasUsedQueryFn) {\n file.import({\n module: file.relativePathToFile({ context, id: sdkId }),\n name: queryFn.split('.')[0]!,\n });\n }\n });\n\n context.subscribe('after', () => {\n if (state.hasQueries || state.hasInfiniteQueries) {\n file.import({\n alias: '_heyApiClient',\n module: file.relativePathToFile({ context, id: clientId }),\n name: 'client',\n });\n }\n });\n};\n","import ts from 'typescript';\n\nimport { compiler, type Property } from '../../../compiler';\nimport type { ImportExportItem } from '../../../compiler/module';\nimport type { ImportExportItemObject } from '../../../compiler/utils';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { relativeModulePath } from '../../../generate/utils';\nimport { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport { getOperationKey } from '../../../openApi/common/parser/operation';\nimport type {\n Client,\n Method,\n Model,\n Operation,\n OperationParameter,\n} from '../../../types/client';\nimport type { Config } from '../../../types/config';\nimport type { Files } from '../../../types/utils';\nimport { getConfig, isLegacyClient } from '../../../utils/config';\nimport { transformServiceName } from '../../../utils/transform';\nimport {\n getClientBaseUrlKey,\n getClientPlugin,\n} from '../../@hey-api/client-core/utils';\nimport {\n generateImport,\n operationDataTypeName,\n operationErrorTypeName,\n operationOptionsLegacyParserType,\n operationResponseTypeName,\n serviceFunctionIdentifier,\n} from '../../@hey-api/sdk/plugin-legacy';\nimport type { Plugin } from '../../types';\nimport type { Config as AngularQueryConfig } from '../angular-query-experimental';\nimport type { Config as ReactQueryConfig } from '../react-query';\nimport type { Config as SolidQueryConfig } from '../solid-query';\nimport type { Config as SvelteQueryConfig } from '../svelte-query';\nimport type { Config as VueQueryConfig } from '../vue-query';\n\nconst toInfiniteQueryOptionsName = (operation: Operation) =>\n `${serviceFunctionIdentifier({\n config: getConfig(),\n id: operation.name,\n operation,\n })}InfiniteOptions`;\n\nconst toMutationOptionsName = (operation: Operation) =>\n `${serviceFunctionIdentifier({\n config: getConfig(),\n id: operation.name,\n operation,\n })}Mutation`;\n\nconst toQueryOptionsName = ({\n config,\n id,\n operation,\n}: {\n config: Config;\n id: string;\n operation: IR.OperationObject | Operation;\n}) =>\n `${serviceFunctionIdentifier({\n config,\n id,\n operation,\n })}Options`;\n\nconst toQueryKeyName = ({\n config,\n id,\n isInfinite,\n operation,\n}: {\n config: Config;\n id: string;\n isInfinite?: boolean;\n operation: IR.OperationObject | Operation;\n}) =>\n `${serviceFunctionIdentifier({\n config,\n id,\n operation,\n })}${isInfinite ? 'Infinite' : ''}QueryKey`;\n\nconst getPaginationIn = (parameter: OperationParameter) => {\n switch (parameter.in) {\n case 'formData':\n return 'body';\n case 'header':\n return 'headers';\n default:\n return parameter.in;\n }\n};\n\nconst createInfiniteParamsFn = 'createInfiniteParams';\nconst createQueryKeyFn = 'createQueryKey';\nconst infiniteQueryOptionsFn = 'infiniteQueryOptions';\nconst mutationOptionsFn = 'mutationOptions';\nconst queryKeyName = 'QueryKey';\nconst queryOptionsFn = 'queryOptions';\nconst TOptionsType = 'TOptions';\n\nconst createInfiniteParamsFunction = ({\n file,\n}: {\n file: Files[keyof Files];\n}) => {\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeNode(\n `QueryKey<${clientApi.OptionsLegacyParser.name}>`,\n ),\n },\n {\n name: 'page',\n type: compiler.typeNode('K'),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].path',\n },\n {\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].query',\n },\n {\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: ts.factory.createAsExpression(\n ts.factory.createAsExpression(\n compiler.identifier({ text: 'params' }),\n ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n ),\n ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n ),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: `Pick<QueryKey<${clientApi.OptionsLegacyParser.name}>[0], 'body' | 'headers' | 'path' | 'query'>`,\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: createInfiniteParamsFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyFunction = ({ file }: { file: Files[keyof Files] }) => {\n const returnType = compiler.indexedAccessTypeNode({\n indexType: compiler.typeNode(0),\n objectType: compiler.typeNode(queryKeyName, [\n compiler.typeNode(TOptionsType),\n ]),\n });\n\n const infiniteIdentifier = compiler.identifier({ text: 'infinite' });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeNode('string'),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeNode(TOptionsType),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeNode('boolean'),\n },\n ],\n returnType,\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(getConfig()),\n value: compiler.identifier({\n text: `(options?.client ?? _heyApiClient).getConfig().${getClientBaseUrlKey(getConfig())}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: 'params',\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.OptionsLegacyParser.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: createQueryKeyFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyType = ({ file }: { file: Files[keyof Files] }) => {\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey(getConfig())}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.OptionsLegacyParser.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nconst createTypeData = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeData } = generateImport({\n client,\n meta: operation.parameters.length\n ? {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n }\n : undefined,\n nameTransformer: operationDataTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n const typeData = operationOptionsLegacyParserType({\n importedType: nameTypeData,\n });\n\n return { typeData };\n};\n\nconst createTypeError = ({\n client,\n file,\n operation,\n pluginName,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n pluginName: string;\n typesModulePath: string;\n}) => {\n const config = getConfig();\n\n const { name: nameTypeError } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n let typeError: ImportExportItemObject = {\n asType: true,\n name: nameTypeError,\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: pluginName,\n name: 'DefaultError',\n });\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === '@hey-api/client-axios') {\n const axiosError = file.import({\n asType: true,\n module: 'axios',\n name: 'AxiosError',\n });\n typeError = {\n ...axiosError,\n name: `${axiosError.name}<${typeError.name}>`,\n };\n }\n\n return { typeError };\n};\n\nconst createTypeResponse = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeResponse } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport: (imported) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name: imported,\n });\n },\n });\n\n const typeResponse = nameTypeResponse || 'void';\n\n return { typeResponse };\n};\n\nconst createQueryKeyLiteral = ({\n id,\n isInfinite,\n}: {\n id: string;\n isInfinite?: boolean;\n}) => {\n const queryKeyLiteral = compiler.arrayLiteralExpression({\n elements: [\n compiler.callExpression({\n functionName: createQueryKeyFn,\n parameters: [\n compiler.ots.string(id),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n }),\n ],\n multiLine: false,\n });\n return queryKeyLiteral;\n};\n\nexport const handlerLegacy: Plugin.LegacyHandler<\n | ReactQueryConfig\n | AngularQueryConfig\n | SolidQueryConfig\n | SvelteQueryConfig\n | VueQueryConfig\n> = ({ client, files, plugin }) => {\n const config = getConfig();\n\n if (isLegacyClient(config)) {\n throw new Error('🚫 TanStack Query plugin does not support legacy clients');\n }\n\n const file = files[plugin.name]!;\n\n file.import({\n ...clientApi.OptionsLegacyParser,\n module: clientModulePath({ config, sourceOutput: plugin.output }),\n });\n\n const typesModulePath = relativeModulePath({\n moduleOutput: files.types!.nameWithoutExtension(),\n sourceOutput: plugin.output,\n });\n\n const mutationsType =\n plugin.name === '@tanstack/angular-query-experimental' ||\n plugin.name === '@tanstack/svelte-query' ||\n plugin.name === '@tanstack/solid-query'\n ? 'MutationOptions'\n : 'UseMutationOptions';\n\n let typeInfiniteData!: ImportExportItem;\n let hasCreateInfiniteParamsFunction = false;\n let hasCreateQueryKeyParamsFunction = false;\n let hasInfiniteQueries = false;\n let hasMutations = false;\n let hasQueries = false;\n\n const processedOperations = new Map<string, boolean>();\n\n for (const service of client.services) {\n for (const operation of service.operations) {\n // track processed operations to avoid creating duplicates\n const operationKey = getOperationKey(operation);\n if (processedOperations.has(operationKey)) {\n continue;\n }\n processedOperations.set(operationKey, true);\n\n const queryFn = [\n config.plugins['@hey-api/sdk']?.asClass &&\n transformServiceName({\n config,\n name: service.name,\n }),\n serviceFunctionIdentifier({\n config,\n handleIllegal: !config.plugins['@hey-api/sdk']?.asClass,\n id: operation.name,\n operation,\n }),\n ]\n .filter(Boolean)\n .join('.');\n let hasUsedQueryFn = false;\n\n // queries\n if (\n plugin.queryOptions &&\n (['GET', 'POST'] as ReadonlyArray<Method>).includes(operation.method)\n ) {\n if (!hasQueries) {\n hasQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: queryOptionsFn,\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: createQueryKeyLiteral({\n id: operation.name,\n }),\n }),\n name: toQueryKeyName({\n config,\n id: operation.name,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName({\n config,\n id: operation.name,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: toQueryOptionsName({\n config,\n id: operation.name,\n operation,\n }),\n // TODO: add type error\n // TODO: AxiosError<PutSubmissionMetaError>\n });\n file.add(statement);\n }\n\n // infinite queries\n if (\n plugin.infiniteQueryOptions &&\n (['GET', 'POST'] as ReadonlyArray<Method>).includes(operation.method)\n ) {\n // the actual pagination field might be nested inside parameter, e.g. body\n let paginationField!: Model | OperationParameter;\n\n const paginationParameter = operation.parameters.find((parameter) => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n config.input.pagination,\n );\n if (paginationRegExp.test(parameter.name)) {\n paginationField = parameter;\n return true;\n }\n\n if (parameter.in !== 'body') {\n return;\n }\n\n if (parameter.export === 'reference') {\n const ref = parameter.$refs[0];\n const refModel = client.models.find(\n (model) => model.meta?.$ref === ref,\n );\n return refModel?.properties.find((property) => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n config.input.pagination,\n );\n if (paginationRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n });\n }\n\n return parameter.properties.find((property) => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n config.input.pagination,\n );\n if (paginationRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n });\n });\n\n if (paginationParameter && paginationField) {\n if (!hasInfiniteQueries) {\n hasInfiniteQueries = true;\n\n if (!hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ file });\n createQueryKeyFunction({ file });\n hasCreateQueryKeyParamsFunction = true;\n }\n\n if (!hasCreateInfiniteParamsFunction) {\n createInfiniteParamsFunction({ file });\n hasCreateInfiniteParamsFunction = true;\n }\n\n file.import({\n module: plugin.name,\n name: infiniteQueryOptionsFn,\n });\n\n typeInfiniteData = file.import({\n asType: true,\n module: plugin.name,\n name: 'InfiniteData',\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n const { typeError } = createTypeError({\n client,\n file,\n operation,\n pluginName: plugin.name,\n typesModulePath,\n });\n const { typeResponse } = createTypeResponse({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const isRequired = isOperationParameterRequired(operation.parameters);\n\n const typeQueryKey = `${queryKeyName}<${typeData}>`;\n const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`;\n const typePageParam = `${paginationField.base} | ${typePageObjectParam}`;\n\n const queryKeyStatement = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n returnType: typeQueryKey,\n statements: createQueryKeyLiteral({\n id: operation.name,\n isInfinite: true,\n }),\n }),\n name: toQueryKeyName({\n config,\n id: operation.name,\n isInfinite: true,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.ots.string('object'),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: getPaginationIn(\n paginationParameter,\n ),\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: paginationField.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: 'createInfiniteParams',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName({\n config,\n id: operation.name,\n isInfinite: true,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof typeInfiniteData === 'string' ? typeInfiniteData : typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: toInfiniteQueryOptionsName(operation),\n });\n file.add(statement);\n }\n }\n\n // mutations\n if (\n plugin.mutationOptions &&\n (['DELETE', 'PATCH', 'POST', 'PUT'] as ReadonlyArray<Method>).includes(\n operation.method,\n )\n ) {\n if (!hasMutations) {\n hasMutations = true;\n\n file.import({\n asType: true,\n module: plugin.name,\n name: mutationsType,\n });\n }\n\n hasUsedQueryFn = true;\n\n const { typeData } = createTypeData({\n client,\n file,\n operation,\n typesModulePath,\n });\n const { typeError } = createTypeError({\n client,\n file,\n operation,\n pluginName: plugin.name,\n typesModulePath,\n });\n const { typeResponse } = createTypeResponse({\n client,\n file,\n operation,\n typesModulePath,\n });\n\n const expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n // TODO: better types syntax\n typeName: `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: toMutationOptionsName(operation),\n });\n file.add(statement);\n }\n\n if (hasQueries || hasInfiniteQueries) {\n file.import({\n alias: '_heyApiClient',\n module: relativeModulePath({\n moduleOutput: files.client!.nameWithoutExtension(),\n sourceOutput: plugin.output,\n }),\n name: 'client',\n });\n }\n\n if (hasUsedQueryFn) {\n file.import({\n module: relativeModulePath({\n moduleOutput: files.sdk!.nameWithoutExtension(),\n sourceOutput: plugin.output,\n }),\n name: queryFn.split('.')[0]!,\n });\n }\n }\n }\n};\n","import type { Plugin } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n comments: true,\n exportFromIndex: false,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/angular-query-experimental',\n output: '@tanstack/angular-query-experimental',\n queryOptions: true,\n};\n\n/**\n * Type helper for `@tanstack/angular-query-experimental` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n comments: true,\n exportFromIndex: false,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/react-query',\n output: '@tanstack/react-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for `@tanstack/react-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n comments: true,\n exportFromIndex: false,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/solid-query',\n output: '@tanstack/solid-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for `@tanstack/solid-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n comments: true,\n exportFromIndex: false,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/svelte-query',\n output: '@tanstack/svelte-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for `@tanstack/svelte-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../../types';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: handlerLegacy,\n comments: true,\n exportFromIndex: false,\n infiniteQueryOptions: true,\n mutationOptions: true,\n name: '@tanstack/vue-query',\n output: '@tanstack/vue-query',\n queryOptions: true,\n};\n\n/**\n * Type helper for `@tanstack/vue-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type ts from 'typescript';\n\nimport { compiler, type Property } from '../../compiler';\nimport { operationResponsesMap } from '../../ir/operation';\nimport { hasParameterGroupObjectRequired } from '../../ir/parameter';\nimport type { IR } from '../../ir/types';\nimport { typesId } from '../@hey-api/typescript/ref';\nimport { operationIrRef } from '../shared/utils/ref';\nimport type { Plugin } from '../types';\nimport type { Config } from './types';\n\nconst fastifyId = 'fastify';\n\nconst operationToRouteHandler = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}): Property | undefined => {\n const file = context.file({ id: fastifyId })!;\n const fileTypes = context.file({ id: typesId })!;\n\n const properties: Array<Property> = [];\n\n const identifierData = fileTypes.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'data',\n }),\n namespace: 'type',\n });\n if (identifierData.name) {\n if (operation.body) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: operation.body.required,\n name: 'Body',\n type: `${identifierData.name}['body']`,\n });\n }\n\n if (operation.parameters) {\n if (operation.parameters.header) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.header,\n ),\n name: 'Headers',\n type: `${identifierData.name}['headers']`,\n });\n }\n\n if (operation.parameters.path) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.path,\n ),\n name: 'Params',\n type: `${identifierData.name}['path']`,\n });\n }\n\n if (operation.parameters.query) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.query,\n ),\n name: 'Querystring',\n type: `${identifierData.name}['query']`,\n });\n }\n }\n }\n\n const { errors, responses } = operationResponsesMap(operation);\n\n let errorsTypeReference: ts.TypeReferenceNode | undefined = undefined;\n const identifierErrors = fileTypes.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'errors',\n }),\n namespace: 'type',\n });\n if (identifierErrors.name && errors && errors.properties) {\n const keys = Object.keys(errors.properties);\n if (keys.length) {\n const hasDefaultResponse = keys.includes('default');\n if (!hasDefaultResponse) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierErrors.name,\n });\n errorsTypeReference = compiler.typeReferenceNode({\n typeName: identifierErrors.name,\n });\n } else if (keys.length > 1) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierErrors.name,\n });\n const errorsType = compiler.typeReferenceNode({\n typeName: identifierErrors.name,\n });\n const defaultType = compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: 'default' }),\n });\n errorsTypeReference = compiler.typeReferenceNode({\n typeArguments: [errorsType, defaultType],\n typeName: 'Omit',\n });\n }\n }\n }\n\n let responsesTypeReference: ts.TypeReferenceNode | undefined = undefined;\n const identifierResponses = fileTypes.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'responses',\n }),\n namespace: 'type',\n });\n if (identifierResponses.name && responses && responses.properties) {\n const keys = Object.keys(responses.properties);\n if (keys.length) {\n const hasDefaultResponse = keys.includes('default');\n if (!hasDefaultResponse) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierResponses.name,\n });\n responsesTypeReference = compiler.typeReferenceNode({\n typeName: identifierResponses.name,\n });\n } else if (keys.length > 1) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierResponses.name,\n });\n const responsesType = compiler.typeReferenceNode({\n typeName: identifierResponses.name,\n });\n const defaultType = compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: 'default' }),\n });\n responsesTypeReference = compiler.typeReferenceNode({\n typeArguments: [responsesType, defaultType],\n typeName: 'Omit',\n });\n }\n }\n }\n\n const replyTypes = [errorsTypeReference, responsesTypeReference].filter(\n Boolean,\n );\n if (replyTypes.length) {\n properties.push({\n name: 'Reply',\n type: compiler.typeIntersectionNode({\n types: replyTypes,\n }),\n });\n }\n\n if (!properties.length) {\n return;\n }\n\n const routeHandler: Property = {\n name: operation.id,\n type: compiler.typeNode('RouteHandler', [\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: false,\n }),\n ]),\n };\n return routeHandler;\n};\n\nexport const handler: Plugin.Handler<Config> = ({ context, plugin }) => {\n const file = context.createFile({\n exportFromIndex: plugin.exportFromIndex,\n id: fastifyId,\n path: plugin.output,\n });\n\n const routeHandlers: Array<Property> = [];\n\n context.subscribe('operation', ({ operation }) => {\n const routeHandler = operationToRouteHandler({ context, operation });\n if (routeHandler) {\n routeHandlers.push(routeHandler);\n }\n });\n\n context.subscribe('after', () => {\n const identifier = file.identifier({\n $ref: 'RouteHandlers',\n create: true,\n namespace: 'type',\n });\n\n if (!identifier.name) {\n return;\n }\n\n if (routeHandlers.length) {\n file.import({\n asType: true,\n module: 'fastify',\n name: 'RouteHandler',\n });\n }\n\n file.add(\n compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name,\n type: compiler.typeInterfaceNode({\n properties: routeHandlers,\n useLegacyResolution: false,\n }),\n }),\n );\n });\n};\n","import type { Plugin } from '../types';\nimport { handler } from './plugin';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _dependencies: ['@hey-api/typescript'],\n _handler: handler,\n _handlerLegacy: () => {},\n exportFromIndex: false,\n name: 'fastify',\n output: 'fastify',\n};\n\n/**\n * Type helper for `fastify` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import type { Plugin } from '../types';\nimport { handler } from './plugin';\nimport type { Config } from './types';\n\nexport const defaultConfig: Plugin.Config<Config> = {\n _handler: handler,\n _handlerLegacy: () => {},\n _tags: ['validator'],\n exportFromIndex: false,\n name: 'zod',\n output: 'zod',\n};\n\n/**\n * Type helper for Zod plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig: Plugin.DefineConfig<Config> = (config) => ({\n ...defaultConfig,\n ...config,\n});\n","import {\n type Config as HeyApiClientAxios,\n defaultConfig as heyApiClientAxios,\n} from './@hey-api/client-axios';\nimport {\n type Config as HeyApiClientFetch,\n defaultConfig as heyApiClientFetch,\n} from './@hey-api/client-fetch';\nimport {\n type Config as HeyApiClientNext,\n defaultConfig as heyApiClientNext,\n} from './@hey-api/client-next';\nimport {\n type Config as HeyApiClientNuxt,\n defaultConfig as heyApiClientNuxt,\n} from './@hey-api/client-nuxt';\nimport {\n type Config as HeyApiLegacyAngular,\n defaultConfig as heyApiLegacyAngular,\n} from './@hey-api/legacy-angular';\nimport {\n type Config as HeyApiLegacyAxios,\n defaultConfig as heyApiLegacyAxios,\n} from './@hey-api/legacy-axios';\nimport {\n type Config as HeyApiLegacyFetch,\n defaultConfig as heyApiLegacyFetch,\n} from './@hey-api/legacy-fetch';\nimport {\n type Config as HeyApiLegacyNode,\n defaultConfig as heyApiLegacyNode,\n} from './@hey-api/legacy-node';\nimport {\n type Config as HeyApiLegacyXhr,\n defaultConfig as heyApiLegacyXhr,\n} from './@hey-api/legacy-xhr';\nimport {\n type Config as HeyApiSchemas,\n defaultConfig as heyApiSchemas,\n} from './@hey-api/schemas';\nimport {\n type Config as HeyApiSdk,\n defaultConfig as heyApiSdk,\n} from './@hey-api/sdk';\nimport {\n type Config as HeyApiTransformers,\n defaultConfig as heyApiTransformers,\n} from './@hey-api/transformers';\nimport {\n type Config as HeyApiTypeScript,\n defaultConfig as heyApiTypeScript,\n} from './@hey-api/typescript';\nimport {\n type Config as TanStackAngularQueryExperimental,\n defaultConfig as tanStackAngularQueryExperimental,\n} from './@tanstack/angular-query-experimental';\nimport {\n type Config as TanStackReactQuery,\n defaultConfig as tanStackReactQuery,\n} from './@tanstack/react-query';\nimport {\n type Config as TanStackSolidQuery,\n defaultConfig as tanStackSolidQuery,\n} from './@tanstack/solid-query';\nimport {\n type Config as TanStackSvelteQuery,\n defaultConfig as tanStackSvelteQuery,\n} from './@tanstack/svelte-query';\nimport {\n type Config as TanStackVueQuery,\n defaultConfig as tanStackVueQuery,\n} from './@tanstack/vue-query';\nimport { type Config as Fastify, defaultConfig as fastify } from './fastify';\nimport type { DefaultPluginConfigs, Plugin } from './types';\nimport { type Config as Zod, defaultConfig as zod } from './zod';\n\n/**\n * User-facing plugin types.\n */\nexport type UserPlugins =\n | Plugin.UserConfig<HeyApiClientAxios>\n | Plugin.UserConfig<HeyApiClientFetch>\n | Plugin.UserConfig<HeyApiClientNext>\n | Plugin.UserConfig<HeyApiClientNuxt>\n | Plugin.UserConfig<HeyApiLegacyAngular>\n | Plugin.UserConfig<HeyApiLegacyAxios>\n | Plugin.UserConfig<HeyApiLegacyFetch>\n | Plugin.UserConfig<HeyApiLegacyNode>\n | Plugin.UserConfig<HeyApiLegacyXhr>\n | Plugin.UserConfig<HeyApiSchemas>\n | Plugin.UserConfig<HeyApiSdk>\n | Plugin.UserConfig<HeyApiTransformers>\n | Plugin.UserConfig<HeyApiTypeScript>\n | Plugin.UserConfig<TanStackAngularQueryExperimental>\n | Plugin.UserConfig<TanStackReactQuery>\n | Plugin.UserConfig<TanStackSolidQuery>\n | Plugin.UserConfig<TanStackSvelteQuery>\n | Plugin.UserConfig<TanStackVueQuery>\n | Plugin.UserConfig<Fastify>\n | Plugin.UserConfig<Zod>;\n\n/**\n * Internal plugin types.\n */\nexport type ClientPlugins =\n | Plugin.Config<HeyApiClientAxios>\n | Plugin.Config<HeyApiClientFetch>\n | Plugin.Config<HeyApiClientNext>\n | Plugin.Config<HeyApiClientNuxt>\n | Plugin.Config<HeyApiLegacyAngular>\n | Plugin.Config<HeyApiLegacyAxios>\n | Plugin.Config<HeyApiLegacyFetch>\n | Plugin.Config<HeyApiLegacyNode>\n | Plugin.Config<HeyApiLegacyXhr>\n | Plugin.Config<HeyApiSchemas>\n | Plugin.Config<HeyApiSdk>\n | Plugin.Config<HeyApiTransformers>\n | Plugin.Config<HeyApiTypeScript>\n | Plugin.Config<TanStackAngularQueryExperimental>\n | Plugin.Config<TanStackReactQuery>\n | Plugin.Config<TanStackSolidQuery>\n | Plugin.Config<TanStackSvelteQuery>\n | Plugin.Config<TanStackVueQuery>\n | Plugin.Config<Fastify>\n | Plugin.Config<Zod>;\n\nexport const defaultPluginConfigs: DefaultPluginConfigs<ClientPlugins> = {\n '@hey-api/client-axios': heyApiClientAxios,\n '@hey-api/client-fetch': heyApiClientFetch,\n '@hey-api/client-next': heyApiClientNext,\n '@hey-api/client-nuxt': heyApiClientNuxt,\n '@hey-api/schemas': heyApiSchemas,\n '@hey-api/sdk': heyApiSdk,\n '@hey-api/transformers': heyApiTransformers,\n '@hey-api/typescript': heyApiTypeScript,\n '@tanstack/angular-query-experimental': tanStackAngularQueryExperimental,\n '@tanstack/react-query': tanStackReactQuery,\n '@tanstack/solid-query': tanStackSolidQuery,\n '@tanstack/svelte-query': tanStackSvelteQuery,\n '@tanstack/vue-query': tanStackVueQuery,\n fastify,\n 'legacy/angular': heyApiLegacyAngular,\n 'legacy/axios': heyApiLegacyAxios,\n 'legacy/fetch': heyApiLegacyFetch,\n 'legacy/node': heyApiLegacyNode,\n 'legacy/xhr': heyApiLegacyXhr,\n zod,\n};\n","import path from 'node:path';\n\nimport { loadConfig } from 'c12';\n\nimport { getLogs } from './getLogs';\nimport type { ClientPlugins, UserPlugins } from './plugins';\nimport { defaultPluginConfigs } from './plugins';\nimport type {\n AnyPluginName,\n DefaultPluginConfigs,\n PluginContext,\n PluginNames,\n} from './plugins/types';\nimport type { Config, UserConfig } from './types/config';\nimport { isLegacyClient, setConfig } from './utils/config';\n\n/**\n * Default plugins used to generate artifacts if plugins aren't specified.\n */\nexport const defaultPlugins = [\n '@hey-api/typescript',\n '@hey-api/sdk',\n] as const satisfies ReadonlyArray<UserPlugins['name']>;\n\nconst getInput = (userConfig: UserConfig): Config['input'] => {\n let input: Config['input'] = {\n path: '',\n };\n if (typeof userConfig.input === 'string') {\n input.path = userConfig.input;\n } else if (\n userConfig.input &&\n (userConfig.input.path || userConfig.input.organization)\n ) {\n input = {\n ...input,\n path: 'https://get.heyapi.dev',\n ...userConfig.input,\n };\n } else {\n input = {\n ...input,\n path: userConfig.input as Record<string, unknown>,\n };\n }\n return input;\n};\n\nconst getPluginsConfig = ({\n pluginConfigs,\n userPlugins,\n userPluginsConfig,\n}: {\n pluginConfigs: DefaultPluginConfigs<ClientPlugins>;\n userPlugins: ReadonlyArray<AnyPluginName>;\n userPluginsConfig: Config['plugins'];\n}): Pick<Config, 'plugins' | 'pluginOrder'> => {\n const circularReferenceTracker = new Set<AnyPluginName>();\n const pluginOrder = new Set<AnyPluginName>();\n const plugins: Config['plugins'] = {};\n\n const dfs = (name: AnyPluginName) => {\n if (circularReferenceTracker.has(name)) {\n throw new Error(`Circular reference detected at '${name}'`);\n }\n\n if (!pluginOrder.has(name)) {\n circularReferenceTracker.add(name);\n\n const pluginConfig = pluginConfigs[name as PluginNames];\n if (!pluginConfig) {\n throw new Error(\n `🚫 unknown plugin dependency \"${name}\" - do you need to register a custom plugin with this name?`,\n );\n }\n\n const defaultOptions = defaultPluginConfigs[name as PluginNames];\n const userOptions = userPluginsConfig[name as PluginNames];\n if (userOptions && defaultOptions) {\n const nativePluginOption = Object.keys(userOptions).find((key) =>\n key.startsWith('_'),\n );\n if (nativePluginOption) {\n throw new Error(\n `🚫 cannot register plugin \"${name}\" - attempting to override a native plugin option \"${nativePluginOption}\"`,\n );\n }\n }\n\n const config = {\n _dependencies: [],\n ...defaultOptions,\n ...userOptions,\n };\n\n if (config._infer) {\n const context: PluginContext = {\n ensureDependency: (dependency) => {\n if (\n typeof dependency === 'string' &&\n !config._dependencies.includes(dependency)\n ) {\n config._dependencies = [...config._dependencies, dependency];\n }\n },\n pluginByTag: (tag, errorMessage) => {\n for (const userPlugin of userPlugins) {\n const defaultConfig =\n defaultPluginConfigs[userPlugin as PluginNames] ||\n pluginConfigs[userPlugin as PluginNames];\n if (\n defaultConfig &&\n defaultConfig._tags?.includes(tag) &&\n userPlugin !== name\n ) {\n return userPlugin;\n }\n }\n\n throw new Error(\n errorMessage ||\n `🚫 missing plugin - no plugin with tag \"${tag}\" found`,\n );\n },\n };\n config._infer(config, context);\n }\n\n for (const dependency of config._dependencies) {\n dfs(dependency);\n }\n\n circularReferenceTracker.delete(name);\n pluginOrder.add(name);\n\n // @ts-expect-error\n plugins[name] = config;\n }\n };\n\n for (const name of userPlugins) {\n dfs(name);\n }\n\n return {\n pluginOrder: Array.from(pluginOrder) as ReadonlyArray<PluginNames>,\n plugins,\n };\n};\n\nconst getOutput = (userConfig: UserConfig): Config['output'] => {\n let output: Config['output'] = {\n clean: true,\n format: false,\n indexFile: true,\n lint: false,\n path: '',\n tsConfigPath: '',\n };\n if (typeof userConfig.output === 'string') {\n output.path = userConfig.output;\n } else {\n output = {\n ...output,\n ...userConfig.output,\n };\n }\n return output;\n};\n\nconst isPluginClient = (plugin: Required<UserConfig>['plugins'][number]) => {\n if (typeof plugin === 'string') {\n return plugin.startsWith('@hey-api/client') || plugin.startsWith('legacy/');\n }\n\n return (\n plugin.name.startsWith('@hey-api/client') ||\n plugin.name.startsWith('legacy/') ||\n // @ts-expect-error\n (plugin._tags && plugin._tags.includes('client'))\n );\n};\n\nconst getPlugins = (\n userConfig: UserConfig,\n): Pick<Config, 'plugins' | 'pluginOrder'> => {\n const userPluginsConfig: Config['plugins'] = {};\n\n let definedPlugins: UserConfig['plugins'] = defaultPlugins;\n if (userConfig.plugins) {\n userConfig.plugins = userConfig.plugins.filter(\n (plugin) =>\n (typeof plugin === 'string' && plugin) ||\n (typeof plugin !== 'string' && plugin.name),\n );\n if (\n userConfig.plugins.length === 1 &&\n isPluginClient(userConfig.plugins[0]!)\n ) {\n definedPlugins = [...defaultPlugins, ...userConfig.plugins];\n } else {\n definedPlugins = userConfig.plugins;\n }\n }\n\n const userPlugins = definedPlugins\n .map((plugin) => {\n if (typeof plugin === 'string') {\n return plugin;\n }\n\n if (plugin.name) {\n // @ts-expect-error\n userPluginsConfig[plugin.name] = plugin;\n }\n\n return plugin.name;\n })\n .filter(Boolean);\n\n return getPluginsConfig({\n pluginConfigs: {\n ...userPluginsConfig,\n ...defaultPluginConfigs,\n },\n userPlugins,\n userPluginsConfig,\n });\n};\n\nconst getWatch = (\n userConfig: Pick<UserConfig, 'watch'> & Pick<Config, 'input'>,\n): Config['watch'] => {\n let watch: Config['watch'] = {\n enabled: false,\n interval: 1_000,\n timeout: 60_000,\n };\n // we cannot watch spec passed as an object\n if (typeof userConfig.input.path !== 'string') {\n return watch;\n }\n if (typeof userConfig.watch === 'boolean') {\n watch.enabled = userConfig.watch;\n } else if (typeof userConfig.watch === 'number') {\n watch.enabled = true;\n watch.interval = userConfig.watch;\n } else if (userConfig.watch) {\n watch = {\n ...watch,\n ...userConfig.watch,\n };\n }\n return watch;\n};\n\n/**\n * @internal\n */\nexport const initConfigs = async (\n userConfig: UserConfig | undefined,\n): Promise<Config[]> => {\n let configurationFile: string | undefined = undefined;\n if (userConfig?.configFile) {\n const parts = userConfig.configFile.split('.');\n configurationFile = parts.slice(0, parts.length - 1).join('.');\n }\n\n const { config: configFromFile } = await loadConfig<UserConfig>({\n configFile: configurationFile,\n name: 'openapi-ts',\n });\n\n const userConfigs: UserConfig[] = Array.isArray(userConfig)\n ? userConfig\n : Array.isArray(configFromFile)\n ? configFromFile.map((config) => ({\n ...config,\n ...userConfig,\n }))\n : [{ ...(configFromFile ?? {}), ...userConfig }];\n\n return userConfigs.map((userConfig) => {\n const {\n base,\n configFile = '',\n dryRun = false,\n experimentalParser = true,\n exportCore = true,\n name,\n request,\n useOptions = true,\n } = userConfig;\n\n const logs = getLogs(userConfig);\n\n if (logs.level === 'debug') {\n console.warn('userConfig:', userConfig);\n }\n\n const input = getInput(userConfig);\n const output = getOutput(userConfig);\n\n if (!input.path) {\n throw new Error(\n '🚫 missing input - which OpenAPI specification should we use to generate your output?',\n );\n }\n\n if (!output.path) {\n throw new Error(\n '🚫 missing output - where should we generate your output?',\n );\n }\n\n if (!useOptions) {\n console.warn(\n '❗️ Deprecation warning: useOptions set to false. This setting will be removed in future versions. Please migrate useOptions to true https://heyapi.dev/openapi-ts/migrating.html#v0-27-38',\n );\n }\n\n output.path = path.resolve(process.cwd(), output.path);\n\n const config = setConfig({\n ...getPlugins(userConfig),\n base,\n configFile,\n dryRun,\n experimentalParser,\n exportCore: false,\n input,\n logs,\n name,\n output,\n request,\n useOptions,\n watch: getWatch({ ...userConfig, input }),\n });\n config.exportCore = isLegacyClient(config) ? exportCore : false;\n\n if (logs.level === 'debug') {\n console.warn('config:', config);\n }\n\n return config;\n });\n};\n"]}
|