@hey-api/openapi-ts 0.77.0 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -14
- package/dist/chunk-RASXZ2HF.js +39 -0
- package/dist/chunk-RASXZ2HF.js.map +1 -0
- package/dist/index.cjs +65 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -3
- package/dist/index.d.ts +8 -3
- package/dist/index.js +171 -171
- package/dist/index.js.map +1 -1
- package/dist/internal.cjs +11 -11
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.cts +10 -3
- package/dist/internal.d.ts +10 -3
- package/dist/internal.js +1 -1
- package/dist/{types.d-CBVwu8Hi.d.cts → types.d-BsTxgeRq.d.cts} +682 -302
- package/dist/{types.d-CBVwu8Hi.d.ts → types.d-BsTxgeRq.d.ts} +682 -302
- package/package.json +1 -1
- package/dist/chunk-EH476QS3.js +0 -39
- package/dist/chunk-EH476QS3.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/getSpec.ts","../src/plugins/@hey-api/client-fetch/bundle/utils.ts","../src/generate/tsConfig.ts","../src/generate/utils.ts","../src/error.ts","../src/ir/pagination.ts","../src/utils/regexp.ts","../src/utils/escape.ts","../src/plugins/@hey-api/client-core/utils.ts","../src/utils/config.ts","../src/compiler/utils.ts","../src/compiler/types.ts","../src/compiler/module.ts","../src/compiler/classes.ts","../src/compiler/convert.ts","../src/compiler/return.ts","../src/compiler/transform.ts","../src/compiler/typedef.ts","../src/compiler/index.ts","../src/openApi/shared/utils/identifier.ts","../src/utils/stringCase.ts","../src/generate/files.ts","../src/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/shared/utils/graph.ts","../src/openApi/common/parser/sanitize.ts","../src/openApi/shared/utils/operation.ts","../src/openApi/shared/utils/filter.ts","../src/openApi/shared/utils/parameter.ts","../src/openApi/shared/utils/validator.ts","../src/openApi/2.0.x/parser/filter.ts","../src/openApi/2.0.x/parser/graph.ts","../src/ir/mediaType.ts","../src/openApi/2.0.x/parser/mediaType.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/index.ts","../src/openApi/3.0.x/parser/filter.ts","../src/openApi/3.0.x/parser/graph.ts","../src/openApi/3.0.x/parser/mediaType.ts","../src/openApi/3.0.x/parser/schema.ts","../src/openApi/3.0.x/parser/pagination.ts","../src/openApi/3.0.x/parser/operation.ts","../src/openApi/3.0.x/parser/parameter.ts","../src/openApi/3.0.x/parser/requestBody.ts","../src/openApi/3.0.x/parser/server.ts","../src/openApi/3.0.x/parser/index.ts","../src/openApi/3.1.x/parser/filter.ts","../src/openApi/3.1.x/parser/graph.ts","../src/openApi/3.1.x/parser/mediaType.ts","../src/openApi/3.1.x/parser/schema.ts","../src/openApi/3.1.x/parser/pagination.ts","../src/openApi/3.1.x/parser/operation.ts","../src/openApi/3.1.x/parser/parameter.ts","../src/openApi/3.1.x/parser/requestBody.ts","../src/openApi/3.1.x/parser/server.ts","../src/openApi/3.1.x/parser/index.ts","../src/openApi/common/parser/service.ts","../src/utils/const.ts","../src/utils/transform.ts","../src/openApi/v3/parser/inferType.ts","../src/openApi/common/parser/stripNamespace.ts","../src/openApi/common/parser/type.ts","../src/utils/unique.ts","../src/openApi/common/parser/getEnums.ts","../src/openApi/common/parser/getPattern.ts","../src/openApi/v2/parser/getModelProperties.ts","../src/openApi/common/parser/getRef.ts","../src/openApi/v2/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v2/parser/getModelComposition.ts","../src/openApi/v2/parser/getModel.ts","../src/openApi/v2/parser/getModels.ts","../src/utils/sort.ts","../src/utils/enum.ts","../src/utils/meta.ts","../src/utils/type.ts","../src/openApi/common/parser/operation.ts","../src/openApi/common/parser/getDefault.ts","../src/openApi/v2/parser/getOperationParameter.ts","../src/openApi/v2/parser/getOperationParameters.ts","../src/openApi/common/parser/sort.ts","../src/openApi/v2/parser/getOperationResponse.ts","../src/openApi/v2/parser/getOperationResponses.ts","../src/openApi/v2/parser/operation.ts","../src/openApi/v2/parser/getOperations.ts","../src/openApi/v2/parser/getServer.ts","../src/openApi/v2/index.ts","../src/openApi/v3/parser/discriminator.ts","../src/openApi/v3/parser/getModelProperties.ts","../src/openApi/v3/parser/getRequiredPropertiesFromComposition.ts","../src/openApi/v3/parser/getModelComposition.ts","../src/openApi/v3/parser/getModel.ts","../src/openApi/v3/parser/parameter.ts","../src/openApi/v3/parser/getModels.ts","../src/openApi/v3/parser/getOperationParameter.ts","../src/openApi/v3/parser/getOperationParameters.ts","../src/openApi/v3/parser/getContent.ts","../src/openApi/v3/parser/getOperationRequestBody.ts","../src/openApi/v3/parser/getOperationResponse.ts","../src/openApi/v3/parser/getOperationResponses.ts","../src/openApi/v3/parser/operation.ts","../src/openApi/v3/parser/getOperations.ts","../src/openApi/v3/parser/getServer.ts","../src/openApi/v3/index.ts","../src/openApi/index.ts","../src/getLogs.ts","../src/plugins/shared/utils/config.ts","../src/plugins/@hey-api/client-core/config.ts","../src/generate/client.ts","../src/plugins/shared/utils/ref.ts","../src/plugins/@hey-api/typescript/ref.ts","../src/plugins/@hey-api/client-core/client.ts","../src/plugins/@hey-api/client-core/createClientConfig.ts","../src/plugins/@hey-api/client-core/plugin.ts","../src/plugins/@hey-api/client-axios/config.ts","../src/plugins/@hey-api/client-fetch/config.ts","../src/plugins/@hey-api/client-next/config.ts","../src/plugins/@hey-api/client-nuxt/config.ts","../src/plugins/@hey-api/legacy-angular/config.ts","../src/plugins/@hey-api/legacy-axios/config.ts","../src/plugins/@hey-api/legacy-fetch/config.ts","../src/plugins/@hey-api/legacy-node/config.ts","../src/plugins/@hey-api/legacy-xhr/config.ts","../src/plugins/@hey-api/schemas/plugin.ts","../src/plugins/@hey-api/schemas/plugin-legacy.ts","../src/plugins/@hey-api/schemas/config.ts","../src/plugins/shared/utils/operation.ts","../src/plugins/@hey-api/sdk/constants.ts","../src/plugins/@hey-api/transformers/plugin.ts","../src/plugins/@hey-api/sdk/auth.ts","../src/plugins/@hey-api/sdk/validator.ts","../src/plugins/@hey-api/sdk/operation.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/plugin.ts","../src/plugins/@hey-api/typescript/config.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/plugin.ts","../src/plugins/valibot/operation.ts","../src/plugins/valibot/config.ts","../src/plugins/zod/constants.ts","../src/plugins/zod/api.ts","../src/plugins/zod/operation.ts","../src/plugins/zod/plugin.ts","../src/plugins/zod/config.ts","../src/plugins/config.ts","../src/initConfigs.ts"],"names":["mergeHeaders","headers","mergedHeaders","header","iterator","key","value","v","getSpec","fetchOptions","inputPath","timeout","watch","refParser","$RefParser","resolvedInput","getResolvedInput","arrayBuffer","hasChanged","response","request","sendRequest","error","eTag","lastModified","content","__filename","fileURLToPath","__dirname","path","findPackageJson","dir","candidates","fs","file","packageJsonPath","findTsConfigPath","tsConfigPath","resolved","loadTsConfig","configPath","raw","ts","ensureDirSync","removeDirSync","relativeModulePath","moduleOutput","sourceOutput","outputParts","isInteractive","HeyApiError","args","event","name","pluginName","message","logCrashReport","logsDir","logName","fullDir","logPath","logContent","stack","openGitHubIssueWithCrashReport","body","search","packageJson","bugsUrl","url","open","printCrashReport","colors","shouldReportCrash","resolve","data","defaultPaginationKeywords","getPaginationKeywordsRegExp","keywords","pattern","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","result","stringToTsNodes","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","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","propertyTypes","signature","isIndexMapped","indexSignature","createTypeUnionNode","createTypeIntersectionNode","createTypeTupleNode","createTypeRecordNode","keys","values","keyNode","valueNode","createTypeArrayNode","compiler","regexps","ensureValidIdentifier","identifier","regexp","uppercaseRegExp","lowercaseRegExp","identifierRegExp","separatorsRegExp","leadingSeparatorsRegExp","separatorsAndIdentifierRegExp","numbersAndIdentifierRegExp","preserveCase","_case","string","isLastCharLower","isLastCharUpper","isLastLastCharUpper","isLastLastCharPreserved","separator","character","nextIndex","nextCharacter","isSeparatorBeforeNextCharacter","characterLower","characterUpper","stringCase","stripLeadingSeparators","match","offset","TypeScriptFile","exportFromIndex","id","identifierCase","$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","propIndex","prop","transformName","transformer","count","create","nameTransformer","nameWithCasingAndTransformer","lowercaseName","nameValue","PluginInstance","props","events","callback","eventSet","server","pathItem","_method","method","originalError","irRef","isRefOpenApiComponent","refToParts","refToName","resolveRef","spec","current","p","IRContext","outputDir","createdFile","schema","dereferenced","instance","getPaginationSchema","hasParameterGroupObjectRequired","parameterGroup","hasParametersObjectRequired","parameterWithPagination","deduplicateSchema","detectFormat","uniqueItems","typeIds","constant","format","typeId","liftedSchema","mergeSchemaAccessScopes","a","b","mergedScopes","scope","assignItems","items","addItemsToSchema","logicalOperator","mutateSchemaOneItem","hasOperationDataRequired","operation","createOperationKey","operationPagination","resolvedSchema","paginationProp","statusCodeToGroup","statusCode","operationResponsesMap","errors","responses","defaultResponse","inferred","description","errorKeys","errorUnion","responseKeys","responseUnion","stringToNamespace","namespaceNeedle","addNamespace","removeNamespace","ensureValidTypeScriptJavaScriptIdentifier","replaced","sanitizeNamespaceIdentifier","sanitizeOperationParameterName","withoutBrackets","httpMethods","operationToId","state","urlWithoutPlaceholders","createFiltersSetAndRegExps","filters","collectFiltersSetFromRegExpsOpenApiV2","excludeOperations","excludeSchemas","includeOperations","includeSchemas","entry","collectFiltersSetFromRegExpsOpenApiV3","excludeParameters","excludeRequestBodies","excludeResponses","includeParameters","includeRequestBodies","includeResponses","collectFiltersSetFromRegExps","createFilters","hasFilters","collectOperations","graph","requestBodies","schemas","finalSet","tag","dependency","collectParameters","collectRequestBodies","collectResponses","collectSchemas","dropExcludedParameters","excludedKey","dropExcludedRequestBodies","dropExcludedResponses","dropExcludedSchemas","dropOrphans","operationDependencies","collectOperationDependencies","operations","dependencies","createFilteredDependencies","mergeParametersObjects","source","target","isSimpleKey","formatPath","segment","i","formatValidatorIssue","issue","pathStr","level","highlightedMessage","code","shouldPrint","handleValidatorResult","filterSpec","preserveOrder","filtered","collectSchemaDependencies","createGraph","validate","issues","operationIds","operationKey","fileLikeRegExp","jsonMimeRegExp","multipartFormDataMimeRegExp","textMimeRegExp","xWwwFormUrlEncodedMimeRegExp","octetStreamMimeRegExp","isMediaTypeFileLike","mediaType","mediaTypeToIrMediaType","contentToSchema","mediaTypeObjects","mimeTypes","objects","discriminatorValues","mapping","getSchemaType","parseSchemaJsDoc","irSchema","parseSchemaMeta","parseArray","schemaItems","irItemsSchema","schemaToIrSchema","ofArray","parseBoolean","parseNumber","parseObject","schemaProperties","irPropertySchema","irAdditionalPropertiesSchema","parseString","initIrSchema","parseAllOf","schemaType","compositionSchemas","compositionSchema","irCompositionSchema","valueSchemas","irDiscriminatorSchema","irRefSchema","irObjectSchema","parseOneType","requiredProperty","finalCompositionSchema","nestedItems","parseEnum","enumValue","typeOfEnumValue","enumType","irTypeSchema","refSchema","parseNullableType","typeIrSchema","parseType","parseUnknown","parseSchema","isPaginationType","paginationField","finalSchema","allOf","pagination","parseOperationJsDoc","irOperation","initIrOperation","operationToIrOperation","securitySchemesMap","isRequestBodyRequired","requestBodyObject","requestBodyObjectRequired","requestBodyParameter","requestBody","contents","responseObject","securitySchemeObjects","securityRequirementObject","securitySchemeObject","irSecuritySchemeObject","parseOperation","defaultExplode","collectionFormat","defaultStyle","_in","parametersArrayToObject","parametersObject","parameterOrReference","parameterToIrParameter","style","irParameter","parseUrlRegExp","parseUrl","errorResponse","host","protocol","parseServers","schemes","servers","scheme","parseV2_0_X","shouldFilterSpec","sets","finalPathItem","commonOperation","operationArgs","media","parseAnyOf","parseOneOf","defaultAllowReserved","explode","parseParameter","requestBodyToIrRequestBody","irRequestBody","parseRequestBody","parseV3_0_X","securityOrReference","requestBodyOrReference","getSchemaTypes","irItemSchema","parseNull","schemaTypes","irResolvedRefSchema","parseManyTypes","nonNullCompositionSchemas","parseV3_1_X","allowedServiceMethods","getServiceVersion","version","refParametersPartial","refSchemasPartial","transformClassName","customName","transformTypeName","cleanAndTransformTypeName","transformed","inferType","definition","definitionTypes","isDefinitionTypeNullable","getDefinitionTypes","isDefinitionNullable","stripNamespace","getMappedType","hasSquareBracketsRegExp","getType","debug","joinedType","mapped","typeWithoutNamespace","matches","match1","match2","encodedType","unique","arr","getEnums","descriptions","names","getPattern","getModelProperties","getModel","openApi","models","propertyName","propertyRequired","model","ESCAPED_REF_SLASH","ESCAPED_REF_TILDE","getRef","paths","decodedPath","getRequiredPropertiesFromComposition","definitions","getModelComposition","composition","hasProperties","hasEnums","requiredProperties","modelProperties","modelProperty","isDefinition","meta","definitionRef","enums","arrayItems","additionalProperties","definitionType","getModels","definitionName","sort","nameA","nameB","sorterByName","sortByName","enumKey","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","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","map","m2","findOneOfParentDiscriminator","parent","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","getLogs","userConfig","logs","definePluginConfig","defaultConfig","clientDefaultConfig","clientDefaultMeta","getClientSrcPath","pluginFilePathComponents","clientModulePath","clientSrcPath","outputPath","clientApi","replaceRelativeImports","importPath","lastSlashIndex","generateClientBundle","coreOutputPath","coreDistPath","coreFiles","clientOutputPath","clientDistFolderName","clientDistPath","clientFiles","dirPath","clientModulePathComponents","__require","distFiles","operationIrRef","parameterId","affix","separate","typesId","refIdentifier","onGet","importIdentifier","resolveBaseUrlString","baseUrl","createClient","clientModule","createConfig","clientOptions","createClientConfig","defaultValues","resolvedBaseUrl","createConfigParameters","createClientConfigType","configType","defaultClientOptions","defaultClientOptionsType","tType","typeCreateClientConfig","clientPluginHandler","defineConfig","schemasId","stripSchema","schemaToJsonSchemaDraft_04","_schema","schemaToJsonSchemaDraft_05","schemaToJsonSchema2020_12","schemaName","schemasV2_0_X","schemasV3_0_X","schemasV3_1_X","handler","ensureValidSchemaOutput","parentKey","toSchemaName","validName","handlerLegacy","files","addSchema","createOperationComment","isOperationOptionsRequired","isNuxtClient","nuxtTypeComposable","nuxtTypeDefault","nuxtTypeResponse","sdkId","bigIntExpressions","dataExpression","bigIntCallExpression","dateExpressions","identifierDate","operationTransformerIrRef","schemaIrRef","schemaResponseTransformerRef","transformersId","dataVariableName","ensureStatements","isNodeReturnStatement","schemaResponseTransformerNodes","identifierData","processSchemaType","callExpression","mapCallbackStatements","stmt","propertyAccessExpression","propertyNodes","noNullableTypesInSchema","x","arrayNodes","identifierItem","identifierResponse","identifierResponseTransformer","responseTransformerNode","securitySchemeObjectToAuthObject","operationAuth","auth","authObject","createRequestValidator","pluginValidator","createResponseValidator","operationClassName","getOperationMethodName","operationClasses","classNames","className","methodName","classCandidates","methodCandidate","rootClasses","rootClass","finalClassName","operationOptionsType","throwOnError","optionsName","getResponseType","contentType","cleanContent","operationStatements","isRequiredOptions","sdkOutput","identifierError","requestOptions","requestValidator","identifierTransformer","responseType","responseValidator","parameterContentType","spread","errorType","heyApiClient","optionsClient","clientExpression","generateImport","onImport","setUniqueTypeNameArgs","created","modelResponseTransformerTypeName","operationDataTypeName","operationErrorTypeName","operationResponseTransformerTypeName","operationResponseTypeName","operationOptionsLegacyParserType","importedType","toOperationParamType","isRequired","getDefaultPrintable","typePath","toOperationReturnType","toOperationComment","params","toRequestOptions","onClientImport","responseTransformerName","toObj","prev","curr","errorResponses","serviceFunctionIdentifier","handleIllegal","toOperationStatements","processService","onNode","service","clientPlugin","throwOnErrorTypeGeneric","compileFunctionParams","_members","member","imported","createTypeOptions","tDataShape","clientType","typeOptions","createClientClassNodes","clientAssignmentStatement","generateClassSdk","sdkClasses","generatedClasses","clientClassNodes","classes","currentClassName","parentClassName","parentClass","currentClass","functionNode","generateClass","childClassName","childClass","sdkClass","generateFlatSdk","treeName","emptyModel","generateEnum","leadingComment","generateType","onCreated","processComposition","enumDeclarations","processType","processEnum","processScopedEnum","processModel","processServiceTypes","pathsMap","pathMap","methodMap","bodyParameters","bodyParameter","headerParameters","queryParameters","operationProperties","methodParameters","operationName","reqKey","reqResParameters","resKey","isVoidResponse","getRefModels","refModel","ensureModelResponseTransformerExists","modelName","generateResponseTransformer","processArray","refModels","nameModelResponseTransformer","processProperty","onRemoveNode","nonVoidResponses","nameCreated","fieldName","createSchemaComment","stringType","serverToBaseUrlType","createClientOptions","typeClientOptions","scopeToRef","accessScope","refParts","nameBuilder","processedName","processNameBuilder","shouldSkipSchema","stateAccessScope","addJavaScriptEnum","enumObject","schemaToEnumObject","typeofItems","typeOfItemConst","addTypeEnum","schemaToType","shouldCreateTypeScriptEnum","addTypeScriptEnum","arrayTypeToIdentifier","itemTypes","booleanTypeToIdentifier","enumTypeToIdentifier","isRefComponent","shouldExportEnum","objectNode","enumNode","numberTypeToIdentifier","objectTypeToIdentifier","indexPropertyItems","hasOptionalProperties","hasSkippedProperties","propertyType","stringTypeToIdentifier","tupleTypeToIdentifier","schemaTypeToIdentifier","irParametersToIrSchema","operationToDataType","dataRequired","operationToType","identifierErrors","errorsType","keyofType","identifierResponses","responsesType","isSchemaSplit","scopes","hasSchemaScope","finalRef","useTypeData","useTypeError","typeError","axiosError","useTypeResponse","createQueryKeyFn","queryKeyName","TOptionsType","infiniteIdentifier","optionsIdentifier","createQueryKeyFunction","identifierCreateQueryKey","fn","createQueryKeyLiteral","isInfinite","createQueryKeyType","queryKeyType","queryKeyStatement","typeQueryKey","typeData","createInfiniteParamsFn","infiniteQueryOptionsFn","createInfiniteParamsFunction","identifierCreateInfiniteParams","createInfiniteQueryOptions","queryFn","typeResponse","typePageObjectParam","pluginTypeScript","typePageParam","identifierInfiniteQueryKey","awaitSdkExpression","identifierInfiniteQueryOptions","mutationOptionsFn","createMutationOptions","mutationsType","mutationType","queryOptionsFn","createQueryOptions","identifierQueryKey","identifierQueryOptions","sdkPlugin","toInfiniteQueryOptionsName","toMutationOptionsName","toQueryOptionsName","toQueryKeyName","getPaginationIn","createTypeData","typesModulePath","nameTypeData","createTypeError","nameTypeError","createTypeResponse","nameTypeResponse","typeInfiniteData","hasCreateInfiniteParamsFunction","hasCreateQueryKeyParamsFunction","hasInfiniteQueries","hasMutations","hasQueries","processedOperations","hasUsedQueryFn","paginationParameter","enabled","fastifyId","operationToRouteHandler","fileTypes","errorsTypeReference","responsesTypeReference","replyTypes","routeHandlers","routeHandler","valibotId","requests","schemaIdentifier","dataParameterName","api","operationToValibotSchema","schemaData","schemaToValibotSchema","pipesToExpression","pipes","arrayTypeToValibotSchema","arrayExpression","unknownTypeToValibotSchema","itemExpressions","schemaPipes","booleanTypeToValibotSchema","enumTypeToValibotSchema","enumMembers","resultExpression","neverTypeToValibotSchema","_props","nullTypeToValibotSchema","numberParameter","isBigInt","numberTypeToValibotSchema","objectTypeToValibotSchema","stringTypeToValibotSchema","tupleTypeToValibotSchema","tupleElements","undefinedTypeToValibotSchema","voidTypeToValibotSchema","schemaTypeToValibotSchema","_identifier","optional","anyType","isCircularReference","identifierRef","lazyExpression","valibotSchema","intersectExpression","unionExpression","readonlyExpression","callParameter","zodId","operationToZodSchema","schemaToZodSchema","andIdentifier","arrayIdentifier","coerceIdentifier","defaultIdentifier","describeIdentifier","intersectionIdentifier","lazyIdentifier","lengthIdentifier","literalIdentifier","maxIdentifier","minIdentifier","objectIdentifier","optionalIdentifier","readonlyIdentifier","recordIdentifier","regexIdentifier","unionIdentifier","zIdentifier","arrayTypeToZodSchema","unknownTypeToZodSchema","booleanTypeToZodSchema","enumTypeToZodSchema","enumExpression","neverTypeToZodSchema","nullTypeToZodSchema","numberTypeToZodSchema","numberExpression","objectTypeToZodSchema","propertyExpression","zodSchema","stringTypeToZodSchema","stringExpression","tupleTypeToZodSchema","undefinedTypeToZodSchema","voidTypeToZodSchema","schemaTypeToZodSchema","firstSchema","defaultPluginConfigs","defaultPlugins","defaultWatch","getInput","input","getWatch","getPluginsConfig","userPlugins","userPluginsConfig","circularReferenceTracker","pluginOrder","plugins","dfs","defaultPlugin","userPlugin","errorMessage","defaultValue","mappers","mapper","getOutput","isPluginClient","getPlugins","definedPlugins","mergeObjects","objA","objB","mergeConfigs","configA","configB","merged","initConfigs","configurationFile","configFromFile","loadConfig","userConfigs","results","configFile","dryRun","experimentalParser","exportCore","useOptions"],"mappings":"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","file":"chunk-EH476QS3.js","sourcesContent":["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","import { getAuthToken } from '../../client-core/bundle/auth';\nimport type {\n QuerySerializer,\n QuerySerializerOptions,\n} 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 type { Client, ClientOptions, Config, RequestOptions } from './types';\n\ninterface PathSerializer {\n path: Record<string, unknown>;\n url: string;\n}\n\nconst PATH_PARAM_RE = /\\{[^{}]+\\}/g;\n\ntype ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited';\ntype MatrixStyle = 'label' | 'matrix' | 'simple';\ntype ArraySeparatorStyle = ArrayStyle | MatrixStyle;\n\nconst defaultPathSerializer = ({ path, url: _url }: PathSerializer) => {\n let url = _url;\n const matches = _url.match(PATH_PARAM_RE);\n if (matches) {\n for (const match of matches) {\n let explode = false;\n let name = match.substring(1, match.length - 1);\n let style: ArraySeparatorStyle = 'simple';\n\n if (name.endsWith('*')) {\n explode = true;\n name = name.substring(0, name.length - 1);\n }\n\n if (name.startsWith('.')) {\n name = name.substring(1);\n style = 'label';\n } else if (name.startsWith(';')) {\n name = name.substring(1);\n style = 'matrix';\n }\n\n const value = path[name];\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (Array.isArray(value)) {\n url = url.replace(\n match,\n serializeArrayParam({ explode, name, style, value }),\n );\n continue;\n }\n\n if (typeof value === 'object') {\n url = url.replace(\n match,\n serializeObjectParam({\n explode,\n name,\n style,\n value: value as Record<string, unknown>,\n valueOnly: true,\n }),\n );\n continue;\n }\n\n if (style === 'matrix') {\n url = url.replace(\n match,\n `;${serializePrimitiveParam({\n name,\n value: value as string,\n })}`,\n );\n continue;\n }\n\n const replaceValue = encodeURIComponent(\n style === 'label' ? `.${value as string}` : (value as string),\n );\n url = url.replace(match, replaceValue);\n }\n }\n return url;\n};\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\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 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 return;\n }\n};\n\nexport const buildUrl: Client['buildUrl'] = (options) => {\n const url = 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 return url;\n};\n\nexport const getUrl = ({\n baseUrl,\n path,\n query,\n querySerializer,\n url: _url,\n}: {\n baseUrl?: string;\n path?: Record<string, unknown>;\n query?: Record<string, unknown>;\n querySerializer: QuerySerializer;\n url: string;\n}) => {\n const pathUrl = _url.startsWith('/') ? _url : `/${_url}`;\n let url = (baseUrl ?? '') + pathUrl;\n if (path) {\n url = defaultPathSerializer({ path, url });\n }\n let search = query ? querySerializer(query) : '';\n if (search.startsWith('?')) {\n search = search.substring(1);\n }\n if (search) {\n url += `?${search}`;\n }\n return 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 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 const isInteractive = process.stdin.isTTY && process.stdout.isTTY;\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 = (error: unknown, logsDir: string): string => {\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\nexport const shouldReportCrash = async (): Promise<boolean> => {\n if (!isInteractive) {\n return false;\n }\n\n return new Promise((resolve) => {\n process.stdout.write(\n `${colors.yellow('\\n\\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 } from '../types/config';\nimport type { IR } from './types';\n\nexport const defaultPaginationKeywords = [\n 'after',\n 'before',\n 'cursor',\n 'offset',\n 'page',\n 'start',\n] as const;\n\nexport function getPaginationKeywordsRegExp({\n keywords = defaultPaginationKeywords,\n}: Config['input']['pagination'] = {}): RegExp {\n if (!keywords.length) {\n keywords = defaultPaginationKeywords;\n }\n const pattern = `^(${keywords.join('|')})$`;\n return new RegExp(pattern);\n}\n\nexport interface Pagination {\n in: string;\n name: string;\n schema: IR.SchemaObject;\n}\n","/**\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 alias?: string;\n asType?: boolean;\n name: string;\n}\n\nconst printer = ts.createPrinter({\n newLine: ts.NewLineKind.LineFeed,\n removeComments: false,\n});\n\nexport const createSourceFile = (sourceText: string) =>\n ts.createSourceFile(\n '',\n sourceText,\n ts.ScriptTarget.ESNext,\n false,\n ts.ScriptKind.TS,\n );\n\nconst blankSourceFile = createSourceFile('');\n\nconst unescapeUnicode = (value: string) =>\n value.replace(/\\\\u([0-9a-fA-F]{4})/g, (_, hex: string) =>\n String.fromCharCode(Number.parseInt(hex, 16)),\n );\n\n/**\n * Print a TypeScript node to a string.\n * @param node the node to print\n * @returns string\n */\nexport function tsNodeToString({\n node,\n unescape = false,\n}: {\n node: ts.Node;\n unescape?: boolean;\n}): string {\n const result = printer.printNode(\n ts.EmitHint.Unspecified,\n node,\n blankSourceFile,\n );\n\n if (!unescape) {\n return result;\n }\n\n try {\n /**\n * TypeScript Compiler API escapes unicode characters by default and there\n * is no way to disable this behavior\n * {@link https://github.com/microsoft/TypeScript/issues/36174}\n */\n return unescapeUnicode(result);\n } catch {\n if (getConfig().logs.level === 'debug') {\n console.warn('Could not decode value:', result);\n }\n return result;\n }\n}\n\n/**\n * Convert a string to a TypeScript Node\n * @param value the string to convert.\n * @returns ts.Node\n */\nexport function stringToTsNodes(value: string): ts.Node {\n const file = createSourceFile(value);\n return file.statements[0]!;\n}\n\nexport const createIdentifier = ({ text }: { text: string }) => {\n const identifier = ts.factory.createIdentifier(text);\n return identifier;\n};\n\nexport const createThis = () => 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: 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 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?: 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;\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 createIdentifier({ text: name }),\n members,\n );\n\n addLeadingComments({\n comments,\n node,\n });\n\n return node;\n};\n\nconst createEnumMember = ({\n initializer,\n name,\n}: {\n initializer?: ts.Expression;\n name: string | ts.PropertyName;\n}) => {\n let key = name;\n if (typeof key === 'string') {\n if (key.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 createStringLiteral = ({\n isSingleQuote,\n text,\n}: {\n isSingleQuote?: boolean;\n text: string;\n}) => {\n if (isSingleQuote === undefined) {\n isSingleQuote = !text.includes(\"'\");\n }\n const node = ts.factory.createStringLiteral(text, isSingleQuote);\n return node;\n};\n\nexport const createConditionalExpression = ({\n condition,\n whenFalse,\n whenTrue,\n}: {\n condition: ts.Expression;\n whenFalse: ts.Expression;\n whenTrue: ts.Expression;\n}) => {\n const expression = ts.factory.createConditionalExpression(\n condition,\n ts.factory.createToken(ts.SyntaxKind.QuestionToken),\n whenTrue,\n ts.factory.createToken(ts.SyntaxKind.ColonToken),\n whenFalse,\n );\n return expression;\n};\n\nexport const createTypeOfExpression = ({ text }: { text: string }) => {\n const expression = ts.factory.createTypeOfExpression(\n createIdentifier({ text }),\n );\n return expression;\n};\n\n/**\n * Create a type alias declaration. Example `export type X = Y;`.\n * @param comment (optional) comments to add\n * @param name the name of the type\n * @param type the type\n * @returns ts.TypeAliasDeclaration\n */\nexport const createTypeAliasDeclaration = ({\n comment,\n exportType,\n name,\n type,\n typeParameters = [],\n}: {\n comment?: Comments;\n exportType?: boolean;\n name: string;\n type: string | ts.TypeNode;\n typeParameters?: FunctionTypeParameter[];\n}): ts.TypeAliasDeclaration => {\n const node = ts.factory.createTypeAliasDeclaration(\n exportType ? [createModifier({ keyword: 'export' })] : undefined,\n createIdentifier({ text: name }),\n toTypeParameters(typeParameters),\n createTypeNode(type),\n );\n\n addLeadingComments({\n comments: comment,\n node,\n });\n\n return node;\n};\n\nexport const createTypeReferenceNode = ({\n typeArguments,\n typeName,\n}: {\n typeArguments?: ts.TypeNode[];\n typeName: string | ts.EntityName;\n}) => {\n const node = ts.factory.createTypeReferenceNode(typeName, typeArguments);\n return node;\n};\n\nexport const createTypeParenthesizedNode = ({\n type,\n}: {\n type: ts.TypeNode;\n}) => {\n const node = ts.factory.createParenthesizedType(type);\n return node;\n};\n\nexport const createParameterDeclaration = ({\n initializer,\n modifiers,\n name,\n required = true,\n type,\n}: {\n initializer?: ts.Expression;\n modifiers?: 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: Array<ts.Statement>;\n}) => ts.factory.createBlock(statements, multiLine);\n\nexport const createPropertyAssignment = ({\n initializer,\n name,\n}: {\n initializer: ts.Expression;\n name: string | ts.PropertyName;\n}) => ts.factory.createPropertyAssignment(name, initializer);\n\nexport const createRegularExpressionLiteral = ({\n flags = [],\n text,\n}: {\n flags?: ReadonlyArray<'g' | 'i' | 'm' | 's' | 'u' | 'y'>;\n text: string;\n}) => {\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;\n // TODO: support a more intuitive definition of generics for example\n typeName?: string | ts.IndexedAccessTypeNode | ts.TypeNode;\n}): ts.VariableStatement => {\n const initializer = assertion\n ? createAsExpression({\n expression,\n type:\n typeof assertion === 'string'\n ? createTypeReferenceNode({ typeName: assertion })\n : assertion,\n })\n : expression;\n const nameIdentifier = createIdentifier({ text: name });\n const declaration = ts.factory.createVariableDeclaration(\n destructure\n ? ts.factory.createObjectBindingPattern([\n ts.factory.createBindingElement(\n undefined,\n undefined,\n nameIdentifier,\n undefined,\n ),\n ])\n : nameIdentifier,\n undefined,\n typeName\n ? typeof typeName === 'string'\n ? createTypeReferenceNode({ typeName })\n : typeName\n : undefined,\n initializer,\n );\n const statement = ts.factory.createVariableStatement(\n exportConst ? [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?: string;\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: createKeywordTypeNode({ keyword: 'string' }),\n typeParameter: createTypeParameterDeclaration({\n constraint: createTypeReferenceNode({ typeName: 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: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createUnionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type intersection node. Example `string & number & boolean`\n * @param types - the types in the union\n * @param isNullable - if the whole type can be null\n * @returns ts.IntersectionTypeNode | ts.UnionTypeNode\n */\nexport const createTypeIntersectionNode = ({\n isNullable,\n types,\n}: {\n isNullable?: boolean;\n types: (any | ts.TypeNode)[];\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createIntersectionTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type tuple node. Example `string, number, boolean`\n * @param isNullable if the whole type can be null\n * @param types the types in the union\n * @returns ts.UnionTypeNode\n */\nexport const createTypeTupleNode = ({\n isNullable = false,\n types,\n}: {\n isNullable?: boolean;\n types: Array<any | ts.TypeNode>;\n}) => {\n const nodes = types.map((type) => createTypeNode(type));\n const node = ts.factory.createTupleTypeNode(nodes);\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type record node. Example `{ [key: string]: string }`\n * @param keys - key types.\n * @param values - value types.\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeRecordNode = (\n keys: (any | ts.TypeNode)[],\n values: (any | ts.TypeNode)[],\n isNullable: boolean = false,\n useLegacyResolution: boolean = true,\n) => {\n const keyNode = createTypeUnionNode({\n types: keys,\n });\n const valueNode = createTypeUnionNode({\n types: values,\n });\n // NOTE: We use the syntax `{ [key: string]: string }` because using a Record causes\n // invalid types with circular dependencies. This is functionally the same.\n // Ref: https://github.com/hey-api/openapi-ts/issues/370\n const node = createTypeInterfaceNode({\n properties: [\n {\n name: `[key: ${tsNodeToString({ node: keyNode, unescape: true })}]`,\n type: valueNode,\n },\n ],\n useLegacyResolution,\n });\n return maybeNullable({ isNullable, node });\n};\n\n/**\n * Create type array node. Example `Array<string | number>`\n * @param types - the types\n * @param isNullable - if the whole type can be null\n * @returns ts.TypeReferenceNode | ts.UnionTypeNode\n */\nexport const createTypeArrayNode = (\n types: (any | ts.TypeNode)[] | ts.TypeNode | string,\n isNullable: boolean = false,\n) => {\n const node = createTypeReferenceNode({\n typeArguments: [\n // @ts-expect-error\n Array.isArray(types) ? createTypeUnionNode({ types }) : types,\n ],\n typeName: 'Array',\n });\n return maybeNullable({ isNullable, node });\n};\n","import * as classes from './classes';\nimport * as convert from './convert';\nimport * as module from './module';\nimport * as _return from './return';\nimport * as transform from './transform';\nimport * as typedef from './typedef';\nimport * as types from './types';\nimport * as utils from './utils';\n\nexport type { Property } from './typedef';\nexport type { FunctionParameter } from './types';\nexport type { Comments } from './utils';\n\nexport const compiler = {\n anonymousFunction: types.createAnonymousFunction,\n arrayLiteralExpression: types.createArrayLiteralExpression,\n arrowFunction: types.createArrowFunction,\n asExpression: types.createAsExpression,\n assignment: types.createAssignment,\n awaitExpression: types.createAwaitExpression,\n binaryExpression: transform.createBinaryExpression,\n block: types.createBlock,\n callExpression: module.createCallExpression,\n classDeclaration: classes.createClassDeclaration,\n conditionalExpression: types.createConditionalExpression,\n constVariable: module.createConstVariable,\n constructorDeclaration: classes.createConstructorDeclaration,\n enumDeclaration: types.createEnumDeclaration,\n exportAllDeclaration: module.createExportAllDeclaration,\n exportNamedDeclaration: module.createNamedExportDeclarations,\n expressionToStatement: convert.expressionToStatement,\n forOfStatement: types.createForOfStatement,\n functionTypeNode: types.createFunctionTypeNode,\n identifier: utils.createIdentifier,\n ifStatement: transform.createIfStatement,\n indexedAccessTypeNode: types.createIndexedAccessTypeNode,\n isTsNode: utils.isTsNode,\n keywordTypeNode: types.createKeywordTypeNode,\n literalTypeNode: types.createLiteralTypeNode,\n mappedTypeNode: types.createMappedTypeNode,\n methodDeclaration: classes.createMethodDeclaration,\n namedImportDeclarations: module.createNamedImportDeclarations,\n namespaceDeclaration: types.createNamespaceDeclaration,\n newExpression: types.createNewExpression,\n nodeToString: utils.tsNodeToString,\n null: types.createNull,\n objectExpression: types.createObjectType,\n ots: utils.ots,\n parameterDeclaration: types.createParameterDeclaration,\n propertyAccessExpression: types.createPropertyAccessExpression,\n propertyAccessExpressions: transform.createPropertyAccessExpressions,\n propertyAssignment: types.createPropertyAssignment,\n 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 stringToTsNodes: utils.stringToTsNodes,\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","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 { compiler } from '../compiler';\nimport { type ImportExportItemObject, tsNodeToString } from '../compiler/utils';\nimport type { IR } from '../ir/types';\nimport { ensureValidIdentifier } from '../openApi/shared/utils/identifier';\nimport type { StringCase } from '../types/case';\nimport { stringCase } from '../utils/stringCase';\nimport { ensureDirSync } from './utils';\n\nexport interface Identifier {\n /**\n * Did this function add a new property to the file's `identifiers` map?\n */\n created: boolean;\n /**\n * The resolved identifier name. False means the identifier has been blacklisted.\n */\n name: string | false;\n}\n\ntype NamespaceEntry = Pick<Identifier, 'name'> & {\n /**\n * Ref to the type in OpenAPI specification.\n */\n $ref: string;\n};\n\nexport type Identifiers = Record<\n string,\n {\n /**\n * TypeScript enum only namespace.\n *\n * @example\n * ```ts\n * export enum Foo = {\n * FOO = 'foo'\n * }\n * ```\n */\n enum?: Record<string, NamespaceEntry>;\n /**\n * Type namespace. Types, interfaces, and type aliases exist here.\n *\n * @example\n * ```ts\n * export type Foo = string;\n * ```\n */\n type?: Record<string, NamespaceEntry>;\n /**\n * Value namespace. Variables, functions, classes, and constants exist here.\n *\n * @example\n * ```js\n * export const foo = '';\n * ```\n */\n value?: Record<string, NamespaceEntry>;\n }\n>;\n\ntype Namespace = keyof Identifiers[keyof Identifiers];\n\nexport type FileImportResult = Pick<ImportExportItemObject, 'asType' | 'name'>;\n\nexport class TypeScriptFile {\n /**\n * Should the exports from this file be re-exported in the index barrel file?\n */\n private _exportFromIndex: boolean;\n private _headers: Array<string> = [];\n private _id: string;\n private _identifierCase: StringCase | undefined;\n private _imports = new Map<string, Map<string, ImportExportItemObject>>();\n private _items: Array<ts.Node | string> = [];\n private _name: string;\n private _path: string;\n\n public identifiers: Identifiers = {};\n\n /**\n * Path relative to the client output root.\n */\n // TODO: parser - add relative path property for quick access, currently\n // everything is resolved into an absolute path with cwd\n // public relativePath: string;\n\n public constructor({\n dir,\n exportFromIndex = false,\n header = true,\n id,\n identifierCase,\n name,\n }: {\n dir: string;\n /**\n * Should the exports from this file be re-exported in the index barrel file?\n */\n exportFromIndex?: boolean;\n header?: boolean;\n /**\n * Unique file ID. Used to generate correct relative paths to the file.\n * This should be refactored later as it's basically the file name unless\n * nested inside another folder.\n */\n id: string;\n identifierCase?: StringCase;\n name: string;\n }) {\n this._exportFromIndex = exportFromIndex;\n this._id = id;\n this._identifierCase = identifierCase;\n this._name = this._setName(name);\n this._path = path.resolve(dir, this._name);\n\n if (header) {\n this._headers.push(\n '// This file is auto-generated by @hey-api/openapi-ts',\n );\n }\n }\n\n public add(...nodes: Array<ts.Node | string>) {\n this._items = this._items.concat(nodes);\n }\n\n /**\n * Prevents a specific identifier from being created. This is useful for\n * transformers where we know a certain transformer won't be needed, and\n * we want to avoid attempting to create since we know it won't happen.\n */\n public blockIdentifier({\n $ref,\n namespace,\n }: Pick<EnsureUniqueIdentifierData, '$ref'> & {\n namespace: 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 public get id(): string {\n return this._id;\n }\n\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._identifierCase,\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 module,\n ...importedItem\n }: ImportExportItemObject & {\n module: string;\n }): FileImportResult {\n let moduleMap = this._imports.get(module);\n\n if (!moduleMap) {\n moduleMap = new Map<string, ImportExportItemObject>();\n this._imports.set(module, moduleMap);\n }\n\n const match = moduleMap.get(importedItem.name);\n if (match) {\n return {\n ...match,\n name: match.alias || match.name,\n };\n }\n\n moduleMap.set(importedItem.name, importedItem);\n return {\n ...importedItem,\n name: importedItem.alias || importedItem.name,\n };\n }\n\n public isEmpty() {\n return !this._items.length;\n }\n\n public nameWithoutExtension() {\n const { name } = splitNameAndExtension(this._name);\n return name;\n }\n\n public relativePathToFile({\n context,\n id,\n }: {\n context: IR.Context;\n id: string;\n }): string {\n let filePath = '';\n\n // relative file path\n if (id.startsWith('.')) {\n let configFileParts: Array<string> = [];\n // if providing a custom configuration file, relative paths must resolve\n // relative to the configuration file.\n if (context.config.configFile) {\n const cfgParts = context.config.configFile.split('/');\n configFileParts = cfgParts.slice(0, cfgParts.length - 1);\n }\n filePath = path.resolve(process.cwd(), ...configFileParts, id);\n } else {\n const file = context.file({ id });\n if (!file) {\n throw new Error(`File with id ${id} does not exist`);\n }\n filePath = file._path;\n }\n\n const thisPathParts = this._path.split(path.sep);\n const filePathParts = filePath.split(path.sep);\n\n let index = -1;\n let relativePath = '';\n for (const part of thisPathParts) {\n index += 1;\n if (filePathParts[index] !== part) {\n const pathArray = Array.from({\n length: thisPathParts.length - index,\n }).fill('');\n const relativePathToFile = filePathParts.slice(index);\n const relativeFolder = relativePathToFile.slice(\n 0,\n relativePathToFile.length - 1,\n );\n if (relativeFolder.length) {\n relativeFolder.push('');\n }\n relativePath =\n (pathArray.join('../') || './') + relativeFolder.join('/');\n break;\n }\n }\n\n const fileName = filePathParts[filePathParts.length - 1]!;\n // TODO: parser - cache responses\n return `${relativePath}${splitNameAndExtension(fileName).name}`;\n }\n\n public remove(options?: Parameters<typeof fs.rmSync>[1]) {\n fs.rmSync(this._path, options);\n }\n\n /**\n * Removes last node form the stack. Works as undo.\n */\n public removeNode() {\n this._items = this._items.slice(0, this._items.length - 1);\n }\n\n private _setName(fileName: string) {\n if (fileName.includes('index')) {\n return fileName;\n }\n\n const { extension, name } = splitNameAndExtension(fileName);\n return [name, 'gen', extension].filter(Boolean).join('.');\n }\n\n private _toString(separator: string, tsConfig: ts.ParsedCommandLine | null) {\n let output: Array<string> = [];\n if (this._headers.length) {\n output.push(this._headers.join('\\n'));\n }\n\n const shouldAppendJs =\n tsConfig?.options.moduleResolution === ts.ModuleResolutionKind.NodeNext;\n\n const importsStringArray: Array<string> = [];\n\n for (const [_module, moduleMap] of this._imports.entries()) {\n const imports = Array.from(moduleMap.values());\n\n let resolvedModule = _module;\n if (\n shouldAppendJs &&\n (resolvedModule.startsWith('./') || resolvedModule.startsWith('../'))\n ) {\n if (resolvedModule === './client') {\n resolvedModule = './client/index.js';\n } else {\n resolvedModule = `${resolvedModule}.js`;\n }\n }\n\n const node = compiler.namedImportDeclarations({\n imports,\n module: resolvedModule,\n });\n importsStringArray.push(tsNodeToString({ node }));\n }\n if (importsStringArray.length) {\n output.push(importsStringArray.join('\\n'));\n }\n output = output.concat(\n this._items.map((node) =>\n typeof node === 'string'\n ? node\n : tsNodeToString({ node, unescape: true }),\n ),\n );\n return output.join(separator);\n }\n\n public write(separator = '\\n', tsConfig: ts.ParsedCommandLine | null = null) {\n if (this.isEmpty()) {\n this.remove({ force: true });\n return;\n }\n\n let dir = this._path;\n if (typeof this._path === 'string') {\n const parts = this._path.split(path.sep);\n dir = parts.slice(0, parts.length - 1).join(path.sep);\n }\n ensureDirSync(dir);\n fs.writeFileSync(this._path, this._toString(separator, tsConfig));\n }\n}\n\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 identifierCase?: StringCase,\n): string => {\n if (typeof transformer === 'function') {\n return transformer(name);\n }\n\n const separator = identifierCase === '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: identifierCase,\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: identifierCase,\n value: nameTransformer\n ? transformName(name, nameTransformer, identifierCase)\n : 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: identifierCase,\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: identifierCase,\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\nconst splitNameAndExtension = (fileName: string) => {\n const match = fileName.match(/\\.[0-9a-z]+$/i);\n const extension = match ? match[0].slice(1) : '';\n const name = fileName.slice(\n 0,\n fileName.length - (extension ? extension.length + 1 : 0),\n );\n return { extension, name };\n};\n\nexport const _test = {\n ensureUniqueIdentifier,\n parseRef,\n splitNameAndExtension,\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 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 }\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 ] 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\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","export const irRef = '#/ir/';\n\nexport const isRefOpenApiComponent = ($ref: string): boolean => {\n const parts = refToParts($ref);\n // reusable components are nested within components/<namespace>/<name>\n return parts.length === 3 && parts[0] === 'components';\n};\n\n/**\n * Returns the reusable component name from `$ref`.\n */\nexport const refToName = ($ref: string): string => {\n const parts = refToParts($ref);\n const name = parts[parts.length - 1]!;\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n return decodeURI(name);\n};\n\nconst refToParts = ($ref: string): string[] => {\n // Remove the leading `#` and split by `/` to traverse the object\n const parts = $ref.replace(/^#\\//, '').split('/');\n return parts;\n};\n\nexport const resolveRef = <T>({\n $ref,\n spec,\n}: {\n $ref: string;\n spec: Record<string, any>;\n}): T => {\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n const parts = refToParts(decodeURI($ref));\n\n let current = spec;\n\n for (const part of parts) {\n const p = part as keyof typeof current;\n if (current[p] === undefined) {\n throw new Error(`Reference not found: ${$ref}`);\n }\n current = current[p];\n }\n\n return current as T;\n};\n","import path from 'node:path';\n\nimport { TypeScriptFile } from '../generate/files';\nimport type { 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 { resolveRef } from '../utils/ref';\nimport type { IR } from './types';\n\nexport interface ContextFile {\n /**\n * Should the exports from this file be re-exported in the index barrel file?\n */\n exportFromIndex?: boolean;\n /**\n * Unique file identifier.\n */\n id: string;\n /**\n * Define casing for identifiers in this file.\n */\n identifierCase?: StringCase;\n /**\n * Relative file path to the output path.\n *\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 /**\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({ config, spec }: { config: Config; spec: Spec }) {\n this.config = config;\n this.spec = spec;\n }\n\n /**\n * Create and return a new TypeScript file. Also set the current file context\n * to the newly created file.\n */\n public createFile(file: ContextFile): TypeScriptFile {\n // TODO: parser - handle attempt to create duplicate\n const outputParts = file.path.split('/');\n const outputDir = path.resolve(\n this.config.output.path,\n ...outputParts.slice(0, outputParts.length - 1),\n );\n const createdFile = new TypeScriptFile({\n dir: outputDir,\n exportFromIndex: file.exportFromIndex,\n id: file.id,\n identifierCase: file.identifierCase,\n name: `${outputParts[outputParts.length - 1]}.ts`,\n });\n this.files[file.id] = createdFile;\n return createdFile;\n }\n\n /**\n * Returns a 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'>): TypeScriptFile | 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 ? name\n : `${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 ? name\n : `${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 ? name\n : `${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 ? name\n : `${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","/**\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","export type Graph = {\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\nexport type GraphType =\n | 'body'\n | 'operation'\n | 'parameter'\n | 'response'\n | 'schema'\n | 'unknown';\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): GraphType => {\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\nconst namespaceNeedle = '/';\n\nexport const addNamespace = (\n namespace: GraphType,\n value: string = '',\n): string => `${namespace}${namespaceNeedle}${value}`;\n\nexport const removeNamespace = (\n key: string,\n): {\n name: string;\n namespace: GraphType;\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 GraphType,\n };\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 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: 'camelCase',\n value: sanitizeNamespaceIdentifier(id),\n });\n } else {\n const urlWithoutPlaceholders = path\n .replace(/{(.*?)}/g, 'by-$1')\n // replace slashes with hyphens for camelcase method at the end\n .replace(/[/:+]/g, '-');\n\n result = stringCase({\n case: 'camelCase',\n value: `${method}-${urlWithoutPlaceholders}`,\n });\n }\n\n if (count > 1) {\n result = `${result}${count}`;\n }\n\n if (state.ids.has(result)) {\n return operationToId({\n context,\n count: count + 1,\n id,\n method,\n path,\n state,\n });\n }\n\n 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 { PathItemObject, PathsObject } from '../../3.1.x/types/spec';\nimport type { OpenApi } from '../../types';\nimport type { Graph, GraphType } from './graph';\nimport { addNamespace, removeNamespace } from './graph';\nimport { httpMethods } from './operation';\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['input']['filters']>\n>;\n\ninterface SetAndRegExps {\n regexps: Array<RegExp>;\n set: Set<string>;\n}\n\nconst createFiltersSetAndRegExps = (\n type: GraphType,\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['input']['filters'],\n spec: OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X,\n): 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 return filters;\n};\n\nexport const hasFilters = (config: Config['input']['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 graph,\n parameters,\n requestBodies,\n responses,\n schemas,\n}: {\n filters: Filters;\n graph: Graph;\n parameters: Set<string>;\n requestBodies: Set<string>;\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(graph.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 = graph.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 graph,\n schemas,\n}: {\n filters: Filters;\n graph: Graph;\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(graph.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 = graph.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 graph,\n schemas,\n}: {\n filters: Filters;\n graph: Graph;\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(graph.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 = graph.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 graph,\n schemas,\n}: {\n filters: Filters;\n graph: Graph;\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(graph.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 = graph.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 graph,\n}: {\n filters: Filters;\n graph: Graph;\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(graph.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 = graph.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 graph,\n parameters,\n}: {\n filters: Filters;\n graph: Graph;\n parameters: Set<string>;\n}): void => {\n if (!filters.parameters.exclude.size) {\n return;\n }\n\n for (const key of parameters) {\n const node = graph.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 graph,\n requestBodies,\n}: {\n filters: Filters;\n graph: Graph;\n requestBodies: Set<string>;\n}): void => {\n if (!filters.requestBodies.exclude.size) {\n return;\n }\n\n for (const key of requestBodies) {\n const node = graph.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 graph,\n responses,\n}: {\n filters: Filters;\n graph: Graph;\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 = graph.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 graph,\n schemas,\n}: {\n filters: Filters;\n graph: Graph;\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 = graph.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 graph,\n operations,\n}: {\n graph: Graph;\n operations: Set<string>;\n}): {\n operationDependencies: Set<string>;\n} => {\n const finalSet = new Set<string>();\n const initialSet = new Set(\n [...operations].flatMap((key) => [\n ...(graph.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 = graph.requestBodies.get(key)?.dependencies;\n } else if (namespace === 'operation') {\n dependencies = graph.operations.get(key)?.dependencies;\n } else if (namespace === 'parameter') {\n dependencies = graph.parameters.get(key)?.dependencies;\n } else if (namespace === 'response') {\n dependencies = graph.responses.get(key)?.dependencies;\n } else if (namespace === 'schema') {\n dependencies = graph.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 graph,\n}: {\n filters: Filters;\n graph: Graph;\n}): {\n operations: Set<string>;\n parameters: Set<string>;\n requestBodies: Set<string>;\n responses: Set<string>;\n schemas: Set<string>;\n} => {\n const { schemas } = collectSchemas({ filters, graph });\n const { parameters } = collectParameters({\n filters,\n graph,\n schemas,\n });\n const { requestBodies } = collectRequestBodies({\n filters,\n graph,\n schemas,\n });\n const { responses } = collectResponses({\n filters,\n graph,\n schemas,\n });\n\n dropExcludedSchemas({ filters, graph, schemas });\n dropExcludedParameters({ filters, graph, parameters });\n dropExcludedRequestBodies({ filters, graph, requestBodies });\n dropExcludedResponses({ filters, graph, responses });\n\n // collect operations after dropping components\n const { operations } = collectOperations({\n filters,\n graph,\n parameters,\n requestBodies,\n responses,\n schemas,\n });\n\n if (!filters.orphans && operations.size) {\n const { operationDependencies } = collectOperationDependencies({\n graph,\n operations,\n });\n dropOrphans({\n operationDependencies,\n parameters,\n requestBodies,\n responses,\n schemas,\n });\n }\n\n return {\n operations,\n parameters,\n requestBodies,\n responses,\n schemas,\n };\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 if (!context.config.input.validate_EXPERIMENTAL) {\n return;\n }\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 { addNamespace, removeNamespace } from '../../shared/utils/graph';\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 operations,\n preserveOrder,\n schemas,\n spec,\n}: {\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 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};\n","import { createOperationKey } from '../../../ir/operation';\nimport {\n addNamespace,\n type Graph,\n stringToNamespace,\n} from '../../shared/utils/graph';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n ValidatorIssue,\n ValidatorResult,\n} from '../../shared/utils/validator';\nimport type {\n OpenApiV2_0_X,\n ParameterObject,\n PathItemObject,\n PathsObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\n\nconst collectSchemaDependencies = (\n schema: SchemaObject | ReferenceObject | ParameterObject,\n dependencies: Set<string>,\n) => {\n if ('$ref' in schema) {\n if (schema.$ref) {\n const parts = schema.$ref.split('/');\n const type = parts[parts.length - 2];\n const name = parts[parts.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;\n }\n\n if ('in' in schema) {\n if (schema.in === 'body') {\n collectSchemaDependencies(schema.schema, dependencies);\n }\n return;\n }\n\n if (schema.items && typeof schema.items === 'object') {\n collectSchemaDependencies(schema.items, dependencies);\n }\n\n if (schema.properties) {\n for (const property of Object.values(schema.properties)) {\n if (typeof property === 'object') {\n collectSchemaDependencies(property, dependencies);\n }\n }\n }\n\n if (schema.allOf) {\n for (const item of schema.allOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n};\n\nexport const createGraph = ({\n spec,\n validate,\n}: {\n spec: OpenApiV2_0_X;\n validate: boolean;\n}): ValidatorResult & {\n graph: Graph;\n} => {\n const graph: Graph = {\n operations: new Map(),\n parameters: new Map(),\n requestBodies: new Map(),\n responses: new Map(),\n schemas: new Map(),\n };\n const issues: Array<ValidatorIssue> = [];\n const operationIds = new Map();\n\n if (spec.definitions) {\n for (const [key, schema] of Object.entries(spec.definitions)) {\n const dependencies = new Set<string>();\n collectSchemaDependencies(schema, dependencies);\n graph.schemas.set(addNamespace('schema', key), {\n dependencies,\n deprecated: false,\n });\n }\n }\n\n if (spec.parameters) {\n // TODO: add parameters\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 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 (validate && 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 const dependencies = new Set<string>();\n\n if (operation.responses) {\n for (const response of Object.values(operation.responses)) {\n if (!response) {\n continue;\n }\n\n if ('$ref' in response) {\n collectSchemaDependencies(response, dependencies);\n } else if (response.schema) {\n collectSchemaDependencies(response.schema, dependencies);\n }\n }\n }\n\n if (operation.parameters) {\n for (const parameter of operation.parameters) {\n collectSchemaDependencies(parameter, dependencies);\n }\n }\n\n graph.operations.set(addNamespace('operation', operationKey), {\n dependencies,\n deprecated: Boolean(operation.deprecated),\n tags: new Set(operation.tags),\n });\n }\n }\n }\n\n return {\n graph,\n issues,\n valid: !issues.some((issue) => issue.severity === 'error'),\n };\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 { refToName } from '../../../utils/ref';\n\nexport const discriminatorValues = (\n $ref: string,\n mapping?: Record<string, string>,\n): ReadonlyArray<string> => {\n const values: Array<string> = [];\n\n for (const name in mapping) {\n if (mapping[name] === $ref) {\n values.push(name);\n }\n }\n\n if (!values.length) {\n return [refToName($ref)];\n }\n\n return values;\n};\n","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.description) {\n irSchema.description = schema.description;\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n state,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}) => {\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum) {\n if (schema.maximum !== undefined) {\n irSchema.exclusiveMaximum = schema.maximum;\n }\n } else if (schema.maximum !== undefined) {\n irSchema.maximum = schema.maximum;\n }\n\n if (schema.exclusiveMinimum) {\n if (schema.minimum !== undefined) {\n irSchema.exclusiveMinimum = schema.minimum;\n }\n } else if (schema.minimum !== undefined) {\n irSchema.minimum = schema.minimum;\n }\n\n if (schema.format) {\n irSchema.format = schema.format;\n }\n\n if (schema.maxItems !== undefined) {\n irSchema.maxItems = schema.maxItems;\n }\n\n if (schema.maxLength !== undefined) {\n irSchema.maxLength = schema.maxLength;\n }\n\n if (schema.minItems !== undefined) {\n irSchema.minItems = schema.minItems;\n }\n\n if (schema.minLength !== undefined) {\n irSchema.minLength = schema.minLength;\n }\n\n if (schema.pattern) {\n irSchema.pattern = schema.pattern;\n }\n\n if (schema.readOnly) {\n irSchema.accessScope = 'read';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'read',\n ]);\n } else if (state.isProperty) {\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'both',\n ]);\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (schema.maxItems && schema.maxItems === schema.minItems) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IR.SchemaObject> = [];\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemsSchema.accessScopes,\n );\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n if ('$ref' in schema.items) {\n schemaItems.push(irItemsSchema);\n } else {\n const ofArray = schema.items.allOf;\n if (ofArray && ofArray.length > 1 && !schema.items['x-nullable']) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n schema,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = schema.type;\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IR.SchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n const irPropertySchema = schemaToIrSchema({\n context,\n schema: property,\n state: {\n ...state,\n isProperty: true,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irPropertySchema.accessScopes,\n );\n schemaProperties[name] = irPropertySchema;\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties === undefined) {\n if (!irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else if (typeof schema.additionalProperties === 'boolean') {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n state,\n });\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'string';\n\n return irSchema;\n};\n\nconst initIrSchema = ({\n schema,\n}: {\n schema: SchemaObject;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n parseSchemaJsDoc({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nconst parseAllOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'allOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.allOf;\n\n for (const compositionSchema of compositionSchemas) {\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (schema.required) {\n if (irCompositionSchema.required) {\n irCompositionSchema.required = [\n ...irCompositionSchema.required,\n ...schema.required,\n ];\n } else {\n irCompositionSchema.required = schema.required;\n }\n }\n\n schemaItems.push(irCompositionSchema);\n\n if (compositionSchema.$ref) {\n const ref = context.resolveRef<SchemaObject>(compositionSchema.$ref);\n // `$ref` should be passed from the root `parseSchema()` call\n if (ref.discriminator && state.$ref) {\n const values = discriminatorValues(state.$ref);\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [ref.discriminator]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n if (ref.required?.includes(ref.discriminator)) {\n irDiscriminatorSchema.required = [ref.discriminator];\n }\n schemaItems.push(irDiscriminatorSchema);\n }\n\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n const irRefSchema = schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n }\n }\n\n if (schemaType === 'object') {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema = compositionSchema.$ref\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaType({ schema: finalCompositionSchema }) === 'object'\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schema['x-nullable']) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IR.SchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original deprecated\n if (nestedItems[0]!.deprecated) {\n irSchema.deprecated = nestedItems[0]!.deprecated;\n }\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original description\n if (nestedItems[0]!.description) {\n irSchema.description = nestedItems[0]!.description;\n }\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'enum'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IR.SchemaObject> = [];\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n let enumType: SchemaType<SchemaObject> | 'null' | undefined;\n\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n enumType = typeOfEnumValue;\n } else if (typeOfEnumValue === 'object' && Array.isArray(enumValue)) {\n enumType = 'array';\n } else if (enumValue === null) {\n // nullable must be true\n if (schema['x-nullable']) {\n enumType = 'null';\n }\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n\n if (!enumType) {\n continue;\n }\n\n const irTypeSchema = parseOneType({\n context,\n schema: {\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ?? schema['x-enumNames']?.[index],\n // cast enum to string temporarily\n type: enumType === 'null' ? 'string' : enumType,\n },\n state,\n });\n\n irTypeSchema.const = enumValue;\n\n // cast enum back\n if (enumType === 'null') {\n irTypeSchema.type = enumType;\n }\n\n if (irTypeSchema.type === 'array') {\n irTypeSchema.type = 'tuple';\n }\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseRef = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, '$ref'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n irSchema.$ref = decodeURI(schema.$ref);\n\n // rewrite definitions refs as the internal schema follows OpenAPI 3.x syntax\n // and stores all definitions as reusable schemas\n irSchema.$ref = irSchema.$ref.replace(\n /#\\/definitions\\/([^/]+)/g,\n '#/components/schemas/$1',\n );\n\n if (!state.circularReferenceTracker.has(schema.$ref)) {\n const refSchema = context.resolveRef<SchemaObject>(schema.$ref);\n const irRefSchema = schemaToIrSchema({\n context,\n schema: refSchema,\n state: {\n ...state,\n $ref: schema.$ref,\n isProperty: false,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n\n return irSchema;\n};\n\nconst parseNullableType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n const typeIrSchema: IR.SchemaObject = {};\n\n parseSchemaMeta({\n irSchema: typeIrSchema,\n schema,\n state,\n });\n\n if (typeIrSchema.default === null) {\n // clear to avoid duplicate default inside the non-null schema.\n // this would produce incorrect validator output\n delete typeIrSchema.default;\n }\n\n const schemaItems: Array<IR.SchemaObject> = [\n parseOneType({\n context,\n irSchema: typeIrSchema,\n schema,\n state,\n }),\n {\n type: 'null',\n },\n ];\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseType = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n const type = getSchemaType({ schema });\n\n if (!type) {\n return irSchema;\n }\n\n if (schema['x-nullable']) {\n return parseNullableType({\n context,\n irSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n }\n\n return parseOneType({\n context,\n irSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n};\n\nconst parseOneType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n }\n\n switch (schema.type) {\n case 'array':\n return parseArray({\n context,\n irSchema,\n schema,\n state,\n });\n case 'boolean':\n return parseBoolean({\n context,\n irSchema,\n schema,\n state,\n });\n case 'integer':\n case 'number':\n return parseNumber({\n context,\n irSchema,\n schema,\n state,\n });\n case 'object':\n return parseObject({\n context,\n irSchema,\n schema,\n state,\n });\n case 'string':\n return parseString({\n context,\n irSchema,\n schema,\n state,\n });\n default:\n // gracefully handle invalid type\n return parseUnknown({\n context,\n irSchema,\n schema,\n state,\n });\n }\n};\n\nconst parseUnknown = ({\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n return irSchema;\n};\n\nexport const schemaToIrSchema = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaObject;\n state: SchemaState | undefined;\n}): IR.SchemaObject => {\n if (!state) {\n state = {\n circularReferenceTracker: new Set(),\n };\n }\n\n if (state.$ref) {\n state.circularReferenceTracker.add(state.$ref);\n }\n\n if (schema.$ref) {\n return parseRef({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, '$ref'>,\n state,\n });\n }\n\n if (schema.enum) {\n return parseEnum({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'enum'>,\n state,\n });\n }\n\n if (schema.allOf) {\n return parseAllOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'allOf'>,\n state,\n });\n }\n\n // infer object based on the presence of properties\n if (schema.type || schema.properties) {\n return parseType({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'type'>,\n state,\n });\n }\n\n return parseUnknown({\n context,\n schema,\n state,\n });\n};\n\nexport const parseSchema = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IR.Context;\n schema: SchemaObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.schemas) {\n context.ir.components.schemas = {};\n }\n\n context.ir.components.schemas[refToName($ref)] = schemaToIrSchema({\n context,\n schema,\n state: {\n $ref,\n circularReferenceTracker: new Set(),\n },\n });\n};\n","import { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport type { SchemaType } from '../../shared/types/schema';\nimport type { ParameterObject, ReferenceObject } from '../types/spec';\nimport type { SchemaObject } from '../types/spec';\nimport { getSchemaType } from './schema';\n\nconst isPaginationType = (\n schemaType: SchemaType<SchemaObject> | undefined,\n): boolean =>\n schemaType === 'boolean' ||\n schemaType === 'integer' ||\n schemaType === 'number' ||\n schemaType === 'string';\n\n// We handle only simple values for now, up to 1 nested field\nexport const paginationField = ({\n context,\n name,\n schema,\n}: {\n context: IR.Context;\n name: string;\n schema:\n | ParameterObject\n | SchemaObject\n | ReferenceObject\n | {\n in: undefined;\n };\n}): boolean | string => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n if (paginationRegExp.test(name)) {\n return true;\n }\n\n if ('$ref' in schema) {\n const ref = context.resolveRef<ParameterObject | SchemaObject>(\n schema.$ref ?? '',\n );\n\n if ('in' in ref && ref.in) {\n const refSchema =\n 'schema' in ref\n ? ref.schema\n : {\n ...ref,\n in: undefined,\n };\n\n return paginationField({\n context,\n name,\n schema: refSchema,\n });\n }\n\n return paginationField({\n context,\n name,\n schema: ref,\n });\n }\n\n if ('in' in schema) {\n if (!schema.in) {\n return false;\n }\n\n const finalSchema =\n 'schema' in schema\n ? schema.schema\n : {\n ...schema,\n in: undefined,\n };\n\n return paginationField({\n context,\n name,\n schema: finalSchema,\n });\n }\n\n for (const name in schema.properties) {\n const paginationRegExp = getPaginationKeywordsRegExp(\n context.config.input.pagination,\n );\n\n if (paginationRegExp.test(name)) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean' && !('$ref' in property)) {\n const schemaType = getSchemaType({ schema: property });\n // TODO: resolve deeper references\n\n if (isPaginationType(schemaType)) {\n return name;\n }\n }\n }\n }\n\n for (const allOf of schema.allOf ?? []) {\n const pagination = paginationField({\n context,\n name,\n schema: allOf,\n });\n if (pagination) {\n return pagination;\n }\n }\n\n return false;\n};\n","import type { IR, IRBodyObject } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport { 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: Array<IR.SecurityObject> = [];\n\n for (const securityRequirementObject of operation.security) {\n for (const name in securityRequirementObject) {\n const securitySchemeObject = securitySchemesMap.get(name);\n\n if (!securitySchemeObject) {\n continue;\n }\n\n let irSecuritySchemeObject: IR.SecurityObject | undefined;\n\n if (securitySchemeObject.type === 'apiKey') {\n irSecuritySchemeObject = securitySchemeObject;\n }\n\n if (securitySchemeObject.type === 'basic') {\n irSecuritySchemeObject = {\n description: securitySchemeObject.description,\n scheme: 'basic',\n type: 'http',\n };\n }\n\n if (securitySchemeObject.type === 'oauth2') {\n irSecuritySchemeObject = {\n description: securitySchemeObject.description,\n flows: {},\n type: 'oauth2',\n };\n\n switch (securitySchemeObject.flow) {\n case 'accessCode':\n irSecuritySchemeObject.flows.authorizationCode = {\n authorizationUrl: securitySchemeObject.authorizationUrl!,\n scopes: securitySchemeObject.scopes,\n tokenUrl: securitySchemeObject.tokenUrl!,\n };\n break;\n case 'application':\n irSecuritySchemeObject.flows.clientCredentials = {\n scopes: securitySchemeObject.scopes,\n tokenUrl: securitySchemeObject.tokenUrl!,\n };\n break;\n case 'implicit':\n irSecuritySchemeObject.flows.implicit = {\n authorizationUrl: securitySchemeObject.authorizationUrl!,\n scopes: securitySchemeObject.scopes,\n };\n break;\n case 'password':\n irSecuritySchemeObject.flows.password = {\n scopes: securitySchemeObject.scopes,\n tokenUrl: securitySchemeObject.tokenUrl!,\n };\n break;\n }\n }\n\n if (!irSecuritySchemeObject) {\n continue;\n }\n\n securitySchemeObjects.push(irSecuritySchemeObject);\n }\n }\n\n if (securitySchemeObjects.length) {\n irOperation.security = securitySchemeObjects;\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n 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 type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport {\n createFilteredDependencies,\n createFilters,\n hasFilters,\n} from '../../shared/utils/filter';\nimport type { Graph } 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 { createGraph } from './graph';\nimport { parseOperation } from './operation';\nimport { parametersArrayToObject } from './parameter';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\n\ntype PathKeys<T extends keyof PathsObject = keyof PathsObject> =\n keyof T extends infer K ? (K extends `/${string}` ? K : never) : never;\n\nexport const parseV2_0_X = (context: IR.Context<OpenApiV2_0_X>) => {\n const shouldFilterSpec = hasFilters(context.config.input.filters);\n\n let graph: Graph | undefined;\n\n if (shouldFilterSpec || context.config.input.validate_EXPERIMENTAL) {\n const result = createGraph({\n spec: context.spec,\n validate: Boolean(context.config.input.validate_EXPERIMENTAL),\n });\n graph = result.graph;\n handleValidatorResult({ context, result });\n }\n\n if (shouldFilterSpec && graph) {\n const filters = createFilters(context.config.input.filters, context.spec);\n const sets = createFilteredDependencies({ filters, graph });\n filterSpec({\n ...sets,\n preserveOrder: filters.preserveOrder,\n spec: context.spec,\n });\n }\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<Parameters<typeof parseOperation>[0], 'method'> =\n {\n context,\n operation: {\n ...commonOperation,\n parameters: parametersArrayToObject({\n context,\n operation: commonOperation,\n parameters: finalPathItem.parameters,\n }),\n },\n path: path as PathKeys,\n securitySchemesMap,\n state,\n };\n\n 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 parseOperation({\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 parseOperation({\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 parseOperation({\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 parseOperation({\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 parseOperation({\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 parseOperation({\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 parseOperation({\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 { addNamespace, removeNamespace } from '../../shared/utils/graph';\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 operations,\n parameters,\n preserveOrder,\n requestBodies,\n responses,\n schemas,\n spec,\n}: {\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 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};\n","import { createOperationKey } from '../../../ir/operation';\nimport type { Graph } from '../../shared/utils/graph';\nimport { addNamespace, stringToNamespace } from '../../shared/utils/graph';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n ValidatorIssue,\n ValidatorResult,\n} from '../../shared/utils/validator';\nimport type {\n OpenApiV3_0_X,\n PathItemObject,\n PathsObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\n\nconst collectSchemaDependencies = (\n schema: SchemaObject | ReferenceObject,\n dependencies: Set<string>,\n) => {\n if ('$ref' in schema) {\n if (schema.$ref) {\n const parts = schema.$ref.split('/');\n const type = parts[parts.length - 2];\n const name = parts[parts.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;\n }\n\n if (schema.items && typeof schema.items === 'object') {\n collectSchemaDependencies(schema.items, dependencies);\n }\n\n if (schema.properties) {\n for (const property of Object.values(schema.properties)) {\n if (typeof property === 'object') {\n collectSchemaDependencies(property, dependencies);\n }\n }\n }\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties === 'object'\n ) {\n collectSchemaDependencies(schema.additionalProperties, dependencies);\n }\n\n if (schema.allOf) {\n for (const item of schema.allOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n\n if (schema.anyOf) {\n for (const item of schema.anyOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n\n if (schema.not) {\n collectSchemaDependencies(schema.not, dependencies);\n }\n\n if (schema.oneOf) {\n for (const item of schema.oneOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n};\n\nexport const createGraph = ({\n spec,\n validate,\n}: {\n spec: OpenApiV3_0_X;\n validate: boolean;\n}): ValidatorResult & {\n graph: Graph;\n} => {\n const graph: Graph = {\n operations: new Map(),\n parameters: new Map(),\n requestBodies: new Map(),\n responses: new Map(),\n schemas: new Map(),\n };\n const issues: Array<ValidatorIssue> = [];\n const operationIds = new Map();\n\n if (spec.components) {\n // TODO: add other components\n if (spec.components.schemas) {\n for (const [key, schema] of Object.entries(spec.components.schemas)) {\n const dependencies = new Set<string>();\n collectSchemaDependencies(schema, dependencies);\n graph.schemas.set(addNamespace('schema', key), {\n dependencies,\n deprecated:\n 'deprecated' in schema ? Boolean(schema.deprecated) : false,\n });\n }\n }\n\n if (spec.components.parameters) {\n for (const [key, parameter] of Object.entries(\n spec.components.parameters,\n )) {\n const dependencies = new Set<string>();\n if ('$ref' in parameter) {\n collectSchemaDependencies(parameter, dependencies);\n } else {\n if (parameter.schema) {\n collectSchemaDependencies(parameter.schema, dependencies);\n }\n\n if (parameter.content) {\n for (const media of Object.values(parameter.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n graph.parameters.set(addNamespace('parameter', key), {\n dependencies,\n deprecated:\n 'deprecated' in parameter ? Boolean(parameter.deprecated) : false,\n });\n }\n }\n\n if (spec.components.requestBodies) {\n for (const [key, requestBody] of Object.entries(\n spec.components.requestBodies,\n )) {\n const dependencies = new Set<string>();\n if ('$ref' in requestBody) {\n collectSchemaDependencies(requestBody, dependencies);\n } else {\n for (const media of Object.values(requestBody.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n graph.requestBodies.set(addNamespace('body', key), {\n dependencies,\n deprecated: false,\n });\n }\n }\n\n if (spec.components.responses) {\n for (const [key, response] of Object.entries(spec.components.responses)) {\n const dependencies = new Set<string>();\n if ('$ref' in response) {\n collectSchemaDependencies(response, dependencies);\n } else {\n if (response.content) {\n for (const media of Object.values(response.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n graph.responses.set(addNamespace('response', key), {\n dependencies,\n deprecated: false,\n });\n }\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 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 (validate && 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 const dependencies = new Set<string>();\n\n if (operation.requestBody) {\n if ('$ref' in operation.requestBody) {\n collectSchemaDependencies(operation.requestBody, dependencies);\n } else {\n for (const media of Object.values(operation.requestBody.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n\n if (operation.responses) {\n for (const response of Object.values(operation.responses)) {\n if (!response) {\n continue;\n }\n\n if ('$ref' in response) {\n collectSchemaDependencies(response, dependencies);\n } else if (response.content) {\n for (const media of Object.values(response.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n }\n\n if (operation.parameters) {\n for (const parameter of operation.parameters) {\n if ('$ref' in parameter) {\n collectSchemaDependencies(parameter, dependencies);\n } else if (parameter.schema) {\n collectSchemaDependencies(parameter.schema, dependencies);\n }\n }\n }\n\n graph.operations.set(addNamespace('operation', operationKey), {\n dependencies,\n deprecated: Boolean(operation.deprecated),\n tags: new Set(operation.tags),\n });\n }\n }\n }\n\n if (validate) {\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\n return {\n graph,\n issues,\n valid: !issues.some((issue) => issue.severity === 'error'),\n };\n};\n","import type { IRMediaType } from '../../../ir/mediaType';\nimport {\n isMediaTypeFileLike,\n mediaTypeToIrMediaType,\n} from '../../../ir/mediaType';\nimport type {\n MediaTypeObject,\n ReferenceObject,\n SchemaObject,\n} from '../types/spec';\n\ninterface Content {\n mediaType: string;\n schema: SchemaObject | ReferenceObject | undefined;\n type: IRMediaType | undefined;\n}\n\nexport const contentToSchema = ({\n content,\n}: {\n content: Content;\n}): SchemaObject | undefined => {\n const { mediaType, schema } = content;\n\n if (schema && '$ref' in schema) {\n return {\n allOf: [{ ...schema }],\n };\n }\n\n if (!schema) {\n if (isMediaTypeFileLike({ mediaType })) {\n return {\n format: 'binary',\n type: 'string',\n };\n }\n return;\n }\n\n if (\n schema.type === 'string' &&\n !schema.format &&\n isMediaTypeFileLike({ mediaType })\n ) {\n return {\n ...schema,\n format: 'binary',\n };\n }\n\n return schema;\n};\n\nexport const 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.description) {\n irSchema.description = schema.description;\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n state,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}) => {\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum) {\n if (schema.maximum !== undefined) {\n irSchema.exclusiveMaximum = schema.maximum;\n }\n } else if (schema.maximum !== undefined) {\n irSchema.maximum = schema.maximum;\n }\n\n if (schema.exclusiveMinimum) {\n if (schema.minimum !== undefined) {\n irSchema.exclusiveMinimum = schema.minimum;\n }\n } else if (schema.minimum !== undefined) {\n irSchema.minimum = schema.minimum;\n }\n\n if (schema.format) {\n irSchema.format = schema.format;\n }\n\n if (schema.maxItems !== undefined) {\n irSchema.maxItems = schema.maxItems;\n }\n\n if (schema.maxLength !== undefined) {\n irSchema.maxLength = schema.maxLength;\n }\n\n if (schema.minItems !== undefined) {\n irSchema.minItems = schema.minItems;\n }\n\n if (schema.minLength !== undefined) {\n irSchema.minLength = schema.minLength;\n }\n\n if (schema.pattern) {\n irSchema.pattern = schema.pattern;\n }\n\n if (schema.readOnly) {\n irSchema.accessScope = 'read';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'read',\n ]);\n } else if (schema.writeOnly) {\n irSchema.accessScope = 'write';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'write',\n ]);\n } else if (state.isProperty) {\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'both',\n ]);\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (schema.maxItems && schema.maxItems === schema.minItems) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IR.SchemaObject> = [];\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemsSchema.accessScopes,\n );\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n if ('$ref' in schema.items) {\n schemaItems.push(irItemsSchema);\n } else {\n const ofArray =\n schema.items.allOf || schema.items.anyOf || schema.items.oneOf;\n if (ofArray && ofArray.length > 1 && !schema.items.nullable) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n schema,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = schema.type;\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IR.SchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n const irPropertySchema = schemaToIrSchema({\n context,\n schema: property,\n state: {\n ...state,\n isProperty: true,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irPropertySchema.accessScopes,\n );\n schemaProperties[name] = irPropertySchema;\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties === undefined) {\n if (!irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else if (typeof schema.additionalProperties === 'boolean') {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n state,\n });\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n\n if (schema.required) {\n irSchema.required = schema.required;\n }\n\n return irSchema;\n};\n\nconst parseString = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'string';\n\n return irSchema;\n};\n\nconst initIrSchema = ({\n schema,\n}: {\n schema: SchemaObject;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {};\n\n parseSchemaJsDoc({\n irSchema,\n schema,\n });\n\n return irSchema;\n};\n\nconst parseAllOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'allOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.allOf;\n\n for (const compositionSchema of compositionSchemas) {\n const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (schema.required) {\n if (irCompositionSchema.required) {\n irCompositionSchema.required = [\n ...irCompositionSchema.required,\n ...schema.required,\n ];\n } else {\n irCompositionSchema.required = schema.required;\n }\n }\n\n schemaItems.push(irCompositionSchema);\n\n if ('$ref' in compositionSchema) {\n const ref = context.resolveRef<SchemaObject>(compositionSchema.$ref);\n // `$ref` should be passed from the root `parseSchema()` call\n if (ref.discriminator && state.$ref) {\n const values = discriminatorValues(\n state.$ref,\n ref.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [ref.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n if (ref.required?.includes(ref.discriminator.propertyName)) {\n irDiscriminatorSchema.required = [ref.discriminator.propertyName];\n }\n schemaItems.push(irDiscriminatorSchema);\n }\n\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n const irRefSchema = schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n }\n }\n\n if (schemaType === 'object') {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema =\n '$ref' in compositionSchema\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaType({ schema: finalCompositionSchema }) === 'object'\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schema.nullable) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IR.SchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original deprecated\n if (nestedItems[0]!.deprecated) {\n irSchema.deprecated = nestedItems[0]!.deprecated;\n }\n\n // TODO: parser - this is a hack to bring back up meta fields\n // without it, some schemas were missing original description\n if (nestedItems[0]!.description) {\n irSchema.description = nestedItems[0]!.description;\n }\n }\n\n return irSchema;\n};\n\nconst parseAnyOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'anyOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.anyOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && '$ref' in compositionSchema) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n schemaItems.push(irCompositionSchema);\n }\n\n if (schema.nullable) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaType === 'object') {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'enum'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IR.SchemaObject> = [];\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n let enumType: SchemaType<SchemaObject> | 'null' | undefined;\n\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n enumType = typeOfEnumValue;\n } else if (typeOfEnumValue === 'object' && Array.isArray(enumValue)) {\n enumType = 'array';\n } else if (enumValue === null) {\n // nullable must be true\n if (schema.nullable) {\n enumType = 'null';\n }\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n\n if (!enumType) {\n continue;\n }\n\n const irTypeSchema = parseOneType({\n context,\n schema: {\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ?? schema['x-enumNames']?.[index],\n // cast enum to string temporarily\n type: enumType === 'null' ? 'string' : enumType,\n },\n state,\n });\n\n irTypeSchema.const = enumValue;\n\n // cast enum back\n if (enumType === 'null') {\n irTypeSchema.type = enumType;\n }\n\n if (irTypeSchema.type === 'array') {\n irTypeSchema.type = 'tuple';\n }\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'oneOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n let schemaItems: Array<IR.SchemaObject> = [];\n const schemaType = getSchemaType({ schema });\n\n const compositionSchemas = schema.oneOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && '$ref' in compositionSchema) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n required: [schema.discriminator.propertyName],\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n // since we know oneOf will be using \"or\" logical operator, if the parsed\n // composition schema also has an \"or\" operator, we can bring it up\n // to avoid unnecessary brackets\n if (\n irCompositionSchema.logicalOperator === 'or' &&\n irCompositionSchema.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.input.pagination,\n );\n if (paginationRegExp.test(name)) {\n return true;\n }\n\n if ('$ref' in schema) {\n const ref = context.resolveRef<\n ParameterObject | RequestBodyObject | SchemaObject\n >(schema.$ref);\n\n if ('content' in ref || 'in' in ref) {\n let refSchema: SchemaObject | ReferenceObject | undefined;\n\n if ('in' in ref) {\n refSchema = ref.schema;\n }\n\n if (!refSchema) {\n // parameter or body\n const 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.input.pagination,\n );\n\n if (paginationRegExp.test(name)) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean' && !('$ref' in property)) {\n const schemaType = getSchemaType({ schema: property });\n // TODO: resolve deeper references\n\n if (isPaginationType(schemaType)) {\n return name;\n }\n }\n }\n }\n\n for (const allOf of schema.allOf ?? []) {\n const pagination = paginationField({\n context,\n name,\n schema: allOf,\n });\n if (pagination) {\n return pagination;\n }\n }\n\n return false;\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport { 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: Array<IR.SecurityObject> = [];\n\n for (const securityRequirementObject of operation.security) {\n for (const name in securityRequirementObject) {\n const securitySchemeObject = securitySchemesMap.get(name);\n\n if (!securitySchemeObject) {\n continue;\n }\n\n securitySchemeObjects.push(securitySchemeObject);\n }\n }\n\n if (securitySchemeObjects.length) {\n irOperation.security = securitySchemeObjects;\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n 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 type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport {\n createFilteredDependencies,\n createFilters,\n hasFilters,\n} from '../../shared/utils/filter';\nimport type { Graph } 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 { createGraph } from './graph';\nimport { parseOperation } from './operation';\nimport { parametersArrayToObject, parseParameter } from './parameter';\nimport { parseRequestBody } from './requestBody';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\n\nexport const parseV3_0_X = (context: IR.Context<OpenApiV3_0_X>) => {\n const shouldFilterSpec = hasFilters(context.config.input.filters);\n\n let graph: Graph | undefined;\n\n if (shouldFilterSpec || context.config.input.validate_EXPERIMENTAL) {\n const result = createGraph({\n spec: context.spec,\n validate: Boolean(context.config.input.validate_EXPERIMENTAL),\n });\n graph = result.graph;\n handleValidatorResult({ context, result });\n }\n\n if (shouldFilterSpec && graph) {\n const filters = createFilters(context.config.input.filters, context.spec);\n const sets = createFilteredDependencies({ filters, graph });\n filterSpec({\n ...sets,\n preserveOrder: filters.preserveOrder,\n spec: context.spec,\n });\n }\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 parseOperation>[0],\n 'method' | 'operation'\n > & {\n operation: Omit<\n Parameters<typeof parseOperation>[0]['operation'],\n 'responses'\n >;\n } = {\n context,\n operation: {\n description: finalPathItem.description,\n parameters: parametersArrayToObject({\n context,\n parameters: finalPathItem.parameters,\n }),\n security: context.spec.security,\n servers: finalPathItem.servers,\n summary: finalPathItem.summary,\n },\n path: path as keyof PathsObject,\n securitySchemesMap,\n state,\n };\n\n if (finalPathItem.delete) {\n parseOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.get) {\n parseOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.head) {\n parseOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.options) {\n parseOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.patch) {\n parseOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.post) {\n parseOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.put) {\n parseOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.trace) {\n parseOperation({\n ...operationArgs,\n method: 'trace',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.trace,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.trace.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n }\n};\n","import { createOperationKey } from '../../../ir/operation';\nimport { addNamespace, removeNamespace } from '../../shared/utils/graph';\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 operations,\n parameters,\n preserveOrder,\n requestBodies,\n responses,\n schemas,\n spec,\n}: {\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 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};\n","import { createOperationKey } from '../../../ir/operation';\nimport type { Graph } from '../../shared/utils/graph';\nimport { addNamespace, stringToNamespace } from '../../shared/utils/graph';\nimport { httpMethods } from '../../shared/utils/operation';\nimport type {\n ValidatorIssue,\n ValidatorResult,\n} from '../../shared/utils/validator';\nimport type {\n OpenApiV3_1_X,\n PathItemObject,\n PathsObject,\n SchemaObject,\n} from '../types/spec';\n\nconst collectSchemaDependencies = (\n schema: SchemaObject,\n dependencies: Set<string>,\n) => {\n if ('$ref' in schema && schema.$ref) {\n const parts = schema.$ref.split('/');\n const type = parts[parts.length - 2];\n const name = parts[parts.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 if (schema.items && typeof schema.items === 'object') {\n collectSchemaDependencies(schema.items, dependencies);\n }\n\n if (schema.properties) {\n for (const property of Object.values(schema.properties)) {\n if (typeof property === 'object') {\n collectSchemaDependencies(property, dependencies);\n }\n }\n }\n\n if (\n schema.additionalProperties &&\n typeof schema.additionalProperties === 'object'\n ) {\n collectSchemaDependencies(schema.additionalProperties, dependencies);\n }\n\n if (schema.allOf) {\n for (const item of schema.allOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n\n if (schema.anyOf) {\n for (const item of schema.anyOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n\n if (schema.contains) {\n collectSchemaDependencies(schema.contains, dependencies);\n }\n\n if (schema.not) {\n collectSchemaDependencies(schema.not, dependencies);\n }\n\n if (schema.oneOf) {\n for (const item of schema.oneOf) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n\n if (schema.prefixItems) {\n for (const item of schema.prefixItems) {\n collectSchemaDependencies(item, dependencies);\n }\n }\n\n if (schema.propertyNames && typeof schema.propertyNames === 'object') {\n collectSchemaDependencies(schema.propertyNames, dependencies);\n }\n};\n\nexport const createGraph = ({\n spec,\n validate,\n}: {\n spec: OpenApiV3_1_X;\n validate: boolean;\n}): ValidatorResult & {\n graph: Graph;\n} => {\n const graph: Graph = {\n operations: new Map(),\n parameters: new Map(),\n requestBodies: new Map(),\n responses: new Map(),\n schemas: new Map(),\n };\n const issues: Array<ValidatorIssue> = [];\n const operationIds = new Map();\n\n if (spec.components) {\n // TODO: add other components\n if (spec.components.schemas) {\n for (const [key, schema] of Object.entries(spec.components.schemas)) {\n const dependencies = new Set<string>();\n collectSchemaDependencies(schema, dependencies);\n graph.schemas.set(addNamespace('schema', key), {\n dependencies,\n deprecated:\n 'deprecated' in schema ? Boolean(schema.deprecated) : false,\n });\n }\n }\n\n if (spec.components.parameters) {\n for (const [key, parameter] of Object.entries(\n spec.components.parameters,\n )) {\n const dependencies = new Set<string>();\n if ('$ref' in parameter) {\n collectSchemaDependencies(parameter, dependencies);\n } else {\n if (parameter.schema) {\n collectSchemaDependencies(parameter.schema, dependencies);\n }\n\n if (parameter.content) {\n for (const media of Object.values(parameter.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n graph.parameters.set(addNamespace('parameter', key), {\n dependencies,\n deprecated:\n 'deprecated' in parameter ? Boolean(parameter.deprecated) : false,\n });\n }\n }\n\n if (spec.components.requestBodies) {\n for (const [key, requestBody] of Object.entries(\n spec.components.requestBodies,\n )) {\n const dependencies = new Set<string>();\n if ('$ref' in requestBody) {\n collectSchemaDependencies(requestBody, dependencies);\n } else {\n for (const media of Object.values(requestBody.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n graph.requestBodies.set(addNamespace('body', key), {\n dependencies,\n deprecated: false,\n });\n }\n }\n\n if (spec.components.responses) {\n for (const [key, response] of Object.entries(spec.components.responses)) {\n const dependencies = new Set<string>();\n if ('$ref' in response) {\n collectSchemaDependencies(response, dependencies);\n } else {\n if (response.content) {\n for (const media of Object.values(response.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n graph.responses.set(addNamespace('response', key), {\n dependencies,\n deprecated: false,\n });\n }\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 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 (validate && 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 const dependencies = new Set<string>();\n\n if (operation.requestBody) {\n if ('$ref' in operation.requestBody) {\n collectSchemaDependencies(operation.requestBody, dependencies);\n } else {\n for (const media of Object.values(operation.requestBody.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n\n if (operation.responses) {\n for (const response of Object.values(operation.responses)) {\n if (!response) {\n continue;\n }\n\n if ('$ref' in response) {\n collectSchemaDependencies(response, dependencies);\n } else if (response.content) {\n for (const media of Object.values(response.content)) {\n if (media.schema) {\n collectSchemaDependencies(media.schema, dependencies);\n }\n }\n }\n }\n }\n\n if (operation.parameters) {\n for (const parameter of operation.parameters) {\n if ('$ref' in parameter) {\n collectSchemaDependencies(parameter, dependencies);\n } else if (parameter.schema) {\n collectSchemaDependencies(parameter.schema, dependencies);\n }\n }\n }\n\n graph.operations.set(addNamespace('operation', operationKey), {\n dependencies,\n deprecated: Boolean(operation.deprecated),\n tags: new Set(operation.tags),\n });\n }\n }\n }\n\n if (validate) {\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\n return {\n graph,\n issues,\n valid: !issues.some((issue) => issue.severity === 'error'),\n };\n};\n","import type { IRMediaType } from '../../../ir/mediaType';\nimport {\n isMediaTypeFileLike,\n mediaTypeToIrMediaType,\n} from '../../../ir/mediaType';\nimport type { MediaTypeObject, SchemaObject } from '../types/spec';\n\ninterface Content {\n mediaType: string;\n schema: SchemaObject | undefined;\n type: IRMediaType | undefined;\n}\n\nexport const contentToSchema = ({\n content,\n}: {\n content: Content;\n}): SchemaObject | undefined => {\n const { mediaType, schema } = content;\n\n if (!schema) {\n if (isMediaTypeFileLike({ mediaType })) {\n return {\n format: 'binary',\n type: 'string',\n };\n }\n return;\n }\n\n if (\n schema.type === 'string' &&\n !schema.format &&\n isMediaTypeFileLike({ mediaType })\n ) {\n return {\n ...schema,\n format: 'binary',\n };\n }\n\n return schema;\n};\n\nexport const 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 { SchemaObject } from '../types/spec';\n\nexport const getSchemaTypes = ({\n schema,\n}: {\n schema: SchemaObject;\n}): ReadonlyArray<SchemaType<SchemaObject>> => {\n if (typeof schema.type === 'string') {\n return [schema.type];\n }\n\n if (schema.type) {\n return schema.type;\n }\n\n // infer object based on the presence of properties\n if (schema.properties) {\n return ['object'];\n }\n\n return [];\n};\n\nconst parseSchemaJsDoc = ({\n irSchema,\n schema,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n if (schema.deprecated !== undefined) {\n irSchema.deprecated = schema.deprecated;\n }\n\n if (schema.description) {\n irSchema.description = schema.description;\n }\n\n if (schema.title) {\n irSchema.title = schema.title;\n }\n};\n\nconst parseSchemaMeta = ({\n irSchema,\n schema,\n state,\n}: {\n irSchema: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}) => {\n if (schema.const !== undefined) {\n irSchema.const = schema.const;\n\n // try to infer schema type\n if (!schema.type) {\n if (schema.const === null) {\n irSchema.type = 'null';\n } else {\n switch (typeof schema.const) {\n case 'bigint':\n case 'number':\n irSchema.type = 'number';\n break;\n case 'boolean':\n irSchema.type = 'boolean';\n break;\n case 'string':\n irSchema.type = 'string';\n break;\n }\n }\n }\n }\n\n if (schema.default !== undefined) {\n irSchema.default = schema.default;\n }\n\n if (schema.exclusiveMaximum !== 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 irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'read',\n ]);\n } else if (schema.writeOnly) {\n irSchema.accessScope = 'write';\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'write',\n ]);\n } else if (state.isProperty) {\n irSchema.accessScopes = mergeSchemaAccessScopes(irSchema.accessScopes, [\n 'both',\n ]);\n }\n};\n\nconst parseArray = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (\n (schema.prefixItems && schema.prefixItems.length) ||\n (schema.maxItems && schema.maxItems === schema.minItems) ||\n schema.const !== undefined\n ) {\n irSchema.type = 'tuple';\n } else {\n irSchema.type = 'array';\n }\n\n let schemaItems: Array<IR.SchemaObject> = [];\n\n for (const item of schema.prefixItems ?? []) {\n const irItemSchema = schemaToIrSchema({\n context,\n schema: item,\n state,\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemSchema.accessScopes,\n );\n schemaItems.push(irItemSchema);\n }\n\n if (schema.items) {\n const irItemsSchema = schemaToIrSchema({\n context,\n schema: schema.items,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irItemsSchema.accessScopes,\n );\n\n if (\n !schemaItems.length &&\n schema.maxItems &&\n schema.maxItems === schema.minItems\n ) {\n schemaItems = Array(schema.maxItems).fill(irItemsSchema);\n } else {\n const ofArray =\n schema.items.allOf || schema.items.anyOf || schema.items.oneOf;\n if (\n ofArray &&\n ofArray.length > 1 &&\n !getSchemaTypes({ schema: schema.items }).includes('null')\n ) {\n // bring composition up to avoid incorrectly nested arrays\n irSchema = {\n ...irSchema,\n ...irItemsSchema,\n };\n } else {\n schemaItems.push(irItemsSchema);\n }\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseBoolean = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n}): IR.SchemaObject => {\n irSchema.type = 'boolean';\n\n return irSchema;\n};\n\nconst parseNull = ({\n irSchema = {},\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n}) => {\n irSchema.type = 'null';\n\n return irSchema;\n};\n\nconst parseNumber = ({\n irSchema = {},\n schema,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: SchemaType<SchemaObject>;\n };\n}): IR.SchemaObject => {\n irSchema.type = schema.type;\n\n return irSchema;\n};\n\nconst parseObject = ({\n context,\n irSchema = {},\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n irSchema.type = 'object';\n\n const schemaProperties: Record<string, IR.SchemaObject> = {};\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n if (typeof property === 'boolean') {\n // TODO: parser - handle boolean properties\n } else {\n const irPropertySchema = schemaToIrSchema({\n context,\n schema: property,\n state: {\n ...state,\n isProperty: true,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irPropertySchema.accessScopes,\n );\n schemaProperties[name] = irPropertySchema;\n }\n }\n\n if (Object.keys(schemaProperties).length) {\n irSchema.properties = schemaProperties;\n }\n\n if (schema.additionalProperties === undefined) {\n if (!irSchema.properties) {\n irSchema.additionalProperties = {\n type: 'unknown',\n };\n }\n } else if (typeof schema.additionalProperties === 'boolean') {\n irSchema.additionalProperties = {\n type: schema.additionalProperties ? 'unknown' : 'never',\n };\n } else {\n const irAdditionalPropertiesSchema = schemaToIrSchema({\n context,\n schema: schema.additionalProperties,\n state,\n });\n irSchema.additionalProperties = irAdditionalPropertiesSchema;\n }\n\n if (schema.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 const irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (schema.required) {\n if (irCompositionSchema.required) {\n irCompositionSchema.required = [\n ...irCompositionSchema.required,\n ...schema.required,\n ];\n } else {\n irCompositionSchema.required = schema.required;\n }\n }\n\n schemaItems.push(irCompositionSchema);\n\n if (compositionSchema.$ref) {\n const ref = context.resolveRef<SchemaObject>(compositionSchema.$ref);\n // `$ref` should be passed from the root `parseSchema()` call\n if (ref.discriminator && state.$ref) {\n const values = discriminatorValues(\n state.$ref,\n ref.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [ref.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n if (ref.required?.includes(ref.discriminator.propertyName)) {\n irDiscriminatorSchema.required = [ref.discriminator.propertyName];\n }\n schemaItems.push(irDiscriminatorSchema);\n }\n\n if (!state.circularReferenceTracker.has(compositionSchema.$ref)) {\n const irRefSchema = schemaToIrSchema({\n context,\n schema: ref,\n state: {\n ...state,\n $ref: compositionSchema.$ref,\n },\n });\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irRefSchema.accessScopes,\n );\n }\n }\n }\n\n if (schemaTypes.includes('object')) {\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n for (const requiredProperty of irObjectSchema.required ?? []) {\n if (!irObjectSchema.properties[requiredProperty]) {\n for (const compositionSchema of compositionSchemas) {\n // TODO: parser - this could be probably resolved more accurately\n const finalCompositionSchema = compositionSchema.$ref\n ? context.resolveRef<SchemaObject>(compositionSchema.$ref)\n : compositionSchema;\n\n if (\n getSchemaTypes({ schema: finalCompositionSchema }).includes(\n 'object',\n )\n ) {\n const irCompositionSchema = parseOneType({\n context,\n schema: {\n ...finalCompositionSchema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n if (irCompositionSchema.properties?.[requiredProperty]) {\n irObjectSchema.properties[requiredProperty] =\n irCompositionSchema.properties[requiredProperty];\n break;\n }\n }\n }\n }\n }\n schemaItems.push(irObjectSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n logicalOperator: 'and',\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('null')) {\n // nest composition to avoid producing an intersection with null\n const nestedItems: Array<IR.SchemaObject> = [\n {\n type: 'null',\n },\n ];\n\n if (schemaItems.length) {\n nestedItems.unshift(irSchema);\n }\n\n irSchema = {\n items: nestedItems,\n logicalOperator: 'or',\n };\n }\n\n return irSchema;\n};\n\nconst parseAnyOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'anyOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n const compositionSchemas = schema.anyOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && compositionSchema.$ref) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n schemaItems.push(irCompositionSchema);\n }\n\n if (schemaTypes.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n if (schemaTypes.includes('object')) {\n // nest composition to avoid producing a union with object properties\n const irObjectSchema = parseOneType({\n context,\n schema: {\n ...schema,\n type: 'object',\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseEnum = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'enum'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n irSchema.type = 'enum';\n\n const schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n for (const [index, enumValue] of schema.enum.entries()) {\n const typeOfEnumValue = typeof enumValue;\n let enumType: SchemaType<SchemaObject> | undefined;\n\n if (\n typeOfEnumValue === 'string' ||\n typeOfEnumValue === 'number' ||\n typeOfEnumValue === 'boolean'\n ) {\n enumType = typeOfEnumValue;\n } else if (typeOfEnumValue === 'object' && Array.isArray(enumValue)) {\n enumType = 'array';\n } else if (enumValue === null) {\n // type must contain null\n if (schemaTypes.includes('null')) {\n enumType = 'null';\n }\n } else {\n console.warn(\n '🚨',\n `unhandled \"${typeOfEnumValue}\" typeof value \"${enumValue}\" for enum`,\n schema.enum,\n );\n }\n\n if (!enumType) {\n continue;\n }\n\n const irTypeSchema = parseOneType({\n context,\n schema: {\n const: enumValue,\n description: schema['x-enum-descriptions']?.[index],\n title:\n schema['x-enum-varnames']?.[index] ?? schema['x-enumNames']?.[index],\n type: enumType,\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneOf = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'oneOf'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n let schemaItems: Array<IR.SchemaObject> = [];\n const schemaTypes = getSchemaTypes({ schema });\n\n const compositionSchemas = schema.oneOf;\n\n for (const compositionSchema of compositionSchemas) {\n let irCompositionSchema = schemaToIrSchema({\n context,\n schema: compositionSchema,\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irCompositionSchema.accessScopes,\n );\n\n // `$ref` should be defined with discriminators\n if (schema.discriminator && compositionSchema.$ref) {\n const values = discriminatorValues(\n compositionSchema.$ref,\n schema.discriminator.mapping,\n );\n const valueSchemas: ReadonlyArray<IR.SchemaObject> = values.map(\n (value) => ({\n const: value,\n type: 'string',\n }),\n );\n const irDiscriminatorSchema: IR.SchemaObject = {\n properties: {\n [schema.discriminator.propertyName]:\n valueSchemas.length > 1\n ? {\n items: valueSchemas,\n logicalOperator: 'or',\n }\n : valueSchemas[0]!,\n },\n required: [schema.discriminator.propertyName],\n type: 'object',\n };\n irCompositionSchema = {\n items: [irDiscriminatorSchema, irCompositionSchema],\n logicalOperator: 'and',\n };\n }\n\n // since we know oneOf will be using \"or\" logical operator, if the parsed\n // composition schema also has an \"or\" operator, we can bring it up\n // to avoid unnecessary brackets\n if (\n irCompositionSchema.logicalOperator === 'or' &&\n irCompositionSchema.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 irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irObjectSchema.accessScopes,\n );\n\n if (irObjectSchema.properties) {\n irSchema = {\n items: [irSchema, irObjectSchema],\n logicalOperator: 'and',\n };\n }\n }\n\n return irSchema;\n};\n\nconst parseRef = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, '$ref'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n let irSchema = initIrSchema({ schema });\n\n const irRefSchema: IR.SchemaObject = {};\n\n // refs using unicode characters become encoded, didn't investigate why\n // but the suspicion is this comes from `@hey-api/json-schema-ref-parser`\n irRefSchema.$ref = decodeURI(schema.$ref);\n\n if (!state.circularReferenceTracker.has(schema.$ref)) {\n const refSchema = context.resolveRef<SchemaObject>(schema.$ref);\n const irResolvedRefSchema = schemaToIrSchema({\n context,\n schema: refSchema,\n state: {\n ...state,\n $ref: schema.$ref,\n isProperty: false,\n },\n });\n irRefSchema.accessScopes = mergeSchemaAccessScopes(\n irRefSchema.accessScopes,\n irResolvedRefSchema.accessScopes,\n );\n }\n\n const schemaItems: Array<IR.SchemaObject> = [];\n schemaItems.push(irRefSchema);\n\n if (schema.type && typeof schema.type !== 'string') {\n if (schema.type.includes('null')) {\n schemaItems.push({ type: 'null' });\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n mutateSchemaOneItem: true,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseOneType = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: SchemaType<SchemaObject>;\n };\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n }\n\n switch (schema.type) {\n case 'array':\n return parseArray({\n context,\n irSchema,\n schema,\n state,\n });\n case 'boolean':\n return parseBoolean({\n context,\n irSchema,\n schema,\n });\n case 'integer':\n case 'number':\n return parseNumber({\n context,\n irSchema,\n schema,\n });\n case 'null':\n return parseNull({\n context,\n irSchema,\n schema,\n });\n case 'object':\n return parseObject({\n context,\n irSchema,\n schema,\n state,\n });\n case 'string':\n return parseString({\n context,\n irSchema,\n schema,\n });\n default:\n // gracefully handle invalid type\n return parseUnknown({\n context,\n irSchema,\n schema,\n state,\n });\n }\n};\n\nconst parseManyTypes = ({\n context,\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: Omit<SchemaObject, 'type'> & {\n type: ReadonlyArray<SchemaType<SchemaObject>>;\n };\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n const typeIrSchema: IR.SchemaObject = {};\n\n parseSchemaMeta({\n irSchema: typeIrSchema,\n schema,\n state,\n });\n\n if (schema.type.includes('null') && typeIrSchema.default === null) {\n // clear to avoid duplicate default inside the non-null schema.\n // this would produce incorrect validator output\n delete typeIrSchema.default;\n }\n\n const schemaItems: Array<IR.SchemaObject> = [];\n\n for (const type of schema.type) {\n if (type === 'null') {\n schemaItems.push({ type: 'null' });\n } else {\n const irTypeSchema = parseOneType({\n context,\n irSchema: typeIrSchema,\n schema: {\n ...schema,\n type,\n },\n state,\n });\n\n irSchema.accessScopes = mergeSchemaAccessScopes(\n irSchema.accessScopes,\n irTypeSchema.accessScopes,\n );\n\n schemaItems.push(irTypeSchema);\n }\n }\n\n irSchema = addItemsToSchema({\n items: schemaItems,\n schema: irSchema,\n });\n\n return irSchema;\n};\n\nconst parseType = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaWithRequired<SchemaObject, 'type'>;\n state: SchemaState;\n}): IR.SchemaObject => {\n const irSchema = initIrSchema({ schema });\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n const schemaTypes = getSchemaTypes({ schema });\n\n if (schemaTypes.length === 1) {\n return parseOneType({\n context,\n irSchema,\n schema: {\n ...schema,\n type: schemaTypes[0]!,\n },\n state,\n });\n }\n\n return parseManyTypes({\n context,\n irSchema,\n schema: {\n ...schema,\n type: schemaTypes,\n },\n state,\n });\n};\n\nconst parseUnknown = ({\n irSchema,\n schema,\n state,\n}: {\n context: IR.Context;\n irSchema?: IR.SchemaObject;\n schema: SchemaObject;\n state: SchemaState;\n}): IR.SchemaObject => {\n if (!irSchema) {\n irSchema = initIrSchema({ schema });\n }\n\n irSchema.type = 'unknown';\n\n parseSchemaMeta({\n irSchema,\n schema,\n state,\n });\n\n return irSchema;\n};\n\nexport const schemaToIrSchema = ({\n context,\n schema,\n state,\n}: {\n context: IR.Context;\n schema: SchemaObject;\n state: SchemaState | undefined;\n}): IR.SchemaObject => {\n if (!state) {\n state = {\n circularReferenceTracker: new Set(),\n };\n }\n\n if (state.$ref) {\n state.circularReferenceTracker.add(state.$ref);\n }\n\n if (schema.$ref) {\n return parseRef({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, '$ref'>,\n state,\n });\n }\n\n if (schema.enum) {\n return parseEnum({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'enum'>,\n state,\n });\n }\n\n if (schema.allOf) {\n return parseAllOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'allOf'>,\n state,\n });\n }\n\n if (schema.anyOf) {\n return parseAnyOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'anyOf'>,\n state,\n });\n }\n\n if (schema.oneOf) {\n return parseOneOf({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'oneOf'>,\n state,\n });\n }\n\n // infer object based on the presence of properties\n if (schema.type || schema.properties) {\n return parseType({\n context,\n schema: schema as SchemaWithRequired<SchemaObject, 'type'>,\n state,\n });\n }\n\n return parseUnknown({\n context,\n schema,\n state,\n });\n};\n\nexport const parseSchema = ({\n $ref,\n context,\n schema,\n}: {\n $ref: string;\n context: IR.Context;\n schema: SchemaObject;\n}) => {\n if (!context.ir.components) {\n context.ir.components = {};\n }\n\n if (!context.ir.components.schemas) {\n context.ir.components.schemas = {};\n }\n\n context.ir.components.schemas[refToName($ref)] = schemaToIrSchema({\n context,\n schema,\n state: {\n $ref,\n circularReferenceTracker: new Set(),\n },\n });\n};\n","import { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport type { SchemaType } from '../../shared/types/schema';\nimport type { ParameterObject, RequestBodyObject } from '../types/spec';\nimport type { SchemaObject } from '../types/spec';\nimport { 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.input.pagination,\n );\n if (paginationRegExp.test(name)) {\n return true;\n }\n\n if (schema.$ref) {\n const ref = context.resolveRef<\n ParameterObject | RequestBodyObject | SchemaObject\n >(schema.$ref);\n\n if ('content' in ref || 'in' in ref) {\n let refSchema: SchemaObject | undefined;\n\n if ('in' in ref) {\n refSchema = ref.schema;\n }\n\n if (!refSchema) {\n // parameter or body\n const 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.input.pagination,\n );\n\n if (paginationRegExp.test(name)) {\n const property = schema.properties[name]!;\n\n if (typeof property !== 'boolean') {\n // TODO: resolve deeper references\n const schemaTypes = getSchemaTypes({ schema: property });\n\n if (!schemaTypes.length) {\n const compositionSchemas = property.anyOf ?? property.oneOf;\n const nonNullCompositionSchemas = (compositionSchemas ?? []).filter(\n (schema) => schema.type !== 'null',\n );\n if (nonNullCompositionSchemas.length === 1) {\n const schemaTypes = getSchemaTypes({\n schema: nonNullCompositionSchemas[0]!,\n });\n if (isPaginationType(schemaTypes)) {\n return name;\n }\n }\n }\n\n if (isPaginationType(schemaTypes)) {\n return name;\n }\n }\n }\n }\n\n for (const allOf of schema.allOf ?? []) {\n const pagination = paginationField({\n context,\n name,\n schema: allOf,\n });\n if (pagination) {\n return pagination;\n }\n }\n\n return false;\n};\n","import type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport { 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 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: Array<IR.SecurityObject> = [];\n\n for (const securityRequirementObject of operation.security) {\n for (const name in securityRequirementObject) {\n const securitySchemeObject = securitySchemesMap.get(name);\n\n if (!securitySchemeObject) {\n continue;\n }\n\n securitySchemeObjects.push(securitySchemeObject);\n }\n }\n\n if (securitySchemeObjects.length) {\n irOperation.security = securitySchemeObjects;\n }\n }\n\n // TODO: parser - handle servers\n // qux: operation.servers\n\n return irOperation;\n};\n\nexport const parseOperation = ({\n context,\n method,\n operation,\n path,\n securitySchemesMap,\n state,\n}: {\n context: IR.Context;\n method: Extract<\n keyof PathItemObject,\n 'delete' | 'get' | 'head' | 'options' | 'patch' | 'post' | 'put' | 'trace'\n >;\n operation: Operation;\n path: keyof IR.PathsObject;\n securitySchemesMap: Map<string, SecuritySchemeObject>;\n state: State;\n}) => {\n 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<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 type { IR } from '../../../ir/types';\nimport type { State } from '../../shared/types/state';\nimport {\n createFilteredDependencies,\n createFilters,\n hasFilters,\n} from '../../shared/utils/filter';\nimport type { Graph } 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 { createGraph } from './graph';\nimport { parseOperation } from './operation';\nimport { parametersArrayToObject, parseParameter } from './parameter';\nimport { parseRequestBody } from './requestBody';\nimport { parseSchema } from './schema';\nimport { parseServers } from './server';\n\nexport const parseV3_1_X = (context: IR.Context<OpenApiV3_1_X>) => {\n const shouldFilterSpec = hasFilters(context.config.input.filters);\n\n let graph: Graph | undefined;\n\n if (shouldFilterSpec || context.config.input.validate_EXPERIMENTAL) {\n const result = createGraph({\n spec: context.spec,\n validate: Boolean(context.config.input.validate_EXPERIMENTAL),\n });\n graph = result.graph;\n handleValidatorResult({ context, result });\n }\n\n if (shouldFilterSpec && graph) {\n const filters = createFilters(context.config.input.filters, context.spec);\n const sets = createFilteredDependencies({ filters, graph });\n filterSpec({\n ...sets,\n preserveOrder: filters.preserveOrder,\n spec: context.spec,\n });\n }\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<Parameters<typeof parseOperation>[0], 'method'> =\n {\n context,\n operation: {\n description: finalPathItem.description,\n parameters: parametersArrayToObject({\n context,\n parameters: finalPathItem.parameters,\n }),\n security: context.spec.security,\n servers: finalPathItem.servers,\n summary: finalPathItem.summary,\n },\n path: path as keyof PathsObject,\n securitySchemesMap,\n state,\n };\n\n if (finalPathItem.delete) {\n parseOperation({\n ...operationArgs,\n method: 'delete',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.delete,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.delete.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.get) {\n parseOperation({\n ...operationArgs,\n method: 'get',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.get,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.get.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.head) {\n parseOperation({\n ...operationArgs,\n method: 'head',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.head,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.head.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.options) {\n parseOperation({\n ...operationArgs,\n method: 'options',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.options,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.options.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.patch) {\n parseOperation({\n ...operationArgs,\n method: 'patch',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.patch,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.patch.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.post) {\n parseOperation({\n ...operationArgs,\n method: 'post',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.post,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.post.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.put) {\n parseOperation({\n ...operationArgs,\n method: 'put',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.put,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.put.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n\n if (finalPathItem.trace) {\n parseOperation({\n ...operationArgs,\n method: 'trace',\n operation: {\n ...operationArgs.operation,\n ...finalPathItem.trace,\n parameters: mergeParametersObjects({\n source: parametersArrayToObject({\n context,\n parameters: finalPathItem.trace.parameters,\n }),\n target: operationArgs.operation.parameters,\n }),\n },\n });\n }\n }\n};\n","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 { compiler, type Property } from '../compiler';\nimport type { Model } from '../openApi';\nimport { sanitizeOperationParameterName } from '../openApi';\nimport type { Client } from '../types/client';\nimport { getConfig, isLegacyClient } from './config';\nimport { refSchemasPartial } from './const';\nimport { enumValue } from './enum';\nimport { escapeComment, escapeName, unescapeName } from './escape';\nimport { getSchemasMeta } from './meta';\nimport { reservedJavaScriptKeywordsRegExp } from './regexp';\nimport { stringCase } from './stringCase';\nimport { unique } from './unique';\n\nexport const isModelDate = (model: Model): boolean =>\n model.format === 'date' || model.format === 'date-time';\n\nconst base = (model: Model) => {\n const config = getConfig();\n\n if (model.base === 'binary') {\n return compiler.typeUnionNode({\n types: ['Blob', 'File'],\n });\n }\n\n if (\n config.plugins['@hey-api/transformers']?.config.dates &&\n isModelDate(model)\n ) {\n return compiler.typeNode('Date');\n }\n\n return compiler.typeNode(model.base);\n};\n\nconst typeReference = (model: Model) => {\n // nullable is false when base is null to avoid duplicate null statements\n const isNullable = model.base === 'null' ? false : model.isNullable;\n let typeNode = base(model);\n /**\n * special handling for single reference. The current approach didn't handle\n * transformed names, this fixes that. We should add a more robust solution,\n * but this will work for now.\n * {@link https://github.com/hey-api/openapi-ts/issues/768}\n */\n if (model.export === 'reference' && model.$refs.length === 1) {\n if (model.$refs[0]!.startsWith(refSchemasPartial)) {\n const meta = getSchemasMeta(model.base);\n typeNode = compiler.typeNode(meta.name);\n }\n }\n const unionNode = compiler.typeUnionNode({\n isNullable,\n types: [typeNode],\n });\n return unionNode;\n};\n\nconst typeArray = (model: Model) => {\n if (model.link) {\n // We treat an array of `model.link` as constant size array definition.\n if (Array.isArray(model.link)) {\n const types = model.link.map((m) => toType(m));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n // Special case where we use tuple to define constant size array.\n if (\n model.export === 'array' &&\n model.maxItems &&\n model.minItems &&\n model.maxItems === model.minItems &&\n model.maxItems <= 100\n ) {\n const types = Array(model.maxItems).fill(toType(model.link));\n const tuple = compiler.typeTupleNode({\n isNullable: model.isNullable,\n types,\n });\n return tuple;\n }\n\n return compiler.typeArrayNode([toType(model.link)], model.isNullable);\n }\n\n return compiler.typeArrayNode([base(model)], model.isNullable);\n};\n\nconst typeEnum = (model: Model) => {\n const values = model.enum.map((enumerator) => enumValue(enumerator.value));\n return compiler.typeUnionNode({\n isNullable: model.isNullable,\n types: values,\n });\n};\n\nconst typeDict = (model: Model) => {\n const type =\n model.link && !Array.isArray(model.link) ? toType(model.link) : base(model);\n return compiler.typeRecordNode(['string'], [type], model.isNullable, true);\n};\n\nconst typeUnionOrIntersection = ({\n model,\n style,\n}: {\n model: Model;\n style: 'intersection' | 'union';\n}) => {\n const types = model.properties\n .map((model) => {\n const str = compiler.nodeToString({\n node: toType(model),\n unescape: true,\n });\n return str;\n })\n .filter(unique);\n\n const node =\n style === 'union'\n ? compiler.typeUnionNode({\n // avoid printing duplicate null statements\n isNullable:\n model.isNullable &&\n !model.properties.find((property) => property.isNullable),\n types,\n })\n : compiler.typeIntersectionNode({\n isNullable: model.isNullable,\n types,\n });\n\n // top-level models don't need parentheses around them\n if (model.meta) {\n return node;\n }\n\n return compiler.typeParenthesizedNode({\n type: node,\n });\n};\n\nconst typeInterface = (model: Model) => {\n if (!model.properties.length) {\n return compiler.typeNode('unknown');\n }\n\n const config = getConfig();\n\n const isLegacy = isLegacyClient(config);\n\n const properties: Property[] = model.properties.map((property) => {\n let maybeRequired = property.isRequired ? '' : '?';\n let value = toType(property);\n let name = !isLegacy\n ? escapeName(unescapeName(transformTypeKeyName(property.name)))\n : // special test for 1XX status codes. We need a more robust system\n // for escaping values depending on context in which they're printed,\n // but since this works for client packages, it's not worth it right now\n /^\\dXX$/.test(property.name)\n ? escapeName(property.name)\n : property.name;\n // special case for additional properties type\n if (property.name === '[key: string]') {\n name = property.name;\n if (maybeRequired) {\n maybeRequired = '';\n value = compiler.typeUnionNode({\n types: [value, 'undefined'],\n });\n }\n }\n return {\n comment: [\n property.description && escapeComment(property.description),\n property.deprecated && '@deprecated',\n ],\n isReadOnly: property.isReadOnly,\n isRequired: maybeRequired === '',\n name,\n type: value,\n };\n });\n\n return compiler.typeInterfaceNode({\n isNullable: model.isNullable,\n properties,\n useLegacyResolution: true,\n });\n};\n\nexport const toType = (model: Model): ts.TypeNode => {\n switch (model.export) {\n case 'all-of':\n return typeUnionOrIntersection({\n model,\n style: 'intersection',\n });\n case 'any-of':\n case 'one-of':\n return typeUnionOrIntersection({\n model,\n style: 'union',\n });\n case 'array':\n return typeArray(model);\n case 'dictionary':\n return typeDict(model);\n case 'enum':\n return typeEnum(model);\n case 'interface':\n return typeInterface(model);\n case 'const':\n case 'generic':\n case 'reference':\n default:\n return typeReference(model);\n }\n};\n\nexport interface SetUniqueTypeNameResult {\n /**\n * Did this function add a new property to the `client.types` object?\n */\n created: boolean;\n /**\n * Unique name for the exported type.\n */\n name: string;\n}\n\n/**\n * Generates a unique name for the exported type for given model meta.\n * @param args.client Internal client instance\n * @param args.count Unique key for deduplication\n * @param args.create If a name record does not exist, should it be created?\n * @param args.meta Meta property from the model\n * @param args.nameTransformer Function for transforming name into the final\n * value. In different contexts, a different strategy might be used. For\n * example, slashes `/` are invalid in TypeScript identifiers, but okay in\n * a JavaScript object key name.\n * @returns {SetUniqueTypeNameResult}\n */\nexport const setUniqueTypeName = ({\n client,\n count = 1,\n create = false,\n meta,\n nameTransformer,\n}: Pick<Required<Model>, 'meta'> & {\n client: Client;\n count?: number;\n create?: boolean;\n nameTransformer?: (value: string) => string;\n}): SetUniqueTypeNameResult => {\n let result: SetUniqueTypeNameResult = {\n created: false,\n name: '',\n };\n let name = meta.name;\n if (nameTransformer) {\n name = nameTransformer(name);\n }\n if (count > 1) {\n name = `${name}${count}`;\n }\n const type = client.types[name];\n if (!type) {\n if (create) {\n client.types[name] = meta;\n result = {\n created: true,\n name,\n };\n }\n } else if (type.$ref === meta.$ref) {\n result = {\n created: false,\n name,\n };\n } else {\n result = setUniqueTypeName({\n client,\n count: count + 1,\n create,\n meta,\n nameTransformer,\n });\n }\n return result;\n};\n\nexport interface UnsetUniqueTypeNameResult {\n /**\n * Did this function delete a property from the `client.types` object?\n */\n deleted: boolean;\n /**\n * Unique name removed from the `client.types` object.\n */\n name: string;\n}\n\nexport const unsetUniqueTypeName = ({\n client,\n name,\n}: {\n client: Client;\n name: string;\n}): UnsetUniqueTypeNameResult => {\n let result: UnsetUniqueTypeNameResult = {\n deleted: false,\n name: '',\n };\n if (!client.types[name]) {\n return result;\n }\n delete client.types[name];\n result = {\n deleted: true,\n name,\n };\n return result;\n};\n\n/**\n * Replaces any invalid characters from a parameter name.\n * For example: 'filter.someProperty' becomes 'filterSomeProperty'.\n */\nexport const transformTypeKeyName = (value: string): string => {\n const config = getConfig();\n\n // transform only for legacy clients\n if (!isLegacyClient(config)) {\n return value;\n }\n\n const name = stringCase({\n case: 'camelCase',\n value: sanitizeOperationParameterName(value),\n }).replace(reservedJavaScriptKeywordsRegExp, '_$1');\n return name;\n};\n","import type { Config } from '../../../types/config';\nimport { getConfig, isLegacyClient } from '../../../utils/config';\nimport { stringCase } from '../../../utils/stringCase';\nimport { transformTypeKeyName } from '../../../utils/type';\nimport type {\n OperationParameter,\n OperationResponse,\n} from '../interfaces/client';\nimport { sanitizeNamespaceIdentifier } from './sanitize';\n\nexport const 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 { parseV2_0_X } from './2.0.x';\nimport { parseV3_0_X } from './3.0.x';\nimport { parseV3_1_X } from './3.1.x';\nimport type { Client } from './common/interfaces/client';\nimport type { OpenApi as LegacyOpenApi } from './common/interfaces/OpenApi';\nimport type { OpenApi } from './types';\nimport { parse as parseV2 } from './v2';\nimport { parse as parseV3 } from './v3';\n\nexport type {\n Client,\n Enum,\n Method,\n Model,\n ModelMeta,\n Operation,\n OperationParameter,\n OperationResponse,\n} from './common/interfaces/client';\nexport type { OpenApi } from './common/interfaces/OpenApi';\nexport { isOperationParameterRequired } from './common/parser/operation';\nexport {\n ensureValidTypeScriptJavaScriptIdentifier,\n sanitizeNamespaceIdentifier,\n sanitizeOperationParameterName,\n} from './common/parser/sanitize';\nexport { getType } from './common/parser/type';\nexport type { OpenApiSchema as OpenApiV2Schema } from './v2/interfaces/OpenApiSchema';\nexport type { OpenApiSchema as OpenApiV3Schema } from './v3/interfaces/OpenApiSchema';\n\n/**\n * Parse the OpenAPI specification to a Client model that contains\n * all the models, services and schema's we should output.\n * @param openApi The OpenAPI spec that we have loaded from disk.\n */\nexport function parseLegacy({\n openApi,\n}: {\n openApi: unknown;\n}): Omit<Client, 'config'> {\n const spec = openApi as LegacyOpenApi;\n\n if ('openapi' in spec) {\n return parseV3(spec);\n }\n\n if ('swagger' in spec) {\n return parseV2(spec);\n }\n\n throw new Error(\n `Unsupported OpenAPI specification: ${JSON.stringify(spec, null, 2)}`,\n );\n}\n\n/**\n * @internal\n * Parse the resolved OpenAPI specification. This will populate and return\n * `context` with intermediate representation obtained from the parsed spec.\n */\nexport const parseOpenApiSpec = ({\n config,\n spec,\n}: {\n config: Config;\n spec: unknown;\n}): IR.Context | undefined => {\n const context = new IRContext({\n config,\n spec: spec as OpenApi.V2_0_X | OpenApi.V3_0_X | OpenApi.V3_1_X,\n });\n\n if ('swagger' in context.spec) {\n parseV2_0_X(context as IR.Context<OpenApi.V2_0_X>);\n return context;\n }\n\n switch (context.spec.openapi) {\n case '3.0.0':\n case '3.0.1':\n case '3.0.2':\n case '3.0.3':\n case '3.0.4':\n parseV3_0_X(context as IR.Context<OpenApi.V3_0_X>);\n return context;\n case '3.1.0':\n case '3.1.1':\n parseV3_1_X(context as IR.Context<OpenApi.V3_1_X>);\n return context;\n default:\n break;\n }\n\n throw new Error('Unsupported OpenAPI specification');\n};\n","import type { Config, UserConfig } from './types/config';\n\nexport const getLogs = (userConfig: UserConfig | undefined): Config['logs'] => {\n let logs: Config['logs'] = {\n file: true,\n level: 'info',\n path: process.cwd(),\n };\n if (typeof userConfig?.logs === 'string') {\n logs.path = userConfig.logs;\n } else {\n logs = {\n ...logs,\n ...userConfig?.logs,\n };\n }\n return logs;\n};\n","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","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 { ImportExportItemObject } from '../compiler/utils';\nimport type { Client } from '../plugins/@hey-api/client-core/types';\nimport { getClientPlugin } from '../plugins/@hey-api/client-core/utils';\nimport type { DefinePlugin } from '../plugins/types';\nimport type { Config } from '../types/config';\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\nconst replaceRelativeImports = (filePath: string) => {\n let content = fs.readFileSync(filePath, 'utf8');\n\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 ? importPath.slice(lastSlashIndex + 1) : importPath;\n if (fileName.includes('.')) {\n return match;\n }\n return `from '${importPath}.js'`;\n },\n );\n\n fs.writeFileSync(filePath, content, 'utf8');\n};\n\n/**\n * Creates a `client` folder containing the same modules as the client package.\n */\nexport const generateClientBundle = ({\n outputPath,\n plugin,\n tsConfig,\n}: {\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 fs.cpSync(coreDistPath, coreOutputPath, { recursive: true });\n if (shouldAppendJs) {\n const coreFiles = fs.readdirSync(coreOutputPath);\n for (const file of coreFiles) {\n replaceRelativeImports(path.resolve(coreOutputPath, file));\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 fs.cpSync(clientDistPath, clientOutputPath, { recursive: true });\n if (shouldAppendJs) {\n const clientFiles = fs.readdirSync(clientOutputPath);\n for (const file of clientFiles) {\n replaceRelativeImports(path.resolve(clientOutputPath, file));\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 fs.cpSync(clientSrcPath, dirPath, {\n recursive: true,\n });\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","import type { StringCase } from '../../../types/case';\nimport type { Config } from '../../../types/config';\nimport { irRef } from '../../../utils/ref';\nimport { stringCase } from '../../../utils/stringCase';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\n}\n\n// TODO: this needs refactor\nexport const operationIrRef = ({\n case: _case = 'PascalCase',\n config,\n id,\n parameterId,\n type,\n}: OperationIRRef & {\n readonly case?: StringCase;\n config: Pick<Config, 'plugins'>;\n parameterId?: string;\n type: 'data' | 'error' | 'errors' | 'parameter' | 'response' | 'responses';\n}): string => {\n let affix = '';\n switch (type) {\n case 'data':\n case 'error': // error union\n case 'errors': // errors map\n case 'parameter':\n case 'response': // response union\n case 'responses': // responses map\n affix = `${(type[0] ?? '').toLocaleUpperCase()}${type.slice(1)}`;\n break;\n }\n let separate = true;\n if (\n config.plugins['@hey-api/typescript']?.config.identifierCase === 'preserve'\n ) {\n separate = false;\n }\n const separator = separate ? '-' : '';\n const parts: Array<string> = [\n irRef,\n stringCase({\n case: _case,\n value: id,\n }),\n separator,\n affix,\n ];\n if (parameterId) {\n parts.push(\n separator,\n stringCase({\n case: _case,\n value: parameterId,\n }),\n );\n }\n return parts.join('');\n};\n","import type { Identifier, TypeScriptFile } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { operationIrRef } from '../../shared/utils/ref';\n\nexport const typesId = 'types';\n\nfunction refIdentifier<T extends Identifier>(\n identifier: T,\n onGet?: (identifier: T) => void,\n): T {\n return {\n ...identifier,\n get name() {\n onGet?.(identifier);\n return identifier.name;\n },\n };\n}\n\nexport const importIdentifier = ({\n context,\n file,\n operation,\n type,\n}: {\n context: IR.Context;\n file: TypeScriptFile;\n operation: IR.OperationObject;\n type: Parameters<typeof operationIrRef>[0]['type'];\n}): Identifier => {\n const identifier = context.file({ id: typesId })!.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type,\n }),\n namespace: 'type',\n });\n return refIdentifier(identifier, (ref) => {\n if (ref.name) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: ref.name,\n });\n }\n });\n};\n","import { compiler } from '../../../compiler';\nimport { clientModulePath } from '../../../generate/client';\nimport { parseUrl } from '../../../utils/url';\nimport { typesId } from '../typescript/ref';\nimport type { PluginHandler } from './types';\nimport { clientId, getClientBaseUrlKey } from './utils';\n\nconst resolveBaseUrlString = ({\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 clientOptions = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: 'ClientOptions',\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 compiler.callExpression({\n functionName: createConfig.name,\n parameters: defaultValues.length\n ? [compiler.objectExpression({ obj: defaultValues })]\n : undefined,\n types: [compiler.typeReferenceNode({ typeName: clientOptions.name })],\n }),\n ];\n\n const statement = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: createClient.name,\n parameters: createClientConfig\n ? [\n compiler.callExpression({\n functionName: createClientConfig.name,\n parameters: createConfigParameters,\n }),\n ]\n : createConfigParameters,\n }),\n name: 'client',\n });\n file.add(statement);\n};\n","import { compiler } from '../../../compiler';\nimport { clientModulePath } from '../../../generate/client';\nimport { clientId } from '../client-core/utils';\nimport { typesId } from '../typescript/ref';\nimport type { PluginHandler } from './types';\n\nexport const createClientConfigType = ({\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 clientOptions = file.import({\n asType: true,\n module: file.relativePathToFile({ context: plugin.context, id: typesId }),\n name: 'ClientOptions',\n });\n const configType = file.import({\n asType: true,\n module: clientModule,\n name: 'Config',\n });\n const defaultClientOptions = file.import({\n alias: 'DefaultClientOptions',\n asType: true,\n module: clientModule,\n name: 'ClientOptions',\n });\n\n const defaultClientOptionsType = compiler.typeReferenceNode({\n typeName: defaultClientOptions.name,\n });\n const tType = compiler.typeReferenceNode({ typeName: 'T' });\n\n const typeCreateClientConfig = compiler.typeAliasDeclaration({\n comment: [\n 'The `createClientConfig()` function will be called on client initialization',\n \"and the returned object will become the client's initial configuration.\",\n '',\n 'You may want to initialize your client this way instead of calling',\n \"`setConfig()`. This is useful for example if you're using Next.js\",\n 'to ensure your client always has the correct values.',\n ],\n exportType: true,\n name: 'CreateClientConfig',\n type: compiler.functionTypeNode({\n parameters: [\n compiler.parameterDeclaration({\n name: 'override',\n required: false,\n type: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeIntersectionNode({\n types: [defaultClientOptionsType, tType],\n }),\n ],\n typeName: configType.name,\n }),\n }),\n ],\n returnType: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeArguments: [defaultClientOptionsType],\n typeName: 'Required',\n }),\n tType,\n ],\n }),\n ],\n typeName: configType.name,\n }),\n }),\n typeParameters: [\n {\n default: compiler.typeReferenceNode({ typeName: clientOptions.name }),\n extends: defaultClientOptionsType,\n name: 'T',\n },\n ],\n });\n\n file.add(typeCreateClientConfig);\n};\n","import { clientId } from '../client-core/utils';\nimport { createClient } from './client';\nimport { createClientConfigType } from './createClientConfig';\nimport type { PluginHandler } from './types';\n\nexport const clientPluginHandler = ({\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","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 { compiler } from '../../../compiler';\nimport 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 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 = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nconst schemasV3_0_X = ({\n context,\n plugin,\n}: {\n context: IR.Context<OpenApi.V3_0_X>;\n plugin: 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 = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nconst schemasV3_1_X = ({\n context,\n plugin,\n}: {\n context: IR.Context<OpenApi.V3_1_X>;\n plugin: 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 = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression: compiler.objectExpression({ obj }),\n name: schemaName({ name, plugin, schema }),\n });\n context.file({ id: schemasId })!.add(statement);\n }\n};\n\nexport const handler: 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 { compiler } from '../../../compiler';\nimport { TypeScriptFile } from '../../../generate/files';\nimport type { OpenApiV2Schema, OpenApiV3Schema } from '../../../openApi';\nimport { ensureValidTypeScriptJavaScriptIdentifier } from '../../../openApi';\nimport { getConfig } from '../../../utils/config';\nimport type { 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 TypeScriptFile({\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 = compiler.objectExpression({ obj });\n const statement = compiler.constVariable({\n assertion: 'const',\n exportConst: true,\n expression,\n name: toSchemaName(name, schema),\n });\n files.schemas!.add(statement);\n };\n\n // OpenAPI 2.0\n if ('swagger' in openApi) {\n Object.entries(openApi.definitions ?? {}).forEach(([name, definition]) => {\n addSchema(name, definition);\n });\n }\n\n // OpenAPI 3.x\n if ('openapi' in openApi) {\n Object.entries(openApi.components?.schemas ?? {}).forEach(\n ([name, schema]) => {\n addSchema(name, schema);\n },\n );\n }\n};\n","import { 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 { Comments } from '../../../compiler';\nimport { hasOperationDataRequired } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\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 nuxtTypeComposable = 'TComposable';\nexport const nuxtTypeDefault = 'DefaultT';\nexport const nuxtTypeResponse = 'ResT';\n\nexport const sdkId = 'sdk';\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport {\n createOperationKey,\n operationResponsesMap,\n} from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { irRef } from '../../../utils/ref';\nimport { stringCase } from '../../../utils/stringCase';\nimport { operationIrRef } from '../../shared/utils/ref';\nimport { typesId } from '../typescript/ref';\nimport type { HeyApiTransformersPlugin } from './types';\n\ninterface OperationIRRef {\n /**\n * Operation ID\n */\n id: string;\n}\n\nconst bigIntExpressions = ({\n dataExpression,\n}: {\n dataExpression?: ts.Expression | string;\n}): Array<ts.Expression> => {\n const bigIntCallExpression =\n dataExpression !== undefined\n ? compiler.callExpression({\n functionName: 'BigInt',\n parameters: [\n compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: dataExpression,\n name: 'toString',\n }),\n }),\n ],\n })\n : undefined;\n\n if (bigIntCallExpression) {\n if (typeof dataExpression === 'string') {\n return [bigIntCallExpression];\n }\n\n if (dataExpression) {\n return [\n compiler.assignment({\n left: dataExpression,\n right: bigIntCallExpression,\n }),\n ];\n }\n }\n\n return [];\n};\n\nconst dateExpressions = ({\n dataExpression,\n}: {\n dataExpression?: ts.Expression | string;\n}): Array<ts.Expression> => {\n const identifierDate = compiler.identifier({ text: 'Date' });\n\n if (typeof dataExpression === 'string') {\n return [\n compiler.newExpression({\n argumentsArray: [compiler.identifier({ text: dataExpression })],\n expression: identifierDate,\n }),\n ];\n }\n\n if (dataExpression) {\n return [\n compiler.assignment({\n left: dataExpression,\n right: compiler.newExpression({\n argumentsArray: [dataExpression],\n expression: identifierDate,\n }),\n }),\n ];\n }\n\n return [];\n};\n\nexport const operationTransformerIrRef = ({\n id,\n type,\n}: OperationIRRef & {\n type: 'data' | 'error' | 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'data':\n affix = 'DataResponseTransformer';\n break;\n case 'error':\n affix = 'ErrorResponseTransformer';\n break;\n case 'response':\n affix = 'ResponseTransformer';\n break;\n }\n return `${irRef}${stringCase({\n // TODO: parser - do not pascalcase for functions, only for types\n case: 'camelCase',\n value: id,\n })}${affix}`;\n};\n\nconst schemaIrRef = ({\n $ref,\n type,\n}: {\n $ref: string;\n type: 'response';\n}): string => {\n let affix = '';\n switch (type) {\n case 'response':\n affix = 'SchemaResponseTransformer';\n break;\n }\n const parts = $ref.split('/');\n return `${parts.slice(0, parts.length - 1).join('/')}/${stringCase({\n case: 'camelCase',\n value: parts[parts.length - 1]!,\n })}${affix}`;\n};\n\nexport const schemaResponseTransformerRef = ({\n $ref,\n}: {\n $ref: string;\n}): string => schemaIrRef({ $ref, type: 'response' });\n\nexport const transformersId = 'transformers';\nconst dataVariableName = 'data';\n\nconst ensureStatements = (\n nodes: Array<ts.Expression | ts.Statement>,\n): Array<ts.Statement> =>\n nodes.map((node) =>\n ts.isStatement(node)\n ? node\n : compiler.expressionToStatement({ expression: node }),\n );\n\nconst isNodeReturnStatement = ({\n node,\n}: {\n node: ts.Expression | ts.Statement;\n}) => node.kind === ts.SyntaxKind.ReturnStatement;\n\nconst schemaResponseTransformerNodes = ({\n plugin,\n schema,\n}: {\n plugin: HeyApiTransformersPlugin['Instance'];\n schema: IR.SchemaObject;\n}): Array<ts.Expression | ts.Statement> => {\n const identifierData = compiler.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(compiler.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 = compiler.constVariable({\n expression: compiler.arrowFunction({\n async: false,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transforms\n type: compiler.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n statements: ensureStatements(nodes),\n }),\n name: identifier.name,\n });\n file.add(node);\n } else {\n // the created schema response transformer was empty, do not generate\n // it and prevent any future attempts\n identifier = file.blockIdentifier({\n $ref: schemaResponseTransformerRef({ $ref: schema.$ref }),\n namespace: 'value',\n });\n }\n }\n\n if (identifier.name) {\n const callExpression = compiler.callExpression({\n functionName: identifier.name,\n parameters: [dataExpression],\n });\n\n if (dataExpression) {\n // In a map callback, the item needs to be returned, not just the transformation result\n if (typeof dataExpression === 'string' && dataExpression === 'item') {\n return [\n compiler.returnStatement({\n expression: callExpression,\n }),\n ];\n }\n\n return [\n typeof dataExpression === 'string'\n ? callExpression\n : compiler.assignment({\n left: dataExpression,\n right: callExpression,\n }),\n ];\n }\n }\n\n return [];\n }\n\n if (schema.type === 'array') {\n if (!dataExpression || typeof dataExpression === 'string') {\n return [];\n }\n\n // TODO: parser - handle tuples and complex arrays\n const nodes = !schema.items\n ? []\n : processSchemaType({\n dataExpression: 'item',\n plugin,\n schema: schema.items?.[0]\n ? schema.items[0]\n : {\n ...schema,\n type: undefined,\n },\n });\n\n if (!nodes.length) {\n return [];\n }\n\n // Ensure the map callback has a return statement for the item\n const mapCallbackStatements = ensureStatements(nodes);\n const hasReturnStatement = mapCallbackStatements.some((stmt) =>\n isNodeReturnStatement({ node: stmt }),\n );\n\n if (!hasReturnStatement) {\n mapCallbackStatements.push(\n compiler.returnStatement({\n expression: compiler.identifier({ text: 'item' }),\n }),\n );\n }\n\n return [\n compiler.assignment({\n left: dataExpression,\n right: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: dataExpression,\n name: 'map',\n }),\n parameters: [\n compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'item',\n type: 'any',\n },\n ],\n statements: mapCallbackStatements,\n }),\n ],\n }),\n }),\n ];\n }\n\n if (schema.type === 'object') {\n let nodes: Array<ts.Expression | ts.Statement> = [];\n const required = schema.required ?? [];\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n const propertyAccessExpression = compiler.propertyAccessExpression({\n expression: dataExpression || dataVariableName,\n name,\n });\n const propertyNodes = processSchemaType({\n dataExpression: propertyAccessExpression,\n plugin,\n schema: property,\n });\n if (!propertyNodes.length) {\n continue;\n }\n const noNullableTypesInSchema = !property.items?.find(\n (x) => x.type === 'null',\n );\n const requiredField = required.includes(name);\n // Cannot fully rely on required fields\n // Such value has to be present, but it doesn't guarantee that this value is not nullish\n if (requiredField && noNullableTypesInSchema) {\n nodes = nodes.concat(propertyNodes);\n } else {\n nodes.push(\n // todo: Probably, it would make more sense to go with if(x !== undefined && x !== null) instead of if(x)\n // this place influences all underlying transformers, while it's not exactly transformer itself\n // Keep in mind that !!0 === false, so it already makes output for Bigint undesirable\n compiler.ifStatement({\n expression: propertyAccessExpression,\n thenStatement: compiler.block({\n statements: ensureStatements(propertyNodes),\n }),\n }),\n );\n }\n }\n\n return nodes;\n }\n\n if (\n plugin.config.dates &&\n schema.type === 'string' &&\n (schema.format === 'date' || schema.format === 'date-time')\n ) {\n return dateExpressions({ dataExpression });\n }\n\n if (\n plugin.config.bigInt &&\n schema.type === 'integer' &&\n schema.format === 'int64'\n ) {\n return bigIntExpressions({ dataExpression });\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 = compiler.identifier({ text: 'item' });\n // processed means the item was transformed\n arrayNodes.push(\n compiler.ifStatement({\n expression: identifierItem,\n thenStatement: compiler.block({\n statements: ensureStatements(nodes),\n }),\n }),\n compiler.returnStatement({ expression: identifierItem }),\n );\n }\n }\n }\n return arrayNodes;\n }\n\n // assume enums do not contain transformable values\n if (schema.type !== 'enum') {\n 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 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 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 identifierResponse = plugin.context\n .file({ id: typesId })!\n .identifier({\n $ref: operationIrRef({\n config: plugin.context.config,\n id: operation.id,\n type: 'response',\n }),\n namespace: 'type',\n });\n if (!identifierResponse.name) {\n return;\n }\n\n let identifierResponseTransformer = file.identifier({\n $ref: operationTransformerIrRef({ id: operation.id, type: 'response' }),\n create: true,\n namespace: 'value',\n });\n if (!identifierResponseTransformer.name) {\n return;\n }\n\n // TODO: parser - consider handling simple string response which is also a date\n const nodes = schemaResponseTransformerNodes({ 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: identifierResponse.name,\n });\n const responseTransformerNode = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n // TODO: parser - add types, generate types without transforms\n type: compiler.keywordTypeNode({ keyword: 'any' }),\n },\n ],\n returnType: compiler.typeReferenceNode({\n typeArguments: [\n compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n }),\n ],\n typeName: 'Promise',\n }),\n statements: ensureStatements(nodes),\n }),\n name: identifierResponseTransformer.name,\n });\n file.add(responseTransformerNode);\n } else {\n // the created schema response transformer was empty, do not generate\n // it and prevent any future attempts\n identifierResponseTransformer = file.blockIdentifier({\n $ref: operationTransformerIrRef({\n id: operation.id,\n type: 'response',\n }),\n namespace: 'value',\n });\n }\n });\n};\n","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 { compiler } from '../../../compiler';\nimport type { ObjectValue } from '../../../compiler/types';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport type { TypeScriptFile } from '../../../generate/files';\nimport { statusCodeToGroup } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { sanitizeNamespaceIdentifier } from '../../../openApi';\nimport { reservedJavaScriptKeywordsRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { transformClassName } from '../../../utils/transform';\nimport { clientId, getClientPlugin } from '../client-core/utils';\nimport {\n operationTransformerIrRef,\n transformersId,\n} from '../transformers/plugin';\nimport { importIdentifier } from '../typescript/ref';\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 classNames.set(rootClass, {\n className: finalClassName,\n methodName: methodName || getOperationMethodName({ operation, plugin }),\n path: (className\n ? [rootClass, ...classCandidates, className]\n : [rootClass]\n ).map((value) =>\n operationClassName({\n context,\n value,\n }),\n ),\n });\n }\n\n return classNames;\n};\n\nexport const operationOptionsType = ({\n context,\n file,\n operation,\n throwOnError,\n}: {\n context: IR.Context;\n file: TypeScriptFile;\n operation: IR.OperationObject;\n throwOnError?: string;\n}) => {\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const identifierData = importIdentifier({\n context,\n file,\n operation,\n type: 'data',\n });\n const identifierResponse = importIdentifier({\n context,\n file,\n operation,\n type: isNuxtClient ? 'response' : 'responses',\n });\n\n const optionsName = clientApi.Options.name;\n\n if (isNuxtClient) {\n return `${optionsName}<${nuxtTypeComposable}, ${identifierData.name || 'unknown'}, ${identifierResponse.name || 'unknown'}, ${nuxtTypeDefault}>`;\n }\n\n // TODO: refactor this to be more generic, works for now\n if (throwOnError) {\n return `${optionsName}<${identifierData.name || 'unknown'}, ${throwOnError}>`;\n }\n return identifierData.name\n ? `${optionsName}<${identifierData.name}>`\n : optionsName;\n};\n\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 context,\n isRequiredOptions,\n operation,\n plugin,\n}: {\n context: IR.Context;\n isRequiredOptions: boolean;\n operation: IR.OperationObject;\n plugin: HeyApiSdkPlugin['Instance'];\n}): Array<ts.Statement> => {\n const file = context.file({ id: sdkId })!;\n const sdkOutput = file.nameWithoutExtension();\n\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const identifierError = importIdentifier({\n context,\n file,\n operation,\n type: isNuxtClient ? 'error' : 'errors',\n });\n const identifierResponse = importIdentifier({\n context,\n file,\n operation,\n type: isNuxtClient ? 'response' : 'responses',\n });\n\n // TODO: transform parameters\n // const query = {\n // BarBaz: options.query.bar_baz,\n // qux_quux: options.query.qux_quux,\n // fooBar: options.query.foo_bar,\n // };\n\n // if (operation.parameters) {\n // for (const name in operation.parameters.query) {\n // const parameter = operation.parameters.query[name]\n // if (parameter.name !== fieldName({ context, name: parameter.name })) {\n // console.warn(parameter.name)\n // }\n // }\n // }\n\n const requestOptions: ObjectValue[] = [];\n\n if (operation.body) {\n switch (operation.body.type) {\n case 'form-data':\n requestOptions.push({ spread: 'formDataBodySerializer' });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'formDataBodySerializer',\n });\n break;\n case 'json':\n // jsonBodySerializer is the default, no need to specify\n break;\n case 'text':\n case 'octet-stream':\n // ensure we don't use any serializer by default\n requestOptions.push({\n key: 'bodySerializer',\n value: null,\n });\n break;\n case 'url-search-params':\n requestOptions.push({ spread: 'urlSearchParamsBodySerializer' });\n file.import({\n module: clientModulePath({\n config: context.config,\n sourceOutput: sdkOutput,\n }),\n name: 'urlSearchParamsBodySerializer',\n });\n break;\n }\n }\n\n // 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 = context\n .file({ id: transformersId })!\n .identifier({\n $ref: operationTransformerIrRef({ id: operation.id, type: 'response' }),\n namespace: 'value',\n });\n\n if (identifierTransformer.name) {\n file.import({\n module: file.relativePathToFile({\n context,\n id: transformersId,\n }),\n name: identifierTransformer.name,\n });\n\n requestOptions.push({\n key: 'responseTransformer',\n value: identifierTransformer.name,\n });\n }\n }\n\n if (client.name === '@hey-api/client-axios') {\n // try to infer `responseType` option for Axios. We don't need this in\n // Fetch API client because it automatically detects the correct response\n // during runtime.\n for (const statusCode in operation.responses) {\n // this doesn't handle default status code for now\n if (statusCodeToGroup({ statusCode }) === '2XX') {\n const response = operation.responses[statusCode];\n const responseType = getResponseType(response?.mediaType);\n if (responseType) {\n requestOptions.push({\n key: 'responseType',\n value: responseType,\n });\n break;\n }\n }\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, operation, plugin });\n if (auth.length) {\n requestOptions.push({\n key: 'security',\n value: compiler.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 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 spread = compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: !isRequiredOptions,\n name: 'headers',\n });\n requestOptions.push({\n key: 'headers',\n value: [\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,\n },\n ],\n });\n }\n }\n\n const responseType = identifierResponse.name || 'unknown';\n const errorType = identifierError.name || 'unknown';\n\n const heyApiClient = plugin.config.client\n ? file.import({\n alias: '_heyApiClient',\n module: file.relativePathToFile({\n context,\n id: clientId,\n }),\n name: 'client',\n })\n : undefined;\n\n const optionsClient = compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: !isRequiredOptions,\n name: 'client',\n });\n\n let clientExpression: ts.Expression;\n\n if (plugin.config.instance) {\n clientExpression = compiler.binaryExpression({\n left: optionsClient,\n operator: '??',\n right: compiler.propertyAccessExpression({\n expression: compiler.this(),\n name: '_client',\n }),\n });\n } else if (heyApiClient?.name) {\n clientExpression = compiler.binaryExpression({\n left: optionsClient,\n operator: '??',\n right: compiler.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(compiler.stringLiteral({ text: plugin.config.responseStyle }));\n }\n\n return [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj: requestOptions,\n }),\n ],\n name: compiler.propertyAccessExpression({\n expression: clientExpression,\n name: compiler.identifier({ text: operation.method }),\n }),\n types,\n }),\n ];\n};\n","import type ts from 'typescript';\n\nimport type { Comments, FunctionParameter } from '../../../compiler';\nimport { compiler } from '../../../compiler';\nimport type {\n FunctionTypeParameter,\n ObjectValue,\n} from '../../../compiler/types';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { TypeScriptFile } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport type {\n Client,\n Model,\n Operation,\n OperationParameter,\n Service,\n} from '../../../types/client';\nimport type { Config as ClientConfig } from '../../../types/config';\nimport {\n getConfig,\n isLegacyClient,\n legacyNameFromConfig,\n} from '../../../utils/config';\nimport { escapeComment, escapeName } from '../../../utils/escape';\nimport { reservedJavaScriptKeywordsRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { 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 = compiler.typeNode('void');\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n // TODO: we should return nothing when successes don't exist\n // can't remove this logic without removing request/name config\n // as it complicates things\n if (successResponses.length) {\n const { name: importedType } = setUniqueTypeName({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n });\n returnType = compiler.typeUnionNode({\n types: [importedType],\n });\n }\n\n if (\n config.useOptions &&\n config.plugins['@hey-api/sdk']?.config.response === 'response'\n ) {\n returnType = compiler.typeNode('ApiResult', [returnType]);\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === 'legacy/angular') {\n returnType = compiler.typeNode('Observable', [returnType]);\n } else {\n returnType = compiler.typeNode('CancelablePromise', [returnType]);\n }\n\n return returnType;\n};\n\nconst toOperationComment = (operation: Operation): Comments => {\n const config = getConfig();\n\n if (!isLegacyClient(config)) {\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ];\n return comment;\n }\n\n let params: string[] = [];\n\n if (operation.parameters.length) {\n if (config.useOptions) {\n params = [\n '@param data The data for the request.',\n ...operation.parameters.map(\n (parameter) =>\n `@param data.${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n ),\n ];\n } else {\n params = operation.parameters.map(\n (parameter) =>\n `@param ${parameter.name} ${parameter.description ? escapeComment(parameter.description) : ''}`,\n );\n }\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n\n const comment = [\n operation.deprecated && '@deprecated',\n operation.summary && escapeComment(operation.summary),\n operation.description && escapeComment(operation.description),\n ...params,\n ...successResponses.map(\n (response) =>\n `@returns ${response.type} ${response.description ? escapeComment(response.description) : ''}`,\n ),\n '@throws ApiError',\n ];\n return comment;\n};\n\nconst toRequestOptions = ({\n client,\n onClientImport,\n onImport,\n operation,\n}: {\n client: Client;\n onClientImport: OnImport | undefined;\n onImport: OnImport;\n operation: Operation;\n}) => {\n const config = getConfig();\n\n const name = operationResponseTypeName(operation.name);\n const { name: responseTransformerName } = setUniqueTypeName({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n nameTransformer: operationResponseTransformerTypeName,\n });\n\n if (responseTransformerName) {\n onImport(responseTransformerName);\n }\n\n if (!isLegacyClient(config)) {\n let obj: ObjectValue[] = [\n {\n spread: 'options',\n },\n ];\n\n const bodyParameters = operation.parameters.filter(\n (parameter) => parameter.in === 'body' || parameter.in === 'formData',\n );\n const contents = bodyParameters\n .map(\n (parameter) =>\n parameter.mediaType ||\n (parameter.in === 'formData' ? 'multipart/form-data' : undefined),\n )\n .filter(Boolean)\n .filter(unique);\n if (contents.length === 1) {\n if (contents[0] === 'multipart/form-data') {\n obj = [\n ...obj,\n {\n spread: 'formDataBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n // no need for Content-Type header, browser will set it automatically\n key: 'Content-Type',\n value: null,\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('formDataBodySerializer');\n }\n\n if (contents[0] === 'application/x-www-form-urlencoded') {\n obj = [\n ...obj,\n {\n spread: 'urlSearchParamsBodySerializer',\n },\n {\n key: 'headers',\n value: [\n {\n key: 'Content-Type',\n value: contents[0],\n },\n {\n spread: 'options?.headers',\n },\n ],\n },\n ];\n onClientImport?.('urlSearchParamsBodySerializer');\n }\n }\n\n // TODO: set parseAs to skip inference if every result has the same\n // content type. currently impossible because successes do not contain\n // header information\n\n obj = [\n ...obj,\n {\n key: 'url',\n value: operation.path,\n },\n ];\n\n if (responseTransformerName) {\n obj = [\n ...obj,\n {\n key: 'responseTransformer',\n value: responseTransformerName,\n },\n ];\n }\n\n return compiler.objectExpression({\n identifiers: ['responseTransformer'],\n obj,\n });\n }\n\n const toObj = (parameters: OperationParameter[]) =>\n parameters.reduce(\n (prev, curr) => {\n const key = curr.prop;\n const value = config.useOptions ? `data.${curr.name}` : curr.name;\n if (key === value) {\n prev[key] = key;\n } else if (escapeName(key) === key) {\n prev[key] = value;\n } else {\n prev[`'${key}'`] = value;\n }\n return prev;\n },\n {} as Record<string, unknown>,\n );\n\n const obj: Record<string, any> = {\n method: operation.method,\n url: operation.path,\n };\n\n if (operation.parametersPath.length) {\n obj.path = toObj(operation.parametersPath);\n }\n\n if (operation.parametersCookie.length) {\n obj.cookies = toObj(operation.parametersCookie);\n }\n\n if (operation.parametersHeader.length) {\n obj.headers = toObj(operation.parametersHeader);\n }\n\n if (operation.parametersQuery.length) {\n obj.query = toObj(operation.parametersQuery);\n }\n\n if (operation.parametersForm.length) {\n obj.formData = toObj(operation.parametersForm);\n }\n\n if (operation.parametersBody) {\n if (operation.parametersBody.in === 'formData') {\n if (config.useOptions) {\n obj.formData = `data.${operation.parametersBody.name}`;\n } else {\n obj.formData = operation.parametersBody.name;\n }\n }\n if (operation.parametersBody.in === 'body') {\n if (config.useOptions) {\n obj.body = `data.${operation.parametersBody.name}`;\n } else {\n obj.body = operation.parametersBody.name;\n }\n }\n }\n\n if (operation.parametersBody?.mediaType) {\n obj.mediaType = operation.parametersBody?.mediaType;\n }\n\n if (operation.responseHeader) {\n obj.responseHeader = operation.responseHeader;\n }\n\n if (responseTransformerName) {\n obj.responseTransformer = responseTransformerName;\n }\n\n const errorResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('error'),\n );\n if (errorResponses.length > 0) {\n const errors: Record<number | string, string> = {};\n errorResponses.forEach((response) => {\n errors[response.code] = response.description ?? '';\n });\n obj.errors = errors;\n }\n\n return compiler.objectExpression({\n identifiers: [\n 'body',\n 'cookies',\n 'formData',\n 'headers',\n 'path',\n 'query',\n 'responseTransformer',\n ],\n obj,\n shorthand: true,\n });\n};\n\nexport const serviceFunctionIdentifier = ({\n config,\n handleIllegal,\n id,\n operation,\n}: {\n config: ClientConfig;\n handleIllegal?: boolean;\n id: string;\n operation: IR.OperationObject | Operation;\n}) => {\n if (config.plugins['@hey-api/sdk']?.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 compiler.returnFunctionCall({\n args: [options],\n name: `(options?.client ?? client).${operation.method.toLocaleLowerCase()}`,\n types:\n errorType && responseType\n ? [responseType, errorType, 'ThrowOnError']\n : errorType\n ? ['unknown', errorType, 'ThrowOnError']\n : responseType\n ? [responseType, 'unknown', 'ThrowOnError']\n : [],\n }),\n ];\n }\n\n if (legacyNameFromConfig(config)) {\n return [\n compiler.returnFunctionCall({\n args: [options],\n name: 'this.httpRequest.request',\n }),\n ];\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === 'legacy/angular') {\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', 'this.http', options],\n name: '__request',\n }),\n ];\n }\n\n return [\n compiler.returnFunctionCall({\n args: ['OpenAPI', options],\n name: '__request',\n }),\n ];\n};\n\nconst processService = ({\n client,\n onClientImport,\n onImport,\n onNode,\n service,\n}: {\n client: Client;\n onClientImport: OnImport;\n onImport: OnImport;\n onNode: OnNode;\n service: Service;\n}) => {\n const config = getConfig();\n\n const clientPlugin = getClientPlugin(config);\n const isLegacy = isLegacyClient(config);\n\n for (const operation of service.operations) {\n if (operation.parameters.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationDataTypeName,\n onImport,\n });\n }\n\n if (!isLegacy) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport,\n });\n }\n\n const successResponses = operation.responses.filter((response) =>\n response.responseTypes.includes('success'),\n );\n if (successResponses.length) {\n generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport,\n });\n }\n }\n\n const throwOnErrorTypeGeneric: FunctionTypeParameter = {\n default:\n ('throwOnError' in clientPlugin.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 ? compiler.anonymousFunction(compileFunctionParams)\n : compiler.arrowFunction(compileFunctionParams);\n const statement = compiler.constVariable({\n comment: toOperationComment(operation),\n exportConst: true,\n expression,\n name: serviceFunctionIdentifier({\n config,\n handleIllegal: true,\n id: operation.name,\n operation,\n }),\n });\n onNode(statement);\n }\n return;\n }\n\n let members: ts.ClassElement[] = service.operations.map((operation) => {\n const node = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: toOperationComment(operation),\n isStatic:\n legacyNameFromConfig(config) === undefined &&\n clientPlugin.name !== 'legacy/angular',\n name: serviceFunctionIdentifier({\n config,\n id: operation.name,\n operation,\n }),\n parameters: toOperationParamType(client, operation),\n returnType: !isLegacy\n ? undefined\n : toOperationReturnType(client, operation),\n statements: toOperationStatements({\n client,\n onClientImport,\n onImport,\n operation,\n }),\n types: !isLegacy ? [throwOnErrorTypeGeneric] : undefined,\n });\n return node;\n });\n\n if (!members.length) {\n return;\n }\n\n // Push constructor to front if needed\n if (legacyNameFromConfig(config)) {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'httpRequest',\n type: 'BaseHttpRequest',\n },\n ],\n }),\n ...members,\n ];\n } else if (clientPlugin.name === 'legacy/angular') {\n members = [\n compiler.constructorDeclaration({\n multiLine: false,\n parameters: [\n {\n accessLevel: 'public',\n isReadOnly: true,\n name: 'http',\n type: 'HttpClient',\n },\n ],\n }),\n ...members,\n ];\n }\n\n const _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(compiler.identifier({ text: '\\n' }));\n }\n\n _members.push(member);\n });\n\n const statement = compiler.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 TypeScriptFile({\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 = compiler.constVariable({\n exportConst: true,\n expression: compiler.callExpression({\n functionName: 'createClient',\n parameters: [\n compiler.callExpression({\n functionName: 'createConfig',\n parameters: [\n 'throwOnError' in clientPlugin && clientPlugin.throwOnError\n ? compiler.objectExpression({\n obj: [\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n })\n : undefined,\n ],\n }),\n ],\n }),\n name: 'client',\n });\n files.sdk.add(statement);\n }\n\n for (const service of client.services) {\n processService({\n client,\n onClientImport: (imported) => {\n files.sdk!.import({\n module: clientModulePath({ config, sourceOutput: sdkOutput }),\n name: imported,\n });\n },\n onImport: (imported) => {\n files.sdk!.import({\n // this detection could be done safer, but it shouldn't cause any issues\n asType: !imported.endsWith('Transformer'),\n module: `./${files.types!.nameWithoutExtension()}`,\n name: imported,\n });\n },\n onNode: (node) => {\n files.sdk!.add(node);\n },\n service,\n });\n }\n};\n","import { compiler } from '../../../compiler';\nimport { clientModulePath } from '../../../generate/client';\nimport type { FileImportResult } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { getClientPlugin } from '../client-core/utils';\nimport { nuxtTypeDefault, nuxtTypeResponse, sdkId } from './constants';\nimport type { HeyApiSdkPlugin } from './types';\n\nexport const createTypeOptions = ({\n clientOptions,\n context,\n plugin,\n}: {\n clientOptions: FileImportResult;\n context: IR.Context;\n plugin: HeyApiSdkPlugin['Instance'];\n}) => {\n const file = context.file({ id: sdkId })!;\n const client = getClientPlugin(context.config);\n const isNuxtClient = client.name === '@hey-api/client-nuxt';\n\n const clientModule = clientModulePath({\n config: context.config,\n sourceOutput: file.nameWithoutExtension(),\n });\n const tDataShape = file.import({\n asType: true,\n module: clientModule,\n name: 'TDataShape',\n });\n const clientType = file.import({\n asType: true,\n module: clientModule,\n name: 'Client',\n });\n\n const typeOptions = compiler.typeAliasDeclaration({\n exportType: true,\n name: 'Options',\n type: compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeArguments: isNuxtClient\n ? [\n compiler.typeReferenceNode({ typeName: 'TComposable' }),\n compiler.typeReferenceNode({ typeName: 'TData' }),\n compiler.typeReferenceNode({ typeName: nuxtTypeResponse }),\n compiler.typeReferenceNode({ typeName: nuxtTypeDefault }),\n ]\n : [\n compiler.typeReferenceNode({ typeName: 'TData' }),\n compiler.typeReferenceNode({ typeName: 'ThrowOnError' }),\n ],\n typeName: clientOptions.name,\n }),\n compiler.typeInterfaceNode({\n properties: [\n {\n comment: [\n 'You can provide a client instance returned by `createClient()` instead of',\n 'individual options. This might be also useful if you want to implement a',\n 'custom client.',\n ],\n isRequired: !plugin.config.client,\n name: 'client',\n type: compiler.typeReferenceNode({ typeName: clientType.name }),\n },\n {\n comment: [\n 'You can pass arbitrary values through the `meta` object. This can be',\n \"used to access values that aren't defined as part of the SDK function.\",\n ],\n isRequired: false,\n name: 'meta',\n type: compiler.typeReferenceNode({\n typeArguments: [\n compiler.keywordTypeNode({ keyword: 'string' }),\n compiler.keywordTypeNode({ keyword: 'unknown' }),\n ],\n typeName: 'Record',\n }),\n },\n ],\n useLegacyResolution: false,\n }),\n ],\n }),\n typeParameters: isNuxtClient\n ? [\n compiler.typeParameterDeclaration({\n constraint: compiler.typeReferenceNode({ typeName: 'Composable' }),\n name: 'TComposable',\n }),\n compiler.typeParameterDeclaration({\n constraint: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n defaultType: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n name: 'TData',\n }),\n compiler.typeParameterDeclaration({\n defaultType: compiler.keywordTypeNode({ keyword: 'unknown' }),\n name: nuxtTypeResponse,\n }),\n compiler.typeParameterDeclaration({\n defaultType: compiler.keywordTypeNode({ keyword: 'undefined' }),\n name: nuxtTypeDefault,\n }),\n ]\n : [\n compiler.typeParameterDeclaration({\n constraint: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n defaultType: compiler.typeReferenceNode({\n typeName: tDataShape.name,\n }),\n name: 'TData',\n }),\n compiler.typeParameterDeclaration({\n constraint: compiler.keywordTypeNode({ keyword: 'boolean' }),\n defaultType: compiler.keywordTypeNode({ keyword: 'boolean' }),\n name: 'ThrowOnError',\n }),\n ],\n });\n\n file.add(typeOptions);\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { stringCase } from '../../../utils/stringCase';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\nimport { getClientPlugin } from '../client-core/utils';\nimport { importIdentifier } from '../typescript/ref';\nimport { nuxtTypeComposable, nuxtTypeDefault, sdkId } from './constants';\nimport {\n operationClasses,\n operationOptionsType,\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 = compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: compiler.this(),\n name: '_client',\n }),\n operator: '=',\n right: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'args' }),\n name: 'client',\n }),\n }),\n });\n\n return [\n compiler.propertyDeclaration({\n initializer: plugin.config.client\n ? compiler.identifier({ text: '_heyApiClient' })\n : undefined,\n modifier: 'protected',\n name: '_client',\n type: ts.factory.createTypeReferenceNode('Client'),\n }),\n // @ts-expect-error\n compiler.identifier({ text: '\\n' }),\n compiler.constructorDeclaration({\n multiLine: true,\n parameters: [\n {\n isRequired: !plugin.config.client,\n name: 'args',\n type: compiler.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 : compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'args' }),\n isOptional: true,\n name: 'client',\n }),\n thenStatement: compiler.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 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 identifierResponse = importIdentifier({\n context: plugin.context,\n file,\n operation,\n type: 'response',\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) {\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 functionNode = compiler.methodDeclaration({\n accessLevel: 'public',\n comment: createOperationComment({ operation }),\n isStatic: !plugin.config.instance,\n name: entry.methodName,\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: operationOptionsType({\n context: plugin.context,\n file,\n operation,\n throwOnError: isNuxtClient ? undefined : 'ThrowOnError',\n }),\n },\n ],\n returnType: undefined,\n statements: operationStatements({\n context: plugin.context,\n isRequiredOptions,\n operation,\n plugin,\n }),\n types: isNuxtClient\n ? [\n {\n // default: compiler.ots.string('$fetch'),\n extends: compiler.typeNode('Composable'),\n name: nuxtTypeComposable,\n },\n {\n default: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : compiler.typeNode('undefined'),\n extends: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : undefined,\n name: nuxtTypeDefault,\n },\n ]\n : [\n {\n default:\n ('throwOnError' in client.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 compiler.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 compiler.propertyDeclaration({\n initializer: plugin.config.instance\n ? compiler.newExpression({\n argumentsArray: plugin.config.instance\n ? [\n compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: 'client',\n value: compiler.propertyAccessExpression({\n expression: compiler.this(),\n name: '_client',\n }),\n },\n ],\n }),\n ]\n : [],\n expression: compiler.identifier({\n text: childClass.className,\n }),\n })\n : compiler.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 = compiler.classDeclaration({\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 = compiler.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 identifierResponse = importIdentifier({\n context: plugin.context,\n file,\n operation,\n type: 'response',\n });\n const node = compiler.constVariable({\n comment: createOperationComment({ operation }),\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: operationOptionsType({\n context: plugin.context,\n file,\n operation,\n throwOnError: isNuxtClient ? undefined : 'ThrowOnError',\n }),\n },\n ],\n returnType: undefined,\n statements: operationStatements({\n context: plugin.context,\n isRequiredOptions,\n operation,\n plugin,\n }),\n types: isNuxtClient\n ? [\n {\n // default: compiler.ots.string('$fetch'),\n extends: compiler.typeNode('Composable'),\n name: nuxtTypeComposable,\n },\n {\n default: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : compiler.typeNode('undefined'),\n extends: identifierResponse.name\n ? compiler.typeReferenceNode({\n typeName: identifierResponse.name,\n })\n : undefined,\n name: nuxtTypeDefault,\n },\n ]\n : [\n {\n default:\n ('throwOnError' in client.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 isNuxtClient = client.name === '@hey-api/client-nuxt';\n if (isNuxtClient) {\n file.import({\n asType: true,\n module: clientModule,\n name: 'Composable',\n });\n }\n\n createTypeOptions({\n clientOptions,\n context: plugin.context,\n plugin,\n });\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 classStructure: 'auto',\n client: true,\n exportFromIndex: true,\n instance: false,\n operationId: true,\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};\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 { type Comments, compiler } from '../../../compiler';\nimport { TypeScriptFile } from '../../../generate/files';\nimport { isOperationParameterRequired } from '../../../openApi';\nimport type {\n Client,\n Method,\n Model,\n OperationParameter,\n} from '../../../types/client';\nimport { getConfig, isLegacyClient } from '../../../utils/config';\nimport { enumEntry, enumUnionType } from '../../../utils/enum';\nimport { escapeComment } from '../../../utils/escape';\nimport { sortByName, sorterByName } from '../../../utils/sort';\nimport {\n setUniqueTypeName,\n type SetUniqueTypeNameResult,\n toType,\n} from '../../../utils/type';\nimport {\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 compiler.enumDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'>) => {\n // generate types only for top-level models\n if (!meta) {\n return;\n }\n\n const { created, name } = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n if (created) {\n const node = compiler.enumDeclaration({\n comments,\n leadingComment,\n name,\n obj,\n });\n onNode(node);\n }\n};\n\nexport const generateType = ({\n comment,\n meta,\n onCreated,\n onNode,\n type,\n ...setUniqueTypeNameArgs\n}: Omit<Parameters<typeof compiler.typeAliasDeclaration>[0], 'name'> &\n Pick<Parameters<typeof setUniqueTypeName>[0], 'client' | 'nameTransformer'> &\n Pick<Model, 'meta'> &\n Pick<TypesProps, 'onNode'> & {\n onCreated?: (name: string) => void;\n }): SetUniqueTypeNameResult => {\n // generate types only for top-level models\n if (!meta) {\n return {\n created: false,\n name: '',\n };\n }\n\n const result = setUniqueTypeName({\n create: true,\n meta,\n ...setUniqueTypeNameArgs,\n });\n const { created, name } = result;\n if (created) {\n const node = compiler.typeAliasDeclaration({\n comment,\n exportType: true,\n name,\n type,\n });\n onNode(node);\n\n onCreated?.(name);\n }\n return result;\n};\n\nconst processComposition = (props: TypesProps) => {\n const config = getConfig();\n\n const enumDeclarations = [] as ts.EnumDeclaration[];\n\n processType(props);\n\n props.model.enums.forEach((enumerator) => {\n if (\n config.plugins['@hey-api/typescript']?.config.enums !==\n 'typescript+namespace'\n ) {\n return processEnum({\n ...props,\n model: enumerator,\n });\n }\n\n return processScopedEnum({\n ...props,\n model: enumerator,\n onNode: (node) => {\n enumDeclarations.push(node as ts.EnumDeclaration);\n },\n });\n });\n\n if (enumDeclarations.length) {\n props.onNode(\n compiler.namespaceDeclaration({\n name: props.model.name,\n statements: enumDeclarations,\n }),\n );\n }\n};\n\nconst processEnum = ({ client, model, onNode }: TypesProps) => {\n const config = getConfig();\n\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n\n const comment = [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ];\n\n if (\n config.plugins['@hey-api/typescript']?.config.enums === 'typescript' ||\n config.plugins['@hey-api/typescript']?.config.enums ===\n 'typescript+namespace'\n ) {\n generateEnum({\n client,\n comments,\n leadingComment: comment,\n meta: model.meta,\n obj: properties,\n onNode,\n });\n return;\n }\n\n generateType({\n client,\n comment,\n meta: model.meta,\n onCreated: (name) => {\n // create a separate JavaScript object export\n if (\n config.plugins['@hey-api/typescript']?.config.enums === 'javascript'\n ) {\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: Object.entries(properties).map(([key, value]) => ({\n comments: comments[key],\n key,\n value,\n })),\n unescape: true,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment,\n exportConst: true,\n expression,\n name,\n });\n onNode(node);\n }\n },\n onNode,\n type: enumUnionType(model.enum),\n });\n};\n\nconst processScopedEnum = ({ model, onNode }: TypesProps) => {\n const properties: Record<string | number, unknown> = {};\n const comments: Record<string | number, Comments> = {};\n model.enum.forEach((enumerator) => {\n const { key, value } = enumEntry(enumerator);\n properties[key] = value;\n const comment = enumerator.customDescription || enumerator.description;\n if (comment) {\n comments[key] = [escapeComment(comment)];\n }\n });\n onNode(\n compiler.enumDeclaration({\n comments,\n leadingComment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n name: model.meta?.name || model.name,\n obj: properties,\n }),\n );\n};\n\nconst processType = ({ client, model, onNode }: TypesProps) => {\n generateType({\n client,\n comment: [\n model.description && escapeComment(model.description),\n model.deprecated && '@deprecated',\n ],\n meta: model.meta,\n onNode,\n type: toType(model),\n });\n};\n\nconst processModel = (props: TypesProps) => {\n switch (props.model.export) {\n case 'all-of':\n case 'any-of':\n case 'one-of':\n case 'interface':\n return processComposition(props);\n case 'enum':\n return processEnum(props);\n default:\n return processType(props);\n }\n};\n\ninterface MethodMap {\n $ref?: string;\n req?: OperationParameter[];\n res?: Record<number | string, Model>;\n}\n\ntype PathMap = {\n [method in Method]?: MethodMap;\n};\n\ntype PathsMap = Record<string, PathMap>;\n\nconst processServiceTypes = ({\n client,\n onNode,\n}: Pick<TypesProps, 'client' | 'onNode'>) => {\n const pathsMap: PathsMap = {};\n\n const config = getConfig();\n\n if (\n !config.plugins['@hey-api/sdk'] &&\n !config.plugins['@hey-api/typescript']?.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 TypeScriptFile({\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 { compiler } from '../../../compiler';\nimport { createOperationKey } from '../../../ir/operation';\nimport type { ModelMeta, OperationResponse } from '../../../types/client';\nimport { getConfig } from '../../../utils/config';\nimport { isModelDate, unsetUniqueTypeName } from '../../../utils/type';\nimport {\n modelResponseTransformerTypeName,\n operationResponseTransformerTypeName,\n operationResponseTypeName,\n} from '../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 compiler.transformArrayMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n }),\n ];\n }\n\n if (\n isModelDate(model) ||\n (model.link &&\n !Array.isArray(model.link) &&\n model.link.export === 'any-of' &&\n model.link.properties.find((property) => isModelDate(property)))\n ) {\n return [\n compiler.transformArrayMap({\n path: props.path,\n transformExpression: compiler.conditionalExpression({\n condition: compiler.identifier({ text: 'item' }),\n whenFalse: compiler.identifier({ text: 'item' }),\n whenTrue: compiler.transformNewDate({\n parameterName: 'item',\n }),\n }),\n }),\n ];\n }\n\n // Not transform for this type\n return [];\n};\n\nconst processProperty = (props: ModelProps) => {\n const { model } = props;\n const path = [...props.path, model.name];\n\n if (\n model.type === 'string' &&\n model.export !== 'array' &&\n isModelDate(model)\n ) {\n return [compiler.transformDateMutation({ path })];\n }\n\n // otherwise we recurse in case it's an object/array, and if it's not that will just bail with []\n return processModel({\n ...props,\n model,\n path,\n });\n};\n\nconst processModel = (props: ModelProps): ts.Statement[] => {\n const { model } = props;\n\n switch (model.export) {\n case 'array':\n return processArray(props);\n case 'interface':\n return model.properties.flatMap((property) =>\n processProperty({ ...props, model: property }),\n );\n case 'reference': {\n if (model.$refs.length !== 1) {\n return [];\n }\n const refModels = getRefModels(props);\n\n const { created, name: nameModelResponseTransformer } =\n ensureModelResponseTransformerExists({\n ...props,\n model: refModels[0]!,\n });\n\n if (!created) {\n return [];\n }\n\n return model.in === 'response'\n ? [\n compiler.expressionToStatement({\n expression: compiler.callExpression({\n functionName: nameModelResponseTransformer,\n parameters: [dataVariableName],\n }),\n }),\n ]\n : compiler.transformFunctionMutation({\n path: props.path,\n transformerName: nameModelResponseTransformer,\n });\n }\n // unsupported\n default:\n return [];\n }\n};\n\nconst generateResponseTransformer = ({\n async,\n client,\n name,\n onNode,\n onRemoveNode,\n statements,\n}: Pick<TypesProps, 'client' | 'onNode' | 'onRemoveNode'> & {\n async: boolean;\n name: string;\n statements: Array<ts.Statement>;\n}) => {\n const result = {\n created: false,\n name,\n };\n\n if (!statements.length) {\n // clean up created type for response transformer if it turns out\n // the transformer was never generated\n unsetUniqueTypeName({\n client,\n name,\n });\n onRemoveNode?.();\n return result;\n }\n\n const expression = compiler.arrowFunction({\n async,\n multiLine: true,\n parameters: [\n {\n name: dataVariableName,\n },\n ],\n statements: [\n ...statements,\n compiler.returnVariable({\n expression: dataVariableName,\n }),\n ],\n });\n const statement = compiler.constVariable({\n exportConst: true,\n expression,\n name,\n typeName: name,\n });\n onNode(statement);\n\n return {\n created: true,\n name,\n };\n};\n\n// handles only response transformers for now\nexport const handlerLegacy: 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();\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 compiler.ifStatement({\n expression: compiler.safeAccessExpression(['data']),\n thenStatement: compiler.block({ statements }),\n }),\n ];\n })\n : processModel({\n client,\n meta: {\n $ref: `transformers/${name}`,\n name,\n },\n model: successResponses[0]!,\n onNode,\n onRemoveNode,\n path: [dataVariableName],\n });\n generateResponseTransformer({\n async: true,\n client,\n name: nameCreated,\n onNode,\n onRemoveNode,\n statements,\n });\n },\n onNode,\n type: `(${dataVariableName}: any) => Promise<${name}>`,\n });\n }\n }\n};\n","import { 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 { Comments } from '../../../compiler';\nimport type { IR } from '../../../ir/types';\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 { compiler } from '../../../compiler';\nimport type { Identifier } from '../../../generate/files';\nimport type { IR } from '../../../ir/types';\nimport { parseUrl } from '../../../utils/url';\nimport { getClientBaseUrlKey, getClientPlugin } from '../client-core/utils';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin } from './types';\n\nconst stringType = compiler.keywordTypeNode({ keyword: 'string' });\n\nconst serverToBaseUrlType = ({ server }: { server: IR.ServerObject }) => {\n const url = parseUrl(server.url);\n\n if (url.protocol && url.host) {\n return compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: server.url }),\n });\n }\n\n return compiler.templateLiteralType({\n value: [\n url.protocol || stringType,\n '://',\n url.host || stringType,\n url.port ? `:${url.port}` : '',\n url.path || '',\n ],\n });\n};\n\nexport const createClientOptions = ({\n identifier,\n plugin,\n servers,\n}: {\n identifier: Identifier;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n servers: ReadonlyArray<IR.ServerObject>;\n}) => {\n const file = plugin.context.file({ id: typesId })!;\n\n if (!identifier.name) {\n return;\n }\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 compiler.typeIntersectionNode({\n types: [stringType, ts.factory.createTypeLiteralNode([])],\n }),\n );\n }\n\n const typeClientOptions = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name,\n type: compiler.typeInterfaceNode({\n properties: [\n {\n name: getClientBaseUrlKey(plugin.context.config),\n type: compiler.typeUnionNode({ types }),\n },\n ],\n useLegacyResolution: false,\n }),\n });\n\n file.add(typeClientOptions);\n};\n","import ts from 'typescript';\n\nimport type { Property } from '../../../compiler';\nimport { compiler } from '../../../compiler';\nimport { operationResponsesMap } from '../../../ir/operation';\nimport { deduplicateSchema } from '../../../ir/schema';\nimport type { IR } from '../../../ir/types';\nimport { irRef, isRefOpenApiComponent, refToName } from '../../../utils/ref';\nimport { numberRegExp } from '../../../utils/regexp';\nimport { stringCase } from '../../../utils/stringCase';\nimport { fieldName } from '../../shared/utils/case';\nimport { operationIrRef } from '../../shared/utils/ref';\nimport { createSchemaComment } from '../../shared/utils/schema';\nimport { createClientOptions } from './clientOptions';\nimport { typesId } from './ref';\nimport type { HeyApiTypeScriptPlugin } from './types';\n\ninterface SchemaWithType<T extends Required<IR.SchemaObject>['type']>\n extends Omit<IR.SchemaObject, 'type'> {\n type: Extract<Required<IR.SchemaObject>['type'], T>;\n}\n\ninterface State {\n /**\n * If set, we keep the specified properties (read-only or write-only) and\n * strip the other type.\n */\n accessScope?: 'read' | 'write';\n /**\n * Path to the currently processed field. This can be used to generate\n * deduplicated inline types. For example, if two schemas define a different\n * enum `foo`, we want to generate two unique types instead of one.\n */\n path: ReadonlyArray<string>;\n}\n\nconst scopeToRef = ({\n $ref,\n accessScope,\n plugin,\n}: {\n $ref: string;\n accessScope?: 'both' | 'read' | 'write';\n plugin: HeyApiTypeScriptPlugin['Instance'];\n}) => {\n if (!accessScope || accessScope === 'both') {\n return $ref;\n }\n\n const refParts = $ref.split('/');\n const name = refParts.pop()!;\n const nameBuilder =\n accessScope === 'read'\n ? plugin.config.readableNameBuilder\n : plugin.config.writableNameBuilder;\n const processedName = processNameBuilder({ name, nameBuilder });\n refParts.push(processedName);\n return refParts.join('/');\n};\n\nconst processNameBuilder = ({\n name,\n nameBuilder,\n}: {\n name: string;\n nameBuilder: string | undefined;\n}) => {\n if (!nameBuilder) {\n return name;\n }\n\n return nameBuilder.replace('{{name}}', name);\n};\n\nconst shouldSkipSchema = ({\n schema,\n state,\n}: {\n schema: IR.SchemaObject;\n state: State | undefined;\n}) => {\n const stateAccessScope = state?.accessScope;\n\n if (!stateAccessScope) {\n return false;\n }\n\n if (schema.accessScope && stateAccessScope !== schema.accessScope) {\n return true;\n }\n\n if (\n schema.$ref &&\n schema.accessScopes &&\n !schema.accessScopes.includes(stateAccessScope) &&\n !schema.accessScopes.includes('both')\n ) {\n return true;\n }\n\n if (\n (schema.type === 'array' || schema.type === 'tuple') &&\n schema.items &&\n schema.items.every(\n (item) =>\n item.accessScopes &&\n !item.accessScopes.includes(stateAccessScope) &&\n !item.accessScopes.includes('both'),\n )\n ) {\n return true;\n }\n\n return false;\n};\n\nconst addJavaScriptEnum = ({\n $ref,\n plugin,\n schema,\n}: {\n $ref: string;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'enum'>;\n}) => {\n const file = plugin.context.file({ id: typesId })!;\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (!identifier.created) {\n return;\n }\n\n const enumObject = schemaToEnumObject({ plugin, schema });\n\n // JavaScript enums might want to ignore null values\n if (\n plugin.config.enumsConstantsIgnoreNull &&\n enumObject.typeofItems.includes('object')\n ) {\n enumObject.obj = enumObject.obj.filter((item) => item.value !== null);\n }\n\n const expression = compiler.objectExpression({\n multiLine: true,\n obj: enumObject.obj,\n });\n const node = compiler.constVariable({\n assertion: 'const',\n comment: createSchemaComment({ schema }),\n exportConst: true,\n expression,\n name: identifier.name || '',\n });\n return node;\n};\n\nconst schemaToEnumObject = ({\n plugin,\n schema,\n}: {\n plugin: 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.enumsCase,\n stripLeadingSeparators: false,\n value: key,\n });\n\n numberRegExp.lastIndex = 0;\n // TypeScript enum keys cannot be numbers\n if (\n numberRegExp.test(key) &&\n (plugin.config.enums === 'typescript' ||\n plugin.config.enums === 'typescript+namespace')\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 addTypeEnum = ({\n $ref,\n plugin,\n schema,\n state,\n}: {\n $ref: string;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'enum'>;\n state: State | undefined;\n}): ts.TypeAliasDeclaration | undefined => {\n const file = plugin.context.file({ id: typesId })!;\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'type',\n });\n\n // TODO: parser - this is the old parser behavior where we would NOT\n // print nested enum identifiers if they already exist. This is a\n // blocker for referencing these identifiers within the file as\n // we cannot guarantee just because they have a duplicate identifier,\n // they have a duplicate value.\n if (\n !identifier.created &&\n !isRefOpenApiComponent($ref) &&\n plugin.config.enums !== 'typescript+namespace'\n ) {\n return;\n }\n\n const type = schemaToType({\n plugin,\n schema: {\n ...schema,\n type: undefined,\n },\n state,\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n comment: createSchemaComment({ schema }),\n exportType: true,\n name: identifier.name || '',\n type,\n });\n return node;\n }\n\n return;\n};\n\nconst shouldCreateTypeScriptEnum = ({\n plugin,\n schema,\n}: {\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'enum'>;\n}) => {\n const enumObject = schemaToEnumObject({ plugin, schema });\n // TypeScript enums support only string and number values\n return !enumObject.typeofItems.filter(\n (type) => type !== 'number' && type !== 'string',\n ).length;\n};\n\nconst addTypeScriptEnum = ({\n $ref,\n plugin,\n schema,\n state,\n}: {\n $ref: string;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'enum'>;\n state: State | undefined;\n}) => {\n const enumObject = schemaToEnumObject({ plugin, schema });\n\n // fallback to types\n if (!shouldCreateTypeScriptEnum({ plugin, schema })) {\n const node = addTypeEnum({\n $ref,\n plugin,\n schema,\n state,\n });\n return node;\n }\n\n const file = plugin.context.file({ id: typesId })!;\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'enum',\n });\n const node = compiler.enumDeclaration({\n leadingComment: createSchemaComment({ schema }),\n name: identifier.name || '',\n obj: enumObject.obj,\n });\n return node;\n};\n\nconst arrayTypeToIdentifier = ({\n namespace,\n plugin,\n schema,\n state,\n}: {\n namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'array'>;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n if (!schema.items) {\n return compiler.typeArrayNode(\n compiler.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 namespace,\n plugin,\n schema: item,\n state,\n });\n\n if (type) {\n itemTypes.push(type);\n }\n }\n\n if (!itemTypes.length) {\n return;\n }\n\n if (itemTypes.length === 1) {\n return compiler.typeArrayNode(itemTypes[0]!);\n }\n\n if (schema.logicalOperator === 'and') {\n return compiler.typeArrayNode(\n compiler.typeIntersectionNode({ types: itemTypes }),\n );\n }\n\n return compiler.typeArrayNode(compiler.typeUnionNode({ types: itemTypes }));\n};\n\nconst booleanTypeToIdentifier = ({\n schema,\n}: {\n namespace: Array<ts.Statement>;\n schema: SchemaWithType<'boolean'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.ots.boolean(schema.const as boolean),\n });\n }\n\n return compiler.keywordTypeNode({\n keyword: 'boolean',\n });\n};\n\nconst enumTypeToIdentifier = ({\n $ref,\n namespace,\n plugin,\n schema,\n state,\n}: {\n $ref?: string;\n namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'enum'>;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n const file = plugin.context.file({ id: typesId })!;\n const isRefComponent = $ref ? isRefOpenApiComponent($ref) : false;\n const shouldExportEnum =\n isRefComponent || Boolean(plugin.config.exportInlineEnums);\n\n if ($ref && shouldExportEnum) {\n // when enums are disabled (default), emit only reusable components\n // as types, otherwise the output would be broken if we skipped all enums\n if (!plugin.config.enums) {\n const typeNode = addTypeEnum({\n $ref,\n plugin,\n schema,\n state,\n });\n if (typeNode) {\n file.add(typeNode);\n }\n }\n\n if (plugin.config.enums === 'javascript') {\n const typeNode = addTypeEnum({\n $ref,\n plugin,\n schema,\n state,\n });\n if (typeNode) {\n file.add(typeNode);\n }\n\n const objectNode = addJavaScriptEnum({\n $ref,\n plugin,\n schema,\n });\n if (objectNode) {\n file.add(objectNode);\n }\n }\n\n if (plugin.config.enums === 'typescript') {\n const enumNode = addTypeScriptEnum({\n $ref,\n plugin,\n schema,\n state,\n });\n if (enumNode) {\n file.add(enumNode);\n }\n }\n\n if (plugin.config.enums === 'typescript+namespace') {\n const enumNode = addTypeScriptEnum({\n $ref,\n plugin,\n schema,\n state,\n });\n if (enumNode) {\n if (isRefComponent) {\n file.add(enumNode);\n } else {\n // emit enum inside TypeScript namespace\n namespace.push(enumNode);\n }\n }\n }\n }\n\n const type = schemaToType({\n 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 namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'integer' | 'number'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.ots.number(schema.const as number),\n });\n }\n\n if (schema.type === 'integer' && schema.format === 'int64') {\n // TODO: parser - add ability to skip type transformers\n if (plugin.getPlugin('@hey-api/transformers')?.config.bigInt) {\n return compiler.typeReferenceNode({ typeName: 'bigint' });\n }\n }\n\n return compiler.keywordTypeNode({\n keyword: 'number',\n });\n};\n\nconst objectTypeToIdentifier = ({\n namespace,\n plugin,\n schema,\n state,\n}: {\n namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'object'>;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n // TODO: parser - handle constants\n let indexKey: string | 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 let hasSkippedProperties = false;\n\n for (const name in schema.properties) {\n const property = schema.properties[name]!;\n\n const skip = shouldSkipSchema({\n schema: property,\n state,\n });\n\n if (skip) {\n hasSkippedProperties = true;\n continue;\n }\n\n const propertyType = schemaToType({\n $ref: state ? [...state.path, name].join('/') : `${irRef}${name}`,\n namespace,\n plugin,\n schema: property,\n state,\n });\n\n if (!propertyType) {\n continue;\n }\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 namespace,\n plugin,\n schema:\n indexPropertyItems.length === 1\n ? indexPropertyItems[0]!\n : {\n items: indexPropertyItems,\n logicalOperator: 'or',\n },\n state,\n }),\n };\n\n if (schema.propertyNames) {\n if (schema.propertyNames.$ref) {\n indexKey = refToName(schema.propertyNames.$ref);\n }\n }\n }\n\n if (hasSkippedProperties && !schemaProperties.length && !indexProperty) {\n return;\n }\n\n return compiler.typeInterfaceNode({\n indexKey,\n indexProperty,\n properties: schemaProperties,\n useLegacyResolution: false,\n });\n};\n\nconst stringTypeToIdentifier = ({\n plugin,\n schema,\n}: {\n namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'string'>;\n}): ts.TypeNode => {\n if (schema.const !== undefined) {\n return compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: schema.const as string }),\n });\n }\n\n if (schema.format) {\n if (schema.format === 'binary') {\n return compiler.typeUnionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: 'Blob',\n }),\n compiler.typeReferenceNode({\n typeName: 'File',\n }),\n ],\n });\n }\n\n if (schema.format === 'date-time' || schema.format === 'date') {\n // TODO: parser - add ability to skip type transformers\n if (plugin.getPlugin('@hey-api/transformers')?.config.dates) {\n return compiler.typeReferenceNode({ typeName: 'Date' });\n }\n }\n }\n\n return compiler.keywordTypeNode({\n keyword: 'string',\n });\n};\n\nconst tupleTypeToIdentifier = ({\n namespace,\n plugin,\n schema,\n state,\n}: {\n namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: SchemaWithType<'tuple'>;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n let itemTypes: Array<ts.Expression | ts.TypeNode> = [];\n\n if (schema.const && Array.isArray(schema.const)) {\n itemTypes = schema.const.map((value) => {\n const expression = compiler.valueToExpression({ value });\n return expression ?? compiler.identifier({ text: 'unknown' });\n });\n } else if (schema.items) {\n for (const item of schema.items) {\n const type = schemaToType({\n namespace,\n plugin,\n schema: item,\n state,\n });\n\n if (type) {\n itemTypes.push(type);\n }\n }\n }\n\n if (!itemTypes.length) {\n return;\n }\n\n return compiler.typeTupleNode({\n types: itemTypes,\n });\n};\n\nconst schemaTypeToIdentifier = ({\n $ref,\n namespace,\n plugin,\n schema,\n state,\n}: {\n $ref?: string;\n namespace: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n switch (schema.type as Required<IR.SchemaObject>['type']) {\n case 'array':\n return arrayTypeToIdentifier({\n namespace,\n plugin,\n schema: schema as SchemaWithType<'array'>,\n state,\n });\n case 'boolean':\n return booleanTypeToIdentifier({\n namespace,\n schema: schema as SchemaWithType<'boolean'>,\n });\n case 'enum':\n return enumTypeToIdentifier({\n $ref,\n namespace,\n plugin,\n schema: schema as SchemaWithType<'enum'>,\n state,\n });\n case 'integer':\n case 'number':\n return numberTypeToIdentifier({\n namespace,\n plugin,\n schema: schema as SchemaWithType<'integer' | 'number'>,\n });\n case 'never':\n return compiler.keywordTypeNode({\n keyword: 'never',\n });\n case 'null':\n return compiler.literalTypeNode({\n literal: compiler.null(),\n });\n case 'object':\n return objectTypeToIdentifier({\n namespace,\n plugin,\n schema: schema as SchemaWithType<'object'>,\n state,\n });\n case 'string':\n return stringTypeToIdentifier({\n namespace,\n plugin,\n schema: schema as SchemaWithType<'string'>,\n });\n case 'tuple':\n return tupleTypeToIdentifier({\n namespace,\n plugin,\n schema: schema as SchemaWithType<'tuple'>,\n state,\n });\n case 'undefined':\n return compiler.keywordTypeNode({\n keyword: 'undefined',\n });\n case 'unknown':\n return compiler.keywordTypeNode({\n keyword: 'unknown',\n });\n case 'void':\n return compiler.keywordTypeNode({\n keyword: 'void',\n });\n }\n};\n\nconst irParametersToIrSchema = ({\n parameters,\n}: {\n parameters: Record<string, IR.ParameterObject>;\n}): IR.SchemaObject => {\n const irSchema: IR.SchemaObject = {\n type: 'object',\n };\n\n if (parameters) {\n const properties: Record<string, IR.SchemaObject> = {};\n const required: Array<string> = [];\n\n for (const 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}: {\n operation: IR.OperationObject;\n plugin: HeyApiTypeScriptPlugin['Instance'];\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 identifier = file.identifier({\n $ref: operationIrRef({\n config: plugin.context.config,\n id: operation.id,\n type: 'data',\n }),\n create: true,\n namespace: 'type',\n });\n const type = schemaToType({\n plugin,\n schema: data,\n state:\n plugin.config.readOnlyWriteOnlyBehavior === 'off'\n ? {\n path: [operation.method, operation.path, 'data'],\n }\n : {\n accessScope: 'write',\n path: [operation.method, operation.path, 'data'],\n },\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name || '',\n type,\n });\n file.add(node);\n }\n};\n\nconst operationToType = ({\n operation,\n plugin,\n}: {\n operation: IR.OperationObject;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n}) => {\n operationToDataType({ operation, plugin });\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 identifierErrors = file.identifier({\n $ref: operationIrRef({\n config: plugin.context.config,\n id: operation.id,\n type: 'errors',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierErrors.name) {\n const type = schemaToType({\n plugin,\n schema: errors,\n state:\n plugin.config.readOnlyWriteOnlyBehavior === 'off'\n ? {\n path: [operation.method, operation.path, 'errors'],\n }\n : {\n accessScope: 'read',\n path: [operation.method, operation.path, 'errors'],\n },\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierErrors.name,\n type,\n });\n file.add(node);\n }\n\n if (error) {\n const identifierError = file.identifier({\n $ref: operationIrRef({\n config: plugin.context.config,\n id: operation.id,\n type: 'error',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierError.name) {\n const errorsType = compiler.typeReferenceNode({\n typeName: identifierErrors.name,\n });\n const keyofType = ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n errorsType,\n );\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierError.name,\n type: compiler.indexedAccessTypeNode({\n indexType: keyofType,\n objectType: errorsType,\n }),\n });\n file.add(node);\n }\n }\n }\n }\n\n if (responses) {\n const identifierResponses = file.identifier({\n $ref: operationIrRef({\n config: plugin.context.config,\n id: operation.id,\n type: 'responses',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierResponses.name) {\n const type = schemaToType({\n plugin,\n schema: responses,\n state:\n plugin.config.readOnlyWriteOnlyBehavior === 'off'\n ? {\n path: [operation.method, operation.path, 'responses'],\n }\n : {\n accessScope: 'read',\n path: [operation.method, operation.path, 'responses'],\n },\n });\n\n if (type) {\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierResponses.name,\n type,\n });\n file.add(node);\n }\n\n if (response) {\n const identifierResponse = file.identifier({\n $ref: operationIrRef({\n config: plugin.context.config,\n id: operation.id,\n type: 'response',\n }),\n create: true,\n namespace: 'type',\n });\n if (identifierResponse.name) {\n const responsesType = compiler.typeReferenceNode({\n typeName: identifierResponses.name,\n });\n const keyofType = ts.factory.createTypeOperatorNode(\n ts.SyntaxKind.KeyOfKeyword,\n responsesType,\n );\n const node = compiler.typeAliasDeclaration({\n exportType: true,\n name: identifierResponse.name,\n type: compiler.indexedAccessTypeNode({\n indexType: keyofType,\n objectType: responsesType,\n }),\n });\n file.add(node);\n }\n }\n }\n }\n};\n\n/**\n * Is this schema split into a readable and writable variant? We won't split\n * schemas if they don't contain any read-only or write-only fields or if they\n * contain ONLY read-only or write-only fields. We split only when there's a\n * mix of different access scopes for the schema.\n */\nconst isSchemaSplit = ({ schema }: { schema: IR.SchemaObject }): boolean => {\n const scopes = schema.accessScopes;\n return scopes !== undefined && scopes.length > 1;\n};\n\nconst hasSchemaScope = ({\n accessScope,\n schema,\n}: {\n accessScope: Required<State>['accessScope'];\n schema: IR.SchemaObject;\n}): boolean => {\n const scopes = schema.accessScopes;\n return (\n !scopes ||\n (scopes !== undefined &&\n (scopes.includes(accessScope) || scopes.includes('both')))\n );\n};\n\nexport const schemaToType = ({\n $ref,\n namespace = [],\n plugin,\n schema,\n state,\n}: {\n $ref?: string;\n namespace?: Array<ts.Statement>;\n plugin: HeyApiTypeScriptPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State | undefined;\n}): ts.TypeNode | undefined => {\n const file = plugin.context.file({ id: typesId })!;\n\n let type: ts.TypeNode | undefined;\n\n if (schema.$ref) {\n const refSchema = plugin.context.resolveIrRef<IR.SchemaObject>(schema.$ref);\n\n if (\n !state?.accessScope ||\n hasSchemaScope({ accessScope: state.accessScope, schema: refSchema })\n ) {\n const finalRef = scopeToRef({\n $ref: schema.$ref,\n accessScope: isSchemaSplit({ schema: refSchema })\n ? state?.accessScope\n : undefined,\n plugin,\n });\n const identifier = file.identifier({\n $ref: finalRef,\n create: true,\n namespace:\n refSchema.type === 'enum' &&\n (plugin.config.enums === 'typescript' ||\n plugin.config.enums === 'typescript+namespace') &&\n shouldCreateTypeScriptEnum({\n plugin,\n schema: refSchema as SchemaWithType<'enum'>,\n })\n ? 'enum'\n : 'type',\n });\n type = compiler.typeReferenceNode({\n typeName: identifier.name || '',\n });\n }\n } else if (schema.type) {\n type = schemaTypeToIdentifier({\n $ref,\n namespace,\n plugin,\n schema,\n state,\n });\n } else 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 // TODO: correctly populate state.path\n const type = schemaToType({\n namespace,\n plugin,\n schema: item,\n state,\n });\n if (type) {\n itemTypes.push(type);\n }\n }\n\n type =\n schema.logicalOperator === 'and'\n ? compiler.typeIntersectionNode({ types: itemTypes })\n : compiler.typeUnionNode({ types: itemTypes });\n } else {\n // TODO: correctly populate state.path\n type = schemaToType({\n namespace,\n plugin,\n schema,\n state,\n });\n }\n } else {\n // catch-all fallback for failed schemas\n type = schemaTypeToIdentifier({\n namespace,\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n }\n\n // emit nodes only if $ref points to a reusable component\n if ($ref && isRefOpenApiComponent($ref)) {\n // emit namespace if it has any members\n if (namespace.length) {\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'value',\n });\n const node = compiler.namespaceDeclaration({\n name: identifier.name || '',\n statements: namespace,\n });\n file.add(node);\n }\n\n // enum handler emits its own artifacts\n if (schema.type !== 'enum' && type) {\n const identifier = file.identifier({\n $ref,\n create: true,\n namespace: 'type',\n });\n const node = compiler.typeAliasDeclaration({\n comment: createSchemaComment({ schema }),\n exportType: true,\n name: identifier.name || '',\n type,\n });\n file.add(node);\n }\n }\n\n return type;\n};\n\nexport const handler: HeyApiTypeScriptPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n id: typesId,\n identifierCase: plugin.config.identifierCase,\n path: plugin.output,\n });\n\n // reserve identifier for ClientOptions\n const clientOptions = file.identifier({\n $ref: 'ClientOptions',\n create: true,\n namespace: 'type',\n });\n\n const servers: Array<IR.ServerObject> = [];\n\n plugin.forEach(\n 'operation',\n 'parameter',\n 'requestBody',\n 'schema',\n 'server',\n (event) => {\n if (event.type === 'operation') {\n operationToType({ operation: event.operation, plugin });\n } else if (event.type === 'parameter') {\n schemaToType({\n $ref: event.$ref,\n plugin,\n schema: event.parameter.schema,\n state: {\n // TODO: correctly populate state.path\n path: [],\n },\n });\n } else if (event.type === 'requestBody') {\n schemaToType({\n $ref: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n state:\n plugin.config.readOnlyWriteOnlyBehavior === 'off'\n ? {\n // TODO: correctly populate state.path\n path: [],\n }\n : {\n accessScope: 'write',\n // TODO: correctly populate state.path\n path: [],\n },\n });\n } else if (event.type === 'schema') {\n if (\n plugin.config.readOnlyWriteOnlyBehavior === 'off' ||\n !isSchemaSplit({ schema: event.schema })\n ) {\n schemaToType({\n $ref: event.$ref,\n plugin,\n schema: event.schema,\n state: {\n // TODO: correctly populate state.path\n path: [],\n },\n });\n return;\n }\n\n if (hasSchemaScope({ accessScope: 'read', schema: event.schema })) {\n schemaToType({\n $ref: scopeToRef({\n $ref: event.$ref,\n accessScope: 'read',\n plugin,\n }),\n plugin,\n schema: event.schema,\n state: {\n accessScope: 'read',\n // TODO: correctly populate state.path\n path: [],\n },\n });\n }\n\n if (hasSchemaScope({ accessScope: 'write', schema: event.schema })) {\n schemaToType({\n $ref: scopeToRef({\n $ref: event.$ref,\n accessScope: 'write',\n plugin,\n }),\n plugin,\n schema: event.schema,\n state: {\n accessScope: 'write',\n // TODO: correctly populate state.path\n path: [],\n },\n });\n }\n } else if (event.type === 'server') {\n servers.push(event.server);\n }\n },\n );\n\n createClientOptions({ identifier: clientOptions, plugin, servers });\n};\n","import { definePluginConfig } from '../../shared/utils/config';\nimport { handler } from './plugin';\nimport { handlerLegacy } from './plugin-legacy';\nimport type { HeyApiTypeScriptPlugin } from './types';\n\nexport const defaultConfig: HeyApiTypeScriptPlugin['Config'] = {\n config: {\n enums: false,\n enumsCase: 'SCREAMING_SNAKE_CASE',\n enumsConstantsIgnoreNull: false,\n exportFromIndex: true,\n exportInlineEnums: false,\n identifierCase: 'PascalCase',\n readOnlyWriteOnlyBehavior: 'split',\n readableNameBuilder: '{{name}}Readable',\n style: 'preserve',\n tree: false,\n writableNameBuilder: '{{name}}Writable',\n },\n handler,\n handlerLegacy,\n name: '@hey-api/typescript',\n output: 'types',\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 { ImportExportItemObject } from '../../../compiler/utils';\nimport type { IR } from '../../../ir/types';\nimport { getClientPlugin } from '../../@hey-api/client-core/utils';\nimport { operationOptionsType } from '../../@hey-api/sdk/operation';\nimport { importIdentifier } 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\n const typeData = operationOptionsType({\n context: plugin.context,\n file,\n operation,\n });\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 identifierError = importIdentifier({\n context: plugin.context,\n file,\n operation,\n type: 'error',\n });\n let typeError: ImportExportItemObject = {\n asType: true,\n name: identifierError.name || '',\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: plugin.name,\n name: 'DefaultError',\n });\n }\n 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 identifierResponse = importIdentifier({\n context: plugin.context,\n file,\n operation,\n type: 'response',\n });\n const typeResponse = identifierResponse.name || 'unknown';\n return typeResponse;\n};\n","import { compiler, type Property } from '../../../compiler';\nimport { clientApi } from '../../../generate/client';\nimport { hasOperationDataRequired } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { getClientBaseUrlKey } from '../../@hey-api/client-core/utils';\nimport type { PluginInstance } from './types';\nimport { useTypeData } from './useType';\n\nconst createQueryKeyFn = 'createQueryKey';\nexport const queryKeyName = 'QueryKey';\nconst TOptionsType = 'TOptions';\n\nconst infiniteIdentifier = compiler.identifier({ text: 'infinite' });\nconst optionsIdentifier = compiler.identifier({ text: 'options' });\n\nexport const createQueryKeyFunction = ({\n 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 = compiler.indexedAccessTypeNode({\n indexType: compiler.literalTypeNode({\n literal: compiler.ots.number(0),\n }),\n objectType: compiler.typeReferenceNode({\n typeArguments: [compiler.typeReferenceNode({ typeName: TOptionsType })],\n typeName: queryKeyName,\n }),\n });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeReferenceNode({ typeName: 'string' }),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeReferenceNode({ typeName: TOptionsType }),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeReferenceNode({ typeName: 'boolean' }),\n },\n ],\n returnType: compiler.typeTupleNode({\n types: [returnType],\n }),\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(plugin.context.config),\n value: compiler.identifier({\n text: `(options?.client ?? _heyApiClient).getConfig().${getClientBaseUrlKey(plugin.context.config)}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: optionsIdentifier,\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnStatement({\n expression: compiler.arrayLiteralExpression({\n elements: [compiler.identifier({ text: 'params' })],\n }),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.Options.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: identifierCreateQueryKey.name,\n });\n file.add(fn);\n }\n};\n\nconst createQueryKeyLiteral = ({\n id,\n isInfinite,\n plugin,\n}: {\n id: string;\n isInfinite?: boolean;\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 const createQueryKeyCallExpression = compiler.callExpression({\n functionName: identifierCreateQueryKey.name || '',\n parameters: [\n compiler.ots.string(id),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n });\n return createQueryKeyCallExpression;\n};\n\nexport const createQueryKeyType = ({ plugin }: { plugin: PluginInstance }) => {\n const file = plugin.context.file({ id: plugin.name })!;\n\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n exportType: true,\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey(plugin.context.config)}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.Options.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nexport const 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 = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: hasOperationDataRequired(operation),\n name: 'options',\n type: typeData,\n },\n ],\n returnType: isInfinite ? typeQueryKey : undefined,\n statements: createQueryKeyLiteral({\n id: operation.id,\n isInfinite,\n plugin,\n }),\n }),\n name: identifier.name || '',\n });\n return statement;\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport { tsNodeToString } from '../../../compiler/utils';\nimport { clientApi } from '../../../generate/client';\nimport { operationPagination } from '../../../ir/operation';\nimport type { IR } from '../../../ir/types';\nimport { schemaToType } from '../../@hey-api/typescript/plugin';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\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 = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeReferenceNode({\n typeName: `QueryKey<${clientApi.Options.name}>`,\n }),\n },\n {\n name: 'page',\n type: compiler.typeReferenceNode({ typeName: 'K' }),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n spread: compiler.propertyAccessExpression({\n expression: 'queryKey',\n name: 0,\n }),\n },\n ],\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].path',\n },\n {\n assertion: 'any',\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].query',\n },\n {\n assertion: 'any',\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: compiler.asExpression({\n expression: compiler.asExpression({\n expression: compiler.identifier({ text: 'params' }),\n type: compiler.keywordTypeNode({ keyword: 'unknown' }),\n }),\n type: ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n }),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: `Pick<QueryKey<${clientApi.Options.name}>[0], 'body' | 'headers' | 'path' | 'query'>`,\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: 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 (typeof operation.method)[]).includes(operation.method)\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 // `compiler.returnFunctionCall()` accepts only strings, should be cleaned up\n const type = schemaToType({\n plugin: pluginTypeScript as Parameters<typeof schemaToType>[0]['plugin'],\n schema: pagination.schema,\n state: undefined,\n });\n const typePageParam = type\n ? `${tsNodeToString({\n node: type,\n unescape: true,\n })} | ${typePageObjectParam}`\n : `${typePageObjectParam}`;\n\n const node = queryKeyStatement({\n 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 = compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n });\n\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 compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.ots.string('object'),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.in,\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: pagination.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: 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 compiler.returnVariable({\n expression: awaitSdkExpression,\n }),\n );\n } else {\n statements.push(\n compiler.constVariable({\n destructure: true,\n expression: awaitSdkExpression,\n name: 'data',\n }),\n compiler.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 statement = compiler.constVariable({\n comment: plugin.config.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements,\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: identifierInfiniteQueryKey.name || '',\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof state.typeInfiniteData === 'string' ? state.typeInfiniteData : state.typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: identifierInfiniteQueryOptions.name || '',\n });\n file.add(statement);\n return;\n};\n","import type ts from 'typescript';\n\nimport { compiler } from '../../../compiler';\nimport type { IR } from '../../../ir/types';\nimport { createOperationComment } from '../../shared/utils/operation';\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 (typeof operation.method)[]\n ).includes(operation.method)\n ) {\n return state;\n }\n\n const mutationsType =\n plugin.name === '@tanstack/angular-query-experimental' ||\n plugin.name === '@tanstack/svelte-query' ||\n plugin.name === '@tanstack/solid-query'\n ? 'MutationOptions'\n : 'UseMutationOptions';\n\n const file = 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 = compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n });\n\n const statements: Array<ts.Statement> = [];\n\n if (plugin.getPlugin('@hey-api/sdk')?.config.responseStyle === 'data') {\n statements.push(\n compiler.returnVariable({\n expression: awaitSdkExpression,\n }),\n );\n } else {\n statements.push(\n compiler.constVariable({\n destructure: true,\n expression: awaitSdkExpression,\n name: 'data',\n }),\n compiler.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 expression = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n returnType: mutationType,\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements,\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n typeName: mutationType,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n comment: plugin.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 { compiler } from '../../../compiler';\nimport type { IR } from '../../../ir/types';\nimport {\n createOperationComment,\n isOperationOptionsRequired,\n} from '../../shared/utils/operation';\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 (typeof operation.method)[]).includes(operation.method)\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 = compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n });\n\n const statements: Array<ts.Statement> = [];\n\n if (plugin.getPlugin('@hey-api/sdk')?.config.responseStyle === 'data') {\n statements.push(\n compiler.returnVariable({\n expression: awaitSdkExpression,\n }),\n );\n } else {\n statements.push(\n compiler.constVariable({\n destructure: true,\n expression: awaitSdkExpression,\n name: 'data',\n }),\n compiler.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 statement = compiler.constVariable({\n comment: plugin.config.comments\n ? createOperationComment({ operation })\n : undefined,\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired: isRequiredOptions,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements,\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: identifierQueryKey.name || '',\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: 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 id: plugin.name,\n identifierCase: plugin.config.case,\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 { compiler, type Property } from '../../../compiler';\nimport type { ImportExportItem } from '../../../compiler/module';\nimport type { ImportExportItemObject } from '../../../compiler/utils';\nimport { clientApi, clientModulePath } from '../../../generate/client';\nimport { relativeModulePath } from '../../../generate/utils';\nimport { createOperationKey } from '../../../ir/operation';\nimport { getPaginationKeywordsRegExp } from '../../../ir/pagination';\nimport type { IR } from '../../../ir/types';\nimport { isOperationParameterRequired } from '../../../openApi';\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 = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'queryKey',\n type: compiler.typeNode(\n `QueryKey<${clientApi.OptionsLegacyParser.name}>`,\n ),\n },\n {\n name: 'page',\n type: compiler.typeNode('K'),\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.identifier({\n text: 'queryKey[0]',\n }),\n name: 'params',\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n assertion: 'any',\n spread: 'queryKey[0].body',\n },\n {\n assertion: 'any',\n spread: 'page.body',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].headers',\n },\n {\n spread: 'page.headers',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].path',\n },\n {\n spread: 'page.path',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({\n text: 'page',\n }),\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'queryKey[0].query',\n },\n {\n spread: 'page.query',\n },\n ],\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: ts.factory.createAsExpression(\n ts.factory.createAsExpression(\n compiler.identifier({ text: 'params' }),\n ts.factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n ),\n ts.factory.createTypeQueryNode(\n compiler.identifier({ text: 'page' }),\n ),\n ),\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: `Pick<QueryKey<${clientApi.OptionsLegacyParser.name}>[0], 'body' | 'headers' | 'path' | 'query'>`,\n }),\n }),\n name: 'K',\n },\n ],\n }),\n name: createInfiniteParamsFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyFunction = ({ file }: { file: Files[keyof Files] }) => {\n const returnType = compiler.indexedAccessTypeNode({\n indexType: compiler.typeNode(0),\n objectType: compiler.typeNode(queryKeyName, [\n compiler.typeNode(TOptionsType),\n ]),\n });\n\n const infiniteIdentifier = compiler.identifier({ text: 'infinite' });\n\n const fn = compiler.constVariable({\n expression: compiler.arrowFunction({\n multiLine: true,\n parameters: [\n {\n name: 'id',\n type: compiler.typeNode('string'),\n },\n {\n isRequired: false,\n name: 'options',\n type: compiler.typeNode(TOptionsType),\n },\n {\n isRequired: false,\n name: 'infinite',\n type: compiler.typeNode('boolean'),\n },\n ],\n returnType,\n statements: [\n compiler.constVariable({\n assertion: returnType,\n expression: compiler.objectExpression({\n multiLine: false,\n obj: [\n {\n key: '_id',\n value: compiler.identifier({ text: 'id' }),\n },\n {\n key: getClientBaseUrlKey(getConfig()),\n value: compiler.identifier({\n text: `(options?.client ?? _heyApiClient).getConfig().${getClientBaseUrlKey(getConfig())}`,\n }),\n },\n ],\n }),\n name: 'params',\n typeName: returnType,\n }),\n compiler.ifStatement({\n expression: infiniteIdentifier,\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: '_infinite',\n }),\n right: infiniteIdentifier,\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'body' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'body',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'body',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'headers' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'headers',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'headers',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'path' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'path',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'path',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.ifStatement({\n expression: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: 'options' }),\n isOptional: true,\n name: compiler.identifier({ text: 'query' }),\n }),\n thenStatement: compiler.block({\n statements: [\n compiler.expressionToStatement({\n expression: compiler.binaryExpression({\n left: compiler.propertyAccessExpression({\n expression: 'params',\n name: 'query',\n }),\n right: compiler.propertyAccessExpression({\n expression: 'options',\n name: 'query',\n }),\n }),\n }),\n ],\n }),\n }),\n compiler.returnVariable({\n expression: 'params',\n }),\n ],\n types: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.OptionsLegacyParser.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n }),\n name: createQueryKeyFn,\n });\n file.add(fn);\n};\n\nconst createQueryKeyType = ({ file }: { file: Files[keyof Files] }) => {\n const properties: Property[] = [\n {\n name: '_id',\n type: compiler.keywordTypeNode({\n keyword: 'string',\n }),\n },\n {\n isRequired: false,\n name: '_infinite',\n type: compiler.keywordTypeNode({\n keyword: 'boolean',\n }),\n },\n ];\n\n const queryKeyType = compiler.typeAliasDeclaration({\n name: queryKeyName,\n type: compiler.typeTupleNode({\n types: [\n compiler.typeIntersectionNode({\n types: [\n compiler.typeReferenceNode({\n typeName: `Pick<${TOptionsType}, '${getClientBaseUrlKey(getConfig())}' | 'body' | 'headers' | 'path' | 'query'>`,\n }),\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: true,\n }),\n ],\n }),\n ],\n }),\n typeParameters: [\n {\n extends: compiler.typeReferenceNode({\n typeName: compiler.identifier({\n text: clientApi.OptionsLegacyParser.name,\n }),\n }),\n name: TOptionsType,\n },\n ],\n });\n file.add(queryKeyType);\n};\n\nconst createTypeData = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeData } = generateImport({\n client,\n meta: operation.parameters.length\n ? {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n }\n : undefined,\n nameTransformer: operationDataTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n const typeData = operationOptionsLegacyParserType({\n importedType: nameTypeData,\n });\n\n return { typeData };\n};\n\nconst createTypeError = ({\n client,\n file,\n operation,\n pluginName,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n pluginName: string;\n typesModulePath: string;\n}) => {\n const config = getConfig();\n\n const { name: nameTypeError } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationErrorTypeName,\n onImport: (name) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name,\n });\n },\n });\n\n let typeError: ImportExportItemObject = {\n asType: true,\n name: nameTypeError,\n };\n if (!typeError.name) {\n typeError = file.import({\n asType: true,\n module: pluginName,\n name: 'DefaultError',\n });\n }\n\n const clientPlugin = getClientPlugin(config);\n if (clientPlugin.name === '@hey-api/client-axios') {\n const axiosError = file.import({\n asType: true,\n module: 'axios',\n name: 'AxiosError',\n });\n typeError = {\n ...axiosError,\n name: `${axiosError.name}<${typeError.name}>`,\n };\n }\n\n return { typeError };\n};\n\nconst createTypeResponse = ({\n client,\n file,\n operation,\n typesModulePath,\n}: {\n client: Client;\n file: Files[keyof Files];\n operation: Operation;\n typesModulePath: string;\n}) => {\n const { name: nameTypeResponse } = generateImport({\n client,\n meta: {\n // TODO: this should be exact ref to operation for consistency,\n // but name should work too as operation ID is unique\n $ref: operation.name,\n name: operation.name,\n },\n nameTransformer: operationResponseTypeName,\n onImport: (imported) => {\n file.import({\n asType: true,\n module: typesModulePath,\n name: imported,\n });\n },\n });\n\n const typeResponse = nameTypeResponse || 'void';\n\n return { typeResponse };\n};\n\nconst createQueryKeyLiteral = ({\n id,\n isInfinite,\n}: {\n id: string;\n isInfinite?: boolean;\n}) => {\n const queryKeyLiteral = compiler.arrayLiteralExpression({\n elements: [\n compiler.callExpression({\n functionName: createQueryKeyFn,\n parameters: [\n compiler.ots.string(id),\n 'options',\n isInfinite ? compiler.ots.boolean(true) : undefined,\n ],\n }),\n ],\n multiLine: false,\n });\n return queryKeyLiteral;\n};\n\nexport const handlerLegacy = ({\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 = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: createQueryKeyLiteral({\n id: operation.name,\n }),\n }),\n name: toQueryKeyName({\n config,\n id: operation.name,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'queryKey[0]',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName({\n config,\n id: operation.name,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: queryOptionsFn,\n }),\n ],\n }),\n name: toQueryOptionsName({\n config,\n id: operation.name,\n operation,\n }),\n // TODO: add type error\n // TODO: AxiosError<PutSubmissionMetaError>\n });\n file.add(statement);\n }\n\n // infinite queries\n if (\n plugin.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.input.pagination,\n );\n if (paginationRegExp.test(parameter.name)) {\n paginationField = parameter;\n return true;\n }\n\n if (parameter.in !== 'body') {\n return;\n }\n\n if (parameter.export === 'reference') {\n const ref = parameter.$refs[0];\n const refModel = client.models.find(\n (model) => model.meta?.$ref === ref,\n );\n return refModel?.properties.find((property) => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n config.input.pagination,\n );\n if (paginationRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n return;\n });\n }\n\n return parameter.properties.find((property) => {\n const paginationRegExp = getPaginationKeywordsRegExp(\n config.input.pagination,\n );\n if (paginationRegExp.test(property.name)) {\n paginationField = property;\n return true;\n }\n 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 = compiler.constVariable({\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n returnType: typeQueryKey,\n statements: createQueryKeyLiteral({\n id: operation.name,\n isInfinite: true,\n }),\n }),\n name: toQueryKeyName({\n config,\n id: operation.name,\n isInfinite: true,\n operation,\n }),\n });\n file.add(queryKeyStatement);\n\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression: compiler.arrowFunction({\n parameters: [\n {\n isRequired,\n name: 'options',\n type: typeData,\n },\n ],\n statements: [\n compiler.returnFunctionCall({\n args: [\n compiler.objectExpression({\n comments: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n obj: [\n {\n key: 'queryFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n destructure: [\n {\n name: 'pageParam',\n },\n {\n name: 'queryKey',\n },\n {\n name: 'signal',\n },\n ],\n },\n ],\n statements: [\n compiler.constVariable({\n comment: [\n {\n jsdoc: false,\n lines: ['@ts-ignore'],\n },\n ],\n expression: compiler.conditionalExpression({\n condition: compiler.binaryExpression({\n left: compiler.typeOfExpression({\n text: 'pageParam',\n }),\n operator: '===',\n right: compiler.ots.string('object'),\n }),\n whenFalse: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: getPaginationIn(\n paginationParameter,\n ),\n value: compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n key: paginationField.name,\n value: compiler.identifier({\n text: 'pageParam',\n }),\n },\n ],\n }),\n },\n ],\n }),\n whenTrue: compiler.identifier({\n text: 'pageParam',\n }),\n }),\n name: 'page',\n typeName: typePageObjectParam,\n }),\n compiler.constVariable({\n expression: compiler.callExpression({\n functionName: 'createInfiniteParams',\n parameters: ['queryKey', 'page'],\n }),\n name: 'params',\n }),\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'params',\n },\n {\n key: 'signal',\n shorthand: true,\n value: compiler.identifier({\n text: 'signal',\n }),\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n {\n key: 'queryKey',\n value: compiler.callExpression({\n functionName: toQueryKeyName({\n config,\n id: operation.name,\n isInfinite: true,\n operation,\n }),\n parameters: ['options'],\n }),\n },\n ],\n }),\n ],\n name: infiniteQueryOptionsFn,\n // TODO: better types syntax\n types: [\n typeResponse,\n typeError.name,\n `${typeof typeInfiniteData === 'string' ? typeInfiniteData : typeInfiniteData.name}<${typeResponse}>`,\n typeQueryKey,\n typePageParam,\n ],\n }),\n ],\n }),\n name: toInfiniteQueryOptionsName(operation),\n });\n file.add(statement);\n }\n }\n\n // mutations\n if (\n plugin.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 = compiler.arrowFunction({\n parameters: [\n {\n isRequired: false,\n name: 'options',\n type: `Partial<${typeData}>`,\n },\n ],\n statements: [\n compiler.constVariable({\n expression: compiler.objectExpression({\n obj: [\n {\n key: 'mutationFn',\n value: compiler.arrowFunction({\n async: true,\n multiLine: true,\n parameters: [\n {\n name: 'localOptions',\n },\n ],\n statements: [\n compiler.constVariable({\n destructure: true,\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: queryFn,\n parameters: [\n compiler.objectExpression({\n multiLine: true,\n obj: [\n {\n spread: 'options',\n },\n {\n spread: 'localOptions',\n },\n {\n key: 'throwOnError',\n value: true,\n },\n ],\n }),\n ],\n }),\n }),\n name: 'data',\n }),\n compiler.returnVariable({\n expression: 'data',\n }),\n ],\n }),\n },\n ],\n }),\n name: mutationOptionsFn,\n // TODO: better types syntax\n typeName: `${mutationsType}<${typeResponse}, ${typeError.name}, ${typeData}>`,\n }),\n compiler.returnVariable({\n expression: mutationOptionsFn,\n }),\n ],\n });\n const statement = compiler.constVariable({\n // TODO: describe options, same as the actual function call\n comment: [],\n exportConst: true,\n expression,\n name: toMutationOptionsName(operation),\n });\n file.add(statement);\n }\n\n if (hasQueries || hasInfiniteQueries) {\n file.import({\n alias: '_heyApiClient',\n module: relativeModulePath({\n moduleOutput: files.client!.nameWithoutExtension(),\n sourceOutput: plugin.output,\n }),\n name: 'client',\n });\n }\n\n if (hasUsedQueryFn) {\n file.import({\n module: relativeModulePath({\n moduleOutput: files.sdk!.nameWithoutExtension(),\n sourceOutput: plugin.output,\n }),\n name: queryFn.split('.')[0]!,\n });\n }\n }\n }\n};\n","import { 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}InfiniteOptions',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Mutation',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 name: '{{name}}Options',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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 { compiler, type Property } from '../../compiler';\nimport { operationResponsesMap } from '../../ir/operation';\nimport { hasParameterGroupObjectRequired } from '../../ir/parameter';\nimport type { IR } from '../../ir/types';\nimport { typesId } from '../@hey-api/typescript/ref';\nimport { operationIrRef } from '../shared/utils/ref';\nimport type { FastifyPlugin } from './types';\n\nconst fastifyId = 'fastify';\n\nconst operationToRouteHandler = ({\n context,\n operation,\n}: {\n context: IR.Context;\n operation: IR.OperationObject;\n}): Property | undefined => {\n const file = context.file({ id: fastifyId })!;\n const fileTypes = context.file({ id: typesId })!;\n\n const properties: Array<Property> = [];\n\n const identifierData = fileTypes.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'data',\n }),\n namespace: 'type',\n });\n if (identifierData.name) {\n if (operation.body) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: operation.body.required,\n name: 'Body',\n type: `${identifierData.name}['body']`,\n });\n }\n\n if (operation.parameters) {\n if (operation.parameters.header) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.header,\n ),\n name: 'Headers',\n type: `${identifierData.name}['headers']`,\n });\n }\n\n if (operation.parameters.path) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.path,\n ),\n name: 'Params',\n type: `${identifierData.name}['path']`,\n });\n }\n\n if (operation.parameters.query) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierData.name,\n });\n properties.push({\n isRequired: hasParameterGroupObjectRequired(\n operation.parameters.query,\n ),\n name: 'Querystring',\n type: `${identifierData.name}['query']`,\n });\n }\n }\n }\n\n const { errors, responses } = operationResponsesMap(operation);\n\n let errorsTypeReference: ts.TypeReferenceNode | undefined = undefined;\n const identifierErrors = fileTypes.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'errors',\n }),\n namespace: 'type',\n });\n if (identifierErrors.name && errors && errors.properties) {\n const keys = Object.keys(errors.properties);\n if (keys.length) {\n const hasDefaultResponse = keys.includes('default');\n if (!hasDefaultResponse) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierErrors.name,\n });\n errorsTypeReference = compiler.typeReferenceNode({\n typeName: identifierErrors.name,\n });\n } else if (keys.length > 1) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierErrors.name,\n });\n const errorsType = compiler.typeReferenceNode({\n typeName: identifierErrors.name,\n });\n const defaultType = compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: 'default' }),\n });\n errorsTypeReference = compiler.typeReferenceNode({\n typeArguments: [errorsType, defaultType],\n typeName: 'Omit',\n });\n }\n }\n }\n\n let responsesTypeReference: ts.TypeReferenceNode | undefined = undefined;\n const identifierResponses = fileTypes.identifier({\n $ref: operationIrRef({\n config: context.config,\n id: operation.id,\n type: 'responses',\n }),\n namespace: 'type',\n });\n if (identifierResponses.name && responses && responses.properties) {\n const keys = Object.keys(responses.properties);\n if (keys.length) {\n const hasDefaultResponse = keys.includes('default');\n if (!hasDefaultResponse) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierResponses.name,\n });\n responsesTypeReference = compiler.typeReferenceNode({\n typeName: identifierResponses.name,\n });\n } else if (keys.length > 1) {\n file.import({\n asType: true,\n module: file.relativePathToFile({ context, id: typesId }),\n name: identifierResponses.name,\n });\n const responsesType = compiler.typeReferenceNode({\n typeName: identifierResponses.name,\n });\n const defaultType = compiler.literalTypeNode({\n literal: compiler.stringLiteral({ text: 'default' }),\n });\n responsesTypeReference = compiler.typeReferenceNode({\n typeArguments: [responsesType, defaultType],\n typeName: 'Omit',\n });\n }\n }\n }\n\n const replyTypes = [errorsTypeReference, responsesTypeReference].filter(\n Boolean,\n );\n if (replyTypes.length) {\n properties.push({\n name: 'Reply',\n type: compiler.typeIntersectionNode({\n types: replyTypes,\n }),\n });\n }\n\n if (!properties.length) {\n return;\n }\n\n const routeHandler: Property = {\n name: operation.id,\n type: compiler.typeNode('RouteHandler', [\n compiler.typeInterfaceNode({\n properties,\n useLegacyResolution: false,\n }),\n ]),\n };\n return routeHandler;\n};\n\nexport const handler: 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({\n context: plugin.context,\n operation,\n });\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 compiler.typeAliasDeclaration({\n exportType: true,\n name: identifier.name,\n type: compiler.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 { compiler } from '../../compiler';\n\nexport const identifiers = {\n /**\n * {@link https://valibot.dev/api/#actions Actions}\n */\n actions: {\n args: compiler.identifier({ text: 'args' }),\n base64: compiler.identifier({ text: 'base64' }),\n bic: compiler.identifier({ text: 'bic' }),\n brand: compiler.identifier({ text: 'brand' }),\n bytes: compiler.identifier({ text: 'bytes' }),\n check: compiler.identifier({ text: 'check' }),\n checkItems: compiler.identifier({ text: 'checkItems' }),\n creditCard: compiler.identifier({ text: 'creditCard' }),\n cuid2: compiler.identifier({ text: 'cuid2' }),\n decimal: compiler.identifier({ text: 'decimal' }),\n description: compiler.identifier({ text: 'description' }),\n digits: compiler.identifier({ text: 'digits' }),\n email: compiler.identifier({ text: 'email' }),\n emoji: compiler.identifier({ text: 'emoji' }),\n empty: compiler.identifier({ text: 'empty' }),\n endsWith: compiler.identifier({ text: 'endsWith' }),\n entries: compiler.identifier({ text: 'entries' }),\n everyItem: compiler.identifier({ text: 'everyItem' }),\n excludes: compiler.identifier({ text: 'excludes' }),\n filterItems: compiler.identifier({ text: 'filterItems' }),\n findItem: compiler.identifier({ text: 'findItem' }),\n finite: compiler.identifier({ text: 'finite' }),\n flavor: compiler.identifier({ text: 'flavor' }),\n graphemes: compiler.identifier({ text: 'graphemes' }),\n gtValue: compiler.identifier({ text: 'gtValue' }),\n hash: compiler.identifier({ text: 'hash' }),\n hexColor: compiler.identifier({ text: 'hexColor' }),\n hexadecimal: compiler.identifier({ text: 'hexadecimal' }),\n imei: compiler.identifier({ text: 'imei' }),\n includes: compiler.identifier({ text: 'includes' }),\n integer: compiler.identifier({ text: 'integer' }),\n ip: compiler.identifier({ text: 'ip' }),\n ipv4: compiler.identifier({ text: 'ipv4' }),\n ipv6: compiler.identifier({ text: 'ipv6' }),\n isoDate: compiler.identifier({ text: 'isoDate' }),\n isoDateTime: compiler.identifier({ text: 'isoDateTime' }),\n isoTime: compiler.identifier({ text: 'isoTime' }),\n isoTimeSecond: compiler.identifier({ text: 'isoTimeSecond' }),\n isoTimestamp: compiler.identifier({ text: 'isoTimestamp' }),\n isoWeek: compiler.identifier({ text: 'isoWeek' }),\n length: compiler.identifier({ text: 'length' }),\n ltValue: compiler.identifier({ text: 'ltValue' }),\n mac: compiler.identifier({ text: 'mac' }),\n mac48: compiler.identifier({ text: 'mac48' }),\n mac64: compiler.identifier({ text: 'mac64' }),\n mapItems: compiler.identifier({ text: 'mapItems' }),\n maxBytes: compiler.identifier({ text: 'maxBytes' }),\n maxEntries: compiler.identifier({ text: 'maxEntries' }),\n maxGraphemes: compiler.identifier({ text: 'maxGraphemes' }),\n maxLength: compiler.identifier({ text: 'maxLength' }),\n maxSize: compiler.identifier({ text: 'maxSize' }),\n maxValue: compiler.identifier({ text: 'maxValue' }),\n maxWords: compiler.identifier({ text: 'maxWords' }),\n metadata: compiler.identifier({ text: 'metadata' }),\n mimeType: compiler.identifier({ text: 'mimeType' }),\n minBytes: compiler.identifier({ text: 'minBytes' }),\n minEntries: compiler.identifier({ text: 'minEntries' }),\n minGraphemes: compiler.identifier({ text: 'minGraphemes' }),\n minLength: compiler.identifier({ text: 'minLength' }),\n minSize: compiler.identifier({ text: 'minSize' }),\n minValue: compiler.identifier({ text: 'minValue' }),\n minWords: compiler.identifier({ text: 'minWords' }),\n multipleOf: compiler.identifier({ text: 'multipleOf' }),\n nanoid: compiler.identifier({ text: 'nanoid' }),\n nonEmpty: compiler.identifier({ text: 'nonEmpty' }),\n normalize: compiler.identifier({ text: 'normalize' }),\n notBytes: compiler.identifier({ text: 'notBytes' }),\n notEntries: compiler.identifier({ text: 'notEntries' }),\n notGraphemes: compiler.identifier({ text: 'notGraphemes' }),\n notLength: compiler.identifier({ text: 'notLength' }),\n notSize: compiler.identifier({ text: 'notSize' }),\n notValue: compiler.identifier({ text: 'notValue' }),\n notValues: compiler.identifier({ text: 'notValues' }),\n notWords: compiler.identifier({ text: 'notWords' }),\n octal: compiler.identifier({ text: 'octal' }),\n parseJson: compiler.identifier({ text: 'parseJson' }),\n partialCheck: compiler.identifier({ text: 'partialCheck' }),\n rawCheck: compiler.identifier({ text: 'rawCheck' }),\n rawTransform: compiler.identifier({ text: 'rawTransform' }),\n readonly: compiler.identifier({ text: 'readonly' }),\n reduceItems: compiler.identifier({ text: 'reduceItems' }),\n regex: compiler.identifier({ text: 'regex' }),\n returns: compiler.identifier({ text: 'returns' }),\n rfcEmail: compiler.identifier({ text: 'rfcEmail' }),\n safeInteger: compiler.identifier({ text: 'safeInteger' }),\n size: compiler.identifier({ text: 'size' }),\n slug: compiler.identifier({ text: 'slug' }),\n someItem: compiler.identifier({ text: 'someItem' }),\n sortItems: compiler.identifier({ text: 'sortItems' }),\n startsWith: compiler.identifier({ text: 'startsWith' }),\n stringifyJson: compiler.identifier({ text: 'stringifyJson' }),\n title: compiler.identifier({ text: 'title' }),\n toLowerCase: compiler.identifier({ text: 'toLowerCase' }),\n toMaxValue: compiler.identifier({ text: 'toMaxValue' }),\n toMinValue: compiler.identifier({ text: 'toMinValue' }),\n toUpperCase: compiler.identifier({ text: 'toUpperCase' }),\n transform: compiler.identifier({ text: 'transform' }),\n trim: compiler.identifier({ text: 'trim' }),\n trimEnd: compiler.identifier({ text: 'trimEnd' }),\n trimStart: compiler.identifier({ text: 'trimStart' }),\n ulid: compiler.identifier({ text: 'ulid' }),\n url: compiler.identifier({ text: 'url' }),\n uuid: compiler.identifier({ text: 'uuid' }),\n value: compiler.identifier({ text: 'value' }),\n values: compiler.identifier({ text: 'values' }),\n words: compiler.identifier({ text: 'words' }),\n },\n /**\n * {@link https://valibot.dev/api/#async Async}\n */\n async: {\n argsAsync: compiler.identifier({ text: 'argsAsync' }),\n arrayAsync: compiler.identifier({ text: 'arrayAsync' }),\n awaitAsync: compiler.identifier({ text: 'awaitAsync' }),\n checkAsync: compiler.identifier({ text: 'checkAsync' }),\n checkItemsAsync: compiler.identifier({ text: 'checkItemsAsync' }),\n customAsync: compiler.identifier({ text: 'customAsync' }),\n exactOptionalAsync: compiler.identifier({ text: 'exactOptionalAsync' }),\n fallbackAsync: compiler.identifier({ text: 'fallbackAsync' }),\n forwardAsync: compiler.identifier({ text: 'forwardAsync' }),\n getDefaultsAsync: compiler.identifier({ text: 'getDefaultsAsync' }),\n getFallbacksAsync: compiler.identifier({ text: 'getFallbacksAsync' }),\n intersectAsync: compiler.identifier({ text: 'intersectAsync' }),\n lazyAsync: compiler.identifier({ text: 'lazyAsync' }),\n looseObjectAsync: compiler.identifier({ text: 'looseObjectAsync' }),\n looseTupleAsync: compiler.identifier({ text: 'looseTupleAsync' }),\n mapAsync: compiler.identifier({ text: 'mapAsync' }),\n nonNullableAsync: compiler.identifier({ text: 'nonNullableAsync' }),\n nonNullishAsync: compiler.identifier({ text: 'nonNullishAsync' }),\n nonOptionalAsync: compiler.identifier({ text: 'nonOptionalAsync' }),\n nullableAsync: compiler.identifier({ text: 'nullableAsync' }),\n nullishAsync: compiler.identifier({ text: 'nullishAsync' }),\n objectAsync: compiler.identifier({ text: 'objectAsync' }),\n objectWithRestAsync: compiler.identifier({ text: 'objectWithRestAsync' }),\n optionalAsync: compiler.identifier({ text: 'optionalAsync' }),\n parseAsync: compiler.identifier({ text: 'parseAsync' }),\n parserAsync: compiler.identifier({ text: 'parserAsync' }),\n partialAsync: compiler.identifier({ text: 'partialAsync' }),\n partialCheckAsync: compiler.identifier({ text: 'partialCheckAsync' }),\n pipeAsync: compiler.identifier({ text: 'pipeAsync' }),\n rawCheckAsync: compiler.identifier({ text: 'rawCheckAsync' }),\n rawTransformAsync: compiler.identifier({ text: 'rawTransformAsync' }),\n recordAsync: compiler.identifier({ text: 'recordAsync' }),\n requiredAsync: compiler.identifier({ text: 'requiredAsync' }),\n returnsAsync: compiler.identifier({ text: 'returnsAsync' }),\n safeParseAsync: compiler.identifier({ text: 'safeParseAsync' }),\n safeParserAsync: compiler.identifier({ text: 'safeParserAsync' }),\n setAsync: compiler.identifier({ text: 'setAsync' }),\n strictObjectAsync: compiler.identifier({ text: 'strictObjectAsync' }),\n strictTupleAsync: compiler.identifier({ text: 'strictTupleAsync' }),\n transformAsync: compiler.identifier({ text: 'transformAsync' }),\n tupleAsync: compiler.identifier({ text: 'tupleAsync' }),\n tupleWithRestAsync: compiler.identifier({ text: 'tupleWithRestAsync' }),\n undefinedableAsync: compiler.identifier({ text: 'undefinedableAsync' }),\n unionAsync: compiler.identifier({ text: 'unionAsync' }),\n variantAsync: compiler.identifier({ text: 'variantAsync' }),\n },\n /**\n * {@link https://valibot.dev/api/#methods Methods}\n */\n methods: {\n assert: compiler.identifier({ text: 'assert' }),\n config: compiler.identifier({ text: 'config' }),\n fallback: compiler.identifier({ text: 'fallback' }),\n flatten: compiler.identifier({ text: 'flatten' }),\n forward: compiler.identifier({ text: 'forward' }),\n getDefault: compiler.identifier({ text: 'getDefault' }),\n getDefaults: compiler.identifier({ text: 'getDefaults' }),\n getDescription: compiler.identifier({ text: 'getDescription' }),\n getFallback: compiler.identifier({ text: 'getFallback' }),\n getFallbacks: compiler.identifier({ text: 'getFallbacks' }),\n getMetadata: compiler.identifier({ text: 'getMetadata' }),\n getTitle: compiler.identifier({ text: 'getTitle' }),\n is: compiler.identifier({ text: 'is' }),\n keyof: compiler.identifier({ text: 'keyof' }),\n message: compiler.identifier({ text: 'message' }),\n omit: compiler.identifier({ text: 'omit' }),\n parse: compiler.identifier({ text: 'parse' }),\n parser: compiler.identifier({ text: 'parser' }),\n partial: compiler.identifier({ text: 'partial' }),\n pick: compiler.identifier({ text: 'pick' }),\n pipe: compiler.identifier({ text: 'pipe' }),\n required: compiler.identifier({ text: 'required' }),\n safeParse: compiler.identifier({ text: 'safeParse' }),\n safeParser: compiler.identifier({ text: 'safeParser' }),\n summarize: compiler.identifier({ text: 'summarize' }),\n unwrap: compiler.identifier({ text: 'unwrap' }),\n },\n /**\n * {@link https://valibot.dev/api/#schemas Schemas}\n */\n schemas: {\n any: compiler.identifier({ text: 'any' }),\n array: compiler.identifier({ text: 'array' }),\n bigInt: compiler.identifier({ text: 'bigint' }),\n blob: compiler.identifier({ text: 'blob' }),\n boolean: compiler.identifier({ text: 'boolean' }),\n custom: compiler.identifier({ text: 'custom' }),\n date: compiler.identifier({ text: 'date' }),\n enum: compiler.identifier({ text: 'enum' }),\n exactOptional: compiler.identifier({ text: 'exactOptional' }),\n file: compiler.identifier({ text: 'file' }),\n function: compiler.identifier({ text: 'function' }),\n instance: compiler.identifier({ text: 'instance' }),\n intersect: compiler.identifier({ text: 'intersect' }),\n lazy: compiler.identifier({ text: 'lazy' }),\n literal: compiler.identifier({ text: 'literal' }),\n looseObject: compiler.identifier({ text: 'looseObject' }),\n looseTuple: compiler.identifier({ text: 'looseTuple' }),\n map: compiler.identifier({ text: 'map' }),\n nan: compiler.identifier({ text: 'nan' }),\n never: compiler.identifier({ text: 'never' }),\n nonNullable: compiler.identifier({ text: 'nonNullable' }),\n nonNullish: compiler.identifier({ text: 'nonNullish' }),\n nonOptional: compiler.identifier({ text: 'nonOptional' }),\n null: compiler.identifier({ text: 'null' }),\n nullable: compiler.identifier({ text: 'nullable' }),\n nullish: compiler.identifier({ text: 'nullish' }),\n number: compiler.identifier({ text: 'number' }),\n object: compiler.identifier({ text: 'object' }),\n objectWithRest: compiler.identifier({ text: 'objectWithRest' }),\n optional: compiler.identifier({ text: 'optional' }),\n picklist: compiler.identifier({ text: 'picklist' }),\n promise: compiler.identifier({ text: 'promise' }),\n record: compiler.identifier({ text: 'record' }),\n set: compiler.identifier({ text: 'set' }),\n strictObject: compiler.identifier({ text: 'strictObject' }),\n strictTuple: compiler.identifier({ text: 'strictTuple' }),\n string: compiler.identifier({ text: 'string' }),\n symbol: compiler.identifier({ text: 'symbol' }),\n tuple: compiler.identifier({ text: 'tuple' }),\n tupleWithRest: compiler.identifier({ text: 'tupleWithRest' }),\n undefined: compiler.identifier({ text: 'undefined' }),\n undefinedable: compiler.identifier({ text: 'undefinedable' }),\n union: compiler.identifier({ text: 'union' }),\n unknown: compiler.identifier({ text: 'unknown' }),\n variant: compiler.identifier({ text: 'variant' }),\n void: compiler.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: compiler.identifier({ text: 'GenericSchema' }),\n },\n /**\n * {@link https://valibot.dev/api/#utils Utils}\n */\n utils: {\n // TODO: implement if necessary\n },\n v: compiler.identifier({ text: 'v' }),\n};\n\nexport const valibotId = 'valibot';\n","import type ts from 'typescript';\n\nimport { compiler } from '../../compiler';\nimport type { TypeScriptFile } from '../../generate/files';\nimport type { IR } from '../../ir/types';\nimport { identifiers, valibotId } from './constants';\nimport type { ValibotPlugin } from './types';\n\nconst createRequestValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: TypeScriptFile;\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 compiler.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n compiler.returnStatement({\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.async.parseAsync,\n }),\n parameters: [\n compiler.identifier({ text: schemaIdentifier.name }),\n compiler.identifier({ text: dataParameterName }),\n ],\n }),\n }),\n }),\n ],\n });\n};\n\nconst createResponseValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: TypeScriptFile;\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 compiler.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n compiler.returnStatement({\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.async.parseAsync,\n }),\n parameters: [\n compiler.identifier({ text: schemaIdentifier.name }),\n compiler.identifier({ text: dataParameterName }),\n ],\n }),\n }),\n }),\n ],\n });\n};\n\nexport type Api = {\n createRequestValidator: (args: {\n file: TypeScriptFile;\n operation: IR.OperationObject;\n plugin: ValibotPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n createResponseValidator: (args: {\n file: TypeScriptFile;\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 ts from 'typescript';\n\nimport { compiler } from '../../compiler';\nimport type { Identifier } from '../../generate/files';\nimport { deduplicateSchema } from '../../ir/schema';\nimport type { IR } from '../../ir/types';\nimport type { StringCase } from '../../types/case';\nimport { numberRegExp } from '../../utils/regexp';\nimport { createSchemaComment } from '../shared/utils/schema';\nimport { identifiers, valibotId } from './constants';\nimport { operationToValibotSchema } from './operation';\nimport type { ValibotPlugin } from './types';\n\ninterface SchemaWithType<T extends Required<IR.SchemaObject>['type']>\n extends Omit<IR.SchemaObject, 'type'> {\n type: Extract<Required<IR.SchemaObject>['type'], T>;\n}\n\nexport interface State {\n circularReferenceTracker: Set<string>;\n hasCircularReference: boolean;\n nameCase: StringCase;\n nameTransformer: string | ((name: string) => string);\n}\n\nconst pipesToExpression = (pipes: Array<ts.Expression>) => {\n if (pipes.length === 1) {\n return pipes[0]!;\n }\n\n const expression = compiler.callExpression({\n functionName: compiler.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.CallExpression => {\n const functionName = compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.array,\n });\n\n let arrayExpression: ts.CallExpression | undefined;\n\n if (!schema.items) {\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: [\n unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n }),\n ],\n });\n } else {\n schema = deduplicateSchema({ schema });\n\n // at least one item is guaranteed\n const itemExpressions = schema.items!.map((item) => {\n const schemaPipes = schemaToValibotSchema({\n plugin,\n schema: item,\n state,\n });\n return pipesToExpression(schemaPipes);\n });\n\n if (itemExpressions.length === 1) {\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return compiler.typeArrayNode(\n // compiler.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n // TODO: parser - handle union\n // return compiler.typeArrayNode(compiler.typeUnionNode({ types: itemExpressions }));\n\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: [\n unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n }),\n ],\n });\n }\n }\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: identifiers.actions.length,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minItems })],\n });\n } else {\n if (schema.minItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: compiler.identifier({ text: 'min' }),\n }),\n parameters: [compiler.valueToExpression({ value: schema.minItems })],\n });\n }\n\n if (schema.maxItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: compiler.identifier({ text: 'max' }),\n }),\n parameters: [compiler.valueToExpression({ value: schema.maxItems })],\n });\n }\n }\n\n return arrayExpression;\n};\n\nconst booleanTypeToValibotSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}) => {\n if (typeof schema.const === 'boolean') {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [compiler.ots.boolean(schema.const)],\n });\n return expression;\n }\n\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: 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 compiler.stringLiteral({\n text: item.const,\n }),\n );\n } else if (item.type === 'null' || item.const === null) {\n isNullable = true;\n }\n }\n\n if (!enumMembers.length) {\n return unknownTypeToValibotSchema({\n schema: {\n type: 'unknown',\n },\n });\n }\n\n let resultExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.picklist,\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n resultExpression = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.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 = compiler.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 compiler.callExpression({\n functionName: 'BigInt',\n parameters: [expression],\n });\n }\n\n return expression;\n};\n\nconst numberTypeToValibotSchema = ({\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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [compiler.ots.number(schema.const)],\n });\n return expression;\n }\n\n const pipes: Array<ts.CallExpression> = [];\n\n // Zod uses coerce for bigint here, might be needed for Valibot too\n const expression = compiler.callExpression({\n functionName: isBigInt\n ? compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.bigInt,\n })\n : compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.number,\n }),\n });\n pipes.push(expression);\n\n if (!isBigInt && schema.type === 'integer') {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.integer,\n }),\n });\n pipes.push(expression);\n }\n\n if (schema.exclusiveMinimum !== undefined) {\n const expression = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.record,\n }),\n parameters: [\n compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [compiler.ots.string(schema.const)],\n });\n return expression;\n }\n\n const pipes: Array<ts.CallExpression> = [];\n\n const expression = compiler.callExpression({\n functionName: compiler.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 compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.isoDate,\n }),\n }),\n );\n break;\n case 'date-time':\n pipes.push(\n compiler.callExpression({\n functionName: compiler.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 compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.ip,\n }),\n }),\n );\n break;\n case 'uri':\n pipes.push(\n compiler.callExpression({\n functionName: compiler.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 compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: compiler.identifier({ text: schema.format }),\n }),\n }),\n );\n break;\n }\n }\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.length,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minLength })],\n });\n pipes.push(expression);\n } else {\n if (schema.minLength !== undefined) {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.minLength,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minLength })],\n });\n pipes.push(expression);\n }\n\n if (schema.maxLength !== undefined) {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.maxLength,\n }),\n parameters: [compiler.valueToExpression({ value: schema.maxLength })],\n });\n pipes.push(expression);\n }\n }\n\n if (schema.pattern) {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.regex,\n }),\n parameters: [compiler.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 compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.literal,\n }),\n parameters: [compiler.valueToExpression({ value })],\n }),\n );\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.tuple,\n }),\n parameters: [\n compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.tuple,\n }),\n parameters: [\n compiler.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 = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 = compiler.callExpression({\n functionName: compiler.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 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 = compiler.identifier({ text: identifierRef.name });\n if (isCircularReference) {\n const lazyExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.lazy,\n }),\n parameters: [\n compiler.arrowFunction({\n statements: [\n compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.actions.metadata,\n }),\n parameters: [\n compiler.objectExpression({\n obj: [\n {\n key: 'description',\n value: compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.intersect,\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n pipes.push(intersectExpression);\n } else {\n const unionExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: identifiers.v,\n name: identifiers.schemas.union,\n }),\n parameters: [\n compiler.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 = compiler.callExpression({\n functionName: compiler.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 compiler.callExpression({\n functionName: compiler.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 compiler.callExpression({\n functionName: compiler.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 = compiler.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 ? (compiler.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 id: valibotId,\n identifierCase: plugin.config.case,\n path: plugin.output,\n });\n\n file.import({\n alias: identifiers.v.text,\n module: 'valibot',\n name: '*',\n });\n\n plugin.forEach('operation', 'parameter', 'requestBody', 'schema', (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 }\n });\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 { 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 string: (name) => ({ enabled: true, 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 string: (name) => ({ enabled: true, 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 string: (name) => ({ enabled: true, name }),\n },\n value: plugin.config.responses,\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 { compiler } from '../../compiler';\n\nexport const identifiers = {\n parseAsync: compiler.identifier({ text: 'parseAsync' }),\n};\n\nexport const zodId = 'zod';\n","import type ts from 'typescript';\n\nimport { compiler } from '../../compiler';\nimport type { TypeScriptFile } from '../../generate/files';\nimport type { IR } from '../../ir/types';\nimport { identifiers, zodId } from './constants';\nimport type { ZodPlugin } from './types';\n\nconst createRequestValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: TypeScriptFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n}): ts.ArrowFunction | undefined => {\n const { requests } = plugin.config;\n const schemaIdentifier = plugin.context.file({ id: zodId })!.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/zod-data/${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: zodId,\n }),\n name: schemaIdentifier.name,\n });\n\n const dataParameterName = 'data';\n\n return compiler.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n compiler.returnStatement({\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: schemaIdentifier.name }),\n name: identifiers.parseAsync,\n }),\n parameters: [compiler.identifier({ text: dataParameterName })],\n }),\n }),\n }),\n ],\n });\n};\n\nconst createResponseValidator = ({\n file,\n operation,\n plugin,\n}: {\n file: TypeScriptFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n}): ts.ArrowFunction | undefined => {\n const { responses } = plugin.config;\n const schemaIdentifier = plugin.context.file({ id: zodId })!.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/zod-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: zodId,\n }),\n name: schemaIdentifier.name,\n });\n\n const dataParameterName = 'data';\n\n return compiler.arrowFunction({\n async: true,\n parameters: [\n {\n name: dataParameterName,\n },\n ],\n statements: [\n compiler.returnStatement({\n expression: compiler.awaitExpression({\n expression: compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: compiler.identifier({ text: schemaIdentifier.name }),\n name: identifiers.parseAsync,\n }),\n parameters: [compiler.identifier({ text: dataParameterName })],\n }),\n }),\n }),\n ],\n });\n};\n\nexport type Api = {\n createRequestValidator: (args: {\n file: TypeScriptFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n createResponseValidator: (args: {\n file: TypeScriptFile;\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n }) => ts.ArrowFunction | undefined;\n};\n\nexport const api: Api = {\n createRequestValidator,\n createResponseValidator,\n};\n","import { operationResponsesMap } from '../../ir/operation';\nimport type { IR } from '../../ir/types';\nimport { zodId } from './constants';\nimport type { State } from './plugin';\nimport { schemaToZodSchema } from './plugin';\nimport type { ZodPlugin } from './types';\n\nexport const operationToZodSchema = ({\n operation,\n plugin,\n state,\n}: {\n operation: IR.OperationObject;\n plugin: ZodPlugin['Instance'];\n state: State;\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 identifierData = file.identifier({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/zod-data/${operation.id}`,\n case: plugin.config.requests.case,\n create: true,\n nameTransformer: plugin.config.requests.name,\n namespace: 'value',\n });\n schemaToZodSchema({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/zod-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: `#/zod-response/${operation.id}`,\n case: plugin.config.responses.case,\n create: true,\n nameTransformer: plugin.config.responses.name,\n namespace: 'value',\n });\n schemaToZodSchema({\n // TODO: refactor for better cross-plugin compatibility\n $ref: `#/zod-response/${operation.id}`,\n identifier: identifierResponse,\n plugin,\n schema: response,\n state,\n });\n }\n }\n }\n};\n","import ts from 'typescript';\n\nimport { compiler } from '../../compiler';\nimport type { Identifier } from '../../generate/files';\nimport { deduplicateSchema } from '../../ir/schema';\nimport type { IR } from '../../ir/types';\nimport type { StringCase } from '../../types/case';\nimport { numberRegExp } from '../../utils/regexp';\nimport { createSchemaComment } from '../shared/utils/schema';\nimport { zodId } from './constants';\nimport { operationToZodSchema } from './operation';\nimport type { ZodPlugin } from './types';\n\ninterface SchemaWithType<T extends Required<IR.SchemaObject>['type']>\n extends Omit<IR.SchemaObject, 'type'> {\n type: Extract<Required<IR.SchemaObject>['type'], T>;\n}\n\nexport interface State {\n circularReferenceTracker: Set<string>;\n hasCircularReference: boolean;\n nameCase: StringCase;\n nameTransformer: string | ((name: string) => string);\n}\n\n// frequently used identifiers\nconst andIdentifier = compiler.identifier({ text: 'and' });\nconst arrayIdentifier = compiler.identifier({ text: 'array' });\nconst coerceIdentifier = compiler.identifier({ text: 'coerce' });\nconst defaultIdentifier = compiler.identifier({ text: 'default' });\nconst describeIdentifier = compiler.identifier({ text: 'describe' });\nconst intersectionIdentifier = compiler.identifier({ text: 'intersection' });\nconst lazyIdentifier = compiler.identifier({ text: 'lazy' });\nconst lengthIdentifier = compiler.identifier({ text: 'length' });\nconst literalIdentifier = compiler.identifier({ text: 'literal' });\nconst maxIdentifier = compiler.identifier({ text: 'max' });\nconst minIdentifier = compiler.identifier({ text: 'min' });\nconst objectIdentifier = compiler.identifier({ text: 'object' });\nconst optionalIdentifier = compiler.identifier({ text: 'optional' });\nconst readonlyIdentifier = compiler.identifier({ text: 'readonly' });\nconst recordIdentifier = compiler.identifier({ text: 'record' });\nconst regexIdentifier = compiler.identifier({ text: 'regex' });\nconst unionIdentifier = compiler.identifier({ text: 'union' });\nconst zIdentifier = compiler.identifier({ text: 'z' });\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 = compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: arrayIdentifier,\n });\n\n let arrayExpression: ts.CallExpression | undefined;\n\n if (!schema.items) {\n arrayExpression = compiler.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((item) =>\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }),\n );\n\n if (itemExpressions.length === 1) {\n arrayExpression = compiler.callExpression({\n functionName,\n parameters: itemExpressions,\n });\n } else {\n if (schema.logicalOperator === 'and') {\n // TODO: parser - handle intersection\n // return compiler.typeArrayNode(\n // compiler.typeIntersectionNode({ types: itemExpressions }),\n // );\n }\n\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: arrayIdentifier,\n }),\n parameters: [\n compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: unionIdentifier,\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: itemExpressions,\n }),\n ],\n }),\n ],\n });\n }\n }\n\n if (schema.minItems === schema.maxItems && schema.minItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: lengthIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minItems })],\n });\n } else {\n if (schema.minItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: minIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minItems })],\n });\n }\n\n if (schema.maxItems !== undefined) {\n arrayExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: arrayExpression,\n name: maxIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.maxItems })],\n });\n }\n }\n\n return arrayExpression;\n};\n\nconst booleanTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'boolean'>;\n}) => {\n if (typeof schema.const === 'boolean') {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.ots.boolean(schema.const)],\n });\n return expression;\n }\n\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'boolean' }),\n }),\n });\n return expression;\n};\n\nconst enumTypeToZodSchema = ({\n 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 compiler.stringLiteral({\n text: item.const,\n }),\n );\n } else if (item.type === 'null' || item.const === null) {\n isNullable = true;\n }\n }\n\n if (!enumMembers.length) {\n return unknownTypeToZodSchema({\n schema: {\n type: 'unknown',\n },\n });\n }\n\n let enumExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'enum' }),\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: enumMembers,\n multiLine: false,\n }),\n ],\n });\n\n if (isNullable) {\n enumExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: enumExpression,\n name: compiler.identifier({ text: 'nullable' }),\n }),\n });\n }\n\n return enumExpression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst neverTypeToZodSchema = (_props: { schema: SchemaWithType<'never'> }) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'never' }),\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst nullTypeToZodSchema = (_props: { schema: SchemaWithType<'null'> }) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'null' }),\n }),\n });\n return expression;\n};\n\nconst numberParameter = ({\n isBigInt,\n value,\n}: {\n isBigInt: boolean;\n value: unknown;\n}) => {\n const expression = compiler.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 compiler.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 = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.ots.number(schema.const)],\n });\n return expression;\n }\n\n let numberExpression = compiler.callExpression({\n functionName: isBigInt\n ? compiler.propertyAccessExpression({\n expression: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: coerceIdentifier,\n }),\n name: compiler.identifier({ text: 'bigint' }),\n })\n : compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'number' }),\n }),\n });\n\n if (!isBigInt && schema.type === 'integer') {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'int' }),\n }),\n });\n }\n\n if (schema.exclusiveMinimum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'gt' }),\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMinimum }),\n ],\n });\n } else if (schema.minimum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'gte' }),\n }),\n parameters: [numberParameter({ isBigInt, value: schema.minimum })],\n });\n }\n\n if (schema.exclusiveMaximum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'lt' }),\n }),\n parameters: [\n numberParameter({ isBigInt, value: schema.exclusiveMaximum }),\n ],\n });\n } else if (schema.maximum !== undefined) {\n numberExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: numberExpression,\n name: compiler.identifier({ text: 'lte' }),\n }),\n parameters: [numberParameter({ isBigInt, value: schema.maximum })],\n });\n }\n\n return numberExpression;\n};\n\nconst objectTypeToZodSchema = ({\n 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 });\n\n numberRegExp.lastIndex = 0;\n let propertyName;\n if (numberRegExp.test(name)) {\n // For numeric literals, we'll handle negative numbers by using a string literal\n // instead of trying to use a PrefixUnaryExpression\n propertyName = name.startsWith('-')\n ? ts.factory.createStringLiteral(name)\n : ts.factory.createNumericLiteral(name);\n } else {\n propertyName = name;\n }\n // TODO: parser - abstract safe property name logic\n if (\n ((name.match(/^[0-9]/) && name.match(/\\D+/g)) || name.match(/\\W/g)) &&\n !name.startsWith(\"'\") &&\n !name.endsWith(\"'\")\n ) {\n propertyName = `'${name}'`;\n }\n properties.push(\n compiler.propertyAssignment({\n initializer: propertyExpression,\n name: propertyName,\n }),\n );\n }\n\n if (\n schema.additionalProperties &&\n schema.additionalProperties.type === 'object' &&\n !Object.keys(properties).length\n ) {\n const zodSchema = schemaToZodSchema({\n plugin,\n schema: schema.additionalProperties,\n state,\n });\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: recordIdentifier,\n }),\n parameters: [zodSchema],\n });\n return {\n anyType: 'AnyZodObject',\n expression,\n };\n }\n\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: objectIdentifier,\n }),\n parameters: [ts.factory.createObjectLiteralExpression(properties, true)],\n });\n return {\n anyType: 'AnyZodObject',\n expression,\n };\n};\n\nconst stringTypeToZodSchema = ({\n schema,\n}: {\n schema: SchemaWithType<'string'>;\n}) => {\n if (typeof schema.const === 'string') {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.ots.string(schema.const)],\n });\n return expression;\n }\n\n let stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'string' }),\n }),\n });\n\n if (schema.format) {\n switch (schema.format) {\n case 'date-time':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: 'datetime' }),\n }),\n });\n break;\n case 'ipv4':\n case 'ipv6':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: 'ip' }),\n }),\n });\n break;\n case 'uri':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: 'url' }),\n }),\n });\n break;\n case 'date':\n case 'email':\n case 'time':\n case 'uuid':\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: compiler.identifier({ text: schema.format }),\n }),\n });\n break;\n }\n }\n\n if (schema.minLength === schema.maxLength && schema.minLength !== undefined) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: lengthIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minLength })],\n });\n } else {\n if (schema.minLength !== undefined) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: minIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.minLength })],\n });\n }\n\n if (schema.maxLength !== undefined) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: maxIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value: schema.maxLength })],\n });\n }\n }\n\n if (schema.pattern) {\n stringExpression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: stringExpression,\n name: regexIdentifier,\n }),\n parameters: [compiler.regularExpressionLiteral({ text: schema.pattern })],\n });\n }\n\n return stringExpression;\n};\n\nconst tupleTypeToZodSchema = ({\n 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 compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: literalIdentifier,\n }),\n parameters: [compiler.valueToExpression({ value })],\n }),\n );\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'tuple' }),\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n }\n\n 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 }),\n );\n }\n\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'tuple' }),\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: tupleElements,\n }),\n ],\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst undefinedTypeToZodSchema = (_props: {\n schema: SchemaWithType<'undefined'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'undefined' }),\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst unknownTypeToZodSchema = (_props: {\n schema: SchemaWithType<'unknown'>;\n}) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'unknown' }),\n }),\n });\n return expression;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst voidTypeToZodSchema = (_props: { schema: SchemaWithType<'void'> }) => {\n const expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: compiler.identifier({ text: 'void' }),\n }),\n });\n return expression;\n};\n\nconst schemaTypeToZodSchema = ({\n 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 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\nexport const schemaToZodSchema = ({\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: ZodPlugin['Instance'];\n schema: IR.SchemaObject;\n state: State;\n}): ts.Expression => {\n const file = plugin.context.file({ id: zodId })!;\n\n let anyType: string | undefined;\n let expression: ts.Expression | undefined;\n let identifier: ReturnType<typeof file.identifier> | undefined = _identifier;\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 expression = schemaToZodSchema({\n $ref: schema.$ref,\n plugin,\n schema: ref,\n state,\n });\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 = compiler.identifier({ text: identifierRef.name });\n if (isCircularReference) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: lazyIdentifier,\n }),\n parameters: [\n compiler.arrowFunction({\n statements: [\n compiler.returnStatement({\n expression: refIdentifier,\n }),\n ],\n }),\n ],\n });\n state.hasCircularReference = true;\n } else {\n expression = refIdentifier;\n }\n }\n } else if (schema.type) {\n const zodSchema = schemaTypeToZodSchema({ plugin, schema, state });\n anyType = zodSchema.anyType;\n expression = zodSchema.expression;\n\n if (plugin.config.metadata && schema.description) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: describeIdentifier,\n }),\n parameters: [compiler.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((item) =>\n schemaToZodSchema({\n plugin,\n schema: item,\n state,\n }),\n );\n\n if (schema.logicalOperator === 'and') {\n const firstSchema = schema.items[0]!;\n // we want to add an intersection, but not every schema can use the same API.\n // if the first item contains another array or not an object, we cannot use\n // `.merge()` as that does not exist on `.union()` and non-object schemas.\n if (\n firstSchema.logicalOperator === 'or' ||\n (firstSchema.type && firstSchema.type !== 'object')\n ) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: intersectionIdentifier,\n }),\n parameters: itemTypes,\n });\n } else {\n expression = itemTypes[0];\n itemTypes.slice(1).forEach((item) => {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: expression!,\n name: andIdentifier,\n }),\n parameters: [item],\n });\n });\n }\n } else {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: unionIdentifier,\n }),\n parameters: [\n compiler.arrayLiteralExpression({\n elements: itemTypes,\n }),\n ],\n });\n }\n } else {\n expression = schemaToZodSchema({\n plugin,\n schema,\n state,\n });\n }\n } else {\n // catch-all fallback for failed schemas\n const zodSchema = schemaTypeToZodSchema({\n plugin,\n schema: {\n type: 'unknown',\n },\n state,\n });\n anyType = zodSchema.anyType;\n expression = zodSchema.expression;\n }\n\n if ($ref) {\n state.circularReferenceTracker.delete($ref);\n }\n\n if (expression) {\n if (schema.accessScope === 'read') {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: readonlyIdentifier,\n }),\n });\n }\n\n if (optional) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: optionalIdentifier,\n }),\n });\n }\n\n if (schema.default !== undefined) {\n const isBigInt = schema.type === 'integer' && schema.format === 'int64';\n const callParameter = numberParameter({\n isBigInt,\n value: schema.default,\n });\n if (callParameter) {\n expression = compiler.callExpression({\n functionName: compiler.propertyAccessExpression({\n expression,\n name: defaultIdentifier,\n }),\n parameters: [callParameter],\n });\n }\n }\n }\n\n // emit nodes only if $ref points to a reusable component\n if (identifier && identifier.name && identifier.created) {\n const statement = compiler.constVariable({\n comment: plugin.config.comments\n ? createSchemaComment({ schema })\n : undefined,\n exportConst: true,\n expression: expression!,\n name: identifier.name,\n typeName: state.hasCircularReference\n ? (compiler.propertyAccessExpression({\n expression: zIdentifier,\n name: anyType || 'ZodTypeAny',\n }) as unknown as ts.TypeNode)\n : undefined,\n });\n file.add(statement);\n }\n\n return expression!;\n};\n\nexport const handler: ZodPlugin['Handler'] = ({ plugin }) => {\n const file = plugin.createFile({\n id: zodId,\n identifierCase: plugin.config.case,\n path: plugin.output,\n });\n\n file.import({\n module: 'zod',\n name: 'z',\n });\n\n plugin.forEach('operation', 'parameter', 'requestBody', 'schema', (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 operationToZodSchema({ operation: event.operation, plugin, state });\n } else if (event.type === 'parameter') {\n schemaToZodSchema({\n $ref: event.$ref,\n plugin,\n schema: event.parameter.schema,\n state,\n });\n } else if (event.type === 'requestBody') {\n schemaToZodSchema({\n $ref: event.$ref,\n plugin,\n schema: event.requestBody.schema,\n state,\n });\n } else if (event.type === 'schema') {\n schemaToZodSchema({\n $ref: event.$ref,\n plugin,\n schema: event.schema,\n state,\n });\n }\n });\n};\n","import { definePluginConfig } from '../shared/utils/config';\nimport { api } from './api';\nimport { handler } from './plugin';\nimport type { ZodPlugin } from './types';\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 plugin.config.definitions = context.valueToObject({\n defaultValue: {\n case: plugin.config.case ?? 'camelCase',\n enabled: true,\n name: 'z{{name}}',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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: 'z{{name}}Data',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, 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: 'z{{name}}Response',\n },\n mappers: {\n boolean: (enabled) => ({ enabled }),\n string: (name) => ({ enabled: true, name }),\n },\n value: plugin.config.responses,\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 { 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 '@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 '@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 path from 'node:path';\n\nimport { loadConfig } from 'c12';\n\nimport { getLogs } from './getLogs';\nimport { defaultPluginConfigs } from './plugins/config';\nimport type {\n AnyPluginName,\n PluginContext,\n PluginNames,\n} from './plugins/types';\nimport type { Config, UserConfig } from './types/config';\nimport { isLegacyClient, setConfig } from './utils/config';\n\n/**\n * Default plugins used to generate artifacts if plugins aren't specified.\n */\nexport const defaultPlugins = [\n '@hey-api/typescript',\n '@hey-api/sdk',\n] as const satisfies ReadonlyArray<PluginNames>;\n\nconst defaultWatch: Config['input']['watch'] = {\n enabled: false,\n interval: 1_000,\n timeout: 60_000,\n};\n\nconst getInput = (userConfig: UserConfig): Config['input'] => {\n let input: Config['input'] = {\n path: '',\n validate_EXPERIMENTAL: false,\n watch: defaultWatch,\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: 'https://get.heyapi.dev',\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 (input.validate_EXPERIMENTAL === true) {\n input.validate_EXPERIMENTAL = 'warn';\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\nconst getPluginsConfig = ({\n userPlugins,\n userPluginsConfig,\n}: {\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 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: ({ defaultValue, mappers, value }) => {\n let result = { ...defaultValue };\n switch (typeof value) {\n case 'boolean':\n if ('boolean' in mappers) {\n const mapper = mappers.boolean as (\n value: boolean,\n ) => Record<string, any>;\n result = { ...result, ...mapper(value) };\n }\n break;\n case 'number':\n if ('number' in mappers) {\n const mapper = mappers.number as (\n value: number,\n ) => Record<string, any>;\n result = { ...result, ...mapper(value) };\n }\n break;\n case 'string':\n if ('string' in mappers) {\n const mapper = mappers.string as (\n value: string,\n ) => Record<string, any>;\n result = { ...result, ...mapper(value) };\n }\n break;\n case 'object':\n if (value !== null) {\n result = { ...result, ...value };\n }\n break;\n }\n return result;\n },\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 getOutput = (userConfig: UserConfig): Config['output'] => {\n let output: Config['output'] = {\n clean: true,\n format: false,\n indexFile: true,\n lint: false,\n path: '',\n tsConfigPath: '',\n };\n if (typeof userConfig.output === 'string') {\n output.path = userConfig.output;\n } else {\n output = {\n ...output,\n ...userConfig.output,\n };\n }\n return output;\n};\n\nconst isPluginClient = (plugin: Required<UserConfig>['plugins'][number]) => {\n if (typeof plugin === 'string') {\n return plugin.startsWith('@hey-api/client') || plugin.startsWith('legacy/');\n }\n\n return (\n plugin.name.startsWith('@hey-api/client') ||\n plugin.name.startsWith('legacy/') ||\n // @ts-expect-error\n (plugin.tags && plugin.tags.includes('client'))\n );\n};\n\nconst getPlugins = (\n userConfig: UserConfig,\n): Pick<Config, 'plugins' | 'pluginOrder'> => {\n const userPluginsConfig: Config['plugins'] = {};\n\n let definedPlugins: UserConfig['plugins'] = defaultPlugins;\n\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({ userPlugins, userPluginsConfig });\n};\n\nconst getWatch = (\n input: Pick<Config['input'], 'path' | 'watch'>,\n): Config['input']['watch'] => {\n let watch = { ...defaultWatch };\n // we cannot watch spec passed as an object\n if (typeof input.path !== 'string') {\n return watch;\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 return watch;\n};\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\nconst 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\n/**\n * @internal\n */\nexport const initConfigs = async (\n userConfig: UserConfig | undefined,\n): Promise<\n 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 } = await loadConfig<UserConfig>({\n configFile: configurationFile,\n name: 'openapi-ts',\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 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\n if (!input.path) {\n errors.push(\n new Error(\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 Error('missing output - where should we generate your output?'),\n );\n }\n\n if (!useOptions) {\n console.warn(\n '❗️ Deprecation warning: useOptions set to false. This setting will be removed in future versions. Please migrate useOptions to true https://heyapi.dev/openapi-ts/migrating.html#v0-27-38',\n );\n }\n\n output.path = path.resolve(process.cwd(), output.path);\n\n let plugins: Pick<Config, 'plugins' | 'pluginOrder'>;\n\n try {\n plugins = getPlugins(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 logs,\n name,\n output,\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 results;\n};\n"]}
|