@hey-api/openapi-ts 0.81.1 → 0.82.1
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 +6 -6
- package/dist/chunk-FBWTZXZ2.js +43 -0
- package/dist/chunk-FBWTZXZ2.js.map +1 -0
- package/dist/clients/core/serverSentEvents.ts +28 -1
- package/dist/clients/fetch/client.ts +34 -7
- package/dist/clients/fetch/types.ts +1 -1
- package/dist/clients/next/client.ts +39 -6
- package/dist/clients/nuxt/client.ts +1 -0
- package/dist/index.cjs +68 -68
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +675 -6
- package/dist/index.d.ts +675 -6
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/internal.cjs +13 -13
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +1 -1
- package/dist/{types.d-BGYcYtD8.d.cts → types.d-C6wYENRD.d.cts} +2940 -2406
- package/dist/{types.d-BGYcYtD8.d.ts → types.d-C6wYENRD.d.ts} +2940 -2406
- package/package.json +2 -2
- package/dist/chunk-A2YBSPFD.js +0 -43
- package/dist/chunk-A2YBSPFD.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generate/tsConfig.ts","../src/generate/utils.ts","../src/error.ts","../src/config/logs.ts","../src/config/utils/config.ts","../src/config/parser.ts","../src/plugins/shared/utils/config.ts","../src/utils/regexp.ts","../src/utils/escape.ts","../src/plugins/@hey-api/client-core/utils.ts","../src/utils/config.ts","../src/tsc/utils.ts","../src/tsc/types.ts","../src/tsc/module.ts","../src/tsc/classes.ts","../src/tsc/convert.ts","../src/tsc/return.ts","../src/tsc/transform.ts","../src/tsc/typedef.ts","../src/tsc/index.ts","../src/config/utils/package.ts","../src/openApi/shared/transforms/utils.ts","../src/openApi/shared/utils/identifier.ts","../src/utils/stringCase.ts","../src/generate/file/index.ts","../src/plugins/shared/utils/instance.ts","../src/utils/ref.ts","../src/ir/context.ts","../src/ir/parameter.ts","../src/ir/schema.ts","../src/openApi/shared/utils/schema.ts","../src/ir/utils.ts","../src/ir/operation.ts","../src/openApi/common/parser/sanitize.ts","../src/openApi/shared/utils/operation.ts","../src/openApi/shared/utils/filter.ts","../src/openApi/shared/graph/meta.ts","../src/openApi/shared/utils/name.ts","../src/openApi/shared/utils/schemaChildRelationships.ts","../src/openApi/shared/utils/transforms.ts","../src/openApi/shared/transforms/enums.ts","../src/openApi/shared/utils/graph.ts","../src/openApi/shared/transforms/readWrite.ts","../src/openApi/shared/transforms/index.ts","../src/openApi/shared/utils/parameter.ts","../src/openApi/shared/utils/validator.ts","../src/openApi/2.0.x/parser/filter.ts","../src/ir/mediaType.ts","../src/openApi/2.0.x/parser/mediaType.ts","../src/ir/pagination.ts","../src/openApi/shared/utils/discriminator.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/validate.ts","../src/openApi/2.0.x/parser/index.ts","../src/openApi/3.0.x/parser/filter.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/validate.ts","../src/openApi/3.0.x/parser/index.ts","../src/openApi/3.1.x/parser/filter.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/validate.ts","../src/openApi/3.1.x/parser/webhook.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/plugins/@hey-api/client-core/config.ts","../src/generate/client.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/sdk/constants.ts","../src/plugins/@hey-api/transformers/plugin.ts","../src/plugins/@hey-api/transformers/expressions.ts","../src/plugins/@hey-api/sdk/auth.ts","../src/plugins/@hey-api/sdk/validator.ts","../src/plugins/@hey-api/sdk/operation.ts","../src/plugins/shared/utils/operation.ts","../src/plugins/@angular/common/constants.ts","../src/plugins/@angular/common/httpRequests.ts","../src/plugins/@angular/common/httpResources.ts","../src/plugins/@angular/common/plugin.ts","../src/plugins/@angular/common/config.ts","../src/plugins/@hey-api/client-angular/config.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/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/shared/utils/case.ts","../src/plugins/shared/utils/schema.ts","../src/plugins/@hey-api/typescript/clientOptions.ts","../src/plugins/@hey-api/typescript/operation.ts","../src/plugins/@hey-api/typescript/webhook.ts","../src/plugins/@hey-api/typescript/webhooks.ts","../src/plugins/@hey-api/typescript/plugin.ts","../src/plugins/@hey-api/typescript/api.ts","../src/plugins/@hey-api/typescript/config.ts","../src/plugins/@tanstack/query-core/meta.ts","../src/plugins/@tanstack/query-core/useType.ts","../src/plugins/@tanstack/query-core/queryKey.ts","../src/plugins/@tanstack/query-core/infiniteQueryOptions.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/valibot/constants.ts","../src/plugins/valibot/api.ts","../src/plugins/valibot/number-helpers.ts","../src/plugins/valibot/operation.ts","../src/plugins/valibot/webhook.ts","../src/plugins/valibot/plugin.ts","../src/plugins/valibot/config.ts","../src/plugins/zod/constants.ts","../src/plugins/zod/api.ts","../src/plugins/zod/mini/plugin.ts","../src/plugins/zod/export.ts","../src/plugins/zod/shared/module.ts","../src/plugins/zod/shared/operation.ts","../src/plugins/zod/shared/webhook.ts","../src/plugins/zod/v3/plugin.ts","../src/plugins/zod/v4/plugin.ts","../src/plugins/zod/plugin.ts","../src/plugins/zod/config.ts","../src/plugins/config.ts","../src/config/plugins.ts","../src/utils/input/heyApi.ts","../src/utils/input/readme.ts","../src/utils/input/scalar.ts","../src/utils/input/index.ts","../src/config/input.ts","../src/config/merge.ts","../src/config/output.ts","../src/config/packages.ts","../src/config/init.ts","../src/plugins/@hey-api/client-fetch/bundle/utils.ts","../src/getSpec.ts"],"names":["__filename","fileURLToPath","__dirname","path","findPackageJson","dir","candidates","fs","file","packageJsonPath","findTsConfigPath","tsConfigPath","resolved","loadTsConfig","configPath","raw","ts","ensureDirSync","removeDirSync","relativeModulePath","moduleOutput","sourceOutput","outputParts","ConfigError","HeyApiError","args","error","event","name","pluginName","message","logCrashReport","logsDir","logName","fullDir","logPath","logContent","stack","openGitHubIssueWithCrashReport","body","search","packageJson","bugsUrl","url","open","printCrashReport","colors","shouldReportCrash","isInteractive","resolve","data","getLogs","userConfig","logs","isPlainObject","value","mergeResult","result","mapped","key","valueToObject","defaultValue","mappers","mapper","defaultPaginationKeywords","getParser","parser","enabled","mode","fields","definePluginConfig","defaultConfig","illegalStartCharactersRegExp","numberRegExp","reservedBrowserGlobalsRegExp","reservedJavaScriptGlobalsRegExp","reservedJavaScriptKeywordsRegExp","reservedNodeGlobalsRegExp","reservedTypeScriptKeywordsRegExp","validTypescriptIdentifierRegExp","escapeName","unescapeName","escapeComment","_l","w","EOL","clientId","getClientBaseUrlKey","config","client","getClientPlugin","plugin","_config","getConfig","setConfig","isLegacyClient","legacyNameFromConfig","printer","createSourceFile","sourceText","blankSourceFile","unescapeUnicode","_","hex","tsNodeToString","node","unescape","createIdentifier","text","createThis","createModifier","keyword","kind","syntaxKindKeyword","createPropertyDeclaration","initializer","modifier","type","ots","alias","asType","nameNode","aliasNode","hasBothQuotes","hasNewlines","hasUnescapedBackticks","isBacktickEscaped","createStringLiteral","isTsNode","isType","processCommentObject","commentObject","lines","line","jsdocTexts","index","jsdoc","cleanedJsdoc","addLeadingComments","comments","isObjectStyle","comment","commentObjects","createTypeNode","base","createTypeReferenceNode","arg","createPropertyAccessChain","expression","createPropertyAccessExpression","isOptional","nodeExpression","nodeName","createNull","toExpression","identifiers","isValueAccess","shorthand","createArrayLiteralExpression","createObjectType","parts","toParameterDeclarations","parameters","parameter","createParameterDeclaration","param","modifiers","createKeywordTypeNode","toTypeParameters","types","createTypeParameterDeclaration","createTypeOperatorNode","operator","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","createPropertyAssignment","createEnumDeclaration","enumMemberComments","enumMember","createEnumMember","createNamespaceDeclaration","createIndexedAccessTypeNode","indexType","objectType","createGetAccessorDeclaration","isSingleQuote","createConditionalExpression","condition","whenFalse","whenTrue","createTypeOfExpression","createTypeAliasDeclaration","exportType","typeArguments","typeName","createTypeParenthesizedNode","required","createNewExpression","argumentsArray","createForOfStatement","awaitModifier","statement","createAssignment","left","right","createRegularExpressionLiteral","flags","textWithSlashes","createTemplateLiteralType","spans","spanText","item","span","createExportAllDeclaration","module","createCallExpression","functionName","createNamedExportDeclarations","exports","exportedTypes","hasNonTypeExport","exportClause","moduleSpecifier","createConstVariable","assertion","destructure","exportConst","declaration","createNamedImportDeclarations","imports","importedTypes","hasNonTypeImport","namespaceImport","namedBindings","importClause","createConstructorDeclaration","accessLevel","createMethodDeclaration","isStatic","createClassDeclaration","decorator","exportClass","extendedClasses","nodes","heritageClauses","extendedClass","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","indexKey","indexProperty","useLegacyResolution","property","signature","isIndexMapped","indexSignature","createTypeUnionNode","createTypeIntersectionNode","createTypeTupleNode","createTypeRecordNode","keys","values","keyNode","valueNode","createTypeArrayNode","tsc","compiler","packageFactory","dependencies","version","nameOrVersion","range","optionsOrLoose","hasName","getUniqueComponentName","components","extraComponents","isPathRootSchema","specToSchemasPointerNamespace","spec","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","GeneratedFile","exportFromIndex","header","id","$ref","namespace","ref","parseRef","refValue","ensureUniqueIdentifier","importedItem","moduleMap","splitNameAndExtension","context","filePath","configFileParts","cfgParts","thisPathParts","filePathParts","relativePath","part","pathArray","relativePathToFile","relativeFolder","fileName","options","extension","tsConfig","output","shouldAppendJs","importsStringArray","_module","resolvedModule","finalName","nextNode","propIndex","prop","transformName","transformer","count","create","nameTransformer","nameWithCasingAndTransformer","lowercaseName","nameValue","PluginInstance","props","events","callback","eventSet","server","pathItem","_method","method","webhook","originalError","jsonPointerSlash","jsonPointerTilde","refToName","jsonPointerToPath","encodeJsonPointerSegment","segment","pointer","clean","normalizeJsonPointer","normalized","pathToJsonPointer","segments","resolveRef","current","IRContext","logger","outputDir","createdFile","schema","dereferenced","instance","getPaginationSchema","hasParameterGroupObjectRequired","parameterGroup","hasParametersObjectRequired","parameterWithPagination","deduplicateSchema","detectFormat","uniqueItems","typeIds","constant","format","typeId","liftedSchema","deepClone","mergeSchemaAccessScopes","a","b","mergedScopes","scope","assignItems","items","addItemsToSchema","logicalOperator","mutateSchemaOneItem","hasOperationDataRequired","operation","createOperationKey","operationPagination","resolvedSchema","paginationProp","statusCodeToGroup","statusCode","operationResponsesMap","errors","responses","defaultResponse","response","inferred","description","errorKeys","errorUnion","responseKeys","responseUnion","ensureValidTypeScriptJavaScriptIdentifier","replaced","sanitizeNamespaceIdentifier","sanitizeOperationParameterName","withoutBrackets","httpMethods","operationToId","state","targetCase","pathWithoutPlaceholders","namespaceNeedle","addNamespace","removeNamespace","stringToNamespace","createFiltersSetAndRegExps","filters","collectFiltersSetFromRegExpsOpenApiV2","excludeOperations","excludeSchemas","includeOperations","includeSchemas","entry","collectFiltersSetFromRegExpsOpenApiV3","excludeParameters","excludeRequestBodies","excludeResponses","includeParameters","includeRequestBodies","includeResponses","collectFiltersSetFromRegExps","createFilters","eventCreateFilters","hasFilters","collectOperations","requestBodies","resourceMetadata","schemas","finalSet","tag","dependency","collectParameters","collectRequestBodies","collectResponses","collectSchemas","dropExcludedParameters","excludedKey","dropExcludedRequestBodies","dropExcludedResponses","dropExcludedSchemas","dropOrphans","operationDependencies","collectOperationDependencies","operations","createFilteredDependencies","eventCreateFilteredDependencies","buildResourceMetadata","graph","eventBuildResourceMetadata","getDependencies","nodeDeps","dep","nodeInfo","operationPath","operationKey","buildName","childSchemaRelationships","getSchemasObject","hasComponentsSchemasObject","hasDefinitionsObject","getEnumSignature","walkSchemas","parent","visitor","k","v","inlineMode","schemasObj","schemasPointerNamespace","rootEnums","replaceEnumRefs","rootMode","rootEnumSignatures","inlineEnums","signatureToName","signatureToSchema","enumsTransform","annotateChildScopes","parentInfo","collectAllDependenciesForPointer","cache","visited","cached","allDependencies","depPointer","transitiveDependencies","children","childPointer","propagateScopes","worklist","notifyAllDependents","reverseDependencies","dependentPointer","combinatorChildMatch","combinatorParentPointer","propagateChildScopes","childInfo","propagateScopesToNode","depNode","fromNodeInfo","toNodeInfo","changed","seedLocalScopes","buildGraph","root","eventBuildGraph","walk","parentPointer","deprecated","tags","refPointer","childKey","pointerFrom","pointers","pointerTo","schemaKeys","getComponentContext","captureOriginalSchemas","originals","insertSplitSchemasIntoSpec","split","pruneSchemaByScope","objMap","removeOriginalSplitSchemas","originalSchemas","originalPointer","splitSchemas","existingNames","schemasNamespaceSegments","pointerToSchema","readSchema","readBase","readName","readPointer","writeSchema","writeBase","writeName","writePointer","updateRefsInSpec","currentPointer","inSchema","nextPointer","nextContext","mapping","compContext","headerKey","map","readWriteTransform","transformOpenApiSpec","eventTransformOpenApiSpec","mergeParametersObjects","source","target","isSimpleKey","formatPath","i","formatValidatorIssue","issue","pathStr","level","highlightedMessage","code","shouldPrint","handleValidatorResult","filterSpec","preserveOrder","eventFilterSpec","filtered","fileLikeRegExp","jsonMimeRegExp","multipartFormDataMimeRegExp","textMimeRegExp","xWwwFormUrlEncodedMimeRegExp","octetStreamMimeRegExp","isMediaTypeFileLike","mediaType","mediaTypeToIrMediaType","contentToSchema","content","mediaTypeObjects","mimeTypes","objects","getPaginationKeywordsRegExp","pagination","pattern","discriminatorValues","shouldUseRefAsValue","getSchemaType","parseSchemaJsDoc","irSchema","parseSchemaMeta","parseArray","schemaItems","irItemsSchema","schemaToIrSchema","ofArray","parseBoolean","parseNumber","parseObject","schemaProperties","irPropertySchema","irAdditionalPropertiesSchema","parseString","initIrSchema","parseAllOf","schemaType","compositionSchemas","compositionSchema","schemaState","irCompositionSchema","valueSchemas","irDiscriminatorSchema","irRefSchema","irObjectSchema","parseOneType","requiredProperty","finalCompositionSchema","nestedItems","parseEnum","enumValue","typeOfEnumValue","enumType","irTypeSchema","refSchema","parseNullableType","typeIrSchema","parseType","parseUnknown","parseSchema","isPaginationType","paginationField","finalSchema","allOf","parseOperationJsDoc","irOperation","initIrOperation","operationToIrOperation","securitySchemesMap","isRequestBodyRequired","requestBodyObject","requestBodyObjectRequired","requestBodyParameter","requestBody","contents","responseObject","securitySchemeObjects","securityRequirementObject","securitySchemeObject","irSecuritySchemeObject","parsePathOperation","defaultExplode","collectionFormat","defaultStyle","_in","parametersArrayToObject","parametersObject","parameterOrReference","parameterToIrParameter","style","irParameter","parseUrlRegExp","parseUrl","errorResponse","host","protocol","parseServers","schemes","servers","scheme","validateOpenApiSpec","eventValidate","issues","operationIds","parseV2_0_X","sets","finalPathItem","commonOperation","operationArgs","o","parseAnyOf","parseOneOf","defaultAllowReserved","explode","parseParameter","requestBodyToIrRequestBody","irRequestBody","parseRequestBody","parseV3_0_X","securityOrReference","requestBodyOrReference","getSchemaTypes","irItemSchema","parseNull","schemaTypes","parseManyTypes","nonNullCompositionSchemas","parseOperationObject","parsed","parseWebhookOperation","parseWebhooks","finalWebhook","parseV3_1_X","allowedServiceMethods","getServiceVersion","refParametersPartial","refSchemasPartial","transformClassName","customName","transformTypeName","cleanAndTransformTypeName","transformed","inferType","definition","definitionTypes","isDefinitionTypeNullable","getDefinitionTypes","isDefinitionNullable","stripNamespace","getMappedType","hasSquareBracketsRegExp","getType","debug","joinedType","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","enumUnionType","enumerator","union","enumEntry","enumMeta","serialized","getParametersMeta","getSchemasMeta","isModelDate","typeReference","typeNode","typeArray","m","toType","typeEnum","typeDict","typeUnionOrIntersection","typeInterface","isLegacy","maybeRequired","transformTypeKeyName","setUniqueTypeName","unsetUniqueTypeName","getOperationResponseHeader","operationResponses","isOperationParameterRequired","parseResponseStatusCode","sorterByResponseStatusCode","isErrorStatusCode","isSuccessStatusCode","inferDefaultResponseTypes","addResponseType","$refs","errorKeywords","operationFilterFn","operationNameFn","operationId","urlWithoutPlaceholders","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","pathParameters","getServer","basePath","parse","inverseDictionary","m2","findOneOfParentDiscriminator","mapPropertyValue","discriminator","getAdditionalPropertiesModel","ap","apModel","apType","additionalPropertiesType","propertyValues","findModelComposition","def","foundComposition","propertiesProperty","initialValues","parentDefinition","inferredType","acc","arrayItemsDefinition","definitionConst","modelConst","getParameterSchema","mediaTypeObject","BASIC_MEDIA_TYPES","getContent","_openApi","basicMediaTypeWithSchema","cleanMediaType","firstMediaTypeWithSchema","getOperationRequestBody","mergeParameters","opParams","globalParams","mergedParameters","pendingParameters","pendingParam","requestBodyDef","variables","variable","parseLegacy","parseOpenApiSpec","clientDefaultConfig","clientDefaultMeta","getClientSrcPath","pluginFilePathComponents","clientModulePath","clientSrcPath","outputPath","clientApi","copyRecursivePnP","src","dest","files","editFileContents","relativeImportSuffix","importPath","lastSlashIndex","renameAndEditFileContents","shouldRename","suffix","infix","renamedFilePath","generateClientBundle","legacy","coreOutputPath","coreDistPath","coreFiles","clientOutputPath","clientDistFolderName","clientDistPath","clientFiles","dirPath","clientModulePathComponents","__require","distFiles","typesId","resolveBaseUrlString","baseUrl","createClient","clientModule","createConfig","pluginTypeScript","fileTypeScript","clientOptions","createClientConfig","defaultValues","resolvedBaseUrl","createConfigParameters","createClientConfigType","configType","defaultClientOptions","defaultClientOptionsType","tType","typeCreateClientConfig","clientPluginHandler","nuxtTypeComposable","nuxtTypeDefault","nuxtTypeResponse","sdkId","bigIntExpressions","dataExpression","bigIntCallExpression","dateExpressions","identifierDate","operationTransformerIrRef","affix","schemaIrRef","schemaResponseTransformerRef","transformersId","dataVariableName","ensureStatements","isNodeReturnStatement","schemaResponseTransformerNodes","identifierData","processSchemaType","callExpression","mapCallbackStatements","stmt","propertyAccessExpression","propertyNodes","noNullableTypesInSchema","x","arrayNodes","identifierItem","t","handler","responseName","identifierResponseTransformer","responseTransformerNode","securitySchemeObjectToAuthObject","operationAuth","auth","authObject","createRequestValidator","pluginValidator","createResponseValidator","operationClassName","getOperationMethodName","operationClasses","classNames","className","methodName","classCandidates","methodCandidate","rootClasses","rootClass","finalClassName","operationOptionsType","throwOnError","isNuxtClient","dataImport","optionsName","responseImport","isRequiredOptions","typescriptState","getResponseType","contentType","cleanContent","operationStatements","opParameters","sdkOutput","errorImport","requestOptions","imported","requestValidator","identifierTransformer","hasServerSentEvents","responseTypeValue","responseValidator","hasParams","argName","field","parameterContentType","headersValue","responseType","errorType","heyApiClient","optionsClient","clientExpression","createOperationComment","isOperationOptionsRequired","REQUEST_APIS_SUFFIX","RESOURCE_APIS_SUFFIX","generateAngularClassRequests","requestClasses","generatedClasses","sdkPlugin","classes","currentClassName","parentClassName","parentClass","currentClass","requestMethodName","methodNode","generateAngularRequestMethod","generateClass","childClassName","childClass","requestClass","generateAngularFunctionRequests","generateAngularRequestFunction","generateRequestCallExpression","dataType","createHttpRequests","generateAngularClassServices","serviceClasses","resourceMethodName","generateAngularResourceMethod","serviceClass","generateAngularFunctionServices","generateAngularResourceFunction","generateResourceCallExpression","responseTypeName","useRequestClasses","requestFunctionCall","optionsCallExpression","firstEntry","rootClassName","requestClassName","methodAccess","requestFunctionName","requestImport","createHttpResources","asClass","defineConfig","schemasId","stripSchema","schemaToJsonSchemaDraft_04","_schema","schemaToJsonSchemaDraft_05","schemaToJsonSchema2020_12","schemaName","schemasV2_0_X","schemasV3_0_X","schemasV3_1_X","ensureValidSchemaOutput","parentKey","toSchemaName","validName","handlerLegacy","addSchema","generateImport","onImport","setUniqueTypeNameArgs","created","modelResponseTransformerTypeName","operationDataTypeName","operationErrorTypeName","operationResponseTransformerTypeName","operationResponseTypeName","operationOptionsLegacyParserType","importedType","toOperationParamType","isRequired","getDefaultPrintable","p","typePath","toOperationReturnType","toOperationComment","params","toRequestOptions","onClientImport","responseTransformerName","toObj","prev","curr","errorResponses","serviceFunctionIdentifier","handleIllegal","toOperationStatements","processService","onNode","service","clientPlugin","throwOnErrorTypeGeneric","compileFunctionParams","_members","member","createTypeOptions","tDataShape","clientType","typeOptions","createClientClassNodes","clientAssignmentStatement","generateClassSdk","isAngularClient","sdkClasses","clientClassNodes","functionNode","sdkClass","generateFlatSdk","treeName","emptyModel","generateEnum","leadingComment","generateType","onCreated","processComposition","enumDeclarations","processType","processScopedEnum","processEnum","processModel","processServiceTypes","pathsMap","pathMap","methodMap","bodyParameters","bodyParameter","headerParameters","queryParameters","operationProperties","methodParameters","operationName","reqKey","reqResParameters","resKey","isVoidResponse","getRefModels","refModel","ensureModelResponseTransformerExists","modelName","generateResponseTransformer","processArray","refModels","nameModelResponseTransformer","processProperty","onRemoveNode","nonVoidResponses","nameCreated","fieldName","createSchemaComment","stringType","serverToBaseUrlType","createClientOptions","irParametersToIrSchema","operationToDataType","dataRequired","schemaToType","operationToType","errorNodeInfo","responseNodeInfo","webhookToType","createWebhooks","webhookNames","schemaToEnumObject","typeofItems","typeOfItemConst","arrayTypeToIdentifier","onRef","itemTypes","booleanTypeToIdentifier","enumTypeToIdentifier","numberTypeToIdentifier","objectTypeToIdentifier","indexPropertyItems","hasOptionalProperties","propertyType","stringTypeToIdentifier","tupleTypeToIdentifier","schemaTypeToIdentifier","transformersPlugin","typeTransformer","enumObject","objectNode","typeofType","keyofType","enumNode","handleComponent","clientOptionsName","clientOptionsNodeInfo","webhooksName","webhooksNodeInfo","webhookName","getId","api","handleMeta","metaConfig","customMeta","useTypeData","pluginSdk","useTypeError","typeError","axiosError","useTypeResponse","createQueryKeyFn","queryKeyName","TOptionsType","infiniteIdentifier","optionsIdentifier","createQueryKeyFunction","identifierCreateQueryKey","baseUrlKey","fn","createQueryKeyLiteral","isInfinite","tagsExpression","createQueryKeyType","queryKeyType","queryKeyStatement","typeQueryKey","typeData","createInfiniteParamsFn","infiniteQueryOptionsFn","createInfiniteParamsFunction","identifierCreateInfiniteParams","createInfiniteQueryOptions","queryFn","typeResponse","typePageObjectParam","typePageParam","identifierInfiniteQueryKey","awaitSdkExpression","identifierInfiniteQueryOptions","infiniteQueryOptionsObj","mutationOptionsFn","createMutationOptions","mutationsType","mutationType","mutationOptionsObj","queryOptionsFn","createQueryOptions","identifierQueryKey","identifierQueryOptions","queryOptionsObj","toInfiniteQueryOptionsName","toMutationOptionsName","toQueryOptionsName","toQueryKeyName","getPaginationIn","createTypeData","typesModulePath","nameTypeData","createTypeError","nameTypeError","createTypeResponse","nameTypeResponse","typeInfiniteData","hasCreateInfiniteParamsFunction","hasCreateQueryKeyParamsFunction","hasInfiniteQueries","hasMutations","hasQueries","processedOperations","hasUsedQueryFn","paginationParameter","fastifyId","operationToRouteHandler","dataName","errorsTypeReference","errorName","errorsType","responsesTypeReference","responsesType","replyTypes","routeHandlers","routeHandler","valibotId","requests","schemaIdentifier","dataParameterName","INTEGER_FORMATS","isIntegerFormat","needsBigIntForFormat","numberParameter","isBigInt","operationToValibotSchema","schemaData","schemaToValibotSchema","identifierResponse","webhookToValibotSchema","pipesToExpression","pipes","arrayTypeToValibotSchema","itemExpressions","schemaPipes","unknownTypeToValibotSchema","booleanTypeToValibotSchema","enumTypeToValibotSchema","enumMembers","resultExpression","neverTypeToValibotSchema","_props","nullTypeToValibotSchema","numberTypeToValibotSchema","isInteger","formatInfo","constValue","literalValue","cleanString","bigintString","unionExpression","minValue","maxValue","minErrorMessage","maxErrorMessage","minExpression","maxExpression","objectTypeToValibotSchema","stringTypeToValibotSchema","tupleTypeToValibotSchema","tupleElements","undefinedTypeToValibotSchema","voidTypeToValibotSchema","schemaTypeToValibotSchema","_identifier","optional","anyType","isCircularReference","identifierRef","refIdentifier","lazyExpression","valibotSchema","intersectExpression","readonlyExpression","callParameter","zodId","exportZodSchema","schemaId","typeInferId","zodSchema","inferNode","nodeIdentifier","getZodModule","operationToZodSchema","getZodSchema","webhookToZodSchema","arrayTypeToZodSchema","unknownTypeToZodSchema","schemaToZodSchema","checks","booleanTypeToZodSchema","enumTypeToZodSchema","neverTypeToZodSchema","nullTypeToZodSchema","numberTypeToZodSchema","objectTypeToZodSchema","propertySchema","stringTypeToZodSchema","dateTimeOptions","tupleTypeToZodSchema","itemSchema","undefinedTypeToZodSchema","voidTypeToZodSchema","schemaTypeToZodSchema","isSelfReference","zSchema","firstSchema","_state","baseName","handlerMini","arrayExpression","enumExpression","numberExpression","propertyExpression","stringExpression","handlerV3","handlerV4","packageName","inferCompatibleVersion","ensureCompatibleVersion","compatibilityVersion","compatibleVersion","defaultPluginConfigs","defaultPlugins","getPluginsConfig","userPlugins","userPluginsConfig","circularReferenceTracker","pluginOrder","plugins","dfs","defaultPlugin","userPlugin","errorMessage","isPluginClient","getPlugins","definedPlugins","registryRegExp","heyApiRegistryBaseUrl","getRegistryUrl","organization","project","queryParams","parseShorthand","input","inputToHeyApiPath","uuid","inputToReadmePath","inputToScalarPath","inputToApiRegistry","cleanParts","defaultWatch","getWatch","watch","getInput","mergeObjects","objA","objB","mergeConfigs","configA","configB","merged","getOutput","getProjectDependencies","configFilePath","currentDir","parentDir","initConfigs","configurationFile","configFromFile","loadedConfigFile","loadConfig","userConfigs","results","configFile","dryRun","experimentalParser","exportCore","interactive","request","useOptions","mergeHeaders","headers","mergedHeaders","iterator","getSpec","fetchOptions","inputPath","timeout","refParser","$RefParser","resolvedInput","getResolvedInput","arrayBuffer","hasChanged","sendRequest","eTag","lastModified"],"mappings":"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","file":"chunk-A2YBSPFD.js","sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport ts from 'typescript';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nexport const findPackageJson = (): unknown | undefined => {\n let dir = __dirname;\n while (dir !== path.dirname(dir)) {\n const files = fs.readdirSync(dir);\n const candidates = files.filter((file) => file === 'package.json');\n\n if (candidates[0]) {\n const packageJsonPath = path.join(dir, candidates[0]);\n return JSON.parse(\n fs.readFileSync(packageJsonPath, {\n encoding: 'utf8',\n }),\n );\n }\n\n dir = path.dirname(dir);\n }\n\n return;\n};\n\nexport const findTsConfigPath = (\n tsConfigPath?: 'off' | (string & {}),\n): string | null => {\n if (tsConfigPath === 'off') {\n return null;\n }\n\n if (tsConfigPath) {\n const resolved = path.isAbsolute(tsConfigPath)\n ? tsConfigPath\n : path.resolve(__dirname, tsConfigPath);\n return fs.existsSync(resolved) ? resolved : null;\n }\n\n let dir = __dirname;\n while (dir !== path.dirname(dir)) {\n const files = fs.readdirSync(dir);\n const candidates = files\n .filter((file) => file.startsWith('tsconfig') && file.endsWith('.json'))\n .sort((file) => (file === 'tsconfig.json' ? -1 : 1));\n\n if (candidates[0]) {\n return path.join(dir, candidates[0]);\n }\n\n dir = path.dirname(dir);\n }\n\n return null;\n};\n\nexport const loadTsConfig = (\n configPath: string | null,\n): ts.ParsedCommandLine | null => {\n if (!configPath) {\n return null;\n }\n\n const raw = ts.readConfigFile(configPath, ts.sys.readFile);\n\n if (raw.error) {\n throw new Error(`Couldn't read tsconfig from path: ${configPath}`);\n }\n\n return ts.parseJsonConfigFileContent(\n raw.config,\n ts.sys,\n path.dirname(configPath),\n );\n};\n","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","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport colors from 'ansi-colors';\n\nimport { findPackageJson } from './generate/tsConfig';\nimport { ensureDirSync } from './generate/utils';\n\nexport class ConfigError extends Error {}\n\nexport class HeyApiError extends Error {\n args: ReadonlyArray<unknown>;\n event: string;\n pluginName: string;\n\n constructor({\n args,\n error,\n event,\n name,\n pluginName,\n }: {\n args: unknown[];\n error: Error;\n event: string;\n name: string;\n pluginName: string;\n }) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n super(message);\n\n this.args = args;\n this.cause = error.cause;\n this.event = event;\n this.name = name || error.name;\n this.pluginName = pluginName;\n this.stack = error.stack;\n }\n}\n\nexport const logCrashReport = (\n error: unknown,\n logsDir: string,\n): string | undefined => {\n if (error instanceof ConfigError) {\n return;\n }\n\n const logName = `openapi-ts-error-${Date.now()}.log`;\n const fullDir = path.resolve(process.cwd(), logsDir);\n ensureDirSync(fullDir);\n const logPath = path.resolve(fullDir, logName);\n\n let logContent = `[${new Date().toISOString()}] `;\n\n if (error instanceof HeyApiError) {\n logContent += `${error.name} during event \"${error.event}\"\\n`;\n if (error.pluginName) {\n logContent += `Plugin: ${error.pluginName}\\n`;\n }\n logContent += `Arguments: ${JSON.stringify(error.args, null, 2)}\\n\\n`;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const stack = error instanceof Error ? error.stack : undefined;\n\n logContent += `Error: ${message}\\n`;\n if (stack) {\n logContent += `Stack:\\n${stack}\\n`;\n }\n\n fs.writeFileSync(logPath, logContent);\n\n return logPath;\n};\n\nexport const openGitHubIssueWithCrashReport = async (error: unknown) => {\n let body = '';\n\n if (error instanceof HeyApiError) {\n if (error.pluginName) {\n body += `**Plugin**: \\`${error.pluginName}\\`\\n`;\n }\n body += `**Event**: \\`${error.event}\\`\\n`;\n body += `**Arguments**:\\n\\`\\`\\`ts\\n${JSON.stringify(error.args, null, 2)}\\n\\`\\`\\`\\n\\n`;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const stack = error instanceof Error ? error.stack : undefined;\n\n body += `**Error**: \\`${message}\\`\\n`;\n if (stack) {\n body += `\\n**Stack Trace**:\\n\\`\\`\\`\\n${stack}\\n\\`\\`\\``;\n }\n\n const search = new URLSearchParams({\n body,\n labels: 'bug 🔥',\n title: 'Crash Report',\n });\n\n const packageJson = findPackageJson();\n let bugsUrl: string | undefined;\n if (\n packageJson &&\n typeof packageJson === 'object' &&\n 'bugs' in packageJson &&\n packageJson.bugs &&\n typeof packageJson.bugs === 'object' &&\n 'url' in packageJson.bugs &&\n typeof packageJson.bugs.url === 'string'\n ) {\n bugsUrl = packageJson.bugs.url;\n if (bugsUrl && !bugsUrl.endsWith('/')) {\n bugsUrl += '/';\n }\n }\n\n if (bugsUrl) {\n const url = `${bugsUrl}new?${search.toString()}`;\n const open = (await import('open')).default;\n await open(url);\n }\n};\n\nexport const printCrashReport = ({\n error,\n logPath,\n}: {\n error: unknown;\n logPath: string | undefined;\n}) => {\n const packageJson = findPackageJson();\n let name: string | undefined;\n if (\n packageJson &&\n typeof packageJson === 'object' &&\n 'name' in packageJson &&\n typeof packageJson.name === 'string'\n ) {\n name = packageJson.name;\n }\n process.stderr.write(\n `\\n🛑 ${colors.cyan(name || '')} ${colors.red('encountered an error.')}` +\n `\\n\\n${colors.red('❗️ Error:')} ${colors.white(typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error')}` +\n (logPath\n ? `\\n\\n${colors.cyan('📄 Crash log saved to:')} ${colors.gray(logPath)}`\n : '') +\n '\\n',\n );\n};\n\nexport const shouldReportCrash = async ({\n error,\n isInteractive,\n}: {\n error: unknown;\n isInteractive: boolean | undefined;\n}): Promise<boolean> => {\n if (!isInteractive || error instanceof ConfigError) {\n return false;\n }\n\n return new Promise((resolve) => {\n process.stdout.write(\n `${colors.yellow('\\n📢 Open a GitHub issue with crash details?')} ${colors.yellow('(y/N):')}`,\n );\n process.stdin.setEncoding('utf8');\n process.stdin.once('data', (data: string) => {\n resolve(data.trim().toLowerCase() === 'y');\n });\n });\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\n if (typeof userConfig?.logs === 'string') {\n logs.path = userConfig.logs;\n } else {\n logs = {\n ...logs,\n ...userConfig?.logs,\n };\n }\n\n return logs;\n};\n","type ObjectType<T> =\n Extract<T, Record<string, any>> extends never\n ? Record<string, any>\n : Extract<T, Record<string, any>>;\n\ntype NotArray<T> = T extends any[] ? never : T;\ntype NotFunction<T> = T extends (...args: any[]) => any ? never : T;\ntype PlainObject<T> = T extends object\n ? NotFunction<T> extends never\n ? never\n : NotArray<T> extends never\n ? never\n : T\n : never;\n\ntype MappersType<T> = {\n boolean: T extends boolean\n ? (value: boolean) => Partial<ObjectType<T>>\n : never;\n function: T extends (...args: any[]) => any\n ? (value: (...args: any[]) => any) => Partial<ObjectType<T>>\n : never;\n number: T extends number ? (value: number) => Partial<ObjectType<T>> : never;\n object?: PlainObject<T> extends never\n ? never\n : (\n value: Partial<PlainObject<T>>,\n defaultValue: PlainObject<T>,\n ) => Partial<ObjectType<T>>;\n string: T extends string ? (value: string) => Partial<ObjectType<T>> : never;\n} extends infer U\n ? { [K in keyof U as U[K] extends never ? never : K]: U[K] }\n : never;\n\ntype IsObjectOnly<T> = T extends Record<string, any> | undefined\n ? Extract<\n T,\n string | boolean | number | ((...args: any[]) => any)\n > extends never\n ? true\n : false\n : false;\n\nexport type ValueToObject = <\n T extends\n | undefined\n | string\n | boolean\n | number\n | ((...args: any[]) => any)\n | Record<string, any>,\n>(\n args: {\n defaultValue: ObjectType<T>;\n value: T;\n } & (IsObjectOnly<T> extends true\n ? {\n mappers?: MappersType<T>;\n }\n : {\n mappers: MappersType<T>;\n }),\n) => PlainObject<T>;\n\nconst isPlainObject = (value: unknown): value is Record<string, any> =>\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n typeof value !== 'function';\n\nconst mergeResult = <T>(\n result: ObjectType<T>,\n mapped: Record<string, any>,\n): ObjectType<T> => {\n for (const [key, value] of Object.entries(mapped)) {\n if (value !== undefined && value !== '') {\n (result as Record<string, any>)[key] = value;\n }\n }\n return result;\n};\n\nexport const valueToObject: ValueToObject = ({\n defaultValue,\n mappers,\n value,\n}) => {\n let result = { ...defaultValue };\n\n switch (typeof value) {\n case 'boolean':\n if (mappers && 'boolean' in mappers) {\n const mapper = mappers.boolean as (\n value: boolean,\n ) => Record<string, any>;\n result = mergeResult(result, mapper(value));\n }\n break;\n case 'function':\n if (mappers && 'function' in mappers) {\n const mapper = mappers.function as (\n value: (...args: any[]) => any,\n ) => Record<string, any>;\n result = mergeResult(result, mapper(value as (...args: any[]) => any));\n }\n break;\n case 'number':\n if (mappers && 'number' in mappers) {\n const mapper = mappers.number as (value: number) => Record<string, any>;\n result = mergeResult(result, mapper(value));\n }\n break;\n case 'string':\n if (mappers && 'string' in mappers) {\n const mapper = mappers.string as (value: string) => Record<string, any>;\n result = mergeResult(result, mapper(value));\n }\n break;\n case 'object':\n if (isPlainObject(value)) {\n if (\n mappers &&\n 'object' in mappers &&\n typeof mappers.object === 'function'\n ) {\n const mapper = mappers.object as (\n value: Record<string, any>,\n defaultValue: ObjectType<any>,\n ) => Partial<ObjectType<any>>;\n result = mergeResult(result, mapper(value, defaultValue));\n } else {\n result = mergeResult(result, value);\n }\n }\n break;\n }\n\n return result as any;\n};\n","import type { Config, UserConfig } from '../types/config';\nimport { valueToObject } from './utils/config';\n\nexport const defaultPaginationKeywords = [\n 'after',\n 'before',\n 'cursor',\n 'offset',\n 'page',\n 'start',\n] as const;\n\nexport const getParser = (userConfig: UserConfig): Config['parser'] => {\n const parser: Config['parser'] = {\n ...userConfig.parser,\n pagination: {\n keywords: defaultPaginationKeywords,\n },\n transforms: {\n enums: {\n case: 'PascalCase',\n enabled: false,\n mode: 'root',\n name: '{{name}}Enum',\n },\n readWrite: {\n enabled: true,\n requests: {\n case: 'preserve',\n name: '{{name}}Writable',\n },\n responses: {\n case: 'preserve',\n name: '{{name}}',\n },\n },\n },\n validate_EXPERIMENTAL: false,\n };\n\n if (userConfig.parser) {\n if (userConfig.parser.pagination?.keywords) {\n parser.pagination.keywords = userConfig.parser.pagination.keywords;\n }\n\n if (userConfig.parser.transforms) {\n if (userConfig.parser.transforms.enums !== undefined) {\n parser.transforms.enums = valueToObject({\n defaultValue: {\n ...parser.transforms.enums,\n enabled: Boolean(userConfig.parser.transforms.enums),\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (mode) => ({ mode }),\n },\n value: userConfig.parser.transforms.enums,\n }) as typeof parser.transforms.enums;\n }\n\n if (userConfig.parser.transforms.readWrite !== undefined) {\n parser.transforms.readWrite = valueToObject({\n defaultValue: {\n ...parser.transforms.readWrite,\n enabled: Boolean(userConfig.parser.transforms.readWrite),\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n object: (fields) => ({\n ...fields,\n requests: valueToObject({\n defaultValue: parser.transforms.readWrite.requests,\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: fields.requests,\n }),\n responses: valueToObject({\n defaultValue: parser.transforms.readWrite.responses,\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: fields.responses,\n }),\n }),\n },\n value: userConfig.parser.transforms.readWrite,\n }) as typeof parser.transforms.readWrite;\n }\n }\n\n if (userConfig.parser.validate_EXPERIMENTAL) {\n parser.validate_EXPERIMENTAL =\n userConfig.parser.validate_EXPERIMENTAL === true\n ? 'warn'\n : userConfig.parser.validate_EXPERIMENTAL;\n }\n }\n\n return parser;\n};\n","import type { Plugin } from '../../types';\n\nexport const definePluginConfig =\n <T extends Plugin.Types>(defaultConfig: Plugin.Config<T>) =>\n (\n userConfig?: Omit<Plugin.UserConfig<T['config']>, 'name'>,\n ): Omit<Plugin.Config<T>, 'name'> & {\n /**\n * Cast name to `any` so it doesn't throw type error in `plugins` array.\n * We could allow any `string` as plugin `name` in the object syntax, but\n * that TypeScript trick would cause all string methods to appear as\n * suggested auto completions, which is undesirable.\n */\n name: any;\n } => ({\n ...defaultConfig,\n config: {\n ...defaultConfig.config,\n ...userConfig,\n },\n });\n\n/**\n * Reusable mappers for `enabled` and `name` fields.\n */\nexport const mappers = {\n boolean: (enabled: boolean) => ({ enabled }),\n function: (name: (...args: any[]) => any) => ({ name }),\n string: (name: string) => ({ name }),\n} as const;\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\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): Config['plugins'][PluginClientNames] & { name: PluginClientNames } => {\n for (const name of config.pluginOrder) {\n const plugin = config.plugins[name];\n if (plugin?.tags?.includes('client')) {\n return plugin as Config['plugins'][PluginClientNames] & {\n name: PluginClientNames;\n };\n }\n }\n\n return {\n config: {\n // @ts-expect-error\n name: '',\n },\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 type { AccessLevel } from './types';\nimport { createStringLiteral, syntaxKindKeyword } from './types';\n\nexport interface ImportExportItemObject<\n Name extends string | undefined = string | undefined,\n Alias extends string | undefined = undefined,\n> {\n alias?: Alias;\n asType?: boolean;\n name: Name;\n}\n\nconst printer = ts.createPrinter({\n newLine: ts.NewLineKind.LineFeed,\n removeComments: false,\n});\n\nexport const createSourceFile = (sourceText: string): ts.SourceFile =>\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\nexport const createIdentifier = ({ text }: { text: string }): ts.Identifier =>\n ts.factory.createIdentifier(text);\n\nexport const createThis = (): ts.ThisExpression => ts.factory.createThis();\n\ntype Modifier = AccessLevel | 'async' | 'export' | 'readonly' | 'static';\n\nexport const createModifier = ({ keyword }: { keyword: Modifier }) => {\n const kind = syntaxKindKeyword({ keyword });\n return ts.factory.createModifier(kind);\n};\n\nexport const createPropertyDeclaration = ({\n initializer,\n modifier,\n name,\n type,\n}: {\n initializer?: ts.Expression;\n modifier?: Modifier;\n name: string | ts.PropertyName;\n type?: ts.TypeNode;\n}) => {\n const node = ts.factory.createPropertyDeclaration(\n modifier ? [createModifier({ keyword: modifier })] : undefined,\n name,\n undefined,\n type,\n initializer,\n );\n return node;\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 createModifier,\n isTsNode,\n isType,\n ots,\n} from './utils';\n\nexport type AccessLevel = 'private' | 'protected' | 'public';\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 type?: any | ts.TypeNode;\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: ts.isIdentifier(base) ? base.text : 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 | number | 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 && typeof name !== 'number') {\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 const nodeName = createIdentifier({ text: name });\n return ts.factory.createPropertyAccessExpression(nodeExpression, nodeName);\n }\n\n if (typeof name === 'number') {\n const nodeName = ts.factory.createNumericLiteral(name);\n return ts.factory.createElementAccessExpression(nodeExpression, nodeName);\n }\n\n return ts.factory.createPropertyAccessExpression(nodeExpression, name);\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 return;\n};\n\n/**\n * Convert parameters to the declaration array expected by TypeScript\n * 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 type:\n parameter.type !== undefined\n ? createTypeNode(parameter.type)\n : undefined,\n });\n }\n\n const modifiers = parameter.accessLevel\n ? [createModifier({ keyword: parameter.accessLevel })]\n : [];\n\n if (parameter.isReadOnly) {\n modifiers.push(createModifier({ keyword: 'readonly' }));\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 type SyntaxKindKeyword =\n | 'any'\n | 'async'\n | 'boolean'\n | 'export'\n | 'never'\n | 'number'\n | 'private'\n | 'protected'\n | 'public'\n | 'readonly'\n | 'static'\n | 'string'\n | 'undefined'\n | 'unknown'\n | 'void';\n\nexport const syntaxKindKeyword = <T extends SyntaxKindKeyword>({\n keyword,\n}: {\n keyword: T;\n}): T extends 'protected'\n ? ts.SyntaxKind.ProtectedKeyword\n : T extends 'public'\n ? ts.SyntaxKind.PublicKeyword\n : T extends 'private'\n ? ts.SyntaxKind.PrivateKeyword\n : T extends 'export'\n ? ts.SyntaxKind.ExportKeyword\n : T extends 'async'\n ? ts.SyntaxKind.ExportKeyword\n : T extends 'readonly'\n ? ts.SyntaxKind.ExportKeyword\n : T extends 'static'\n ? ts.SyntaxKind.ExportKeyword\n :\n | ts.SyntaxKind.AnyKeyword\n | ts.SyntaxKind.BooleanKeyword\n | ts.SyntaxKind.NeverKeyword\n | ts.SyntaxKind.NumberKeyword\n | ts.SyntaxKind.StringKeyword\n | ts.SyntaxKind.UndefinedKeyword\n | ts.SyntaxKind.UnknownKeyword\n | ts.SyntaxKind.VoidKeyword => {\n switch (keyword) {\n case 'any':\n return ts.SyntaxKind.AnyKeyword as any;\n case 'async':\n return ts.SyntaxKind.AsyncKeyword as any;\n case 'boolean':\n return ts.SyntaxKind.BooleanKeyword as any;\n case 'export':\n return ts.SyntaxKind.ExportKeyword as any;\n case 'never':\n return ts.SyntaxKind.NeverKeyword as any;\n case 'number':\n return ts.SyntaxKind.NumberKeyword as any;\n case 'private':\n return ts.SyntaxKind.PrivateKeyword as any;\n case 'protected':\n return ts.SyntaxKind.ProtectedKeyword as any;\n case 'public':\n return ts.SyntaxKind.PublicKeyword as any;\n case 'readonly':\n return ts.SyntaxKind.ReadonlyKeyword as any;\n case 'static':\n return ts.SyntaxKind.StaticKeyword as any;\n case 'string':\n return ts.SyntaxKind.StringKeyword as any;\n case 'undefined':\n return ts.SyntaxKind.UndefinedKeyword as any;\n case 'unknown':\n return ts.SyntaxKind.UnknownKeyword as any;\n case 'void':\n return ts.SyntaxKind.VoidKeyword as any;\n default:\n throw new Error(`unsupported syntax kind keyword \"${keyword}\"`);\n }\n};\n\nexport const createKeywordTypeNode = ({\n keyword,\n}: {\n keyword: Extract<\n SyntaxKindKeyword,\n | 'any'\n | 'boolean'\n | 'never'\n | 'number'\n | 'string'\n | 'undefined'\n | 'unknown'\n | 'void'\n >;\n}) => {\n const kind = syntaxKindKeyword({ keyword });\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 ? [createModifier({ keyword: 'async' })] : 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?: ReadonlyArray<ts.Statement>;\n types?: FunctionTypeParameter[];\n}) => {\n const expression = ts.factory.createFunctionExpression(\n async ? [createModifier({ keyword: 'async' })] : 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;\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;\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 | ts.TypeReferenceNode;\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 [createModifier({ keyword: 'export' })],\n typeof name === 'string'\n ? createIdentifier({ text: name })\n : // TODO: https://github.com/hey-api/openapi-ts/issues/2289\n (name as unknown as ts.Identifier),\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.includes(\"'\")) {\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 [createModifier({ keyword: 'export' })],\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 createGetAccessorDeclaration = ({\n name,\n returnType,\n statements,\n}: {\n name: string | ts.PropertyName;\n returnType?: string | ts.Identifier;\n statements: ReadonlyArray<ts.Statement>;\n}) =>\n ts.factory.createGetAccessorDeclaration(\n undefined, // modifiers\n name,\n [], // parameters\n returnType ? createTypeReferenceNode({ typeName: returnType }) : undefined,\n createBlock({ statements }),\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 = ({\n text,\n}: {\n text: string | ts.Identifier;\n}) => {\n const expression = ts.factory.createTypeOfExpression(\n typeof text === 'string' ? createIdentifier({ text }) : 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 | ts.TypeReferenceNode;\n type: string | ts.TypeNode | ts.Identifier;\n typeParameters?: FunctionTypeParameter[];\n}): ts.TypeAliasDeclaration => {\n const node = ts.factory.createTypeAliasDeclaration(\n exportType ? [createModifier({ keyword: 'export' })] : undefined,\n // TODO: https://github.com/hey-api/openapi-ts/issues/2289\n // passing type reference node seems to work and allows for dynamic renaming\n // @ts-expect-error\n typeof name === 'string' ? createIdentifier({ text: name }) : 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}) => ts.factory.createTypeReferenceNode(typeName, typeArguments);\n\nexport const createTypeParenthesizedNode = ({ type }: { type: ts.TypeNode }) =>\n ts.factory.createParenthesizedType(type);\n\nexport const createParameterDeclaration = ({\n initializer,\n modifiers,\n name,\n required = true,\n type,\n}: {\n initializer?: ts.Expression;\n modifiers?: ReadonlyArray<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: ReadonlyArray<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}) => {\n const textWithSlashes =\n text.startsWith('/') && text.endsWith('/') ? text : `/${text}/`;\n return ts.factory.createRegularExpressionLiteral(\n `${textWithSlashes}${flags.join('')}`,\n );\n};\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 createModifier,\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 | ts.TypeReferenceNode;\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 =\n typeof name === 'string'\n ? createIdentifier({ text: name })\n : // TODO: https://github.com/hey-api/openapi-ts/issues/2289\n (name as unknown as ts.Identifier);\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 ? [createModifier({ keyword: 'export' })] : 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 let namespaceImport: ImportExportItemObject | undefined;\n const elements: Array<ts.ImportSpecifier> = [];\n importedTypes.forEach((name) => {\n const item = typeof name === 'string' ? { name } : name;\n if (item.name === '*' && item.alias) {\n namespaceImport = item;\n } else {\n elements.push(\n ots.import({\n alias: item.alias,\n asType: hasNonTypeImport && item.asType,\n name: item.name,\n }),\n );\n }\n });\n const namedBindings = namespaceImport\n ? ts.factory.createNamespaceImport(\n createIdentifier({ text: namespaceImport.alias! }),\n )\n : 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 toExpression,\n toParameterDeclarations,\n toTypeParameters,\n} from './types';\nimport type { Comments } from './utils';\nimport {\n addLeadingComments,\n createIdentifier,\n createModifier,\n isType,\n} 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 modifiers = accessLevel\n ? [createModifier({ keyword: accessLevel })]\n : undefined;\n const node = ts.factory.createConstructorDeclaration(\n modifiers,\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 const modifiers = accessLevel\n ? [createModifier({ keyword: accessLevel })]\n : [];\n\n if (isStatic) {\n modifiers.push(createModifier({ keyword: 'static' }));\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 */\nexport const createClassDeclaration = ({\n decorator,\n exportClass,\n extendedClasses,\n name,\n nodes,\n}: {\n /**\n * Class decorator.\n */\n decorator?: ClassDecorator;\n /**\n * @default false\n */\n exportClass?: boolean;\n /**\n * List of extended classes.\n */\n extendedClasses?: ReadonlyArray<string>;\n /**\n * Class name.\n */\n name: string;\n /**\n * Class elements.\n */\n nodes: ReadonlyArray<ts.ClassElement>;\n}): ts.ClassDeclaration => {\n const modifiers: Array<ts.ModifierLike> = [];\n\n if (exportClass) {\n modifiers.push(createModifier({ keyword: 'export' }));\n }\n\n if (decorator) {\n modifiers.unshift(\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 );\n }\n\n const heritageClauses: Array<ts.HeritageClause> = [];\n\n if (extendedClasses) {\n for (const extendedClass of extendedClasses) {\n heritageClauses.push(\n ts.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [\n ts.factory.createExpressionWithTypeArguments(\n createIdentifier({ text: extendedClass }),\n undefined,\n ),\n ]),\n );\n }\n }\n\n return ts.factory.createClassDeclaration(\n modifiers,\n createIdentifier({ text: name }),\n undefined,\n heritageClauses,\n nodes,\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?: ReadonlyArray<string | ts.StringLiteral>;\n}) => {\n const typeArguments = types.map((type) =>\n // this works with string literals too despite throwing a type error.\n // should be probably fixed at some point...\n // @ts-expect-error\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 createMappedTypeNode,\n createParameterDeclaration,\n createStringLiteral,\n createTypeNode,\n createTypeParameterDeclaration,\n createTypeReferenceNode,\n} from './types';\nimport {\n addLeadingComments,\n type Comments,\n createIdentifier,\n createModifier,\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 indexKey,\n indexProperty,\n isNullable,\n properties,\n useLegacyResolution,\n}: {\n /**\n * Adds an index key type.\n *\n * @example\n * ```ts\n * type IndexKey = {\n * [key in Foo]: string\n * }\n * ```\n */\n indexKey?: ts.TypeReferenceNode;\n /**\n * Adds an index signature if defined.\n *\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 | ts.MappedTypeNode> = properties.map(\n (property) => {\n const modifiers: readonly ts.Modifier[] | undefined = property.isReadOnly\n ? [createModifier({ keyword: 'readonly' })]\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' &&\n 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\n let isIndexMapped = false;\n\n if (indexProperty) {\n if (!properties.length && indexKey) {\n const indexSignature = createMappedTypeNode({\n questionToken: ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n type:\n indexProperty.type ?? createKeywordTypeNode({ keyword: 'string' }),\n typeParameter: createTypeParameterDeclaration({\n constraint: indexKey,\n name: createIdentifier({ text: String(indexProperty.name) }),\n }),\n });\n members.push(indexSignature);\n isIndexMapped = true;\n } else {\n const modifiers: ReadonlyArray<ts.Modifier> | undefined =\n indexProperty.isReadOnly\n ? [createModifier({ keyword: 'readonly' })]\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\n const node = isIndexMapped\n ? members[0]!\n : // @ts-expect-error\n ts.factory.createTypeLiteralNode(members);\n return maybeNullable({\n isNullable,\n // @ts-expect-error\n node,\n });\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: ReadonlyArray<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:\n | ReadonlyArray<any | ts.TypeNode>\n | ts.TypeNode\n | ts.Identifier\n | 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 tsc = {\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 getAccessorDeclaration: types.createGetAccessorDeclaration,\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 propertyDeclaration: utils.createPropertyDeclaration,\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 templateLiteralType: types.createTemplateLiteralType,\n this: utils.createThis,\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\n/** @deprecated use tsc */\nexport const compiler = tsc;\n","import type { RangeOptions, SemVer } from 'semver';\nimport * as semver from 'semver';\n\nexport type Package = {\n /**\n * Get the installed version of a package.\n * @param name The name of the package to get the version for.\n * @returns A SemVer object containing version information, or undefined if the package is not installed\n * or the version string is invalid.\n */\n getVersion: (name: string) => SemVer | undefined;\n /**\n * Check if a given package is installed in the project.\n * @param name The name of the package to check.\n */\n isInstalled: (name: string) => boolean;\n /**\n * Check if the installed version of a package or a given SemVer object satisfies a semver range.\n * @param nameOrVersion The name of the package to check, or a SemVer object.\n * @param range The semver range to check against.\n * @returns True if the version satisfies the range, false otherwise.\n */\n satisfies: (\n nameOrVersion: string | SemVer,\n range: string,\n optionsOrLoose?: boolean | RangeOptions,\n ) => boolean;\n};\n\nexport const packageFactory = (\n dependencies: Record<string, string>,\n): Package => ({\n getVersion: (name) => {\n const version = dependencies[name];\n try {\n if (version) {\n return semver.parse(version) || undefined;\n }\n } catch {\n // noop\n }\n return;\n },\n isInstalled: (name) => Boolean(dependencies[name]),\n satisfies: (nameOrVersion, range, optionsOrLoose) => {\n const version =\n typeof nameOrVersion === 'string'\n ? dependencies[nameOrVersion]\n : nameOrVersion;\n return version ? semver.satisfies(version, range, optionsOrLoose) : false;\n },\n});\n","type Obj =\n | Record<string, unknown>\n | Set<string>\n | ReadonlyArray<string | undefined>;\n\nconst hasName = (obj: Obj, value: string): boolean => {\n if (obj instanceof Set) {\n return obj.has(value);\n }\n if (obj instanceof Array) {\n return obj.includes(value);\n }\n return value in obj;\n};\n\nexport const getUniqueComponentName = ({\n base,\n components,\n extraComponents,\n}: {\n base: string;\n /**\n * Input components.\n */\n components: Obj;\n /**\n * Temporary input components, waiting to be inserted for example.\n */\n extraComponents?: Obj;\n}): string => {\n let index = 2;\n let name = base;\n while (\n hasName(components, name) ||\n (extraComponents && hasName(extraComponents, name))\n ) {\n name = `${base}${index}`;\n index += 1;\n }\n return name;\n};\n\nexport const isPathRootSchema = (path: ReadonlyArray<string | number>) =>\n (path.length === 3 && path[0] === 'components' && path[1] === 'schemas') ||\n (path.length === 2 && path[0] === 'definitions');\n\nexport const specToSchemasPointerNamespace = (spec: unknown): string => {\n if (spec && typeof spec === 'object') {\n if ('swagger' in spec) {\n // #/definitions/SchemaName\n return '#/definitions/';\n }\n\n if ('openapi' in spec) {\n // #/components/schemas/SchemaName\n return '#/components/schemas/';\n }\n }\n\n return '';\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/case';\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 type { IR } from '../../ir/types';\nimport { getUniqueComponentName } from '../../openApi/shared/transforms/utils';\nimport { ensureValidIdentifier } from '../../openApi/shared/utils/identifier';\nimport { tsc } from '../../tsc';\nimport { type ImportExportItemObject, tsNodeToString } from '../../tsc/utils';\nimport type { StringCase } from '../../types/case';\nimport { stringCase } from '../../utils/stringCase';\nimport { ensureDirSync } from '../utils';\nimport type {\n FileImportResult,\n Identifier,\n Identifiers,\n Namespace,\n NodeInfo,\n NodeReference,\n} from './types';\nexport class GeneratedFile {\n private _case: StringCase | undefined;\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 _imports = new Map<string, Map<string, ImportExportItemObject>>();\n private _items: Array<ts.Node | string> = [];\n private _name: string;\n private _path: string;\n\n /** @deprecated use `names` and `nodes` */\n public identifiers: Identifiers = {};\n\n /**\n * Map of node IDs. This can be used to obtain actual node names. Keys are\n * node IDs which can be any string, values are names. Values are kept in\n * sync with `nodes`.\n *\n * @example\n * ```json\n * {\n * \"#/my-id\": \"final_name\",\n * \"anyId\": \"name\"\n * }\n * ```\n */\n private names: Record<string, string> = {};\n /**\n * Another approach for named nodes, with proper support for renaming. Keys\n * are node IDs and values are an array of references for given ID.\n */\n private nodeReferences: Record<string, Array<NodeReference>> = {};\n /**\n * Text value from node is kept in sync with `names`.\n *\n * @deprecated\n * @example\n * ```js\n * {\n * \"#/my-id\": {\n * \"node\": TypeReferenceNode\n * },\n * \"anyId\": {\n * \"node\": TypeReferenceNode\n * }\n * }\n * ```\n */\n // TODO: nodes can be possibly replaced with `nodeReferences`, i.e. keep\n // the name `nodes` and rewrite their functionality\n private nodes: Record<string, NodeInfo> = {};\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 case: _case,\n dir,\n exportFromIndex = false,\n header = true,\n id,\n name,\n }: {\n case?: StringCase;\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 name: string;\n }) {\n this._case = _case;\n this._exportFromIndex = exportFromIndex;\n this._id = id;\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 * Adds a reference node for a name. This can be used later to rename\n * identifiers.\n */\n public addNodeReference<T>(\n id: string,\n node: Pick<NodeReference<T>, 'factory'>,\n ): T {\n if (!this.nodeReferences[id]) {\n this.nodeReferences[id] = [];\n }\n const result = node.factory(this.names[id] ?? '');\n this.nodeReferences[id].push({\n factory: node.factory,\n node: result as void,\n });\n return result;\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: Namespace;\n }): Identifier {\n const { name, ref } = parseRef($ref);\n const refValue =\n this.identifiers[name.toLocaleLowerCase()]?.[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 /**\n * Returns an actual node name. If node doesn't exist throws an error.\n *\n * @param id Node ID.\n * @returns Actual node name.\n */\n public getName(id: string): string | undefined {\n const name = this.names[id];\n if (!name) {\n return;\n }\n return name;\n }\n\n /**\n * Returns a node. If node doesn't exist, creates a blank reference.\n *\n * @deprecated\n * @param id Node ID.\n * @returns Information about the node.\n */\n public getNode(id: string): NodeInfo {\n if (!this.nodes[id]) {\n this.nodes[id] = {\n node: tsc.typeReferenceNode({ typeName: '' }),\n };\n }\n return this.nodes[id]!;\n }\n\n public get id(): string {\n return this._id;\n }\n\n /** @deprecated use `names` and `nodes` */\n public identifier(\n args: Pick<\n EnsureUniqueIdentifierData,\n '$ref' | 'count' | 'create' | 'nameTransformer'\n > & {\n case?: StringCase;\n namespace: Namespace;\n },\n ): Identifier {\n return ensureUniqueIdentifier({\n case: args.case ?? this._case,\n identifiers: this.identifiers,\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 Name extends string | undefined = string | undefined,\n Alias extends string | undefined = undefined,\n >({\n module,\n ...importedItem\n }: ImportExportItemObject<Name, Alias> & {\n module: string;\n }): FileImportResult<Name, Alias> {\n if (!importedItem.name) {\n return {\n name: undefined as any,\n };\n }\n\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) as any,\n };\n }\n\n moduleMap.set(importedItem.name, importedItem as any);\n return {\n ...importedItem,\n name: (importedItem.alias || importedItem.name) as any,\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 * @deprecated\n */\n public removeNode_LEGACY() {\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 if (resolvedModule === './client') {\n resolvedModule = './client/index.js';\n } else {\n resolvedModule = `${resolvedModule}.js`;\n }\n }\n\n const node = tsc.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 /**\n * Inserts or updates a node.\n *\n * @deprecated\n * @param id Node ID.\n * @param args Information about the node.\n * @returns Updated node.\n */\n public updateNode(\n id: string,\n args: Pick<NodeInfo, 'exported'> & {\n name: string;\n },\n ): NodeInfo {\n // update name\n const name = getUniqueComponentName({\n base: ensureValidIdentifier(args.name),\n components: Object.values(this.names),\n });\n this.names[id] = name;\n const node = tsc.typeReferenceNode({ typeName: name });\n // update node\n if (!this.nodes[id]) {\n this.nodes[id] = { node };\n } else {\n Object.assign(this.nodes[id].node, node);\n }\n if (args.exported !== undefined) {\n this.nodes[id].exported = args.exported;\n }\n return this.nodes[id];\n }\n\n /**\n * Updates collected reference nodes for a name with the latest value.\n *\n * @param id Node ID.\n * @param name Updated name for the nodes.\n * @returns noop\n */\n public updateNodeReferences(id: string, name: string): void {\n if (!this.nodeReferences[id]) {\n return;\n }\n const finalName = getUniqueComponentName({\n base: ensureValidIdentifier(name),\n components: Object.values(this.names),\n });\n this.names[id] = finalName;\n for (const node of this.nodeReferences[id]) {\n const nextNode = node.factory(finalName);\n Object.assign(node.node as unknown as object, nextNode);\n }\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\nconst parseRef = (\n $ref: string,\n): {\n /**\n * Extracted name from `$ref`, equal to the last part or property name.\n */\n name: string;\n /**\n * List of properties extracted from `$ref`, if any.\n */\n properties: ReadonlyArray<string>;\n /**\n * `$ref` without properties if they're included in `$ref`, otherwise\n * `ref` is equal to `$ref`.\n */\n ref: string;\n} => {\n let ref = $ref;\n const properties: string[] = [];\n\n const parts = ref.split('/');\n let name = parts[parts.length - 1] || '';\n\n let propIndex = parts.indexOf('properties');\n\n if (propIndex !== -1) {\n ref = 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 name,\n properties,\n ref,\n };\n};\n\nconst transformName = (\n name: string,\n transformer: ((name: string) => string) | string,\n _case?: StringCase,\n): string => {\n if (typeof transformer === 'function') {\n return transformer(name);\n }\n\n const separator = _case === 'preserve' ? '' : '-';\n return transformer.replace('{{name}}', `${separator}${name}${separator}`);\n};\n\ninterface EnsureUniqueIdentifierData {\n $ref: string;\n case: StringCase | undefined;\n count?: number;\n create?: boolean;\n identifiers: Identifiers;\n /**\n * Transforms name obtained from `$ref` before it's passed to `stringCase()`.\n */\n nameTransformer?: ((name: string) => string) | string;\n namespace: Namespace;\n}\n\nconst ensureUniqueIdentifier = ({\n $ref,\n case: _case,\n count = 1,\n create = false,\n identifiers,\n nameTransformer,\n namespace,\n}: EnsureUniqueIdentifierData): Identifier => {\n const { name, properties, ref } = parseRef($ref);\n\n if (!name) {\n return {\n created: false,\n name: '',\n };\n }\n\n let nameWithCasingAndTransformer = stringCase({\n case: _case,\n value: nameTransformer ? transformName(name, nameTransformer, _case) : name,\n });\n if (count > 1) {\n nameWithCasingAndTransformer = `${nameWithCasingAndTransformer}${count}`;\n }\n const lowercaseName = nameWithCasingAndTransformer.toLocaleLowerCase();\n if (!identifiers[lowercaseName]) {\n identifiers[lowercaseName] = {};\n }\n const identifier = identifiers[lowercaseName];\n\n // Enum declarations can only merge with namespace or other enum\n // declarations, so we need to ensure we don't mix them up.\n if (\n (namespace === 'enum' && (identifier.type || identifier.value)) ||\n (namespace !== 'enum' && identifier.enum)\n ) {\n return ensureUniqueIdentifier({\n $ref: ref,\n case: _case,\n count: count + 1,\n create,\n identifiers,\n nameTransformer,\n namespace,\n });\n }\n\n if (!identifier[namespace]) {\n identifier[namespace] = {};\n }\n const id = identifier[namespace];\n\n const refValue = id[ref];\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 let nameValue = id[nameWithCasingAndTransformer];\n if (nameValue) {\n if (nameValue.$ref === ref) {\n return {\n created: false,\n name: nameValue.name,\n };\n }\n\n return ensureUniqueIdentifier({\n $ref: ref,\n case: _case,\n count: count + 1,\n create,\n identifiers,\n nameTransformer,\n namespace,\n });\n }\n\n if (!create) {\n delete identifier[namespace];\n return {\n created: false,\n name: '',\n };\n }\n\n nameValue = {\n $ref: ref,\n name: ensureValidIdentifier(nameWithCasingAndTransformer),\n };\n id[nameWithCasingAndTransformer] = nameValue;\n id[nameValue.$ref] = nameValue;\n\n return {\n created: true,\n name: nameValue.name,\n };\n};\n\nexport const 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 parseRef,\n};\n","import { HeyApiError } from '../../../error';\nimport type { IR } from '../../../ir/types';\nimport type { OpenApi } from '../../../openApi/types';\nimport type { PluginConfigMap } from '../../config';\nimport type { Plugin } from '../../types';\nimport type { WalkEvent, WalkEventType } from '../types/instance';\n\nexport class PluginInstance<T extends Plugin.Types = Plugin.Types> {\n public api: T['api'];\n public config: Omit<T['resolvedConfig'], 'name' | 'output'>;\n public context: IR.Context;\n public dependencies: Required<Plugin.Config<T>>['dependencies'] = [];\n private handler: Plugin.Config<T>['handler'];\n public name: T['resolvedConfig']['name'];\n public output: Required<T['config']>['output'];\n /**\n * The package metadata and utilities for the current context, constructed\n * from the provided dependencies. Used for managing package-related\n * information such as name, version, and dependency resolution during\n * code generation.\n */\n public package: IR.Context['package'];\n\n public constructor(\n props: Pick<\n Required<Plugin.Config<T>>,\n 'config' | 'dependencies' | 'handler'\n > & {\n api?: T['api'];\n context: IR.Context<OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X>;\n name: string;\n output: string;\n },\n ) {\n this.api = props.api ?? {};\n this.config = props.config;\n this.context = props.context;\n this.dependencies = props.dependencies;\n this.handler = props.handler;\n this.name = props.name;\n this.output = props.output;\n this.package = props.context.package;\n }\n\n public createFile(file: IR.ContextFile) {\n return this.context.createFile({\n exportFromIndex: this.config.exportFromIndex,\n ...file,\n });\n }\n\n /**\n * Iterates over various input elements as specified by the event types, in\n * a specific order: servers, schemas, parameters, request bodies, then\n * operations.\n *\n * This ensures, for example, that schemas are always processed before\n * operations, which may reference them.\n *\n * @template T - The event type(s) to yield. Defaults to all event types.\n * @param events - The event types to walk over. If none are provided, all event types are included.\n * @param callback - Function to execute for each event.\n *\n * @example\n * // Iterate over all operations and schemas\n * plugin.forEach('operation', 'schema', (event) => {\n * if (event.type === 'operation') {\n * // handle operation\n * } else if (event.type === 'schema') {\n * // handle schema\n * }\n * });\n */\n public forEach<T extends WalkEventType = WalkEventType>(\n ...args: [\n ...events: ReadonlyArray<T>,\n callback: (event: WalkEvent<T>) => void,\n ]\n ): void {\n const events = args.slice(0, -1) as ReadonlyArray<T>;\n const callback = args[args.length - 1] as (event: WalkEvent<T>) => void;\n const eventSet = new Set(\n events.length\n ? events\n : ([\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'server',\n 'webhook',\n ] as ReadonlyArray<WalkEventType>),\n );\n\n if (eventSet.has('server') && this.context.ir.servers) {\n for (const server of this.context.ir.servers) {\n const event: WalkEvent<'server'> = { server, type: 'server' };\n try {\n callback(event as WalkEvent<T>);\n } catch (error) {\n this.forEachError(error, event);\n }\n }\n }\n\n if (eventSet.has('schema') && this.context.ir.components?.schemas) {\n for (const name in this.context.ir.components.schemas) {\n const event: WalkEvent<'schema'> = {\n $ref: `#/components/schemas/${name}`,\n name,\n schema: this.context.ir.components.schemas[name]!,\n type: 'schema',\n };\n try {\n callback(event as WalkEvent<T>);\n } catch (error) {\n this.forEachError(error, event);\n }\n }\n }\n\n if (eventSet.has('parameter') && this.context.ir.components?.parameters) {\n for (const name in this.context.ir.components.parameters) {\n const event: WalkEvent<'parameter'> = {\n $ref: `#/components/parameters/${name}`,\n name,\n parameter: this.context.ir.components.parameters[name]!,\n type: 'parameter',\n };\n try {\n callback(event as WalkEvent<T>);\n } catch (error) {\n this.forEachError(error, event);\n }\n }\n }\n\n if (\n eventSet.has('requestBody') &&\n this.context.ir.components?.requestBodies\n ) {\n for (const name in this.context.ir.components.requestBodies) {\n const event: WalkEvent<'requestBody'> = {\n $ref: `#/components/requestBodies/${name}`,\n name,\n requestBody: this.context.ir.components.requestBodies[name]!,\n type: 'requestBody',\n };\n try {\n callback(event as WalkEvent<T>);\n } catch (error) {\n this.forEachError(error, event);\n }\n }\n }\n\n if (eventSet.has('operation') && this.context.ir.paths) {\n for (const path in this.context.ir.paths) {\n const pathItem =\n this.context.ir.paths[path as keyof typeof this.context.ir.paths];\n for (const _method in pathItem) {\n const method = _method as keyof typeof pathItem;\n const event: WalkEvent<'operation'> = {\n method,\n operation: pathItem[method]!,\n path,\n type: 'operation',\n };\n try {\n callback(event as WalkEvent<T>);\n } catch (error) {\n this.forEachError(error, event);\n }\n }\n }\n }\n\n if (eventSet.has('webhook') && this.context.ir.webhooks) {\n for (const key in this.context.ir.webhooks) {\n const webhook = this.context.ir.webhooks[key];\n for (const _method in webhook) {\n const method = _method as keyof typeof webhook;\n const event: WalkEvent<'webhook'> = {\n key,\n method,\n operation: webhook[method]!,\n type: 'webhook',\n };\n try {\n callback(event as WalkEvent<T>);\n } catch (error) {\n this.forEachError(error, event);\n }\n }\n }\n }\n }\n\n private forEachError(error: unknown, event: WalkEvent) {\n const originalError =\n error instanceof Error ? error : new Error(String(error));\n throw new HeyApiError({\n args: [event],\n error: originalError,\n event: event.type,\n name: 'Error',\n pluginName: this.name,\n });\n }\n\n /**\n * Retrieves a registered plugin instance by its name from the context. This\n * allows plugins to access other plugins that have been registered in the\n * same context, enabling cross-plugin communication and dependencies.\n *\n * @param name Plugin name as defined in the configuration.\n * @returns The plugin instance if found, undefined otherwise.\n */\n public getPlugin<T extends keyof PluginConfigMap>(\n name: T,\n ): T extends any ? PluginInstance<PluginConfigMap[T]> | undefined : never {\n return this.context.plugins[name] as any;\n }\n\n /**\n * Executes plugin's handler function.\n */\n public async run() {\n await this.handler({ plugin: this });\n }\n}\n","const jsonPointerSlash = /~1/g;\nconst jsonPointerTilde = /~0/g;\n\n/**\n * Returns the reusable component name from `$ref`.\n */\nexport const refToName = ($ref: string): string => {\n const path = jsonPointerToPath($ref);\n const name = path[path.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\n/**\n * Encodes a path segment for use in a JSON Pointer (RFC 6901).\n *\n * - Replaces all '~' with '~0'.\n * - Replaces all '/' with '~1'.\n *\n * This ensures that path segments containing these characters are safely\n * represented in JSON Pointer strings.\n *\n * @param segment - The path segment (string or number) to encode.\n * @returns The encoded segment as a string.\n */\nexport const encodeJsonPointerSegment = (segment: string | number): string =>\n String(segment).replace(/~/g, '~0').replace(/\\//g, '~1');\n\n/**\n * Converts a JSON Pointer string (RFC 6901) to an array of path segments.\n *\n * - Removes the leading '#' if present.\n * - Splits the pointer on '/'.\n * - Decodes '~1' to '/' and '~0' to '~' in each segment.\n * - Returns an empty array for the root pointer ('#' or '').\n *\n * @param pointer - The JSON Pointer string to convert (e.g., '#/components/schemas/Foo').\n * @returns An array of decoded path segments.\n */\nexport const jsonPointerToPath = (pointer: string): ReadonlyArray<string> => {\n let clean = pointer.trim();\n if (clean.startsWith('#')) {\n clean = clean.slice(1);\n }\n if (clean.startsWith('/')) {\n clean = clean.slice(1);\n }\n if (!clean) {\n return [];\n }\n return clean\n .split('/')\n .map((part) =>\n part.replace(jsonPointerSlash, '/').replace(jsonPointerTilde, '~'),\n );\n};\n\n/**\n * Normalizes a JSON Pointer string to a canonical form.\n *\n * - Ensures the pointer starts with '#'.\n * - Removes trailing slashes (except for root).\n * - Collapses multiple consecutive slashes into one.\n * - Trims whitespace from the input.\n *\n * @param pointer - The JSON Pointer string to normalize.\n * @returns The normalized JSON Pointer string.\n */\nexport const normalizeJsonPointer = (pointer: string): string => {\n let normalized = pointer.trim();\n if (!normalized.startsWith('#')) {\n normalized = `#${normalized}`;\n }\n // Remove trailing slashes (except for root)\n if (normalized.length > 1 && normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n // Collapse multiple slashes\n normalized = normalized.replace(/\\/+/g, '/');\n return normalized;\n};\n\n/**\n * Encode path as JSON Pointer (RFC 6901).\n *\n * @param path\n * @returns\n */\nexport const pathToJsonPointer = (\n path: ReadonlyArray<string | number>,\n): string => {\n const segments = path.map(encodeJsonPointerSegment).join('/');\n return '#' + (segments ? `/${segments}` : '');\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 path = jsonPointerToPath(decodeURI($ref));\n\n let current = spec;\n\n for (const part of path) {\n const segment = part as keyof typeof current;\n if (current[segment] === undefined) {\n throw new Error(`Reference not found: ${$ref}`);\n }\n current = current[segment];\n }\n\n return current as T;\n};\n","import path from 'node:path';\n\nimport type { Package } from '../config/utils/package';\nimport { packageFactory } from '../config/utils/package';\nimport { GeneratedFile } from '../generate/file';\nimport type { PluginConfigMap } from '../plugins/config';\nimport { PluginInstance } from '../plugins/shared/utils/instance';\nimport type { PluginNames } from '../plugins/types';\nimport type { StringCase } from '../types/case';\nimport type { Config } from '../types/config';\nimport type { Files } from '../types/utils';\nimport type { Logger } from '../utils/logger';\nimport { resolveRef } from '../utils/ref';\nimport type { IR } from './types';\n\nexport interface ContextFile {\n /**\n * Define casing for identifiers in this file.\n */\n case?: StringCase;\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 * Relative file path to the output path.\n *\n * @example\n * 'bar/foo.ts'\n */\n path: string;\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 /** Logger instance */\n public logger: Logger;\n /**\n * The package metadata and utilities for the current context, constructed\n * from the provided dependencies. Used for managing package-related\n * information such as name, version, and dependency resolution during\n * code generation.\n */\n public package: Package;\n /**\n * A map of registered plugin instances, keyed by plugin name. Plugins are\n * registered through the `registerPlugin` method and can be accessed by\n * their configured name from the config.\n */\n public plugins: Partial<\n Record<PluginNames, PluginInstance<PluginConfigMap[keyof PluginConfigMap]>>\n > = {};\n /**\n * Resolved specification from `input`.\n */\n public spec: Spec;\n\n constructor({\n config,\n dependencies,\n logger,\n spec,\n }: {\n config: Config;\n dependencies: Record<string, string>;\n logger: Logger;\n spec: Spec;\n }) {\n this.config = config;\n this.logger = logger;\n this.package = packageFactory(dependencies);\n this.spec = spec;\n }\n\n /**\n * Create and return a new TypeScript file. Also set the current file context\n * to the newly created file.\n */\n public createFile(file: ContextFile): GeneratedFile {\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 GeneratedFile({\n case: file.case,\n dir: outputDir,\n exportFromIndex: file.exportFromIndex,\n id: file.id,\n name: `${outputParts[outputParts.length - 1]}.ts`,\n });\n this.files[file.id] = createdFile;\n return createdFile;\n }\n\n /**\n * Returns a resolved and dereferenced schema from `spec`.\n */\n public dereference<T>(schema: { $ref: string }) {\n const resolved = this.resolveRef<T>(schema.$ref);\n const dereferenced = {\n ...schema,\n ...resolved,\n } as T;\n // @ts-expect-error\n delete dereferenced.$ref;\n return dereferenced;\n }\n\n /**\n * Returns a specific file by ID from `files`.\n */\n public file({ id }: Pick<ContextFile, 'id'>): GeneratedFile | undefined {\n return this.files[id];\n }\n\n /**\n * Registers a new plugin to the global context.\n *\n * @param name Plugin name.\n * @returns Registered plugin instance.\n */\n private registerPlugin<T extends PluginNames>(\n name: T,\n ): PluginInstance<PluginConfigMap[T]> {\n const plugin = this.config.plugins[name]!;\n const instance = new PluginInstance({\n api: plugin.api,\n config: plugin.config as any,\n context: this as any,\n dependencies: plugin.dependencies ?? [],\n handler: plugin.handler,\n name: plugin.name,\n output: plugin.output!,\n });\n this.plugins[instance.name] = instance;\n return instance;\n }\n\n /**\n * Registers all plugins in the order specified by the configuration and returns\n * an array of the registered PluginInstance objects. Each plugin is instantiated\n * and added to the context's plugins map.\n *\n * @returns {ReadonlyArray<PluginInstance>} An array of registered plugin instances in order.\n */\n public registerPlugins(): ReadonlyArray<PluginInstance> {\n return this.config.pluginOrder.map((name) => this.registerPlugin(name));\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","import type { Pagination } from './pagination';\nimport type { IR } from './types';\n\nconst getPaginationSchema = ({\n context,\n parameter,\n}: {\n context: IR.Context;\n parameter: IR.ParameterObject;\n}): IR.SchemaObject | undefined => {\n if (!parameter.pagination) {\n return;\n }\n\n if (parameter.pagination === true) {\n return parameter.schema;\n }\n\n let schema = parameter.schema;\n if (schema.$ref) {\n schema = context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n }\n\n return schema.properties![parameter.pagination]!;\n};\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 context,\n parameters,\n}: {\n context: IR.Context;\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 ? parameter.name\n : `${parameter.name}.${parameter.pagination}`,\n schema: getPaginationSchema({ context, parameter })!,\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 ? parameter.name\n : `${parameter.name}.${parameter.pagination}`,\n schema: getPaginationSchema({ context, parameter })!,\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 ? parameter.name\n : `${parameter.name}.${parameter.pagination}`,\n schema: getPaginationSchema({ context, parameter })!,\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 ? parameter.name\n : `${parameter.name}.${parameter.pagination}`,\n schema: getPaginationSchema({ context, parameter })!,\n };\n }\n }\n\n return;\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 detectFormat = true,\n schema,\n}: {\n detectFormat?: boolean;\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 constant = item.const !== undefined ? `const-${item.const}` : '';\n const format =\n item.format !== undefined && detectFormat\n ? `format-${item.format}`\n : '';\n const typeId = `${item.$ref ?? ''}${item.type ?? ''}${constant}${format}`;\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 let result = { ...schema };\n result.items = uniqueItems;\n\n if (\n result.items.length <= 1 &&\n result.type !== 'array' &&\n result.type !== 'enum' &&\n result.type !== 'tuple'\n ) {\n // bring the only item up to clean up the schema\n const liftedSchema = result.items[0];\n delete result.logicalOperator;\n delete result.items;\n result = {\n ...result,\n ...liftedSchema,\n };\n }\n\n // exclude unknown if it's the only type left\n if (result.type === 'unknown') {\n return {} as T;\n }\n\n return result;\n};\n","export const deepClone = <T>(obj: T): T => JSON.parse(JSON.stringify(obj));\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 { mergeSchemaAccessScopes } from '../openApi/shared/utils/schema';\nimport type { IR } from './types';\n\nconst assignItems = ({\n items,\n schema,\n}: {\n items: Array<IR.SchemaObject>;\n schema: IR.SchemaObject;\n}) => {\n for (const item of items) {\n schema.accessScopes = mergeSchemaAccessScopes(\n schema.accessScopes,\n item.accessScopes,\n );\n }\n schema.items = items;\n};\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 assignItems({ items, schema });\n return schema;\n }\n\n if (items.length !== 1) {\n assignItems({ items, schema });\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 assignItems({ items, schema });\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 createOperationKey = ({\n method,\n path,\n}: {\n method: string;\n path: string;\n}) => `${method.toUpperCase()} ${path}`;\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({\n context,\n parameters: operation.parameters,\n });\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({\n context,\n parameters: operation.parameters,\n });\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 { 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 { createOperationKey } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { stringCase } from '../../../utils/stringCase';\nimport { sanitizeNamespaceIdentifier } from '../../common/parser/sanitize';\nimport type { State } from '../types/state';\n\nexport const httpMethods = [\n 'delete',\n 'get',\n 'head',\n 'options',\n 'patch',\n 'post',\n 'put',\n 'trace',\n] as const;\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 const { output } = context.config;\n const targetCase =\n (output !== undefined && typeof output === 'object' && 'case' in output\n ? output.case\n : undefined) ?? 'camelCase';\n\n if (\n id &&\n (!context.config.plugins['@hey-api/sdk'] ||\n context.config.plugins['@hey-api/sdk'].config.operationId)\n ) {\n result = stringCase({\n case: targetCase,\n value: sanitizeNamespaceIdentifier(id),\n });\n } else {\n const pathWithoutPlaceholders = 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: targetCase,\n value: `${method}-${pathWithoutPlaceholders}`,\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 state.ids.set(result, createOperationKey({ method, path }));\n\n return result;\n};\n","import { createOperationKey } from '../../../ir/operation';\nimport type { Config } from '../../../types/config';\nimport type { Logger } from '../../../utils/logger';\nimport type { PathItemObject, PathsObject } from '../../3.1.x/types/spec';\nimport type { OpenApi } from '../../types';\nimport type { ResourceMetadata } from '../graph/meta';\nimport { httpMethods } from './operation';\n\ntype FilterNamespace =\n | 'body'\n | 'operation'\n | 'parameter'\n | 'response'\n | 'schema'\n | 'unknown';\n\nconst namespaceNeedle = '/';\n\nexport const addNamespace = (\n namespace: FilterNamespace,\n value: string = '',\n): string => `${namespace}${namespaceNeedle}${value}`;\n\nexport const removeNamespace = (\n key: string,\n): {\n name: string;\n namespace: FilterNamespace;\n} => {\n const index = key.indexOf(namespaceNeedle);\n const name = key.slice(index + 1);\n return {\n name,\n namespace: key.slice(0, index)! as FilterNamespace,\n };\n};\n\n/**\n * Converts reference strings from OpenAPI $ref keywords into namespaces.\n *\n * @example '#/components/schemas/Foo' -> 'schema'\n */\nexport const stringToNamespace = (value: string): FilterNamespace => {\n switch (value) {\n case 'parameters':\n return 'parameter';\n case 'requestBodies':\n return 'body';\n case 'responses':\n return 'response';\n case 'definitions':\n case 'schemas':\n return 'schema';\n default:\n return 'unknown';\n }\n};\n\ntype FiltersConfigToState<T> = {\n [K in keyof T]-?: NonNullable<T[K]> extends ReadonlyArray<infer U>\n ? Set<U>\n : NonNullable<T[K]> extends object\n ? FiltersConfigToState<NonNullable<T[K]>>\n : T[K];\n};\n\nexport type Filters = FiltersConfigToState<\n NonNullable<Config['parser']['filters']>\n>;\n\ninterface SetAndRegExps {\n regexps: Array<RegExp>;\n set: Set<string>;\n}\n\nconst createFiltersSetAndRegExps = (\n type: FilterNamespace,\n filters: ReadonlyArray<string> | undefined,\n): SetAndRegExps => {\n const keys: Array<string> = [];\n const regexps: Array<RegExp> = [];\n if (filters) {\n for (const value of filters) {\n if (value.startsWith('/') && value.endsWith('/')) {\n regexps.push(new RegExp(value.slice(1, value.length - 1)));\n } else {\n keys.push(addNamespace(type, value));\n }\n }\n }\n return {\n regexps,\n set: new Set(keys),\n };\n};\n\ninterface CollectFiltersSetFromRegExps {\n excludeOperations: SetAndRegExps;\n excludeParameters: SetAndRegExps;\n excludeRequestBodies: SetAndRegExps;\n excludeResponses: SetAndRegExps;\n excludeSchemas: SetAndRegExps;\n includeOperations: SetAndRegExps;\n includeParameters: SetAndRegExps;\n includeRequestBodies: SetAndRegExps;\n includeResponses: SetAndRegExps;\n includeSchemas: SetAndRegExps;\n}\n\nconst collectFiltersSetFromRegExpsOpenApiV2 = ({\n excludeOperations,\n excludeSchemas,\n includeOperations,\n includeSchemas,\n spec,\n}: CollectFiltersSetFromRegExps & {\n spec: OpenApi.V2_0_X;\n}) => {\n if (\n (excludeOperations.regexps.length || includeOperations.regexps.length) &&\n spec.paths\n ) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n for (const method of httpMethods) {\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const key = createOperationKey({ method, path });\n if (excludeOperations.regexps.some((regexp) => regexp.test(key))) {\n excludeOperations.set.add(addNamespace('operation', key));\n }\n if (includeOperations.regexps.some((regexp) => regexp.test(key))) {\n includeOperations.set.add(addNamespace('operation', key));\n }\n }\n }\n }\n\n if (spec.definitions) {\n // TODO: add parameters\n\n if (excludeSchemas.regexps.length || includeSchemas.regexps.length) {\n for (const key of Object.keys(spec.definitions)) {\n if (excludeSchemas.regexps.some((regexp) => regexp.test(key))) {\n excludeSchemas.set.add(addNamespace('schema', key));\n }\n if (includeSchemas.regexps.some((regexp) => regexp.test(key))) {\n includeSchemas.set.add(addNamespace('schema', key));\n }\n }\n }\n }\n};\n\nconst collectFiltersSetFromRegExpsOpenApiV3 = ({\n excludeOperations,\n excludeParameters,\n excludeRequestBodies,\n excludeResponses,\n excludeSchemas,\n includeOperations,\n includeParameters,\n includeRequestBodies,\n includeResponses,\n includeSchemas,\n spec,\n}: CollectFiltersSetFromRegExps & {\n spec: OpenApi.V3_0_X | OpenApi.V3_1_X;\n}) => {\n if (\n (excludeOperations.regexps.length || includeOperations.regexps.length) &&\n spec.paths\n ) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n for (const method of httpMethods) {\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const key = createOperationKey({ method, path });\n if (excludeOperations.regexps.some((regexp) => regexp.test(key))) {\n excludeOperations.set.add(addNamespace('operation', key));\n }\n if (includeOperations.regexps.some((regexp) => regexp.test(key))) {\n includeOperations.set.add(addNamespace('operation', key));\n }\n }\n }\n }\n\n if (spec.components) {\n if (\n (excludeParameters.regexps.length || includeParameters.regexps.length) &&\n spec.components.parameters\n ) {\n for (const key of Object.keys(spec.components.parameters)) {\n if (excludeParameters.regexps.some((regexp) => regexp.test(key))) {\n excludeParameters.set.add(addNamespace('parameter', key));\n }\n if (includeParameters.regexps.some((regexp) => regexp.test(key))) {\n includeParameters.set.add(addNamespace('parameter', key));\n }\n }\n }\n\n if (\n (excludeRequestBodies.regexps.length ||\n includeRequestBodies.regexps.length) &&\n spec.components.requestBodies\n ) {\n for (const key of Object.keys(spec.components.requestBodies)) {\n if (excludeRequestBodies.regexps.some((regexp) => regexp.test(key))) {\n excludeRequestBodies.set.add(addNamespace('body', key));\n }\n if (includeRequestBodies.regexps.some((regexp) => regexp.test(key))) {\n includeRequestBodies.set.add(addNamespace('body', key));\n }\n }\n }\n\n if (\n (excludeResponses.regexps.length || includeResponses.regexps.length) &&\n spec.components.responses\n ) {\n for (const key of Object.keys(spec.components.responses)) {\n if (excludeResponses.regexps.some((regexp) => regexp.test(key))) {\n excludeResponses.set.add(addNamespace('response', key));\n }\n if (includeResponses.regexps.some((regexp) => regexp.test(key))) {\n includeResponses.set.add(addNamespace('response', key));\n }\n }\n }\n\n if (\n (excludeSchemas.regexps.length || includeSchemas.regexps.length) &&\n spec.components.schemas\n ) {\n for (const key of Object.keys(spec.components.schemas)) {\n if (excludeSchemas.regexps.some((regexp) => regexp.test(key))) {\n excludeSchemas.set.add(addNamespace('schema', key));\n }\n if (includeSchemas.regexps.some((regexp) => regexp.test(key))) {\n includeSchemas.set.add(addNamespace('schema', key));\n }\n }\n }\n }\n};\n\nconst collectFiltersSetFromRegExps = ({\n spec,\n ...filters\n}: CollectFiltersSetFromRegExps & {\n spec: OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X;\n}): void => {\n if ('swagger' in spec) {\n collectFiltersSetFromRegExpsOpenApiV2({ ...filters, spec });\n } else {\n collectFiltersSetFromRegExpsOpenApiV3({ ...filters, spec });\n }\n};\n\nexport const createFilters = (\n config: Config['parser']['filters'],\n spec: OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X,\n logger: Logger,\n): Filters => {\n const eventCreateFilters = logger.timeEvent('create-filters');\n const excludeOperations = createFiltersSetAndRegExps(\n 'operation',\n config?.operations?.exclude,\n );\n const includeOperations = createFiltersSetAndRegExps(\n 'operation',\n config?.operations?.include,\n );\n const excludeParameters = createFiltersSetAndRegExps(\n 'parameter',\n config?.parameters?.exclude,\n );\n const includeParameters = createFiltersSetAndRegExps(\n 'parameter',\n config?.parameters?.include,\n );\n const excludeRequestBodies = createFiltersSetAndRegExps(\n 'body',\n config?.requestBodies?.exclude,\n );\n const includeRequestBodies = createFiltersSetAndRegExps(\n 'body',\n config?.requestBodies?.include,\n );\n const excludeResponses = createFiltersSetAndRegExps(\n 'response',\n config?.responses?.exclude,\n );\n const includeResponses = createFiltersSetAndRegExps(\n 'response',\n config?.responses?.include,\n );\n const excludeSchemas = createFiltersSetAndRegExps(\n 'schema',\n config?.schemas?.exclude,\n );\n const includeSchemas = createFiltersSetAndRegExps(\n 'schema',\n config?.schemas?.include,\n );\n\n collectFiltersSetFromRegExps({\n excludeOperations,\n excludeParameters,\n excludeRequestBodies,\n excludeResponses,\n excludeSchemas,\n includeOperations,\n includeParameters,\n includeRequestBodies,\n includeResponses,\n includeSchemas,\n spec,\n });\n\n const filters: Filters = {\n deprecated: config?.deprecated ?? true,\n operations: {\n exclude: excludeOperations.set,\n include: includeOperations.set,\n },\n orphans: config?.orphans ?? false,\n parameters: {\n exclude: excludeParameters.set,\n include: includeParameters.set,\n },\n preserveOrder: config?.preserveOrder ?? false,\n requestBodies: {\n exclude: excludeRequestBodies.set,\n include: includeRequestBodies.set,\n },\n responses: {\n exclude: excludeResponses.set,\n include: includeResponses.set,\n },\n schemas: {\n exclude: excludeSchemas.set,\n include: includeSchemas.set,\n },\n tags: {\n exclude: new Set(config?.tags?.exclude),\n include: new Set(config?.tags?.include),\n },\n };\n eventCreateFilters.timeEnd();\n return filters;\n};\n\nexport const hasFilters = (config: Config['parser']['filters']): boolean => {\n if (!config) {\n return false;\n }\n\n // we explicitly want to strip orphans or deprecated\n if (config.orphans === false || config.deprecated === false) {\n return true;\n }\n\n return Boolean(\n config.operations?.exclude?.length ||\n config.operations?.include?.length ||\n config.parameters?.exclude?.length ||\n config.parameters?.include?.length ||\n config.requestBodies?.exclude?.length ||\n config.requestBodies?.include?.length ||\n config.responses?.exclude?.length ||\n config.responses?.include?.length ||\n config.schemas?.exclude?.length ||\n config.schemas?.include?.length ||\n config.tags?.exclude?.length ||\n config.tags?.include?.length,\n );\n};\n\n/**\n * Collect operations that satisfy the include/exclude filters and schema dependencies.\n */\nconst collectOperations = ({\n filters,\n parameters,\n requestBodies,\n resourceMetadata,\n responses,\n schemas,\n}: {\n filters: Filters;\n parameters: Set<string>;\n requestBodies: Set<string>;\n resourceMetadata: ResourceMetadata;\n responses: Set<string>;\n schemas: Set<string>;\n}): {\n operations: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = filters.operations.include.size\n ? filters.operations.include\n : new Set(resourceMetadata.operations.keys());\n const stack = [...initialSet];\n while (stack.length) {\n const key = stack.pop()!;\n\n if (filters.operations.exclude.has(key) || finalSet.has(key)) {\n continue;\n }\n\n const node = resourceMetadata.operations.get(key);\n\n if (!node) {\n continue;\n }\n\n if (!filters.deprecated && node.deprecated) {\n continue;\n }\n\n if (\n filters.tags.exclude.size &&\n node.tags.size &&\n [...filters.tags.exclude].some((tag) => node.tags.has(tag))\n ) {\n continue;\n }\n\n if (\n filters.tags.include.size &&\n !new Set([...filters.tags.include].filter((tag) => node.tags.has(tag)))\n .size\n ) {\n continue;\n }\n\n // skip operation if it references any component not included\n if (\n [...node.dependencies].some((dependency) => {\n const { namespace } = removeNamespace(dependency);\n switch (namespace) {\n case 'body':\n return !requestBodies.has(dependency);\n case 'parameter':\n return !parameters.has(dependency);\n case 'response':\n return !responses.has(dependency);\n case 'schema':\n return !schemas.has(dependency);\n default:\n return false;\n }\n })\n ) {\n continue;\n }\n\n finalSet.add(key);\n }\n return { operations: finalSet };\n};\n\n/**\n * Collect parameters that satisfy the include/exclude filters and schema dependencies.\n */\nconst collectParameters = ({\n filters,\n resourceMetadata,\n schemas,\n}: {\n filters: Filters;\n resourceMetadata: ResourceMetadata;\n schemas: Set<string>;\n}): {\n parameters: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = filters.parameters.include.size\n ? filters.parameters.include\n : new Set(resourceMetadata.parameters.keys());\n const stack = [...initialSet];\n while (stack.length) {\n const key = stack.pop()!;\n\n if (filters.parameters.exclude.has(key) || finalSet.has(key)) {\n continue;\n }\n\n const node = resourceMetadata.parameters.get(key);\n\n if (!node) {\n continue;\n }\n\n if (!filters.deprecated && node.deprecated) {\n continue;\n }\n\n finalSet.add(key);\n\n if (!node.dependencies.size) {\n continue;\n }\n\n for (const dependency of node.dependencies) {\n const { namespace } = removeNamespace(dependency);\n switch (namespace) {\n case 'body': {\n if (filters.requestBodies.exclude.has(dependency)) {\n finalSet.delete(key);\n } else if (!finalSet.has(dependency)) {\n stack.push(dependency);\n }\n break;\n }\n case 'schema': {\n if (filters.schemas.exclude.has(dependency)) {\n finalSet.delete(key);\n } else if (!schemas.has(dependency)) {\n schemas.add(dependency);\n }\n break;\n }\n }\n }\n }\n return { parameters: finalSet };\n};\n\n/**\n * Collect request bodies that satisfy the include/exclude filters and schema dependencies.\n */\nconst collectRequestBodies = ({\n filters,\n resourceMetadata,\n schemas,\n}: {\n filters: Filters;\n resourceMetadata: ResourceMetadata;\n schemas: Set<string>;\n}): {\n requestBodies: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = filters.requestBodies.include.size\n ? filters.requestBodies.include\n : new Set(resourceMetadata.requestBodies.keys());\n const stack = [...initialSet];\n while (stack.length) {\n const key = stack.pop()!;\n\n if (filters.requestBodies.exclude.has(key) || finalSet.has(key)) {\n continue;\n }\n\n const node = resourceMetadata.requestBodies.get(key);\n\n if (!node) {\n continue;\n }\n\n if (!filters.deprecated && node.deprecated) {\n continue;\n }\n\n finalSet.add(key);\n\n if (!node.dependencies.size) {\n continue;\n }\n\n for (const dependency of node.dependencies) {\n const { namespace } = removeNamespace(dependency);\n switch (namespace) {\n case 'body': {\n if (filters.requestBodies.exclude.has(dependency)) {\n finalSet.delete(key);\n } else if (!finalSet.has(dependency)) {\n stack.push(dependency);\n }\n break;\n }\n case 'schema': {\n if (filters.schemas.exclude.has(dependency)) {\n finalSet.delete(key);\n } else if (!schemas.has(dependency)) {\n schemas.add(dependency);\n }\n break;\n }\n }\n }\n }\n return { requestBodies: finalSet };\n};\n\n/**\n * Collect responses that satisfy the include/exclude filters and schema dependencies.\n */\nconst collectResponses = ({\n filters,\n resourceMetadata,\n schemas,\n}: {\n filters: Filters;\n resourceMetadata: ResourceMetadata;\n schemas: Set<string>;\n}): {\n responses: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = filters.responses.include.size\n ? filters.responses.include\n : new Set(resourceMetadata.responses.keys());\n const stack = [...initialSet];\n while (stack.length) {\n const key = stack.pop()!;\n\n if (filters.responses.exclude.has(key) || finalSet.has(key)) {\n continue;\n }\n\n const node = resourceMetadata.responses.get(key);\n\n if (!node) {\n continue;\n }\n\n if (!filters.deprecated && node.deprecated) {\n continue;\n }\n\n finalSet.add(key);\n\n if (!node.dependencies.size) {\n continue;\n }\n\n for (const dependency of node.dependencies) {\n const { namespace } = removeNamespace(dependency);\n switch (namespace) {\n case 'body': {\n if (filters.requestBodies.exclude.has(dependency)) {\n finalSet.delete(key);\n } else if (!finalSet.has(dependency)) {\n stack.push(dependency);\n }\n break;\n }\n case 'schema': {\n if (filters.schemas.exclude.has(dependency)) {\n finalSet.delete(key);\n } else if (!schemas.has(dependency)) {\n schemas.add(dependency);\n }\n break;\n }\n }\n }\n }\n return { responses: finalSet };\n};\n\n/**\n * Collect schemas that satisfy the include/exclude filters.\n */\nconst collectSchemas = ({\n filters,\n resourceMetadata,\n}: {\n filters: Filters;\n resourceMetadata: ResourceMetadata;\n}): {\n schemas: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = filters.schemas.include.size\n ? filters.schemas.include\n : new Set(resourceMetadata.schemas.keys());\n const stack = [...initialSet];\n while (stack.length) {\n const key = stack.pop()!;\n\n if (filters.schemas.exclude.has(key) || finalSet.has(key)) {\n continue;\n }\n\n const node = resourceMetadata.schemas.get(key);\n\n if (!node) {\n continue;\n }\n\n if (!filters.deprecated && node.deprecated) {\n continue;\n }\n\n finalSet.add(key);\n\n if (!node.dependencies.size) {\n continue;\n }\n\n for (const dependency of node.dependencies) {\n const { namespace } = removeNamespace(dependency);\n switch (namespace) {\n case 'schema': {\n if (\n !finalSet.has(dependency) &&\n !filters.schemas.exclude.has(dependency)\n ) {\n stack.push(dependency);\n }\n break;\n }\n }\n }\n }\n return { schemas: finalSet };\n};\n\n/**\n * Drop parameters that depend on already excluded parameters.\n */\nconst dropExcludedParameters = ({\n filters,\n parameters,\n resourceMetadata,\n}: {\n filters: Filters;\n parameters: Set<string>;\n resourceMetadata: ResourceMetadata;\n}): void => {\n if (!filters.parameters.exclude.size) {\n return;\n }\n\n for (const key of parameters) {\n const node = resourceMetadata.parameters.get(key);\n\n if (!node?.dependencies.size) {\n continue;\n }\n\n for (const excludedKey of filters.parameters.exclude) {\n if (node.dependencies.has(excludedKey)) {\n parameters.delete(key);\n break;\n }\n }\n }\n};\n\n/**\n * Drop request bodies that depend on already excluded request bodies.\n */\nconst dropExcludedRequestBodies = ({\n filters,\n requestBodies,\n resourceMetadata,\n}: {\n filters: Filters;\n requestBodies: Set<string>;\n resourceMetadata: ResourceMetadata;\n}): void => {\n if (!filters.requestBodies.exclude.size) {\n return;\n }\n\n for (const key of requestBodies) {\n const node = resourceMetadata.requestBodies.get(key);\n\n if (!node?.dependencies.size) {\n continue;\n }\n\n for (const excludedKey of filters.requestBodies.exclude) {\n if (node.dependencies.has(excludedKey)) {\n requestBodies.delete(key);\n break;\n }\n }\n }\n};\n\n/**\n * Drop responses that depend on already excluded responses.\n */\nconst dropExcludedResponses = ({\n filters,\n resourceMetadata,\n responses,\n}: {\n filters: Filters;\n resourceMetadata: ResourceMetadata;\n responses: Set<string>;\n}): void => {\n if (!filters.responses.exclude.size) {\n return;\n }\n\n for (const key of responses) {\n const node = resourceMetadata.responses.get(key);\n\n if (!node?.dependencies.size) {\n continue;\n }\n\n for (const excludedKey of filters.responses.exclude) {\n if (node.dependencies.has(excludedKey)) {\n responses.delete(key);\n break;\n }\n }\n }\n};\n\n/**\n * Drop schemas that depend on already excluded schemas.\n */\nconst dropExcludedSchemas = ({\n filters,\n resourceMetadata,\n schemas,\n}: {\n filters: Filters;\n resourceMetadata: ResourceMetadata;\n schemas: Set<string>;\n}): void => {\n if (!filters.schemas.exclude.size) {\n return;\n }\n\n for (const key of schemas) {\n const node = resourceMetadata.schemas.get(key);\n\n if (!node?.dependencies.size) {\n continue;\n }\n\n for (const excludedKey of filters.schemas.exclude) {\n if (node.dependencies.has(excludedKey)) {\n schemas.delete(key);\n break;\n }\n }\n }\n};\n\nconst dropOrphans = ({\n operationDependencies,\n parameters,\n requestBodies,\n responses,\n schemas,\n}: {\n operationDependencies: Set<string>;\n parameters: Set<string>;\n requestBodies: Set<string>;\n responses: Set<string>;\n schemas: Set<string>;\n}) => {\n for (const key of schemas) {\n if (!operationDependencies.has(key)) {\n schemas.delete(key);\n }\n }\n for (const key of parameters) {\n if (!operationDependencies.has(key)) {\n parameters.delete(key);\n }\n }\n for (const key of requestBodies) {\n if (!operationDependencies.has(key)) {\n requestBodies.delete(key);\n }\n }\n for (const key of responses) {\n if (!operationDependencies.has(key)) {\n responses.delete(key);\n }\n }\n};\n\nconst collectOperationDependencies = ({\n operations,\n resourceMetadata,\n}: {\n operations: Set<string>;\n resourceMetadata: ResourceMetadata;\n}): {\n operationDependencies: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = new Set(\n [...operations].flatMap((key) => [\n ...(resourceMetadata.operations.get(key)?.dependencies ?? []),\n ]),\n );\n const stack = [...initialSet];\n while (stack.length) {\n const key = stack.pop()!;\n\n if (finalSet.has(key)) {\n continue;\n }\n\n finalSet.add(key);\n\n const { namespace } = removeNamespace(key);\n let dependencies: Set<string> | undefined;\n if (namespace === 'body') {\n dependencies = resourceMetadata.requestBodies.get(key)?.dependencies;\n } else if (namespace === 'operation') {\n dependencies = resourceMetadata.operations.get(key)?.dependencies;\n } else if (namespace === 'parameter') {\n dependencies = resourceMetadata.parameters.get(key)?.dependencies;\n } else if (namespace === 'response') {\n dependencies = resourceMetadata.responses.get(key)?.dependencies;\n } else if (namespace === 'schema') {\n dependencies = resourceMetadata.schemas.get(key)?.dependencies;\n }\n\n if (!dependencies?.size) {\n continue;\n }\n\n for (const dependency of dependencies) {\n if (!finalSet.has(dependency)) {\n stack.push(dependency);\n }\n }\n }\n return { operationDependencies: finalSet };\n};\n\nexport const createFilteredDependencies = ({\n filters,\n logger,\n resourceMetadata,\n}: {\n filters: Filters;\n logger: Logger;\n resourceMetadata: ResourceMetadata;\n}): {\n operations: Set<string>;\n parameters: Set<string>;\n requestBodies: Set<string>;\n responses: Set<string>;\n schemas: Set<string>;\n} => {\n const eventCreateFilteredDependencies = logger.timeEvent(\n 'create-filtered-dependencies',\n );\n const { schemas } = collectSchemas({ filters, resourceMetadata });\n const { parameters } = collectParameters({\n filters,\n resourceMetadata,\n schemas,\n });\n const { requestBodies } = collectRequestBodies({\n filters,\n resourceMetadata,\n schemas,\n });\n const { responses } = collectResponses({\n filters,\n resourceMetadata,\n schemas,\n });\n\n dropExcludedSchemas({ filters, resourceMetadata, schemas });\n dropExcludedParameters({ filters, parameters, resourceMetadata });\n dropExcludedRequestBodies({ filters, requestBodies, resourceMetadata });\n dropExcludedResponses({ filters, resourceMetadata, responses });\n\n // collect operations after dropping components\n const { operations } = collectOperations({\n filters,\n parameters,\n requestBodies,\n resourceMetadata,\n responses,\n schemas,\n });\n\n if (!filters.orphans && operations.size) {\n const { operationDependencies } = collectOperationDependencies({\n operations,\n resourceMetadata,\n });\n dropOrphans({\n operationDependencies,\n parameters,\n requestBodies,\n responses,\n schemas,\n });\n }\n\n eventCreateFilteredDependencies.timeEnd();\n return {\n operations,\n parameters,\n requestBodies,\n responses,\n schemas,\n };\n};\n","import { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { jsonPointerToPath } from '../../../utils/ref';\nimport { addNamespace, stringToNamespace } from '../utils/filter';\nimport type { Graph } from '../utils/graph';\nimport { httpMethods } from '../utils/operation';\n\nexport type ResourceMetadata = {\n operations: Map<\n string,\n {\n dependencies: Set<string>;\n deprecated: boolean;\n tags: Set<string>;\n }\n >;\n parameters: Map<\n string,\n {\n dependencies: Set<string>;\n deprecated: boolean;\n }\n >;\n requestBodies: Map<\n string,\n {\n dependencies: Set<string>;\n deprecated: boolean;\n }\n >;\n responses: Map<\n string,\n {\n dependencies: Set<string>;\n deprecated: boolean;\n }\n >;\n schemas: Map<\n string,\n {\n dependencies: Set<string>;\n deprecated: boolean;\n }\n >;\n};\n\n/**\n * Builds a resource metadata map from a Graph, matching the old Graph interface\n * for compatibility with filtering code.\n */\nexport const buildResourceMetadata = (\n graph: Graph,\n logger: Logger,\n): {\n resourceMetadata: ResourceMetadata;\n} => {\n const eventBuildResourceMetadata = logger.timeEvent(\n 'build-resource-metadata',\n );\n const resourceMetadata: ResourceMetadata = {\n operations: new Map(),\n parameters: new Map(),\n requestBodies: new Map(),\n responses: new Map(),\n schemas: new Map(),\n };\n\n const getDependencies = (pointer: string): Set<string> => {\n const dependencies = new Set<string>();\n const nodeDeps = graph.allDependencies.get(pointer);\n if (nodeDeps?.size) {\n for (const dep of nodeDeps) {\n const path = jsonPointerToPath(dep);\n const type = path[path.length - 2];\n const name = path[path.length - 1];\n if (type && name) {\n const namespace = stringToNamespace(type);\n if (namespace === 'unknown') {\n console.warn(`unsupported type: ${type}`);\n }\n dependencies.add(addNamespace(namespace, name));\n }\n }\n }\n return dependencies;\n };\n\n // Process each node to find top-level resources\n for (const [pointer, nodeInfo] of graph.nodes) {\n // const node = nodeInfo.node as Record<string, unknown>;\n const path = jsonPointerToPath(pointer);\n\n // OpenAPI 3.x\n if (path[0] === 'components') {\n if (path.length === 3) {\n if (path[1] === 'schemas') {\n // Schema: #/components/schemas/{name}\n const name = path[path.length - 1]!;\n resourceMetadata.schemas.set(addNamespace('schema', name), {\n dependencies: getDependencies(pointer),\n deprecated: nodeInfo.deprecated ?? false,\n });\n } else if (path[1] === 'parameters') {\n // Parameter: #/components/parameters/{name}\n const name = path[path.length - 1]!;\n resourceMetadata.parameters.set(addNamespace('parameter', name), {\n dependencies: getDependencies(pointer),\n deprecated: nodeInfo.deprecated ?? false,\n });\n } else if (path[1] === 'requestBodies') {\n // RequestBody: #/components/requestBodies/{name}\n const name = path[path.length - 1]!;\n resourceMetadata.requestBodies.set(addNamespace('body', name), {\n dependencies: getDependencies(pointer),\n deprecated: nodeInfo.deprecated ?? false,\n });\n } else if (path[1] === 'responses') {\n // Response: #/components/responses/{name}\n const name = path[path.length - 1]!;\n resourceMetadata.responses.set(addNamespace('response', name), {\n dependencies: getDependencies(pointer),\n deprecated: nodeInfo.deprecated ?? false,\n });\n }\n }\n continue;\n }\n\n if (path[0] === 'paths') {\n if (\n path.length === 3 &&\n httpMethods.includes(path[2] as (typeof httpMethods)[number])\n ) {\n // Operation: #/paths/{path}/{method}\n const method = path[path.length - 1]!;\n const operationPath = path.slice(1, -1).join('/');\n const operationKey = createOperationKey({\n method,\n path: operationPath,\n });\n resourceMetadata.operations.set(\n addNamespace('operation', operationKey),\n {\n dependencies: getDependencies(pointer),\n deprecated: nodeInfo.deprecated ?? false,\n tags: nodeInfo.tags ?? new Set(),\n },\n );\n }\n continue;\n }\n\n // OpenAPI 2.0\n if (path[0] === 'definitions') {\n if (path.length === 2) {\n // Schema: #/definitions/{name}\n const name = path[path.length - 1]!;\n resourceMetadata.schemas.set(addNamespace('schema', name), {\n dependencies: getDependencies(pointer),\n deprecated: nodeInfo.deprecated ?? false,\n });\n }\n continue;\n }\n }\n\n eventBuildResourceMetadata.timeEnd();\n return { resourceMetadata };\n};\n","import type { StringCase, StringName } from '../../../types/case';\nimport { stringCase } from '../../../utils/stringCase';\n\nexport const buildName = ({\n config,\n name,\n}: {\n config: {\n case: StringCase;\n name?: StringName;\n };\n name: string;\n}): string => {\n if (typeof config.name === 'function') {\n name = config.name(name);\n } else if (config.name) {\n const separator = config.case === 'preserve' ? '' : '-';\n name = config.name.replace('{{name}}', `${separator}${name}${separator}`);\n }\n\n return stringCase({ case: config.case, value: name });\n};\n","export const childSchemaRelationships = [\n ['additionalProperties', 'single'],\n ['allOf', 'array'],\n ['anyOf', 'array'],\n ['contains', 'single'],\n ['dependentSchemas', 'objectMap'],\n ['else', 'single'],\n ['if', 'single'],\n ['items', 'singleOrArray'],\n ['oneOf', 'array'],\n ['patternProperties', 'objectMap'],\n ['properties', 'objectMap'],\n ['propertyNames', 'single'],\n ['then', 'single'],\n] as const;\n","export const getSchemasObject = (\n spec: unknown,\n): Record<string, unknown> | undefined => {\n if (hasComponentsSchemasObject(spec)) {\n return (spec as any).components.schemas;\n }\n if (hasDefinitionsObject(spec)) {\n return (spec as any).definitions;\n }\n return;\n};\n\n/**\n * Checks if the given spec has a valid OpenAPI 3.x components.schemas object.\n * Returns true if present, false otherwise.\n */\nexport const hasComponentsSchemasObject = (spec: unknown): boolean =>\n typeof spec === 'object' &&\n spec !== null &&\n 'components' in spec &&\n typeof (spec as any).components === 'object' &&\n (spec as any).components !== null &&\n 'schemas' in (spec as any).components &&\n typeof (spec as any).components.schemas === 'object' &&\n (spec as any).components.schemas !== null;\n\n/**\n * Checks if the given spec has a valid OpenAPI 2.0 definitions object.\n * Returns true if present, false otherwise.\n */\nexport const hasDefinitionsObject = (spec: unknown): boolean =>\n typeof spec === 'object' &&\n spec !== null &&\n 'definitions' in spec &&\n typeof (spec as any).definitions === 'object' &&\n (spec as any).definitions !== null;\n","import type { Config } from '../../../types/config';\nimport { jsonPointerToPath } from '../../../utils/ref';\nimport { buildName } from '../utils/name';\nimport { deepClone } from '../utils/schema';\nimport { childSchemaRelationships } from '../utils/schemaChildRelationships';\nimport { getSchemasObject } from '../utils/transforms';\nimport {\n getUniqueComponentName,\n isPathRootSchema,\n specToSchemasPointerNamespace,\n} from './utils';\n\ntype EnumsConfig = Config['parser']['transforms']['enums'];\n\n/**\n * Generate a unique, structural signature for an enum schema for deduplication.\n * Only considers 'type' and sorted 'enum' values, ignoring other fields.\n *\n * @param schema - The schema object to analyze\n * @returns A string signature if the schema is an enum, otherwise undefined\n */\nconst getEnumSignature = (schema: unknown): string | undefined => {\n if (\n !schema ||\n typeof schema !== 'object' ||\n !('enum' in schema) ||\n !(schema.enum instanceof Array)\n ) {\n return;\n }\n // Use type + sorted enum values for signature\n const type = ('type' in schema ? schema.type : undefined) || '';\n const values = [...schema.enum].sort();\n return JSON.stringify({ type, values });\n};\n\ntype NodeInfo = {\n key: string | number | null;\n node: unknown;\n parent: unknown;\n path: ReadonlyArray<string | number>;\n};\n\n/**\n * Recursively walk all schemas in the OpenAPI spec, visiting every object/array\n * that could contain an enum. Calls the visitor with node info for each.\n *\n * @param key - The key of the current node\n * @param node - The current node\n * @param parent - The parent node\n * @param path - The path to the current node\n * @param visitor - Function to call for each visited node\n */\nconst walkSchemas = ({\n key,\n node,\n parent,\n path,\n visitor,\n}: NodeInfo & {\n visitor: (nodeInfo: NodeInfo) => void;\n}) => {\n if (!node || typeof node !== 'object' || node instanceof Array) return;\n\n const value = node as Record<string, unknown>;\n\n if (\n 'type' in value ||\n 'enum' in value ||\n childSchemaRelationships.some(([keyword]) => keyword in value)\n ) {\n visitor({ key, node, parent, path });\n }\n\n for (const [k, v] of Object.entries(value)) {\n if (typeof v === 'object' && v !== null) {\n if (v instanceof Array) {\n v.forEach((item, index) =>\n walkSchemas({\n key: index,\n node: item,\n parent: v,\n path: [...path, k, index],\n visitor,\n }),\n );\n } else {\n walkSchemas({\n key: k,\n node: v,\n parent: node,\n path: [...path, k],\n visitor,\n });\n }\n }\n }\n};\n\n/**\n * Inlines all root/top-level enums by replacing $refs to them with the actual enum schema,\n * and then removes the now-unreferenced root enums from the schemas object.\n *\n * @param spec - The OpenAPI spec object to transform\n */\nconst inlineMode = ({ spec }: { spec: unknown }) => {\n const schemasObj = getSchemasObject(spec);\n if (!schemasObj) {\n return;\n }\n\n const schemasPointerNamespace = specToSchemasPointerNamespace(spec);\n\n // Collect all root enums\n const rootEnums: Record<string, unknown> = {};\n for (const [name, schema] of Object.entries(schemasObj)) {\n const signature = getEnumSignature(schema);\n if (signature) {\n rootEnums[`${schemasPointerNamespace}${name}`] = schema;\n }\n }\n\n // Walk the spec and replace $refs to root enums with inline enum schemas\n const replaceEnumRefs = (node: unknown) => {\n if (node instanceof Array) {\n node.forEach(replaceEnumRefs);\n } else if (node && typeof node === 'object') {\n for (const [k, v] of Object.entries(node)) {\n if (k === '$ref' && typeof v === 'string' && v in rootEnums) {\n // Replace $ref with a deep clone of the enum schema\n Object.assign(node, deepClone(rootEnums[v]));\n delete (node as Record<string, unknown>)['$ref'];\n } else {\n replaceEnumRefs(v);\n }\n }\n }\n };\n replaceEnumRefs(spec);\n\n // Remove unreferenced root enums\n for (const pointer of Object.keys(rootEnums)) {\n const path = jsonPointerToPath(pointer);\n const name = path[path.length - 1]!;\n if (name) {\n delete schemasObj[name];\n }\n }\n};\n\n/**\n * Promotes all inline enums to reusable root components (if mode is 'root'),\n * deduplicates by signature, and replaces inline enums with $refs.\n *\n * Naming, casing, and deduplication are controlled by the enums transform config.\n * Existing root enums are reused if structurally identical.\n *\n * @param spec - The OpenAPI spec object to transform\n * @param config - The enums transform config\n */\nconst rootMode = ({ config, spec }: { config: EnumsConfig; spec: unknown }) => {\n const schemasObj = getSchemasObject(spec);\n if (!schemasObj) {\n return;\n }\n\n // Build a map of existing root enum signatures to their names for deduplication\n const rootEnumSignatures: Record<string, string> = {};\n for (const [name, schema] of Object.entries(schemasObj)) {\n const signature = getEnumSignature(schema);\n if (signature) {\n rootEnumSignatures[signature] = name;\n }\n }\n\n // Collect all inline enums (not at root schemas)\n const inlineEnums: Array<{\n key: string | number | null;\n node: unknown;\n parent: unknown;\n path: ReadonlyArray<string | number>;\n signature: string;\n }> = [];\n\n walkSchemas({\n key: null,\n node: spec,\n parent: null,\n path: [],\n visitor: (nodeInfo) => {\n if (!isPathRootSchema(nodeInfo.path)) {\n const signature = getEnumSignature(nodeInfo.node);\n if (signature) {\n inlineEnums.push({ ...nodeInfo, signature });\n }\n }\n },\n });\n\n // Deduplicate and assign unique names for promoted enums\n const signatureToName: Record<string, string | undefined> = {};\n const signatureToSchema: Record<string, unknown> = {};\n\n for (const { key, node, signature } of inlineEnums) {\n if (signature in signatureToName) {\n // Already handled\n continue;\n }\n\n // Use existing root enum if available\n if (signature in rootEnumSignatures) {\n signatureToName[signature] = rootEnumSignatures[signature];\n continue;\n }\n\n // Generate a unique name for the new root enum using config\n const base = buildName({\n config,\n name:\n typeof node === 'object' &&\n node &&\n 'title' in node &&\n typeof node.title === 'string'\n ? node.title\n : String(key),\n });\n const name = getUniqueComponentName({\n base,\n components: schemasObj,\n extraComponents: Object.values(signatureToName),\n });\n signatureToName[signature] = name;\n signatureToSchema[signature] = node;\n }\n\n // Add new root enums to the schemas object\n for (const [signature, name] of Object.entries(signatureToName)) {\n // Only add if not already present\n const schema = signatureToSchema[signature];\n if (name && !(name in schemasObj) && schema && typeof schema === 'object') {\n schemasObj[name] = schema;\n }\n }\n\n // Replace inline enums with $ref to the new root enum\n const schemasPointerNamespace = specToSchemasPointerNamespace(spec);\n for (const { key, parent, signature } of inlineEnums) {\n const name = signatureToName[signature];\n if (name && key != null && parent && typeof parent === 'object') {\n (parent as Record<string, unknown>)[key] = {\n $ref: `${schemasPointerNamespace}${name}`,\n };\n }\n }\n};\n\n/**\n * Applies the enums transform according to the configured mode ('inline' or 'root').\n *\n * - In 'inline' mode, all root enums are inlined and removed.\n * - In 'root' mode, all inline enums are promoted to root components and deduplicated.\n *\n * @param config - The enums transform config\n * @param spec - The OpenAPI spec object to transform\n */\nexport const enumsTransform = ({\n config,\n spec,\n}: {\n config: EnumsConfig;\n spec: unknown;\n}) => {\n if (config.mode === 'inline') {\n inlineMode({ spec });\n return;\n }\n\n if (config.mode === 'root') {\n rootMode({ config, spec });\n return;\n }\n};\n","import type { Logger } from '../../../utils/logger';\nimport { normalizeJsonPointer, pathToJsonPointer } from '../../../utils/ref';\nimport { childSchemaRelationships } from './schemaChildRelationships';\n\n/**\n * Represents the possible access scopes for OpenAPI nodes.\n * - 'normal': Default scope for regular nodes.\n * - 'read': Node is read-only (e.g., readOnly: true).\n * - 'write': Node is write-only (e.g., writeOnly: true).\n */\nexport type Scope = 'normal' | 'read' | 'write';\n\n/**\n * Information about a node in the OpenAPI graph.\n *\n * @property deprecated - Whether the node is deprecated. Optional.\n * @property key - The property name or array index in the parent, or null for root.\n * @property node - The actual object at this pointer in the spec.\n * @property parentPointer - The JSON Pointer of the parent node, or null for root.\n * @property scopes - The set of access scopes for this node, if any. Optional.\n * @property tags - The set of tags for this node, if any. Optional.\n */\ntype NodeInfo = {\n /** Whether the node is deprecated. Optional. */\n deprecated?: boolean;\n /** The property name or array index in the parent, or null for root. */\n key: string | number | null;\n /** The actual object at this pointer in the spec. */\n node: unknown;\n /** The JSON Pointer of the parent node, or null for root. */\n parentPointer: string | null;\n /** The set of access scopes for this node, if any. Optional. */\n scopes?: Set<Scope>;\n /** The set of tags for this node, if any. Optional. */\n tags?: Set<string>;\n};\n\n/**\n * The main graph structure for OpenAPI node analysis.\n *\n * @property dependencies - For each node, the set of normalized JSON Pointers it references via $ref.\n * @property nodes - Map from normalized JSON Pointer to NodeInfo for every node in the spec.\n * @property reverseDependencies - For each node, the set of nodes that reference it via $ref.\n */\nexport type Graph = {\n /**\n * For each node, the set of all (transitive) normalized JSON Pointers it references via $ref anywhere in its subtree.\n * This includes both direct and indirect dependencies, making it useful for filtering, codegen, and tree-shaking.\n */\n allDependencies: Map<string, Set<string>>;\n /** For each node, the set of normalized JSON Pointers it references via $ref. */\n dependencies: Map<string, Set<string>>;\n /** Map from normalized JSON Pointer to NodeInfo for every node in the spec. */\n nodes: Map<string, NodeInfo>;\n /** For each node, the set of nodes that reference it via $ref. */\n reverseDependencies: Map<string, Set<string>>;\n};\n\n/**\n * Ensures every relevant child node (e.g., properties, items) in the graph has a `scopes` property.\n * If a node does not have its own scopes, it inherits from its parent if available.\n *\n * @param nodes - Map of JSON Pointer to NodeInfo.\n */\nexport const annotateChildScopes = (nodes: Graph['nodes']): void => {\n for (const [, nodeInfo] of nodes) {\n if (nodeInfo.scopes) continue;\n\n if (nodeInfo.parentPointer) {\n const parentInfo = nodes.get(nodeInfo.parentPointer);\n if (parentInfo?.scopes) {\n nodeInfo.scopes = new Set(parentInfo.scopes);\n }\n }\n }\n};\n\ninterface Cache {\n allDependencies: Map<string, Set<string>>;\n childDependencies: Map<string, Set<string>>;\n parentToChildren: Map<string, Array<string>>;\n}\n\n/**\n * Recursively collects all $ref dependencies in the subtree rooted at `pointer`.\n */\nconst collectAllDependenciesForPointer = ({\n cache,\n graph,\n pointer,\n visited,\n}: {\n cache: Cache;\n graph: Graph;\n pointer: string;\n visited: Set<string>;\n}): Set<string> => {\n const cached = cache.allDependencies.get(pointer);\n if (cached) {\n return cached;\n }\n\n if (visited.has(pointer)) {\n return new Set();\n }\n\n visited.add(pointer);\n\n const nodeInfo = graph.nodes.get(pointer);\n if (!nodeInfo) {\n return new Set();\n }\n\n const allDependencies = new Set<string>();\n\n // Add direct $ref dependencies for this node\n // (from the dependencies map, or by checking nodeInfo.node directly)\n // We'll use the dependencies map for consistency:\n const dependencies = graph.dependencies.get(pointer);\n if (dependencies) {\n for (const depPointer of dependencies) {\n allDependencies.add(depPointer);\n // Recursively collect dependencies of the referenced node\n const transitiveDependencies = collectAllDependenciesForPointer({\n cache,\n graph,\n pointer: depPointer,\n visited,\n });\n for (const dep of transitiveDependencies) {\n allDependencies.add(dep);\n }\n }\n }\n\n // Recursively collect dependencies of all children\n const children = cache.parentToChildren.get(pointer);\n if (children) {\n for (const childPointer of children) {\n let transitiveDependencies = cache.childDependencies.get(childPointer);\n if (!transitiveDependencies) {\n transitiveDependencies = collectAllDependenciesForPointer({\n cache,\n graph,\n pointer: childPointer,\n visited,\n });\n cache.childDependencies.set(childPointer, transitiveDependencies);\n }\n for (const dep of transitiveDependencies) {\n allDependencies.add(dep);\n }\n }\n }\n\n cache.allDependencies.set(pointer, allDependencies);\n return allDependencies;\n};\n\n/**\n * Propagates scopes through the graph using a worklist algorithm.\n * Each node's scopes will be updated to include any scopes inherited via $ref dependencies, combinator/child relationships, and parent relationships.\n * Handles cycles and deep chains efficiently.\n *\n * Whenever a node's scopes change, all dependents are notified:\n * - Its parent (if any)\n * - All nodes that reference it via $ref (reverse dependencies)\n * - Combinator parents (allOf/anyOf/oneOf) if applicable\n *\n * @param graph - The Graph structure containing nodes, dependencies, and reverseDependencies.\n */\nexport const propagateScopes = (graph: Graph): void => {\n const worklist: Set<string> = new Set(\n Array.from(graph.nodes.entries())\n .filter(([, nodeInfo]) => nodeInfo.scopes && nodeInfo.scopes.size > 0)\n .map(([pointer]) => pointer),\n );\n\n /**\n * Notifies all dependents of a node that its scopes may have changed.\n * Dependents include:\n * - The parent node (if any)\n * - All nodes that reference this node via $ref (reverse dependencies)\n * - Combinator parents (allOf/anyOf/oneOf) if this node is a combinator child\n *\n * @param pointer - The JSON pointer of the node whose dependents to notify\n * @param nodeInfo - The NodeInfo of the node\n * @param childPointer - (Optional) The pointer of the child, used to detect combinator parents\n */\n const notifyAllDependents = (\n pointer: string,\n nodeInfo: NodeInfo,\n childPointer?: string,\n ) => {\n if (nodeInfo.parentPointer) {\n worklist.add(nodeInfo.parentPointer);\n }\n const reverseDependencies = graph.reverseDependencies.get(pointer);\n if (reverseDependencies) {\n for (const dependentPointer of reverseDependencies) {\n worklist.add(dependentPointer);\n }\n }\n if (childPointer) {\n // If this is a combinator child, notify the combinator parent\n const combinatorChildMatch = childPointer.match(\n /(.*)\\/(allOf|anyOf|oneOf)\\/\\d+$/,\n );\n if (combinatorChildMatch) {\n const combinatorParentPointer = combinatorChildMatch[1];\n if (combinatorParentPointer) {\n worklist.add(combinatorParentPointer);\n }\n }\n }\n };\n\n /**\n * Propagates scopes from a child node to its parent node.\n * If the parent's scopes change, notifies all dependents.\n *\n * @param pointer - The parent node's pointer\n * @param nodeInfo - The parent node's NodeInfo\n * @param childPointer - The child node's pointer\n */\n const propagateChildScopes = (\n pointer: string,\n nodeInfo: NodeInfo,\n childPointer: string,\n ): void => {\n if (!nodeInfo?.scopes) return;\n const childInfo = graph.nodes.get(childPointer);\n if (!childInfo?.scopes) return;\n const changed = propagateScopesToNode(childInfo, nodeInfo);\n if (changed) {\n notifyAllDependents(pointer, nodeInfo, childPointer);\n }\n };\n\n while (worklist.size > 0) {\n const pointer = worklist.values().next().value!;\n worklist.delete(pointer);\n\n const nodeInfo = graph.nodes.get(pointer);\n if (!nodeInfo) continue;\n\n if (!nodeInfo.scopes) {\n nodeInfo.scopes = new Set();\n }\n\n const node = nodeInfo.node as Record<string, unknown>;\n\n // Propagate scopes from all child schema relationships (combinators, properties, etc.)\n for (const [keyword, type] of childSchemaRelationships) {\n if (!node || typeof node !== 'object' || !(keyword in node)) continue;\n const value = node[keyword];\n if (type === 'array' && value instanceof Array) {\n for (let index = 0; index < value.length; index++) {\n const childPointer = `${pointer}/${keyword}/${index}`;\n propagateChildScopes(pointer, nodeInfo, childPointer);\n }\n } else if (\n type === 'objectMap' &&\n typeof value === 'object' &&\n value !== null &&\n !(value instanceof Array)\n ) {\n for (const key of Object.keys(value)) {\n const childPointer = `${pointer}/${keyword}/${key}`;\n propagateChildScopes(pointer, nodeInfo, childPointer);\n }\n } else if (\n type === 'single' &&\n typeof value === 'object' &&\n value !== null\n ) {\n const childPointer = `${pointer}/${keyword}`;\n propagateChildScopes(pointer, nodeInfo, childPointer);\n } else if (type === 'singleOrArray') {\n if (value instanceof Array) {\n for (let index = 0; index < value.length; index++) {\n const childPointer = `${pointer}/${keyword}/${index}`;\n propagateChildScopes(pointer, nodeInfo, childPointer);\n }\n } else if (typeof value === 'object' && value !== null) {\n const childPointer = `${pointer}/${keyword}`;\n propagateChildScopes(pointer, nodeInfo, childPointer);\n }\n }\n }\n\n // Propagate scopes from $ref dependencies\n const dependencies = graph.dependencies.get(pointer);\n if (dependencies) {\n for (const depPointer of dependencies) {\n const depNode = graph.nodes.get(depPointer);\n if (depNode?.scopes) {\n const changed = propagateScopesToNode(depNode, nodeInfo);\n if (changed) {\n notifyAllDependents(pointer, nodeInfo);\n }\n }\n }\n }\n\n // Propagate scopes up the parent chain\n if (nodeInfo.parentPointer) {\n const parentInfo = graph.nodes.get(nodeInfo.parentPointer);\n if (parentInfo) {\n const changed = propagateScopesToNode(nodeInfo, parentInfo);\n if (changed) {\n notifyAllDependents(nodeInfo.parentPointer, parentInfo);\n }\n }\n }\n }\n};\n\n/**\n * Propagates scopes from one node to another.\n * Adds any scopes from fromNodeInfo to toNodeInfo that are not already present.\n * Returns true if any scopes were added, false otherwise.\n *\n * @param fromNodeInfo - The node to propagate scopes from\n * @param toNodeInfo - The node to propagate scopes to\n * @returns boolean - Whether any scopes were added\n */\nconst propagateScopesToNode = (\n fromNodeInfo: NodeInfo,\n toNodeInfo: NodeInfo,\n): boolean => {\n if (!fromNodeInfo.scopes) {\n return false;\n }\n\n if (!toNodeInfo.scopes) {\n toNodeInfo.scopes = new Set();\n }\n\n let changed = false;\n\n for (const scope of fromNodeInfo.scopes) {\n if (!toNodeInfo.scopes.has(scope)) {\n toNodeInfo.scopes.add(scope);\n changed = true;\n }\n }\n\n return changed;\n};\n\n/**\n * Seeds each node in the graph with its local access scope(s) based on its own properties.\n * - 'read' if readOnly: true\n * - 'write' if writeOnly: true\n * - 'normal' if node is an object property\n *\n * Only non-array objects are considered for scope seeding.\n *\n * @param nodes - Map of JSON Pointer to NodeInfo.\n */\nexport const seedLocalScopes = (nodes: Graph['nodes']): void => {\n for (const [pointer, nodeInfo] of nodes) {\n const { node } = nodeInfo;\n\n if (typeof node !== 'object' || node === null || node instanceof Array) {\n continue;\n }\n\n if ('readOnly' in node && node.readOnly === true) {\n nodeInfo.scopes = new Set(['read']);\n } else if ('writeOnly' in node && node.writeOnly === true) {\n nodeInfo.scopes = new Set(['write']);\n } else if (pointer.match(/\\/properties\\/[^/]+$/)) {\n nodeInfo.scopes = new Set(['normal']);\n }\n }\n};\n\n/**\n * Builds a graph of all nodes in an OpenAPI spec, indexed by normalized JSON Pointer,\n * and tracks all $ref dependencies and reverse dependencies between nodes.\n *\n * - All keys in the returned maps are normalized JSON Pointers (RFC 6901, always starting with '#').\n * - The `nodes` map allows fast lookup of any node and its parent/key context.\n * - The `dependencies` map records, for each node, the set of normalized pointers it references via $ref.\n * - The `reverseDependencies` map records, for each node, the set of nodes that reference it via $ref.\n * - After construction, all nodes will have their local and propagated scopes annotated.\n *\n * @param root The root object (e.g., the OpenAPI spec)\n * @returns An object with:\n * - nodes: Map from normalized JSON Pointer string to NodeInfo\n * - dependencies: Map from normalized JSON Pointer string to Set of referenced normalized JSON Pointers\n * - reverseDependencies: Map from normalized JSON Pointer string to Set of referencing normalized JSON Pointers\n */\nexport const buildGraph = (\n root: unknown,\n logger: Logger,\n): {\n graph: Graph;\n} => {\n const eventBuildGraph = logger.timeEvent('build-graph');\n const graph: Graph = {\n allDependencies: new Map(),\n dependencies: new Map(),\n nodes: new Map(),\n reverseDependencies: new Map(),\n };\n\n const walk = ({\n key,\n node,\n parentPointer,\n path,\n }: NodeInfo & {\n path: ReadonlyArray<string | number>;\n }) => {\n if (typeof node !== 'object' || node === null) {\n return;\n }\n\n const pointer = pathToJsonPointer(path);\n\n let deprecated: boolean | undefined;\n let tags: Set<string> | undefined;\n\n if (typeof node === 'object' && node !== null) {\n // Check for deprecated property\n if ('deprecated' in node && typeof node.deprecated === 'boolean') {\n deprecated = Boolean(node.deprecated);\n }\n // If this node has a $ref, record the dependency\n if ('$ref' in node && typeof node.$ref === 'string') {\n const refPointer = normalizeJsonPointer(node.$ref);\n if (!graph.dependencies.has(pointer)) {\n graph.dependencies.set(pointer, new Set());\n }\n graph.dependencies.get(pointer)!.add(refPointer);\n }\n // Check for tags property (should be an array of strings)\n if ('tags' in node && node.tags instanceof Array) {\n tags = new Set(node.tags.filter((tag) => typeof tag === 'string'));\n }\n }\n\n graph.nodes.set(pointer, { deprecated, key, node, parentPointer, tags });\n\n if (node instanceof Array) {\n node.forEach((item, index) =>\n walk({\n key: index,\n node: item,\n parentPointer: pointer,\n path: [...path, index],\n }),\n );\n } else {\n for (const [childKey, value] of Object.entries(node)) {\n walk({\n key: childKey,\n node: value,\n parentPointer: pointer,\n path: [...path, childKey],\n });\n }\n }\n };\n\n walk({\n key: null,\n node: root,\n parentPointer: null,\n path: [],\n });\n\n const cache: Cache = {\n allDependencies: new Map(),\n childDependencies: new Map(),\n parentToChildren: new Map(),\n };\n\n for (const [pointer, nodeInfo] of graph.nodes) {\n const parent = nodeInfo.parentPointer;\n if (!parent) continue;\n if (!cache.parentToChildren.has(parent)) {\n cache.parentToChildren.set(parent, []);\n }\n cache.parentToChildren.get(parent)!.push(pointer);\n }\n\n for (const [pointerFrom, pointers] of graph.dependencies) {\n for (const pointerTo of pointers) {\n if (!graph.reverseDependencies.has(pointerTo)) {\n graph.reverseDependencies.set(pointerTo, new Set());\n }\n graph.reverseDependencies.get(pointerTo)!.add(pointerFrom);\n }\n }\n\n seedLocalScopes(graph.nodes);\n propagateScopes(graph);\n annotateChildScopes(graph.nodes);\n\n for (const pointer of graph.nodes.keys()) {\n const allDependencies = collectAllDependenciesForPointer({\n cache,\n graph,\n pointer,\n visited: new Set(),\n });\n graph.allDependencies.set(pointer, allDependencies);\n }\n\n eventBuildGraph.timeEnd();\n\n // functions creating data for debug scripts located in `debug-helpers/`\n // const { maxChildren, maxDepth, totalNodes } = debugTools.graph.analyzeStructure(graph);\n // const nodesForViz = debugTools.graph.exportForVisualization(graph);\n // fs.writeFileSync('debug-helpers/graph.json', JSON.stringify(nodesForViz, null, 2));\n\n return { graph };\n};\n","import type { Config } from '../../../types/config';\nimport type { Logger } from '../../../utils/logger';\nimport { jsonPointerToPath } from '../../../utils/ref';\nimport { buildGraph, type Graph, type Scope } from '../utils/graph';\nimport { buildName } from '../utils/name';\nimport { deepClone } from '../utils/schema';\nimport { childSchemaRelationships } from '../utils/schemaChildRelationships';\nimport {\n getSchemasObject,\n hasComponentsSchemasObject,\n hasDefinitionsObject,\n} from '../utils/transforms';\nimport {\n getUniqueComponentName,\n isPathRootSchema,\n specToSchemasPointerNamespace,\n} from './utils';\n\ntype OriginalSchemas = Record<string, unknown>;\n\ntype SplitSchemas = {\n /** Key is the original schema pointer. */\n mapping: Record<\n string,\n {\n read?: string;\n write?: string;\n }\n >;\n /** splitPointer -> originalPointer */\n reverseMapping: Record<string, string>;\n /** name -> schema object */\n schemas: Record<string, unknown>;\n};\n\ntype ReadWriteConfig = Config['parser']['transforms']['readWrite'];\n\nconst schemaKeys = new Set([\n 'additionalProperties',\n 'allOf',\n 'anyOf',\n 'items',\n 'not',\n 'oneOf',\n 'patternProperties',\n 'properties',\n 'schema',\n]);\n\nconst getComponentContext = (\n path: ReadonlyArray<string | number>,\n): Scope | undefined => {\n // OpenAPI 3.x: #/components/{type}/{name}\n if (path.length === 3 && path[0] === 'components') {\n const type = path[1];\n if (type === 'parameters') return 'write';\n if (type === 'requestBodies') return 'write';\n if (type === 'responses') return 'read';\n if (type === 'headers') return 'read';\n }\n // OpenAPI 2.x: #/parameters/{name}, #/responses/{name}\n if (path.length === 2) {\n const type = path[0];\n if (type === 'parameters') return 'write';\n if (type === 'responses') return 'read';\n }\n return;\n};\n\n/**\n * Capture the original schema objects by pointer before splitting.\n * This is used to safely remove only the true originals after splitting,\n * even if names are swapped or overwritten by split variants.\n */\nconst captureOriginalSchemas = (\n spec: unknown,\n logger: Logger,\n): OriginalSchemas => {\n const event = logger.timeEvent('capture-original-schemas');\n const originals: OriginalSchemas = {};\n if (hasComponentsSchemasObject(spec)) {\n for (const [name, obj] of Object.entries(\n (spec as any).components.schemas,\n )) {\n originals[`#/components/schemas/${name}`] = obj;\n }\n } else if (hasDefinitionsObject(spec)) {\n for (const [name, obj] of Object.entries((spec as any).definitions)) {\n originals[`#/definitions/${name}`] = obj;\n }\n }\n event.timeEnd();\n return originals;\n};\n\n/**\n * Inserts split schemas into the spec at the correct location (OpenAPI 3.x or 2.0).\n * This function is robust to spec version and will assign all split schemas\n * to either components.schemas (OAS3) or definitions (OAS2).\n *\n * @param spec - The OpenAPI spec object\n * @param split - The split schemas (from splitSchemas)\n */\nconst insertSplitSchemasIntoSpec = ({\n logger,\n spec,\n split,\n}: {\n logger: Logger;\n spec: unknown;\n split: Pick<SplitSchemas, 'schemas'>;\n}) => {\n const event = logger.timeEvent('insert-split-schemas-into-spec');\n if (hasComponentsSchemasObject(spec)) {\n Object.assign((spec as any).components.schemas, split.schemas);\n } else if (hasDefinitionsObject(spec)) {\n Object.assign((spec as any).definitions, split.schemas);\n }\n event.timeEnd();\n};\n\n/**\n * Prunes a schema by removing all child schemas (in any structural keyword)\n * that are marked with the given scope (readOnly/writeOnly), or that are $ref to a schema\n * that is exclusively the excluded scope (according to the graph).\n *\n * Uses childSchemaRelationships for parity with graph traversal.\n * Returns true if the schema itself should be removed from its parent.\n *\n * @param graph - The Graph containing all nodes and their scopes\n * @param schema - The schema object to prune\n * @param scope - The scope to exclude ('readOnly' or 'writeOnly')\n * @returns boolean - Whether the schema should be removed from its parent\n */\nconst pruneSchemaByScope = (\n graph: Graph,\n schema: unknown,\n scope: 'readOnly' | 'writeOnly',\n): boolean => {\n if (schema && typeof schema === 'object') {\n // Remove $ref if the referenced schema is exclusively the excluded scope\n if (\n '$ref' in schema &&\n typeof (schema as Record<string, unknown>)['$ref'] === 'string'\n ) {\n const ref = (schema as Record<string, unknown>)['$ref'] as string;\n const nodeInfo = graph.nodes.get(ref);\n if (nodeInfo?.scopes) {\n // Only remove $ref if the referenced schema is *exclusively* the excluded scope.\n // This ensures 'normal' or multi-scope schemas are always kept.\n if (\n (scope === 'writeOnly' &&\n nodeInfo.scopes.size === 1 &&\n nodeInfo.scopes.has('write')) ||\n (scope === 'readOnly' &&\n nodeInfo.scopes.size === 1 &&\n nodeInfo.scopes.has('read'))\n ) {\n delete (schema as Record<string, unknown>)['$ref'];\n // If the schema is now empty, remove it\n if (\n !childSchemaRelationships.some(([keyword]) => keyword in schema)\n ) {\n return true;\n }\n }\n }\n }\n // Recursively prune all child schemas according to childSchemaRelationships\n for (const [keyword, type] of childSchemaRelationships) {\n if (!(keyword in schema)) {\n continue;\n }\n const value = (schema as Record<string, unknown>)[keyword];\n if (type === 'array' && value instanceof Array) {\n for (let index = value.length - 1; index >= 0; index--) {\n const item = value[index];\n if (\n item &&\n typeof item === 'object' &&\n (item as Record<string, unknown>)[scope] === true\n ) {\n value.splice(index, 1);\n } else {\n const shouldRemove = pruneSchemaByScope(graph, item, scope);\n if (shouldRemove) value.splice(index, 1);\n }\n }\n if (!value.length) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n } else if (\n type === 'objectMap' &&\n typeof value === 'object' &&\n value !== null &&\n !(value instanceof Array)\n ) {\n const objMap = value as Record<string, unknown>;\n for (const key of Object.keys(objMap)) {\n const prop = objMap[key];\n if (\n prop &&\n typeof prop === 'object' &&\n (prop as Record<string, unknown>)[scope] === true\n ) {\n delete objMap[key];\n } else {\n const shouldRemove = pruneSchemaByScope(graph, prop, scope);\n if (shouldRemove) {\n delete objMap[key];\n }\n }\n }\n if (!Object.keys(objMap).length) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n } else if (\n type === 'single' &&\n typeof value === 'object' &&\n value !== null\n ) {\n if ((value as Record<string, unknown>)[scope] === true) {\n delete (schema as Record<string, unknown>)[keyword];\n } else {\n const shouldRemove = pruneSchemaByScope(graph, value, scope);\n if (shouldRemove) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n }\n } else if (type === 'singleOrArray') {\n if (value instanceof Array) {\n for (let index = value.length - 1; index >= 0; index--) {\n const item = value[index];\n if (\n item &&\n typeof item === 'object' &&\n (item as Record<string, unknown>)[scope] === true\n ) {\n value.splice(index, 1);\n } else {\n const shouldRemove = pruneSchemaByScope(graph, item, scope);\n if (shouldRemove) value.splice(index, 1);\n }\n }\n if (!value.length) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n } else if (typeof value === 'object' && value !== null) {\n if ((value as Record<string, unknown>)[scope] === true) {\n delete (schema as Record<string, unknown>)[keyword];\n } else {\n const shouldRemove = pruneSchemaByScope(graph, value, scope);\n if (shouldRemove) {\n delete (schema as Record<string, unknown>)[keyword];\n }\n }\n }\n }\n }\n // After all removals, if this is type: object and has no structural fields, remove it\n if (\n (schema as Record<string, unknown>).type === 'object' &&\n !childSchemaRelationships.some(([keyword]) => keyword in schema)\n ) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Remove only the true original schemas that were split, by object identity.\n * This is robust to swaps, overwrites, and name collisions.\n *\n * @param originalSchemas - Map of original pointers to their schema objects (captured before splitting)\n * @param spec - The OpenAPI spec object\n * @param split - The split mapping (from splitSchemas)\n */\nconst removeOriginalSplitSchemas = ({\n logger,\n originalSchemas,\n spec,\n split,\n}: {\n logger: Logger;\n originalSchemas: OriginalSchemas;\n spec: unknown;\n split: Pick<SplitSchemas, 'mapping'>;\n}) => {\n const event = logger.timeEvent('remove-original-split-schemas');\n const schemasObj = getSchemasObject(spec);\n\n for (const originalPointer of Object.keys(split.mapping)) {\n const path = jsonPointerToPath(originalPointer);\n const name = path[path.length - 1]!;\n if (\n typeof name === 'string' &&\n schemasObj &&\n Object.prototype.hasOwnProperty.call(schemasObj, name) &&\n schemasObj[name] === originalSchemas[originalPointer]\n ) {\n delete schemasObj[name];\n }\n }\n event.timeEnd();\n};\n\n/**\n * Splits schemas with both 'read' and 'write' scopes into read/write variants.\n * Returns the new schemas and a mapping from original pointer to new variant pointers.\n *\n * @param config - The readWrite transform config\n * @param graph - The Graph containing all nodes and their scopes\n * @param spec - The OpenAPI spec object\n * @returns SplitSchemas - The split schemas and pointer mappings\n */\nexport const splitSchemas = ({\n config,\n graph,\n logger,\n spec,\n}: {\n config: ReadWriteConfig;\n graph: Graph;\n logger: Logger;\n spec: unknown;\n}): SplitSchemas => {\n const event = logger.timeEvent('split-schemas');\n const existingNames = new Set<string>();\n const split: SplitSchemas = {\n mapping: {},\n reverseMapping: {},\n schemas: {},\n };\n\n const schemasPointerNamespace = specToSchemasPointerNamespace(spec);\n const schemasNamespaceSegments =\n schemasPointerNamespace.split('/').length - 1;\n\n /**\n * Extracts the schema name from pointer, but only if it's a top-level schema\n * pointer. Returns an empty string if it's a nested pointer.\n * @param pointer\n * @returns Schema's base name.\n */\n const pointerToSchema = (pointer: string): string => {\n if (pointer.startsWith(schemasPointerNamespace)) {\n const path = jsonPointerToPath(pointer);\n if (path.length === schemasNamespaceSegments) {\n return path[schemasNamespaceSegments - 1] || '';\n }\n }\n return '';\n };\n\n // Collect all existing schema names\n for (const pointer of graph.nodes.keys()) {\n const name = pointerToSchema(pointer);\n if (name) existingNames.add(name);\n }\n\n for (const [pointer, nodeInfo] of graph.nodes) {\n const name = pointerToSchema(pointer);\n // Only split top-level schemas, with both read-only and write-only scopes.\n if (\n !name ||\n !(nodeInfo.scopes?.has('read') && nodeInfo.scopes?.has('write'))\n ) {\n continue;\n }\n\n // read variant\n const readSchema = deepClone<unknown>(nodeInfo.node);\n pruneSchemaByScope(graph, readSchema, 'writeOnly');\n const readBase = buildName({\n config: config.responses,\n name,\n });\n const readName =\n readBase === name\n ? readBase\n : getUniqueComponentName({\n base: readBase,\n components: existingNames,\n });\n existingNames.add(readName);\n split.schemas[readName] = readSchema;\n const readPointer = `${schemasPointerNamespace}${readName}`;\n\n // write variant\n const writeSchema = deepClone<unknown>(nodeInfo.node);\n pruneSchemaByScope(graph, writeSchema, 'readOnly');\n const writeBase = buildName({\n config: config.requests,\n name,\n });\n const writeName =\n writeBase === name && writeBase !== readName\n ? writeBase\n : getUniqueComponentName({\n base: writeBase,\n components: existingNames,\n });\n existingNames.add(writeName);\n split.schemas[writeName] = writeSchema;\n const writePointer = `${schemasPointerNamespace}${writeName}`;\n\n split.mapping[pointer] = {\n read: readPointer,\n write: writePointer,\n };\n split.reverseMapping[readPointer] = pointer;\n split.reverseMapping[writePointer] = pointer;\n }\n\n event.timeEnd();\n return split;\n};\n\ntype WalkArgs = {\n context: Scope | null;\n currentPointer: string | null;\n inSchema: boolean;\n node: unknown;\n path: ReadonlyArray<string | number>;\n};\n\n/**\n * Recursively updates $ref fields in the spec to point to the correct read/write variant\n * according to the current context (read/write), using the split mapping.\n *\n * @param spec - The OpenAPI spec object\n * @param split - The split mapping (from splitSchemas)\n */\nexport const updateRefsInSpec = ({\n logger,\n spec,\n split,\n}: {\n logger: Logger;\n spec: unknown;\n split: Omit<SplitSchemas, 'schemas'>;\n}): void => {\n const event = logger.timeEvent('update-refs-in-spec');\n const schemasPointerNamespace = specToSchemasPointerNamespace(spec);\n\n const walk = ({\n context,\n currentPointer,\n inSchema,\n node,\n path,\n }: WalkArgs): void => {\n if (node instanceof Array) {\n node.forEach((item, index) =>\n walk({\n context,\n currentPointer,\n inSchema,\n node: item,\n path: [...path, index],\n }),\n );\n } else if (node && typeof node === 'object') {\n // Detect if we're entering a split schema variant\n let nextPointer = currentPointer;\n let nextContext = context;\n if (isPathRootSchema(path)) {\n nextPointer = `${schemasPointerNamespace}${path[2]}`;\n const originalPointer = split.reverseMapping[nextPointer];\n if (originalPointer) {\n const mapping = split.mapping[originalPointer];\n if (mapping?.read === nextPointer) {\n nextContext = 'read';\n } else if (mapping?.write === nextPointer) {\n nextContext = 'write';\n }\n }\n }\n\n const compContext = getComponentContext(path);\n if (compContext !== undefined) {\n // For each component, walk with the correct context\n for (const key in node) {\n if (!Object.prototype.hasOwnProperty.call(node, key)) {\n continue;\n }\n walk({\n context: compContext,\n currentPointer: nextPointer,\n inSchema: false,\n node: (node as Record<string, unknown>)[key],\n path: [...path, key],\n });\n }\n return;\n }\n\n for (const key in node) {\n if (!Object.prototype.hasOwnProperty.call(node, key)) {\n continue;\n }\n const value = (node as Record<string, unknown>)[key];\n\n // Only treat context switches at the OpenAPI structure level (not inside schemas)\n if (!inSchema) {\n if (key === 'requestBody') {\n walk({\n context: 'write',\n currentPointer: nextPointer,\n inSchema: false,\n node: value,\n path: [...path, key],\n });\n continue;\n }\n if (key === 'responses') {\n walk({\n context: 'read',\n currentPointer: nextPointer,\n inSchema: false,\n node: value,\n path: [...path, key],\n });\n continue;\n }\n if (key === 'parameters' && Array.isArray(value)) {\n value.forEach((param, index) => {\n if (param && typeof param === 'object' && 'schema' in param) {\n walk({\n context: 'write',\n currentPointer: nextPointer,\n inSchema: true,\n node: param.schema,\n path: [...path, key, index, 'schema'],\n });\n }\n // Also handle content (OpenAPI 3.x)\n if (param && typeof param === 'object' && 'content' in param) {\n walk({\n context: 'write',\n currentPointer: nextPointer,\n inSchema: false,\n node: param.content,\n path: [...path, key, index, 'content'],\n });\n }\n });\n continue;\n }\n // OpenAPI 3.x: headers in responses\n if (\n key === 'headers' &&\n typeof value === 'object' &&\n value !== null\n ) {\n for (const headerKey in value) {\n if (!Object.prototype.hasOwnProperty.call(value, headerKey)) {\n continue;\n }\n walk({\n context: 'read',\n currentPointer: nextPointer,\n inSchema: false,\n node: (value as Record<string, unknown>)[headerKey],\n path: [...path, key, headerKey],\n });\n }\n continue;\n }\n }\n\n // Entering a schema context\n if (schemaKeys.has(key)) {\n walk({\n context: nextContext,\n currentPointer: nextPointer,\n inSchema: true,\n node: value,\n path: [...path, key],\n });\n } else if (key === '$ref' && typeof value === 'string') {\n const map = split.mapping[value];\n if (nextContext === 'read' && map?.read) {\n (node as Record<string, unknown>)[key] = map.read;\n } else if (nextContext === 'write' && map?.write) {\n (node as Record<string, unknown>)[key] = map.write;\n }\n } else {\n walk({\n context: nextContext,\n currentPointer: nextPointer,\n inSchema,\n node: value,\n path: [...path, key],\n });\n }\n }\n }\n };\n walk({\n context: null,\n currentPointer: null,\n inSchema: false,\n node: spec,\n path: [],\n });\n event.timeEnd();\n};\n\n/**\n * Orchestrates the full read/write transform:\n * - Captures original schemas\n * - Splits schemas into read/write variants\n * - Inserts split schemas into the spec\n * - Updates $refs throughout the spec\n * - Removes original schemas that were split\n *\n * @param config - The readWrite transform config\n * @param spec - The OpenAPI spec object\n */\nexport const readWriteTransform = ({\n config,\n logger,\n spec,\n}: {\n config: ReadWriteConfig;\n logger: Logger;\n spec: unknown;\n}) => {\n const { graph } = buildGraph(spec, logger);\n const originalSchemas = captureOriginalSchemas(spec, logger);\n const split = splitSchemas({ config, graph, logger, spec });\n insertSplitSchemasIntoSpec({ logger, spec, split });\n updateRefsInSpec({ logger, spec, split });\n removeOriginalSplitSchemas({ logger, originalSchemas, spec, split });\n};\n","import type { IR } from '../../../ir/types';\nimport { enumsTransform } from './enums';\nimport { readWriteTransform } from './readWrite';\n\nexport const transformOpenApiSpec = ({ context }: { context: IR.Context }) => {\n const { logger } = context;\n const eventTransformOpenApiSpec = logger.timeEvent('transform-openapi-spec');\n if (context.config.parser.transforms.enums.enabled) {\n enumsTransform({\n config: context.config.parser.transforms.enums,\n spec: context.spec,\n });\n }\n\n if (context.config.parser.transforms.readWrite.enabled) {\n readWriteTransform({\n config: context.config.parser.transforms.readWrite,\n logger,\n spec: context.spec,\n });\n }\n eventTransformOpenApiSpec.timeEnd();\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 colors from 'ansi-colors';\n\nimport type { IR } from '../../../ir/types';\n\nexport interface ValidatorIssue {\n /**\n * Machine-readable issue code\n *\n * @example\n * 'invalid_type'\n */\n code: 'duplicate_key' | 'invalid_type' | 'missing_required_field';\n /**\n * Optional additional data.\n *\n * @example\n * 'expectedType'\n */\n context?: Record<string, any>;\n /**\n * Human-readable issue summary.\n */\n message: string;\n /**\n * JSONPath-like array to issue location.\n */\n path: ReadonlyArray<string | number>;\n /**\n * Error severity.\n */\n severity: 'error' | 'warning';\n}\n\nexport interface ValidatorResult {\n issues: ReadonlyArray<ValidatorIssue>;\n valid: boolean;\n}\n\nconst isSimpleKey = (key: string) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key);\n\nconst formatPath = (path: ReadonlyArray<string | number>): string =>\n path\n .map((segment, i) => {\n if (typeof segment === 'number') {\n return `[${segment}]`;\n }\n\n if (i === 0) {\n // first segment no dot or brackets\n return segment;\n }\n\n return isSimpleKey(segment)\n ? `.${segment}`\n : `['${segment.replace(/\"/g, \"\\\\'\")}']`;\n })\n .join('');\n\nconst formatValidatorIssue = (issue: ValidatorIssue): string => {\n const pathStr = formatPath(issue.path);\n const level =\n issue.severity === 'error' ? colors.bold.red : colors.bold.yellow;\n\n const highlightedMessage = issue.message.replace(/`([^`]+)`/g, (_, code) =>\n colors.yellow(`\\`${code}\\``),\n );\n\n return `${level(`[${issue.severity.toUpperCase()}]`)} ${colors.cyan(pathStr)}: ${highlightedMessage}`;\n};\n\nconst shouldPrint = ({\n context,\n issue,\n}: {\n context: IR.Context;\n issue: ValidatorIssue;\n}) => {\n if (context.config.logs.level === 'silent') {\n return false;\n }\n\n if (issue.severity === 'error') {\n return context.config.logs.level !== 'warn';\n }\n\n return true;\n};\n\nexport const handleValidatorResult = ({\n context,\n result,\n}: {\n context: IR.Context;\n result: ValidatorResult;\n}) => {\n for (const issue of result.issues) {\n if (shouldPrint({ context, issue })) {\n console.log(formatValidatorIssue(issue));\n }\n }\n\n if (!result.valid) {\n process.exit(1);\n }\n};\n","import { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { addNamespace, removeNamespace } from '../../shared/utils/filter';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n OpenApiV2_0_X,\n OperationObject,\n PathItemObject,\n PathsObject,\n} from '../types/spec';\n\n/**\n * Replace source spec with filtered version.\n */\nexport const filterSpec = ({\n logger,\n operations,\n preserveOrder,\n schemas,\n spec,\n}: {\n logger: Logger;\n operations: Set<string>;\n parameters: Set<string>;\n preserveOrder: boolean;\n requestBodies: Set<string>;\n responses: Set<string>;\n schemas: Set<string>;\n spec: OpenApiV2_0_X;\n}) => {\n const eventFilterSpec = logger.timeEvent('filter-spec');\n if (spec.definitions) {\n const filtered: typeof spec.definitions = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(spec.definitions)) {\n if (schemas.has(addNamespace('schema', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of schemas) {\n const { name } = removeNamespace(key);\n const source = spec.definitions[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.definitions = filtered;\n }\n\n if (spec.paths) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n\n for (const method of httpMethods) {\n // @ts-expect-error\n const operation = pathItem[method] as OperationObject;\n if (!operation) {\n continue;\n }\n\n const key = addNamespace(\n 'operation',\n createOperationKey({ method, path }),\n );\n if (!operations.has(key)) {\n // @ts-expect-error\n delete pathItem[method];\n }\n }\n\n // remove paths that have no operations left\n if (!Object.keys(pathItem).length) {\n delete spec.paths[path];\n }\n }\n }\n eventFilterSpec.timeEnd();\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 return;\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 mediaTypeObjects = ({\n mimeTypes,\n response,\n}: {\n mimeTypes: ReadonlyArray<string> | undefined;\n response: Pick<ResponseObject, 'schema'>;\n}): ReadonlyArray<Content> => {\n const objects: Array<Content> = [];\n\n for (const mediaType of mimeTypes ?? []) {\n objects.push({\n mediaType,\n schema: response.schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n });\n }\n\n return objects;\n};\n","import type { Config } from '../types/config';\nimport type { IR } from './types';\n\nexport function getPaginationKeywordsRegExp(\n pagination: Config['parser']['pagination'],\n): RegExp {\n const pattern = `^(${pagination.keywords.join('|')})$`;\n return new RegExp(pattern);\n}\n\nexport interface Pagination {\n in: 'body' | 'cookie' | 'header' | 'path' | 'query';\n name: string;\n schema: IR.SchemaObject;\n}\n","import { refToName } from '../../../utils/ref';\n\nexport const discriminatorValues = (\n $ref: string,\n mapping?: Record<string, string>,\n shouldUseRefAsValue?: () => boolean,\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 && (!shouldUseRefAsValue || shouldUseRefAsValue())) {\n return [refToName($ref)];\n }\n\n return values;\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 return;\n};\n\nconst parseSchemaJsDoc = ({\n irSchema,\n schema,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.example) {\n irSchema.example = schema.example;\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 (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 // Avoid [key: string]: never for empty objects with additionalProperties: false inside allOf\n // This would override inherited properties from other schemas in the composition\n const isEmptyObjectInAllOf =\n state.inAllOf &&\n schema.additionalProperties === false &&\n (!schema.properties || Object.keys(schema.properties).length === 0);\n\n if (!isEmptyObjectInAllOf) {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\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 // Don't propagate inAllOf flag to $ref schemas to avoid issues with reusable components\n const isRef = '$ref' in compositionSchema;\n const schemaState = isRef\n ? state\n : {\n ...state,\n inAllOf: true,\n };\n\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state: schemaState,\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.parser.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.parser.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 { operationToId } from '../../shared/utils/operation';\nimport type {\n OperationObject,\n ParameterObject,\n PathItemObject,\n ResponseObject,\n SchemaObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { contentToSchema, mediaTypeObjects } 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 if (operation.operationId) {\n irOperation.operationId = operation.operationId;\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 contents = mediaTypeObjects({\n mimeTypes: operation.consumes,\n response: { schema },\n });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 contents = mediaTypeObjects({\n // assume JSON by default\n mimeTypes: operation.produces ? operation.produces : ['application/json'],\n response: responseObject,\n });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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: Map<string, IR.SecurityObject> = new Map();\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.set(name, irSecuritySchemeObject);\n }\n }\n\n if (securitySchemeObjects.size) {\n irOperation.security = Array.from(securitySchemeObjects.values());\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parsePathOperation = ({\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 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.dereference<ParameterObject>(parameterOrReference)\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 // lowercase keys for case insensitive access\n parametersObject[parameter.in]![parameter.name.toLocaleLowerCase()] =\n 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 { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n ValidatorIssue,\n ValidatorResult,\n} from '../../shared/utils/validator';\nimport type { OpenApiV2_0_X, PathItemObject, PathsObject } from '../types/spec';\n\nexport const validateOpenApiSpec = (\n spec: OpenApiV2_0_X,\n logger: Logger,\n): ValidatorResult => {\n const eventValidate = logger.timeEvent('validate');\n const issues: Array<ValidatorIssue> = [];\n const operationIds = new Map();\n\n if (spec.paths) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n for (const method of httpMethods) {\n if (method === 'trace') {\n continue;\n }\n\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const operationKey = createOperationKey({ method, path });\n\n if (operation.operationId) {\n if (!operationIds.has(operation.operationId)) {\n operationIds.set(operation.operationId, operationKey);\n } else {\n issues.push({\n code: 'duplicate_key',\n context: {\n key: 'operationId',\n value: operation.operationId,\n },\n message:\n 'Duplicate `operationId` found. Each `operationId` must be unique.',\n path: ['paths', path, method, 'operationId'],\n severity: 'error',\n });\n }\n }\n }\n }\n }\n\n eventValidate.timeEnd();\n return {\n issues,\n valid: !issues.some((issue) => issue.severity === 'error'),\n };\n};\n","import type { IR } from '../../../ir/types';\nimport { buildResourceMetadata } from '../../shared/graph/meta';\nimport { transformOpenApiSpec } from '../../shared/transforms';\nimport type { State } from '../../shared/types/state';\nimport {\n createFilteredDependencies,\n createFilters,\n hasFilters,\n} from '../../shared/utils/filter';\nimport { buildGraph } from '../../shared/utils/graph';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport { handleValidatorResult } from '../../shared/utils/validator';\nimport type {\n OpenApiV2_0_X,\n OperationObject,\n PathItemObject,\n PathsObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { filterSpec } from './filter';\nimport { parsePathOperation } from './operation';\nimport { parametersArrayToObject } from './parameter';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\nimport { validateOpenApiSpec } from './validate';\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 if (context.config.parser.validate_EXPERIMENTAL) {\n const result = validateOpenApiSpec(context.spec, context.logger);\n handleValidatorResult({ context, result });\n }\n\n const shouldFilterSpec = hasFilters(context.config.parser.filters);\n if (shouldFilterSpec) {\n const filters = createFilters(\n context.config.parser.filters,\n context.spec,\n context.logger,\n );\n const { graph } = buildGraph(context.spec, context.logger);\n const { resourceMetadata } = buildResourceMetadata(graph, context.logger);\n const sets = createFilteredDependencies({\n filters,\n logger: context.logger,\n resourceMetadata,\n });\n filterSpec({\n ...sets,\n logger: context.logger,\n preserveOrder: filters.preserveOrder,\n spec: context.spec,\n });\n }\n\n transformOpenApiSpec({ context });\n\n const state: State = {\n ids: new Map(),\n };\n const securitySchemesMap = new Map<string, SecuritySchemeObject>();\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 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<\n Parameters<typeof parsePathOperation>[0],\n '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 if (finalPathItem.delete) {\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 parsePathOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters,\n },\n });\n }\n\n if (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 parsePathOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters,\n },\n });\n }\n\n if (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 parsePathOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters,\n },\n });\n }\n\n if (finalPathItem.options) {\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 parsePathOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters,\n },\n });\n }\n\n if (finalPathItem.patch) {\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 parsePathOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters,\n },\n });\n }\n\n if (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 parsePathOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters,\n },\n });\n }\n\n if (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 parsePathOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters,\n },\n });\n }\n }\n};\n","import { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { addNamespace, removeNamespace } from '../../shared/utils/filter';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type { OpenApiV3_0_X, PathItemObject, PathsObject } from '../types/spec';\n\n/**\n * Replace source spec with filtered version.\n */\nexport const filterSpec = ({\n logger,\n operations,\n parameters,\n preserveOrder,\n requestBodies,\n responses,\n schemas,\n spec,\n}: {\n logger: Logger;\n operations: Set<string>;\n parameters: Set<string>;\n preserveOrder: boolean;\n requestBodies: Set<string>;\n responses: Set<string>;\n schemas: Set<string>;\n spec: OpenApiV3_0_X;\n}) => {\n const eventFilterSpec = logger.timeEvent('filter-spec');\n if (spec.components) {\n if (spec.components.parameters) {\n const filtered: typeof spec.components.parameters = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(\n spec.components.parameters,\n )) {\n if (parameters.has(addNamespace('parameter', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of parameters) {\n const { name } = removeNamespace(key);\n const source = spec.components.parameters[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.parameters = filtered;\n }\n\n if (spec.components.requestBodies) {\n const filtered: typeof spec.components.requestBodies = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(\n spec.components.requestBodies,\n )) {\n if (requestBodies.has(addNamespace('body', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of requestBodies) {\n const { name } = removeNamespace(key);\n const source = spec.components.requestBodies[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.requestBodies = filtered;\n }\n\n if (spec.components.responses) {\n const filtered: typeof spec.components.responses = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(\n spec.components.responses,\n )) {\n if (responses.has(addNamespace('response', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of responses) {\n const { name } = removeNamespace(key);\n const source = spec.components.responses[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.responses = filtered;\n }\n\n if (spec.components.schemas) {\n const filtered: typeof spec.components.schemas = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(spec.components.schemas)) {\n if (schemas.has(addNamespace('schema', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of schemas) {\n const { name } = removeNamespace(key);\n const source = spec.components.schemas[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.schemas = filtered;\n }\n }\n\n if (spec.paths) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n\n for (const method of httpMethods) {\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const key = addNamespace(\n 'operation',\n createOperationKey({ method, path }),\n );\n if (!operations.has(key)) {\n delete pathItem[method];\n }\n }\n\n // remove paths that have no operations left\n if (!Object.keys(pathItem).length) {\n delete spec.paths[path];\n }\n }\n }\n eventFilterSpec.timeEnd();\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 mediaTypeObjects = ({\n content,\n}: {\n content: Record<string, MediaTypeObject> | undefined;\n}): ReadonlyArray<Content> => {\n const objects: Array<Content> = [];\n\n for (const mediaType in content) {\n objects.push({\n mediaType,\n schema: content[mediaType]!.schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n });\n }\n\n return objects;\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 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.example) {\n irSchema.example = schema.example;\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 // Avoid [key: string]: never for empty objects with additionalProperties: false inside allOf\n // This would override inherited properties from other schemas in the composition\n const isEmptyObjectInAllOf =\n state.inAllOf &&\n schema.additionalProperties === false &&\n (!schema.properties || Object.keys(schema.properties).length === 0);\n\n if (!isEmptyObjectInAllOf) {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\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 // Don't propagate inAllOf flag to $ref schemas to avoid issues with reusable components\n const isRef = '$ref' in compositionSchema;\n const schemaState = isRef\n ? state\n : {\n ...state,\n inAllOf: true,\n };\n\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state: schemaState,\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 // If the ref has oneOf, we only use the schema name as the value\n // only if current schema is part of the oneOf. Else it is extending\n // the ref schema\n ref.oneOf\n ? () => ref.oneOf!.some((o) => '$ref' in o && o.$ref === state.$ref)\n : undefined,\n );\n\n if (values.length > 0) {\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\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 && irCompositionSchema.$ref != null) {\n const values = discriminatorValues(\n irCompositionSchema.$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 && irCompositionSchema.$ref != null) {\n const values = discriminatorValues(\n irCompositionSchema.$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.type !== 'array' &&\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 { mediaTypeObjects } 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.parser.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 contents = mediaTypeObjects({ content: ref.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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.parser.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 { operationToId } from '../../shared/utils/operation';\nimport type {\n OperationObject,\n PathItemObject,\n RequestBodyObject,\n ResponseObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { contentToSchema, mediaTypeObjects } 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 if (operation.operationId) {\n irOperation.operationId = operation.operationId;\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 contents = mediaTypeObjects({ content: requestBody.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 contents = mediaTypeObjects({ content: responseObject.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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: Map<string, IR.SecurityObject> = new Map();\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.set(name, securitySchemeObject);\n }\n }\n\n if (securitySchemeObjects.size) {\n irOperation.security = Array.from(securitySchemeObjects.values());\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parsePathOperation = ({\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 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 { mediaTypeObjects } 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.dereference<ParameterObject>(parameterOrReference)\n : parameterOrReference;\n\n if (!parametersObject[parameter.in]) {\n parametersObject[parameter.in] = {};\n }\n\n // lowercase keys for case insensitive access\n parametersObject[parameter.in]![parameter.name.toLocaleLowerCase()] =\n 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 contents = mediaTypeObjects({ content: parameter.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 { mediaTypeObjects } 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 contents = mediaTypeObjects({ content: requestBody.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n ValidatorIssue,\n ValidatorResult,\n} from '../../shared/utils/validator';\nimport type { OpenApiV3_0_X, PathItemObject, PathsObject } from '../types/spec';\n\nexport const validateOpenApiSpec = (\n spec: OpenApiV3_0_X,\n logger: Logger,\n): ValidatorResult => {\n const eventValidate = logger.timeEvent('validate');\n const issues: Array<ValidatorIssue> = [];\n const operationIds = new Map();\n\n if (spec.paths) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n for (const method of httpMethods) {\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const operationKey = createOperationKey({ method, path });\n\n if (operation.operationId) {\n if (!operationIds.has(operation.operationId)) {\n operationIds.set(operation.operationId, operationKey);\n } else {\n issues.push({\n code: 'duplicate_key',\n context: {\n key: 'operationId',\n value: operation.operationId,\n },\n message:\n 'Duplicate `operationId` found. Each `operationId` must be unique.',\n path: ['paths', path, method, 'operationId'],\n severity: 'error',\n });\n }\n }\n }\n }\n }\n\n if (spec.servers) {\n if (typeof spec.servers !== 'object' || !Array.isArray(spec.servers)) {\n issues.push({\n code: 'invalid_type',\n message: '`servers` must be an array.',\n path: [],\n severity: 'error',\n });\n }\n\n for (let index = 0; index < spec.servers.length; index++) {\n const server = spec.servers[index];\n if (!server || typeof server !== 'object') {\n issues.push({\n code: 'invalid_type',\n context: {\n actual: typeof server,\n expected: 'object',\n },\n message: 'Each entry in `servers` must be an object.',\n path: ['servers', index],\n severity: 'error',\n });\n } else {\n if (!server.url) {\n issues.push({\n code: 'missing_required_field',\n context: {\n field: 'url',\n },\n message: 'Missing required field `url` in server object.',\n path: ['servers', index],\n severity: 'error',\n });\n }\n }\n }\n }\n\n eventValidate.timeEnd();\n return {\n issues,\n valid: !issues.some((issue) => issue.severity === 'error'),\n };\n};\n","import type { IR } from '../../../ir/types';\nimport { buildResourceMetadata } from '../../shared/graph/meta';\nimport { transformOpenApiSpec } from '../../shared/transforms';\nimport type { State } from '../../shared/types/state';\nimport {\n createFilteredDependencies,\n createFilters,\n hasFilters,\n} from '../../shared/utils/filter';\nimport { buildGraph } from '../../shared/utils/graph';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport { handleValidatorResult } from '../../shared/utils/validator';\nimport type {\n OpenApiV3_0_X,\n ParameterObject,\n PathItemObject,\n PathsObject,\n RequestBodyObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { filterSpec } from './filter';\nimport { parsePathOperation } from './operation';\nimport { parametersArrayToObject, parseParameter } from './parameter';\nimport { parseRequestBody } from './requestBody';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\nimport { validateOpenApiSpec } from './validate';\n\nexport const parseV3_0_X = (context: IR.Context<OpenApiV3_0_X>) => {\n if (context.config.parser.validate_EXPERIMENTAL) {\n const result = validateOpenApiSpec(context.spec, context.logger);\n handleValidatorResult({ context, result });\n }\n\n const shouldFilterSpec = hasFilters(context.config.parser.filters);\n if (shouldFilterSpec) {\n const filters = createFilters(\n context.config.parser.filters,\n context.spec,\n context.logger,\n );\n const { graph } = buildGraph(context.spec, context.logger);\n const { resourceMetadata } = buildResourceMetadata(graph, context.logger);\n const sets = createFilteredDependencies({\n filters,\n logger: context.logger,\n resourceMetadata,\n });\n filterSpec({\n ...sets,\n logger: context.logger,\n preserveOrder: filters.preserveOrder,\n spec: context.spec,\n });\n }\n\n transformOpenApiSpec({ context });\n\n const state: State = {\n ids: new Map(),\n };\n const securitySchemesMap = new Map<string, SecuritySchemeObject>();\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 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 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 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 parsePathOperation>[0],\n 'method' | 'operation'\n > & {\n operation: Omit<\n Parameters<typeof parsePathOperation>[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 if (finalPathItem.delete) {\n parsePathOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.get) {\n parsePathOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.head) {\n parsePathOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.options) {\n parsePathOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.patch) {\n parsePathOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.post) {\n parsePathOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.put) {\n parsePathOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.trace) {\n parsePathOperation({\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 { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { addNamespace, removeNamespace } from '../../shared/utils/filter';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type { OpenApiV3_1_X, PathItemObject, PathsObject } from '../types/spec';\n\n/**\n * Replace source spec with filtered version.\n */\nexport const filterSpec = ({\n logger,\n operations,\n parameters,\n preserveOrder,\n requestBodies,\n responses,\n schemas,\n spec,\n}: {\n logger: Logger;\n operations: Set<string>;\n parameters: Set<string>;\n preserveOrder: boolean;\n requestBodies: Set<string>;\n responses: Set<string>;\n schemas: Set<string>;\n spec: OpenApiV3_1_X;\n}) => {\n const eventFilterSpec = logger.timeEvent('filter-spec');\n if (spec.components) {\n if (spec.components.parameters) {\n const filtered: typeof spec.components.parameters = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(\n spec.components.parameters,\n )) {\n if (parameters.has(addNamespace('parameter', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of parameters) {\n const { name } = removeNamespace(key);\n const source = spec.components.parameters[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.parameters = filtered;\n }\n\n if (spec.components.requestBodies) {\n const filtered: typeof spec.components.requestBodies = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(\n spec.components.requestBodies,\n )) {\n if (requestBodies.has(addNamespace('body', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of requestBodies) {\n const { name } = removeNamespace(key);\n const source = spec.components.requestBodies[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.requestBodies = filtered;\n }\n\n if (spec.components.responses) {\n const filtered: typeof spec.components.responses = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(\n spec.components.responses,\n )) {\n if (responses.has(addNamespace('response', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of responses) {\n const { name } = removeNamespace(key);\n const source = spec.components.responses[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.responses = filtered;\n }\n\n if (spec.components.schemas) {\n const filtered: typeof spec.components.schemas = {};\n\n if (preserveOrder) {\n for (const [name, source] of Object.entries(spec.components.schemas)) {\n if (schemas.has(addNamespace('schema', name))) {\n filtered[name] = source;\n }\n }\n } else {\n for (const key of schemas) {\n const { name } = removeNamespace(key);\n const source = spec.components.schemas[name];\n if (source) {\n filtered[name] = source;\n }\n }\n }\n\n spec.components.schemas = filtered;\n }\n }\n\n if (spec.paths) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n\n for (const method of httpMethods) {\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const key = addNamespace(\n 'operation',\n createOperationKey({ method, path }),\n );\n if (!operations.has(key)) {\n delete pathItem[method];\n }\n }\n\n // remove paths that have no operations left\n if (!Object.keys(pathItem).length) {\n delete spec.paths[path];\n }\n }\n }\n eventFilterSpec.timeEnd();\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 mediaTypeObjects = ({\n content,\n}: {\n content: Record<string, MediaTypeObject> | undefined;\n}): ReadonlyArray<Content> => {\n const objects: Array<Content> = [];\n\n for (const mediaType in content) {\n objects.push({\n mediaType,\n schema: content[mediaType]!.schema,\n type: mediaTypeToIrMediaType({ mediaType }),\n });\n }\n\n return objects;\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 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.example) {\n irSchema.example = schema.example;\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}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.const !== undefined) {\n irSchema.const = schema.const;\n\n // try to infer schema type\n if (!schema.type) {\n if (schema.const === null) {\n irSchema.type = 'null';\n } else {\n switch (typeof schema.const) {\n case 'bigint':\n case 'number':\n irSchema.type = 'number';\n break;\n case 'boolean':\n irSchema.type = 'boolean';\n break;\n case 'string':\n irSchema.type = 'string';\n break;\n }\n }\n }\n }\n\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n irSchema.exclusiveMaximum = schema.exclusiveMaximum;\n }\n\n if (schema.exclusiveMinimum !== undefined) {\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 } else if (schema.writeOnly) {\n irSchema.accessScope = 'write';\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 schemaItems.push(irItemSchema);\n }\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\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 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 // Avoid [key: string]: never for empty objects with additionalProperties: false inside allOf\n // This would override inherited properties from other schemas in the composition\n const isEmptyObjectInAllOf =\n state.inAllOf &&\n schema.additionalProperties === false &&\n (!schema.properties || Object.keys(schema.properties).length === 0);\n\n if (!isEmptyObjectInAllOf) {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\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.propertyNames) {\n irSchema.propertyNames = schemaToIrSchema({\n context,\n schema: schema.propertyNames,\n state,\n });\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: 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 // Don't propagate inAllOf flag to $ref schemas to avoid issues with reusable components\n const isRef = '$ref' in compositionSchema;\n const schemaState = isRef\n ? state\n : {\n ...state,\n inAllOf: true,\n };\n\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state: schemaState,\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 // If the ref has oneOf, we only use the schema name as the value\n // only if current schema is part of the oneOf. Else it is extending\n // the ref schema\n ref.oneOf\n ? () => ref.oneOf!.some((o) => '$ref' in o && o.$ref === state.$ref)\n : undefined,\n );\n if (values.length > 0) {\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\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\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 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 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 // `$ref` should be defined with discriminators\n if (schema.discriminator && irCompositionSchema.$ref != null) {\n const values = discriminatorValues(\n irCompositionSchema.$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 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 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 // `$ref` should be defined with discriminators\n if (schema.discriminator && irCompositionSchema.$ref != null) {\n const values = discriminatorValues(\n irCompositionSchema.$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.type !== 'array' &&\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 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 schemaToIrSchema({\n context,\n schema: refSchema,\n state: {\n ...state,\n $ref: schema.$ref,\n isProperty: false,\n },\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 parseSchemaMeta({ irSchema, schema });\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({ context, irSchema, schema });\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({ irSchema: typeIrSchema, schema });\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 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({ irSchema, schema });\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}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({ irSchema, schema });\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({ context, schema });\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 { mediaTypeObjects } 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.parser.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 contents = mediaTypeObjects({ content: ref.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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.parser.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 type { httpMethods } from '../../shared/utils/operation';\nimport { operationToId } from '../../shared/utils/operation';\nimport type {\n OperationObject,\n RequestBodyObject,\n ResponseObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { contentToSchema, mediaTypeObjects } 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 if (operation.operationId) {\n irOperation.operationId = operation.operationId;\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 contents = mediaTypeObjects({ content: requestBody.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 contents = mediaTypeObjects({ content: responseObject.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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: Map<string, IR.SecurityObject> = new Map();\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.set(name, securitySchemeObject);\n }\n }\n\n if (securitySchemeObjects.size) {\n irOperation.security = Array.from(securitySchemeObjects.values());\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nconst parseOperationObject = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: (typeof httpMethods)[number];\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n if (operation.servers) {\n context.ir.servers = [...(context.ir.servers ?? []), ...operation.servers];\n }\n\n const parsed = operationToIrOperation({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n });\n\n return { parsed };\n};\n\nexport const parsePathOperation = ({\n context,\n method,\n path,\n ...options\n}: {\n context: IR.Context;\n method: (typeof httpMethods)[number];\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\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 const { parsed } = parseOperationObject({\n context,\n method,\n path,\n ...options,\n });\n\n context.ir.paths[path][method] = parsed;\n};\n\nexport const parseWebhookOperation = ({\n context,\n key,\n method,\n ...options\n}: {\n context: IR.Context;\n key: string;\n method: (typeof httpMethods)[number];\n operation: Operation;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n if (!context.ir.webhooks) {\n context.ir.webhooks = {};\n }\n\n if (!context.ir.webhooks[key]) {\n context.ir.webhooks[key] = {};\n }\n\n const { parsed } = parseOperationObject({\n context,\n method,\n path: key as `/${string}`,\n ...options,\n });\n\n context.ir.webhooks[key][method] = parsed;\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 { mediaTypeObjects } 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.dereference<ParameterObject>(parameterOrReference)\n : parameterOrReference;\n\n if (!parametersObject[parameter.in]) {\n parametersObject[parameter.in] = {};\n }\n\n // lowercase keys for case insensitive access\n parametersObject[parameter.in]![parameter.name.toLocaleLowerCase()] =\n 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 contents = mediaTypeObjects({ content: parameter.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 { mediaTypeObjects } 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 contents = mediaTypeObjects({ content: requestBody.content });\n // TODO: add support for multiple content types, for now prefer JSON\n const content =\n contents.find((content) => content.type === 'json') || contents[0];\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 { createOperationKey } from '../../../ir/operation';\nimport type { Logger } from '../../../utils/logger';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n ValidatorIssue,\n ValidatorResult,\n} from '../../shared/utils/validator';\nimport type { OpenApiV3_1_X, PathItemObject, PathsObject } from '../types/spec';\n\nexport const validateOpenApiSpec = (\n spec: OpenApiV3_1_X,\n logger: Logger,\n): ValidatorResult => {\n const eventValidate = logger.timeEvent('validate');\n const issues: Array<ValidatorIssue> = [];\n const operationIds = new Map();\n\n if (spec.paths) {\n for (const entry of Object.entries(spec.paths)) {\n const path = entry[0] as keyof PathsObject;\n const pathItem = entry[1] as PathItemObject;\n for (const method of httpMethods) {\n const operation = pathItem[method];\n if (!operation) {\n continue;\n }\n\n const operationKey = createOperationKey({ method, path });\n\n if (operation.operationId) {\n if (!operationIds.has(operation.operationId)) {\n operationIds.set(operation.operationId, operationKey);\n } else {\n issues.push({\n code: 'duplicate_key',\n context: {\n key: 'operationId',\n value: operation.operationId,\n },\n message:\n 'Duplicate `operationId` found. Each `operationId` must be unique.',\n path: ['paths', path, method, 'operationId'],\n severity: 'error',\n });\n }\n }\n }\n }\n }\n\n if (spec.servers) {\n if (typeof spec.servers !== 'object' || !Array.isArray(spec.servers)) {\n issues.push({\n code: 'invalid_type',\n message: '`servers` must be an array.',\n path: [],\n severity: 'error',\n });\n }\n\n for (let index = 0; index < spec.servers.length; index++) {\n const server = spec.servers[index];\n if (!server || typeof server !== 'object') {\n issues.push({\n code: 'invalid_type',\n context: {\n actual: typeof server,\n expected: 'object',\n },\n message: 'Each entry in `servers` must be an object.',\n path: ['servers', index],\n severity: 'error',\n });\n } else {\n if (!server.url) {\n issues.push({\n code: 'missing_required_field',\n context: {\n field: 'url',\n },\n message: 'Missing required field `url` in server object.',\n path: ['servers', index],\n severity: 'error',\n });\n }\n }\n }\n }\n\n eventValidate.timeEnd();\n return {\n issues,\n valid: !issues.some((issue) => issue.severity === 'error'),\n };\n};\n","import type { IR } from '../../../ir/types';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport type { OpenApiV3_1_X, PathItemObject } from '../types/spec';\nimport { parseWebhookOperation } from './operation';\nimport { parametersArrayToObject } from './parameter';\n\nexport const parseWebhooks = ({\n context,\n securitySchemesMap,\n}: Pick<Parameters<typeof parseWebhookOperation>[0], 'securitySchemesMap'> & {\n context: IR.Context<OpenApiV3_1_X>;\n}) => {\n const state: Parameters<typeof parseWebhookOperation>[0]['state'] = {\n ids: new Map(),\n };\n\n for (const key in context.spec.webhooks) {\n const webhook = context.spec.webhooks[key]!;\n\n const finalWebhook =\n '$ref' in webhook\n ? {\n ...context.resolveRef<PathItemObject>(webhook.$ref!),\n ...webhook,\n }\n : webhook;\n\n const operationArgs: Omit<\n Parameters<typeof parseWebhookOperation>[0],\n 'method'\n > = {\n context,\n key,\n operation: {\n description: finalWebhook.description,\n parameters: parametersArrayToObject({\n context,\n parameters: finalWebhook.parameters,\n }),\n security: context.spec.security,\n servers: finalWebhook.servers,\n summary: finalWebhook.summary,\n },\n securitySchemesMap,\n state,\n };\n\n if (finalWebhook.delete) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.get) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.head) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.options) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.patch) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.post) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.put) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalWebhook.trace) {\n parseWebhookOperation({\n ...operationArgs,\n method: 'trace',\n operation: {\n ...operationArgs.operation,\n ...finalWebhook.trace,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalWebhook.trace.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n }\n};\n","import type { IR } from '../../../ir/types';\nimport { buildResourceMetadata } from '../../shared/graph/meta';\nimport { transformOpenApiSpec } from '../../shared/transforms';\nimport type { State } from '../../shared/types/state';\nimport {\n createFilteredDependencies,\n createFilters,\n hasFilters,\n} from '../../shared/utils/filter';\nimport { buildGraph } from '../../shared/utils/graph';\nimport { mergeParametersObjects } from '../../shared/utils/parameter';\nimport { handleValidatorResult } from '../../shared/utils/validator';\nimport type {\n OpenApiV3_1_X,\n ParameterObject,\n PathItemObject,\n PathsObject,\n RequestBodyObject,\n SecuritySchemeObject,\n} from '../types/spec';\nimport { filterSpec } from './filter';\nimport { parsePathOperation } from './operation';\nimport { parametersArrayToObject, parseParameter } from './parameter';\nimport { parseRequestBody } from './requestBody';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\nimport { validateOpenApiSpec } from './validate';\nimport { parseWebhooks } from './webhook';\n\nexport const parseV3_1_X = (context: IR.Context<OpenApiV3_1_X>) => {\n if (context.config.parser.validate_EXPERIMENTAL) {\n const result = validateOpenApiSpec(context.spec, context.logger);\n handleValidatorResult({ context, result });\n }\n\n const shouldFilterSpec = hasFilters(context.config.parser.filters);\n if (shouldFilterSpec) {\n const filters = createFilters(\n context.config.parser.filters,\n context.spec,\n context.logger,\n );\n const { graph } = buildGraph(context.spec, context.logger);\n const { resourceMetadata } = buildResourceMetadata(graph, context.logger);\n const sets = createFilteredDependencies({\n filters,\n logger: context.logger,\n resourceMetadata,\n });\n filterSpec({\n ...sets,\n logger: context.logger,\n preserveOrder: filters.preserveOrder,\n spec: context.spec,\n });\n }\n\n transformOpenApiSpec({ context });\n\n const state: State = {\n ids: new Map(),\n };\n const securitySchemesMap = new Map<string, SecuritySchemeObject>();\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 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 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 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 parsePathOperation>[0],\n '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 if (finalPathItem.delete) {\n parsePathOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.get) {\n parsePathOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.head) {\n parsePathOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.options) {\n parsePathOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.patch) {\n parsePathOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.post) {\n parsePathOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.put) {\n parsePathOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.trace) {\n parsePathOperation({\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 parseWebhooks({ context, securitySchemesMap });\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 transformClassName = ({\n config,\n name,\n}: {\n config: Config;\n name: string;\n}) => {\n const plugin = config.plugins['@hey-api/sdk'];\n if (plugin?.config.classNameBuilder) {\n let customName = '';\n\n if (typeof plugin.config.classNameBuilder === 'function') {\n customName = plugin.config.classNameBuilder(name);\n } else {\n customName = plugin.config.classNameBuilder.replace('{{name}}', name);\n }\n\n return customName;\n }\n\n return name;\n};\n\nexport const transformTypeName = (name: string) => {\n const config = getConfig();\n if (config.plugins['@hey-api/typescript']?.config.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;\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 default:\n return;\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 type { Model } from '../openApi';\nimport { sanitizeOperationParameterName } from '../openApi';\nimport { type Property, tsc } from '../tsc';\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 tsc.typeUnionNode({\n types: ['Blob', 'File'],\n });\n }\n\n if (\n config.plugins['@hey-api/transformers']?.config.dates &&\n isModelDate(model)\n ) {\n return tsc.typeNode('Date');\n }\n\n return tsc.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 = tsc.typeNode(meta.name);\n }\n }\n const unionNode = tsc.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 = tsc.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 = tsc.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n return tsc.typeArrayNode([toType(model.link)], model.isNullable);\n }\n\n return tsc.typeArrayNode([base(model)], model.isNullable);\n};\n\nconst typeEnum = (model: Model) => {\n const values = model.enum.map((enumerator) => enumValue(enumerator.value));\n return tsc.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 tsc.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 = tsc.nodeToString({\n node: toType(model),\n unescape: true,\n });\n return str;\n })\n .filter(unique);\n\n const node =\n style === 'union'\n ? tsc.typeUnionNode({\n // avoid printing duplicate null statements\n isNullable:\n model.isNullable &&\n !model.properties.find((property) => property.isNullable),\n types,\n })\n : tsc.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 tsc.typeParenthesizedNode({\n type: node,\n });\n};\n\nconst typeInterface = (model: Model) => {\n if (!model.properties.length) {\n return tsc.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 = tsc.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 tsc.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 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']?.config.filter\n ? new RegExp(config.plugins['@hey-api/sdk']?.config.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']?.config.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;\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 { createOperationKey } from '../../../ir/operation';\nimport { getConfig } from '../../../utils/config';\nimport type { Client, Operation } from '../../common/interfaces/client';\nimport { operationFilterFn } 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 = createOperationKey({\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;\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 return;\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 return;\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 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 { createOperationKey } from '../../../ir/operation';\nimport { getConfig } from '../../../utils/config';\nimport type { Client, Operation } from '../../common/interfaces/client';\nimport { operationFilterFn } 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 = createOperationKey({\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 type { Logger } from '../utils/logger';\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 dependencies,\n logger,\n spec,\n}: {\n config: Config;\n dependencies: Record<string, string>;\n logger: Logger;\n spec: unknown;\n}): IR.Context | undefined => {\n const context = new IRContext({\n config,\n dependencies,\n logger,\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","export const clientDefaultConfig = {\n baseUrl: true,\n bundle: true,\n exportFromIndex: false,\n} as const;\n\nexport const clientDefaultMeta = {\n dependencies: ['@hey-api/typescript'],\n output: 'client',\n tags: ['client'],\n} as const;\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport ts from 'typescript';\n\nimport type { Client } from '../plugins/@hey-api/client-core/types';\nimport { getClientPlugin } from '../plugins/@hey-api/client-core/utils';\nimport type { DefinePlugin } from '../plugins/types';\nimport type { ImportExportItemObject } from '../tsc/utils';\nimport type { Config } from '../types/config';\nimport { splitNameAndExtension } from './file';\nimport { ensureDirSync, relativeModulePath } from './utils';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\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.config && client.config.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 * Recursively copies files and directories.\n * This is a PnP-compatible alternative to fs.cpSync that works with Yarn PnP's\n * virtualized filesystem.\n */\nconst copyRecursivePnP = (src: string, dest: string) => {\n const stat = fs.statSync(src);\n\n if (stat.isDirectory()) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n\n const files = fs.readdirSync(src);\n for (const file of files) {\n copyRecursivePnP(path.join(src, file), path.join(dest, file));\n }\n } else {\n const content = fs.readFileSync(src);\n fs.writeFileSync(dest, content);\n }\n};\n\nconst editFileContents = ({\n filePath,\n relativeImportSuffix,\n}: {\n filePath: string;\n relativeImportSuffix?: string;\n}) => {\n let content = fs.readFileSync(filePath, 'utf8');\n\n if (relativeImportSuffix) {\n // Replace relative imports to append .js extension for ESM compatibility\n // This handles patterns like: from './foo' -> from './foo.js'\n // and: from '../bar' -> from '../bar.js'\n content = content.replace(\n /from\\s+['\"](\\.\\.?\\/[^'\"]*?)['\"]/g,\n (match, importPath) => {\n // Don't add .js if it already has an extension\n const lastSlashIndex = importPath.lastIndexOf('/');\n const fileName =\n lastSlashIndex >= 0\n ? importPath.slice(lastSlashIndex + 1)\n : importPath;\n if (fileName.includes('.')) {\n return match;\n }\n return `from '${importPath}${relativeImportSuffix}'`;\n },\n );\n }\n\n const header = '// This file is auto-generated by @hey-api/openapi-ts\\n\\n';\n\n content = `${header}${content}`;\n\n fs.writeFileSync(filePath, content, 'utf8');\n};\n\nconst renameAndEditFileContents = ({\n fileName,\n outputPath,\n shouldAppendJs,\n shouldRename,\n}: {\n fileName: string;\n outputPath: string;\n shouldAppendJs: boolean;\n shouldRename: boolean;\n}) => {\n const { extension, name } = splitNameAndExtension(fileName);\n let filePath = path.resolve(outputPath, fileName);\n let suffix = '';\n\n if (shouldRename) {\n const infix = 'gen';\n suffix = `.${infix}`;\n\n // rename file: foo.ts -> foo.gen.ts\n if (name !== 'index') {\n const renamedFilePath = path.resolve(\n outputPath,\n [name, infix, extension].join('.'),\n );\n fs.renameSync(filePath, renamedFilePath);\n filePath = renamedFilePath;\n }\n }\n\n if (shouldAppendJs) {\n suffix = `${suffix}.js`;\n }\n\n editFileContents({\n filePath,\n relativeImportSuffix: suffix,\n });\n};\n\n/**\n * Creates a `client` folder containing the same modules as the client package.\n */\nexport const generateClientBundle = ({\n legacy,\n outputPath,\n plugin,\n tsConfig,\n}: {\n legacy?: boolean;\n outputPath: string;\n plugin: DefinePlugin<Client.Config & { name: string }>['Config'];\n tsConfig: ts.ParsedCommandLine | null;\n}): void => {\n // copy Hey API clients to output\n const isHeyApiClientPlugin = plugin.name.startsWith('@hey-api/client-');\n if (isHeyApiClientPlugin) {\n const shouldAppendJs =\n tsConfig?.options.moduleResolution === ts.ModuleResolutionKind.NodeNext;\n\n // copy client core\n const coreOutputPath = path.resolve(outputPath, 'core');\n ensureDirSync(coreOutputPath);\n const coreDistPath = path.resolve(__dirname, 'clients', 'core');\n copyRecursivePnP(coreDistPath, coreOutputPath);\n\n const coreFiles = fs.readdirSync(coreOutputPath);\n for (const file of coreFiles) {\n renameAndEditFileContents({\n fileName: file,\n outputPath: coreOutputPath,\n shouldAppendJs,\n shouldRename: !legacy,\n });\n }\n\n // copy client bundle\n const clientOutputPath = path.resolve(outputPath, 'client');\n ensureDirSync(clientOutputPath);\n const clientDistFolderName = plugin.name.slice('@hey-api/client-'.length);\n const clientDistPath = path.resolve(\n __dirname,\n 'clients',\n clientDistFolderName,\n );\n copyRecursivePnP(clientDistPath, clientOutputPath);\n\n const clientFiles = fs.readdirSync(clientOutputPath);\n for (const file of clientFiles) {\n renameAndEditFileContents({\n fileName: file,\n outputPath: clientOutputPath,\n shouldAppendJs,\n shouldRename: !legacy,\n });\n }\n return;\n }\n\n let clientSrcPath = '';\n if (path.isAbsolute(plugin.name)) {\n clientSrcPath = getClientSrcPath(plugin.name);\n }\n\n // copy custom local client to output\n if (clientSrcPath) {\n const dirPath = path.resolve(outputPath, 'client');\n ensureDirSync(dirPath);\n copyRecursivePnP(clientSrcPath, dirPath);\n return;\n }\n\n // copy third-party client to output\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', 'index.d.cts'];\n const dirPath = path.resolve(outputPath, 'client');\n ensureDirSync(dirPath);\n for (const file of distFiles) {\n fs.copyFileSync(\n path.resolve(clientDistPath, file),\n path.resolve(dirPath, file),\n );\n }\n};\n","export const typesId = 'types';\n","import { clientModulePath } from '../../../generate/client';\nimport { tsc } from '../../../tsc';\nimport { parseUrl } from '../../../utils/url';\nimport { typesId } from '../typescript/ref';\nimport type { PluginHandler } from './types';\nimport { clientId, getClientBaseUrlKey } from './utils';\n\nconst resolveBaseUrlString = ({\n plugin,\n}: Parameters<PluginHandler>[0]): string | undefined => {\n const { baseUrl } = plugin.config;\n\n if (baseUrl === false) {\n return;\n }\n\n if (typeof baseUrl === 'string') {\n return baseUrl;\n }\n\n const { servers } = plugin.context.ir;\n\n if (!servers) {\n return;\n }\n\n return servers[typeof baseUrl === 'number' ? baseUrl : 0]?.url;\n};\n\nexport const createClient = ({ plugin }: Parameters<PluginHandler>[0]) => {\n const file = plugin.context.file({ id: clientId })!;\n\n const clientModule = clientModulePath({\n config: plugin.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 pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const clientOptions = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ type: 'ClientOptions' }),\n ),\n });\n\n const createClientConfig = plugin.config.runtimeConfigPath\n ? file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: plugin.config.runtimeConfigPath,\n }),\n name: 'createClientConfig',\n })\n : undefined;\n\n const defaultValues: Array<unknown> = [];\n\n const resolvedBaseUrl = resolveBaseUrlString({\n plugin: plugin as any,\n });\n if (resolvedBaseUrl) {\n const url = parseUrl(resolvedBaseUrl);\n if (url.protocol && url.host && !resolvedBaseUrl.includes('{')) {\n defaultValues.push({\n key: getClientBaseUrlKey(plugin.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(plugin.context.config),\n value: baseUrl,\n });\n }\n }\n\n if ('throwOnError' in plugin.config && plugin.config.throwOnError) {\n defaultValues.push({\n key: 'throwOnError',\n value: true,\n });\n }\n\n const createConfigParameters = [\n tsc.callExpression({\n functionName: createConfig.name,\n parameters: defaultValues.length\n ? [tsc.objectExpression({ obj: defaultValues })]\n : undefined,\n types: clientOptions.name\n ? [tsc.typeReferenceNode({ typeName: clientOptions.name })]\n : undefined,\n }),\n ];\n\n const statement = tsc.constVariable({\n exportConst: true,\n expression: tsc.callExpression({\n functionName: createClient.name,\n parameters: createClientConfig\n ? [\n tsc.callExpression({\n functionName: createClientConfig.name,\n parameters: createConfigParameters,\n }),\n ]\n : createConfigParameters,\n }),\n name: 'client',\n });\n file.add(statement);\n};\n","import { clientModulePath } from '../../../generate/client';\nimport { tsc } from '../../../tsc';\nimport { clientId } from '../client-core/utils';\nimport { typesId } from '../typescript/ref';\nimport type { PluginHandler } from './types';\n\nexport const createClientConfigType = ({\n plugin,\n}: Parameters<PluginHandler>[0]) => {\n const file = plugin.context.file({ id: clientId })!;\n\n const clientModule = clientModulePath({\n config: plugin.context.config,\n sourceOutput: file.nameWithoutExtension(),\n });\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const clientOptions = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ type: 'ClientOptions' }),\n ),\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 = tsc.typeReferenceNode({\n typeName: defaultClientOptions.name,\n });\n const tType = tsc.typeReferenceNode({ typeName: 'T' });\n\n const typeCreateClientConfig = tsc.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: tsc.functionTypeNode({\n parameters: [\n tsc.parameterDeclaration({\n name: 'override',\n required: false,\n type: tsc.typeReferenceNode({\n typeArguments: [\n tsc.typeIntersectionNode({\n types: [defaultClientOptionsType, tType],\n }),\n ],\n typeName: configType.name,\n }),\n }),\n ],\n returnType: tsc.typeReferenceNode({\n typeArguments: [\n tsc.typeIntersectionNode({\n types: [\n tsc.typeReferenceNode({\n typeArguments: [defaultClientOptionsType],\n typeName: 'Required',\n }),\n tType,\n ],\n }),\n ],\n typeName: configType.name,\n }),\n }),\n typeParameters: [\n {\n default: clientOptions.name\n ? tsc.typeReferenceNode({ typeName: clientOptions.name })\n : undefined,\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 = ({\n plugin,\n}: Parameters<PluginHandler>[0]) => {\n plugin.createFile({\n id: clientId,\n path: plugin.output,\n });\n\n createClientConfigType({\n plugin: plugin as any,\n });\n createClient({\n plugin: plugin as any,\n });\n};\n","export const nuxtTypeComposable = 'TComposable';\nexport const nuxtTypeDefault = 'DefaultT';\nexport const nuxtTypeResponse = 'ResT';\n\nexport const sdkId = 'sdk';\n","import ts from 'typescript';\n\nimport {\n createOperationKey,\n operationResponsesMap,\n} from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport { stringCase } from '../../../utils/stringCase';\nimport { typesId } from '../typescript/ref';\nimport { bigIntExpressions, dateExpressions } from './expressions';\nimport type { HeyApiTransformersPlugin } from './types';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\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 const irRef = '#/ir/';\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 : tsc.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 plugin,\n schema,\n}: {\n plugin: HeyApiTransformersPlugin['Instance'];\n schema: IR.SchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const identifierData = tsc.identifier({ text: dataVariableName });\n const nodes = processSchemaType({\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(tsc.returnStatement({ expression: identifierData }));\n }\n return nodes;\n};\n\nconst processSchemaType = ({\n dataExpression,\n plugin,\n schema,\n}: {\n dataExpression?: ts.Expression | string;\n plugin: HeyApiTransformersPlugin['Instance'];\n schema: IR.SchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const file = plugin.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 = plugin.context.resolveIrRef<IR.SchemaObject>(\n schema.$ref,\n );\n const nodes = schemaResponseTransformerNodes({\n plugin,\n schema: refSchema,\n });\n if (nodes.length) {\n const node = tsc.constVariable({\n expression: tsc.arrowFunction({\n async: false,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transforms\n type: tsc.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 = tsc.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 tsc.returnStatement({\n expression: callExpression,\n }),\n ];\n }\n\n return [\n typeof dataExpression === 'string'\n ? callExpression\n : tsc.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 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 tsc.returnStatement({\n expression: tsc.identifier({ text: 'item' }),\n }),\n );\n }\n\n return [\n tsc.assignment({\n left: dataExpression,\n right: tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: dataExpression,\n name: 'map',\n }),\n parameters: [\n tsc.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 = tsc.propertyAccessExpression({\n expression: dataExpression || dataVariableName,\n name,\n });\n const propertyNodes = processSchemaType({\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 tsc.ifStatement({\n expression: propertyAccessExpression,\n thenStatement: tsc.block({\n statements: ensureStatements(propertyNodes),\n }),\n }),\n );\n }\n }\n\n return nodes;\n }\n\n if (schema.items) {\n if (schema.items.length === 1) {\n return processSchemaType({\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 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 = tsc.identifier({ text: 'item' });\n // processed means the item was transformed\n arrayNodes.push(\n tsc.ifStatement({\n expression: identifierItem,\n thenStatement: tsc.block({\n statements: ensureStatements(nodes),\n }),\n }),\n tsc.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 if (\n !(schema.items ?? []).every((item) =>\n (\n ['boolean', 'integer', 'null', 'number', 'string'] as ReadonlyArray<\n typeof item.type\n >\n ).includes(item.type),\n )\n ) {\n console.warn(\n `❗️ Transformers warning: schema ${JSON.stringify(schema)} is too complex and won't be currently processed. This will likely produce an incomplete transformer which is not what you want. Please open an issue if you'd like this improved https://github.com/hey-api/openapi-ts/issues`,\n );\n }\n }\n }\n\n for (const transformer of plugin.config.transformers ?? []) {\n const t = transformer({\n config: plugin.config,\n dataExpression,\n file,\n schema,\n });\n if (t) {\n return t;\n }\n }\n\n return [];\n};\n\n// handles only response transformers for now\nexport const handler: HeyApiTransformersPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n id: transformersId,\n path: plugin.output,\n });\n\n if (plugin.config.dates) {\n plugin.config.transformers = [\n ...(plugin.config.transformers ?? []),\n dateExpressions,\n ];\n }\n\n if (plugin.config.bigInt) {\n plugin.config.transformers = [\n ...(plugin.config.transformers ?? []),\n bigIntExpressions,\n ];\n }\n\n plugin.forEach('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 (plugin.context.config.logs.level === 'debug') {\n console.warn(\n `❗️ Transformers warning: route ${createOperationKey(operation)} 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 pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const responseName = fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'response' }),\n );\n\n if (!responseName) {\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({ plugin, schema: response });\n if (nodes.length) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: responseName,\n });\n const responseTransformerNode = tsc.constVariable({\n exportConst: true,\n expression: tsc.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transforms\n type: tsc.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n returnType: tsc.typeReferenceNode({\n typeArguments: [\n tsc.typeReferenceNode({\n typeName: responseName,\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","import type ts from 'typescript';\n\nimport type { GeneratedFile } from '../../../generate/file';\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport type { UserConfig } from './types';\n\nexport type ExpressionTransformer = ({\n config,\n dataExpression,\n file,\n schema,\n}: {\n config: Omit<UserConfig, 'name'>;\n dataExpression?: ts.Expression | string;\n file: GeneratedFile;\n schema: IR.SchemaObject;\n}) => Array<ts.Expression> | undefined;\n\nexport const bigIntExpressions: ExpressionTransformer = ({\n dataExpression,\n schema,\n}) => {\n if (schema.type !== 'integer' || schema.format !== 'int64') {\n return;\n }\n\n const bigIntCallExpression =\n dataExpression !== undefined\n ? tsc.callExpression({\n functionName: 'BigInt',\n parameters: [\n tsc.callExpression({\n functionName: tsc.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 tsc.assignment({\n left: dataExpression,\n right: bigIntCallExpression,\n }),\n ];\n }\n }\n\n return;\n};\n\nexport const dateExpressions: ExpressionTransformer = ({\n dataExpression,\n schema,\n}) => {\n if (\n schema.type !== 'string' ||\n !(schema.format === 'date' || schema.format === 'date-time')\n ) {\n return;\n }\n\n const identifierDate = tsc.identifier({ text: 'Date' });\n\n if (typeof dataExpression === 'string') {\n return [\n tsc.newExpression({\n argumentsArray: [tsc.identifier({ text: dataExpression })],\n expression: identifierDate,\n }),\n ];\n }\n\n if (dataExpression) {\n return [\n tsc.assignment({\n left: dataExpression,\n right: tsc.newExpression({\n argumentsArray: [dataExpression],\n expression: identifierDate,\n }),\n }),\n ];\n }\n\n return;\n};\n","import type { IR } from '../../../ir/types';\nimport type { Auth } from '../client-core/bundle/auth';\nimport type { HeyApiSdkPlugin } from './types';\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 return;\n};\n\nexport const operationAuth = ({\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n}): Array<Auth> => {\n if (!operation.security || !plugin.config.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","import type { IR } from '../../../ir/types';\nimport { sdkId } from './constants';\nimport type { HeyApiSdkPlugin } from './types';\n\nexport const createRequestValidator = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n}) => {\n if (!plugin.config.validator.request) {\n return;\n }\n\n const pluginValidator = plugin.getPlugin(plugin.config.validator.request);\n if (!pluginValidator || !pluginValidator.api.createRequestValidator) {\n return;\n }\n\n return pluginValidator.api.createRequestValidator({\n file: plugin.context.file({ id: sdkId })!,\n operation,\n // @ts-expect-error\n plugin: pluginValidator,\n });\n};\n\nexport const createResponseValidator = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n}) => {\n if (!plugin.config.validator.response) {\n return;\n }\n\n const pluginValidator = plugin.getPlugin(plugin.config.validator.response);\n if (!pluginValidator || !pluginValidator.api.createResponseValidator) {\n return;\n }\n\n return pluginValidator.api.createResponseValidator({\n file: plugin.context.file({ id: sdkId })!,\n operation,\n // @ts-expect-error\n plugin: pluginValidator,\n });\n};\n","import type ts from 'typescript';\n\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport type { GeneratedFile } from '../../../generate/file';\nimport { statusCodeToGroup } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { sanitizeNamespaceIdentifier } from '../../../openApi';\nimport { ensureValidIdentifier } from '../../../openApi/shared/utils/identifier';\nimport { tsc } from '../../../tsc';\nimport type { FunctionParameter, ObjectValue } from '../../../tsc/types';\nimport { reservedJavaScriptKeywordsRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { transformClassName } from '../../../utils/transform';\nimport type { Field, Fields } from '../client-core/bundle/params';\nimport { clientId, getClientPlugin } from '../client-core/utils';\nimport {\n operationTransformerIrRef,\n transformersId,\n} from '../transformers/plugin';\nimport { typesId } from '../typescript/ref';\nimport type { PluginState } from '../typescript/types';\nimport { operationAuth } from './auth';\nimport { nuxtTypeComposable, nuxtTypeDefault, sdkId } from './constants';\nimport type { HeyApiSdkPlugin } from './types';\nimport { createRequestValidator, createResponseValidator } from './validator';\n\ninterface ClassNameEntry {\n /**\n * Name of the class where this function appears.\n */\n className: string;\n /**\n * Name of the function within the class.\n */\n methodName: string;\n /**\n * JSONPath-like array to class location.\n */\n path: ReadonlyArray<string>;\n}\n\nconst operationClassName = ({\n context,\n value,\n}: {\n context: IR.Context;\n value: string;\n}) => {\n const name = stringCase({\n case: 'PascalCase',\n value: sanitizeNamespaceIdentifier(value),\n });\n return transformClassName({\n config: context.config,\n name,\n });\n};\n\nconst getOperationMethodName = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: {\n config: Pick<\n HeyApiSdkPlugin['Instance']['config'],\n 'asClass' | 'methodNameBuilder'\n >;\n };\n}) => {\n if (plugin.config.methodNameBuilder) {\n return plugin.config.methodNameBuilder(operation);\n }\n\n const handleIllegal = !plugin.config.asClass;\n if (handleIllegal && operation.id.match(reservedJavaScriptKeywordsRegExp)) {\n return `${operation.id}_`;\n }\n\n return operation.id;\n};\n\n/**\n * Returns a list of classes where this operation appears in the generated SDK.\n */\nexport const operationClasses = ({\n context,\n operation,\n plugin,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n plugin: {\n config: Pick<\n HeyApiSdkPlugin['Instance']['config'],\n 'asClass' | 'classStructure' | 'instance'\n >;\n };\n}): Map<string, ClassNameEntry> => {\n const classNames = new Map<string, ClassNameEntry>();\n\n let className: string | undefined;\n let methodName: string | undefined;\n let classCandidates: Array<string> = [];\n\n if (plugin.config.classStructure === 'auto' && operation.operationId) {\n classCandidates = operation.operationId.split(/[./]/).filter(Boolean);\n if (classCandidates.length > 1) {\n const methodCandidate = classCandidates.pop()!;\n methodName = stringCase({\n case: 'camelCase',\n value: sanitizeNamespaceIdentifier(methodCandidate),\n });\n className = classCandidates.pop()!;\n }\n }\n\n const rootClasses = plugin.config.instance\n ? [plugin.config.instance as string]\n : (operation.tags ?? ['default']);\n\n for (const rootClass of rootClasses) {\n const finalClassName = operationClassName({\n context,\n value: className || rootClass,\n });\n\n // Default path\n let path = [rootClass];\n if (className) {\n // If root class is already within classCandidates or the same as className\n // do not add it again as this will cause a recursion issue.\n if (classCandidates.includes(rootClass) || rootClass === className) {\n path = [...classCandidates, className];\n } else {\n path = [rootClass, ...classCandidates, className];\n }\n }\n\n classNames.set(rootClass, {\n className: finalClassName,\n methodName: methodName || getOperationMethodName({ operation, plugin }),\n path: path.map((value) =>\n operationClassName({\n context,\n value,\n }),\n ),\n });\n }\n\n return classNames;\n};\n\nexport const operationOptionsType = ({\n file,\n operation,\n plugin,\n throwOnError,\n}: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n throwOnError?: string;\n}) => {\n const client = getClientPlugin(plugin.context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const dataImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'data' }),\n ),\n });\n const optionsName = clientApi.Options.name;\n\n if (isNuxtClient) {\n const responseImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({\n operation,\n type: isNuxtClient ? 'response' : 'responses',\n }),\n ),\n });\n return `${optionsName}<${nuxtTypeComposable}, ${dataImport.name || 'unknown'}, ${responseImport.name || 'unknown'}, ${nuxtTypeDefault}>`;\n }\n\n // TODO: refactor this to be more generic, works for now\n if (throwOnError) {\n return `${optionsName}<${dataImport.name || 'unknown'}, ${throwOnError}>`;\n }\n return dataImport.name ? `${optionsName}<${dataImport.name}>` : optionsName;\n};\n\ntype OperationParameters = {\n argNames: Array<string>;\n fields: Array<Field | Fields>;\n parameters: Array<FunctionParameter>;\n};\n\nexport const operationParameters = ({\n file,\n isRequiredOptions,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n isRequiredOptions: boolean;\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n}): OperationParameters => {\n const result: OperationParameters = {\n argNames: [],\n fields: [],\n parameters: [],\n };\n\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const typescriptState: PluginState = {\n usedTypeIDs: new Set<string>(),\n };\n const client = getClientPlugin(plugin.context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n if (plugin.config.params_EXPERIMENTAL === 'experiment') {\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n\n if (operation.parameters?.path) {\n for (const key in operation.parameters.path) {\n const parameter = operation.parameters.path[key]!;\n const name = ensureValidIdentifier(parameter.name);\n // TODO: detect duplicates\n result.argNames.push(name);\n result.fields.push({\n in: 'path',\n key: name,\n });\n result.parameters.push({\n isRequired: parameter.required,\n name,\n type: pluginTypeScript.api.schemaToType({\n onRef: (id) => {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: fileTypeScript.getName(id),\n });\n },\n plugin: pluginTypeScript,\n schema: parameter.schema,\n state: typescriptState,\n }),\n });\n }\n }\n\n if (operation.parameters?.query) {\n for (const key in operation.parameters.query) {\n const parameter = operation.parameters.query[key]!;\n const name = ensureValidIdentifier(parameter.name);\n // TODO: detect duplicates\n result.argNames.push(name);\n result.fields.push({\n in: 'path',\n key: name,\n });\n result.parameters.push({\n isRequired: parameter.required,\n name,\n type: pluginTypeScript.api.schemaToType({\n onRef: (id) => {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: fileTypeScript.getName(id),\n });\n },\n plugin: pluginTypeScript,\n schema: parameter.schema,\n state: typescriptState,\n }),\n });\n }\n }\n\n if (operation.body) {\n const name = 'body';\n // TODO: detect duplicates\n result.argNames.push(name);\n result.fields.push({ in: 'body' });\n result.parameters.push({\n isRequired: operation.body.required,\n name,\n type: pluginTypeScript.api.schemaToType({\n onRef: (id) => {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: fileTypeScript.getName(id),\n });\n },\n plugin: pluginTypeScript,\n schema: operation.body.schema,\n state: typescriptState,\n }),\n });\n }\n }\n\n result.parameters.push({\n isRequired: isRequiredOptions,\n name: 'options',\n // TODO: ensure no path, body, query\n type: operationOptionsType({\n file,\n operation,\n plugin,\n throwOnError: isNuxtClient ? undefined : 'ThrowOnError',\n }),\n });\n\n return result;\n};\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 */\nconst 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 return;\n};\n\nexport const operationStatements = ({\n isRequiredOptions,\n opParameters,\n operation,\n plugin,\n}: {\n isRequiredOptions: boolean;\n opParameters: OperationParameters;\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n}): Array<ts.Statement> => {\n const file = plugin.context.file({ id: sdkId })!;\n const sdkOutput = file.nameWithoutExtension();\n\n const client = getClientPlugin(plugin.context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const responseImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({\n operation,\n type: isNuxtClient ? 'response' : 'responses',\n }),\n ),\n });\n const errorImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({\n operation,\n type: isNuxtClient ? 'error' : 'errors',\n }),\n ),\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 const imported = file.import({\n module: clientModulePath({\n config: plugin.context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'formDataBodySerializer',\n });\n requestOptions.push({ spread: imported.name });\n break;\n }\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 const imported = file.import({\n module: clientModulePath({\n config: plugin.context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'urlSearchParamsBodySerializer',\n });\n requestOptions.push({ spread: imported.name });\n break;\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 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 const requestValidator = createRequestValidator({ operation, plugin });\n if (requestValidator) {\n requestOptions.push({\n key: 'requestValidator',\n value: requestValidator,\n });\n }\n\n if (plugin.config.transformer === '@hey-api/transformers') {\n const identifierTransformer = plugin.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: plugin.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 let hasServerSentEvents = false;\n let responseTypeValue: ReturnType<typeof getResponseType> | undefined;\n\n for (const statusCode in operation.responses) {\n const response = operation.responses[statusCode]!;\n\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 if (!responseTypeValue && client.name === '@hey-api/client-axios') {\n // this doesn't handle default status code for now\n if (statusCodeToGroup({ statusCode }) === '2XX') {\n responseTypeValue = getResponseType(response.mediaType);\n if (responseTypeValue) {\n requestOptions.push({\n key: 'responseType',\n value: responseTypeValue,\n });\n }\n }\n }\n\n if (response.mediaType === 'text/event-stream') {\n hasServerSentEvents = true;\n }\n }\n\n const responseValidator = createResponseValidator({ operation, plugin });\n if (responseValidator) {\n requestOptions.push({\n key: 'responseValidator',\n value: responseValidator,\n });\n }\n\n if (plugin.config.responseStyle === 'data') {\n requestOptions.push({\n key: 'responseStyle',\n value: plugin.config.responseStyle,\n });\n }\n\n const auth = operationAuth({ context: plugin.context, operation, plugin });\n if (auth.length) {\n requestOptions.push({\n key: 'security',\n value: tsc.arrayLiteralExpression({ elements: auth }),\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\n const statements: Array<ts.Statement> = [];\n const hasParams = opParameters.argNames.length;\n\n if (hasParams) {\n const args: Array<unknown> = [];\n const config: Array<unknown> = [];\n for (const argName of opParameters.argNames) {\n args.push(tsc.identifier({ text: argName }));\n }\n for (const field of opParameters.fields) {\n const obj: Array<Record<string, unknown>> = [];\n if ('in' in field) {\n obj.push({\n key: 'in',\n value: field.in,\n });\n if (field.key) {\n obj.push({\n key: 'key',\n value: field.key,\n });\n }\n if (field.map) {\n obj.push({\n key: 'map',\n value: field.map,\n });\n }\n }\n config.push(tsc.objectExpression({ obj }));\n }\n const imported = file.import({\n module: clientModulePath({\n config: plugin.context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'buildClientParams',\n });\n statements.push(\n tsc.constVariable({\n expression: tsc.callExpression({\n functionName: imported.name,\n parameters: [\n tsc.arrayLiteralExpression({ elements: args }),\n tsc.arrayLiteralExpression({ elements: config }),\n ],\n }),\n name: 'params',\n }),\n );\n requestOptions.push({ spread: 'params' });\n }\n\n if (operation.body) {\n const parameterContentType = operation.parameters?.header?.['content-type'];\n const hasRequiredContentType = Boolean(parameterContentType?.required);\n // spreading required Content-Type on generated header would throw a TypeScript error\n if (!hasRequiredContentType) {\n const headersValue: Array<unknown> = [\n {\n key: parameterContentType?.name ?? '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: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: !isRequiredOptions,\n name: 'headers',\n }),\n },\n ];\n if (hasParams) {\n headersValue.push({\n spread: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'params' }),\n name: 'headers',\n }),\n });\n }\n requestOptions.push({\n key: 'headers',\n value: headersValue,\n });\n }\n }\n\n const responseType = responseImport.name || 'unknown';\n const errorType = errorImport.name || 'unknown';\n\n const heyApiClient = plugin.config.client\n ? file.import({\n alias: '_heyApiClient',\n module: file.relativePathToFile({\n context: plugin.context,\n id: clientId,\n }),\n name: 'client',\n })\n : undefined;\n\n const optionsClient = tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: !isRequiredOptions,\n name: 'client',\n });\n\n let clientExpression: ts.Expression;\n\n if (plugin.config.instance) {\n clientExpression = tsc.binaryExpression({\n left: optionsClient,\n operator: '??',\n right: tsc.propertyAccessExpression({\n expression: tsc.this(),\n name: '_client',\n }),\n });\n } else if (heyApiClient?.name) {\n clientExpression = tsc.binaryExpression({\n left: optionsClient,\n operator: '??',\n right: tsc.identifier({ text: heyApiClient.name }),\n });\n } else {\n clientExpression = optionsClient;\n }\n\n const types: Array<string | ts.StringLiteral> = [];\n if (isNuxtClient) {\n types.push(\n nuxtTypeComposable,\n `${responseType} | ${nuxtTypeDefault}`,\n errorType,\n nuxtTypeDefault,\n );\n } else {\n types.push(responseType, errorType, 'ThrowOnError');\n }\n\n if (plugin.config.responseStyle === 'data') {\n types.push(tsc.stringLiteral({ text: plugin.config.responseStyle }));\n }\n\n let functionName = hasServerSentEvents\n ? tsc.propertyAccessExpression({\n expression: clientExpression,\n name: tsc.identifier({ text: 'sse' }),\n })\n : clientExpression;\n\n functionName = tsc.propertyAccessExpression({\n expression: functionName,\n name: tsc.identifier({ text: operation.method }),\n });\n\n statements.push(\n tsc.returnFunctionCall({\n args: [\n tsc.objectExpression({\n identifiers: ['responseTransformer'],\n obj: requestOptions,\n }),\n ],\n name: functionName,\n types,\n }),\n );\n\n return statements;\n};\n","import { hasOperationDataRequired } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport type { Comments } from '../../../tsc';\nimport { escapeComment } from '../../../utils/escape';\nimport { getClientPlugin } from '../../@hey-api/client-core/utils';\n\nexport const createOperationComment = ({\n operation,\n}: {\n operation: IR.OperationObject;\n}): Comments | undefined => {\n const comments: Array<string> = [];\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 if (operation.deprecated) {\n comments.push('@deprecated');\n }\n\n return comments.length ? comments : undefined;\n};\n\nexport const isOperationOptionsRequired = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}): boolean => {\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n const plugin = context.config.plugins['@hey-api/sdk'];\n return (\n (plugin && !plugin.config.client && !plugin.config.instance) ||\n isNuxtClient ||\n hasOperationDataRequired(operation)\n );\n};\n","export const REQUEST_APIS_SUFFIX = '/http/requests';\nexport const RESOURCE_APIS_SUFFIX = '/http/resources';\n","import type ts from 'typescript';\n\nimport type { GeneratedFile } from '../../../generate/file';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { stringCase } from '../../../utils/stringCase';\nimport { clientId } from '../../@hey-api/client-core/utils';\nimport { sdkId } from '../../@hey-api/sdk/constants';\nimport { operationClasses } from '../../@hey-api/sdk/operation';\nimport { typesId } from '../../@hey-api/typescript/ref';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\nimport { REQUEST_APIS_SUFFIX } from './constants';\nimport type { AngularCommonPlugin } from './types';\n\ninterface AngularRequestClassEntry {\n className: string;\n classes: Set<string>;\n methods: Set<string>;\n nodes: Array<ts.ClassElement>;\n root: boolean;\n}\n\nconst generateAngularClassRequests = ({\n file,\n plugin,\n}: {\n file: GeneratedFile;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n const requestClasses = new Map<string, AngularRequestClassEntry>();\n const generatedClasses = new Set<string>();\n\n const sdkPlugin = plugin.getPlugin('@hey-api/sdk')!;\n\n // Iterate through operations to build class structure\n plugin.forEach('operation', ({ operation }) => {\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n\n const classes = operationClasses({\n context: plugin.context,\n operation,\n plugin: sdkPlugin,\n });\n\n for (const entry of classes.values()) {\n entry.path.forEach((currentClassName, index) => {\n if (!requestClasses.has(currentClassName)) {\n requestClasses.set(currentClassName, {\n className: currentClassName,\n classes: new Set(),\n methods: new Set(),\n nodes: [],\n root: !index,\n });\n }\n\n const parentClassName = entry.path[index - 1];\n if (parentClassName && parentClassName !== currentClassName) {\n const parentClass = requestClasses.get(parentClassName)!;\n parentClass.classes.add(currentClassName);\n requestClasses.set(parentClassName, parentClass);\n }\n\n const isLast = entry.path.length === index + 1;\n if (!isLast) {\n return;\n }\n\n const currentClass = requestClasses.get(currentClassName)!;\n\n // Generate the request method name with \"Request\" suffix\n const requestMethodName =\n plugin.config.httpRequests.methodNameBuilder(operation);\n\n // Avoid duplicate methods\n if (currentClass.methods.has(requestMethodName)) {\n return;\n }\n\n // Generate Angular request method\n const methodNode = generateAngularRequestMethod({\n file,\n isRequiredOptions,\n methodName: requestMethodName,\n operation,\n plugin,\n });\n\n if (!currentClass.nodes.length) {\n currentClass.nodes.push(methodNode);\n } else {\n // @ts-expect-error\n currentClass.nodes.push(tsc.identifier({ text: '\\n' }), methodNode);\n }\n\n currentClass.methods.add(requestMethodName);\n requestClasses.set(currentClassName, currentClass);\n });\n }\n });\n\n // Generate classes\n const generateClass = (currentClass: AngularRequestClassEntry) => {\n if (generatedClasses.has(currentClass.className)) {\n return;\n }\n\n // Handle child classes\n if (currentClass.classes.size) {\n for (const childClassName of currentClass.classes) {\n const childClass = requestClasses.get(childClassName)!;\n generateClass(childClass);\n\n currentClass.nodes.push(\n tsc.propertyDeclaration({\n initializer: tsc.newExpression({\n argumentsArray: [],\n expression: tsc.identifier({\n text: buildName({\n config: {\n case: 'preserve',\n name: plugin.config.httpRequests.classNameBuilder,\n },\n name: childClass.className,\n }),\n }),\n }),\n name: stringCase({\n case: 'camelCase',\n value: childClass.className,\n }),\n }),\n );\n }\n }\n\n const node = tsc.classDeclaration({\n decorator: currentClass.root\n ? {\n args: [\n {\n providedIn: 'root',\n },\n ],\n name: 'Injectable',\n }\n : undefined,\n exportClass: currentClass.root,\n name: buildName({\n config: {\n case: 'preserve',\n name: plugin.config.httpRequests.classNameBuilder,\n },\n name: currentClass.className,\n }),\n nodes: currentClass.nodes,\n });\n\n file.add(node);\n generatedClasses.add(currentClass.className);\n };\n\n for (const requestClass of requestClasses.values()) {\n generateClass(requestClass);\n }\n};\n\nconst generateAngularFunctionRequests = ({\n file,\n plugin,\n}: {\n file: GeneratedFile;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n plugin.forEach('operation', ({ operation }) => {\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n\n // Generate function name with \"Request\" suffix\n const functionName =\n plugin.config.httpRequests.methodNameBuilder(operation);\n\n const node = generateAngularRequestFunction({\n file,\n functionName,\n isRequiredOptions,\n operation,\n plugin,\n });\n\n file.add(node);\n });\n};\n\nconst generateRequestCallExpression = ({\n file,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n // TODO: client might not be always defined\n const heyApiClient = file.import({\n alias: '_heyApiClient',\n module: file.relativePathToFile({\n context: plugin.context,\n id: clientId,\n }),\n name: 'client',\n });\n\n const optionsClient = tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: true,\n name: 'client',\n });\n\n return tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.binaryExpression({\n left: optionsClient,\n operator: '??',\n right: tsc.identifier({ text: heyApiClient.name }),\n }),\n name: 'requestOptions',\n }),\n parameters: [\n tsc.objectExpression({\n obj: [\n {\n key: 'responseStyle',\n value: tsc.identifier({ text: \"'data'\" }),\n },\n {\n key: 'method',\n value: tsc.identifier({\n text: `'${operation.method.toUpperCase()}'`,\n }),\n },\n {\n key: 'url',\n value: tsc.identifier({ text: `'${operation.path}'` }),\n },\n {\n spread: 'options',\n },\n ],\n }),\n ],\n });\n};\n\nconst generateAngularRequestMethod = ({\n file,\n isRequiredOptions,\n methodName,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n isRequiredOptions: boolean;\n methodName: string;\n operation: IR.OperationObject;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n // Import operation data type\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const dataType = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'data' }),\n ),\n });\n\n return tsc.methodDeclaration({\n accessLevel: 'public',\n comment: createOperationComment({ operation }),\n name: methodName,\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: `Options<${dataType.name || 'unknown'}, ThrowOnError>`,\n },\n ],\n returnType: 'HttpRequest<unknown>',\n statements: [\n tsc.returnStatement({\n expression: generateRequestCallExpression({\n file,\n operation,\n plugin,\n }),\n }),\n ],\n types: [\n {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n });\n};\n\nconst generateAngularRequestFunction = ({\n file,\n functionName,\n isRequiredOptions,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n functionName: string;\n isRequiredOptions: boolean;\n operation: IR.OperationObject;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const dataType = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'data' }),\n ),\n });\n\n return tsc.constVariable({\n comment: createOperationComment({ operation }),\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: `Options<${dataType.name || 'unknown'}, ThrowOnError>`,\n },\n ],\n returnType: 'HttpRequest<unknown>',\n statements: [\n tsc.returnStatement({\n expression: generateRequestCallExpression({\n file,\n operation,\n plugin,\n }),\n }),\n ],\n types: [\n {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n }),\n name: functionName,\n });\n};\n\nexport const createHttpRequests: AngularCommonPlugin['Handler'] = ({\n plugin,\n}) => {\n const file = plugin.createFile({\n id: `${plugin.name}${REQUEST_APIS_SUFFIX}`,\n path: `${plugin.output}${REQUEST_APIS_SUFFIX}`,\n });\n\n if (plugin.config.httpRequests.asClass) {\n file.import({\n module: '@angular/core',\n name: 'Injectable',\n });\n }\n\n file.import({\n module: '@angular/common/http',\n name: 'HttpRequest',\n });\n\n file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: sdkId,\n }),\n name: 'Options',\n });\n\n if (plugin.config.httpRequests.asClass) {\n generateAngularClassRequests({ file, plugin });\n } else {\n generateAngularFunctionRequests({ file, plugin });\n }\n};\n","import type ts from 'typescript';\n\nimport type { GeneratedFile } from '../../../generate/file';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { stringCase } from '../../../utils/stringCase';\nimport { sdkId } from '../../@hey-api/sdk/constants';\nimport { operationClasses } from '../../@hey-api/sdk/operation';\nimport { typesId } from '../../@hey-api/typescript/ref';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\nimport { REQUEST_APIS_SUFFIX, RESOURCE_APIS_SUFFIX } from './constants';\nimport type { AngularCommonPlugin } from './types';\n\ninterface AngularServiceClassEntry {\n className: string;\n classes: Set<string>;\n methods: Set<string>;\n nodes: Array<ts.ClassElement>;\n root: boolean;\n}\n\nconst generateAngularClassServices = ({\n file,\n plugin,\n}: {\n file: GeneratedFile;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n const serviceClasses = new Map<string, AngularServiceClassEntry>();\n const generatedClasses = new Set<string>();\n\n const sdkPlugin = plugin.getPlugin('@hey-api/sdk')!;\n\n // Iterate through operations to build class structure\n plugin.forEach('operation', ({ operation }) => {\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n\n const classes = operationClasses({\n context: plugin.context,\n operation,\n plugin: sdkPlugin,\n });\n\n for (const entry of classes.values()) {\n entry.path.forEach((currentClassName, index) => {\n if (!serviceClasses.has(currentClassName)) {\n serviceClasses.set(currentClassName, {\n className: currentClassName,\n classes: new Set(),\n methods: new Set(),\n nodes: [],\n root: !index,\n });\n }\n\n const parentClassName = entry.path[index - 1];\n if (parentClassName && parentClassName !== currentClassName) {\n const parentClass = serviceClasses.get(parentClassName)!;\n parentClass.classes.add(currentClassName);\n serviceClasses.set(parentClassName, parentClass);\n }\n\n const isLast = entry.path.length === index + 1;\n if (!isLast) {\n return;\n }\n\n const currentClass = serviceClasses.get(currentClassName)!;\n\n // Generate the resource method name\n const resourceMethodName =\n plugin.config.httpResources.methodNameBuilder(operation);\n\n // Avoid duplicate methods\n if (currentClass.methods.has(resourceMethodName)) {\n return;\n }\n\n // Generate Angular resource method\n const methodNode = generateAngularResourceMethod({\n file,\n isRequiredOptions,\n methodName: resourceMethodName,\n operation,\n plugin,\n });\n\n if (!currentClass.nodes.length) {\n currentClass.nodes.push(methodNode);\n } else {\n // @ts-expect-error\n currentClass.nodes.push(tsc.identifier({ text: '\\n' }), methodNode);\n }\n\n currentClass.methods.add(resourceMethodName);\n serviceClasses.set(currentClassName, currentClass);\n });\n }\n });\n\n // Generate classes\n const generateClass = (currentClass: AngularServiceClassEntry) => {\n if (generatedClasses.has(currentClass.className)) {\n return;\n }\n\n // Handle child classes\n if (currentClass.classes.size) {\n for (const childClassName of currentClass.classes) {\n const childClass = serviceClasses.get(childClassName)!;\n generateClass(childClass);\n\n currentClass.nodes.push(\n tsc.propertyDeclaration({\n initializer: tsc.newExpression({\n argumentsArray: [],\n expression: tsc.identifier({\n text: buildName({\n config: {\n case: 'preserve',\n name: plugin.config.httpResources.classNameBuilder,\n },\n name: childClass.className,\n }),\n }),\n }),\n name: stringCase({\n case: 'camelCase',\n value: childClass.className,\n }),\n }),\n );\n }\n }\n\n const node = tsc.classDeclaration({\n decorator: currentClass.root\n ? {\n args: [\n {\n providedIn: 'root',\n },\n ],\n name: 'Injectable',\n }\n : undefined,\n exportClass: currentClass.root,\n name: buildName({\n config: {\n case: 'preserve',\n name: plugin.config.httpResources.classNameBuilder,\n },\n name: currentClass.className,\n }),\n nodes: currentClass.nodes,\n });\n\n file.add(node);\n generatedClasses.add(currentClass.className);\n };\n\n for (const serviceClass of serviceClasses.values()) {\n generateClass(serviceClass);\n }\n};\n\nconst generateAngularFunctionServices = ({\n file,\n plugin,\n}: {\n file: GeneratedFile;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n plugin.forEach('operation', ({ operation }) => {\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n\n const node = generateAngularResourceFunction({\n file,\n functionName: plugin.config.httpResources.methodNameBuilder(operation),\n isRequiredOptions,\n operation,\n plugin,\n });\n\n file.add(node);\n });\n};\n\nconst generateResourceCallExpression = ({\n file,\n isRequiredOptions,\n operation,\n plugin,\n responseTypeName,\n}: {\n file: GeneratedFile;\n isRequiredOptions: boolean;\n operation: IR.OperationObject;\n plugin: AngularCommonPlugin['Instance'];\n responseTypeName: string;\n}) => {\n const sdkPlugin = plugin.getPlugin('@hey-api/sdk')!;\n\n // Check if httpRequest is configured to use classes\n const useRequestClasses = plugin.config.httpRequests.asClass;\n let requestFunctionCall;\n\n // Create the options call expression based on whether options are required\n const optionsCallExpression = isRequiredOptions\n ? tsc.callExpression({\n functionName: 'options',\n parameters: [],\n })\n : tsc.conditionalExpression({\n condition: tsc.identifier({ text: 'options' }),\n whenFalse: tsc.identifier({ text: 'undefined' }),\n whenTrue: tsc.callExpression({\n functionName: 'options',\n parameters: [],\n }),\n });\n\n if (useRequestClasses) {\n // For class-based request methods, use inject and class hierarchy\n const classes = operationClasses({\n context: plugin.context,\n operation,\n plugin: sdkPlugin,\n });\n\n const firstEntry = Array.from(classes.values())[0];\n if (firstEntry) {\n // Import the root class from HTTP requests\n const rootClassName = firstEntry.path[0]!;\n const requestClassName = buildName({\n config: {\n case: 'preserve',\n name: plugin.config.httpRequests.classNameBuilder,\n },\n name: rootClassName,\n });\n\n // Build the method access path using inject\n let methodAccess: ts.Expression = tsc.callExpression({\n functionName: 'inject',\n parameters: [tsc.identifier({ text: requestClassName })],\n });\n\n // Navigate through the class hierarchy\n for (let i = 1; i < firstEntry.path.length; i++) {\n const className = firstEntry.path[i];\n if (className) {\n methodAccess = tsc.propertyAccessExpression({\n expression: methodAccess,\n name: stringCase({\n case: 'camelCase',\n value: className,\n }),\n });\n }\n }\n\n // Add the final method name with \"Request\" suffix\n const requestMethodName =\n plugin.config.httpRequests.methodNameBuilder(operation);\n methodAccess = tsc.propertyAccessExpression({\n expression: methodAccess,\n name: requestMethodName,\n });\n\n requestFunctionCall = tsc.callExpression({\n functionName: methodAccess,\n parameters: [optionsCallExpression],\n });\n }\n } else {\n // For function-based request methods, import and call the function directly\n const requestFunctionName =\n plugin.config.httpRequests.methodNameBuilder(operation);\n\n const requestImport = file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: `${plugin.name}${REQUEST_APIS_SUFFIX}`,\n }),\n name: requestFunctionName,\n });\n\n requestFunctionCall = tsc.callExpression({\n functionName: requestImport.name,\n parameters: [optionsCallExpression],\n });\n }\n\n return tsc.callExpression({\n functionName: 'httpResource',\n parameters: [\n tsc.arrowFunction({\n parameters: [],\n statements: [\n tsc.returnStatement({\n expression: requestFunctionCall,\n }),\n ],\n }),\n ],\n types: [tsc.typeNode(responseTypeName)],\n });\n};\n\nconst generateAngularResourceMethod = ({\n file,\n isRequiredOptions,\n methodName,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n isRequiredOptions: boolean;\n methodName: string;\n operation: IR.OperationObject;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n // Import operation data type\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const dataType = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'data' }),\n ),\n });\n\n // Import operation response type\n const responseType = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'response' }),\n ),\n });\n\n return tsc.methodDeclaration({\n accessLevel: 'public',\n comment: createOperationComment({ operation }),\n // isStatic: true,\n name: methodName,\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: `() => Options<${dataType.name || 'unknown'}, ThrowOnError>`,\n },\n ],\n returnType: undefined,\n statements: [\n tsc.returnStatement({\n expression: generateResourceCallExpression({\n file,\n isRequiredOptions,\n operation,\n plugin,\n responseTypeName: responseType.name || 'unknown',\n }),\n }),\n ],\n types: [\n {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n });\n};\n\nconst generateAngularResourceFunction = ({\n file,\n functionName,\n isRequiredOptions,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n functionName: string;\n isRequiredOptions: boolean;\n operation: IR.OperationObject;\n plugin: AngularCommonPlugin['Instance'];\n}) => {\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const dataType = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'data' }),\n ),\n });\n\n // Import operation response type\n const responseType = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'response' }),\n ),\n });\n\n return tsc.constVariable({\n comment: createOperationComment({ operation }),\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: `() => Options<${dataType.name || 'unknown'}, ThrowOnError>`,\n },\n ],\n statements: [\n tsc.returnStatement({\n expression: generateResourceCallExpression({\n file,\n isRequiredOptions,\n operation,\n plugin,\n responseTypeName: responseType.name || 'unknown',\n }),\n }),\n ],\n types: [\n {\n default: false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n }),\n name: functionName,\n });\n};\n\nexport const createHttpResources: AngularCommonPlugin['Handler'] = ({\n plugin,\n}) => {\n const file = plugin.createFile({\n id: `${plugin.name}${RESOURCE_APIS_SUFFIX}`,\n path: `${plugin.output}${RESOURCE_APIS_SUFFIX}`,\n });\n\n if (plugin.config.httpResources.asClass) {\n file.import({\n module: '@angular/core',\n name: 'Injectable',\n });\n }\n\n if (plugin.config.httpRequests.asClass) {\n file.import({\n module: '@angular/core',\n name: 'inject',\n });\n }\n\n file.import({\n module: '@angular/common/http',\n name: 'httpResource',\n });\n\n file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: sdkId,\n }),\n name: 'Options',\n });\n\n if (plugin.config.httpResources.asClass) {\n generateAngularClassServices({ file, plugin });\n } else {\n generateAngularFunctionServices({ file, plugin });\n }\n};\n","import { createHttpRequests } from './httpRequests';\nimport { createHttpResources } from './httpResources';\nimport type { AngularCommonPlugin } from './types';\n\nexport const handler: AngularCommonPlugin['Handler'] = ({ plugin }) => {\n if (plugin.config.httpRequests.enabled) {\n createHttpRequests({ plugin });\n }\n\n if (plugin.config.httpResources.enabled) {\n createHttpResources({ plugin });\n }\n};\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from './plugin';\nimport type { AngularCommonPlugin } from './types';\n\nexport const defaultConfig: AngularCommonPlugin['Config'] = {\n config: {\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/client-angular', '@hey-api/sdk'],\n handler,\n name: '@angular/common',\n output: '@angular/common',\n resolveConfig: (plugin, context) => {\n plugin.config.httpRequests = context.valueToObject({\n defaultValue: {\n asClass: false,\n classNameBuilder: '{{name}}Requests',\n enabled: true,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n },\n value: plugin.config.httpRequests,\n });\n\n if (!plugin.config.httpRequests.methodNameBuilder) {\n const { asClass } = plugin.config.httpRequests;\n plugin.config.httpRequests.methodNameBuilder = (operation) =>\n asClass ? String(operation.id) : `${String(operation.id)}Request`;\n }\n\n plugin.config.httpResources = context.valueToObject({\n defaultValue: {\n asClass: false,\n classNameBuilder: '{{name}}Resources',\n enabled: true,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n },\n value: plugin.config.httpResources,\n });\n\n if (!plugin.config.httpResources.methodNameBuilder) {\n const { asClass } = plugin.config.httpResources;\n plugin.config.httpResources.methodNameBuilder = (operation) =>\n asClass ? String(operation.id) : `${String(operation.id)}Resource`;\n }\n },\n};\n\n/**\n * Type helper for `@angular/common` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { clientDefaultConfig, clientDefaultMeta } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { HeyApiClientAngularPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientAngularPlugin['Config'] = {\n ...clientDefaultMeta,\n config: {\n ...clientDefaultConfig,\n throwOnError: false,\n },\n handler: clientPluginHandler as HeyApiClientAngularPlugin['Handler'],\n name: '@hey-api/client-angular',\n};\n\n/**\n * Type helper for `@hey-api/client-angular` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { clientDefaultConfig, clientDefaultMeta } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { HeyApiClientAxiosPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientAxiosPlugin['Config'] = {\n ...clientDefaultMeta,\n config: {\n ...clientDefaultConfig,\n throwOnError: false,\n },\n handler: clientPluginHandler as HeyApiClientAxiosPlugin['Handler'],\n name: '@hey-api/client-axios',\n};\n\n/**\n * Type helper for `@hey-api/client-axios` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { clientDefaultConfig, clientDefaultMeta } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { HeyApiClientFetchPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientFetchPlugin['Config'] = {\n ...clientDefaultMeta,\n config: {\n ...clientDefaultConfig,\n throwOnError: false,\n },\n handler: clientPluginHandler as HeyApiClientFetchPlugin['Handler'],\n name: '@hey-api/client-fetch',\n};\n\n/**\n * Type helper for `@hey-api/client-fetch` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { clientDefaultConfig, clientDefaultMeta } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { HeyApiClientNextPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientNextPlugin['Config'] = {\n ...clientDefaultMeta,\n config: {\n ...clientDefaultConfig,\n throwOnError: false,\n },\n handler: clientPluginHandler as HeyApiClientNextPlugin['Handler'],\n name: '@hey-api/client-next',\n};\n\n/**\n * Type helper for `@hey-api/client-next` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { clientDefaultConfig, clientDefaultMeta } from '../client-core/config';\nimport { clientPluginHandler } from '../client-core/plugin';\nimport type { HeyApiClientNuxtPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientNuxtPlugin['Config'] = {\n ...clientDefaultMeta,\n config: clientDefaultConfig,\n handler: clientPluginHandler as HeyApiClientNuxtPlugin['Handler'],\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 = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport type { HeyApiClientLegacyAngularPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientLegacyAngularPlugin['Config'] = {\n config: {},\n handler: () => {},\n name: 'legacy/angular',\n output: 'client',\n tags: ['client'],\n};\n\n/**\n * Type helper for `legacy/angular` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport type { HeyApiClientLegacyAxiosPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientLegacyAxiosPlugin['Config'] = {\n config: {},\n handler: () => {},\n name: 'legacy/axios',\n output: 'client',\n tags: ['client'],\n};\n\n/**\n * Type helper for `legacy/axios` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport type { HeyApiClientLegacyFetchPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientLegacyFetchPlugin['Config'] = {\n config: {},\n handler: () => {},\n name: 'legacy/fetch',\n output: 'client',\n tags: ['client'],\n};\n\n/**\n * Type helper for `legacy/fetch` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport type { HeyApiClientLegacyNodePlugin } from './types';\n\nexport const defaultConfig: HeyApiClientLegacyNodePlugin['Config'] = {\n config: {},\n handler: () => {},\n name: 'legacy/node',\n output: 'client',\n tags: ['client'],\n};\n\n/**\n * Type helper for `legacy/node` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport type { HeyApiClientLegacyXhrPlugin } from './types';\n\nexport const defaultConfig: HeyApiClientLegacyXhrPlugin['Config'] = {\n config: {},\n handler: () => {},\n name: 'legacy/xhr',\n output: 'client',\n tags: ['client'],\n};\n\n/**\n * Type helper for `legacy/xhr` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import type { IR } from '../../../ir/types';\nimport type { OpenApiV2_0_XTypes } from '../../../openApi/2.0.x';\nimport type { OpenApiV3_0_XTypes } from '../../../openApi/3.0.x';\nimport type { OpenApiV3_1_XTypes } from '../../../openApi/3.1.x';\nimport { ensureValidIdentifier } from '../../../openApi/shared/utils/identifier';\nimport type { OpenApi } from '../../../openApi/types';\nimport { tsc } from '../../../tsc';\nimport type { HeyApiSchemasPlugin } from './types';\n\nconst schemasId = 'schemas';\n\nconst stripSchema = ({\n plugin,\n schema,\n}: {\n plugin: HeyApiSchemasPlugin['Instance'];\n schema:\n | OpenApiV2_0_XTypes['SchemaObject']\n | OpenApiV3_0_XTypes['SchemaObject']\n | OpenApiV3_1_XTypes['SchemaObject'];\n}) => {\n if (plugin.config.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: HeyApiSchemasPlugin['Instance'];\n schema: OpenApiV2_0_XTypes['SchemaObject'];\n}): OpenApiV2_0_XTypes['SchemaObject'] => {\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_XTypes['SchemaObject'];\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_XTypes['SchemaObject'],\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: HeyApiSchemasPlugin['Instance'];\n schema:\n | OpenApiV3_0_XTypes['SchemaObject']\n | OpenApiV3_0_XTypes['ReferenceObject'];\n}):\n | OpenApiV3_0_XTypes['SchemaObject']\n | OpenApiV3_0_XTypes['ReferenceObject'] => {\n if (Array.isArray(_schema)) {\n return _schema.map((item) =>\n schemaToJsonSchemaDraft_05({\n context,\n plugin,\n schema: item,\n }),\n ) as\n | OpenApiV3_0_XTypes['SchemaObject']\n | OpenApiV3_0_XTypes['ReferenceObject'];\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: HeyApiSchemasPlugin['Instance'];\n schema: OpenApiV3_1_XTypes['SchemaObject'];\n}): OpenApiV3_1_XTypes['SchemaObject'] => {\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_XTypes['SchemaObject'];\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: HeyApiSchemasPlugin['Instance'];\n schema:\n | OpenApiV2_0_XTypes['SchemaObject']\n | OpenApiV3_0_XTypes['ReferenceObject']\n | OpenApiV3_0_XTypes['SchemaObject']\n | OpenApiV3_1_XTypes['SchemaObject'];\n}): string => {\n let customName = '';\n\n if (plugin.config.nameBuilder) {\n if (typeof plugin.config.nameBuilder === 'function') {\n customName = plugin.config.nameBuilder(name, schema);\n } else {\n customName = plugin.config.nameBuilder.replace('{{name}}', name);\n }\n }\n\n if (!customName) {\n customName = `${name}Schema`;\n }\n\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: HeyApiSchemasPlugin['Instance'];\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 = tsc.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: tsc.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: HeyApiSchemasPlugin['Instance'];\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 = tsc.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: tsc.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: HeyApiSchemasPlugin['Instance'];\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 = tsc.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: tsc.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nexport const handler: HeyApiSchemasPlugin['Handler'] = ({ plugin }) => {\n plugin.createFile({\n id: schemasId,\n path: plugin.output,\n });\n\n if ('swagger' in plugin.context.spec) {\n schemasV2_0_X({\n context: plugin.context as IR.Context<OpenApi.V2_0_X>,\n plugin,\n });\n return;\n }\n\n switch (plugin.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: plugin.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: plugin.context as IR.Context<OpenApi.V3_1_X>,\n plugin,\n });\n break;\n default:\n throw new Error('Unsupported OpenAPI specification');\n }\n};\n","import { GeneratedFile } from '../../../generate/file';\nimport type { OpenApiV2Schema, OpenApiV3Schema } from '../../../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../../../openApi';\nimport { tsc } from '../../../tsc';\nimport { getConfig } from '../../../utils/config';\nimport type { HeyApiSchemasPlugin } 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']?.config.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 const plugin = config.plugins['@hey-api/schemas'];\n\n if (plugin?.config.nameBuilder) {\n if (typeof plugin.config.nameBuilder === 'function') {\n return plugin.config.nameBuilder(validName, schema);\n } else {\n return plugin.config.nameBuilder.replace('{{name}}', validName);\n }\n }\n\n return `${validName}Schema`;\n};\n\nexport const handlerLegacy: HeyApiSchemasPlugin['LegacyHandler'] = ({\n files,\n openApi,\n plugin,\n}) => {\n const config = getConfig();\n\n files.schemas = new GeneratedFile({\n dir: config.output.path,\n exportFromIndex: plugin.config.exportFromIndex,\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 = tsc.objectExpression({ obj });\n const statement = tsc.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 { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { HeyApiSchemasPlugin } from './types';\n\nexport const defaultConfig: HeyApiSchemasPlugin['Config'] = {\n config: {\n exportFromIndex: false,\n nameBuilder: (name) => `${name}Schema`,\n type: 'json',\n },\n handler,\n handlerLegacy,\n name: '@hey-api/schemas',\n output: 'schemas',\n};\n\n/**\n * Type helper for `@hey-api/schemas` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import type ts from 'typescript';\n\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { GeneratedFile } from '../../../generate/file';\nimport type { IR } from '../../../ir/types';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport type { Comments, FunctionParameter } from '../../../tsc';\nimport { tsc } from '../../../tsc';\nimport type { FunctionTypeParameter, ObjectValue } from '../../../tsc/types';\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 { transformClassName } from '../../../utils/transform';\nimport { setUniqueTypeName } from '../../../utils/type';\nimport { unique } from '../../../utils/unique';\nimport { getClientPlugin } from '../client-core/utils';\nimport type { HeyApiSdkPlugin } 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;\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 = tsc.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 = tsc.typeUnionNode({\n types: [importedType],\n });\n }\n\n if (\n config.useOptions &&\n config.plugins['@hey-api/sdk']?.config.response === 'response'\n ) {\n returnType = tsc.typeNode('ApiResult', [returnType]);\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === 'legacy/angular') {\n returnType = tsc.typeNode('Observable', [returnType]);\n } else {\n returnType = tsc.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 tsc.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 tsc.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']?.config.methodNameBuilder) {\n return config.plugins['@hey-api/sdk'].config.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 tsc.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 tsc.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 tsc.returnFunctionCall({\n args: ['OpenAPI', 'this.http', options],\n name: '__request',\n }),\n ];\n }\n\n return [\n tsc.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.config\n ? clientPlugin.config.throwOnError\n : false) ?? false,\n extends: 'boolean',\n name: 'ThrowOnError',\n };\n\n if (\n !config.plugins['@hey-api/sdk']?.config.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 ? tsc.anonymousFunction(compileFunctionParams)\n : tsc.arrowFunction(compileFunctionParams);\n const statement = tsc.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 = tsc.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 tsc.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 tsc.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 _members: Array<ts.ClassElement> = [];\n members.forEach((member, index) => {\n // add newline between each class member\n if (index) {\n // @ts-expect-error\n _members.push(tsc.identifier({ text: '\\n' }));\n }\n\n _members.push(member);\n });\n\n const statement = tsc.classDeclaration({\n decorator:\n clientPlugin.name === 'legacy/angular'\n ? { args: [{ providedIn: 'root' }], name: 'Injectable' }\n : undefined,\n exportClass: true,\n name: transformClassName({\n config,\n name: service.name,\n }),\n nodes: _members,\n });\n onNode(statement);\n};\n\nexport const handlerLegacy: HeyApiSdkPlugin['LegacyHandler'] = ({\n client,\n files,\n plugin,\n}) => {\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n const sdkOutput = 'sdk';\n\n files.sdk = new GeneratedFile({\n dir: config.output.path,\n exportFromIndex: plugin.config.exportFromIndex,\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']?.config.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 = tsc.constVariable({\n exportConst: true,\n expression: tsc.callExpression({\n functionName: 'createClient',\n parameters: [\n tsc.callExpression({\n functionName: 'createConfig',\n parameters: [\n 'throwOnError' in clientPlugin && clientPlugin.throwOnError\n ? tsc.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 { clientModulePath } from '../../../generate/client';\nimport type { FileImportResult } from '../../../generate/file/types';\nimport { tsc } from '../../../tsc';\nimport { getClientPlugin } from '../client-core/utils';\nimport { nuxtTypeDefault, nuxtTypeResponse, sdkId } from './constants';\nimport type { HeyApiSdkPlugin } from './types';\n\nexport const createTypeOptions = ({\n clientOptions,\n plugin,\n}: {\n clientOptions: FileImportResult<string, string>;\n plugin: HeyApiSdkPlugin['Instance'];\n}) => {\n const file = plugin.context.file({ id: sdkId })!;\n const client = getClientPlugin(plugin.context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const clientModule = clientModulePath({\n config: plugin.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 = tsc.typeAliasDeclaration({\n exportType: true,\n name: 'Options',\n type: tsc.typeIntersectionNode({\n types: [\n tsc.typeReferenceNode({\n typeArguments: isNuxtClient\n ? [\n tsc.typeReferenceNode({ typeName: 'TComposable' }),\n tsc.typeReferenceNode({ typeName: 'TData' }),\n tsc.typeReferenceNode({ typeName: nuxtTypeResponse }),\n tsc.typeReferenceNode({ typeName: nuxtTypeDefault }),\n ]\n : [\n tsc.typeReferenceNode({ typeName: 'TData' }),\n tsc.typeReferenceNode({ typeName: 'ThrowOnError' }),\n ],\n typeName: clientOptions.name,\n }),\n tsc.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.config.client,\n name: 'client',\n type: tsc.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: tsc.typeReferenceNode({\n typeArguments: [\n tsc.keywordTypeNode({ keyword: 'string' }),\n tsc.keywordTypeNode({ keyword: 'unknown' }),\n ],\n typeName: 'Record',\n }),\n },\n ],\n useLegacyResolution: false,\n }),\n ],\n }),\n typeParameters: isNuxtClient\n ? [\n tsc.typeParameterDeclaration({\n constraint: tsc.typeReferenceNode({ typeName: 'Composable' }),\n name: 'TComposable',\n }),\n tsc.typeParameterDeclaration({\n constraint: tsc.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n defaultType: tsc.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n name: 'TData',\n }),\n tsc.typeParameterDeclaration({\n defaultType: tsc.keywordTypeNode({ keyword: 'unknown' }),\n name: nuxtTypeResponse,\n }),\n tsc.typeParameterDeclaration({\n defaultType: tsc.keywordTypeNode({ keyword: 'undefined' }),\n name: nuxtTypeDefault,\n }),\n ]\n : [\n tsc.typeParameterDeclaration({\n constraint: tsc.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n defaultType: tsc.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n name: 'TData',\n }),\n tsc.typeParameterDeclaration({\n constraint: tsc.keywordTypeNode({ keyword: 'boolean' }),\n defaultType: tsc.keywordTypeNode({ keyword: 'boolean' }),\n name: 'ThrowOnError',\n }),\n ],\n });\n\n file.add(typeOptions);\n};\n","import ts from 'typescript';\n\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { tsc } from '../../../tsc';\nimport { stringCase } from '../../../utils/stringCase';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\nimport { getClientPlugin } from '../client-core/utils';\nimport { typesId } from '../typescript/ref';\nimport { nuxtTypeComposable, nuxtTypeDefault, sdkId } from './constants';\nimport {\n operationClasses,\n operationParameters,\n operationStatements,\n} from './operation';\nimport { serviceFunctionIdentifier } from './plugin-legacy';\nimport { createTypeOptions } from './typeOptions';\nimport type { HeyApiSdkPlugin } from './types';\n\nconst createClientClassNodes = ({\n plugin,\n}: {\n plugin: HeyApiSdkPlugin['Instance'];\n}): ReadonlyArray<ts.ClassElement> => {\n const clientAssignmentStatement = tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: tsc.this(),\n name: '_client',\n }),\n operator: '=',\n right: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'args' }),\n name: 'client',\n }),\n }),\n });\n\n return [\n tsc.propertyDeclaration({\n initializer: plugin.config.client\n ? tsc.identifier({ text: '_heyApiClient' })\n : undefined,\n modifier: 'protected',\n name: '_client',\n type: ts.factory.createTypeReferenceNode('Client'),\n }),\n // @ts-expect-error\n tsc.identifier({ text: '\\n' }),\n tsc.constructorDeclaration({\n multiLine: true,\n parameters: [\n {\n isRequired: !plugin.config.client,\n name: 'args',\n type: tsc.typeInterfaceNode({\n properties: [\n {\n isRequired: !plugin.config.client,\n name: 'client',\n type: 'Client',\n },\n ],\n useLegacyResolution: false,\n }),\n },\n ],\n statements: [\n !plugin.config.client\n ? clientAssignmentStatement\n : tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'args' }),\n isOptional: true,\n name: 'client',\n }),\n thenStatement: tsc.block({\n statements: [clientAssignmentStatement],\n }),\n }),\n ],\n }),\n ];\n};\n\ninterface SdkClassEntry {\n /**\n * Name of the class.\n */\n className: string;\n /**\n * Child classes located inside this class.\n */\n classes: Set<string>;\n /**\n * Track unique added method nodes.\n */\n methods: Set<string>;\n /**\n * List of class nodes containing methods.\n */\n nodes: Array<ts.ClassElement>;\n /**\n * Is this a root class?\n */\n root: boolean;\n}\n\nconst generateClassSdk = ({\n plugin,\n}: {\n plugin: HeyApiSdkPlugin['Instance'];\n}) => {\n const client = getClientPlugin(plugin.context.config);\n const isAngularClient = client.name === '@hey-api/client-angular';\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n const file = plugin.context.file({ id: sdkId })!;\n const sdkClasses = new Map<string, SdkClassEntry>();\n /**\n * Track unique added classes.\n */\n const generatedClasses = new Set<string>();\n\n const clientClassNodes = plugin.config.instance\n ? createClientClassNodes({ plugin })\n : [];\n\n plugin.forEach('operation', ({ operation }) => {\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const responseImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: isNuxtClient\n ? fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'response' }),\n )\n : undefined,\n });\n\n const classes = operationClasses({\n context: plugin.context,\n operation,\n plugin,\n });\n\n for (const entry of classes.values()) {\n entry.path.forEach((currentClassName, index) => {\n if (!sdkClasses.has(currentClassName)) {\n sdkClasses.set(currentClassName, {\n className: currentClassName,\n classes: new Set(),\n methods: new Set(),\n nodes: [],\n root: !index,\n });\n }\n\n const parentClassName = entry.path[index - 1];\n if (parentClassName && parentClassName !== currentClassName) {\n const parentClass = sdkClasses.get(parentClassName)!;\n parentClass.classes.add(currentClassName);\n sdkClasses.set(parentClassName, parentClass);\n }\n\n const isLast = entry.path.length === index + 1;\n // add methods only to the last class\n if (!isLast) {\n return;\n }\n\n const currentClass = sdkClasses.get(currentClassName)!;\n\n // avoid duplicate methods\n if (currentClass.methods.has(entry.methodName)) {\n return;\n }\n\n const opParameters = operationParameters({\n file,\n isRequiredOptions,\n operation,\n plugin,\n });\n const statements = operationStatements({\n isRequiredOptions,\n opParameters,\n operation,\n plugin,\n });\n const functionNode = tsc.methodDeclaration({\n accessLevel: 'public',\n comment: createOperationComment({ operation }),\n isStatic: isAngularClient ? false : !plugin.config.instance,\n name: entry.methodName,\n parameters: opParameters.parameters,\n returnType: undefined,\n statements,\n types: isNuxtClient\n ? [\n {\n // default: tsc.ots.string('$fetch'),\n extends: tsc.typeNode('Composable'),\n name: nuxtTypeComposable,\n },\n {\n default: responseImport.name\n ? tsc.typeReferenceNode({\n typeName: responseImport.name,\n })\n : tsc.typeNode('undefined'),\n extends: responseImport.name\n ? tsc.typeReferenceNode({\n typeName: responseImport.name,\n })\n : undefined,\n name: nuxtTypeDefault,\n },\n ]\n : [\n {\n default:\n ('throwOnError' in client.config\n ? client.config.throwOnError\n : false) ?? false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n });\n\n if (!currentClass.nodes.length) {\n currentClass.nodes.push(functionNode);\n } else {\n currentClass.nodes.push(\n // @ts-expect-error\n tsc.identifier({ text: '\\n' }),\n functionNode,\n );\n }\n\n currentClass.methods.add(entry.methodName);\n\n sdkClasses.set(currentClassName, currentClass);\n });\n }\n });\n\n const generateClass = (currentClass: SdkClassEntry) => {\n if (generatedClasses.has(currentClass.className)) {\n return;\n }\n\n if (currentClass.classes.size) {\n for (const childClassName of currentClass.classes) {\n const childClass = sdkClasses.get(childClassName)!;\n generateClass(childClass);\n\n currentClass.nodes.push(\n tsc.propertyDeclaration({\n initializer: plugin.config.instance\n ? tsc.newExpression({\n argumentsArray: plugin.config.instance\n ? [\n tsc.objectExpression({\n multiLine: false,\n obj: [\n {\n key: 'client',\n value: tsc.propertyAccessExpression({\n expression: tsc.this(),\n name: '_client',\n }),\n },\n ],\n }),\n ]\n : [],\n expression: tsc.identifier({\n text: childClass.className,\n }),\n })\n : tsc.identifier({ text: childClass.className }),\n modifier: plugin.config.instance ? undefined : 'static',\n name: stringCase({\n case: 'camelCase',\n value: childClass.className,\n }),\n }),\n );\n }\n }\n\n const node = tsc.classDeclaration({\n decorator:\n currentClass.root && isAngularClient\n ? {\n args: [\n {\n providedIn: 'root',\n },\n ],\n name: 'Injectable',\n }\n : undefined,\n exportClass: currentClass.root,\n extendedClasses: plugin.config.instance ? ['_HeyApiClient'] : undefined,\n name: currentClass.className,\n nodes: currentClass.nodes,\n });\n file.add(node);\n generatedClasses.add(currentClass.className);\n };\n\n if (clientClassNodes.length) {\n const node = tsc.classDeclaration({\n exportClass: false,\n name: '_HeyApiClient',\n nodes: clientClassNodes,\n });\n file.add(node);\n }\n\n for (const sdkClass of sdkClasses.values()) {\n generateClass(sdkClass);\n }\n};\n\nconst generateFlatSdk = ({\n plugin,\n}: {\n plugin: HeyApiSdkPlugin['Instance'];\n}) => {\n const client = getClientPlugin(plugin.context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n const file = plugin.context.file({ id: sdkId })!;\n\n plugin.forEach('operation', ({ operation }) => {\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const responseImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: isNuxtClient\n ? fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'response' }),\n )\n : undefined,\n });\n const opParameters = operationParameters({\n file,\n isRequiredOptions,\n operation,\n plugin,\n });\n const statements = operationStatements({\n isRequiredOptions,\n opParameters,\n operation,\n plugin,\n });\n const node = tsc.constVariable({\n comment: createOperationComment({ operation }),\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: opParameters.parameters,\n returnType: undefined,\n statements,\n types: isNuxtClient\n ? [\n {\n // default: tsc.ots.string('$fetch'),\n extends: tsc.typeNode('Composable'),\n name: nuxtTypeComposable,\n },\n {\n default: responseImport.name\n ? tsc.typeReferenceNode({\n typeName: responseImport.name,\n })\n : tsc.typeNode('undefined'),\n extends: responseImport.name\n ? tsc.typeReferenceNode({\n typeName: responseImport.name,\n })\n : undefined,\n name: nuxtTypeDefault,\n },\n ]\n : [\n {\n default:\n ('throwOnError' in client.config\n ? client.config.throwOnError\n : false) ?? false,\n extends: 'boolean',\n name: 'ThrowOnError',\n },\n ],\n }),\n name: serviceFunctionIdentifier({\n config: plugin.context.config,\n handleIllegal: true,\n id: operation.id,\n operation,\n }),\n });\n file.add(node);\n });\n};\n\nexport const handler: HeyApiSdkPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n id: sdkId,\n path: plugin.output,\n });\n\n // import required packages and core files\n const clientModule = clientModulePath({\n config: plugin.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(plugin.context.config);\n const isAngularClient = client.name === '@hey-api/client-angular';\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 if (isAngularClient && plugin.config.asClass) {\n file.import({\n module: '@angular/core',\n name: 'Injectable',\n });\n }\n\n createTypeOptions({ clientOptions, plugin });\n\n if (plugin.config.asClass) {\n generateClassSdk({ plugin });\n } else {\n generateFlatSdk({ plugin });\n }\n};\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { HeyApiSdkPlugin } from './types';\n\nexport const defaultConfig: HeyApiSdkPlugin['Config'] = {\n config: {\n asClass: false,\n auth: true,\n classNameBuilder: '{{name}}',\n classStructure: 'auto',\n client: true,\n exportFromIndex: true,\n instance: false,\n operationId: true,\n params_EXPERIMENTAL: 'default',\n response: 'body',\n responseStyle: 'fields',\n transformer: false,\n validator: false,\n },\n dependencies: ['@hey-api/typescript'],\n handler,\n handlerLegacy,\n name: '@hey-api/sdk',\n output: 'sdk',\n resolveConfig: (plugin, context) => {\n if (plugin.config.client) {\n if (typeof plugin.config.client === 'boolean') {\n plugin.config.client = context.pluginByTag('client', {\n defaultPlugin: '@hey-api/client-fetch',\n });\n }\n\n plugin.dependencies.add(plugin.config.client!);\n } else {\n plugin.config.client = false;\n }\n\n if (plugin.config.transformer) {\n if (typeof plugin.config.transformer === 'boolean') {\n plugin.config.transformer = context.pluginByTag('transformer');\n }\n\n plugin.dependencies.add(plugin.config.transformer!);\n } else {\n plugin.config.transformer = false;\n }\n\n if (typeof plugin.config.validator !== 'object') {\n plugin.config.validator = {\n request: plugin.config.validator,\n response: plugin.config.validator,\n };\n }\n\n if (plugin.config.validator.request) {\n if (typeof plugin.config.validator.request === 'boolean') {\n plugin.config.validator.request = context.pluginByTag('validator');\n }\n\n plugin.dependencies.add(plugin.config.validator.request!);\n } else {\n plugin.config.validator.request = false;\n }\n\n if (plugin.config.validator.response) {\n if (typeof plugin.config.validator.response === 'boolean') {\n plugin.config.validator.response = context.pluginByTag('validator');\n }\n\n plugin.dependencies.add(plugin.config.validator.response!);\n } else {\n plugin.config.validator.response = false;\n }\n\n if (plugin.config.instance) {\n if (typeof plugin.config.instance !== 'string') {\n plugin.config.instance = 'Sdk';\n }\n\n plugin.config.asClass = true;\n } else {\n plugin.config.instance = false;\n }\n\n // Set default classNameBuilder based on client type\n if (plugin.config.classNameBuilder === '{{name}}') {\n if (plugin.config.client === '@hey-api/client-angular') {\n plugin.config.classNameBuilder = '{{name}}Service';\n }\n }\n },\n};\n\n/**\n * Type helper for `@hey-api/sdk` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import type ts from 'typescript';\n\nimport { GeneratedFile } from '../../../generate/file';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport { type Comments, tsc } from '../../../tsc';\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 {\n operationDataTypeName,\n operationErrorTypeName,\n operationResponseTypeName,\n} from '../sdk/plugin-legacy';\nimport type { HeyApiTypeScriptPlugin } 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 tsc.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 = tsc.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 tsc.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 = tsc.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 enumDeclarations = [] as ts.EnumDeclaration[];\n\n processType(props);\n\n props.model.enums.forEach((enumerator) =>\n 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 tsc.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 const pluginTypeScript = config.plugins['@hey-api/typescript'];\n if (\n pluginTypeScript?.config &&\n typeof pluginTypeScript.config.enums === 'object' &&\n pluginTypeScript.config.enums.enabled &&\n pluginTypeScript.config.enums.mode === 'typescript'\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 const pluginTypeScript = config.plugins['@hey-api/typescript'];\n if (\n pluginTypeScript?.config &&\n typeof pluginTypeScript.config.enums === 'object' &&\n pluginTypeScript.config.enums.enabled &&\n pluginTypeScript.config.enums.mode === 'javascript'\n ) {\n const expression = tsc.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 = tsc.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 tsc.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']?.config.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']?.config.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: HeyApiTypeScriptPlugin['LegacyHandler'] = ({\n client,\n files,\n plugin,\n}) => {\n const config = getConfig();\n\n files.types = new GeneratedFile({\n dir: config.output.path,\n exportFromIndex: plugin.config.exportFromIndex,\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 { createOperationKey } from '../../../ir/operation';\nimport { tsc } from '../../../tsc';\nimport type { ModelMeta, OperationResponse } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport { isModelDate, unsetUniqueTypeName } from '../../../utils/type';\nimport {\n modelResponseTransformerTypeName,\n operationResponseTransformerTypeName,\n operationResponseTypeName,\n} from '../sdk/plugin-legacy';\nimport { generateType, type TypesProps } from '../typescript/plugin-legacy';\nimport type { HeyApiTransformersPlugin } 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 tsc.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 tsc.transformArrayMap({\n path: props.path,\n transformExpression: tsc.conditionalExpression({\n condition: tsc.identifier({ text: 'item' }),\n whenFalse: tsc.identifier({ text: 'item' }),\n whenTrue: tsc.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 [tsc.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 tsc.expressionToStatement({\n expression: tsc.callExpression({\n functionName: nameModelResponseTransformer,\n parameters: [dataVariableName],\n }),\n }),\n ]\n : tsc.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 = tsc.arrowFunction({\n async,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n },\n ],\n statements: [\n ...statements,\n tsc.returnVariable({\n expression: dataVariableName,\n }),\n ],\n });\n const statement = tsc.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: HeyApiTransformersPlugin['LegacyHandler'] = ({\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_LEGACY();\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 ${createOperationKey(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 tsc.ifStatement({\n expression: tsc.safeAccessExpression(['data']),\n thenStatement: tsc.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 { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { HeyApiTransformersPlugin } from './types';\n\nexport const defaultConfig: HeyApiTransformersPlugin['Config'] = {\n config: {\n bigInt: true,\n dates: true,\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/typescript'],\n handler,\n handlerLegacy,\n name: '@hey-api/transformers',\n output: 'transformers',\n tags: ['transformer'],\n};\n\n/**\n * Type helper for `@hey-api/transformers`, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\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 type { IR } from '../../../ir/types';\nimport type { Comments } from '../../../tsc';\nimport { escapeComment } from '../../../utils/escape';\n\nexport const createSchemaComment = ({\n schema,\n}: {\n schema: IR.SchemaObject;\n}): Comments | undefined => {\n const comments: Array<string> = [];\n\n if (schema.title) {\n comments.push(escapeComment(schema.title));\n }\n\n if (schema.description) {\n comments.push(escapeComment(schema.description));\n }\n\n if (schema.deprecated) {\n comments.push('@deprecated');\n }\n\n return comments.length ? comments : undefined;\n};\n","import ts from 'typescript';\n\nimport type { NodeInfo } from '../../../generate/file/types';\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport { parseUrl } from '../../../utils/url';\nimport { getClientBaseUrlKey, getClientPlugin } from '../client-core/utils';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin } from './types';\n\nconst stringType = tsc.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 tsc.literalTypeNode({\n literal: tsc.stringLiteral({ text: server.url }),\n });\n }\n\n return tsc.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 nodeInfo,\n plugin,\n servers,\n}: {\n nodeInfo: NodeInfo;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n servers: ReadonlyArray<IR.ServerObject>;\n}) => {\n const file = plugin.context.file({ id: typesId })!;\n\n const client = getClientPlugin(plugin.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 (\n !('strictBaseUrl' in client.config && client.config.strictBaseUrl)\n ) {\n types.push(\n tsc.typeIntersectionNode({\n types: [stringType, ts.factory.createTypeLiteralNode([])],\n }),\n );\n }\n\n const type = tsc.typeInterfaceNode({\n properties: [\n {\n name: getClientBaseUrlKey(plugin.context.config),\n type: tsc.typeUnionNode({ types }),\n },\n ],\n useLegacyResolution: false,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n};\n","import ts from 'typescript';\n\nimport { operationResponsesMap } from '../../../ir/operation';\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { schemaToType } from './plugin';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin, PluginState } from './types';\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 key in parameters) {\n const parameter = parameters[key]!;\n\n properties[parameter.name] = deduplicateSchema({\n detectFormat: false,\n schema: parameter.schema,\n });\n\n if (parameter.required) {\n required.push(parameter.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 operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n state: PluginState;\n}) => {\n const file = plugin.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 name = buildName({\n config: plugin.config.requests,\n name: operation.id,\n });\n const nodeInfo = file.updateNode(\n plugin.api.getId({ operation, type: 'data' }),\n {\n exported: true,\n name,\n },\n );\n const type = schemaToType({\n onRef: undefined,\n plugin,\n schema: data,\n state,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n};\n\nexport const operationToType = ({\n operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n state: PluginState;\n}) => {\n operationToDataType({ operation, plugin, state });\n\n const file = plugin.context.file({ id: typesId })!;\n\n const { error, errors, response, responses } =\n operationResponsesMap(operation);\n\n if (errors) {\n const name = buildName({\n config: plugin.config.errors,\n name: operation.id,\n });\n const nodeInfo = file.updateNode(\n plugin.api.getId({ operation, type: 'errors' }),\n {\n exported: true,\n name,\n },\n );\n const type = schemaToType({\n onRef: undefined,\n plugin,\n schema: errors,\n state,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n\n if (error) {\n const name = buildName({\n config: {\n case: plugin.config.errors.case,\n name: plugin.config.errors.error,\n },\n name: operation.id,\n });\n const errorNodeInfo = file.updateNode(\n plugin.api.getId({ operation, type: 'error' }),\n {\n exported: true,\n name,\n },\n );\n const type = tsc.indexedAccessTypeNode({\n indexType: ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n nodeInfo.node,\n ),\n objectType: nodeInfo.node,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: errorNodeInfo.exported,\n name: errorNodeInfo.node,\n type,\n });\n file.add(node);\n }\n }\n\n if (responses) {\n const name = buildName({\n config: plugin.config.responses,\n name: operation.id,\n });\n const nodeInfo = file.updateNode(\n plugin.api.getId({ operation, type: 'responses' }),\n {\n exported: true,\n name,\n },\n );\n const type = schemaToType({\n onRef: undefined,\n plugin,\n schema: responses,\n state,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n\n if (response) {\n const name = buildName({\n config: {\n case: plugin.config.responses.case,\n name: plugin.config.responses.response,\n },\n name: operation.id,\n });\n const responseNodeInfo = file.updateNode(\n plugin.api.getId({ operation, type: 'response' }),\n {\n exported: true,\n name,\n },\n );\n const type = tsc.indexedAccessTypeNode({\n indexType: ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n nodeInfo.node,\n ),\n objectType: nodeInfo.node,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: responseNodeInfo.exported,\n name: responseNodeInfo.node,\n type,\n });\n file.add(node);\n }\n }\n};\n","import type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { createSchemaComment } from '../../shared/utils/schema';\nimport { schemaToType } from './plugin';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin, PluginState } from './types';\n\nconst operationToDataType = ({\n operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n state: PluginState;\n}): string => {\n const file = plugin.context.file({ id: typesId })!;\n\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 const name = buildName({\n config: {\n case: plugin.config.webhooks.case,\n name: plugin.config.webhooks.payload,\n },\n name: operation.id,\n });\n const id = plugin.api.getId({ operation, type: 'webhook-payload' });\n const nodeInfo = file.updateNode(id, {\n exported: true,\n name,\n });\n const type = schemaToType({\n onRef: undefined,\n plugin,\n schema: operation.body.schema,\n state,\n });\n const node = tsc.typeAliasDeclaration({\n comment: createSchemaComment({ schema: operation.body.schema }),\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n\n data.properties.body = { $ref: id };\n dataRequired.push('body');\n } else {\n data.properties.body = { type: 'never' };\n }\n\n data.properties.key = {\n const: operation.path,\n type: 'string',\n };\n dataRequired.push('key');\n\n data.properties.path = { type: 'never' };\n data.properties.query = { type: 'never' };\n\n data.required = dataRequired;\n\n const name = buildName({\n config: plugin.config.webhooks,\n name: operation.id,\n });\n const nodeInfo = file.updateNode(\n plugin.api.getId({ operation, type: 'webhook-request' }),\n {\n exported: true,\n name,\n },\n );\n const type = schemaToType({\n onRef: undefined,\n plugin,\n schema: data,\n state,\n });\n const node = tsc.typeAliasDeclaration({\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n\n return name;\n};\n\nexport const webhookToType = ({\n operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n state: PluginState;\n}): string => {\n const name = operationToDataType({ operation, plugin, state });\n return name;\n\n // don't handle webhook responses for now, users only need requestBody\n\n // const file = plugin.context.file({ id: typesId })!;\n\n // const { responses } = operationResponsesMap(operation);\n\n // const response = responses?.properties?.['200'];\n\n // if (response) {\n // const name = buildName({\n // config: {\n // ...plugin.config.responses,\n // name: '{{name}}WebhookEvent',\n // },\n // name: operation.id,\n // });\n // const nodeInfo = file.updateNode(\n // plugin.api.getId({ operation, type: 'webhook-response' }),\n // {\n // exported: true,\n // name,\n // },\n // );\n // const type = schemaToType({\n // onRef: undefined,\n // plugin,\n // schema: response,\n // state,\n // });\n // const node = tsc.typeAliasDeclaration({\n // exportType: nodeInfo.exported,\n // name: nodeInfo.node,\n // type,\n // });\n // file.add(node);\n // }\n};\n","import type { NodeInfo } from '../../../generate/file/types';\nimport { tsc } from '../../../tsc';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin } from './types';\n\nexport const createWebhooks = ({\n nodeInfo,\n plugin,\n webhookNames,\n}: {\n nodeInfo: NodeInfo;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n webhookNames: ReadonlyArray<string>;\n}) => {\n const file = plugin.context.file({ id: typesId })!;\n\n if (!webhookNames.length) return;\n\n const type = tsc.typeUnionNode({\n types: webhookNames.map((name) =>\n tsc.typeReferenceNode({\n typeName: name,\n }),\n ),\n });\n const node = tsc.typeAliasDeclaration({\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n};\n","import ts from 'typescript';\n\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { ensureValidIdentifier } from '../../../openApi/shared/utils/identifier';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport type { Property } from '../../../tsc';\nimport { tsc } from '../../../tsc';\nimport { refToName } from '../../../utils/ref';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { fieldName } from '../../shared/utils/case';\nimport { createSchemaComment } from '../../shared/utils/schema';\nimport { createClientOptions } from './clientOptions';\nimport { operationToType } from './operation';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin, PluginState } from './types';\nimport { webhookToType } from './webhook';\nimport { createWebhooks } from './webhooks';\n\nexport type OnRef = (id: string) => void;\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\nconst schemaToEnumObject = ({\n plugin,\n schema,\n}: {\n plugin: HeyApiTypeScriptPlugin['Instance'];\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.config.enums.case,\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.config.enums.enabled &&\n plugin.config.enums.mode === 'typescript'\n ) {\n key = `_${key}`;\n }\n }\n\n return {\n comments: createSchemaComment({ schema: item }),\n key,\n value: item.const,\n };\n });\n\n return {\n obj,\n typeofItems,\n };\n};\n\nconst arrayTypeToIdentifier = ({\n onRef,\n plugin,\n schema,\n state,\n}: {\n onRef: OnRef | undefined;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'array'>;\n state: PluginState;\n}): ts.TypeNode => {\n if (!schema.items) {\n return tsc.typeArrayNode(\n tsc.keywordTypeNode({\n keyword: 'unknown',\n }),\n );\n }\n\n schema = deduplicateSchema({ detectFormat: false, schema });\n\n const itemTypes: Array<ts.TypeNode> = [];\n\n for (const item of schema.items!) {\n const type = schemaToType({\n onRef,\n plugin,\n schema: item,\n state,\n });\n itemTypes.push(type);\n }\n\n if (itemTypes.length === 1) {\n return tsc.typeArrayNode(itemTypes[0]!);\n }\n\n if (schema.logicalOperator === 'and') {\n return tsc.typeArrayNode(tsc.typeIntersectionNode({ types: itemTypes }));\n }\n\n return tsc.typeArrayNode(tsc.typeUnionNode({ types: itemTypes }));\n};\n\nconst booleanTypeToIdentifier = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return tsc.literalTypeNode({\n literal: tsc.ots.boolean(schema.const as boolean),\n });\n }\n\n return tsc.keywordTypeNode({\n keyword: 'boolean',\n });\n};\n\nconst enumTypeToIdentifier = ({\n onRef,\n plugin,\n schema,\n state,\n}: {\n onRef: OnRef | undefined;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'enum'>;\n state: PluginState;\n}): ts.TypeNode => {\n const type = schemaToType({\n onRef,\n plugin,\n schema: {\n ...schema,\n type: undefined,\n },\n state,\n });\n return type;\n};\n\nconst numberTypeToIdentifier = ({\n plugin,\n schema,\n}: {\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'integer' | 'number'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return tsc.literalTypeNode({\n literal: tsc.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 (plugin.getPlugin('@hey-api/transformers')?.config.bigInt) {\n return tsc.typeReferenceNode({ typeName: 'bigint' });\n }\n }\n\n return tsc.keywordTypeNode({\n keyword: 'number',\n });\n};\n\nconst objectTypeToIdentifier = ({\n onRef,\n plugin,\n schema,\n state,\n}: {\n onRef: OnRef | undefined;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'object'>;\n state: PluginState;\n}): ts.TypeNode => {\n // TODO: parser - handle constants\n let indexKey: ts.TypeReferenceNode | undefined;\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 propertyType = schemaToType({\n onRef,\n plugin,\n schema: property,\n state,\n });\n const isRequired = required.includes(name);\n schemaProperties.push({\n comment: createSchemaComment({ schema: property }),\n isReadOnly: property.accessScope === 'read',\n isRequired,\n name: fieldName({ context: plugin.context, name }),\n type: propertyType,\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: !schema.propertyNames,\n name: 'key',\n type: schemaToType({\n onRef,\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 if (schema.propertyNames?.$ref) {\n indexKey = schemaToType({\n onRef,\n plugin,\n schema: {\n $ref: schema.propertyNames.$ref,\n },\n state,\n }) as ts.TypeReferenceNode;\n }\n }\n\n return tsc.typeInterfaceNode({\n indexKey,\n indexProperty,\n properties: schemaProperties,\n useLegacyResolution: false,\n });\n};\n\nconst stringTypeToIdentifier = ({\n plugin,\n schema,\n state,\n}: {\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'string'>;\n state: PluginState;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return tsc.literalTypeNode({\n literal: tsc.stringLiteral({ text: schema.const as string }),\n });\n }\n\n if (schema.format) {\n if (schema.format === 'binary') {\n return tsc.typeUnionNode({\n types: [\n tsc.typeReferenceNode({\n typeName: 'Blob',\n }),\n tsc.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 (plugin.getPlugin('@hey-api/transformers')?.config.dates) {\n return tsc.typeReferenceNode({ typeName: 'Date' });\n }\n }\n\n if (schema.format === 'typeid' && typeof schema.example === 'string') {\n const parts = String(schema.example).split('_');\n parts.pop(); // remove the ID part\n const type = parts.join('_');\n state.usedTypeIDs.add(type);\n const typeName = ensureValidIdentifier(\n stringCase({\n case: plugin.config.case,\n value: type + '_id',\n }),\n );\n return tsc.typeReferenceNode({\n typeName,\n });\n }\n }\n\n return tsc.keywordTypeNode({\n keyword: 'string',\n });\n};\n\nconst tupleTypeToIdentifier = ({\n onRef,\n plugin,\n schema,\n state,\n}: {\n onRef: OnRef | undefined;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'tuple'>;\n state: PluginState;\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 = tsc.valueToExpression({ value });\n return expression ?? tsc.identifier({ text: 'unknown' });\n });\n } else if (schema.items) {\n for (const item of schema.items) {\n const type = schemaToType({\n onRef,\n plugin,\n schema: item,\n state,\n });\n itemTypes.push(type);\n }\n }\n\n return tsc.typeTupleNode({\n types: itemTypes,\n });\n};\n\nconst schemaTypeToIdentifier = ({\n onRef,\n plugin,\n schema,\n state,\n}: {\n onRef: OnRef | undefined;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: IR.SchemaObject;\n state: PluginState;\n}): ts.TypeNode => {\n const transformersPlugin = plugin.getPlugin('@hey-api/transformers');\n if (transformersPlugin?.config.typeTransformers) {\n for (const typeTransformer of transformersPlugin.config.typeTransformers) {\n const file = plugin.context.file({ id: typesId })!;\n const typeNode = typeTransformer({ file, schema });\n if (typeNode) {\n return typeNode;\n }\n }\n }\n\n switch (schema.type as Required<IR.SchemaObject>['type']) {\n case 'array':\n return arrayTypeToIdentifier({\n onRef,\n plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n });\n case 'boolean':\n return booleanTypeToIdentifier({\n schema: schema as SchemaWithType<'boolean'>,\n });\n case 'enum':\n return enumTypeToIdentifier({\n onRef,\n plugin,\n schema: schema as SchemaWithType<'enum'>,\n state,\n });\n case 'integer':\n case 'number':\n return numberTypeToIdentifier({\n plugin,\n schema: schema as SchemaWithType<'integer' | 'number'>,\n });\n case 'never':\n return tsc.keywordTypeNode({\n keyword: 'never',\n });\n case 'null':\n return tsc.literalTypeNode({\n literal: tsc.null(),\n });\n case 'object':\n return objectTypeToIdentifier({\n onRef,\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n return stringTypeToIdentifier({\n plugin,\n schema: schema as SchemaWithType<'string'>,\n state,\n });\n case 'tuple':\n return tupleTypeToIdentifier({\n onRef,\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n });\n case 'undefined':\n return tsc.keywordTypeNode({\n keyword: 'undefined',\n });\n case 'unknown':\n return tsc.keywordTypeNode({\n keyword: 'unknown',\n });\n case 'void':\n return tsc.keywordTypeNode({\n keyword: 'void',\n });\n }\n};\n\nexport const schemaToType = ({\n onRef,\n plugin,\n schema,\n state,\n}: {\n /**\n * Callback that can be used to perform side-effects when we encounter a\n * reference. For example, we might want to import the referenced type.\n */\n onRef: OnRef | undefined;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: IR.SchemaObject;\n state: PluginState;\n}): ts.TypeNode => {\n const file = plugin.context.file({ id: typesId })!;\n\n if (schema.$ref) {\n if (onRef) {\n onRef(plugin.api.getId({ type: 'ref', value: schema.$ref }));\n }\n return file.getNode(plugin.api.getId({ type: 'ref', value: schema.$ref }))\n .node;\n }\n\n if (schema.type) {\n return schemaTypeToIdentifier({ onRef, plugin, schema, state });\n }\n\n if (schema.items) {\n schema = deduplicateSchema({ detectFormat: false, schema });\n if (schema.items) {\n const itemTypes: Array<ts.TypeNode> = [];\n\n for (const item of schema.items) {\n const type = schemaToType({ onRef, plugin, schema: item, state });\n itemTypes.push(type);\n }\n\n return schema.logicalOperator === 'and'\n ? tsc.typeIntersectionNode({ types: itemTypes })\n : tsc.typeUnionNode({ types: itemTypes });\n }\n\n return schemaToType({ onRef, plugin, schema, state });\n }\n\n // catch-all fallback for failed schemas\n return schemaTypeToIdentifier({\n onRef,\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n};\n\nconst exportType = ({\n id,\n plugin,\n schema,\n type,\n}: {\n id: string;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: IR.SchemaObject;\n type: ts.TypeNode;\n}) => {\n const file = plugin.context.file({ id: typesId })!;\n\n const nodeInfo = file.getNode(plugin.api.getId({ type: 'ref', value: id }));\n\n // root enums have an additional export\n if (schema.type === 'enum' && plugin.config.enums.enabled) {\n const enumObject = schemaToEnumObject({ plugin, schema });\n\n if (plugin.config.enums.mode === 'javascript') {\n // JavaScript enums might want to ignore null values\n if (\n plugin.config.enums.constantsIgnoreNull &&\n enumObject.typeofItems.includes('object')\n ) {\n enumObject.obj = enumObject.obj.filter((item) => item.value !== null);\n }\n\n const objectNode = tsc.constVariable({\n assertion: 'const',\n comment: createSchemaComment({ schema }),\n exportConst: nodeInfo.exported,\n expression: tsc.objectExpression({\n multiLine: true,\n obj: enumObject.obj,\n }),\n name: nodeInfo.node,\n });\n file.add(objectNode);\n\n // TODO: https://github.com/hey-api/openapi-ts/issues/2289\n const typeofType = tsc.typeOfExpression({\n text: nodeInfo.node.typeName as unknown as string,\n }) as unknown as ts.TypeNode;\n const keyofType = ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n typeofType,\n );\n const node = tsc.typeAliasDeclaration({\n comment: createSchemaComment({ schema }),\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type: tsc.indexedAccessTypeNode({\n indexType: keyofType,\n objectType: typeofType,\n }),\n });\n file.add(node);\n return;\n } else if (plugin.config.enums.mode === 'typescript') {\n // TypeScript enums support only string and number values\n const shouldCreateTypeScriptEnum = !enumObject.typeofItems.some(\n (type) => type !== 'number' && type !== 'string',\n );\n if (shouldCreateTypeScriptEnum) {\n const enumNode = tsc.enumDeclaration({\n leadingComment: createSchemaComment({ schema }),\n name: nodeInfo.node,\n obj: enumObject.obj,\n });\n file.add(enumNode);\n return;\n }\n }\n }\n\n const node = tsc.typeAliasDeclaration({\n comment: createSchemaComment({ schema }),\n exportType: nodeInfo.exported,\n name: nodeInfo.node,\n type,\n });\n file.add(node);\n};\n\nconst handleComponent = ({\n id,\n plugin,\n schema,\n state,\n}: {\n id: string;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: IR.SchemaObject;\n state: PluginState;\n}) => {\n const file = plugin.context.file({ id: typesId })!;\n const type = schemaToType({ onRef: undefined, plugin, schema, state });\n const name = buildName({\n config: plugin.config.definitions,\n name: refToName(id),\n });\n file.updateNode(plugin.api.getId({ type: 'ref', value: id }), {\n exported: true,\n name,\n });\n exportType({\n id,\n plugin,\n schema,\n type,\n });\n};\n\nexport const handler: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => {\n const state: PluginState = {\n usedTypeIDs: new Set(),\n };\n\n const file = plugin.createFile({\n case: plugin.config.case,\n id: typesId,\n path: plugin.output,\n });\n\n // reserve identifier for ClientOptions\n const clientOptionsName = buildName({\n config: {\n case: plugin.config.case,\n },\n name: 'ClientOptions',\n });\n const clientOptionsNodeInfo = file.updateNode(\n plugin.api.getId({ type: 'ClientOptions' }),\n {\n exported: true,\n name: clientOptionsName,\n },\n );\n // reserve identifier for Webhooks\n const webhooksName = buildName({\n config: {\n case: plugin.config.case,\n },\n name: 'Webhooks',\n });\n const webhooksNodeInfo = file.updateNode(\n plugin.api.getId({ type: 'Webhooks' }),\n {\n exported: true,\n name: webhooksName,\n },\n );\n\n const servers: Array<IR.ServerObject> = [];\n const webhookNames: Array<string> = [];\n\n plugin.forEach(\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'server',\n 'webhook',\n (event) => {\n if (event.type === 'operation') {\n operationToType({ operation: event.operation, plugin, state });\n } else if (event.type === 'parameter') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.parameter.schema,\n state,\n });\n } else if (event.type === 'requestBody') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n state,\n });\n } else if (event.type === 'schema') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.schema,\n state,\n });\n } else if (event.type === 'server') {\n servers.push(event.server);\n } else if (event.type === 'webhook') {\n const webhookName = webhookToType({\n operation: event.operation,\n plugin,\n state,\n });\n webhookNames.push(webhookName);\n }\n },\n );\n\n if (state.usedTypeIDs.size) {\n const typeParameter = tsc.typeParameterDeclaration({\n constraint: tsc.keywordTypeNode({\n keyword: 'string',\n }),\n name: 'T',\n });\n const node = tsc.typeAliasDeclaration({\n exportType: true,\n name: 'TypeID',\n type: tsc.templateLiteralType({\n value: [\n tsc.typeReferenceNode({\n typeName: 'T',\n }),\n '_',\n tsc.keywordTypeNode({\n keyword: 'string',\n }),\n ],\n }),\n typeParameters: [typeParameter],\n });\n file.add(node);\n\n for (const name of state.usedTypeIDs.values()) {\n const typeName = ensureValidIdentifier(\n stringCase({\n case: plugin.config.case,\n value: name + '_id',\n }),\n );\n const node = tsc.typeAliasDeclaration({\n exportType: true,\n name: typeName,\n type: tsc.typeReferenceNode({\n typeArguments: [\n tsc.literalTypeNode({\n literal: tsc.stringLiteral({ text: name }),\n }),\n ],\n typeName: 'TypeID',\n }),\n });\n file.add(node);\n }\n }\n\n createClientOptions({ nodeInfo: clientOptionsNodeInfo, plugin, servers });\n createWebhooks({ nodeInfo: webhooksNodeInfo, plugin, webhookNames });\n};\n","import type ts from 'typescript';\n\nimport type { IR } from '../../../ir/types';\nimport { schemaToType } from './plugin';\n\ntype GetIdArgs =\n | {\n type: 'ClientOptions' | 'Webhooks';\n }\n | {\n operation: IR.OperationObject;\n type:\n | 'data'\n | 'error'\n | 'errors'\n | 'response'\n | 'responses'\n | 'webhook-payload'\n | 'webhook-request';\n }\n | {\n type: 'ref';\n value: string;\n };\n\nconst getId = (args: GetIdArgs): string => {\n switch (args.type) {\n case 'data':\n case 'error':\n case 'errors':\n case 'response':\n case 'responses':\n case 'webhook-payload':\n case 'webhook-request':\n return `${args.operation.id}-${args.type}`;\n case 'ref':\n return args.value;\n default:\n return args.type;\n }\n};\n\nexport type Api = {\n getId: (args: GetIdArgs) => string;\n schemaToType: (\n args: Omit<Parameters<typeof schemaToType>[0], 'onRef'> &\n Pick<Partial<Parameters<typeof schemaToType>[0]>, 'onRef'>,\n ) => ts.TypeNode;\n};\n\nexport const api: Api = {\n getId,\n schemaToType: (args) =>\n schemaToType({\n onRef: undefined,\n ...args,\n }),\n};\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { api } from './api';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { HeyApiTypeScriptPlugin } from './types';\n\nexport const defaultConfig: HeyApiTypeScriptPlugin['Config'] = {\n api,\n config: {\n case: 'PascalCase',\n exportFromIndex: true,\n style: 'preserve',\n tree: false,\n },\n handler,\n handlerLegacy,\n name: '@hey-api/typescript',\n output: 'types',\n resolveConfig: (plugin, context) => {\n plugin.config.definitions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'PascalCase',\n name: '{{name}}',\n },\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.definitions,\n });\n\n plugin.config.enums = context.valueToObject({\n defaultValue: {\n case: 'SCREAMING_SNAKE_CASE',\n constantsIgnoreNull: false,\n enabled: Boolean(plugin.config.enums),\n mode: 'javascript',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (mode) => ({ mode }),\n },\n value: plugin.config.enums,\n });\n\n plugin.config.errors = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'PascalCase',\n error: '{{name}}Error',\n name: '{{name}}Errors',\n },\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.errors,\n });\n\n plugin.config.requests = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'PascalCase',\n name: '{{name}}Data',\n },\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.requests,\n });\n\n plugin.config.responses = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'PascalCase',\n name: '{{name}}Responses',\n response: '{{name}}Response',\n },\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.responses,\n });\n\n plugin.config.webhooks = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'PascalCase',\n name: '{{name}}WebhookRequest',\n payload: '{{name}}WebhookPayload',\n },\n mappers: {\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.webhooks,\n });\n },\n};\n\n/**\n * Type helper for `@hey-api/typescript` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import type ts from 'typescript';\n\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport type { PluginInstance } from './types';\n\n/**\n * Handle the meta configuration\n * @param plugin - The plugin instance\n * @param operation - The operation object to get the meta from\n * @param targetArray - The target array to add the meta to\n * @param configPath - The path to the meta configuration\n */\nexport const handleMeta = (\n plugin: PluginInstance,\n operation: IR.OperationObject,\n configPath: 'queryOptions' | 'infiniteQueryOptions' | 'mutationOptions',\n): ts.Expression | undefined => {\n const metaConfig = plugin.config[configPath].meta;\n\n if (typeof metaConfig !== 'function') {\n return undefined;\n }\n\n const customMeta = metaConfig(operation);\n\n return tsc.valueToExpression({ value: customMeta });\n};\n","import type { IR } from '../../../ir/types';\nimport type { ImportExportItemObject } from '../../../tsc/utils';\nimport { getClientPlugin } from '../../@hey-api/client-core/utils';\nimport { operationOptionsType } from '../../@hey-api/sdk/operation';\nimport { typesId } from '../../@hey-api/typescript/ref';\nimport type { PluginInstance } from './types';\n\nexport const useTypeData = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n const pluginSdk = plugin.getPlugin('@hey-api/sdk')!;\n const typeData = operationOptionsType({ file, operation, plugin: pluginSdk });\n return typeData;\n};\n\nexport const useTypeError = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const errorImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'error' }),\n ),\n });\n let typeError: ImportExportItemObject = {\n asType: true,\n name: errorImport.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(plugin.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 operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const responseImport = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'response' }),\n ),\n });\n\n const typeResponse = responseImport.name || 'unknown';\n return typeResponse;\n};\n","import type { Expression } from 'typescript';\n\nimport { clientApi } from '../../../generate/client';\nimport { hasOperationDataRequired } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { type Property, tsc } from '../../../tsc';\nimport { getClientBaseUrlKey } from '../../@hey-api/client-core/utils';\nimport type { PluginInstance } from './types';\nimport { useTypeData } from './useType';\n\nconst createQueryKeyFn = 'createQueryKey';\nexport const queryKeyName = 'QueryKey';\nconst TOptionsType = 'TOptions';\n\nconst infiniteIdentifier = tsc.identifier({ text: 'infinite' });\nconst optionsIdentifier = tsc.identifier({ text: 'options' });\n\nexport const createQueryKeyFunction = ({\n plugin,\n}: {\n plugin: PluginInstance;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n\n const identifierCreateQueryKey = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-create-query-key/${createQueryKeyFn}`,\n case: plugin.config.case,\n create: true,\n namespace: 'value',\n });\n\n if (identifierCreateQueryKey.name) {\n const returnType = tsc.indexedAccessTypeNode({\n indexType: tsc.literalTypeNode({\n literal: tsc.ots.number(0),\n }),\n objectType: tsc.typeReferenceNode({\n typeArguments: [tsc.typeReferenceNode({ typeName: TOptionsType })],\n typeName: queryKeyName,\n }),\n });\n\n const baseUrlKey = getClientBaseUrlKey(plugin.context.config);\n\n const fn = tsc.constVariable({\n expression: tsc.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: tsc.typeReferenceNode({ typeName: 'string' }),\n },\n {\n isRequired: false,\n name: 'options',\n type: tsc.typeReferenceNode({ typeName: TOptionsType }),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: tsc.typeReferenceNode({ typeName: 'boolean' }),\n },\n {\n isRequired: false,\n name: 'tags',\n type: tsc.typeReferenceNode({ typeName: 'ReadonlyArray<string>' }),\n },\n ],\n returnType: tsc.typeTupleNode({\n types: [returnType],\n }),\n statements: [\n tsc.constVariable({\n assertion: returnType,\n expression: tsc.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: tsc.identifier({ text: 'id' }),\n },\n {\n key: baseUrlKey,\n value: tsc.identifier({\n text: `options?.${baseUrlKey} || (options?.client ?? _heyApiClient).getConfig().${baseUrlKey}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n tsc.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.identifier({ text: 'tags' }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'tags',\n }),\n right: tsc.identifier({ text: 'tags' }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: tsc.identifier({ text: 'body' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: tsc.identifier({ text: 'headers' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: tsc.identifier({ text: 'path' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: tsc.identifier({ text: 'query' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.returnStatement({\n expression: tsc.arrayLiteralExpression({\n elements: [tsc.identifier({ text: 'params' })],\n }),\n }),\n ],\n types: [\n {\n extends: tsc.typeReferenceNode({\n typeName: tsc.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 id,\n isInfinite,\n operation,\n plugin,\n}: {\n id: string;\n isInfinite?: boolean;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n const identifierCreateQueryKey = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-create-query-key/${createQueryKeyFn}`,\n case: plugin.config.case,\n namespace: 'value',\n });\n\n const config = isInfinite\n ? plugin.config.infiniteQueryKeys\n : plugin.config.queryKeys;\n let tagsExpression: Expression | undefined;\n if (config.tags && operation.tags && operation.tags.length > 0) {\n tagsExpression = tsc.arrayLiteralExpression({\n elements: operation.tags.map((tag) => tsc.stringLiteral({ text: tag })),\n });\n }\n\n const createQueryKeyCallExpression = tsc.callExpression({\n functionName: identifierCreateQueryKey.name || '',\n parameters: [\n tsc.ots.string(id),\n 'options',\n isInfinite || tagsExpression\n ? tsc.ots.boolean(Boolean(isInfinite))\n : undefined,\n tagsExpression ? tagsExpression : undefined,\n ],\n });\n return createQueryKeyCallExpression;\n};\n\nexport const createQueryKeyType = ({ plugin }: { plugin: PluginInstance }) => {\n const file = plugin.context.file({ id: plugin.name })!;\n\n const properties: Array<Property> = [\n {\n name: '_id',\n type: tsc.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: tsc.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n {\n isRequired: false,\n name: 'tags',\n type: tsc.typeReferenceNode({\n typeName: 'ReadonlyArray<string>',\n }),\n },\n ];\n\n const queryKeyType = tsc.typeAliasDeclaration({\n exportType: true,\n name: queryKeyName,\n type: tsc.typeTupleNode({\n types: [\n tsc.typeIntersectionNode({\n types: [\n tsc.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey(plugin.context.config)}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n tsc.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: tsc.typeReferenceNode({\n typeName: tsc.identifier({\n text: clientApi.Options.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nexport const queryKeyStatement = ({\n isInfinite,\n operation,\n plugin,\n typeQueryKey,\n}: {\n isInfinite: boolean;\n operation: IR.OperationObject;\n plugin: PluginInstance;\n typeQueryKey?: string;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n const typeData = useTypeData({ operation, plugin });\n const identifier = isInfinite\n ? file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-infinite-query-key/${operation.id}`,\n case: plugin.config.infiniteQueryKeys.case,\n create: true,\n nameTransformer: plugin.config.infiniteQueryKeys.name,\n namespace: 'value',\n })\n : file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-query-key/${operation.id}`,\n case: plugin.config.queryKeys.case,\n create: true,\n nameTransformer: plugin.config.queryKeys.name,\n namespace: 'value',\n });\n const statement = tsc.constVariable({\n exportConst: true,\n expression: tsc.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 id: operation.id,\n isInfinite,\n operation,\n plugin,\n }),\n }),\n name: identifier.name || '',\n });\n return statement;\n};\n","import ts from 'typescript';\n\nimport { clientApi } from '../../../generate/client';\nimport { operationPagination } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport { tsNodeToString } from '../../../tsc/utils';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\nimport { handleMeta } from './meta';\nimport {\n createQueryKeyFunction,\n createQueryKeyType,\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 plugin,\n}: {\n plugin: PluginInstance;\n}) => {\n const file = plugin.context.file({ id: plugin.name })!;\n\n const identifierCreateInfiniteParams = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-create-infinite-params/${createInfiniteParamsFn}`,\n case: plugin.config.case,\n create: true,\n namespace: 'value',\n });\n\n const fn = tsc.constVariable({\n expression: tsc.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: tsc.typeReferenceNode({\n typeName: `QueryKey<${clientApi.Options.name}>`,\n }),\n },\n {\n name: 'page',\n type: tsc.typeReferenceNode({ typeName: 'K' }),\n },\n ],\n statements: [\n tsc.constVariable({\n expression: tsc.objectExpression({\n obj: [\n {\n spread: tsc.propertyAccessExpression({\n expression: 'queryKey',\n name: 0,\n }),\n },\n ],\n }),\n name: 'params',\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'body' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: tsc.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 tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'headers' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: tsc.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 tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'path' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: tsc.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 tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'query' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: tsc.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 tsc.returnVariable({\n expression: tsc.asExpression({\n expression: tsc.asExpression({\n expression: tsc.identifier({ text: 'params' }),\n type: tsc.keywordTypeNode({ keyword: 'unknown' }),\n }),\n type: ts.factory.createTypeQueryNode(\n tsc.identifier({ text: 'page' }),\n ),\n }),\n }),\n ],\n types: [\n {\n extends: tsc.typeReferenceNode({\n typeName: tsc.identifier({\n text: `Pick<QueryKey<${clientApi.Options.name}>[0], 'body' | 'headers' | 'path' | 'query'>`,\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: identifierCreateInfiniteParams.name || '',\n });\n file.add(fn);\n};\n\nexport const createInfiniteQueryOptions = ({\n operation,\n plugin,\n queryFn,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: PluginInstance;\n queryFn: string;\n state: PluginState;\n}) => {\n if (\n !plugin.config.infiniteQueryOptions ||\n !(['get', 'post'] as ReadonlyArray<typeof operation.method>).includes(\n operation.method,\n )\n ) {\n return state;\n }\n\n const pagination = operationPagination({\n context: plugin.context,\n operation,\n });\n\n if (!pagination) {\n return state;\n }\n\n const file = plugin.context.file({ id: plugin.name })!;\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n\n if (!state.hasInfiniteQueries) {\n state.hasInfiniteQueries = true;\n\n if (!state.hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ plugin });\n createQueryKeyFunction({ plugin });\n state.hasCreateQueryKeyParamsFunction = true;\n }\n\n if (!state.hasCreateInfiniteParamsFunction) {\n createInfiniteParamsFunction({ 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({ operation, plugin });\n const typeError = useTypeError({ operation, plugin });\n const typeResponse = useTypeResponse({ operation, plugin });\n\n const typeQueryKey = `${queryKeyName}<${typeData}>`;\n const typePageObjectParam = `Pick<${typeQueryKey}[0], 'body' | 'headers' | 'path' | 'query'>`;\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n // TODO: parser - this is a bit clunky, need to compile type to string because\n // `tsc.returnFunctionCall()` accepts only strings, should be cleaned up\n const typescriptState = {\n usedTypeIDs: new Set<string>(),\n };\n const type = pluginTypeScript.api.schemaToType({\n plugin: pluginTypeScript,\n schema: pagination.schema,\n state: typescriptState,\n });\n const typePageParam = `${tsNodeToString({\n node: type,\n unescape: true,\n })} | ${typePageObjectParam}`;\n\n const node = queryKeyStatement({\n isInfinite: true,\n operation,\n plugin,\n typeQueryKey,\n });\n file.add(node);\n\n const identifierInfiniteQueryKey = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-infinite-query-key/${operation.id}`,\n case: plugin.config.infiniteQueryKeys.case,\n nameTransformer: plugin.config.infiniteQueryKeys.name,\n namespace: 'value',\n });\n\n const awaitSdkExpression = tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: queryFn,\n parameters: [\n tsc.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: tsc.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n });\n\n const identifierCreateInfiniteParams = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-create-infinite-params/${createInfiniteParamsFn}`,\n case: plugin.config.case,\n namespace: 'value',\n });\n\n const statements: Array<ts.Statement> = [\n tsc.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: tsc.conditionalExpression({\n condition: tsc.binaryExpression({\n left: tsc.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: tsc.ots.string('object'),\n }),\n whenFalse: tsc.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.in,\n value: tsc.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.name,\n value: tsc.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: tsc.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n tsc.constVariable({\n expression: tsc.callExpression({\n functionName: identifierCreateInfiniteParams.name || '',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n ];\n\n if (plugin.getPlugin('@hey-api/sdk')?.config.responseStyle === 'data') {\n statements.push(\n tsc.returnVariable({\n expression: awaitSdkExpression,\n }),\n );\n } else {\n statements.push(\n tsc.constVariable({\n destructure: true,\n expression: awaitSdkExpression,\n name: 'data',\n }),\n tsc.returnVariable({\n expression: 'data',\n }),\n );\n }\n\n const identifierInfiniteQueryOptions = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-infinite-query-options/${operation.id}`,\n case: plugin.config.infiniteQueryOptions.case,\n create: true,\n nameTransformer: plugin.config.infiniteQueryOptions.name,\n namespace: 'value',\n });\n\n const infiniteQueryOptionsObj: Array<{ key: string; value: ts.Expression }> =\n [\n {\n key: 'queryFn',\n value: tsc.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 }),\n },\n {\n key: 'queryKey',\n value: tsc.callExpression({\n functionName: identifierInfiniteQueryKey.name || '',\n parameters: ['options'],\n }),\n },\n ];\n\n const meta = handleMeta(plugin, operation, 'infiniteQueryOptions');\n\n if (meta) {\n infiniteQueryOptionsObj.push({\n key: 'meta',\n value: meta,\n });\n }\n\n const statement = tsc.constVariable({\n comment: plugin.config.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n tsc.returnFunctionCall({\n args: [\n tsc.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: infiniteQueryOptionsObj,\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name || 'unknown',\n `${typeof state.typeInfiniteData === 'string' ? state.typeInfiniteData : state.typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: identifierInfiniteQueryOptions.name || '',\n });\n file.add(statement);\n return;\n};\n","import type ts from 'typescript';\n\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport { createOperationComment } from '../../shared/utils/operation';\nimport { handleMeta } from './meta';\nimport type { PluginInstance, PluginState } from './types';\nimport { useTypeData, useTypeError, useTypeResponse } from './useType';\n\nconst mutationOptionsFn = 'mutationOptions';\n\nexport const createMutationOptions = ({\n operation,\n plugin,\n queryFn,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: PluginInstance;\n queryFn: string;\n state: PluginState;\n}) => {\n if (\n !plugin.config.mutationOptions.enabled ||\n !(\n ['delete', 'patch', 'post', 'put'] as ReadonlyArray<\n typeof operation.method\n >\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 = plugin.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({ operation, plugin });\n const typeError = useTypeError({ operation, plugin });\n const typeResponse = useTypeResponse({ operation, plugin });\n // TODO: better types syntax\n const mutationType = `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`;\n\n const awaitSdkExpression = tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: queryFn,\n parameters: [\n tsc.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\n const statements: Array<ts.Statement> = [];\n\n if (plugin.getPlugin('@hey-api/sdk')?.config.responseStyle === 'data') {\n statements.push(\n tsc.returnVariable({\n expression: awaitSdkExpression,\n }),\n );\n } else {\n statements.push(\n tsc.constVariable({\n destructure: true,\n expression: awaitSdkExpression,\n name: 'data',\n }),\n tsc.returnVariable({\n expression: 'data',\n }),\n );\n }\n\n const identifier = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-mutation-options/${operation.id}`,\n case: plugin.config.mutationOptions.case,\n create: true,\n nameTransformer: plugin.config.mutationOptions.name,\n namespace: 'value',\n });\n\n const mutationOptionsObj: Array<{ key: string; value: ts.Expression }> = [\n {\n key: 'mutationFn',\n value: tsc.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements,\n }),\n },\n ];\n\n const meta = handleMeta(plugin, operation, 'mutationOptions');\n\n if (meta) {\n mutationOptionsObj.push({\n key: 'meta',\n value: meta,\n });\n }\n\n const expression = tsc.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n returnType: mutationType,\n statements: [\n tsc.constVariable({\n expression: tsc.objectExpression({\n obj: mutationOptionsObj,\n }),\n name: mutationOptionsFn,\n typeName: mutationType,\n }),\n tsc.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = tsc.constVariable({\n comment: plugin.config.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression,\n name: identifier.name || '',\n });\n file.add(statement);\n\n return state;\n};\n","import type ts from 'typescript';\n\nimport type { IR } from '../../../ir/types';\nimport { tsc } from '../../../tsc';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\nimport { handleMeta } from './meta';\nimport {\n createQueryKeyFunction,\n createQueryKeyType,\n queryKeyStatement,\n} from './queryKey';\nimport type { PluginInstance, PluginState } from './types';\nimport { useTypeData } from './useType';\n\nconst queryOptionsFn = 'queryOptions';\n\nexport const createQueryOptions = ({\n operation,\n plugin,\n queryFn,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: PluginInstance;\n queryFn: string;\n state: PluginState;\n}) => {\n if (\n !plugin.config.queryOptions ||\n !(['get', 'post'] as ReadonlyArray<typeof operation.method>).includes(\n operation.method,\n )\n ) {\n return state;\n }\n\n const file = plugin.context.file({ id: plugin.name })!;\n const isRequiredOptions = isOperationOptionsRequired({\n context: plugin.context,\n operation,\n });\n\n if (!state.hasQueries) {\n state.hasQueries = true;\n\n if (!state.hasCreateQueryKeyParamsFunction) {\n createQueryKeyType({ plugin });\n createQueryKeyFunction({ 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 isInfinite: false,\n operation,\n plugin,\n });\n file.add(node);\n\n const typeData = useTypeData({ operation, plugin });\n\n const identifierQueryKey = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-query-key/${operation.id}`,\n case: plugin.config.queryKeys.case,\n nameTransformer: plugin.config.queryKeys.name,\n namespace: 'value',\n });\n\n const awaitSdkExpression = tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: queryFn,\n parameters: [\n tsc.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: tsc.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n });\n\n const statements: Array<ts.Statement> = [];\n\n if (plugin.getPlugin('@hey-api/sdk')?.config.responseStyle === 'data') {\n statements.push(\n tsc.returnVariable({\n expression: awaitSdkExpression,\n }),\n );\n } else {\n statements.push(\n tsc.constVariable({\n destructure: true,\n expression: awaitSdkExpression,\n name: 'data',\n }),\n tsc.returnVariable({\n expression: 'data',\n }),\n );\n }\n\n const identifierQueryOptions = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/tanstack-query-query-options/${operation.id}`,\n case: plugin.config.queryOptions.case,\n create: true,\n nameTransformer: plugin.config.queryOptions.name,\n namespace: 'value',\n });\n\n const queryOptionsObj: Array<{ key: string; value: ts.Expression }> = [\n {\n key: 'queryFn',\n value: tsc.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 }),\n },\n {\n key: 'queryKey',\n value: tsc.callExpression({\n functionName: identifierQueryKey.name || '',\n parameters: ['options'],\n }),\n },\n ];\n\n const meta = handleMeta(plugin, operation, 'queryOptions');\n\n if (meta) {\n queryOptionsObj.push({\n key: 'meta',\n value: meta,\n });\n }\n\n const statement = tsc.constVariable({\n comment: plugin.config.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n tsc.returnFunctionCall({\n args: [\n tsc.objectExpression({\n obj: queryOptionsObj,\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: identifierQueryOptions.name || '',\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 { stringCase } from '../../../utils/stringCase';\nimport { clientId } from '../../@hey-api/client-core/utils';\nimport { sdkId } from '../../@hey-api/sdk/constants';\nimport { operationClasses } from '../../@hey-api/sdk/operation';\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 = ({ plugin }: Parameters<PluginHandler>[0]) => {\n const file = plugin.createFile({\n case: plugin.config.case,\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 file.import({\n ...clientApi.Options,\n module: file.relativePathToFile({ context: plugin.context, id: sdkId }),\n });\n\n plugin.forEach('operation', ({ operation }) => {\n state.hasUsedQueryFn = false;\n\n const sdkPlugin = plugin.getPlugin('@hey-api/sdk');\n const classes = sdkPlugin?.config.asClass\n ? operationClasses({\n context: plugin.context,\n operation,\n plugin: sdkPlugin,\n })\n : undefined;\n const entry = classes ? classes.values().next().value : undefined;\n const queryFn =\n // TODO: this should use class graph to determine correct path string\n // as it's really easy to break once we change the class casing\n (\n entry\n ? [\n entry.path[0],\n ...entry.path.slice(1).map((className) =>\n stringCase({\n case: 'camelCase',\n value: className,\n }),\n ),\n entry.methodName,\n ].filter(Boolean)\n : [\n serviceFunctionIdentifier({\n config: plugin.context.config,\n handleIllegal: true,\n id: operation.id,\n operation,\n }),\n ]\n ).join('.');\n\n createQueryOptions({\n operation,\n plugin,\n queryFn,\n state,\n });\n\n createInfiniteQueryOptions({\n operation,\n plugin,\n queryFn,\n state,\n });\n\n createMutationOptions({\n operation,\n plugin,\n queryFn,\n state,\n });\n\n if (state.hasUsedQueryFn) {\n file.import({\n module: file.relativePathToFile({ context: plugin.context, id: sdkId }),\n name: queryFn.split('.')[0]!,\n });\n }\n });\n\n if (state.hasQueries || state.hasInfiniteQueries) {\n file.import({\n alias: '_heyApiClient',\n module: file.relativePathToFile({\n context: plugin.context,\n id: clientId,\n }),\n name: 'client',\n });\n }\n};\n","import ts from 'typescript';\n\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { relativeModulePath } from '../../../generate/utils';\nimport { createOperationKey } from '../../../ir/operation';\nimport { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport { type Property, tsc } from '../../../tsc';\nimport type { ImportExportItem } from '../../../tsc/module';\nimport type { ImportExportItemObject } from '../../../tsc/utils';\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 { transformClassName } 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 { TanStackAngularQueryPlugin } from '../angular-query-experimental';\nimport type { TanStackReactQueryPlugin } from '../react-query';\nimport type { TanStackSolidQueryPlugin } from '../solid-query';\nimport type { TanStackSvelteQueryPlugin } from '../svelte-query';\nimport type { TanStackVueQueryPlugin } 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 = tsc.constVariable({\n expression: tsc.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: tsc.typeNode(`QueryKey<${clientApi.OptionsLegacyParser.name}>`),\n },\n {\n name: 'page',\n type: tsc.typeNode('K'),\n },\n ],\n statements: [\n tsc.constVariable({\n expression: tsc.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'body' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: tsc.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 tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'headers' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: tsc.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 tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'path' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: tsc.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 tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({\n text: 'page',\n }),\n name: tsc.identifier({ text: 'query' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: tsc.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 tsc.returnVariable({\n expression: ts.factory.createAsExpression(\n ts.factory.createAsExpression(\n tsc.identifier({ text: 'params' }),\n ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n ),\n ts.factory.createTypeQueryNode(tsc.identifier({ text: 'page' })),\n ),\n }),\n ],\n types: [\n {\n extends: tsc.typeReferenceNode({\n typeName: tsc.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 = tsc.indexedAccessTypeNode({\n indexType: tsc.typeNode(0),\n objectType: tsc.typeNode(queryKeyName, [tsc.typeNode(TOptionsType)]),\n });\n\n const infiniteIdentifier = tsc.identifier({ text: 'infinite' });\n const baseUrlKey = getClientBaseUrlKey(getConfig());\n\n const fn = tsc.constVariable({\n expression: tsc.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: tsc.typeNode('string'),\n },\n {\n isRequired: false,\n name: 'options',\n type: tsc.typeNode(TOptionsType),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: tsc.typeNode('boolean'),\n },\n ],\n returnType,\n statements: [\n tsc.constVariable({\n assertion: returnType,\n expression: tsc.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: tsc.identifier({ text: 'id' }),\n },\n {\n key: baseUrlKey,\n value: tsc.identifier({\n text: `options?.${baseUrlKey} || (options?.client ?? _heyApiClient).getConfig().${baseUrlKey}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n tsc.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: true,\n name: tsc.identifier({ text: 'body' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: true,\n name: tsc.identifier({ text: 'headers' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: true,\n name: tsc.identifier({ text: 'path' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.ifStatement({\n expression: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: 'options' }),\n isOptional: true,\n name: tsc.identifier({ text: 'query' }),\n }),\n thenStatement: tsc.block({\n statements: [\n tsc.expressionToStatement({\n expression: tsc.binaryExpression({\n left: tsc.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: tsc.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n tsc.returnVariable({\n expression: 'params',\n }),\n ],\n types: [\n {\n extends: tsc.typeReferenceNode({\n typeName: tsc.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: tsc.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: tsc.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = tsc.typeAliasDeclaration({\n name: queryKeyName,\n type: tsc.typeTupleNode({\n types: [\n tsc.typeIntersectionNode({\n types: [\n tsc.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey(getConfig())}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n tsc.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: tsc.typeReferenceNode({\n typeName: tsc.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 = tsc.arrayLiteralExpression({\n elements: [\n tsc.callExpression({\n functionName: createQueryKeyFn,\n parameters: [\n tsc.ots.string(id),\n 'options',\n isInfinite ? tsc.ots.boolean(true) : undefined,\n ],\n }),\n ],\n multiLine: false,\n });\n return queryKeyLiteral;\n};\n\nexport const handlerLegacy = ({\n client,\n files,\n plugin,\n}: Parameters<\n | TanStackAngularQueryPlugin['LegacyHandler']\n | TanStackReactQueryPlugin['LegacyHandler']\n | TanStackSolidQueryPlugin['LegacyHandler']\n | TanStackSvelteQueryPlugin['LegacyHandler']\n | TanStackVueQueryPlugin['LegacyHandler']\n>[0]) => {\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 = createOperationKey(operation);\n if (processedOperations.has(operationKey)) {\n continue;\n }\n processedOperations.set(operationKey, true);\n\n const queryFn = [\n config.plugins['@hey-api/sdk']?.config.asClass &&\n transformClassName({\n config,\n name: service.name,\n }),\n serviceFunctionIdentifier({\n config,\n handleIllegal: !config.plugins['@hey-api/sdk']?.config.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.config.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 = tsc.constVariable({\n exportConst: true,\n expression: tsc.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 = tsc.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n tsc.returnFunctionCall({\n args: [\n tsc.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: tsc.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 tsc.constVariable({\n destructure: true,\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: queryFn,\n parameters: [\n tsc.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: tsc.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n tsc.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: tsc.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.config.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.parser.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.parser.pagination,\n );\n if (paginationRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n return;\n });\n }\n\n return parameter.properties.find((property) => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n config.parser.pagination,\n );\n if (paginationRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n return;\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 = tsc.constVariable({\n exportConst: true,\n expression: tsc.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 = tsc.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: tsc.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n tsc.returnFunctionCall({\n args: [\n tsc.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: tsc.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 tsc.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: tsc.conditionalExpression({\n condition: tsc.binaryExpression({\n left: tsc.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: tsc.ots.string('object'),\n }),\n whenFalse: tsc.objectExpression({\n multiLine: true,\n obj: [\n {\n key: getPaginationIn(\n paginationParameter,\n ),\n value: tsc.objectExpression({\n multiLine: true,\n obj: [\n {\n key: paginationField.name,\n value: tsc.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: tsc.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n tsc.constVariable({\n expression: tsc.callExpression({\n functionName: 'createInfiniteParams',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n tsc.constVariable({\n destructure: true,\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: queryFn,\n parameters: [\n tsc.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: tsc.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n tsc.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: tsc.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.config.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 = tsc.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n statements: [\n tsc.constVariable({\n expression: tsc.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: tsc.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n tsc.constVariable({\n destructure: true,\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: queryFn,\n parameters: [\n tsc.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 tsc.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 tsc.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = tsc.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 { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { TanStackAngularQueryPlugin } from './types';\n\nexport const defaultConfig: TanStackAngularQueryPlugin['Config'] = {\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n handler: handler as TanStackAngularQueryPlugin['Handler'],\n handlerLegacy: handlerLegacy as TanStackAngularQueryPlugin['LegacyHandler'],\n name: '@tanstack/angular-query-experimental',\n output: '@tanstack/angular-query-experimental',\n resolveConfig: (plugin, context) => {\n plugin.config.infiniteQueryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}InfiniteQueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryKeys,\n });\n\n plugin.config.infiniteQueryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryOptions,\n });\n\n plugin.config.mutationOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.mutationOptions,\n });\n\n plugin.config.queryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}QueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryKeys,\n });\n\n plugin.config.queryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryOptions,\n });\n },\n};\n\n/**\n * Type helper for `@tanstack/angular-query-experimental` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { TanStackReactQueryPlugin } from './types';\n\nexport const defaultConfig: TanStackReactQueryPlugin['Config'] = {\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n handler: handler as TanStackReactQueryPlugin['Handler'],\n handlerLegacy: handlerLegacy as TanStackReactQueryPlugin['LegacyHandler'],\n name: '@tanstack/react-query',\n output: '@tanstack/react-query',\n resolveConfig: (plugin, context) => {\n plugin.config.infiniteQueryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}InfiniteQueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryKeys,\n });\n\n plugin.config.infiniteQueryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryOptions,\n });\n\n plugin.config.mutationOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.mutationOptions,\n });\n\n plugin.config.queryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}QueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryKeys,\n });\n\n plugin.config.queryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryOptions,\n });\n },\n};\n\n/**\n * Type helper for `@tanstack/react-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { TanStackSolidQueryPlugin } from './types';\n\nexport const defaultConfig: TanStackSolidQueryPlugin['Config'] = {\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n handler: handler as TanStackSolidQueryPlugin['Handler'],\n handlerLegacy: handlerLegacy as TanStackSolidQueryPlugin['LegacyHandler'],\n name: '@tanstack/solid-query',\n output: '@tanstack/solid-query',\n resolveConfig: (plugin, context) => {\n plugin.config.infiniteQueryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}InfiniteQueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryKeys,\n });\n\n plugin.config.infiniteQueryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryOptions,\n });\n\n plugin.config.mutationOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.mutationOptions,\n });\n\n plugin.config.queryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}QueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryKeys,\n });\n\n plugin.config.queryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryOptions,\n });\n },\n};\n\n/**\n * Type helper for `@tanstack/solid-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { TanStackSvelteQueryPlugin } from './types';\n\nexport const defaultConfig: TanStackSvelteQueryPlugin['Config'] = {\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n handler: handler as TanStackSvelteQueryPlugin['Handler'],\n handlerLegacy: handlerLegacy as TanStackSvelteQueryPlugin['LegacyHandler'],\n name: '@tanstack/svelte-query',\n output: '@tanstack/svelte-query',\n resolveConfig: (plugin, context) => {\n plugin.config.infiniteQueryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}InfiniteQueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryKeys,\n });\n\n plugin.config.infiniteQueryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryOptions,\n });\n\n plugin.config.mutationOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.mutationOptions,\n });\n\n plugin.config.queryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}QueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryKeys,\n });\n\n plugin.config.queryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryOptions,\n });\n },\n};\n\n/**\n * Type helper for `@tanstack/svelte-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from '../query-core/plugin';\nimport { handlerLegacy } from '../query-core/plugin-legacy';\nimport type { TanStackVueQueryPlugin } from './types';\n\nexport const defaultConfig: TanStackVueQueryPlugin['Config'] = {\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/sdk', '@hey-api/typescript'],\n handler: handler as TanStackVueQueryPlugin['Handler'],\n handlerLegacy: handlerLegacy as TanStackVueQueryPlugin['LegacyHandler'],\n name: '@tanstack/vue-query',\n output: '@tanstack/vue-query',\n resolveConfig: (plugin, context) => {\n plugin.config.infiniteQueryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}InfiniteQueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryKeys,\n });\n\n plugin.config.infiniteQueryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.infiniteQueryOptions,\n });\n\n plugin.config.mutationOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.mutationOptions,\n });\n\n plugin.config.queryKeys = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: '{{name}}QueryKey',\n tags: false,\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryKeys,\n });\n\n plugin.config.queryOptions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n meta: false,\n name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.queryOptions,\n });\n },\n};\n\n/**\n * Type helper for `@tanstack/vue-query` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import type ts from 'typescript';\n\nimport { operationResponsesMap } from '../../ir/operation';\nimport { hasParameterGroupObjectRequired } from '../../ir/parameter';\nimport type { IR } from '../../ir/types';\nimport { type Property, tsc } from '../../tsc';\nimport { typesId } from '../@hey-api/typescript/ref';\nimport type { FastifyPlugin } from './types';\n\nconst fastifyId = 'fastify';\n\nconst operationToRouteHandler = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: FastifyPlugin['Instance'];\n}): Property | undefined => {\n const file = plugin.context.file({ id: fastifyId })!;\n\n const properties: Array<Property> = [];\n\n const pluginTypeScript = plugin.getPlugin('@hey-api/typescript')!;\n const fileTypeScript = plugin.context.file({ id: typesId })!;\n const dataName = fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'data' }),\n );\n if (dataName) {\n if (operation.body) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: dataName,\n });\n properties.push({\n isRequired: operation.body.required,\n name: 'Body',\n type: `${dataName}['body']`,\n });\n }\n\n if (operation.parameters) {\n if (operation.parameters.header) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: dataName,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.header,\n ),\n name: 'Headers',\n type: `${dataName}['headers']`,\n });\n }\n\n if (operation.parameters.path) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: dataName,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.path,\n ),\n name: 'Params',\n type: `${dataName}['path']`,\n });\n }\n\n if (operation.parameters.query) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: dataName,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.query,\n ),\n name: 'Querystring',\n type: `${dataName}['query']`,\n });\n }\n }\n }\n\n const { errors, responses } = operationResponsesMap(operation);\n\n let errorsTypeReference: ts.TypeReferenceNode | undefined = undefined;\n const errorName = fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'errors' }),\n );\n if (errorName && 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({\n context: plugin.context,\n id: typesId,\n }),\n name: errorName,\n });\n errorsTypeReference = tsc.typeReferenceNode({\n typeName: errorName,\n });\n } else if (keys.length > 1) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: errorName,\n });\n const errorsType = tsc.typeReferenceNode({\n typeName: errorName,\n });\n const defaultType = tsc.literalTypeNode({\n literal: tsc.stringLiteral({ text: 'default' }),\n });\n errorsTypeReference = tsc.typeReferenceNode({\n typeArguments: [errorsType, defaultType],\n typeName: 'Omit',\n });\n }\n }\n }\n\n let responsesTypeReference: ts.TypeReferenceNode | undefined = undefined;\n const responseName = fileTypeScript.getName(\n pluginTypeScript.api.getId({ operation, type: 'responses' }),\n );\n if (responseName && 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({\n context: plugin.context,\n id: typesId,\n }),\n name: responseName,\n });\n responsesTypeReference = tsc.typeReferenceNode({\n typeName: responseName,\n });\n } else if (keys.length > 1) {\n file.import({\n asType: true,\n module: file.relativePathToFile({\n context: plugin.context,\n id: typesId,\n }),\n name: responseName,\n });\n const responsesType = tsc.typeReferenceNode({\n typeName: responseName,\n });\n const defaultType = tsc.literalTypeNode({\n literal: tsc.stringLiteral({ text: 'default' }),\n });\n responsesTypeReference = tsc.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: tsc.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: tsc.typeNode('RouteHandler', [\n tsc.typeInterfaceNode({\n properties,\n useLegacyResolution: false,\n }),\n ]),\n };\n return routeHandler;\n};\n\nexport const handler: FastifyPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n id: fastifyId,\n path: plugin.output,\n });\n\n const routeHandlers: Array<Property> = [];\n\n plugin.forEach('operation', ({ operation }) => {\n const routeHandler = operationToRouteHandler({ operation, plugin });\n if (routeHandler) {\n routeHandlers.push(routeHandler);\n }\n });\n\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 tsc.typeAliasDeclaration({\n exportType: true,\n name: identifier.name,\n type: tsc.typeInterfaceNode({\n properties: routeHandlers,\n useLegacyResolution: false,\n }),\n }),\n );\n};\n","import { definePluginConfig } from '../shared/utils/config';\nimport { handler } from './plugin';\nimport type { FastifyPlugin } from './types';\n\nexport const defaultConfig: FastifyPlugin['Config'] = {\n config: {\n exportFromIndex: false,\n },\n dependencies: ['@hey-api/typescript'],\n handler,\n name: 'fastify',\n output: 'fastify',\n};\n\n/**\n * Type helper for `fastify` plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { tsc } from '../../tsc';\n\nexport const identifiers = {\n /**\n * {@link https://valibot.dev/api/#actions Actions}\n */\n actions: {\n args: tsc.identifier({ text: 'args' }),\n base64: tsc.identifier({ text: 'base64' }),\n bic: tsc.identifier({ text: 'bic' }),\n brand: tsc.identifier({ text: 'brand' }),\n bytes: tsc.identifier({ text: 'bytes' }),\n check: tsc.identifier({ text: 'check' }),\n checkItems: tsc.identifier({ text: 'checkItems' }),\n creditCard: tsc.identifier({ text: 'creditCard' }),\n cuid2: tsc.identifier({ text: 'cuid2' }),\n decimal: tsc.identifier({ text: 'decimal' }),\n description: tsc.identifier({ text: 'description' }),\n digits: tsc.identifier({ text: 'digits' }),\n email: tsc.identifier({ text: 'email' }),\n emoji: tsc.identifier({ text: 'emoji' }),\n empty: tsc.identifier({ text: 'empty' }),\n endsWith: tsc.identifier({ text: 'endsWith' }),\n entries: tsc.identifier({ text: 'entries' }),\n everyItem: tsc.identifier({ text: 'everyItem' }),\n excludes: tsc.identifier({ text: 'excludes' }),\n filterItems: tsc.identifier({ text: 'filterItems' }),\n findItem: tsc.identifier({ text: 'findItem' }),\n finite: tsc.identifier({ text: 'finite' }),\n flavor: tsc.identifier({ text: 'flavor' }),\n graphemes: tsc.identifier({ text: 'graphemes' }),\n gtValue: tsc.identifier({ text: 'gtValue' }),\n hash: tsc.identifier({ text: 'hash' }),\n hexColor: tsc.identifier({ text: 'hexColor' }),\n hexadecimal: tsc.identifier({ text: 'hexadecimal' }),\n imei: tsc.identifier({ text: 'imei' }),\n includes: tsc.identifier({ text: 'includes' }),\n integer: tsc.identifier({ text: 'integer' }),\n ip: tsc.identifier({ text: 'ip' }),\n ipv4: tsc.identifier({ text: 'ipv4' }),\n ipv6: tsc.identifier({ text: 'ipv6' }),\n isoDate: tsc.identifier({ text: 'isoDate' }),\n isoDateTime: tsc.identifier({ text: 'isoDateTime' }),\n isoTime: tsc.identifier({ text: 'isoTime' }),\n isoTimeSecond: tsc.identifier({ text: 'isoTimeSecond' }),\n isoTimestamp: tsc.identifier({ text: 'isoTimestamp' }),\n isoWeek: tsc.identifier({ text: 'isoWeek' }),\n length: tsc.identifier({ text: 'length' }),\n ltValue: tsc.identifier({ text: 'ltValue' }),\n mac: tsc.identifier({ text: 'mac' }),\n mac48: tsc.identifier({ text: 'mac48' }),\n mac64: tsc.identifier({ text: 'mac64' }),\n mapItems: tsc.identifier({ text: 'mapItems' }),\n maxBytes: tsc.identifier({ text: 'maxBytes' }),\n maxEntries: tsc.identifier({ text: 'maxEntries' }),\n maxGraphemes: tsc.identifier({ text: 'maxGraphemes' }),\n maxLength: tsc.identifier({ text: 'maxLength' }),\n maxSize: tsc.identifier({ text: 'maxSize' }),\n maxValue: tsc.identifier({ text: 'maxValue' }),\n maxWords: tsc.identifier({ text: 'maxWords' }),\n metadata: tsc.identifier({ text: 'metadata' }),\n mimeType: tsc.identifier({ text: 'mimeType' }),\n minBytes: tsc.identifier({ text: 'minBytes' }),\n minEntries: tsc.identifier({ text: 'minEntries' }),\n minGraphemes: tsc.identifier({ text: 'minGraphemes' }),\n minLength: tsc.identifier({ text: 'minLength' }),\n minSize: tsc.identifier({ text: 'minSize' }),\n minValue: tsc.identifier({ text: 'minValue' }),\n minWords: tsc.identifier({ text: 'minWords' }),\n multipleOf: tsc.identifier({ text: 'multipleOf' }),\n nanoid: tsc.identifier({ text: 'nanoid' }),\n nonEmpty: tsc.identifier({ text: 'nonEmpty' }),\n normalize: tsc.identifier({ text: 'normalize' }),\n notBytes: tsc.identifier({ text: 'notBytes' }),\n notEntries: tsc.identifier({ text: 'notEntries' }),\n notGraphemes: tsc.identifier({ text: 'notGraphemes' }),\n notLength: tsc.identifier({ text: 'notLength' }),\n notSize: tsc.identifier({ text: 'notSize' }),\n notValue: tsc.identifier({ text: 'notValue' }),\n notValues: tsc.identifier({ text: 'notValues' }),\n notWords: tsc.identifier({ text: 'notWords' }),\n octal: tsc.identifier({ text: 'octal' }),\n parseJson: tsc.identifier({ text: 'parseJson' }),\n partialCheck: tsc.identifier({ text: 'partialCheck' }),\n rawCheck: tsc.identifier({ text: 'rawCheck' }),\n rawTransform: tsc.identifier({ text: 'rawTransform' }),\n readonly: tsc.identifier({ text: 'readonly' }),\n reduceItems: tsc.identifier({ text: 'reduceItems' }),\n regex: tsc.identifier({ text: 'regex' }),\n returns: tsc.identifier({ text: 'returns' }),\n rfcEmail: tsc.identifier({ text: 'rfcEmail' }),\n safeInteger: tsc.identifier({ text: 'safeInteger' }),\n size: tsc.identifier({ text: 'size' }),\n slug: tsc.identifier({ text: 'slug' }),\n someItem: tsc.identifier({ text: 'someItem' }),\n sortItems: tsc.identifier({ text: 'sortItems' }),\n startsWith: tsc.identifier({ text: 'startsWith' }),\n stringifyJson: tsc.identifier({ text: 'stringifyJson' }),\n title: tsc.identifier({ text: 'title' }),\n toLowerCase: tsc.identifier({ text: 'toLowerCase' }),\n toMaxValue: tsc.identifier({ text: 'toMaxValue' }),\n toMinValue: tsc.identifier({ text: 'toMinValue' }),\n toUpperCase: tsc.identifier({ text: 'toUpperCase' }),\n transform: tsc.identifier({ text: 'transform' }),\n trim: tsc.identifier({ text: 'trim' }),\n trimEnd: tsc.identifier({ text: 'trimEnd' }),\n trimStart: tsc.identifier({ text: 'trimStart' }),\n ulid: tsc.identifier({ text: 'ulid' }),\n url: tsc.identifier({ text: 'url' }),\n uuid: tsc.identifier({ text: 'uuid' }),\n value: tsc.identifier({ text: 'value' }),\n values: tsc.identifier({ text: 'values' }),\n words: tsc.identifier({ text: 'words' }),\n },\n /**\n * {@link https://valibot.dev/api/#async Async}\n */\n async: {\n argsAsync: tsc.identifier({ text: 'argsAsync' }),\n arrayAsync: tsc.identifier({ text: 'arrayAsync' }),\n awaitAsync: tsc.identifier({ text: 'awaitAsync' }),\n checkAsync: tsc.identifier({ text: 'checkAsync' }),\n checkItemsAsync: tsc.identifier({ text: 'checkItemsAsync' }),\n customAsync: tsc.identifier({ text: 'customAsync' }),\n exactOptionalAsync: tsc.identifier({ text: 'exactOptionalAsync' }),\n fallbackAsync: tsc.identifier({ text: 'fallbackAsync' }),\n forwardAsync: tsc.identifier({ text: 'forwardAsync' }),\n getDefaultsAsync: tsc.identifier({ text: 'getDefaultsAsync' }),\n getFallbacksAsync: tsc.identifier({ text: 'getFallbacksAsync' }),\n intersectAsync: tsc.identifier({ text: 'intersectAsync' }),\n lazyAsync: tsc.identifier({ text: 'lazyAsync' }),\n looseObjectAsync: tsc.identifier({ text: 'looseObjectAsync' }),\n looseTupleAsync: tsc.identifier({ text: 'looseTupleAsync' }),\n mapAsync: tsc.identifier({ text: 'mapAsync' }),\n nonNullableAsync: tsc.identifier({ text: 'nonNullableAsync' }),\n nonNullishAsync: tsc.identifier({ text: 'nonNullishAsync' }),\n nonOptionalAsync: tsc.identifier({ text: 'nonOptionalAsync' }),\n nullableAsync: tsc.identifier({ text: 'nullableAsync' }),\n nullishAsync: tsc.identifier({ text: 'nullishAsync' }),\n objectAsync: tsc.identifier({ text: 'objectAsync' }),\n objectWithRestAsync: tsc.identifier({ text: 'objectWithRestAsync' }),\n optionalAsync: tsc.identifier({ text: 'optionalAsync' }),\n parseAsync: tsc.identifier({ text: 'parseAsync' }),\n parserAsync: tsc.identifier({ text: 'parserAsync' }),\n partialAsync: tsc.identifier({ text: 'partialAsync' }),\n partialCheckAsync: tsc.identifier({ text: 'partialCheckAsync' }),\n pipeAsync: tsc.identifier({ text: 'pipeAsync' }),\n rawCheckAsync: tsc.identifier({ text: 'rawCheckAsync' }),\n rawTransformAsync: tsc.identifier({ text: 'rawTransformAsync' }),\n recordAsync: tsc.identifier({ text: 'recordAsync' }),\n requiredAsync: tsc.identifier({ text: 'requiredAsync' }),\n returnsAsync: tsc.identifier({ text: 'returnsAsync' }),\n safeParseAsync: tsc.identifier({ text: 'safeParseAsync' }),\n safeParserAsync: tsc.identifier({ text: 'safeParserAsync' }),\n setAsync: tsc.identifier({ text: 'setAsync' }),\n strictObjectAsync: tsc.identifier({ text: 'strictObjectAsync' }),\n strictTupleAsync: tsc.identifier({ text: 'strictTupleAsync' }),\n transformAsync: tsc.identifier({ text: 'transformAsync' }),\n tupleAsync: tsc.identifier({ text: 'tupleAsync' }),\n tupleWithRestAsync: tsc.identifier({ text: 'tupleWithRestAsync' }),\n undefinedableAsync: tsc.identifier({ text: 'undefinedableAsync' }),\n unionAsync: tsc.identifier({ text: 'unionAsync' }),\n variantAsync: tsc.identifier({ text: 'variantAsync' }),\n },\n /**\n * {@link https://valibot.dev/api/#methods Methods}\n */\n methods: {\n assert: tsc.identifier({ text: 'assert' }),\n config: tsc.identifier({ text: 'config' }),\n fallback: tsc.identifier({ text: 'fallback' }),\n flatten: tsc.identifier({ text: 'flatten' }),\n forward: tsc.identifier({ text: 'forward' }),\n getDefault: tsc.identifier({ text: 'getDefault' }),\n getDefaults: tsc.identifier({ text: 'getDefaults' }),\n getDescription: tsc.identifier({ text: 'getDescription' }),\n getFallback: tsc.identifier({ text: 'getFallback' }),\n getFallbacks: tsc.identifier({ text: 'getFallbacks' }),\n getMetadata: tsc.identifier({ text: 'getMetadata' }),\n getTitle: tsc.identifier({ text: 'getTitle' }),\n is: tsc.identifier({ text: 'is' }),\n keyof: tsc.identifier({ text: 'keyof' }),\n message: tsc.identifier({ text: 'message' }),\n omit: tsc.identifier({ text: 'omit' }),\n parse: tsc.identifier({ text: 'parse' }),\n parser: tsc.identifier({ text: 'parser' }),\n partial: tsc.identifier({ text: 'partial' }),\n pick: tsc.identifier({ text: 'pick' }),\n pipe: tsc.identifier({ text: 'pipe' }),\n required: tsc.identifier({ text: 'required' }),\n safeParse: tsc.identifier({ text: 'safeParse' }),\n safeParser: tsc.identifier({ text: 'safeParser' }),\n summarize: tsc.identifier({ text: 'summarize' }),\n unwrap: tsc.identifier({ text: 'unwrap' }),\n },\n /**\n * {@link https://valibot.dev/api/#schemas Schemas}\n */\n schemas: {\n any: tsc.identifier({ text: 'any' }),\n array: tsc.identifier({ text: 'array' }),\n bigInt: tsc.identifier({ text: 'bigint' }),\n blob: tsc.identifier({ text: 'blob' }),\n boolean: tsc.identifier({ text: 'boolean' }),\n custom: tsc.identifier({ text: 'custom' }),\n date: tsc.identifier({ text: 'date' }),\n enum: tsc.identifier({ text: 'enum' }),\n exactOptional: tsc.identifier({ text: 'exactOptional' }),\n file: tsc.identifier({ text: 'file' }),\n function: tsc.identifier({ text: 'function' }),\n instance: tsc.identifier({ text: 'instance' }),\n intersect: tsc.identifier({ text: 'intersect' }),\n lazy: tsc.identifier({ text: 'lazy' }),\n literal: tsc.identifier({ text: 'literal' }),\n looseObject: tsc.identifier({ text: 'looseObject' }),\n looseTuple: tsc.identifier({ text: 'looseTuple' }),\n map: tsc.identifier({ text: 'map' }),\n nan: tsc.identifier({ text: 'nan' }),\n never: tsc.identifier({ text: 'never' }),\n nonNullable: tsc.identifier({ text: 'nonNullable' }),\n nonNullish: tsc.identifier({ text: 'nonNullish' }),\n nonOptional: tsc.identifier({ text: 'nonOptional' }),\n null: tsc.identifier({ text: 'null' }),\n nullable: tsc.identifier({ text: 'nullable' }),\n nullish: tsc.identifier({ text: 'nullish' }),\n number: tsc.identifier({ text: 'number' }),\n object: tsc.identifier({ text: 'object' }),\n objectWithRest: tsc.identifier({ text: 'objectWithRest' }),\n optional: tsc.identifier({ text: 'optional' }),\n picklist: tsc.identifier({ text: 'picklist' }),\n promise: tsc.identifier({ text: 'promise' }),\n record: tsc.identifier({ text: 'record' }),\n set: tsc.identifier({ text: 'set' }),\n strictObject: tsc.identifier({ text: 'strictObject' }),\n strictTuple: tsc.identifier({ text: 'strictTuple' }),\n string: tsc.identifier({ text: 'string' }),\n symbol: tsc.identifier({ text: 'symbol' }),\n tuple: tsc.identifier({ text: 'tuple' }),\n tupleWithRest: tsc.identifier({ text: 'tupleWithRest' }),\n undefined: tsc.identifier({ text: 'undefined' }),\n undefinedable: tsc.identifier({ text: 'undefinedable' }),\n union: tsc.identifier({ text: 'union' }),\n unknown: tsc.identifier({ text: 'unknown' }),\n variant: tsc.identifier({ text: 'variant' }),\n void: tsc.identifier({ text: 'void' }),\n },\n /**\n * {@link https://valibot.dev/api/#storages Storages}\n */\n storages: {\n // TODO: implement if necessary\n },\n /**\n * {@link https://valibot.dev/api/#types Types}\n */\n types: {\n // TODO: implement if necessary\n GenericSchema: tsc.identifier({ text: 'GenericSchema' }),\n },\n /**\n * {@link https://valibot.dev/api/#utils Utils}\n */\n utils: {\n // TODO: implement if necessary\n },\n v: tsc.identifier({ text: 'v' }),\n};\n\nexport const valibotId = 'valibot';\n","import type ts from 'typescript';\n\nimport type { GeneratedFile } from '../../generate/file';\nimport type { IR } from '../../ir/types';\nimport { tsc } from '../../tsc';\nimport { identifiers, valibotId } from './constants';\nimport type { ValibotPlugin } from './types';\n\nconst createRequestValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n}): ts.ArrowFunction | undefined => {\n const { requests } = plugin.config;\n const schemaIdentifier = plugin.context.file({ id: valibotId })!.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-response/${operation.id}`,\n // TODO: refactor to not have to define nameTransformer\n nameTransformer: typeof requests === 'object' ? requests.name : undefined,\n namespace: 'value',\n });\n\n if (!schemaIdentifier.name) {\n return;\n }\n\n file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: valibotId,\n }),\n name: schemaIdentifier.name,\n });\n\n file.import({\n alias: identifiers.v.text,\n module: 'valibot',\n name: '*',\n });\n\n const dataParameterName = 'data';\n\n return tsc.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n tsc.returnStatement({\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.async.parseAsync,\n }),\n parameters: [\n tsc.identifier({ text: schemaIdentifier.name }),\n tsc.identifier({ text: dataParameterName }),\n ],\n }),\n }),\n }),\n ],\n });\n};\n\nconst createResponseValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n}): ts.ArrowFunction | undefined => {\n const { responses } = plugin.config;\n const schemaIdentifier = plugin.context.file({ id: valibotId })!.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-response/${operation.id}`,\n // TODO: refactor to not have to define nameTransformer\n nameTransformer: typeof responses === 'object' ? responses.name : undefined,\n namespace: 'value',\n });\n\n if (!schemaIdentifier.name) {\n return;\n }\n\n file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: valibotId,\n }),\n name: schemaIdentifier.name,\n });\n\n file.import({\n alias: identifiers.v.text,\n module: 'valibot',\n name: '*',\n });\n\n const dataParameterName = 'data';\n\n return tsc.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n tsc.returnStatement({\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.async.parseAsync,\n }),\n parameters: [\n tsc.identifier({ text: schemaIdentifier.name }),\n tsc.identifier({ text: dataParameterName }),\n ],\n }),\n }),\n }),\n ],\n });\n};\n\nexport type Api = {\n createRequestValidator: (args: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n createResponseValidator: (args: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n};\n\nexport const api: Api = {\n createRequestValidator,\n createResponseValidator,\n};\n","import { tsc } from '../../tsc';\n\n// Integer format ranges and properties\nexport const INTEGER_FORMATS = {\n int16: {\n max: 32767,\n maxError: 'Invalid value: Expected int16 to be <= 2^15-1',\n min: -32768,\n minError: 'Invalid value: Expected int16 to be >= -2^15',\n needsBigInt: false,\n },\n int32: {\n max: 2147483647,\n maxError: 'Invalid value: Expected int32 to be <= 2^31-1',\n min: -2147483648,\n minError: 'Invalid value: Expected int32 to be >= -2^31',\n needsBigInt: false,\n },\n int64: {\n max: '9223372036854775807',\n maxError: 'Invalid value: Expected int64 to be <= 2^63-1',\n min: '-9223372036854775808',\n minError: 'Invalid value: Expected int64 to be >= -2^63',\n needsBigInt: true,\n },\n int8: {\n max: 127,\n maxError: 'Invalid value: Expected int8 to be <= 2^7-1',\n min: -128,\n minError: 'Invalid value: Expected int8 to be >= -2^7',\n needsBigInt: false,\n },\n uint16: {\n max: 65535,\n maxError: 'Invalid value: Expected uint16 to be <= 2^16-1',\n min: 0,\n minError: 'Invalid value: Expected uint16 to be >= 0',\n needsBigInt: false,\n },\n uint32: {\n max: 4294967295,\n maxError: 'Invalid value: Expected uint32 to be <= 2^32-1',\n min: 0,\n minError: 'Invalid value: Expected uint32 to be >= 0',\n needsBigInt: false,\n },\n uint64: {\n max: '18446744073709551615',\n maxError: 'Invalid value: Expected uint64 to be <= 2^64-1',\n min: '0',\n minError: 'Invalid value: Expected uint64 to be >= 0',\n needsBigInt: true,\n },\n uint8: {\n max: 255,\n maxError: 'Invalid value: Expected uint8 to be <= 2^8-1',\n min: 0,\n minError: 'Invalid value: Expected uint8 to be >= 0',\n needsBigInt: false,\n },\n} as const;\n\nexport type IntegerFormat = keyof typeof INTEGER_FORMATS;\n\nexport const isIntegerFormat = (\n format: string | undefined,\n): format is IntegerFormat => format !== undefined && format in INTEGER_FORMATS;\n\nexport const needsBigIntForFormat = (format: string | undefined): boolean =>\n isIntegerFormat(format) && INTEGER_FORMATS[format].needsBigInt;\n\nexport const numberParameter = ({\n isBigInt,\n value,\n}: {\n isBigInt: boolean;\n value: unknown;\n}) => {\n const expression = tsc.valueToExpression({ value });\n\n if (\n isBigInt &&\n (typeof value === 'bigint' ||\n typeof value === 'number' ||\n typeof value === 'string' ||\n typeof value === 'boolean')\n ) {\n return tsc.callExpression({\n functionName: 'BigInt',\n parameters: [expression],\n });\n }\n\n return expression;\n};\n","import { operationResponsesMap } from '../../ir/operation';\nimport type { IR } from '../../ir/types';\nimport { valibotId } from './constants';\nimport { schemaToValibotSchema, type State } from './plugin';\nimport type { ValibotPlugin } from './types';\n\nexport const operationToValibotSchema = ({\n operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n state: State;\n}) => {\n const file = plugin.context.file({ id: valibotId })!;\n\n if (plugin.config.requests.enabled) {\n const requiredProperties = new Set<string>();\n\n const schemaData: IR.SchemaObject = {\n properties: {\n body: {\n type: 'never',\n },\n path: {\n type: 'never',\n },\n query: {\n type: 'never',\n },\n },\n type: 'object',\n };\n\n if (operation.parameters) {\n // TODO: add support for cookies\n\n if (operation.parameters.header) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.header) {\n const parameter = operation.parameters.header[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('headers');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.headers = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.path) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.path) {\n const parameter = operation.parameters.path[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('path');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.path = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.query) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.query) {\n const parameter = operation.parameters.query[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('query');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.query = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n }\n\n if (operation.body) {\n schemaData.properties!.body = operation.body.schema;\n\n if (operation.body.required) {\n requiredProperties.add('body');\n }\n }\n\n schemaData.required = [...requiredProperties];\n\n const identifierData = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-data/${operation.id}`,\n case: plugin.config.requests.case,\n create: true,\n nameTransformer: plugin.config.requests.name,\n namespace: 'value',\n });\n schemaToValibotSchema({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-data/${operation.id}`,\n identifier: identifierData,\n plugin,\n schema: schemaData,\n state,\n });\n }\n\n if (plugin.config.responses.enabled) {\n if (operation.responses) {\n const { response } = operationResponsesMap(operation);\n\n if (response) {\n const identifierResponse = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-response/${operation.id}`,\n case: plugin.config.responses.case,\n create: true,\n nameTransformer: plugin.config.responses.name,\n namespace: 'value',\n });\n schemaToValibotSchema({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-response/${operation.id}`,\n identifier: identifierResponse,\n plugin,\n schema: response,\n state,\n });\n }\n }\n }\n};\n","import type { IR } from '../../ir/types';\nimport { valibotId } from './constants';\nimport { schemaToValibotSchema, type State } from './plugin';\nimport type { ValibotPlugin } from './types';\n\nexport const webhookToValibotSchema = ({\n operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n state: State;\n}) => {\n const file = plugin.context.file({ id: valibotId })!;\n\n if (plugin.config.webhooks.enabled) {\n const requiredProperties = new Set<string>();\n\n const schemaData: IR.SchemaObject = {\n properties: {\n body: {\n type: 'never',\n },\n path: {\n type: 'never',\n },\n query: {\n type: 'never',\n },\n },\n type: 'object',\n };\n\n if (operation.parameters) {\n // TODO: add support for cookies\n\n if (operation.parameters.header) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.header) {\n const parameter = operation.parameters.header[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('headers');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.headers = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.path) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.path) {\n const parameter = operation.parameters.path[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('path');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.path = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.query) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.query) {\n const parameter = operation.parameters.query[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('query');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.query = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n }\n\n if (operation.body) {\n schemaData.properties!.body = operation.body.schema;\n\n if (operation.body.required) {\n requiredProperties.add('body');\n }\n }\n\n schemaData.required = [...requiredProperties];\n\n const identifierData = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-webhook/${operation.id}`,\n case: plugin.config.webhooks.case,\n create: true,\n nameTransformer: plugin.config.webhooks.name,\n namespace: 'value',\n });\n schemaToValibotSchema({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/valibot-webhook/${operation.id}`,\n identifier: identifierData,\n plugin,\n schema: schemaData,\n state,\n });\n }\n};\n","import ts from 'typescript';\n\nimport type { Identifier } from '../../generate/file/types';\nimport { deduplicateSchema } from '../../ir/schema';\nimport type { IR } from '../../ir/types';\nimport { tsc } from '../../tsc';\nimport type { StringCase, StringName } from '../../types/case';\nimport { numberRegExp } from '../../utils/regexp';\nimport { createSchemaComment } from '../shared/utils/schema';\nimport { identifiers, valibotId } from './constants';\nimport {\n INTEGER_FORMATS,\n isIntegerFormat,\n needsBigIntForFormat,\n numberParameter,\n} from './number-helpers';\nimport { operationToValibotSchema } from './operation';\nimport type { ValibotPlugin } from './types';\nimport { webhookToValibotSchema } from './webhook';\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\nexport interface State {\n circularReferenceTracker: Set<string>;\n hasCircularReference: boolean;\n nameCase: StringCase;\n nameTransformer: StringName;\n}\n\nconst pipesToExpression = (pipes: Array<ts.Expression>) => {\n if (pipes.length === 1) {\n return pipes[0]!;\n }\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.methods.pipe,\n }),\n parameters: pipes,\n });\n return expression;\n};\n\nconst arrayTypeToValibotSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ValibotPlugin['Instance'];\n schema: SchemaWithType<'array'>;\n state: State;\n}): ts.Expression => {\n const functionName = tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.array,\n });\n\n const pipes: Array<ts.CallExpression> = [];\n\n if (!schema.items) {\n const expression = tsc.callExpression({\n functionName,\n parameters: [\n unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n }),\n ],\n });\n pipes.push(expression);\n } else {\n schema = deduplicateSchema({ schema });\n\n // at least one item is guaranteed\n const itemExpressions = schema.items!.map((item) => {\n const schemaPipes = schemaToValibotSchema({\n plugin,\n schema: item,\n state,\n });\n return pipesToExpression(schemaPipes);\n });\n\n if (itemExpressions.length === 1) {\n const expression = tsc.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n pipes.push(expression);\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return tsc.typeArrayNode(\n // tsc.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n // TODO: parser - handle union\n // return tsc.typeArrayNode(tsc.typeUnionNode({ types: itemExpressions }));\n\n const expression = tsc.callExpression({\n functionName,\n parameters: [\n unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n }),\n ],\n });\n pipes.push(expression);\n }\n }\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n });\n pipes.push(expression);\n } else {\n if (schema.minItems !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.minLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n });\n pipes.push(expression);\n }\n\n if (schema.maxItems !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.maxLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxItems })],\n });\n pipes.push(expression);\n }\n }\n\n return pipesToExpression(pipes);\n};\n\nconst booleanTypeToValibotSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}) => {\n if (typeof schema.const === 'boolean') {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [tsc.ots.boolean(schema.const)],\n });\n return expression;\n }\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.boolean,\n }),\n });\n return expression;\n};\n\nconst enumTypeToValibotSchema = ({\n schema,\n}: {\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 tsc.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 unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n });\n }\n\n let resultExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.picklist,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n resultExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.nullable,\n }),\n parameters: [resultExpression],\n });\n }\n\n return resultExpression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst neverTypeToValibotSchema = (_props: {\n schema: SchemaWithType<'never'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.never,\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst nullTypeToValibotSchema = (_props: {\n schema: SchemaWithType<'null'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.null,\n }),\n });\n return expression;\n};\n\nconst numberTypeToValibotSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'integer' | 'number'>;\n}) => {\n const format = schema.format;\n const isInteger = schema.type === 'integer';\n const isBigInt = needsBigIntForFormat(format);\n const formatInfo = isIntegerFormat(format) ? INTEGER_FORMATS[format] : null;\n\n // Return early if const is defined since we can create a literal type directly without additional validation\n if (schema.const !== undefined && schema.const !== null) {\n const constValue = schema.const;\n let literalValue;\n\n // Case 1: Number with no format -> generate literal with the number\n if (typeof constValue === 'number' && !format) {\n literalValue = tsc.ots.number(constValue);\n }\n // Case 2: Number with format -> check if format needs BigInt, generate appropriate literal\n else if (typeof constValue === 'number' && format) {\n if (isBigInt) {\n // Format requires BigInt, convert number to BigInt\n literalValue = tsc.callExpression({\n functionName: 'BigInt',\n parameters: [tsc.ots.string(constValue.toString())],\n });\n } else {\n // Regular format, use number as-is\n literalValue = tsc.ots.number(constValue);\n }\n }\n // Case 3: Format that allows string -> generate BigInt literal (for int64/uint64 formats)\n else if (typeof constValue === 'string' && isBigInt) {\n // Remove 'n' suffix if present in string\n const cleanString = constValue.endsWith('n')\n ? constValue.slice(0, -1)\n : constValue;\n literalValue = tsc.callExpression({\n functionName: 'BigInt',\n parameters: [tsc.ots.string(cleanString)],\n });\n }\n // Case 4: Const is typeof bigint (literal) -> transform from literal to BigInt()\n else if (typeof constValue === 'bigint') {\n // Convert BigInt to string and remove 'n' suffix that toString() adds\n const bigintString = constValue.toString();\n const cleanString = bigintString.endsWith('n')\n ? bigintString.slice(0, -1)\n : bigintString;\n literalValue = tsc.callExpression({\n functionName: 'BigInt',\n parameters: [tsc.ots.string(cleanString)],\n });\n }\n // Default case: use value as-is for other types\n else {\n literalValue = tsc.valueToExpression({ value: constValue });\n }\n\n return tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [literalValue],\n });\n }\n\n const pipes: Array<ts.CallExpression> = [];\n\n // For bigint formats (int64, uint64), create union of number, string, and bigint with transform\n if (isBigInt) {\n const unionExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.number,\n }),\n }),\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.string,\n }),\n }),\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.bigInt,\n }),\n }),\n ],\n multiLine: false,\n }),\n ],\n });\n pipes.push(unionExpression);\n\n // Add transform to convert to BigInt\n const transformExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.transform,\n }),\n parameters: [\n tsc.arrowFunction({\n parameters: [{ name: 'x' }],\n statements: tsc.callExpression({\n functionName: 'BigInt',\n parameters: [tsc.identifier({ text: 'x' })],\n }),\n }),\n ],\n });\n pipes.push(transformExpression);\n } else {\n // For regular number formats, use number schema\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.number,\n }),\n });\n pipes.push(expression);\n }\n\n // Add integer validation for integer types (except when using bigint union)\n if (!isBigInt && isInteger) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.integer,\n }),\n });\n pipes.push(expression);\n }\n\n // Add format-specific range validations\n if (formatInfo) {\n const minValue = formatInfo.min;\n const maxValue = formatInfo.max;\n const minErrorMessage = formatInfo.minError;\n const maxErrorMessage = formatInfo.maxError;\n\n // Add minimum value validation\n const minExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.minValue,\n }),\n parameters: [\n isBigInt\n ? tsc.callExpression({\n functionName: 'BigInt',\n parameters: [tsc.ots.string(minValue.toString())],\n })\n : tsc.ots.number(minValue as number),\n tsc.ots.string(minErrorMessage),\n ],\n });\n pipes.push(minExpression);\n\n // Add maximum value validation\n const maxExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.maxValue,\n }),\n parameters: [\n isBigInt\n ? tsc.callExpression({\n functionName: 'BigInt',\n parameters: [tsc.ots.string(maxValue.toString())],\n })\n : tsc.ots.number(maxValue as number),\n tsc.ots.string(maxErrorMessage),\n ],\n });\n pipes.push(maxExpression);\n }\n\n if (schema.exclusiveMinimum !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.gtValue,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMinimum }),\n ],\n });\n pipes.push(expression);\n } else if (schema.minimum !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.minValue,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.minimum })],\n });\n pipes.push(expression);\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.ltValue,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMaximum }),\n ],\n });\n pipes.push(expression);\n } else if (schema.maximum !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.maxValue,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.maximum })],\n });\n pipes.push(expression);\n }\n\n return pipesToExpression(pipes);\n};\n\nconst objectTypeToValibotSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ValibotPlugin['Instance'];\n schema: SchemaWithType<'object'>;\n state: State;\n}): {\n anyType: string;\n expression: ts.CallExpression;\n} => {\n // TODO: parser - handle constants\n const properties: Array<ts.PropertyAssignment> = [];\n\n const required = schema.required ?? [];\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n const isRequired = required.includes(name);\n\n const schemaPipes = schemaToValibotSchema({\n optional: !isRequired,\n plugin,\n schema: property,\n state,\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 tsc.propertyAssignment({\n initializer: pipesToExpression(schemaPipes),\n name: propertyName,\n }),\n );\n }\n\n if (\n schema.additionalProperties &&\n schema.additionalProperties.type === 'object' &&\n !Object.keys(properties).length\n ) {\n const pipes = schemaToValibotSchema({\n plugin,\n schema: schema.additionalProperties,\n state,\n });\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.record,\n }),\n parameters: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.string,\n }),\n parameters: [],\n }),\n pipesToExpression(pipes),\n ],\n });\n return {\n anyType: 'AnyZodObject',\n expression,\n };\n }\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.object,\n }),\n parameters: [ts.factory.createObjectLiteralExpression(properties, true)],\n });\n return {\n // Zod uses AnyZodObject here, maybe we want to be more specific too\n anyType: identifiers.types.GenericSchema.text,\n expression,\n };\n};\n\nconst stringTypeToValibotSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'string'>;\n}) => {\n if (typeof schema.const === 'string') {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [tsc.ots.string(schema.const)],\n });\n return expression;\n }\n\n const pipes: Array<ts.CallExpression> = [];\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.string,\n }),\n });\n pipes.push(expression);\n\n if (schema.format) {\n switch (schema.format) {\n case 'date':\n pipes.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.isoDate,\n }),\n }),\n );\n break;\n case 'date-time':\n pipes.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.isoTimestamp,\n }),\n }),\n );\n break;\n case 'ipv4':\n case 'ipv6':\n pipes.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.ip,\n }),\n }),\n );\n break;\n case 'uri':\n pipes.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.url,\n }),\n }),\n );\n break;\n case 'email':\n case 'time':\n case 'uuid':\n pipes.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: tsc.identifier({ text: schema.format }),\n }),\n }),\n );\n break;\n }\n }\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n });\n pipes.push(expression);\n } else {\n if (schema.minLength !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.minLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n });\n pipes.push(expression);\n }\n\n if (schema.maxLength !== undefined) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.maxLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxLength })],\n });\n pipes.push(expression);\n }\n }\n\n if (schema.pattern) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.regex,\n }),\n parameters: [tsc.regularExpressionLiteral({ text: schema.pattern })],\n });\n pipes.push(expression);\n }\n\n return pipesToExpression(pipes);\n};\n\nconst tupleTypeToValibotSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ValibotPlugin['Instance'];\n schema: SchemaWithType<'tuple'>;\n state: State;\n}) => {\n if (schema.const && Array.isArray(schema.const)) {\n const tupleElements = schema.const.map((value) =>\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [tsc.valueToExpression({ value })],\n }),\n );\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n }\n\n if (schema.items) {\n const tupleElements = schema.items.map((item) => {\n const schemaPipes = schemaToValibotSchema({\n plugin,\n schema: item,\n state,\n });\n return pipesToExpression(schemaPipes);\n });\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n }\n\n return unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n });\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst undefinedTypeToValibotSchema = (_props: {\n schema: SchemaWithType<'undefined'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.undefined,\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unknownTypeToValibotSchema = (_props: {\n schema: SchemaWithType<'unknown'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.unknown,\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst voidTypeToValibotSchema = (_props: {\n schema: SchemaWithType<'void'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.void,\n }),\n });\n return expression;\n};\n\nconst schemaTypeToValibotSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ValibotPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\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: arrayTypeToValibotSchema({\n plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n }),\n };\n case 'boolean':\n return {\n expression: booleanTypeToValibotSchema({\n schema: schema as SchemaWithType<'boolean'>,\n }),\n };\n case 'enum':\n return {\n expression: enumTypeToValibotSchema({\n schema: schema as SchemaWithType<'enum'>,\n }),\n };\n case 'integer':\n case 'number':\n return {\n expression: numberTypeToValibotSchema({\n schema: schema as SchemaWithType<'integer' | 'number'>,\n }),\n };\n case 'never':\n return {\n expression: neverTypeToValibotSchema({\n schema: schema as SchemaWithType<'never'>,\n }),\n };\n case 'null':\n return {\n expression: nullTypeToValibotSchema({\n schema: schema as SchemaWithType<'null'>,\n }),\n };\n case 'object':\n return objectTypeToValibotSchema({\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n // For string schemas with int64/uint64 formats, use number handler to generate union with transform\n if (schema.format === 'int64' || schema.format === 'uint64') {\n return {\n expression: numberTypeToValibotSchema({\n schema: schema as SchemaWithType<'integer' | 'number'>,\n }),\n };\n }\n return {\n expression: stringTypeToValibotSchema({\n schema: schema as SchemaWithType<'string'>,\n }),\n };\n case 'tuple':\n return {\n expression: tupleTypeToValibotSchema({\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n }),\n };\n case 'undefined':\n return {\n expression: undefinedTypeToValibotSchema({\n schema: schema as SchemaWithType<'undefined'>,\n }),\n };\n case 'unknown':\n return {\n expression: unknownTypeToValibotSchema({\n schema: schema as SchemaWithType<'unknown'>,\n }),\n };\n case 'void':\n return {\n expression: voidTypeToValibotSchema({\n schema: schema as SchemaWithType<'void'>,\n }),\n };\n }\n};\n\nexport const schemaToValibotSchema = ({\n $ref,\n identifier: _identifier,\n optional,\n plugin,\n schema,\n state,\n}: {\n /**\n * When $ref is supplied, a node will be emitted to the file.\n */\n $ref?: string;\n identifier?: Identifier;\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 plugin: ValibotPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): Array<ts.Expression> => {\n const file = plugin.context.file({ id: valibotId })!;\n\n let anyType: string | undefined;\n let identifier: ReturnType<typeof file.identifier> | undefined = _identifier;\n let pipes: Array<ts.Expression> = [];\n\n if ($ref) {\n state.circularReferenceTracker.add($ref);\n\n if (!identifier) {\n identifier = file.identifier({\n $ref,\n case: state.nameCase,\n create: true,\n nameTransformer: state.nameTransformer,\n namespace: 'value',\n });\n }\n }\n\n if (schema.$ref) {\n const isCircularReference = state.circularReferenceTracker.has(schema.$ref);\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 case: state.nameCase,\n nameTransformer: state.nameTransformer,\n namespace: 'value',\n });\n\n if (!identifierRef.name) {\n const ref = plugin.context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n const schemaPipes = schemaToValibotSchema({\n $ref: schema.$ref,\n plugin,\n schema: ref,\n state,\n });\n pipes.push(...schemaPipes);\n\n identifierRef = file.identifier({\n $ref: schema.$ref,\n case: state.nameCase,\n nameTransformer: state.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 = tsc.identifier({ text: identifierRef.name });\n if (isCircularReference) {\n const lazyExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.lazy,\n }),\n parameters: [\n tsc.arrowFunction({\n statements: [\n tsc.returnStatement({\n expression: refIdentifier,\n }),\n ],\n }),\n ],\n });\n pipes.push(lazyExpression);\n state.hasCircularReference = true;\n } else {\n pipes.push(refIdentifier);\n }\n }\n } else if (schema.type) {\n const valibotSchema = schemaTypeToValibotSchema({ plugin, schema, state });\n anyType = valibotSchema.anyType;\n pipes.push(valibotSchema.expression);\n\n if (plugin.config.metadata && schema.description) {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.metadata,\n }),\n parameters: [\n tsc.objectExpression({\n obj: [\n {\n key: 'description',\n value: tsc.stringLiteral({ text: schema.description }),\n },\n ],\n }),\n ],\n });\n pipes.push(expression);\n }\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n\n if (schema.items) {\n const itemTypes = schema.items.map((item) => {\n const schemaPipes = schemaToValibotSchema({\n plugin,\n schema: item,\n state,\n });\n return pipesToExpression(schemaPipes);\n });\n\n if (schema.logicalOperator === 'and') {\n const intersectExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.intersect,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n pipes.push(intersectExpression);\n } else {\n const unionExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n pipes.push(unionExpression);\n }\n } else {\n const schemaPipes = schemaToValibotSchema({\n plugin,\n schema,\n state,\n });\n pipes.push(...schemaPipes);\n }\n } else {\n // catch-all fallback for failed schemas\n const valibotSchema = schemaTypeToValibotSchema({\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n anyType = valibotSchema.anyType;\n pipes.push(valibotSchema.expression);\n }\n\n if ($ref) {\n state.circularReferenceTracker.delete($ref);\n }\n\n if (pipes.length) {\n if (schema.accessScope === 'read') {\n const readonlyExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.readonly,\n }),\n });\n pipes.push(readonlyExpression);\n }\n }\n\n if (pipes.length) {\n let callParameter: ts.Expression | undefined;\n\n if (schema.default !== undefined) {\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n callParameter = numberParameter({ isBigInt, value: schema.default });\n if (callParameter) {\n pipes = [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.optional,\n }),\n parameters: [pipesToExpression(pipes), callParameter],\n }),\n ];\n }\n }\n\n if (optional && !callParameter) {\n pipes = [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.optional,\n }),\n parameters: [pipesToExpression(pipes)],\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 = tsc.constVariable({\n comment: plugin.config.comments\n ? createSchemaComment({ schema })\n : undefined,\n exportConst: true,\n expression: pipesToExpression(pipes),\n name: identifier.name,\n typeName: state.hasCircularReference\n ? (tsc.propertyAccessExpression({\n expression: identifiers.v,\n name: anyType || identifiers.types.GenericSchema.text,\n }) as unknown as ts.TypeNode)\n : undefined,\n });\n file.add(statement);\n\n return [];\n }\n\n return pipes;\n};\n\nexport const handler: ValibotPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n case: plugin.config.case,\n id: valibotId,\n path: plugin.output,\n });\n\n file.import({\n alias: identifiers.v.text,\n module: 'valibot',\n name: '*',\n });\n\n plugin.forEach(\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'webhook',\n (event) => {\n const state: State = {\n circularReferenceTracker: new Set(),\n hasCircularReference: false,\n nameCase: plugin.config.definitions.case,\n nameTransformer: plugin.config.definitions.name,\n };\n\n if (event.type === 'operation') {\n operationToValibotSchema({\n operation: event.operation,\n plugin,\n state,\n });\n } else if (event.type === 'parameter') {\n schemaToValibotSchema({\n $ref: event.$ref,\n plugin,\n schema: event.parameter.schema,\n state,\n });\n } else if (event.type === 'requestBody') {\n schemaToValibotSchema({\n $ref: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n state,\n });\n } else if (event.type === 'schema') {\n schemaToValibotSchema({\n $ref: event.$ref,\n plugin,\n schema: event.schema,\n state,\n });\n } else if (event.type === 'webhook') {\n webhookToValibotSchema({\n operation: event.operation,\n plugin,\n state,\n });\n }\n },\n );\n};\n","import { definePluginConfig } from '../shared/utils/config';\nimport { api } from './api';\nimport { handler } from './plugin';\nimport type { ValibotPlugin } from './types';\n\nexport const defaultConfig: ValibotPlugin['Config'] = {\n api,\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n metadata: false,\n },\n handler,\n name: 'valibot',\n output: 'valibot',\n resolveConfig: (plugin, context) => {\n plugin.config.definitions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'v{{name}}',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.definitions,\n });\n\n plugin.config.requests = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'v{{name}}Data',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.requests,\n });\n\n plugin.config.responses = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'v{{name}}Response',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.responses,\n });\n\n plugin.config.webhooks = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'v{{name}}WebhookRequest',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n function: (name) => ({ name }),\n string: (name) => ({ name }),\n },\n value: plugin.config.webhooks,\n });\n },\n tags: ['validator'],\n};\n\n/**\n * Type helper for Valibot plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import { tsc } from '../../tsc';\n\nexport const identifiers = {\n ZodMiniOptional: tsc.identifier({ text: 'ZodMiniOptional' }),\n ZodOptional: tsc.identifier({ text: 'ZodOptional' }),\n _default: tsc.identifier({ text: '_default' }),\n and: tsc.identifier({ text: 'and' }),\n array: tsc.identifier({ text: 'array' }),\n bigint: tsc.identifier({ text: 'bigint' }),\n boolean: tsc.identifier({ text: 'boolean' }),\n check: tsc.identifier({ text: 'check' }),\n coerce: tsc.identifier({ text: 'coerce' }),\n date: tsc.identifier({ text: 'date' }),\n datetime: tsc.identifier({ text: 'datetime' }),\n default: tsc.identifier({ text: 'default' }),\n describe: tsc.identifier({ text: 'describe' }),\n email: tsc.identifier({ text: 'email' }),\n enum: tsc.identifier({ text: 'enum' }),\n globalRegistry: tsc.identifier({ text: 'globalRegistry' }),\n gt: tsc.identifier({ text: 'gt' }),\n gte: tsc.identifier({ text: 'gte' }),\n infer: tsc.identifier({ text: 'infer' }),\n int: tsc.identifier({ text: 'int' }),\n intersection: tsc.identifier({ text: 'intersection' }),\n ip: tsc.identifier({ text: 'ip' }),\n ipv4: tsc.identifier({ text: 'ipv4' }),\n ipv6: tsc.identifier({ text: 'ipv6' }),\n iso: tsc.identifier({ text: 'iso' }),\n lazy: tsc.identifier({ text: 'lazy' }),\n length: tsc.identifier({ text: 'length' }),\n literal: tsc.identifier({ text: 'literal' }),\n lt: tsc.identifier({ text: 'lt' }),\n lte: tsc.identifier({ text: 'lte' }),\n max: tsc.identifier({ text: 'max' }),\n maxLength: tsc.identifier({ text: 'maxLength' }),\n min: tsc.identifier({ text: 'min' }),\n minLength: tsc.identifier({ text: 'minLength' }),\n never: tsc.identifier({ text: 'never' }),\n null: tsc.identifier({ text: 'null' }),\n nullable: tsc.identifier({ text: 'nullable' }),\n number: tsc.identifier({ text: 'number' }),\n object: tsc.identifier({ text: 'object' }),\n optional: tsc.identifier({ text: 'optional' }),\n parseAsync: tsc.identifier({ text: 'parseAsync' }),\n readonly: tsc.identifier({ text: 'readonly' }),\n record: tsc.identifier({ text: 'record' }),\n regex: tsc.identifier({ text: 'regex' }),\n register: tsc.identifier({ text: 'register' }),\n string: tsc.identifier({ text: 'string' }),\n time: tsc.identifier({ text: 'time' }),\n tuple: tsc.identifier({ text: 'tuple' }),\n undefined: tsc.identifier({ text: 'undefined' }),\n union: tsc.identifier({ text: 'union' }),\n unknown: tsc.identifier({ text: 'unknown' }),\n url: tsc.identifier({ text: 'url' }),\n uuid: tsc.identifier({ text: 'uuid' }),\n void: tsc.identifier({ text: 'void' }),\n z: tsc.identifier({ text: 'z' }),\n};\n\nexport const zodId = 'zod';\n","import type ts from 'typescript';\n\nimport type { GeneratedFile } from '../../generate/file';\nimport type { IR } from '../../ir/types';\nimport { tsc } from '../../tsc';\nimport { identifiers, zodId } from './constants';\nimport type { ZodPlugin } from './types';\n\nconst createRequestValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n}): ts.ArrowFunction | undefined => {\n const zodFile = plugin.context.file({ id: zodId })!;\n const name = zodFile.getName(plugin.api.getId({ operation, type: 'data' }));\n if (!name) return;\n\n file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: zodId,\n }),\n name,\n });\n\n const dataParameterName = 'data';\n\n return tsc.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n tsc.returnStatement({\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: name }),\n name: identifiers.parseAsync,\n }),\n parameters: [tsc.identifier({ text: dataParameterName })],\n }),\n }),\n }),\n ],\n });\n};\n\nconst createResponseValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n}): ts.ArrowFunction | undefined => {\n const zodFile = plugin.context.file({ id: zodId })!;\n const name = zodFile.getName(\n plugin.api.getId({ operation, type: 'responses' }),\n );\n if (!name) return;\n\n file.import({\n module: file.relativePathToFile({\n context: plugin.context,\n id: zodId,\n }),\n name,\n });\n\n const dataParameterName = 'data';\n\n return tsc.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n tsc.returnStatement({\n expression: tsc.awaitExpression({\n expression: tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.identifier({ text: name }),\n name: identifiers.parseAsync,\n }),\n parameters: [tsc.identifier({ text: dataParameterName })],\n }),\n }),\n }),\n ],\n });\n};\n\ntype GetIdArgs =\n | {\n operation: IR.OperationObject;\n type:\n | 'data'\n | 'responses'\n | 'type-infer-data'\n | 'type-infer-responses'\n | 'type-infer-webhook-request'\n | 'webhook-request';\n }\n | {\n type: 'ref' | 'type-infer-ref';\n value: string;\n };\n\nconst getId = (args: GetIdArgs): string => {\n switch (args.type) {\n case 'data':\n case 'responses':\n case 'type-infer-data':\n case 'type-infer-responses':\n case 'type-infer-webhook-request':\n case 'webhook-request':\n return `${args.operation.id}-${args.type}`;\n case 'ref':\n case 'type-infer-ref':\n default:\n return `${args.type}-${args.value}`;\n }\n};\n\nexport type Api = {\n createRequestValidator: (args: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n createResponseValidator: (args: {\n file: GeneratedFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n getId: (args: GetIdArgs) => string;\n};\n\nexport const api: Api = {\n createRequestValidator,\n createResponseValidator,\n getId,\n};\n","import ts from 'typescript';\n\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { refToName } from '../../../utils/ref';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { identifiers, zodId } from '../constants';\nimport { exportZodSchema } from '../export';\nimport { getZodModule } from '../shared/module';\nimport { operationToZodSchema } from '../shared/operation';\nimport type { SchemaWithType, State, ZodSchema } from '../shared/types';\nimport { webhookToZodSchema } from '../shared/webhook';\nimport type { ZodPlugin } from '../types';\n\nconst arrayTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'array'>;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n const functionName = tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.array,\n });\n\n if (!schema.items) {\n result.expression = tsc.callExpression({\n functionName,\n parameters: [\n unknownTypeToZodSchema({\n schema: {\n type: 'unknown',\n },\n }).expression,\n ],\n });\n } else {\n schema = deduplicateSchema({ schema });\n\n // at least one item is guaranteed\n const itemExpressions = schema.items!.map((item) => {\n const zodSchema = schemaToZodSchema({\n plugin,\n schema: item,\n state,\n });\n if (zodSchema.hasCircularReference) {\n result.hasCircularReference = true;\n }\n return zodSchema.expression;\n });\n\n if (itemExpressions.length === 1) {\n result.expression = tsc.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return tsc.typeArrayNode(\n // tsc.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.array,\n }),\n parameters: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemExpressions,\n }),\n ],\n }),\n ],\n });\n }\n }\n\n const checks: Array<ts.Expression> = [];\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n }),\n );\n } else {\n if (schema.minItems !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.minLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n }),\n );\n }\n\n if (schema.maxItems !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.maxLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxItems })],\n }),\n );\n }\n }\n\n if (checks.length) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.check,\n }),\n parameters: checks,\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst booleanTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n if (typeof schema.const === 'boolean') {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.boolean(schema.const)],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.boolean,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst enumTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'enum'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\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 tsc.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 schema: {\n type: 'unknown',\n },\n });\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.enum,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.nullable,\n }),\n parameters: [result.expression],\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst neverTypeToZodSchema = (_props: {\n schema: SchemaWithType<'never'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.never,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst nullTypeToZodSchema = (_props: {\n schema: SchemaWithType<'null'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.null,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst numberParameter = ({\n isBigInt,\n value,\n}: {\n isBigInt: boolean;\n value: unknown;\n}): ts.Expression | undefined => {\n const expression = tsc.valueToExpression({ value });\n\n if (\n isBigInt &&\n (typeof value === 'bigint' ||\n typeof value === 'number' ||\n typeof value === 'string' ||\n typeof value === 'boolean')\n ) {\n return tsc.callExpression({\n functionName: 'BigInt',\n parameters: [expression],\n });\n }\n\n return expression;\n};\n\nconst numberTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'integer' | 'number'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n\n if (typeof schema.const === 'number') {\n // TODO: parser - handle bigint constants\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.number(schema.const)],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: isBigInt\n ? tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.coerce,\n }),\n name: identifiers.bigint,\n })\n : tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.number,\n }),\n });\n\n if (!isBigInt && schema.type === 'integer') {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.int,\n }),\n });\n }\n\n const checks: Array<ts.Expression> = [];\n\n if (schema.exclusiveMinimum !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.gt,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMinimum }),\n ],\n }),\n );\n } else if (schema.minimum !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.gte,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.minimum })],\n }),\n );\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.lt,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMaximum }),\n ],\n }),\n );\n } else if (schema.maximum !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.lte,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.maximum })],\n }),\n );\n }\n\n if (checks.length) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.check,\n }),\n parameters: checks,\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst objectTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'object'>;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n // TODO: parser - handle constants\n const properties: Array<ts.PropertyAssignment | ts.GetAccessorDeclaration> =\n [];\n\n const required = schema.required ?? [];\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n const isRequired = required.includes(name);\n\n const propertySchema = schemaToZodSchema({\n optional: !isRequired,\n plugin,\n schema: property,\n state,\n });\n if (propertySchema.hasCircularReference) {\n result.hasCircularReference = true;\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\n if (propertySchema.hasCircularReference) {\n properties.push(\n tsc.getAccessorDeclaration({\n name: propertyName,\n // @ts-expect-error\n returnType: propertySchema.typeName\n ? tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: propertySchema.typeName,\n })\n : undefined,\n statements: [\n tsc.returnStatement({\n expression: propertySchema.expression,\n }),\n ],\n }),\n );\n } else {\n properties.push(\n tsc.propertyAssignment({\n initializer: propertySchema.expression,\n name: propertyName,\n }),\n );\n }\n }\n\n if (\n schema.additionalProperties &&\n (!schema.properties || !Object.keys(schema.properties).length)\n ) {\n const zodSchema = schemaToZodSchema({\n plugin,\n schema: schema.additionalProperties,\n state,\n });\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.record,\n }),\n parameters: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.string,\n }),\n parameters: [],\n }),\n zodSchema.expression,\n ],\n });\n if (zodSchema.hasCircularReference) {\n result.hasCircularReference = true;\n }\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.object,\n }),\n parameters: [ts.factory.createObjectLiteralExpression(properties, true)],\n });\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst stringTypeToZodSchema = ({\n plugin,\n schema,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'string'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n if (typeof schema.const === 'string') {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.string(schema.const)],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.string,\n }),\n });\n\n const dateTimeOptions: { key: string; value: boolean }[] = [];\n\n if (plugin.config.dates.offset) {\n dateTimeOptions.push({ key: 'offset', value: true });\n }\n if (plugin.config.dates.local) {\n dateTimeOptions.push({ key: 'local', value: true });\n }\n\n if (schema.format) {\n switch (schema.format) {\n case 'date':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.iso,\n }),\n name: identifiers.date,\n }),\n });\n break;\n case 'date-time':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.iso,\n }),\n name: identifiers.datetime,\n }),\n parameters:\n dateTimeOptions.length > 0\n ? [\n tsc.objectExpression({\n obj: dateTimeOptions,\n }),\n ]\n : [],\n });\n break;\n case 'email':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.email,\n }),\n });\n break;\n case 'ipv4':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.ipv4,\n }),\n });\n break;\n case 'ipv6':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.ipv6,\n }),\n });\n break;\n case 'time':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.iso,\n }),\n name: identifiers.time,\n }),\n });\n break;\n case 'uri':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.url,\n }),\n });\n break;\n case 'uuid':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.uuid,\n }),\n });\n break;\n }\n }\n\n const checks: Array<ts.Expression> = [];\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n }),\n );\n } else {\n if (schema.minLength !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.minLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n }),\n );\n }\n\n if (schema.maxLength !== undefined) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.maxLength,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxLength })],\n }),\n );\n }\n }\n\n if (schema.pattern) {\n checks.push(\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.regex,\n }),\n parameters: [tsc.regularExpressionLiteral({ text: schema.pattern })],\n }),\n );\n }\n\n if (checks.length) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.check,\n }),\n parameters: checks,\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst tupleTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'tuple'>;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n if (schema.const && Array.isArray(schema.const)) {\n const tupleElements = schema.const.map((value) =>\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.valueToExpression({ value })],\n }),\n );\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n const tupleElements: Array<ts.Expression> = [];\n\n for (const item of schema.items ?? []) {\n const itemSchema = schemaToZodSchema({\n plugin,\n schema: item,\n state,\n });\n tupleElements.push(itemSchema.expression);\n\n if (itemSchema.hasCircularReference) {\n result.hasCircularReference = true;\n }\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst undefinedTypeToZodSchema = (_props: {\n schema: SchemaWithType<'undefined'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.undefined,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unknownTypeToZodSchema = (_props: {\n schema: SchemaWithType<'unknown'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.unknown,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst voidTypeToZodSchema = (_props: {\n schema: SchemaWithType<'void'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.void,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst schemaTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n switch (schema.type as Required<IR.SchemaObject>['type']) {\n case 'array':\n return arrayTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n });\n case 'boolean':\n return booleanTypeToZodSchema({\n schema: schema as SchemaWithType<'boolean'>,\n });\n case 'enum':\n return enumTypeToZodSchema({\n schema: schema as SchemaWithType<'enum'>,\n });\n case 'integer':\n case 'number':\n return numberTypeToZodSchema({\n schema: schema as SchemaWithType<'integer' | 'number'>,\n });\n case 'never':\n return neverTypeToZodSchema({\n schema: schema as SchemaWithType<'never'>,\n });\n case 'null':\n return nullTypeToZodSchema({\n schema: schema as SchemaWithType<'null'>,\n });\n case 'object':\n return objectTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n return stringTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'string'>,\n });\n case 'tuple':\n return tupleTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n });\n case 'undefined':\n return undefinedTypeToZodSchema({\n schema: schema as SchemaWithType<'undefined'>,\n });\n case 'unknown':\n return unknownTypeToZodSchema({\n schema: schema as SchemaWithType<'unknown'>,\n });\n case 'void':\n return voidTypeToZodSchema({\n schema: schema as SchemaWithType<'void'>,\n });\n }\n};\n\nconst schemaToZodSchema = ({\n optional,\n plugin,\n schema,\n state,\n}: {\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 plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): ZodSchema => {\n const file = plugin.context.file({ id: zodId })!;\n\n let zodSchema: Partial<ZodSchema> = {};\n\n if (schema.$ref) {\n const isCircularReference = state.circularReferenceTracker.includes(\n schema.$ref,\n );\n const isSelfReference = state.currentReferenceTracker.includes(schema.$ref);\n state.circularReferenceTracker.push(schema.$ref);\n state.currentReferenceTracker.push(schema.$ref);\n\n const id = plugin.api.getId({ type: 'ref', value: schema.$ref });\n\n if (isCircularReference) {\n const expression = file.addNodeReference(id, {\n factory: (text) => tsc.identifier({ text }),\n });\n if (isSelfReference) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.lazy,\n }),\n parameters: [\n tsc.arrowFunction({\n returnType: tsc.keywordTypeNode({ keyword: 'any' }),\n statements: [tsc.returnStatement({ expression })],\n }),\n ],\n });\n } else {\n zodSchema.expression = expression;\n }\n zodSchema.hasCircularReference = true;\n } else if (!file.getName(id)) {\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 const ref = plugin.context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n handleComponent({\n id: schema.$ref,\n plugin,\n schema: ref,\n state,\n });\n }\n\n if (!isCircularReference) {\n const expression = file.addNodeReference(id, {\n factory: (text) => tsc.identifier({ text }),\n });\n zodSchema.expression = expression;\n }\n\n state.circularReferenceTracker.pop();\n state.currentReferenceTracker.pop();\n } else if (schema.type) {\n const zSchema = schemaTypeToZodSchema({ plugin, schema, state });\n zodSchema.expression = zSchema.expression;\n zodSchema.hasCircularReference = zSchema.hasCircularReference;\n\n if (plugin.config.metadata && schema.description) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.register,\n }),\n parameters: [\n tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.globalRegistry,\n }),\n tsc.objectExpression({\n obj: [\n {\n key: 'description',\n value: tsc.stringLiteral({ text: schema.description }),\n },\n ],\n }),\n ],\n });\n }\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n\n if (schema.items) {\n const itemTypes = schema.items.map(\n (item) =>\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }).expression,\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 zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.intersection,\n }),\n parameters: itemTypes,\n });\n } else {\n zodSchema.expression = itemTypes[0];\n itemTypes.slice(1).forEach((item) => {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.intersection,\n }),\n parameters: [zodSchema.expression, item],\n });\n });\n }\n } else {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n }\n } else {\n zodSchema = schemaToZodSchema({ plugin, schema, state });\n }\n } else {\n // catch-all fallback for failed schemas\n const zSchema = schemaTypeToZodSchema({\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n zodSchema.expression = zSchema.expression;\n }\n\n if (zodSchema.expression) {\n if (schema.accessScope === 'read') {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.readonly,\n }),\n parameters: [zodSchema.expression],\n });\n }\n\n if (optional) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.optional,\n }),\n parameters: [zodSchema.expression],\n });\n zodSchema.typeName = identifiers.ZodMiniOptional;\n }\n\n if (schema.default !== undefined) {\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n const callParameter = numberParameter({\n isBigInt,\n value: schema.default,\n });\n if (callParameter) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers._default,\n }),\n parameters: [zodSchema.expression, callParameter],\n });\n }\n }\n }\n\n return zodSchema as ZodSchema;\n};\n\nconst handleComponent = ({\n id,\n plugin,\n schema,\n state: _state,\n}: {\n id: string;\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state?: Omit<State, 'currentReferenceTracker'>;\n}): void => {\n const state: State = {\n circularReferenceTracker: [id],\n hasCircularReference: false,\n ..._state,\n currentReferenceTracker: [id],\n };\n\n const file = plugin.context.file({ id: zodId })!;\n const schemaId = plugin.api.getId({ type: 'ref', value: id });\n\n if (file.getName(schemaId)) return;\n\n const zodSchema = schemaToZodSchema({ plugin, schema, state });\n const typeInferId = plugin.config.definitions.types.infer.enabled\n ? plugin.api.getId({ type: 'type-infer-ref', value: id })\n : undefined;\n exportZodSchema({\n plugin,\n schema,\n schemaId,\n typeInferId,\n zodSchema,\n });\n const baseName = refToName(id);\n file.updateNodeReferences(\n schemaId,\n buildName({\n config: plugin.config.definitions,\n name: baseName,\n }),\n );\n if (typeInferId) {\n file.updateNodeReferences(\n typeInferId,\n buildName({\n config: plugin.config.definitions.types.infer,\n name: baseName,\n }),\n );\n }\n};\n\nexport const handlerMini: ZodPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n case: plugin.config.case,\n id: zodId,\n path: plugin.output,\n });\n\n file.import({\n alias: identifiers.z.text,\n module: getZodModule({ plugin }),\n name: '*',\n });\n\n plugin.forEach(\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'webhook',\n (event) => {\n if (event.type === 'operation') {\n operationToZodSchema({\n getZodSchema: (schema) => {\n const state: State = {\n circularReferenceTracker: [],\n currentReferenceTracker: [],\n hasCircularReference: false,\n };\n return schemaToZodSchema({ plugin, schema, state });\n },\n operation: event.operation,\n plugin,\n });\n } else if (event.type === 'parameter') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.parameter.schema,\n });\n } else if (event.type === 'requestBody') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n });\n } else if (event.type === 'schema') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.schema,\n });\n } else if (event.type === 'webhook') {\n webhookToZodSchema({\n getZodSchema: (schema) => {\n const state: State = {\n circularReferenceTracker: [],\n currentReferenceTracker: [],\n hasCircularReference: false,\n };\n return schemaToZodSchema({ plugin, schema, state });\n },\n operation: event.operation,\n plugin,\n });\n }\n },\n );\n};\n","import type ts from 'typescript';\n\nimport type { IR } from '../../ir/types';\nimport { tsc } from '../../tsc';\nimport { createSchemaComment } from '../shared/utils/schema';\nimport { identifiers, zodId } from './constants';\nimport type { ZodSchema } from './shared/types';\nimport type { ZodPlugin } from './types';\n\nexport const exportZodSchema = ({\n plugin,\n schema,\n schemaId,\n typeInferId,\n zodSchema,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n schemaId: string;\n typeInferId: string | undefined;\n zodSchema: ZodSchema;\n}) => {\n const file = plugin.context.file({ id: zodId })!;\n const node = file.addNodeReference(schemaId, {\n factory: (typeName) => tsc.typeReferenceNode({ typeName }),\n });\n const statement = tsc.constVariable({\n comment: plugin.config.comments\n ? createSchemaComment({ schema })\n : undefined,\n exportConst: true,\n expression: zodSchema.expression,\n name: node,\n typeName: zodSchema.typeName\n ? (tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: zodSchema.typeName,\n }) as unknown as ts.TypeNode)\n : undefined,\n });\n file.add(statement);\n\n if (typeInferId) {\n const inferNode = file.addNodeReference(typeInferId, {\n factory: (typeName) => tsc.typeReferenceNode({ typeName }),\n });\n const nodeIdentifier = file.addNodeReference(schemaId, {\n factory: (text) => tsc.identifier({ text }),\n });\n const inferType = tsc.typeAliasDeclaration({\n exportType: true,\n name: inferNode,\n type: tsc.typeReferenceNode({\n typeArguments: [\n tsc.typeOfExpression({\n text: nodeIdentifier,\n }) as unknown as ts.TypeNode,\n ],\n typeName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.infer,\n }) as unknown as string,\n }),\n });\n file.add(inferType);\n }\n};\n","import type { ZodPlugin } from '../types';\n\nexport const getZodModule = ({\n plugin,\n}: {\n plugin: ZodPlugin['Instance'];\n}): string => {\n const version = plugin.package.getVersion('zod');\n\n if (version) {\n if (plugin.package.satisfies(version, '<4.0.0')) {\n switch (plugin.config.compatibilityVersion) {\n case 3:\n default:\n return 'zod';\n case 4:\n return 'zod/v4';\n case 'mini':\n return 'zod/v4-mini';\n }\n }\n }\n\n switch (plugin.config.compatibilityVersion) {\n case 3:\n return 'zod/v3';\n case 4:\n default:\n return 'zod';\n case 'mini':\n return 'zod/mini';\n }\n};\n","import { operationResponsesMap } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { zodId } from '../constants';\nimport { exportZodSchema } from '../export';\nimport type { ZodPlugin } from '../types';\nimport type { ZodSchema } from './types';\n\nexport const operationToZodSchema = ({\n getZodSchema,\n operation,\n plugin,\n}: {\n getZodSchema: (schema: IR.SchemaObject) => ZodSchema;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n}) => {\n const file = plugin.context.file({ id: zodId })!;\n\n if (plugin.config.requests.enabled) {\n const requiredProperties = new Set<string>();\n\n const schemaData: IR.SchemaObject = {\n properties: {\n body: {\n type: 'never',\n },\n path: {\n type: 'never',\n },\n query: {\n type: 'never',\n },\n },\n type: 'object',\n };\n\n if (operation.parameters) {\n // TODO: add support for cookies\n\n if (operation.parameters.header) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.header) {\n const parameter = operation.parameters.header[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('headers');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.headers = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.path) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.path) {\n const parameter = operation.parameters.path[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('path');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.path = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.query) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.query) {\n const parameter = operation.parameters.query[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('query');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.query = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n }\n\n if (operation.body) {\n schemaData.properties!.body = operation.body.schema;\n\n if (operation.body.required) {\n requiredProperties.add('body');\n }\n }\n\n schemaData.required = [...requiredProperties];\n\n const zodSchema = getZodSchema(schemaData);\n const schemaId = plugin.api.getId({ operation, type: 'data' });\n const typeInferId = plugin.config.requests.types.infer.enabled\n ? plugin.api.getId({ operation, type: 'type-infer-data' })\n : undefined;\n exportZodSchema({\n plugin,\n schema: schemaData,\n schemaId,\n typeInferId,\n zodSchema,\n });\n file.updateNodeReferences(\n schemaId,\n buildName({\n config: plugin.config.requests,\n name: operation.id,\n }),\n );\n if (typeInferId) {\n file.updateNodeReferences(\n typeInferId,\n buildName({\n config: plugin.config.requests.types.infer,\n name: operation.id,\n }),\n );\n }\n }\n\n if (plugin.config.responses.enabled) {\n if (operation.responses) {\n const { response } = operationResponsesMap(operation);\n\n if (response) {\n const zodSchema = getZodSchema(response);\n const schemaId = plugin.api.getId({ operation, type: 'responses' });\n const typeInferId = plugin.config.responses.types.infer.enabled\n ? plugin.api.getId({ operation, type: 'type-infer-responses' })\n : undefined;\n exportZodSchema({\n plugin,\n schema: response,\n schemaId,\n typeInferId,\n zodSchema,\n });\n file.updateNodeReferences(\n schemaId,\n buildName({\n config: plugin.config.responses,\n name: operation.id,\n }),\n );\n if (typeInferId) {\n file.updateNodeReferences(\n typeInferId,\n buildName({\n config: plugin.config.responses.types.infer,\n name: operation.id,\n }),\n );\n }\n }\n }\n }\n};\n","import type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { zodId } from '../constants';\nimport { exportZodSchema } from '../export';\nimport type { ZodPlugin } from '../types';\nimport type { ZodSchema } from './types';\n\nexport const webhookToZodSchema = ({\n getZodSchema,\n operation,\n plugin,\n}: {\n getZodSchema: (schema: IR.SchemaObject) => ZodSchema;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n}) => {\n const file = plugin.context.file({ id: zodId })!;\n\n if (plugin.config.webhooks.enabled) {\n const requiredProperties = new Set<string>();\n\n const schemaData: IR.SchemaObject = {\n properties: {\n body: {\n type: 'never',\n },\n path: {\n type: 'never',\n },\n query: {\n type: 'never',\n },\n },\n type: 'object',\n };\n\n if (operation.parameters) {\n // TODO: add support for cookies\n\n if (operation.parameters.header) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.header) {\n const parameter = operation.parameters.header[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('headers');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.headers = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.path) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.path) {\n const parameter = operation.parameters.path[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('path');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.path = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n\n if (operation.parameters.query) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const key in operation.parameters.query) {\n const parameter = operation.parameters.query[key]!;\n properties[parameter.name] = parameter.schema;\n if (parameter.required) {\n required.push(parameter.name);\n requiredProperties.add('query');\n }\n }\n\n if (Object.keys(properties).length) {\n schemaData.properties!.query = {\n properties,\n required,\n type: 'object',\n };\n }\n }\n }\n\n if (operation.body) {\n schemaData.properties!.body = operation.body.schema;\n\n if (operation.body.required) {\n requiredProperties.add('body');\n }\n }\n\n schemaData.required = [...requiredProperties];\n\n const zodSchema = getZodSchema(schemaData);\n const schemaId = plugin.api.getId({ operation, type: 'webhook-request' });\n const typeInferId = plugin.config.webhooks.types.infer.enabled\n ? plugin.api.getId({ operation, type: 'type-infer-webhook-request' })\n : undefined;\n exportZodSchema({\n plugin,\n schema: schemaData,\n schemaId,\n typeInferId,\n zodSchema,\n });\n file.updateNodeReferences(\n schemaId,\n buildName({\n config: plugin.config.webhooks,\n name: operation.id,\n }),\n );\n if (typeInferId) {\n file.updateNodeReferences(\n typeInferId,\n buildName({\n config: plugin.config.webhooks.types.infer,\n name: operation.id,\n }),\n );\n }\n }\n};\n","import ts from 'typescript';\n\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { refToName } from '../../../utils/ref';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { identifiers, zodId } from '../constants';\nimport { exportZodSchema } from '../export';\nimport { getZodModule } from '../shared/module';\nimport { operationToZodSchema } from '../shared/operation';\nimport type { SchemaWithType, State, ZodSchema } from '../shared/types';\nimport { webhookToZodSchema } from '../shared/webhook';\nimport type { ZodPlugin } from '../types';\n\nconst arrayTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'array'>;\n state: State;\n}): ts.CallExpression => {\n const functionName = tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.array,\n });\n\n let arrayExpression: ts.CallExpression | undefined;\n\n if (!schema.items) {\n arrayExpression = tsc.callExpression({\n functionName,\n parameters: [\n unknownTypeToZodSchema({\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(\n (item) =>\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }).expression,\n );\n\n if (itemExpressions.length === 1) {\n arrayExpression = tsc.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return tsc.typeArrayNode(\n // tsc.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n arrayExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.array,\n }),\n parameters: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemExpressions,\n }),\n ],\n }),\n ],\n });\n }\n }\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n arrayExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: arrayExpression,\n name: identifiers.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n });\n } else {\n if (schema.minItems !== undefined) {\n arrayExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: arrayExpression,\n name: identifiers.min,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n });\n }\n\n if (schema.maxItems !== undefined) {\n arrayExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: arrayExpression,\n name: identifiers.max,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxItems })],\n });\n }\n }\n\n return arrayExpression;\n};\n\nconst booleanTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}) => {\n if (typeof schema.const === 'boolean') {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.boolean(schema.const)],\n });\n return expression;\n }\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.boolean,\n }),\n });\n return expression;\n};\n\nconst enumTypeToZodSchema = ({\n schema,\n}: {\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 tsc.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 schema: {\n type: 'unknown',\n },\n });\n }\n\n let enumExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.enum,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n enumExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: enumExpression,\n name: identifiers.nullable,\n }),\n });\n }\n\n return enumExpression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst neverTypeToZodSchema = (_props: { schema: SchemaWithType<'never'> }) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.never,\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst nullTypeToZodSchema = (_props: { schema: SchemaWithType<'null'> }) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.null,\n }),\n });\n return expression;\n};\n\nconst numberParameter = ({\n isBigInt,\n value,\n}: {\n isBigInt: boolean;\n value: unknown;\n}) => {\n const expression = tsc.valueToExpression({ value });\n\n if (\n isBigInt &&\n (typeof value === 'bigint' ||\n typeof value === 'number' ||\n typeof value === 'string' ||\n typeof value === 'boolean')\n ) {\n return tsc.callExpression({\n functionName: 'BigInt',\n parameters: [expression],\n });\n }\n\n return expression;\n};\n\nconst numberTypeToZodSchema = ({\n schema,\n}: {\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 = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.number(schema.const)],\n });\n return expression;\n }\n\n let numberExpression = tsc.callExpression({\n functionName: isBigInt\n ? tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.coerce,\n }),\n name: identifiers.bigint,\n })\n : tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.number,\n }),\n });\n\n if (!isBigInt && schema.type === 'integer') {\n numberExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: numberExpression,\n name: identifiers.int,\n }),\n });\n }\n\n if (schema.exclusiveMinimum !== undefined) {\n numberExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: numberExpression,\n name: identifiers.gt,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMinimum }),\n ],\n });\n } else if (schema.minimum !== undefined) {\n numberExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: numberExpression,\n name: identifiers.gte,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.minimum })],\n });\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n numberExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: numberExpression,\n name: identifiers.lt,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMaximum }),\n ],\n });\n } else if (schema.maximum !== undefined) {\n numberExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: numberExpression,\n name: identifiers.lte,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.maximum })],\n });\n }\n\n return numberExpression;\n};\n\nconst objectTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'object'>;\n state: State;\n}): {\n anyType: string;\n expression: ts.CallExpression;\n} => {\n // TODO: parser - handle constants\n const properties: Array<ts.PropertyAssignment> = [];\n\n const required = schema.required ?? [];\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 optional: !isRequired,\n plugin,\n schema: property,\n state,\n }).expression;\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 tsc.propertyAssignment({\n initializer: propertyExpression,\n name: propertyName,\n }),\n );\n }\n\n if (\n schema.additionalProperties &&\n (!schema.properties || !Object.keys(schema.properties).length)\n ) {\n const zodSchema = schemaToZodSchema({\n plugin,\n schema: schema.additionalProperties,\n state,\n }).expression;\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.record,\n }),\n parameters: [zodSchema],\n });\n return {\n anyType: 'AnyZodObject',\n expression,\n };\n }\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.object,\n }),\n parameters: [ts.factory.createObjectLiteralExpression(properties, true)],\n });\n return {\n anyType: 'AnyZodObject',\n expression,\n };\n};\n\nconst stringTypeToZodSchema = ({\n plugin,\n schema,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'string'>;\n}) => {\n if (typeof schema.const === 'string') {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.string(schema.const)],\n });\n return expression;\n }\n\n let stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.string,\n }),\n });\n\n const dateTimeOptions: { key: string; value: boolean }[] = [];\n\n if (plugin.config.dates.offset) {\n dateTimeOptions.push({ key: 'offset', value: true });\n }\n if (plugin.config.dates.local) {\n dateTimeOptions.push({ key: 'local', value: true });\n }\n\n if (schema.format) {\n switch (schema.format) {\n case 'date':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.date,\n }),\n });\n break;\n case 'date-time':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.datetime,\n }),\n parameters:\n dateTimeOptions.length > 0\n ? [\n tsc.objectExpression({\n obj: dateTimeOptions,\n }),\n ]\n : [],\n });\n break;\n case 'email':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.email,\n }),\n });\n break;\n case 'ipv4':\n case 'ipv6':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.ip,\n }),\n });\n break;\n case 'time':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.time,\n }),\n });\n break;\n case 'uri':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.url,\n }),\n });\n break;\n case 'uuid':\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.uuid,\n }),\n });\n break;\n }\n }\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n });\n } else {\n if (schema.minLength !== undefined) {\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.min,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n });\n }\n\n if (schema.maxLength !== undefined) {\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.max,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxLength })],\n });\n }\n }\n\n if (schema.pattern) {\n stringExpression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: stringExpression,\n name: identifiers.regex,\n }),\n parameters: [tsc.regularExpressionLiteral({ text: schema.pattern })],\n });\n }\n\n return stringExpression;\n};\n\nconst tupleTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'tuple'>;\n state: State;\n}) => {\n if (schema.const && Array.isArray(schema.const)) {\n const tupleElements = schema.const.map((value) =>\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.valueToExpression({ value })],\n }),\n );\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n }\n\n const tupleElements: Array<ts.Expression> = [];\n\n for (const item of schema.items ?? []) {\n tupleElements.push(\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }).expression,\n );\n }\n\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst undefinedTypeToZodSchema = (_props: {\n schema: SchemaWithType<'undefined'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.undefined,\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unknownTypeToZodSchema = (_props: {\n schema: SchemaWithType<'unknown'>;\n}) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.unknown,\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst voidTypeToZodSchema = (_props: { schema: SchemaWithType<'void'> }) => {\n const expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.void,\n }),\n });\n return expression;\n};\n\nconst schemaTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\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 plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n }),\n };\n case 'boolean':\n return {\n expression: booleanTypeToZodSchema({\n schema: schema as SchemaWithType<'boolean'>,\n }),\n };\n case 'enum':\n return {\n expression: enumTypeToZodSchema({\n schema: schema as SchemaWithType<'enum'>,\n }),\n };\n case 'integer':\n case 'number':\n return {\n expression: numberTypeToZodSchema({\n schema: schema as SchemaWithType<'integer' | 'number'>,\n }),\n };\n case 'never':\n return {\n expression: neverTypeToZodSchema({\n schema: schema as SchemaWithType<'never'>,\n }),\n };\n case 'null':\n return {\n expression: nullTypeToZodSchema({\n schema: schema as SchemaWithType<'null'>,\n }),\n };\n case 'object':\n return objectTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n return {\n expression: stringTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'string'>,\n }),\n };\n case 'tuple':\n return {\n expression: tupleTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n }),\n };\n case 'undefined':\n return {\n expression: undefinedTypeToZodSchema({\n schema: schema as SchemaWithType<'undefined'>,\n }),\n };\n case 'unknown':\n return {\n expression: unknownTypeToZodSchema({\n schema: schema as SchemaWithType<'unknown'>,\n }),\n };\n case 'void':\n return {\n expression: voidTypeToZodSchema({\n schema: schema as SchemaWithType<'void'>,\n }),\n };\n }\n};\n\nconst schemaToZodSchema = ({\n optional,\n plugin,\n schema,\n state,\n}: {\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 plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): ZodSchema => {\n const file = plugin.context.file({ id: zodId })!;\n\n let zodSchema: Partial<ZodSchema> = {};\n\n if (schema.$ref) {\n const isCircularReference = state.circularReferenceTracker.includes(\n schema.$ref,\n );\n state.circularReferenceTracker.push(schema.$ref);\n state.currentReferenceTracker.push(schema.$ref);\n\n const id = plugin.api.getId({ type: 'ref', value: schema.$ref });\n\n if (isCircularReference) {\n const expression = file.addNodeReference(id, {\n factory: (text) => tsc.identifier({ text }),\n });\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.lazy,\n }),\n parameters: [\n tsc.arrowFunction({\n statements: [tsc.returnStatement({ expression })],\n }),\n ],\n });\n state.hasCircularReference = true;\n } else if (!file.getName(id)) {\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 const ref = plugin.context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n handleComponent({\n id: schema.$ref,\n plugin,\n schema: ref,\n state,\n });\n }\n\n if (!isCircularReference) {\n const expression = file.addNodeReference(id, {\n factory: (text) => tsc.identifier({ text }),\n });\n zodSchema.expression = expression;\n }\n\n state.circularReferenceTracker.pop();\n state.currentReferenceTracker.pop();\n } else if (schema.type) {\n const zSchema = schemaTypeToZodSchema({ plugin, schema, state });\n zodSchema.expression = zSchema.expression;\n zodSchema.typeName = zSchema.anyType;\n\n if (plugin.config.metadata && schema.description) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.describe,\n }),\n parameters: [tsc.stringLiteral({ text: schema.description })],\n });\n }\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n\n if (schema.items) {\n const itemTypes = schema.items.map(\n (item) =>\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }).expression,\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 zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.intersection,\n }),\n parameters: itemTypes,\n });\n } else {\n zodSchema.expression = itemTypes[0];\n itemTypes.slice(1).forEach((item) => {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression!,\n name: identifiers.and,\n }),\n parameters: [item],\n });\n });\n }\n } else {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n }\n } else {\n zodSchema = schemaToZodSchema({ plugin, schema, state });\n }\n } else {\n // catch-all fallback for failed schemas\n const zSchema = schemaTypeToZodSchema({\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n zodSchema.expression = zSchema.expression;\n zodSchema.typeName = zSchema.anyType;\n }\n\n if (zodSchema.expression) {\n if (schema.accessScope === 'read') {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.readonly,\n }),\n });\n }\n\n if (optional) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.optional,\n }),\n });\n }\n\n if (schema.default !== undefined) {\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n const callParameter = numberParameter({\n isBigInt,\n value: schema.default,\n });\n if (callParameter) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.default,\n }),\n parameters: [callParameter],\n });\n }\n }\n }\n\n if (state.hasCircularReference) {\n if (!zodSchema.typeName) {\n zodSchema.typeName = 'ZodTypeAny';\n }\n } else {\n zodSchema.typeName = undefined;\n }\n\n return zodSchema as ZodSchema;\n};\n\nconst handleComponent = ({\n id,\n plugin,\n schema,\n state,\n}: {\n id: string;\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state?: State;\n}): void => {\n if (!state) {\n state = {\n circularReferenceTracker: [id],\n currentReferenceTracker: [id],\n hasCircularReference: false,\n };\n }\n\n const file = plugin.context.file({ id: zodId })!;\n const schemaId = plugin.api.getId({ type: 'ref', value: id });\n\n if (file.getName(schemaId)) return;\n\n const zodSchema = schemaToZodSchema({ plugin, schema, state });\n const typeInferId = plugin.config.definitions.types.infer.enabled\n ? plugin.api.getId({ type: 'type-infer-ref', value: id })\n : undefined;\n exportZodSchema({\n plugin,\n schema,\n schemaId,\n typeInferId,\n zodSchema,\n });\n const baseName = refToName(id);\n file.updateNodeReferences(\n schemaId,\n buildName({\n config: plugin.config.definitions,\n name: baseName,\n }),\n );\n if (typeInferId) {\n file.updateNodeReferences(\n typeInferId,\n buildName({\n config: plugin.config.definitions.types.infer,\n name: baseName,\n }),\n );\n }\n};\n\nexport const handlerV3: ZodPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n case: plugin.config.case,\n id: zodId,\n path: plugin.output,\n });\n\n file.import({\n module: getZodModule({ plugin }),\n name: identifiers.z.text,\n });\n\n plugin.forEach(\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'webhook',\n (event) => {\n if (event.type === 'operation') {\n operationToZodSchema({\n getZodSchema: (schema) => {\n const state: State = {\n circularReferenceTracker: [],\n currentReferenceTracker: [],\n hasCircularReference: false,\n };\n return schemaToZodSchema({ plugin, schema, state });\n },\n operation: event.operation,\n plugin,\n });\n } else if (event.type === 'parameter') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.parameter.schema,\n });\n } else if (event.type === 'requestBody') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n });\n } else if (event.type === 'schema') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.schema,\n });\n } else if (event.type === 'webhook') {\n webhookToZodSchema({\n getZodSchema: (schema) => {\n const state: State = {\n circularReferenceTracker: [],\n currentReferenceTracker: [],\n hasCircularReference: false,\n };\n return schemaToZodSchema({ plugin, schema, state });\n },\n operation: event.operation,\n plugin,\n });\n }\n },\n );\n};\n","import ts from 'typescript';\n\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { buildName } from '../../../openApi/shared/utils/name';\nimport { tsc } from '../../../tsc';\nimport { refToName } from '../../../utils/ref';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { identifiers, zodId } from '../constants';\nimport { exportZodSchema } from '../export';\nimport { getZodModule } from '../shared/module';\nimport { operationToZodSchema } from '../shared/operation';\nimport type { SchemaWithType, State, ZodSchema } from '../shared/types';\nimport { webhookToZodSchema } from '../shared/webhook';\nimport type { ZodPlugin } from '../types';\n\nconst arrayTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'array'>;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n const functionName = tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.array,\n });\n\n if (!schema.items) {\n result.expression = tsc.callExpression({\n functionName,\n parameters: [\n unknownTypeToZodSchema({\n schema: {\n type: 'unknown',\n },\n }).expression,\n ],\n });\n } else {\n schema = deduplicateSchema({ schema });\n\n // at least one item is guaranteed\n const itemExpressions = schema.items!.map((item) => {\n const zodSchema = schemaToZodSchema({\n plugin,\n schema: item,\n state,\n });\n if (zodSchema.hasCircularReference) {\n result.hasCircularReference = true;\n }\n return zodSchema.expression;\n });\n\n if (itemExpressions.length === 1) {\n result.expression = tsc.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return tsc.typeArrayNode(\n // tsc.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.array,\n }),\n parameters: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemExpressions,\n }),\n ],\n }),\n ],\n });\n }\n }\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n });\n } else {\n if (schema.minItems !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.min,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minItems })],\n });\n }\n\n if (schema.maxItems !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.max,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxItems })],\n });\n }\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst booleanTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n if (typeof schema.const === 'boolean') {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.boolean(schema.const)],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.boolean,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst enumTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'enum'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\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 tsc.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 schema: {\n type: 'unknown',\n },\n });\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.enum,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.nullable,\n }),\n parameters: [result.expression],\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst neverTypeToZodSchema = (_props: {\n schema: SchemaWithType<'never'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.never,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst nullTypeToZodSchema = (_props: {\n schema: SchemaWithType<'null'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.null,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst numberParameter = ({\n isBigInt,\n value,\n}: {\n isBigInt: boolean;\n value: unknown;\n}): ts.Expression | undefined => {\n const expression = tsc.valueToExpression({ value });\n\n if (\n isBigInt &&\n (typeof value === 'bigint' ||\n typeof value === 'number' ||\n typeof value === 'string' ||\n typeof value === 'boolean')\n ) {\n return tsc.callExpression({\n functionName: 'BigInt',\n parameters: [expression],\n });\n }\n\n return expression;\n};\n\nconst numberTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'integer' | 'number'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n\n if (typeof schema.const === 'number') {\n // TODO: parser - handle bigint constants\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.number(schema.const)],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: isBigInt\n ? tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.coerce,\n }),\n name: identifiers.bigint,\n })\n : tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.number,\n }),\n });\n\n if (!isBigInt && schema.type === 'integer') {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.int,\n }),\n });\n }\n\n if (schema.exclusiveMinimum !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.gt,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMinimum }),\n ],\n });\n } else if (schema.minimum !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.gte,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.minimum })],\n });\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.lt,\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMaximum }),\n ],\n });\n } else if (schema.maximum !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.lte,\n }),\n parameters: [numberParameter({ isBigInt, value: schema.maximum })],\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst objectTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'object'>;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n // TODO: parser - handle constants\n const properties: Array<ts.PropertyAssignment | ts.GetAccessorDeclaration> =\n [];\n\n const required = schema.required ?? [];\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n const isRequired = required.includes(name);\n\n const propertySchema = schemaToZodSchema({\n optional: !isRequired,\n plugin,\n schema: property,\n state,\n });\n if (propertySchema.hasCircularReference) {\n result.hasCircularReference = true;\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\n if (propertySchema.hasCircularReference) {\n properties.push(\n tsc.getAccessorDeclaration({\n name: propertyName,\n // @ts-expect-error\n returnType: propertySchema.typeName\n ? tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: propertySchema.typeName,\n })\n : undefined,\n statements: [\n tsc.returnStatement({\n expression: propertySchema.expression,\n }),\n ],\n }),\n );\n } else {\n properties.push(\n tsc.propertyAssignment({\n initializer: propertySchema.expression,\n name: propertyName,\n }),\n );\n }\n }\n\n if (\n schema.additionalProperties &&\n (!schema.properties || !Object.keys(schema.properties).length)\n ) {\n const zodSchema = schemaToZodSchema({\n plugin,\n schema: schema.additionalProperties,\n state,\n });\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.record,\n }),\n parameters: [\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.string,\n }),\n parameters: [],\n }),\n zodSchema.expression,\n ],\n });\n if (zodSchema.hasCircularReference) {\n result.hasCircularReference = true;\n }\n\n // Return with typeName for circular references\n if (result.hasCircularReference) {\n return {\n ...result,\n typeName: 'ZodType',\n } as ZodSchema;\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.object,\n }),\n parameters: [ts.factory.createObjectLiteralExpression(properties, true)],\n });\n\n // Return with typeName for circular references (AnyZodObject doesn't exist in Zod v4, use ZodType)\n if (result.hasCircularReference) {\n return {\n ...result,\n typeName: 'ZodType',\n } as ZodSchema;\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst stringTypeToZodSchema = ({\n plugin,\n schema,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'string'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n if (typeof schema.const === 'string') {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.ots.string(schema.const)],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.string,\n }),\n });\n\n const dateTimeOptions: { key: string; value: boolean }[] = [];\n\n if (plugin.config.dates.offset) {\n dateTimeOptions.push({ key: 'offset', value: true });\n }\n if (plugin.config.dates.local) {\n dateTimeOptions.push({ key: 'local', value: true });\n }\n\n if (schema.format) {\n switch (schema.format) {\n case 'date':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.iso,\n }),\n name: identifiers.date,\n }),\n });\n break;\n case 'date-time':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.iso,\n }),\n name: identifiers.datetime,\n }),\n parameters:\n dateTimeOptions.length > 0\n ? [\n tsc.objectExpression({\n obj: dateTimeOptions,\n }),\n ]\n : [],\n });\n break;\n case 'email':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.email,\n }),\n });\n break;\n case 'ipv4':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.ipv4,\n }),\n });\n break;\n case 'ipv6':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.ipv6,\n }),\n });\n break;\n case 'time':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.iso,\n }),\n name: identifiers.time,\n }),\n });\n break;\n case 'uri':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.url,\n }),\n });\n break;\n case 'uuid':\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.uuid,\n }),\n });\n break;\n }\n }\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.length,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n });\n } else {\n if (schema.minLength !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.min,\n }),\n parameters: [tsc.valueToExpression({ value: schema.minLength })],\n });\n }\n\n if (schema.maxLength !== undefined) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.max,\n }),\n parameters: [tsc.valueToExpression({ value: schema.maxLength })],\n });\n }\n }\n\n if (schema.pattern) {\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: result.expression,\n name: identifiers.regex,\n }),\n parameters: [tsc.regularExpressionLiteral({ text: schema.pattern })],\n });\n }\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst tupleTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: SchemaWithType<'tuple'>;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n\n if (schema.const && Array.isArray(schema.const)) {\n const tupleElements = schema.const.map((value) =>\n tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.literal,\n }),\n parameters: [tsc.valueToExpression({ value })],\n }),\n );\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return result as Omit<ZodSchema, 'typeName'>;\n }\n\n const tupleElements: Array<ts.Expression> = [];\n\n for (const item of schema.items ?? []) {\n const itemSchema = schemaToZodSchema({\n plugin,\n schema: item,\n state,\n });\n tupleElements.push(itemSchema.expression);\n\n if (itemSchema.hasCircularReference) {\n result.hasCircularReference = true;\n }\n }\n\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.tuple,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst undefinedTypeToZodSchema = (_props: {\n schema: SchemaWithType<'undefined'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.undefined,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unknownTypeToZodSchema = (_props: {\n schema: SchemaWithType<'unknown'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.unknown,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst voidTypeToZodSchema = (_props: {\n schema: SchemaWithType<'void'>;\n}): Omit<ZodSchema, 'typeName'> => {\n const result: Partial<Omit<ZodSchema, 'typeName'>> = {};\n result.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.void,\n }),\n });\n return result as Omit<ZodSchema, 'typeName'>;\n};\n\nconst schemaTypeToZodSchema = ({\n plugin,\n schema,\n state,\n}: {\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): Omit<ZodSchema, 'typeName'> => {\n switch (schema.type as Required<IR.SchemaObject>['type']) {\n case 'array':\n return arrayTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n });\n case 'boolean':\n return booleanTypeToZodSchema({\n schema: schema as SchemaWithType<'boolean'>,\n });\n case 'enum':\n return enumTypeToZodSchema({\n schema: schema as SchemaWithType<'enum'>,\n });\n case 'integer':\n case 'number':\n return numberTypeToZodSchema({\n schema: schema as SchemaWithType<'integer' | 'number'>,\n });\n case 'never':\n return neverTypeToZodSchema({\n schema: schema as SchemaWithType<'never'>,\n });\n case 'null':\n return nullTypeToZodSchema({\n schema: schema as SchemaWithType<'null'>,\n });\n case 'object':\n return objectTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n return stringTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'string'>,\n });\n case 'tuple':\n return tupleTypeToZodSchema({\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n });\n case 'undefined':\n return undefinedTypeToZodSchema({\n schema: schema as SchemaWithType<'undefined'>,\n });\n case 'unknown':\n return unknownTypeToZodSchema({\n schema: schema as SchemaWithType<'unknown'>,\n });\n case 'void':\n return voidTypeToZodSchema({\n schema: schema as SchemaWithType<'void'>,\n });\n }\n};\n\nconst schemaToZodSchema = ({\n optional,\n plugin,\n schema,\n state,\n}: {\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 plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): ZodSchema => {\n const file = plugin.context.file({ id: zodId })!;\n\n let zodSchema: Partial<ZodSchema> = {};\n\n if (schema.$ref) {\n const isCircularReference = state.circularReferenceTracker.includes(\n schema.$ref,\n );\n const isSelfReference = state.currentReferenceTracker.includes(schema.$ref);\n state.circularReferenceTracker.push(schema.$ref);\n state.currentReferenceTracker.push(schema.$ref);\n\n const id = plugin.api.getId({ type: 'ref', value: schema.$ref });\n\n if (isCircularReference) {\n const expression = file.addNodeReference(id, {\n factory: (text) => tsc.identifier({ text }),\n });\n if (isSelfReference) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.lazy,\n }),\n parameters: [\n tsc.arrowFunction({\n returnType: tsc.keywordTypeNode({ keyword: 'any' }),\n statements: [tsc.returnStatement({ expression })],\n }),\n ],\n });\n } else {\n zodSchema.expression = expression;\n }\n zodSchema.hasCircularReference = true;\n } else if (!file.getName(id)) {\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 const ref = plugin.context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n handleComponent({\n id: schema.$ref,\n plugin,\n schema: ref,\n state,\n });\n }\n\n if (!isCircularReference) {\n const expression = file.addNodeReference(id, {\n factory: (text) => tsc.identifier({ text }),\n });\n zodSchema.expression = expression;\n }\n\n state.circularReferenceTracker.pop();\n state.currentReferenceTracker.pop();\n } else if (schema.type) {\n const zSchema = schemaTypeToZodSchema({ plugin, schema, state });\n zodSchema.expression = zSchema.expression;\n zodSchema.hasCircularReference = zSchema.hasCircularReference;\n\n if (plugin.config.metadata && schema.description) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.register,\n }),\n parameters: [\n tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.globalRegistry,\n }),\n tsc.objectExpression({\n obj: [\n {\n key: 'description',\n value: tsc.stringLiteral({ text: schema.description }),\n },\n ],\n }),\n ],\n });\n }\n } else if (schema.items) {\n schema = deduplicateSchema({ schema });\n\n if (schema.items) {\n const itemTypes = schema.items.map(\n (item) =>\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }).expression,\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 zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.intersection,\n }),\n parameters: itemTypes,\n });\n } else {\n zodSchema.expression = itemTypes[0];\n itemTypes.slice(1).forEach((item) => {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression!,\n name: identifiers.and,\n }),\n parameters: [item],\n });\n });\n }\n } else {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.union,\n }),\n parameters: [\n tsc.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n }\n } else {\n zodSchema = schemaToZodSchema({ plugin, schema, state });\n }\n } else {\n // catch-all fallback for failed schemas\n const zSchema = schemaTypeToZodSchema({\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n zodSchema.expression = zSchema.expression;\n }\n\n if (zodSchema.expression) {\n if (schema.accessScope === 'read') {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.readonly,\n }),\n });\n }\n\n if (optional) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: identifiers.z,\n name: identifiers.optional,\n }),\n parameters: [zodSchema.expression],\n });\n zodSchema.typeName = identifiers.ZodOptional;\n }\n\n if (schema.default !== undefined) {\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n const callParameter = numberParameter({\n isBigInt,\n value: schema.default,\n });\n if (callParameter) {\n zodSchema.expression = tsc.callExpression({\n functionName: tsc.propertyAccessExpression({\n expression: zodSchema.expression,\n name: identifiers.default,\n }),\n parameters: [callParameter],\n });\n }\n }\n }\n\n return zodSchema as ZodSchema;\n};\n\nconst handleComponent = ({\n id,\n plugin,\n schema,\n state: _state,\n}: {\n id: string;\n plugin: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state?: Omit<State, 'currentReferenceTracker'>;\n}): void => {\n const state: State = {\n circularReferenceTracker: [id],\n hasCircularReference: false,\n ..._state,\n currentReferenceTracker: [id],\n };\n\n const file = plugin.context.file({ id: zodId })!;\n const schemaId = plugin.api.getId({ type: 'ref', value: id });\n\n if (file.getName(schemaId)) return;\n\n const zodSchema = schemaToZodSchema({ plugin, schema, state });\n const typeInferId = plugin.config.definitions.types.infer.enabled\n ? plugin.api.getId({ type: 'type-infer-ref', value: id })\n : undefined;\n exportZodSchema({\n plugin,\n schema,\n schemaId,\n typeInferId,\n zodSchema,\n });\n const baseName = refToName(id);\n file.updateNodeReferences(\n schemaId,\n buildName({\n config: plugin.config.definitions,\n name: baseName,\n }),\n );\n if (typeInferId) {\n file.updateNodeReferences(\n typeInferId,\n buildName({\n config: plugin.config.definitions.types.infer,\n name: baseName,\n }),\n );\n }\n};\n\nexport const handlerV4: ZodPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n case: plugin.config.case,\n id: zodId,\n path: plugin.output,\n });\n\n file.import({\n module: getZodModule({ plugin }),\n name: identifiers.z.text,\n });\n\n plugin.forEach(\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'webhook',\n (event) => {\n if (event.type === 'operation') {\n operationToZodSchema({\n getZodSchema: (schema) => {\n const state: State = {\n circularReferenceTracker: [],\n currentReferenceTracker: [],\n hasCircularReference: false,\n };\n return schemaToZodSchema({ plugin, schema, state });\n },\n operation: event.operation,\n plugin,\n });\n } else if (event.type === 'parameter') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.parameter.schema,\n });\n } else if (event.type === 'requestBody') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n });\n } else if (event.type === 'schema') {\n handleComponent({\n id: event.$ref,\n plugin,\n schema: event.schema,\n });\n } else if (event.type === 'webhook') {\n webhookToZodSchema({\n getZodSchema: (schema) => {\n const state: State = {\n circularReferenceTracker: [],\n currentReferenceTracker: [],\n hasCircularReference: false,\n };\n return schemaToZodSchema({ plugin, schema, state });\n },\n operation: event.operation,\n plugin,\n });\n }\n },\n );\n};\n","import { handlerMini } from './mini/plugin';\nimport type { ZodPlugin } from './types';\nimport { handlerV3 } from './v3/plugin';\nimport { handlerV4 } from './v4/plugin';\n\nexport const handler: ZodPlugin['Handler'] = (args) => {\n const { plugin } = args;\n switch (plugin.config.compatibilityVersion) {\n case 3:\n return handlerV3(args);\n case 4:\n return handlerV4(args);\n case 'mini':\n return handlerMini(args);\n default:\n return handlerV4(args);\n }\n};\n","import colors from 'ansi-colors';\n\nimport { definePluginConfig, mappers } from '../shared/utils/config';\nimport { api } from './api';\nimport { handler } from './plugin';\nimport type { ZodPlugin } from './types';\n\ntype CompatibilityVersion = NonNullable<\n ZodPlugin['Config']['config']['compatibilityVersion']\n>;\n\nexport const defaultConfig: ZodPlugin['Config'] = {\n api,\n config: {\n case: 'camelCase',\n comments: true,\n exportFromIndex: false,\n metadata: false,\n },\n handler,\n name: 'zod',\n output: 'zod',\n resolveConfig: (plugin, context) => {\n const packageName = 'zod';\n const version = context.package.getVersion(packageName);\n\n const inferCompatibleVersion = (): CompatibilityVersion => {\n if (version && (version.major === 4 || version.major === 3)) {\n return version.major;\n }\n\n // default compatibility version\n return 4;\n };\n\n const ensureCompatibleVersion = (\n compatibilityVersion: CompatibilityVersion | undefined,\n ): CompatibilityVersion => {\n if (!compatibilityVersion) {\n return inferCompatibleVersion();\n }\n\n if (!version) {\n return compatibilityVersion;\n }\n\n if (\n compatibilityVersion === 4 ||\n compatibilityVersion === 3 ||\n compatibilityVersion === 'mini'\n ) {\n if (!context.package.satisfies(version, '>=3.25.0 <5.0.0')) {\n const compatibleVersion = inferCompatibleVersion();\n console.warn(\n `🔌 ${colors.yellow('Warning:')} Installed ${colors.cyan(packageName)} ${colors.cyan(`v${version.version}`)} does not support compatibility version ${colors.yellow(String(compatibilityVersion))}, using ${colors.yellow(String(compatibleVersion))}.`,\n );\n return compatibleVersion;\n }\n }\n\n return compatibilityVersion;\n };\n\n plugin.config.compatibilityVersion = ensureCompatibleVersion(\n plugin.config.compatibilityVersion,\n );\n\n plugin.config.dates = context.valueToObject({\n defaultValue: {\n local: false,\n offset: false,\n },\n value: plugin.config.dates,\n });\n\n plugin.config.types = context.valueToObject({\n defaultValue: {\n infer: {\n case: 'PascalCase',\n enabled: false,\n },\n },\n mappers: {\n object: (fields, defaultValue) => ({\n ...fields,\n infer: context.valueToObject({\n defaultValue: {\n ...(defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >),\n enabled:\n fields.infer !== undefined\n ? Boolean(fields.infer)\n : (\n defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >\n ).enabled,\n },\n mappers,\n value: fields.infer,\n }),\n }),\n },\n value: plugin.config.types,\n });\n\n plugin.config.definitions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'z{{name}}',\n types: {\n ...plugin.config.types,\n infer: {\n ...(plugin.config.types.infer as Extract<\n typeof plugin.config.types.infer,\n Record<string, unknown>\n >),\n name: '{{name}}ZodType',\n },\n },\n },\n mappers: {\n ...mappers,\n object: (fields, defaultValue) => ({\n ...fields,\n types: context.valueToObject({\n defaultValue: defaultValue.types!,\n mappers: {\n object: (fields, defaultValue) => ({\n ...fields,\n infer: context.valueToObject({\n defaultValue: {\n ...(defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >),\n enabled:\n fields.infer !== undefined\n ? Boolean(fields.infer)\n : (\n defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >\n ).enabled,\n },\n mappers,\n value: fields.infer,\n }),\n }),\n },\n value: fields.types,\n }),\n }),\n },\n value: plugin.config.definitions,\n });\n\n plugin.config.requests = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'z{{name}}Data',\n types: {\n ...plugin.config.types,\n infer: {\n ...(plugin.config.types.infer as Extract<\n typeof plugin.config.types.infer,\n Record<string, unknown>\n >),\n name: '{{name}}DataZodType',\n },\n },\n },\n mappers: {\n ...mappers,\n object: (fields, defaultValue) => ({\n ...fields,\n types: context.valueToObject({\n defaultValue: defaultValue.types!,\n mappers: {\n object: (fields, defaultValue) => ({\n ...fields,\n infer: context.valueToObject({\n defaultValue: {\n ...(defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >),\n enabled:\n fields.infer !== undefined\n ? Boolean(fields.infer)\n : (\n defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >\n ).enabled,\n },\n mappers,\n value: fields.infer,\n }),\n }),\n },\n value: fields.types,\n }),\n }),\n },\n value: plugin.config.requests,\n });\n\n plugin.config.responses = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'z{{name}}Response',\n types: {\n ...plugin.config.types,\n infer: {\n ...(plugin.config.types.infer as Extract<\n typeof plugin.config.types.infer,\n Record<string, unknown>\n >),\n name: '{{name}}ResponseZodType',\n },\n },\n },\n mappers: {\n ...mappers,\n object: (fields, defaultValue) => ({\n ...fields,\n types: context.valueToObject({\n defaultValue: defaultValue.types!,\n mappers: {\n object: (fields, defaultValue) => ({\n ...fields,\n infer: context.valueToObject({\n defaultValue: {\n ...(defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >),\n enabled:\n fields.infer !== undefined\n ? Boolean(fields.infer)\n : (\n defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >\n ).enabled,\n },\n mappers,\n value: fields.infer,\n }),\n }),\n },\n value: fields.types,\n }),\n }),\n },\n value: plugin.config.responses,\n });\n\n plugin.config.webhooks = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'z{{name}}WebhookRequest',\n types: {\n ...plugin.config.types,\n infer: {\n ...(plugin.config.types.infer as Extract<\n typeof plugin.config.types.infer,\n Record<string, unknown>\n >),\n name: '{{name}}WebhookRequestZodType',\n },\n },\n },\n mappers: {\n ...mappers,\n object: (fields, defaultValue) => ({\n ...fields,\n types: context.valueToObject({\n defaultValue: defaultValue.types!,\n mappers: {\n object: (fields, defaultValue) => ({\n ...fields,\n infer: context.valueToObject({\n defaultValue: {\n ...(defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >),\n enabled:\n fields.infer !== undefined\n ? Boolean(fields.infer)\n : (\n defaultValue.infer as Extract<\n typeof defaultValue.infer,\n Record<string, unknown>\n >\n ).enabled,\n },\n mappers,\n value: fields.infer,\n }),\n }),\n },\n value: fields.types,\n }),\n }),\n },\n value: plugin.config.webhooks,\n });\n },\n tags: ['validator'],\n};\n\n/**\n * Type helper for Zod plugin, returns {@link Plugin.Config} object\n */\nexport const defineConfig = definePluginConfig(defaultConfig);\n","import type { AngularCommonPlugin } from './@angular/common';\nimport { defaultConfig as angularCommon } from './@angular/common';\nimport type { HeyApiClientAngularPlugin } from './@hey-api/client-angular';\nimport { defaultConfig as heyApiClientAngular } from './@hey-api/client-angular';\nimport type { HeyApiClientAxiosPlugin } from './@hey-api/client-axios';\nimport { defaultConfig as heyApiClientAxios } from './@hey-api/client-axios';\nimport type { HeyApiClientFetchPlugin } from './@hey-api/client-fetch';\nimport { defaultConfig as heyApiClientFetch } from './@hey-api/client-fetch';\nimport type { HeyApiClientNextPlugin } from './@hey-api/client-next';\nimport { defaultConfig as heyApiClientNext } from './@hey-api/client-next';\nimport type { HeyApiClientNuxtPlugin } from './@hey-api/client-nuxt';\nimport { defaultConfig as heyApiClientNuxt } from './@hey-api/client-nuxt';\nimport type { HeyApiClientLegacyAngularPlugin } from './@hey-api/legacy-angular';\nimport { defaultConfig as heyApiLegacyAngular } from './@hey-api/legacy-angular';\nimport type { HeyApiClientLegacyAxiosPlugin } from './@hey-api/legacy-axios';\nimport { defaultConfig as heyApiLegacyAxios } from './@hey-api/legacy-axios';\nimport type { HeyApiClientLegacyFetchPlugin } from './@hey-api/legacy-fetch';\nimport { defaultConfig as heyApiLegacyFetch } from './@hey-api/legacy-fetch';\nimport type { HeyApiClientLegacyNodePlugin } from './@hey-api/legacy-node';\nimport { defaultConfig as heyApiLegacyNode } from './@hey-api/legacy-node';\nimport type { HeyApiClientLegacyXhrPlugin } from './@hey-api/legacy-xhr';\nimport { defaultConfig as heyApiLegacyXhr } from './@hey-api/legacy-xhr';\nimport type { HeyApiSchemasPlugin } from './@hey-api/schemas';\nimport { defaultConfig as heyApiSchemas } from './@hey-api/schemas';\nimport type { HeyApiSdkPlugin } from './@hey-api/sdk';\nimport { defaultConfig as heyApiSdk } from './@hey-api/sdk';\nimport type { HeyApiTransformersPlugin } from './@hey-api/transformers';\nimport { defaultConfig as heyApiTransformers } from './@hey-api/transformers';\nimport type { HeyApiTypeScriptPlugin } from './@hey-api/typescript';\nimport { defaultConfig as heyApiTypeScript } from './@hey-api/typescript';\nimport type { TanStackAngularQueryPlugin } from './@tanstack/angular-query-experimental';\nimport { defaultConfig as tanStackAngularQuery } from './@tanstack/angular-query-experimental';\nimport type { TanStackReactQueryPlugin } from './@tanstack/react-query';\nimport { defaultConfig as tanStackReactQuery } from './@tanstack/react-query';\nimport type { TanStackSolidQueryPlugin } from './@tanstack/solid-query';\nimport { defaultConfig as tanStackSolidQuery } from './@tanstack/solid-query';\nimport type { TanStackSvelteQueryPlugin } from './@tanstack/svelte-query';\nimport { defaultConfig as tanStackSvelteQuery } from './@tanstack/svelte-query';\nimport type { TanStackVueQueryPlugin } from './@tanstack/vue-query';\nimport { defaultConfig as tanStackVueQuery } from './@tanstack/vue-query';\nimport type { FastifyPlugin } from './fastify';\nimport { defaultConfig as fastify } from './fastify';\nimport type { Plugin, PluginNames } from './types';\nimport type { ValibotPlugin } from './valibot';\nimport { defaultConfig as valibot } from './valibot';\nimport type { ZodPlugin } from './zod';\nimport { defaultConfig as zod } from './zod';\n\nexport interface PluginConfigMap {\n '@angular/common': AngularCommonPlugin['Types'];\n '@hey-api/client-angular': HeyApiClientAngularPlugin['Types'];\n '@hey-api/client-axios': HeyApiClientAxiosPlugin['Types'];\n '@hey-api/client-fetch': HeyApiClientFetchPlugin['Types'];\n '@hey-api/client-next': HeyApiClientNextPlugin['Types'];\n '@hey-api/client-nuxt': HeyApiClientNuxtPlugin['Types'];\n '@hey-api/schemas': HeyApiSchemasPlugin['Types'];\n '@hey-api/sdk': HeyApiSdkPlugin['Types'];\n '@hey-api/transformers': HeyApiTransformersPlugin['Types'];\n '@hey-api/typescript': HeyApiTypeScriptPlugin['Types'];\n '@tanstack/angular-query-experimental': TanStackAngularQueryPlugin['Types'];\n '@tanstack/react-query': TanStackReactQueryPlugin['Types'];\n '@tanstack/solid-query': TanStackSolidQueryPlugin['Types'];\n '@tanstack/svelte-query': TanStackSvelteQueryPlugin['Types'];\n '@tanstack/vue-query': TanStackVueQueryPlugin['Types'];\n fastify: FastifyPlugin['Types'];\n 'legacy/angular': HeyApiClientLegacyAngularPlugin['Types'];\n 'legacy/axios': HeyApiClientLegacyAxiosPlugin['Types'];\n 'legacy/fetch': HeyApiClientLegacyFetchPlugin['Types'];\n 'legacy/node': HeyApiClientLegacyNodePlugin['Types'];\n 'legacy/xhr': HeyApiClientLegacyXhrPlugin['Types'];\n valibot: ValibotPlugin['Types'];\n zod: ZodPlugin['Types'];\n}\n\nexport const defaultPluginConfigs: {\n [K in PluginNames]: Plugin.Config<PluginConfigMap[K]>;\n} = {\n '@angular/common': angularCommon,\n '@hey-api/client-angular': heyApiClientAngular,\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': tanStackAngularQuery,\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 valibot,\n zod,\n};\n","import { defaultPluginConfigs } from '../plugins/config';\nimport type {\n AnyPluginName,\n PluginContext,\n PluginNames,\n} from '../plugins/types';\nimport type { Config, UserConfig } from '../types/config';\nimport { valueToObject } from './utils/config';\nimport { packageFactory } from './utils/package';\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<PluginNames>;\n\nconst getPluginsConfig = ({\n dependencies,\n userPlugins,\n userPluginsConfig,\n}: {\n dependencies: Record<string, string>;\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 return;\n }\n\n circularReferenceTracker.add(name);\n\n const defaultPlugin = defaultPluginConfigs[name as PluginNames];\n const userPlugin = userPluginsConfig[name as PluginNames];\n\n if (!defaultPlugin && !userPlugin) {\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 plugin = {\n ...defaultPlugin,\n ...userPlugin,\n config: {\n ...defaultPlugin?.config,\n ...userPlugin?.config,\n },\n dependencies: new Set([\n ...(defaultPlugin?.dependencies || []),\n ...(userPlugin?.dependencies || []),\n ]),\n };\n\n if (plugin.resolveConfig) {\n const context: PluginContext = {\n package: packageFactory(dependencies),\n pluginByTag: (tag, props = {}) => {\n const { defaultPlugin, errorMessage } = props;\n\n for (const userPlugin of userPlugins) {\n const defaultConfig =\n defaultPluginConfigs[userPlugin as PluginNames] ||\n userPluginsConfig[userPlugin as PluginNames];\n if (\n defaultConfig &&\n defaultConfig.tags?.includes(tag) &&\n userPlugin !== name\n ) {\n return userPlugin as any;\n }\n }\n\n if (defaultPlugin) {\n const defaultConfig =\n defaultPluginConfigs[defaultPlugin as PluginNames] ||\n userPluginsConfig[defaultPlugin as PluginNames];\n if (\n defaultConfig &&\n defaultConfig.tags?.includes(tag) &&\n defaultPlugin !== name\n ) {\n return defaultPlugin;\n }\n }\n\n throw new Error(\n errorMessage ||\n `missing plugin - no plugin with tag \"${tag}\" found`,\n );\n },\n valueToObject,\n };\n // @ts-expect-error\n plugin.resolveConfig(plugin, context);\n }\n\n for (const dependency of plugin.dependencies) {\n dfs(dependency);\n }\n\n circularReferenceTracker.delete(name);\n pluginOrder.add(name);\n\n // @ts-expect-error\n plugins[name] = plugin;\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 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\nexport const getPlugins = ({\n dependencies,\n userConfig,\n}: {\n dependencies: Record<string, string>;\n userConfig: UserConfig;\n}): Pick<Config, 'plugins' | 'pluginOrder'> => {\n const userPluginsConfig: Config['plugins'] = {};\n\n let definedPlugins: UserConfig['plugins'] = defaultPlugins;\n\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 const pluginName = plugin.name;\n\n if (pluginName) {\n // @ts-expect-error\n if (plugin.handler) {\n // @ts-expect-error\n userPluginsConfig[pluginName] = plugin;\n } else {\n // @ts-expect-error\n userPluginsConfig[pluginName] = {\n config: { ...plugin },\n };\n // @ts-expect-error\n delete userPluginsConfig[pluginName]!.config.name;\n }\n }\n\n return pluginName;\n })\n .filter(Boolean);\n\n return getPluginsConfig({ dependencies, userPlugins, userPluginsConfig });\n};\n","// Regular expression to match Hey API Registry input formats:\n\nimport type { Input } from '../../types/input';\n\n// - {organization}/{project}?{queryParams}\nconst registryRegExp = /^([\\w-]+)\\/([\\w-]+)(?:\\?([\\w=&.-]*))?$/;\n\nexport const heyApiRegistryBaseUrl = 'https://get.heyapi.dev';\n\n/**\n * Creates a full Hey API Registry URL.\n *\n * @param organization - Hey API organization slug\n * @param project - Hey API project slug\n * @param queryParams - Optional query parameters\n * @returns The full Hey API registry URL.\n */\nexport const getRegistryUrl = (\n organization: string,\n project: string,\n queryParams?: string,\n): string =>\n `${heyApiRegistryBaseUrl}/${organization}/${project}${queryParams ? `?${queryParams}` : ''}`;\n\nexport interface Parsed {\n organization: string;\n project: string;\n queryParams?: string;\n}\n\n/**\n * Parses a Hey API input string and extracts components.\n *\n * @param input - Hey API configuration input\n * @returns Parsed Hey API input components\n * @throws Error if the input format is invalid\n */\nexport const parseShorthand = (\n input: Omit<Input, 'path'> & {\n path: string;\n },\n): Parsed => {\n let organization = input.organization;\n let project = input.project;\n let queryParams: string | undefined;\n\n if (input.path) {\n const match = input.path.match(registryRegExp);\n\n if (!match) {\n throw new Error(\n `Invalid Hey API shorthand format. Expected \"organization/project?queryParams\" or \"organization/project\", received: ${input.path}`,\n );\n }\n\n organization = match[1];\n project = match[2];\n queryParams = match[3];\n }\n\n if (!organization) {\n throw new Error('The Hey API organization cannot be empty.');\n }\n\n if (!project) {\n throw new Error('The Hey API project cannot be empty.');\n }\n\n const result: Parsed = {\n organization,\n project,\n queryParams,\n };\n\n return result;\n};\n\n/**\n * Transforms a Hey API shorthand string to the corresponding API URL.\n *\n * @param input - Hey API configuration input\n * @returns The Hey API Registry URL\n */\nexport const inputToHeyApiPath = (\n input: Omit<Input, 'path'> & {\n path: string;\n },\n): string => {\n const parsed = parseShorthand(input);\n return getRegistryUrl(\n parsed.organization,\n parsed.project,\n parsed.queryParams,\n );\n};\n","// Regular expression to match ReadMe API Registry input formats:\n// - @{organization}/{project}#{uuid}\n// - {uuid}\nconst registryRegExp = /^(@([\\w-]+)\\/([\\w\\-.]+)#)?([\\w-]+)$/;\n\n/**\n * Creates a full ReadMe API Registry URL.\n *\n * @param uuid - ReadMe UUID\n * @returns The full ReadMe API registry URL.\n */\nexport const getRegistryUrl = (uuid: string): string =>\n `https://dash.readme.com/api/v1/api-registry/${uuid}`;\n\nexport interface Parsed {\n organization?: string;\n project?: string;\n uuid: string;\n}\n\nconst namespace = 'readme';\n\n/**\n * Parses a ReadMe input string and extracts components.\n *\n * @param shorthand - ReadMe format string (@org/project#uuid or uuid)\n * @returns Parsed ReadMe input components\n * @throws Error if the input format is invalid\n */\nexport const parseShorthand = (shorthand: string): Parsed => {\n const match = shorthand.match(registryRegExp);\n\n if (!match) {\n throw new Error(\n `Invalid ReadMe shorthand format. Expected \"${namespace}:@organization/project#uuid\" or \"${namespace}:uuid\", received: ${namespace}:${shorthand}`,\n );\n }\n\n const [, , organization, project, uuid] = match;\n\n if (!uuid) {\n throw new Error('The ReadMe UUID cannot be empty.');\n }\n\n const result: Parsed = {\n organization,\n project,\n uuid,\n };\n\n return result;\n};\n\n/**\n * Transforms a ReadMe shorthand string to the corresponding API URL.\n *\n * @param input - ReadMe format string\n * @returns The ReadMe API Registry URL\n */\nexport const inputToReadmePath = (input: string): string => {\n const shorthand = input.slice(`${namespace}:`.length);\n const parsed = parseShorthand(shorthand);\n return getRegistryUrl(parsed.uuid);\n};\n","// Regular expression to match Scalar API Registry input formats:\n// - @{organization}/{project}\nconst registryRegExp = /^(@[\\w-]+)\\/([\\w.-]+)$/;\n\n/**\n * Creates a full Scalar API Registry URL.\n *\n * @param organization - Scalar organization slug\n * @param project - Scalar project slug\n * @returns The full Scalar API registry URL.\n */\nexport const getRegistryUrl = (organization: string, project: string): string =>\n `https://registry.scalar.com/${organization}/apis/${project}/latest?format=json`;\n\nexport interface Parsed {\n organization: string;\n project: string;\n}\n\nconst namespace = 'scalar';\n\n/**\n * Parses a Scalar input string and extracts components.\n *\n * @param shorthand - Scalar format string (@org/project)\n * @returns Parsed Scalar input components\n * @throws Error if the input format is invalid\n */\nexport const parseShorthand = (shorthand: string): Parsed => {\n const match = shorthand.match(registryRegExp);\n\n if (!match) {\n throw new Error(\n `Invalid Scalar shorthand format. Expected \"${namespace}:@organization/project\", received: ${namespace}:${shorthand}`,\n );\n }\n\n const [, organization, project] = match;\n\n if (!organization) {\n throw new Error('The Scalar organization cannot be empty.');\n }\n\n if (!project) {\n throw new Error('The Scalar project cannot be empty.');\n }\n\n const result: Parsed = {\n organization,\n project,\n };\n\n return result;\n};\n\n/**\n * Transforms a Scalar shorthand string to the corresponding API URL.\n *\n * @param input - Scalar format string\n * @returns The Scalar API Registry URL\n */\nexport const inputToScalarPath = (input: string): string => {\n const shorthand = input.slice(`${namespace}:`.length);\n const parsed = parseShorthand(shorthand);\n return getRegistryUrl(parsed.organization, parsed.project);\n};\n","import type { Input } from '../../types/input';\nimport { heyApiRegistryBaseUrl, inputToHeyApiPath } from './heyApi';\nimport { inputToReadmePath } from './readme';\nimport { inputToScalarPath } from './scalar';\n\nexport const inputToApiRegistry = (\n input: Input & {\n path: string;\n },\n) => {\n if (input.path.startsWith('readme:')) {\n input.path = inputToReadmePath(input.path);\n return;\n }\n\n if (input.path.startsWith('scalar:')) {\n input.path = inputToScalarPath(input.path);\n return;\n }\n\n if (input.path.startsWith('.')) {\n return;\n }\n\n if (input.path.startsWith(heyApiRegistryBaseUrl)) {\n input.path = input.path.slice(heyApiRegistryBaseUrl.length + 1);\n input.path = inputToHeyApiPath(input as Input & { path: string });\n return;\n }\n\n const parts = input.path.split('/');\n const cleanParts = parts.filter(Boolean);\n if (parts.length === 2 && cleanParts.length === 2) {\n input.path = inputToHeyApiPath(input as Input & { path: string });\n }\n};\n","import type { Config, UserConfig } from '../types/config';\nimport type { Input } from '../types/input';\nimport { inputToApiRegistry } from '../utils/input';\nimport { heyApiRegistryBaseUrl } from '../utils/input/heyApi';\n\nconst defaultWatch: Config['input']['watch'] = {\n enabled: false,\n interval: 1_000,\n timeout: 60_000,\n};\n\nconst getWatch = (\n input: Pick<Config['input'], 'path' | 'watch'>,\n): Config['input']['watch'] => {\n let watch = { ...defaultWatch };\n\n // we cannot watch spec passed as an object\n if (typeof input.path !== 'string') {\n return watch;\n }\n\n if (typeof input.watch === 'boolean') {\n watch.enabled = input.watch;\n } else if (typeof input.watch === 'number') {\n watch.enabled = true;\n watch.interval = input.watch;\n } else if (input.watch) {\n watch = {\n ...watch,\n ...input.watch,\n };\n }\n\n return watch;\n};\n\nexport const getInput = (userConfig: UserConfig): Config['input'] => {\n let input: Config['input'] = {\n path: '',\n watch: defaultWatch,\n };\n\n if (typeof userConfig.input === 'string') {\n input.path = userConfig.input;\n } else if (\n userConfig.input &&\n (userConfig.input.path !== undefined ||\n userConfig.input.organization !== undefined)\n ) {\n // @ts-expect-error\n input = {\n ...input,\n path: heyApiRegistryBaseUrl,\n ...userConfig.input,\n };\n\n // watch only remote files\n if (input.watch !== undefined) {\n input.watch = getWatch(input);\n }\n } else {\n input = {\n ...input,\n path: userConfig.input as Record<string, unknown>,\n };\n }\n\n if (typeof input.path === 'string') {\n inputToApiRegistry(input as Input & { path: string });\n }\n\n if (\n userConfig.watch !== undefined &&\n input.watch.enabled === defaultWatch.enabled &&\n input.watch.interval === defaultWatch.interval &&\n input.watch.timeout === defaultWatch.timeout\n ) {\n input.watch = getWatch({\n path: input.path,\n // @ts-expect-error\n watch: userConfig.watch,\n });\n }\n\n return input;\n};\n","import type { UserConfig } from '../types/config';\n\nconst mergeObjects = (\n objA: Record<string, unknown> | undefined,\n objB: Record<string, unknown> | undefined,\n): Record<string, unknown> => {\n const a = objA || {};\n const b = objB || {};\n return {\n ...a,\n ...b,\n };\n};\n\nexport const mergeConfigs = (\n configA: UserConfig | undefined,\n configB: UserConfig | undefined,\n): UserConfig => {\n const a: Partial<UserConfig> = configA || {};\n const b: Partial<UserConfig> = configB || {};\n const merged: UserConfig = {\n ...(a as UserConfig),\n ...(b as UserConfig),\n };\n if (typeof merged.logs === 'object') {\n merged.logs = mergeObjects(\n a.logs as Record<string, unknown>,\n b.logs as Record<string, unknown>,\n );\n }\n return merged;\n};\n","import type { Config, UserConfig } from '../types/config';\n\nexport const 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\n if (typeof userConfig.output === 'string') {\n output.path = userConfig.output;\n } else {\n output = {\n ...output,\n ...userConfig.output,\n };\n }\n\n return output;\n};\n","import fs from 'node:fs';\nimport path from 'node:path';\n\n/**\n * Finds and reads the project's package.json file by searching upwards from the config file location,\n * or from process.cwd() if no config file is provided.\n * This ensures we get the correct dependencies even in monorepo setups.\n *\n * @param configFilePath - The path to the configuration file (e.g., openapi-ts.config.ts)\n * @returns An object containing all project dependencies (dependencies, devDependencies, peerDependencies, optionalDependencies)\n */\nexport const getProjectDependencies = (\n configFilePath?: string,\n): Record<string, string> => {\n let currentDir = configFilePath\n ? path.dirname(configFilePath)\n : process.cwd();\n\n while (currentDir !== path.dirname(currentDir)) {\n const packageJsonPath = path.join(currentDir, 'package.json');\n\n if (fs.existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, 'utf8'),\n );\n return {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n ...packageJson.peerDependencies,\n ...packageJson.optionalDependencies,\n };\n } catch {\n // Silently ignore JSON parsing errors and continue searching\n }\n }\n\n const parentDir = path.dirname(currentDir);\n if (parentDir === currentDir) {\n break;\n }\n currentDir = parentDir;\n }\n\n return {};\n};\n","import path from 'node:path';\n\nimport { loadConfig } from 'c12';\n\nimport { ConfigError } from '../error';\nimport type { Config, UserConfig } from '../types/config';\nimport { isLegacyClient, setConfig } from '../utils/config';\nimport { getInput } from './input';\nimport { getLogs } from './logs';\nimport { mergeConfigs } from './merge';\nimport { getOutput } from './output';\nimport { getProjectDependencies } from './packages';\nimport { getParser } from './parser';\nimport { getPlugins } from './plugins';\n\n/**\n * @internal\n */\nexport const initConfigs = async (\n userConfig: UserConfig | undefined,\n): Promise<{\n dependencies: Record<string, string>;\n results: ReadonlyArray<{\n config: Config;\n errors: ReadonlyArray<Error>;\n }>;\n}> => {\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, configFile: loadedConfigFile } =\n await loadConfig<UserConfig>({\n configFile: configurationFile,\n name: 'openapi-ts',\n });\n\n const dependencies = getProjectDependencies(\n Object.keys(configFromFile).length ? loadedConfigFile : undefined,\n );\n\n const userConfigs: ReadonlyArray<UserConfig> = Array.isArray(userConfig)\n ? userConfig\n : Array.isArray(configFromFile)\n ? configFromFile.map((config) => mergeConfigs(config, userConfig))\n : [mergeConfigs(configFromFile, userConfig)];\n\n const results: Array<{\n config: Config;\n errors: Array<Error>;\n }> = [];\n\n for (const userConfig of userConfigs) {\n const {\n base,\n configFile = '',\n dryRun = false,\n experimentalParser = true,\n exportCore = true,\n interactive = false,\n name,\n request,\n useOptions = true,\n } = userConfig;\n\n const errors: Array<Error> = [];\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 const parser = getParser(userConfig);\n\n if (!input.path) {\n errors.push(\n new ConfigError(\n 'missing input - which OpenAPI specification should we use to generate your output?',\n ),\n );\n }\n\n if (!output.path) {\n errors.push(\n new ConfigError(\n 'missing output - where should we generate your output?',\n ),\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 let plugins: Pick<Config, 'plugins' | 'pluginOrder'>;\n\n try {\n plugins = getPlugins({ dependencies, userConfig });\n } catch (error) {\n errors.push(error);\n plugins = {\n pluginOrder: [],\n plugins: {},\n };\n }\n\n const config = setConfig({\n ...plugins,\n base,\n configFile,\n dryRun,\n experimentalParser,\n exportCore: false,\n input,\n interactive,\n logs,\n name,\n output,\n parser,\n request,\n useOptions,\n });\n config.exportCore = isLegacyClient(config) ? exportCore : false;\n\n if (logs.level === 'debug') {\n console.warn('config:', config);\n }\n\n results.push({\n config,\n errors,\n });\n }\n\n return { dependencies, results };\n};\n","import { getAuthToken } from '../../client-core/bundle/auth';\nimport type { QuerySerializerOptions } from '../../client-core/bundle/bodySerializer';\nimport { jsonBodySerializer } from '../../client-core/bundle/bodySerializer';\nimport {\n serializeArrayParam,\n serializeObjectParam,\n serializePrimitiveParam,\n} from '../../client-core/bundle/pathSerializer';\nimport { getUrl } from '../../client-core/bundle/utils';\nimport type { Client, ClientOptions, Config, RequestOptions } from './types';\n\nexport const createQuerySerializer = <T = unknown>({\n allowReserved,\n array,\n object,\n}: QuerySerializerOptions = {}) => {\n const querySerializer = (queryParams: T) => {\n const search: string[] = [];\n if (queryParams && typeof queryParams === 'object') {\n for (const name in queryParams) {\n const value = queryParams[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n const serializedArray = serializeArrayParam({\n allowReserved,\n explode: true,\n name,\n style: 'form',\n value,\n ...array,\n });\n if (serializedArray) search.push(serializedArray);\n } else if (typeof value === 'object') {\n const serializedObject = serializeObjectParam({\n allowReserved,\n explode: true,\n name,\n style: 'deepObject',\n value: value as Record<string, unknown>,\n ...object,\n });\n if (serializedObject) search.push(serializedObject);\n } else {\n const serializedPrimitive = serializePrimitiveParam({\n allowReserved,\n name,\n value: value as string,\n });\n if (serializedPrimitive) search.push(serializedPrimitive);\n }\n }\n }\n return search.join('&');\n };\n return querySerializer;\n};\n\n/**\n * Infers parseAs value from provided Content-Type header.\n */\nexport const getParseAs = (\n contentType: string | null,\n): Exclude<Config['parseAs'], 'auto'> => {\n if (!contentType) {\n // If no Content-Type header is provided, the best we can do is return the raw response body,\n // which is effectively the same as the 'stream' option.\n return 'stream';\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 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 return;\n};\n\nconst checkForExistence = (\n options: Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n },\n name?: string,\n): boolean => {\n if (!name) {\n return false;\n }\n if (\n options.headers.has(name) ||\n options.query?.[name] ||\n options.headers.get('Cookie')?.includes(`${name}=`)\n ) {\n return true;\n }\n return false;\n};\n\nexport const setAuthParams = async ({\n security,\n ...options\n}: Pick<Required<RequestOptions>, 'security'> &\n Pick<RequestOptions, 'auth' | 'query'> & {\n headers: Headers;\n }) => {\n for (const auth of security) {\n if (checkForExistence(options, auth.name)) {\n continue;\n }\n\n const token = await getAuthToken(auth, options.auth);\n\n if (!token) {\n continue;\n }\n\n const name = auth.name ?? 'Authorization';\n\n switch (auth.in) {\n case 'query':\n if (!options.query) {\n options.query = {};\n }\n options.query[name] = token;\n break;\n case 'cookie':\n options.headers.append('Cookie', `${name}=${token}`);\n break;\n case 'header':\n default:\n options.headers.set(name, token);\n break;\n }\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) =>\n getUrl({\n baseUrl: options.baseUrl as string,\n path: options.path,\n query: options.query,\n querySerializer:\n typeof options.querySerializer === 'function'\n ? options.querySerializer\n : createQuerySerializer(options.querySerializer),\n url: options.url,\n });\n\nexport const mergeConfigs = (a: Config, b: Config): Config => {\n const config = { ...a, ...b };\n if (config.baseUrl?.endsWith('/')) {\n config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);\n }\n config.headers = mergeHeaders(a.headers, b.headers);\n return config;\n};\n\nexport const mergeHeaders = (\n ...headers: Array<Required<Config>['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\ntype ErrInterceptor<Err, Res, Req, Options> = (\n error: Err,\n response: Res,\n request: Req,\n options: Options,\n) => Err | Promise<Err>;\n\ntype ReqInterceptor<Req, Options> = (\n request: Req,\n options: Options,\n) => Req | Promise<Req>;\n\ntype ResInterceptor<Res, Req, Options> = (\n response: Res,\n request: Req,\n options: Options,\n) => Res | Promise<Res>;\n\nclass Interceptors<Interceptor> {\n _fns: (Interceptor | null)[];\n\n constructor() {\n this._fns = [];\n }\n\n clear() {\n this._fns = [];\n }\n\n getInterceptorIndex(id: number | Interceptor): number {\n if (typeof id === 'number') {\n return this._fns[id] ? id : -1;\n } else {\n return this._fns.indexOf(id);\n }\n }\n exists(id: number | Interceptor) {\n const index = this.getInterceptorIndex(id);\n return !!this._fns[index];\n }\n\n eject(id: number | Interceptor) {\n const index = this.getInterceptorIndex(id);\n if (this._fns[index]) {\n this._fns[index] = null;\n }\n }\n\n update(id: number | Interceptor, fn: Interceptor) {\n const index = this.getInterceptorIndex(id);\n if (this._fns[index]) {\n this._fns[index] = fn;\n return id;\n } else {\n return false;\n }\n }\n\n use(fn: Interceptor) {\n this._fns = [...this._fns, fn];\n return this._fns.length - 1;\n }\n}\n\n// `createInterceptors()` response, meant for external use as it does not\n// expose internals\nexport interface Middleware<Req, Res, Err, Options> {\n error: Pick<\n Interceptors<ErrInterceptor<Err, Res, Req, Options>>,\n 'eject' | 'use'\n >;\n request: Pick<Interceptors<ReqInterceptor<Req, Options>>, 'eject' | 'use'>;\n response: Pick<\n Interceptors<ResInterceptor<Res, Req, Options>>,\n 'eject' | 'use'\n >;\n}\n\n// do not add `Middleware` as return type so we can use _fns internally\nexport const createInterceptors = <Req, Res, Err, Options>() => ({\n error: new Interceptors<ErrInterceptor<Err, Res, Req, Options>>(),\n request: new Interceptors<ReqInterceptor<Req, Options>>(),\n response: new Interceptors<ResInterceptor<Res, Req, Options>>(),\n});\n\nconst defaultQuerySerializer = createQuerySerializer({\n allowReserved: false,\n array: {\n explode: true,\n style: 'form',\n },\n object: {\n explode: true,\n style: 'deepObject',\n },\n});\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n};\n\nexport const createConfig = <T extends ClientOptions = ClientOptions>(\n override: Config<Omit<ClientOptions, keyof T> & T> = {},\n): Config<Omit<ClientOptions, keyof T> & T> => ({\n ...jsonBodySerializer,\n headers: defaultHeaders,\n parseAs: 'auto',\n querySerializer: defaultQuerySerializer,\n ...override,\n});\n","import {\n $RefParser,\n getResolvedInput,\n type JSONSchema,\n sendRequest,\n} from '@hey-api/json-schema-ref-parser';\n\nimport { mergeHeaders } from './plugins/@hey-api/client-fetch/bundle';\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"]}
|