@conduit-client/model 5.67.0-dev1
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/dist/main/index.js +6 -0
- package/dist/main/index.js.map +1 -0
- package/dist/types/index.d.ts +0 -0
- package/dist/types/v1/__tests__/validation.spec.d.ts +1 -0
- package/dist/types/v1/__tests__/zod-utils.spec.d.ts +1 -0
- package/dist/types/v1/amf/AMFAPI.d.ts +44 -0
- package/dist/types/v1/amf/__tests__/AMFAPI.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/amf-api-service.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/amf-extensions-services.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/amf-extensions.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/amf-utils.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/parser.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/test-utils.d.ts +211 -0
- package/dist/types/v1/amf/__tests__/validation.spec.d.ts +1 -0
- package/dist/types/v1/amf/__tests__/version.spec.d.ts +1 -0
- package/dist/types/v1/amf/amf-api-service.d.ts +15 -0
- package/dist/types/v1/amf/amf-extensions.d.ts +2 -0
- package/dist/types/v1/amf/amf-utils.d.ts +36 -0
- package/dist/types/v1/amf/endpoints/__tests__/amf-endpoint.spec.d.ts +1 -0
- package/dist/types/v1/amf/endpoints/__tests__/amf-operation.spec.d.ts +1 -0
- package/dist/types/v1/amf/endpoints/amf-endpoint.d.ts +32 -0
- package/dist/types/v1/amf/endpoints/amf-operation.d.ts +4112 -0
- package/dist/types/v1/amf/index.d.ts +5 -0
- package/dist/types/v1/amf/parser.d.ts +6 -0
- package/dist/types/v1/amf/types/AMFAllOfType.d.ts +23 -0
- package/dist/types/v1/amf/types/AMFAnyType.d.ts +7 -0
- package/dist/types/v1/amf/types/AMFArrayType.d.ts +10 -0
- package/dist/types/v1/amf/types/AMFBaseType.d.ts +25 -0
- package/dist/types/v1/amf/types/AMFDiscriminatedObjectType.d.ts +34 -0
- package/dist/types/v1/amf/types/AMFEnumType.d.ts +18 -0
- package/dist/types/v1/amf/types/AMFNilType.d.ts +7 -0
- package/dist/types/v1/amf/types/AMFNotType.d.ts +18 -0
- package/dist/types/v1/amf/types/AMFObjectType.d.ts +14 -0
- package/dist/types/v1/amf/types/AMFOneOfType.d.ts +17 -0
- package/dist/types/v1/amf/types/AMFRefType.d.ts +10 -0
- package/dist/types/v1/amf/types/AMFScalarTypes.d.ts +47 -0
- package/dist/types/v1/amf/types/__tests__/AMFAnyType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFArrayType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFBaseType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFDiscriminatedObjectType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFEnumType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFNilType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFNotType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFObjectType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFOneOfType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/AMFScalarType.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/annotations-schemas.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/__tests__/factory.spec.d.ts +1 -0
- package/dist/types/v1/amf/types/annotations-schemas.d.ts +172 -0
- package/dist/types/v1/amf/types/factory.d.ts +23 -0
- package/dist/types/v1/amf/types/index.d.ts +16 -0
- package/dist/types/v1/amf/validation.d.ts +11 -0
- package/dist/types/v1/amf/version.d.ts +3 -0
- package/dist/types/v1/api/__tests__/api.spec.d.ts +1 -0
- package/dist/types/v1/api/__tests__/index.spec.d.ts +0 -0
- package/dist/types/v1/api/api.d.ts +37 -0
- package/dist/types/v1/api/endpoint.d.ts +162 -0
- package/dist/types/v1/api/index.d.ts +5 -0
- package/dist/types/v1/api/service-overrides.d.ts +249 -0
- package/dist/types/v1/api/service.d.ts +23 -0
- package/dist/types/v1/api/validation/bindings.d.ts +6 -0
- package/dist/types/v1/api/validation/endpoint/__tests__/index.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/endpoint/index.d.ts +3 -0
- package/dist/types/v1/api/validation/index.d.ts +16 -0
- package/dist/types/v1/api/validation/operation/BodyDataValidator.d.ts +13 -0
- package/dist/types/v1/api/validation/operation/InvalidationValidator.d.ts +39 -0
- package/dist/types/v1/api/validation/operation/KeyMatchValidator.d.ts +7 -0
- package/dist/types/v1/api/validation/operation/KeySourceValidator.d.ts +25 -0
- package/dist/types/v1/api/validation/operation/NoNormalizedTypesValidator.d.ts +19 -0
- package/dist/types/v1/api/validation/operation/Response200Validator.d.ts +96 -0
- package/dist/types/v1/api/validation/operation/__tests__/BodyDataValidator.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/InvalidationValidator.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/KeyMatchValidator.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/KeySourceValidator.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/NoNormalizedTypesValidator.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/Response200Validator.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/index.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/__tests__/utils.spec.d.ts +1 -0
- package/dist/types/v1/api/validation/operation/index.d.ts +3 -0
- package/dist/types/v1/api/validation/operation/utils.d.ts +4 -0
- package/dist/types/v1/index.d.ts +3 -0
- package/dist/types/v1/types/Type.d.ts +106 -0
- package/dist/types/v1/types/TypeRegistry.d.ts +19 -0
- package/dist/types/v1/types/__tests__/TypeRegistry.spec.d.ts +1 -0
- package/dist/types/v1/types/__tests__/types-equal.spec.d.ts +1 -0
- package/dist/types/v1/types/__tests__/utils.spec.d.ts +1 -0
- package/dist/types/v1/types/index.d.ts +5 -0
- package/dist/types/v1/types/types-equal.d.ts +2 -0
- package/dist/types/v1/types/utils.d.ts +27 -0
- package/dist/types/v1/types/validators/__tests__/common.spec.d.ts +1 -0
- package/dist/types/v1/types/validators/__tests__/index.spec.d.ts +1 -0
- package/dist/types/v1/types/validators/common.d.ts +4 -0
- package/dist/types/v1/types/validators/extensions/KeyFieldReferenceValidator.d.ts +11 -0
- package/dist/types/v1/types/validators/extensions/KeyIsDefinedInSupportedTypeValidator.d.ts +20 -0
- package/dist/types/v1/types/validators/extensions/KeySourcesValidator.d.ts +25 -0
- package/dist/types/v1/types/validators/extensions/__tests__/KeyFieldReferenceValidator.spec.d.ts +1 -0
- package/dist/types/v1/types/validators/extensions/__tests__/KeyIsDefinedInSupportedTypeValidator.spec.d.ts +1 -0
- package/dist/types/v1/types/validators/extensions/__tests__/KeySourcesValidator.spec.d.ts +1 -0
- package/dist/types/v1/types/validators/extensions/index.d.ts +3 -0
- package/dist/types/v1/types/validators/index.d.ts +4 -0
- package/dist/types/v1/validation.d.ts +29 -0
- package/dist/types/v1/zod-utils.d.ts +2 -0
- package/dist/v1/index.js +7346 -0
- package/dist/v1/index.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/v1/api/endpoint.ts","../../src/v1/types/TypeRegistry.ts","../../../../utils/dist/index.js","../../src/v1/types/utils.ts","../../src/v1/types/validators/extensions/KeyFieldReferenceValidator.ts","../../src/v1/validation.ts","../../src/v1/types/validators/common.ts","../../src/v1/types/validators/extensions/KeyIsDefinedInSupportedTypeValidator.ts","../../src/v1/types/validators/extensions/KeySourcesValidator.ts","../../src/v1/types/validators/index.ts","../../src/v1/types/types-equal.ts","../../src/v1/api/validation/operation/utils.ts","../../src/v1/api/validation/operation/KeySourceValidator.ts","../../src/v1/api/validation/operation/Response200Validator.ts","../../src/v1/api/validation/operation/InvalidationValidator.ts","../../node_modules/zod/lib/index.mjs","../../src/v1/zod-utils.ts","../../src/v1/amf/amf-utils.ts","../../src/v1/amf/amf-extensions.ts","../../src/v1/amf/types/annotations-schemas.ts","../../src/v1/amf/types/AMFBaseType.ts","../../src/v1/amf/types/AMFAnyType.ts","../../src/v1/amf/types/AMFObjectType.ts","../../src/v1/amf/types/AMFNilType.ts","../../src/v1/amf/types/AMFNotType.ts","../../src/v1/amf/types/AMFAllOfType.ts","../../src/v1/amf/types/AMFScalarTypes.ts","../../src/v1/amf/types/AMFOneOfType.ts","../../src/v1/amf/types/AMFEnumType.ts","../../src/v1/amf/types/AMFRefType.ts","../../src/v1/amf/types/AMFDiscriminatedObjectType.ts","../../src/v1/amf/types/factory.ts","../../src/v1/amf/types/AMFArrayType.ts","../../src/v1/api/service-overrides.ts","../../src/v1/amf/endpoints/amf-operation.ts","../../src/v1/amf/endpoints/amf-endpoint.ts","../../src/v1/amf/version.ts","../../src/v1/amf/validation.ts","../../src/v1/amf/AMFAPI.ts","../../src/v1/api/validation/operation/NoNormalizedTypesValidator.ts","../../src/v1/api/validation/operation/KeyMatchValidator.ts","../../src/v1/api/validation/operation/BodyDataValidator.ts","../../src/v1/api/validation/operation/index.ts","../../src/v1/api/validation/endpoint/index.ts","../../src/v1/api/validation/bindings.ts","../../src/v1/api/validation/index.ts","../../src/v1/amf/parser.ts","../../src/v1/amf/amf-api-service.ts"],"sourcesContent":["import type { ArrayType, ScalarType, Type, TypeCacheControlExtension } from '../types';\nimport type { Server, API } from './api';\nimport type { ResolvedOperationServices } from './service-overrides';\nimport type { InvalidateConfig } from '@conduit-client/utils';\n\nexport type HttpMethod =\n | 'GET'\n | 'POST'\n | 'PUT'\n | 'PATCH'\n | 'DELETE'\n | 'HEAD'\n | 'CONNECT'\n | 'OPTIONS'\n | 'TRACE';\nexport type StatusCode =\n | '100'\n | '101'\n | '102'\n | '103'\n | '200'\n | '201'\n | '202'\n | '203'\n | '204'\n | '205'\n | '206'\n | '207'\n | '208'\n | '226'\n | '300'\n | '301'\n | '302'\n | '303'\n | '304'\n | '305'\n | '306'\n | '307'\n | '308'\n | '400'\n | '401'\n | '402'\n | '403'\n | '404'\n | '405'\n | '406'\n | '407'\n | '408'\n | '409'\n | '410'\n | '411'\n | '412'\n | '413'\n | '414'\n | '415'\n | '416'\n | '417'\n | '418'\n | '421'\n | '422'\n | '423'\n | '424'\n | '425'\n | '426'\n | '428'\n | '429'\n | '431'\n | '451'\n | '500'\n | '501'\n | '502'\n | '503'\n | '504'\n | '505'\n | '506'\n | '507'\n | '508'\n | '510'\n | '511';\n\nexport type Parameter<T extends Type = ScalarType> = {\n type: T;\n required: boolean;\n explode?: boolean;\n defaultValue?: T;\n};\nexport type UrlParameter = Parameter<ScalarType>;\nexport type QueryParameter = Parameter<ScalarType | (ArrayType & { items?: ScalarType })>;\nexport type TypeOfParameter<P extends Parameter<any>> = P extends Parameter<infer T> ? T : never;\n\nexport type ApplicationJsonContent<T extends Type> = {\n mediaType: 'application/json';\n data: T;\n};\n\nexport type ApplicationXmlContent<T extends Type> = {\n mediaType: 'application/xml';\n data: T;\n};\n\nexport type Payload<T extends Type = Type> = ApplicationJsonContent<T> | ApplicationXmlContent<T>;\nexport type Request<T extends Type = Type> = {\n queryParameters: Record<string, QueryParameter>;\n uriParameters: Record<string, Parameter>;\n payloads: Array<Payload<T>>;\n cookies: Record<string, Parameter>;\n headers: Record<string, Parameter>;\n};\n\nexport type Response<T extends Type = Type> = {\n statusCode: StatusCode;\n payloads: Array<Payload<T>>;\n headers: Record<string, Parameter>;\n invalidation?: InvalidateConfig[];\n};\n\nexport const BindingTypesEnum = ['wire', 'imperative', 'imperative-legacy', 'mutation'] as const;\nexport type BindingType = (typeof BindingTypesEnum)[number];\nexport type Binding = {\n type: BindingType;\n identifier: string;\n};\nexport type ConfigSchemaType = 'default' | 'flattened';\nexport type OperationType = 'query' | 'mutation' | 'graphql';\nexport type ResourceLevelCacheControl = { 'max-age': number };\nexport type OperationCacheControl = { type: 'max-age'; 'max-age': number } | { type: 'no-cache' };\nexport type CacheStrategy =\n | { type: 'none' }\n | { type: 'resource'; config: ResourceLevelCacheControl }\n | {\n type: 'normalized';\n 'cache-control': OperationCacheControl;\n key?: Record<string, string>;\n };\n\nexport type ErrorStrategy = { type: 'stringified' } | { type: 'fetchResponse' };\n\nexport type BaseOperation<ResponseType extends Type = Type, RequestType extends Type = Type> = {\n readonly type: 'aura' | 'http';\n method: HttpMethod;\n operationType: OperationType;\n operationId: string | undefined;\n configSchemaType: ConfigSchemaType;\n requests: Request<RequestType>[];\n responses: Response<ResponseType>[];\n cacheStrategy: CacheStrategy;\n errorStrategy: ErrorStrategy;\n endpoint: EndPoint;\n server: Server;\n bindings: Binding[];\n exposeRefresh: boolean;\n basePath: string;\n defaults: API['defaults'];\n serviceOverrides: ResolvedOperationServices;\n};\n\nexport type BaseOperationWithRequestBody<\n ResponseType extends Type = Type,\n RequestType extends Type = Type,\n> = BaseOperation & {\n configBodyParam: string;\n};\n\nexport type BaseAuraOperation = BaseOperation & {\n type: 'aura';\n aura: { methodName: string };\n};\nexport type AuraOperationWithRequestBody = BaseOperationWithRequestBody &\n BaseAuraOperation & {\n aura: BaseAuraOperation['aura'] & { bodyParam: string };\n };\n\nexport type BaseGraphQLOperation = BaseOperation & {\n operationType: 'graphql';\n graphqlConfig: GraphQLConfig;\n};\n\nexport type BaseHttpOperation = BaseOperation & { type: 'http' };\nexport type HttpOperationWithRequestBody = BaseHttpOperation & BaseOperationWithRequestBody;\nexport type HttpOperation = BaseHttpOperation | HttpOperationWithRequestBody;\nexport type AuraOperation = BaseAuraOperation | AuraOperationWithRequestBody;\nexport type AuraGraphQLOperation = AuraOperation & BaseGraphQLOperation;\nexport type HttpGraphQLOperation = HttpOperation & BaseGraphQLOperation;\nexport type GraphQLOperation = AuraGraphQLOperation | HttpGraphQLOperation;\nexport type Operation = HttpOperation | AuraOperation | GraphQLOperation;\n\nexport type NoCacheOperation = Operation & { cacheStrategy: { type: 'none' } };\nexport type ResourceCacheOperation = Operation & { cacheStrategy: { type: 'resource' } };\nexport type NormalizedOperation = Operation & { cacheStrategy: { type: 'normalized' } };\n\nexport type AuraController = {\n name: string;\n};\n\nexport type NetworkPreference = 'aura' | 'http';\n\n/**\n * A particular endpoint provided by an API.\n */\nexport type BaseEndPoint = {\n readonly type: 'aura' | 'http';\n path: string;\n uriParameters: Record<string, Parameter>;\n operations: ReadonlyArray<Operation>;\n};\n\nexport type AuraEndPoint = BaseEndPoint & {\n auraController: AuraController;\n networkPreference: NetworkPreference;\n};\n\nexport type HttpEndPoint = BaseEndPoint & { type: 'http' };\n\nexport type EndPoint = HttpEndPoint | AuraEndPoint;\n\nexport type GraphQLTypeMetadata = {\n typename: string;\n 'cache-control': OperationCacheControl;\n};\n\nexport type GraphQLConfig = {\n schemaFilePath: string;\n 'type-metadata': GraphQLTypeMetadata[];\n defaults?: Partial<TypeCacheControlExtension>;\n};\n","import type { Type } from './Type';\n\ntype TypeRegistryExtensions<SupportedTypes> = {\n /**\n * Returns the name of the given type within this regstry; undefined if the type is not\n * present in the registry.\n *\n * @param t SupportedType\n */\n nameOf(t: SupportedTypes): string | undefined;\n};\n\nexport type ReadOnlyTypeRegistry<SupportedTypes extends Type = Type> = ReadonlyMap<\n string,\n SupportedTypes\n> &\n TypeRegistryExtensions<SupportedTypes>;\nexport type TypeRegistry<SupportedTypes extends Type = Type> = Map<string, SupportedTypes> &\n TypeRegistryExtensions<SupportedTypes>;\n\n/**\n * Base implementation of TypeRegistry.\n */\nexport class BaseTypeRegistry<SupportedTypes extends Type = Type>\n extends Map<string, SupportedTypes>\n implements TypeRegistry<SupportedTypes>\n{\n nameOf(t: SupportedTypes): string | undefined {\n for (const [name, type] of this.entries()) {\n if (type === t) {\n return name;\n }\n }\n }\n}\n","/*!\n * Copyright (c) 2022, Salesforce, Inc.,\n * All rights reserved.\n * For full license text, see the LICENSE.txt file\n */\nfunction bfs(start, predicate, getChildren) {\n const queue = [...start];\n const visited = /* @__PURE__ */ new Set([...start]);\n const matches2 = /* @__PURE__ */ new Set();\n while (queue.length) {\n const curr = queue.shift();\n if (predicate(curr)) {\n matches2.add(curr);\n }\n const children = getChildren(curr);\n for (const child of children) {\n if (!visited.has(child)) {\n visited.add(child);\n queue.push(child);\n }\n }\n }\n return matches2;\n}\nfunction lineFormatter(position, message, filePath) {\n return `${message} (${filePath}:${position.line}:${position.column})`;\n}\nclass DefaultFileParserLogger {\n constructor(services, filePath) {\n this.services = services;\n this.filePath = filePath;\n }\n trace(position, message) {\n this.services.logger.trace(this.format(position, message));\n }\n debug(position, message) {\n this.services.logger.debug(this.format(position, message));\n }\n info(position, message) {\n this.services.logger.info(this.format(position, message));\n }\n warn(position, message) {\n this.services.logger.warn(this.format(position, message));\n }\n error(position, message) {\n this.services.logger.error(this.format(position, message));\n }\n format(position, message) {\n return lineFormatter(position, message, this.filePath);\n }\n}\nfunction matches(test, s) {\n if (test === void 0) {\n return false;\n } else if (typeof test === \"string\") {\n return s === test;\n } else if (test instanceof RegExp) {\n return test.test(s);\n } else if (typeof test === \"function\") {\n return test(s);\n }\n return test.some((m) => matches(m, s));\n}\nfunction includes(incexc, s) {\n if (matches(incexc.exclude, s)) {\n return false;\n }\n if (matches(incexc.include, s)) {\n return true;\n }\n if (incexc.include) {\n return false;\n }\n return true;\n}\nconst { create, freeze, keys, entries } = Object;\nconst { hasOwnProperty } = Object.prototype;\nconst { isArray } = Array;\nconst { push, indexOf, slice } = Array.prototype;\nconst { stringify, parse } = JSON;\nconst WeakSetConstructor = WeakSet;\nconst LogLevelMap = {\n TRACE: 4,\n DEBUG: 3,\n INFO: 2,\n WARN: 1,\n ERROR: 0\n};\nclass ConsoleLogger {\n constructor(level = \"WARN\", printer = console.log, formatter = (level2, message) => `${level2}: ${message}`) {\n this.level = level;\n this.printer = printer;\n this.formatter = formatter;\n this.messages = [];\n }\n trace(message) {\n this.log(\"TRACE\", message);\n }\n debug(message) {\n this.log(\"DEBUG\", message);\n }\n info(message) {\n this.log(\"INFO\", message);\n }\n warn(message) {\n this.log(\"WARN\", message);\n }\n error(message) {\n this.log(\"ERROR\", message);\n }\n log(level, message) {\n if (LogLevelMap[level] > LogLevelMap[this.level]) {\n return;\n }\n this.printer(this.formatter(level, message));\n }\n}\nfunction loggerService(level, printer, formatter) {\n return new ConsoleLogger(level, printer, formatter);\n}\nclass Ok {\n constructor(value) {\n this.value = value;\n }\n isOk() {\n return true;\n }\n isErr() {\n return !this.isOk();\n }\n}\nclass Err {\n constructor(error) {\n this.error = error;\n }\n isOk() {\n return false;\n }\n isErr() {\n return !this.isOk();\n }\n}\nconst ok = (value) => new Ok(value);\nconst err = (err2) => new Err(err2);\nclass DataNotFoundError extends Error {\n constructor(message) {\n super(message);\n this.name = \"DataNotFoundError\";\n }\n}\nclass DataIncompleteError extends Error {\n constructor(message, partialData) {\n super(message);\n this.partialData = partialData;\n this.name = \"DataIncompleteError\";\n }\n}\nfunction isDataNotFoundError(error) {\n return error instanceof DataNotFoundError || error.name === \"DataNotFoundError\";\n}\nfunction isDataIncompleteError(error) {\n return error instanceof DataIncompleteError || error.name === \"DataIncompleteError\";\n}\nfunction isCacheHitOrError(value) {\n if (value.isErr() && (isDataIncompleteError(value.error) || isDataNotFoundError(value.error))) {\n return false;\n }\n return true;\n}\nfunction isCacheMiss(value) {\n return !isCacheHitOrError(value);\n}\nfunction isResult(value) {\n return value != null && typeof value === \"object\" && \"isOk\" in value && \"isErr\" in value && typeof value.isOk === \"function\" && typeof value.isErr === \"function\" && (value.isOk() === true && value.isErr() === false && \"value\" in value || value.isOk() === false && value.isErr() === true && \"error\" in value);\n}\nfunction setOverlaps(setA, setB) {\n for (const element of setA) {\n if (setB.has(element)) {\n return true;\n }\n }\n return false;\n}\nfunction setDifference(setA, setB) {\n const differenceSet = /* @__PURE__ */ new Set();\n for (const element of setA) {\n if (!setB.has(element)) {\n differenceSet.add(element);\n }\n }\n return differenceSet;\n}\nfunction addAllToSet(targetSet, sourceSet) {\n for (const element of sourceSet) {\n targetSet.add(element);\n }\n}\nconst toTypeScriptSafeIdentifier = (s) => s.length >= 1 ? s[0].replace(/[^$_\\p{ID_Start}]/u, \"_\") + s.slice(1).replace(/[^$\\u200c\\u200d\\p{ID_Continue}]/gu, \"_\") : \"\";\nfunction isSubscribable(obj) {\n return typeof obj === \"object\" && obj !== null && \"subscribe\" in obj && typeof obj.subscribe === \"function\" && \"refresh\" in obj && typeof obj.refresh === \"function\";\n}\nfunction isSubscribableResult(x) {\n if (!isResult(x)) {\n return false;\n }\n return isSubscribable(x.isOk() ? x.value : x.error);\n}\nfunction buildSubscribableResult(result, subscribe, refresh) {\n if (result.isOk()) {\n return ok({ data: result.value, subscribe, refresh });\n } else {\n return err({ failure: result.error, subscribe, refresh });\n }\n}\nfunction resolvedPromiseLike(result) {\n if (isPromiseLike(result)) {\n return result.then((nextResult) => nextResult);\n }\n return {\n then: (onFulfilled, _onRejected) => {\n try {\n return resolvedPromiseLike(onFulfilled(result));\n } catch (e) {\n if (onFulfilled === void 0) {\n return resolvedPromiseLike(result);\n }\n return rejectedPromiseLike(e);\n }\n }\n };\n}\nfunction rejectedPromiseLike(reason) {\n if (isPromiseLike(reason)) {\n return reason.then((nextResult) => nextResult);\n }\n return {\n then: (_onFulfilled, onRejected) => {\n if (typeof onRejected === \"function\") {\n try {\n return resolvedPromiseLike(onRejected(reason));\n } catch (e) {\n return rejectedPromiseLike(e);\n }\n }\n return rejectedPromiseLike(reason);\n }\n };\n}\nfunction isPromiseLike(x) {\n return typeof (x == null ? void 0 : x.then) === \"function\";\n}\nfunction racesync(values) {\n for (const value of values) {\n let settled = void 0;\n if (isPromiseLike(value)) {\n value.then(\n (_) => {\n settled = value;\n },\n (_) => {\n settled = value;\n }\n );\n } else {\n settled = resolvedPromiseLike(value);\n }\n if (settled !== void 0) {\n return settled;\n }\n }\n return Promise.race(values);\n}\nfunction withResolvers() {\n let resolve, reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\nfunction deepEquals(x, y) {\n if (x === void 0) {\n return y === void 0;\n } else if (x === null) {\n return y === null;\n } else if (y === null) {\n return x === null;\n } else if (isArray(x)) {\n if (!isArray(y) || x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; ++i) {\n if (!deepEquals(x[i], y[i])) {\n return false;\n }\n }\n return true;\n } else if (typeof x === \"object\") {\n if (typeof y !== \"object\") {\n return false;\n }\n const xkeys = Object.keys(x);\n const ykeys = Object.keys(y);\n if (xkeys.length !== ykeys.length) {\n return false;\n }\n for (let i = 0; i < xkeys.length; ++i) {\n const key = xkeys[i];\n if (!deepEquals(x[key], y[key])) {\n return false;\n }\n }\n return true;\n }\n return x === y;\n}\nfunction stableJSONStringify(node) {\n if (node && node.toJSON && typeof node.toJSON === \"function\") {\n node = node.toJSON();\n }\n if (node === void 0) {\n return;\n }\n if (typeof node === \"number\") {\n return isFinite(node) ? \"\" + node : \"null\";\n }\n if (typeof node !== \"object\") {\n return stringify(node);\n }\n let i;\n let out;\n if (isArray(node)) {\n out = \"[\";\n for (i = 0; i < node.length; i++) {\n if (i) {\n out += \",\";\n }\n out += stableJSONStringify(node[i]) || \"null\";\n }\n return out + \"]\";\n }\n if (node === null) {\n return \"null\";\n }\n const objKeys = keys(node).sort();\n out = \"\";\n for (i = 0; i < objKeys.length; i++) {\n const key = objKeys[i];\n const value = stableJSONStringify(node[key]);\n if (!value) {\n continue;\n }\n if (out) {\n out += \",\";\n }\n out += stringify(key) + \":\" + value;\n }\n return \"{\" + out + \"}\";\n}\nfunction toError(x) {\n if (x instanceof Error) {\n return x;\n }\n return new Error(typeof x === \"string\" ? x : JSON.stringify(x));\n}\nfunction deepCopy(x) {\n const stringified = stringify(x);\n return stringified ? parse(stringified) : void 0;\n}\nfunction readableStreamToAsyncIterable(stream) {\n if (stream.locked) {\n return err(new Error(\"ReadableStream is already locked\"));\n }\n if (Symbol.asyncIterator in stream) {\n return ok(stream);\n }\n const reader = stream.getReader();\n return ok({\n [Symbol.asyncIterator]: () => ({\n next: async () => {\n try {\n const result = await reader.read();\n if (result.done) {\n try {\n reader.releaseLock();\n } catch {\n }\n return { done: true, value: void 0 };\n }\n return {\n done: false,\n value: result.value\n };\n } catch (e) {\n try {\n reader.releaseLock();\n } catch {\n }\n throw e;\n }\n },\n return: async (value) => {\n try {\n await reader.cancel();\n } catch {\n }\n try {\n reader.releaseLock();\n } catch {\n }\n return { done: true, value };\n },\n throw: async (exception) => {\n try {\n await reader.cancel();\n } catch {\n }\n try {\n reader.releaseLock();\n } catch {\n }\n throw exception;\n }\n })\n });\n}\nfunction satisfies(provided, requested) {\n const providedN = provided.split(\".\").map((s) => parseInt(s));\n const requestedN = requested.split(\".\").map((s) => parseInt(s));\n return providedN[0] === requestedN[0] && providedN[1] >= requestedN[1];\n}\nfunction stringIsVersion(s) {\n const versionParts = s.split(\".\");\n return (versionParts.length === 2 || versionParts.length === 3) && versionParts.every((part) => part.match(/^\\d+$/));\n}\nvar HttpStatusCode = /* @__PURE__ */ ((HttpStatusCode2) => {\n HttpStatusCode2[HttpStatusCode2[\"Ok\"] = 200] = \"Ok\";\n HttpStatusCode2[HttpStatusCode2[\"Created\"] = 201] = \"Created\";\n HttpStatusCode2[HttpStatusCode2[\"NoContent\"] = 204] = \"NoContent\";\n HttpStatusCode2[HttpStatusCode2[\"NotModified\"] = 304] = \"NotModified\";\n HttpStatusCode2[HttpStatusCode2[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpStatusCode2[HttpStatusCode2[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpStatusCode2[HttpStatusCode2[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpStatusCode2[HttpStatusCode2[\"NotFound\"] = 404] = \"NotFound\";\n HttpStatusCode2[HttpStatusCode2[\"ServerError\"] = 500] = \"ServerError\";\n HttpStatusCode2[HttpStatusCode2[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n return HttpStatusCode2;\n})(HttpStatusCode || {});\nfunction getFetchResponseFromAuraError(err2) {\n if (err2.data !== void 0 && err2.data.statusCode !== void 0) {\n let data = {};\n data = err2.data;\n if (err2.id !== void 0) {\n data.id = err2.id;\n }\n return new FetchResponse(data.statusCode, data);\n }\n return new FetchResponse(500, {\n error: err2.message\n });\n}\nasync function coerceResponseToFetchResponse(response) {\n const { status } = response;\n const responseHeaders = {};\n response.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n let responseBody = null;\n if (status !== 204) {\n const contentType = responseHeaders[\"content-type\"];\n responseBody = contentType && contentType.startsWith(\"application/json\") ? await response.json() : await response.text();\n }\n return new FetchResponse(status, responseBody, responseHeaders);\n}\nfunction getStatusText(status) {\n switch (status) {\n case 200:\n return \"OK\";\n case 201:\n return \"Created\";\n case 304:\n return \"Not Modified\";\n case 400:\n return \"Bad Request\";\n case 404:\n return \"Not Found\";\n case 500:\n return \"Server Error\";\n default:\n return `Unexpected HTTP Status Code: ${status}`;\n }\n}\nclass FetchResponse extends Error {\n constructor(status, body, headers) {\n super();\n this.status = status;\n this.body = body;\n this.headers = headers || {};\n this.ok = status >= 200 && this.status <= 299;\n this.statusText = getStatusText(status);\n }\n}\nconst deeplyFrozen = new WeakSetConstructor();\nfunction deepFreeze(value) {\n if (typeof value !== \"object\" || value === null || deeplyFrozen.has(value)) {\n return;\n }\n deeplyFrozen.add(value);\n if (isArray(value)) {\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepFreeze(value[i]);\n }\n } else {\n const keys$1 = keys(value);\n for (let i = 0, len = keys$1.length; i < len; i += 1) {\n deepFreeze(value[keys$1[i]]);\n }\n }\n freeze(value);\n}\nfunction isScalar(value) {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value === null || value === void 0;\n}\nfunction isScalarObject(value) {\n return Object.values(value).every((value2) => isScalar(value2));\n}\nfunction isScalarArray(value) {\n return value.every((item) => isScalar(item));\n}\nfunction encodeQueryParam(paramName, value, explode) {\n switch (typeof value) {\n case \"string\":\n return [`${paramName}=${encodeURIComponent(value)}`];\n case \"number\":\n case \"boolean\":\n return [`${paramName}=${value}`];\n case \"object\":\n if (value === null) {\n return [];\n }\n if (isArray(value)) {\n if (!isScalarArray(value)) {\n throw new Error(`Unsupported non-scalar array type for ${paramName}`);\n }\n if (explode) {\n return value.map(\n (item) => `${paramName}=${item ? encodeURIComponent(item) : item}`\n );\n }\n return [\n `${paramName}=${value.map((item) => item ? encodeURIComponent(item) : item).join(\",\")}`\n ];\n }\n if (!isScalarObject(value)) {\n throw new Error(`Unsupported non-scalar object type for ${paramName}`);\n }\n if (explode) {\n return entries(value).map(\n ([key, value2]) => `${key}=${value2 ? encodeURIComponent(value2) : value2}`\n );\n }\n return [\n `${paramName}=${entries(value).flat().map((item) => item ? encodeURIComponent(item) : item).join(\",\")}`\n ];\n default:\n return [];\n }\n}\nclass InternalError extends Error {\n constructor(data) {\n super();\n this.data = data;\n this.type = \"internal\";\n }\n}\nclass UserVisibleError extends Error {\n constructor(data) {\n super();\n this.data = data;\n this.type = \"user-visible\";\n }\n}\nfunction applyDecorators(baseCommand, decorators, options) {\n if (!decorators || decorators.length === 0) {\n return baseCommand;\n }\n return decorators.reduce((command, decorator) => decorator(command, options), baseCommand);\n}\nexport {\n isArray as ArrayIsArray,\n indexOf as ArrayPrototypeIndexOf,\n push as ArrayPrototypePush,\n slice as ArrayPrototypeSlice,\n ConsoleLogger,\n DataIncompleteError,\n DataNotFoundError,\n DefaultFileParserLogger,\n Err,\n FetchResponse,\n HttpStatusCode,\n InternalError,\n parse as JSONParse,\n stringify as JSONStringify,\n LogLevelMap,\n create as ObjectCreate,\n entries as ObjectEntries,\n freeze as ObjectFreeze,\n keys as ObjectKeys,\n hasOwnProperty as ObjectPrototypeHasOwnProperty,\n Ok,\n UserVisibleError,\n WeakSetConstructor,\n addAllToSet,\n applyDecorators,\n bfs,\n buildSubscribableResult,\n coerceResponseToFetchResponse,\n deepCopy,\n deepEquals,\n deepFreeze,\n encodeQueryParam,\n err,\n getFetchResponseFromAuraError,\n includes,\n isCacheHitOrError,\n isCacheMiss,\n isDataIncompleteError,\n isDataNotFoundError,\n isPromiseLike,\n isResult,\n isSubscribable,\n isSubscribableResult,\n lineFormatter,\n loggerService,\n ok,\n racesync,\n readableStreamToAsyncIterable,\n rejectedPromiseLike,\n resolvedPromiseLike,\n satisfies,\n setDifference,\n setOverlaps,\n stableJSONStringify,\n stringIsVersion,\n toError,\n toTypeScriptSafeIdentifier,\n withResolvers\n};\n//# sourceMappingURL=index.js.map\n","import {\n AllOfType,\n AnyType,\n ArrayType,\n BooleanType,\n DateTimeOnlyType,\n DateTimeType,\n DateType,\n DiscriminatedObjectType,\n DoubleType,\n EnumType,\n IdentifiableType,\n IntegerType,\n NilType,\n NotType,\n NumberType,\n ObjectType,\n OneOf,\n RefType,\n ScalarType,\n StringType,\n TimeType,\n Type,\n} from './Type';\n\nexport function isRefType(type: Type): type is RefType {\n return type.type === 'ref';\n}\n\nexport function isNilType(type: Type): type is NilType {\n return type.type === 'nil';\n}\n\nexport function isBooleanType(type: Type): type is BooleanType {\n return type.type === 'boolean';\n}\n\nexport function isDoubleType(type: Type): type is DoubleType {\n return type.type === 'double';\n}\n\nexport function isIntegerType(type: Type): type is IntegerType {\n return type.type === 'integer';\n}\n\nexport function isNumberType(type: Type): type is NumberType {\n return type.type === 'number';\n}\n\nexport function isStringType(type: Type): type is StringType {\n return type.type === 'string';\n}\n\nexport function isDateType(type: Type): type is DateType {\n return type.type === 'date';\n}\n\nexport function isTimeType(type: Type): type is TimeType {\n return type.type === 'time';\n}\n\nexport function isDateTimeOnlyType(type: Type): type is DateTimeOnlyType {\n return type.type === 'datetime-only';\n}\n\nexport function isDateTimeType(type: Type): type is DateTimeType {\n return type.type === 'datetime';\n}\n\nexport function isEnumType(type: Type): type is EnumType {\n return type.type === 'enum';\n}\n\nexport function isObjectType(type: Type): type is ObjectType {\n return type.type === 'object';\n}\n\nexport function isDiscriminatedObjectType(type: Type): type is DiscriminatedObjectType {\n return type.type === 'discriminatedObject';\n}\n\nexport function isArrayType(type: Type): type is ArrayType {\n return type.type === 'array';\n}\n\nexport function isOneOfType(type: Type): type is OneOf {\n return type.type === 'oneOf';\n}\n\nexport function isAllOfType(type: Type): type is AllOfType {\n return type.type === 'allOf';\n}\n\nexport function isAnyType(type: Type): type is AnyType {\n return type.type === 'any';\n}\n\nexport function isNotType(type: Type): type is NotType {\n return type.type === 'not';\n}\n\nexport function isScalar(type: Type): type is ScalarType {\n return (\n [\n 'boolean',\n 'double',\n 'integer',\n 'number',\n 'string',\n 'date',\n 'time',\n 'datetime-only',\n 'datetime',\n ] satisfies Array<ScalarType['type']>\n ).includes(type.type as any);\n}\n\nconst canonicalStringTypes = new Set([\n 'string',\n 'date',\n 'time',\n 'datetime-only',\n 'datetime',\n] as const);\nexport function isCanonicalStringType(\n type: Type\n): type is Type & { type: 'string' | 'date' | 'time' | 'datetime-only' | 'datetime' } {\n return canonicalStringTypes.has(type.type as any);\n}\n\nconst canonicalNumberTypes = new Set(['double', 'integer', 'number'] as const);\nexport function isCanonicalNumberType(type: Type) {\n return canonicalNumberTypes.has(type.type as any);\n}\n\nexport function isIdentifiableType(type: Type): type is IdentifiableType {\n return type.extensions?.type === 'identifiable';\n}\n\nexport function canonicalizeType(type: Type): Type {\n let canonicalType = type;\n while (canonicalType.type === 'ref') {\n canonicalType = canonicalType.$ref;\n }\n\n return canonicalType;\n}\n","import { ok } from '@conduit-client/utils';\nimport { isRefType } from '../../utils';\nimport { type Validator } from '../../../validation';\nimport type { Type } from '../../Type';\nimport { KeySourcesValidator } from './KeySourcesValidator';\n\n/**\n * Validates that the fields in a key are valid.\n */\nexport class KeyFieldReferenceValidator implements Validator<Type, Type> {\n constructor(private keySourcesValidatorSupplier: (sources: string[]) => KeySourcesValidator) {}\n\n validate(type: Type) {\n if (\n !isRefType(type) &&\n type.extensions?.type === 'identifiable' &&\n type.extensions.key !== undefined\n ) {\n const sources = Object.values(type.extensions.key.fields);\n return this.keySourcesValidatorSupplier(sources).validate(type);\n }\n\n return ok([]);\n }\n}\n","import { err, ok, type Result } from '@conduit-client/utils';\n\nexport enum ValidationType {\n Api = 'api',\n Type = 'type',\n Operation = 'operation',\n EndPoint = 'endpoint',\n}\n\nexport enum ValidationSeverity {\n Info = 'info',\n Warning = 'warn',\n Error = 'error',\n}\n\nexport type ValidationMessage<T> = {\n validationType: ValidationType;\n subject: T;\n severity: ValidationSeverity;\n message: string;\n subValidationMessages?: ValidationMessage<T>[];\n};\n\nexport type ValidationResult<T> = Result<ValidationMessage<T>[], ValidationMessage<T>[]>;\n\nexport interface Validator<Subject, MessageSource> {\n validate(subject: Subject): ValidationResult<MessageSource>;\n}\n\nexport function combineValidationResults<T>(results: ValidationResult<T>[]): ValidationResult<T> {\n const isValid = results.every((r) => r.isOk());\n const messages = results.map((r) => (r.isOk() ? r.value : r.error)).flat();\n\n return isValid ? ok(messages) : err(messages);\n}\n\n/**\n * Composes multiple validators into a single validator whose result is the\n * combination of all individual validation results.\n */\nexport function compose<T, R>(validators: Validator<T, R>[]): Validator<T, R> {\n return {\n validate(subject: T) {\n const results = validators.map((v) => v.validate(subject));\n\n return combineValidationResults(results);\n },\n };\n}\n","import { err, ok } from '@conduit-client/utils';\nimport { ValidationType, ValidationSeverity } from '../../validation';\nimport type { ValidationMessage, ValidationResult, Validator } from '../../validation';\nimport type { Type } from '../Type';\n\nexport function getFormattedMessage(\n subject: Type,\n message: string,\n severity: ValidationSeverity = ValidationSeverity.Error\n): ValidationMessage<Type> {\n return {\n validationType: ValidationType.Type,\n subject,\n severity,\n message,\n };\n}\n","import { err, ok } from '@conduit-client/utils';\nimport {\n isAllOfType,\n isDiscriminatedObjectType,\n isObjectType,\n isOneOfType,\n isRefType,\n} from '../../utils';\nimport { getFormattedMessage } from '../common';\nimport type { ValidationMessage, Validator } from '../../../validation';\nimport type { Type } from '../../Type';\nimport type { ReadOnlyTypeRegistry } from '../../TypeRegistry';\n\n/**\n * Validates that a given type does not include a `key` annotation in unsupported types,\n * such as scalar or array types.\n */\nexport class KeyIsDefinedInSupportedTypeValidator implements Validator<Type, Type> {\n public constructor(private typeRegistry: ReadOnlyTypeRegistry) {}\n\n /**\n * Validates the specified type to ensure the `key` annotation is not defined on scalar\n * or array types. Returns a validation result indicating if the type is valid and any\n * error messages if it is not.\n *\n * @param type - The type to validate.\n * @returns A `ValidationResult<Type>` object containing the validation outcome and any error messages.\n */\n validate(type: Type) {\n const messages: ValidationMessage<Type>[] = [];\n\n if (\n !isRefType(type) &&\n type.extensions?.type === 'identifiable' &&\n type.extensions.key !== undefined\n ) {\n const isValidTypeForKeyExtension =\n isObjectType(type) ||\n isOneOfType(type) ||\n isAllOfType(type) ||\n isDiscriminatedObjectType(type);\n\n if (!isValidTypeForKeyExtension) {\n messages.push(\n getFormattedMessage(\n type,\n `Key can't be defined in a scalar or array types. Defined in \"${this.typeRegistry.nameOf(type)}\" with type \"${type.type}\"`\n )\n );\n }\n }\n\n return messages.length === 0 ? ok(messages) : err(messages);\n }\n}\n","import {\n combineValidationResults,\n ValidationMessage,\n ValidationResult,\n Validator,\n} from '../../../validation';\nimport type { AllOfType, DiscriminatedObjectType, ObjectType, OneOf, Type } from '../../Type';\nimport {\n isAllOfType,\n isDiscriminatedObjectType,\n isEnumType,\n isNilType,\n isObjectType,\n isOneOfType,\n isRefType,\n isScalar,\n} from '../../utils';\nimport { getFormattedMessage } from '../common';\nimport { err, ok } from '@conduit-client/utils';\nimport { ReadOnlyTypeRegistry } from '../../TypeRegistry';\n\ntype Enforcer = {\n initial: boolean;\n reducer: (acc: boolean, curr: boolean) => boolean;\n};\nconst ENFORCE_ALL = {\n initial: true,\n reducer: (result: boolean, value: boolean) => result && value,\n};\nconst ENFORCE_SOME = {\n initial: false,\n reducer: (result: boolean, value: boolean) => result || value,\n};\n\n/**\n * Determines if the given type is usable as a key.\n *\n * @param type The type to check for key-usability.\n * @param seenTypes A set of seen types from prior recurses.\n * @returns True if the type is usable as a key, false otherwise.\n */\nfunction isTypeUsableAsKey(type: Type, seenTypes: Set<Type> = new Set()): boolean {\n if (seenTypes.has(type)) {\n return false;\n }\n\n seenTypes.add(type);\n\n let result: boolean;\n\n if (isOneOfType(type)) {\n result = type.oneOf.every((t) => isTypeUsableAsKey(t, seenTypes));\n } else if (isRefType(type)) {\n result = isTypeUsableAsKey(type.$ref, seenTypes);\n } else if (isAllOfType(type)) {\n // In theory, you could do string & number, and this validation will return true,\n // however, this would be type never. This check is to allow specifications, ex: string & enum.\n result = type.allOf.every((t) => isTypeUsableAsKey(t, seenTypes));\n } else {\n result = isScalar(type) || isEnumType(type) || isNilType(type);\n }\n\n // after evaluating the type, we should remove it, as it could be analyzed\n // as part of oneOf, allOf multiple times\n seenTypes.delete(type);\n\n return result;\n}\n\nfunction isNullableType(type: Type): boolean {\n const concreteType = getConcreteTypeFromRef(type);\n\n if (isNilType(concreteType)) {\n return true;\n } else if (isOneOfType(concreteType)) {\n return concreteType.oneOf.some(isNullableType);\n } else if (isAllOfType(concreteType)) {\n // if it is an allOf, all of them must be non-nullable, otherwise the result type will\n // be never (except Any & nullable)\n return concreteType.allOf.some(isNullableType);\n }\n\n // all other types are non nullable (or never, ex foo & null), because nullables are represented as oneOf(type, nil)\n return false;\n}\n\n/**\n * This method will follow the refs and return the first type that is not a reference.\n *\n * Note: no need to check for loops as amf takes care of the loops and mark them as TypeAny\n *\n * @param type\n * @returns type\n */\nfunction getConcreteTypeFromRef(type: Type): Type {\n let concreteType: Type = type;\n\n while (isRefType(concreteType)) {\n concreteType = concreteType.$ref;\n }\n\n return concreteType;\n}\n\n/**\n * Validates that sources used by a types key are valid\n */\nexport class KeySourcesValidator implements Validator<Type, Type> {\n constructor(\n private types: ReadOnlyTypeRegistry,\n private sources: string[]\n ) {}\n\n validate(type: Type) {\n return combineValidationResults(\n this.sources.map((source) => this.isValidFieldKeyForType(type, source))\n );\n }\n\n private getNameOf(type: Type) {\n return this.types.nameOf(type) ?? 'anonymous';\n }\n\n private isValidFieldKeyForType(type: Type, field: string): ValidationResult<Type> {\n let result = true;\n const messages: ValidationMessage<Type>[] = [];\n\n if (isOneOfType(type)) {\n return this.validateFieldInOneOfType(type, field);\n } else if (isAllOfType(type)) {\n return this.validateFieldInAllOfType(type, field);\n } else if (isDiscriminatedObjectType(type)) {\n return this.validateFieldForDiscriminatedObjectType(type, field);\n } else if (isObjectType(type)) {\n return this.validateFieldForObjectType(type, field);\n } else if (isRefType(type)) {\n return this.isValidFieldKeyForType(type.$ref, field);\n } else if (!isTypeUsableAsKey(type)) {\n result = false;\n messages.push(\n getFormattedMessage(\n type,\n `Key-field \"${field}\" must be scalar, found type \"${this.getNameOf(type)}\".`\n )\n );\n }\n // else {\n // this branch of the code should only be reachable on isValidfieldKeyForType(scalarLike, 'field') (first call)\n // and it is the same validation covered by KeyIsDefinedInSupportedType (a scalar with key annotation); which is convinent to not evaluate / return false\n // because the oneOf and allOf validations depends on this function returning true (object(foo: oneOf(scalar,scalar))).\n // }\n\n return result ? ok(messages) : err(messages);\n }\n\n private validateFieldInOneOfType(type: OneOf, field: string): ValidationResult<Type> {\n // Check for nullable identifiable pattern and provide specific error message\n if (this.isNullableIdentifiablePattern(type)) {\n const typeName = this.getNameOf(type);\n return err([\n getFormattedMessage(\n type,\n `Identifiable type \"${typeName}\" cannot be nullable. Key field \"${field}\" cannot be present in null values. Instead, make the field referencing this type nullable in the parent object.`\n ),\n ]);\n }\n\n return this.validateFieldInSubTypes(\n type,\n type.oneOf,\n field,\n ENFORCE_ALL,\n `Key-fields defined in one-of types must be present in all of the nested types. Field \"${field}\" is missing or invalid for \"${this.getNameOf(type)}\" type.`\n );\n }\n\n private validateFieldInAllOfType(type: AllOfType, field: string): ValidationResult<Type> {\n return this.validateFieldInSubTypes(\n type,\n type.allOf,\n field,\n ENFORCE_SOME,\n `Key-fields defined in all-of types must at least be present in one of the nested types. Field \"${field}\" is missing or invalid in \"${this.getNameOf(type)}\".`\n );\n }\n\n private validateFieldForDiscriminatedObjectType(\n type: DiscriminatedObjectType,\n field: string\n ): ValidationResult<Type> {\n // only need the first segment of any pathing to determine if we validate as an object via its properties or every discriminated oneOf\n const [propName] = field.split('.');\n\n if (type.baseType.properties[propName] !== undefined) {\n // discriminator can't be used as a key\n if (type.discriminator === propName) {\n return err([\n getFormattedMessage(\n type,\n `Key-field \"${field}\" is invalid for type \"${this.getNameOf(type)}\": discriminator field can't be used as a key.`\n ),\n ]);\n }\n\n // explicit property of the object aspect of the type so validate as an object\n const result = this.validateFieldForObjectType(type.baseType, field);\n if (result.isErr()) {\n // massage object type messaging into that of discriminated type\n result.error[0].message = `Key-field \"${field}\" is invalid for \"${this.getNameOf(type)}\" type.`;\n }\n\n return result;\n } else {\n // make sure key is present on all the mapped types\n return this.validateFieldInSubTypes(\n type,\n Object.values(type.mapping),\n field,\n ENFORCE_ALL,\n `Key-fields defined in discriminated types must be present in all one-of types. Field \"${field}\" is missing or invalid for \"${this.getNameOf(type)}\".`\n );\n }\n }\n\n private validateFieldInSubTypes(\n type: Type,\n nestedTypes: Type[],\n field: string,\n enforcer: Enforcer,\n invalidMessage: string\n ) {\n // gather messages and determine final result of validating field for all types\n let result = enforcer.initial;\n const typeMessages: ValidationMessage<Type>[] = [];\n for (const t of nestedTypes) {\n const validationResult = this.isValidFieldKeyForType(t, field);\n result = enforcer.reducer(result, validationResult.isOk());\n typeMessages.push(\n ...(validationResult.isOk() ? validationResult.value : validationResult.error)\n );\n }\n\n // create messaging for validation state\n const messages: ValidationMessage<Type>[] = [];\n if (!result) {\n const message = getFormattedMessage(type, invalidMessage);\n message.subValidationMessages = typeMessages;\n messages.push(message);\n }\n\n // return appropriate validation state\n return result ? ok(messages) : err(messages);\n }\n\n private validateFieldForObjectType(type: ObjectType, field: string): ValidationResult<Type> {\n let result = true;\n const messages: ValidationMessage<Type>[] = [];\n\n const [propName, ...accessors] = field.split('.');\n\n const prop = type.properties[propName];\n\n if (prop === undefined) {\n result = false;\n\n messages.push(\n getFormattedMessage(\n type,\n `Key-field \"${field}\" is missing in \"${this.getNameOf(type)}\" type.`\n )\n );\n } else if (!prop.required) {\n result = false;\n\n messages.push(\n getFormattedMessage(\n type,\n `Key-field \"${field}\" must be a required field in \"${this.getNameOf(type)}\" type.`\n )\n );\n } else if (accessors.length > 0) {\n const accessorValidation = this.validateAccessors(prop.type, propName, accessors);\n\n if (accessorValidation.isErr()) {\n const tValidationMessage = getFormattedMessage(\n type,\n `Key-field \"${field}\" is invalid for \"${this.getNameOf(type)}\" type.`\n );\n tValidationMessage.subValidationMessages = accessorValidation.error;\n\n messages.push(tValidationMessage);\n\n return err(messages);\n }\n } else {\n // prop exist, it is a required prop and the last accessed one:\n // 1. Check the type is a \"scalar like\" that can be used as a key (ex: string | undefined).\n\n if (!isTypeUsableAsKey(prop.type)) {\n // all that is left is to validate this type, but it is complicated:\n // the property must be scalar, but a scalar could be: string | nil,\n // maybe another type which is oneOf, like string | number, now, none of those can be any, or object.\n // abstracted in isTypeUsableAsKey\n\n // Note: we could do isValidFieldKeyForType(prop.type, field, tr) but:\n // 1. We would have lost the good message.\n // 2. Will be relying in internals isValidFieldKeyForType (that scalar type \"annotated\" with field returns true, which is convenient).\n result = false;\n\n messages.push(\n getFormattedMessage(\n type,\n `Key-field \"${field}\" for type \"${this.getNameOf(type)}\": field key must reference a scalar field.`\n )\n );\n }\n }\n\n return result ? ok(messages) : err(messages);\n }\n\n private validateAccessors(\n type: Type,\n propName: string,\n accessors: string[]\n ): ValidationResult<Type> {\n // we need to follow all the references to validate the accessors.\n const concreteType = getConcreteTypeFromRef(type);\n\n if (\n isOneOfType(concreteType) ||\n isAllOfType(concreteType) ||\n isDiscriminatedObjectType(concreteType) ||\n isObjectType(concreteType)\n // isRefType(concreteType), covered above.\n ) {\n if (isNullableType(concreteType)) {\n return err([\n getFormattedMessage(\n concreteType,\n `Prop \"${propName}\" is nullable in \"${this.getNameOf(concreteType)}\" type.`\n ),\n ]);\n }\n\n // we need to validate the referenced type.\n return this.isValidFieldKeyForType(concreteType, accessors.join('.'));\n }\n\n // The accessed property, must be: oneOf, allOf, object and refs,\n // as those are the only types that can contain properties referenced as key\n const joinedAccessors = accessors.join('.');\n return err([\n getFormattedMessage(\n type,\n `Key-field \"${propName}.${joinedAccessors}\" is an invalid reference for type \"${this.getNameOf(concreteType)}\": \"${joinedAccessors}\" can't be referenced on \"${propName}\".`\n ),\n ]);\n }\n\n /**\n * Detects the nullable identifiable pattern: a oneOf type with exactly\n * two members (object + null) where the type has identifiable extensions.\n */\n private isNullableIdentifiablePattern(type: OneOf): boolean {\n if (type.oneOf.length !== 2) {\n return false;\n }\n\n const hasNullMember = type.oneOf.some((member) => isNilType(member));\n const hasObjectMember = type.oneOf.some((member) => isObjectType(member));\n\n return hasNullMember && hasObjectMember && type.extensions?.type === 'identifiable';\n }\n}\n","import {\n KeyIsDefinedInSupportedTypeValidator,\n KeyFieldReferenceValidator,\n KeySourcesValidator,\n} from './extensions';\nimport { compose, type Validator } from '../../validation';\nimport type { Type } from '../Type';\nimport type { ReadOnlyTypeRegistry } from '../TypeRegistry';\n\nexport function buildTypeValidator(types: ReadOnlyTypeRegistry): Validator<Type, Type> {\n return compose([\n new KeyIsDefinedInSupportedTypeValidator(types),\n new KeyFieldReferenceValidator(\n (sources: string[]) => new KeySourcesValidator(types, sources)\n ),\n ]);\n}\n","import { AllOfType, DiscriminatedObjectType, EnumType, ObjectType, OneOf, Type } from './Type';\nimport {\n isAllOfType,\n isAnyType,\n isArrayType,\n isDiscriminatedObjectType,\n isEnumType,\n isNilType,\n isNotType,\n isObjectType,\n isOneOfType,\n isRefType,\n isScalar,\n} from './utils';\n\nexport function typesEqual(a: Type, b: Type): boolean {\n if (a === b) {\n return true;\n }\n\n if (isScalar(a) && isScalar(b)) {\n return a.type === b.type;\n }\n\n if (isNilType(a) && isNilType(b)) {\n return true;\n }\n\n if (isRefType(a) && isRefType(b)) {\n return typesEqual(a.$ref, b.$ref);\n }\n\n if (isEnumType(a) && isEnumType(b)) {\n return enumsEqual(a, b);\n }\n\n if (isObjectType(a) && isObjectType(b)) {\n return objectsEqual(a, b);\n }\n\n if (isDiscriminatedObjectType(a) && isDiscriminatedObjectType(b)) {\n return discriminatedObjectsEqual(a, b);\n }\n\n if (isArrayType(a) && isArrayType(b)) {\n return typesEqual(a.items, b.items);\n }\n\n if (isOneOfType(a) && isOneOfType(b)) {\n return oneOfsEqual(a, b);\n }\n\n if (isAllOfType(a) && isAllOfType(b)) {\n return allOfsEqual(a, b);\n }\n\n if (isAnyType(a) && isAnyType(b)) {\n return true;\n }\n\n if (isNotType(a) && isNotType(b)) {\n return typesEqual(a.not, b.not);\n }\n\n return false;\n}\n\nfunction enumsEqual(a: EnumType, b: EnumType) {\n return areSetsEqual(new Set(a.values), new Set(b.values));\n}\n\nfunction objectsEqual(a: ObjectType, b: ObjectType): boolean {\n const aProps = a.properties;\n const bProps = b.properties;\n\n if (Object.keys(aProps).length !== Object.keys(bProps).length) {\n return false;\n }\n\n const propsEqual = Object.entries(aProps).every(([propName, aProp]) => {\n const bProp = bProps[propName];\n\n if (aProp.required !== bProp.required) {\n return false;\n }\n\n return typesEqual(aProp.type, bProp.type);\n });\n\n if (!propsEqual) {\n return false;\n }\n\n return typesEqual(a.additionalProperties, b.additionalProperties);\n}\n\nfunction discriminatedObjectsEqual(\n a: DiscriminatedObjectType,\n b: DiscriminatedObjectType\n): boolean {\n return (\n typesEqual(a.baseType, b.baseType) &&\n a.discriminator === b.discriminator &&\n Object.keys(a.mapping).length === Object.keys(b.mapping).length &&\n Object.entries(a.mapping).every(([discriminatorValue, aDiscriminatedType]) => {\n const bDiscriminatedType = b.mapping[discriminatorValue];\n if (bDiscriminatedType === undefined) {\n return false;\n }\n\n return typesEqual(aDiscriminatedType, bDiscriminatedType);\n })\n );\n}\n\nfunction oneOfsEqual(a: OneOf, b: OneOf): boolean {\n return areArraysSetLikeEqual(a.oneOf, b.oneOf, typesEqual);\n}\n\nfunction allOfsEqual(a: AllOfType, b: AllOfType): boolean {\n return areArraysSetLikeEqual(a.allOf, b.allOf, typesEqual);\n}\n\nfunction areSetsEqual(a: Set<unknown>, b: Set<unknown>) {\n return a.size === b.size && [...a].every((value) => b.has(value));\n}\n\nfunction areArraysSetLikeEqual<T>(a: T[], b: T[], equals: (x: T, y: T) => boolean) {\n if (a.length !== b.length) {\n return false;\n }\n\n let bRemaining = b;\n for (const aElement of a) {\n const bMatch = bRemaining.find((bElement) => equals(aElement, bElement));\n if (bMatch === undefined) {\n return false;\n }\n\n bRemaining = bRemaining.filter((el) => el !== bMatch);\n }\n\n return true;\n}\n","import { NormalizedOperation, Operation } from '../../endpoint';\nimport { ValidationMessage, ValidationSeverity, ValidationType } from '../../../validation';\n\nexport function isNormalizedOperation(operation: Operation): operation is NormalizedOperation {\n return operation.cacheStrategy.type === 'normalized';\n}\n\nexport function getFormattedMessage<T = Operation>(\n subject: T,\n message: string,\n severity: ValidationSeverity = ValidationSeverity.Error\n): ValidationMessage<T> {\n return {\n validationType: ValidationType.Operation,\n subject,\n severity,\n message,\n };\n}\n","import { err, ok } from '@conduit-client/utils';\nimport {\n combineValidationResults,\n type ValidationMessage,\n type Validator,\n} from '../../../validation';\nimport { Operation, Parameter, QueryParameter, Request } from '../../endpoint';\nimport { Type } from '../../..';\nimport { isScalar } from '../../../types';\nimport { getFormattedMessage, isNormalizedOperation } from './utils';\nimport { BodyDataValidator } from './BodyDataValidator';\n\ntype KeyBySourceCollection = {\n path: string[];\n query: string[];\n body: string[];\n cookie: string[];\n header: string[];\n _extras: string[];\n};\n\n/**\n * Validates that the sources (i.e., the value) for all key entries are valid\n */\nexport class KeySourceValidator implements Validator<Operation, Operation | Type> {\n constructor(\n private bodyDataValidatorSupplier: (\n request: Request,\n sources: string[]\n ) => BodyDataValidator\n ) {}\n\n validate(operation: Operation) {\n // only applies to normalized operations\n if (!isNormalizedOperation(operation)) {\n return ok([]);\n }\n\n const key = operation.cacheStrategy.key;\n\n if (key === undefined) {\n return ok([]);\n }\n\n // it has a key defined, let's group it by source.\n const keysBySource = this.getKeysBySource(key);\n\n if (keysBySource._extras.length > 0) {\n // hard to come by, as the annotation parser validates this.\n return err([\n getFormattedMessage(\n operation,\n `Invalid keys for normalized operation ${operation.operationId ? `\"${operation.operationId}\"` : ``}: keys [${keysBySource._extras.join(',')}] are invalid.`\n ),\n ]);\n }\n\n const request = operation.requests[0];\n\n const uriParameters = {\n ...operation.endpoint.uriParameters,\n ...(request ? request.uriParameters : {}),\n };\n\n // validate uri parameters.\n const validationResults = [\n this.validateParameter(operation, uriParameters, keysBySource, 'path'),\n ];\n\n if (request !== undefined) {\n validationResults.push(\n this.validateParameter(operation, request.queryParameters, keysBySource, 'query'),\n this.validateParameter(operation, request.cookies, keysBySource, 'cookie'),\n this.validateParameter(operation, request.headers, keysBySource, 'header'),\n this.validateBody(\n operation,\n this.bodyDataValidatorSupplier(request, keysBySource.body)\n )\n );\n } else {\n validationResults.push(this.validateKeysWhenMissingRequest(keysBySource, operation));\n }\n\n return combineValidationResults(validationResults);\n }\n\n getKeysBySource(key: Record<string, string>): KeyBySourceCollection {\n const keysBySource: KeyBySourceCollection = {\n path: [],\n query: [],\n body: [],\n cookie: [],\n header: [],\n _extras: [],\n };\n\n for (const val of Object.values(key)) {\n const [source, ...accessedField] = val.split('.') as [\n keyof KeyBySourceCollection,\n ...string[],\n ];\n\n const paramSource = keysBySource[source];\n\n if (paramSource === undefined) {\n keysBySource._extras.push(val);\n } else {\n paramSource.push(accessedField.join('.'));\n }\n }\n\n return keysBySource;\n }\n\n validateParameter(\n operation: Operation,\n bag: Record<string, QueryParameter | Parameter>,\n keys: KeyBySourceCollection,\n source: keyof KeyBySourceCollection\n ) {\n let isValid = true;\n const messages: ValidationMessage<Operation | Type>[] = [];\n keys[source].forEach((k) => {\n const param = bag[k];\n if (!param) {\n isValid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Invalid operation ${operation.operationId ? `(${operation.operationId}) ` : ``}key: \"${source}.${k}\" is not valid for operation`\n )\n );\n } else if (!param.required) {\n isValid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Invalid operation ${operation.operationId ? `(${operation.operationId}) ` : ``}key \"${source}.${k}\": parameter ${k} is optional in ${source}.`\n )\n );\n } else if (!isScalar(param.type)) {\n isValid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Invalid operation ${operation.operationId ? `(${operation.operationId}) ` : ``}key \"${source}.${k}\": parameter ${k} is not a scalar type in ${source}.`\n )\n );\n }\n });\n\n return isValid ? ok(messages) : err(messages);\n }\n\n validateBody(operation: Operation, bodyDataValidator: BodyDataValidator) {\n const result = bodyDataValidator.validate(operation);\n if (!result.isOk()) {\n const message = getFormattedMessage<Operation | Type>(\n operation,\n `Normalized operation \"${operation.operationId}\" has body key errors.`\n );\n message.subValidationMessages = result.error;\n\n return err([message]);\n }\n\n return ok([]);\n }\n\n validateKeysWhenMissingRequest(keysBySource: KeyBySourceCollection, operation: Operation) {\n const requestKeys: (keyof KeyBySourceCollection)[] = ['query', 'cookie', 'header', 'body'];\n const invalidKeys = requestKeys.flatMap((key) =>\n keysBySource[key].map((path) => `${key}.${path}`)\n );\n\n if (invalidKeys.length === 0) {\n return ok([]);\n }\n\n return err([\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `\"${operation.operationId}\" ` : ``}keys reference a request, but none was found. Invalid keys: [${invalidKeys.join(', ')}]`\n ),\n ]);\n }\n}\n","import { err, ok } from '@conduit-client/utils';\nimport type { Operation } from '../../..';\nimport { Validator } from '../../../validation';\nimport { getFormattedMessage, isNormalizedOperation } from './utils';\n\n/**\n * Validates that normalized operations define a 200-level JSON response\n */\nexport class Response200Validator<T extends Operation = Operation>\n implements Validator<T, Operation>\n{\n validate(operation: T) {\n if (!isNormalizedOperation(operation)) {\n return ok([]);\n }\n\n // let's validate that there's at least one 200 response.\n const has200Response = operation.responses.some((response) => {\n return (\n response.statusCode.match(/2\\d\\d/) &&\n response.payloads.some((payload) => payload.mediaType === 'application/json')\n );\n });\n\n if (!has200Response) {\n return err([\n getFormattedMessage(\n operation,\n `Normalized operation ${operation.operationId ? `${operation.operationId} ` : ``}must have at least one application/json response type with a 2XX status code`\n ),\n ]);\n }\n\n return ok([]);\n }\n}\n","import { ValidationMessage, Validator } from '../../../validation';\nimport { Operation, type Response } from '../../endpoint';\nimport { type ReadOnlyTypeRegistry, Type } from '../../..';\nimport { getFormattedMessage } from './utils';\nimport { err, ok } from '@conduit-client/utils';\nimport { BodyDataValidator } from './BodyDataValidator';\n\n/**\n * Validates the configuration of 'invalidation'\n */\nexport class InvalidationValidator implements Validator<Operation, Operation | Type> {\n constructor(\n private types: ReadOnlyTypeRegistry,\n private bodyDataValidatorSupplier: (\n response: Response,\n sources: string[]\n ) => BodyDataValidator\n ) {}\n\n validate(operation: Operation) {\n let valid = true;\n const messages: ValidationMessage<Operation | Type>[] = [];\n\n operation.responses.forEach((response) => {\n if (response.invalidation === undefined) {\n return;\n }\n\n response.invalidation.forEach((invalidation) => {\n const ref = invalidation?.ref;\n const keyRecord = invalidation?.key;\n\n const typeName = this.parseTypeNameFromRef(ref);\n\n if (typeName === '') {\n valid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: ref value ${ref} is not valid, it must be like '#/components/schemas/Post'`\n )\n );\n return;\n }\n\n // To-do: When inline unidentifiable types are supported, we should log an error when we encounter a type\n // that has a property to an unidentifiable type\n\n const type = this.types.get(typeName);\n if (type === undefined) {\n valid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: ref type '${ref}' does not exist in TypeRegistry`\n )\n );\n return;\n }\n\n Object.entries(keyRecord).forEach(([key, value]) => {\n const typeCacheKey = this.validateInvalidationTypeCacheKey(\n type,\n key,\n operation,\n response\n );\n if (typeCacheKey) {\n valid = false;\n messages.push(typeCacheKey);\n }\n\n const keyValue = this.validateInvalidationKeyValue(value, operation, response);\n if (keyValue) {\n valid = false;\n messages.push(keyValue);\n }\n });\n });\n });\n\n return valid ? ok([]) : err(messages);\n }\n\n /**\n * Returns the last parameter from a open api string ref.\n *\n * @param path - Fully qualified path: ex: '#/components/schemas/Post'\n * @returns string - the type name\n */\n private parseTypeNameFromRef(path: string): string {\n const regex = /^#\\/components\\/schemas\\/\\w+$/;\n\n if (regex.test(path)) {\n const split = path.split('/');\n return split[split.length - 1];\n } else {\n return '';\n }\n }\n\n /**\n * Validates that the defined key on the invalidation config is present as a key on the type.\n *\n * @param type - the AMFType\n * @param key - the key defined on the invalidation config\n * @param operation - the current operation\n * @param response - the response\n * @returns boolean - true if valid, false if invalid\n */\n private validateInvalidationTypeCacheKey(\n type: Type,\n key: string,\n operation: Operation,\n response: Response\n ) {\n // Validate that the key name is a valid property on the type cache key\n if (type.extensions?.type === 'identifiable' && !(key in type.extensions.key.fields)) {\n return getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: key \"${key}\" is not defined as cache key via x-onestore:key annotation on '${this.types.nameOf(type)}' type`\n );\n } else if (type.extensions?.type === 'unidentifiable') {\n return getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Type '${this.types.nameOf(type)}' is not identifiable and invalidation annotation cannot be used`\n );\n }\n\n return null;\n }\n\n /**\n * Validates that the key value on the invalidation config is valid.\n *\n * @param v - the value\n * @param operation - the operation\n * @param response - the response\n * @returns boolean - true if valid, false if invalid.\n */\n private validateInvalidationKeyValue(v: string, operation: Operation, response: Response) {\n // Validate that the key value is a valid uriParam/queryParam on the config\n // Note: server can have uriParameters, but did not add support for that. If needed we can revisit that.\n // https://github.com/salesforce-experience-platform-emu/onestore/pull/414#discussion_r1994313543\n const { uriParameters: endpointUriParameters } = operation.endpoint;\n\n // Combine endpoint and request parameters\n const request = operation.requests[0];\n const requestUriParameters = request?.uriParameters ?? {};\n const requestQueryParameters = request?.queryParameters ?? {};\n\n // Merge endpoint and request URI parameters, with request parameters taking precedence\n const allUriParameters = { ...endpointUriParameters, ...requestUriParameters };\n\n let [valuePrefix, ...vals] = v.split('.');\n const value = vals.join('.');\n\n if (valuePrefix === 'path') {\n if (allUriParameters[value] === undefined) {\n return getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: key value '${value}' is not defined as path parameter for endpoint or request`\n );\n }\n } else if (valuePrefix === 'query') {\n if (requestQueryParameters[value] === undefined) {\n return getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: key value '${value}' is not defined as query parameter for request`\n );\n }\n } else if (valuePrefix === 'body') {\n const result = this.bodyDataValidatorSupplier(response, [value]).validate(operation);\n if (result.isErr()) {\n return getFormattedMessage<Operation | Type>(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: key value '${value}' is not defined as body parameter for request`\n );\n }\n } else {\n // Validate that the key value prefix is either 'query' or 'path'\n return getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}${response.statusCode} Response: invalid invalidation key value prefix: '${valuePrefix}', allowed values are 'path', 'query', and 'body'`\n );\n }\n\n return null;\n }\n}\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === errorMap ? undefined : errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" &&\n (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nvar _ZodEnum_cache, _ZodNativeEnum_cache;\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n var _a, _b;\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message !== null && message !== void 0 ? message : ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: (_a = message !== null && message !== void 0 ? message : required_error) !== null && _a !== void 0 ? _a : ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: (_b = message !== null && message !== void 0 ? message : invalid_type_error) !== null && _b !== void 0 ? _b : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n var _a, _b;\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if ((_b = (_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n // let regex = `\\\\d{2}:\\\\d{2}:\\\\d{2}`;\n let regex = `([01]\\\\d|2[0-3]):[0-5]\\\\d:[0-5]\\\\d`;\n if (args.precision) {\n regex = `${regex}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n regex = `${regex}(\\\\.\\\\d+)?`;\n }\n return regex;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (!decoded.typ || !decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a, _b;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n local: (_b = options === null || options === void 0 ? void 0 : options.local) !== null && _b !== void 0 ? _b : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch (_a) {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodEnum_cache.set(this, void 0);\n }\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodEnum_cache, new Set(this._def.values), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodEnum_cache, \"f\").has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\n_ZodEnum_cache = new WeakMap();\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n constructor() {\n super(...arguments);\n _ZodNativeEnum_cache.set(this, void 0);\n }\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\")) {\n __classPrivateFieldSet(this, _ZodNativeEnum_cache, new Set(util.getValidEnumValues(this._def.values)), \"f\");\n }\n if (!__classPrivateFieldGet(this, _ZodNativeEnum_cache, \"f\").has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\n_ZodNativeEnum_cache = new WeakMap();\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result)\n ? result.then((data) => freeze(data))\n : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\nfunction custom(check, params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n}\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n datetimeRegex: datetimeRegex,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n ZodReadonly: ZodReadonly,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodReadonly, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, datetimeRegex, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","import type { z } from 'zod';\n\nexport function formatZodError(err: z.ZodError): string {\n const formattedIssues = err.issues.map((iss) => {\n if (iss.code === 'invalid_type') {\n return `Invalid type at path ${JSON.stringify(iss.path)}: Got ${iss.received}, expected ${iss.expected}`;\n }\n\n return `Issue at path ${JSON.stringify(iss.path)}: ${iss.message}`;\n });\n\n return `${formattedIssues.map((iss) => `- ${iss}`).join('\\n')}`;\n}\n","import amf from 'amf-client-js';\nimport type { ScalarType } from '../types';\n\nexport const STRING_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#string';\nexport const BOOLEAN_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#boolean';\nexport const INTEGER_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#integer';\nexport const LONG_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#long';\nexport const FLOAT_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#float';\nexport const DOUBLE_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#double';\nexport const NUMBER_DATA_TYPE = 'http://a.ml/vocabularies/shapes#number';\nexport const DATE_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#date';\nexport const TIME_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#time';\nexport const PASSWORD_DATA_TYPE = 'http://a.ml/vocabularies/shapes#password';\nexport const BYTE_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#byte';\nexport const BINARY_DATA_TYPE = 'http://www.w3.org/2001/XMLSchema#base64Binary';\nexport const DATETIME_ONLY_TYPE = 'http://a.ml/vocabularies/shapes#dateTimeOnly';\nexport const DATETIME_TYPE = 'http://www.w3.org/2001/XMLSchema#dateTime';\n\nexport const DATATYPE_TO_SCALAR_TYPE: Record<string, ScalarType['type']> = {\n [BOOLEAN_DATA_TYPE]: 'boolean',\n [DOUBLE_DATA_TYPE]: 'double',\n [FLOAT_DATA_TYPE]: 'number',\n [INTEGER_DATA_TYPE]: 'integer',\n [LONG_DATA_TYPE]: 'integer',\n [NUMBER_DATA_TYPE]: 'number',\n [STRING_DATA_TYPE]: 'string',\n [DATE_DATA_TYPE]: 'date',\n [TIME_DATA_TYPE]: 'time',\n [PASSWORD_DATA_TYPE]: 'string',\n [BYTE_DATA_TYPE]: 'string',\n [BINARY_DATA_TYPE]: 'string',\n [DATETIME_ONLY_TYPE]: 'datetime-only',\n [DATETIME_TYPE]: 'datetime',\n};\n\nexport function isDomainElement(maybeDomainElement: any): maybeDomainElement is amf.DomainElement {\n return typeof maybeDomainElement?.withId === 'function';\n}\n\nexport function isTypeShape(domainElement: amf.DomainElement): domainElement is amf.AnyShape {\n return domainElement instanceof amf.AnyShape;\n}\n\nexport function isAnyShape(domainElement: amf.DomainElement): domainElement is amf.AnyShape {\n return Object.getPrototypeOf(domainElement) === amf.AnyShape.prototype;\n}\n\nexport function isNilShape(shape: amf.Shape): shape is amf.NilShape {\n return shape instanceof amf.NilShape;\n}\n\nexport function isNodeShape(node: amf.Shape): node is amf.NodeShape {\n return node instanceof amf.NodeShape;\n}\n\nexport function isArrayShape(node: amf.Shape): node is amf.ArrayShape {\n return node instanceof amf.ArrayShape;\n}\n\nexport function isScalarShape(shape: amf.Shape): shape is amf.ScalarShape {\n return shape instanceof amf.ScalarShape;\n}\n\nexport function isRefShape(shape: amf.Shape): boolean {\n return shape.isLink;\n}\n\nexport function isStringScalarShape(shape: amf.ScalarShape): boolean {\n return shape.dataType.value() === STRING_DATA_TYPE;\n}\n\nexport function isAnyOfShape(shape: amf.Shape): boolean {\n return (shape.or || []).length > 0;\n}\n\nexport function isOneOfShape(shape: amf.Shape): shape is amf.UnionShape {\n const isAmfOneOfShape = shape instanceof amf.UnionShape;\n const hasOneOf = (shape.xone || []).length > 0;\n const isDiscriminatedObject = isNodeShape(shape) && !shape.discriminator.isNullOrEmpty;\n return isAmfOneOfShape || (hasOneOf && !isDiscriminatedObject);\n}\n\nexport function isAllOfShape(shape: amf.Shape): boolean {\n return (\n (shape.and || []).length > 0 ||\n (isOneOfShape(shape) && !(shape instanceof amf.UnionShape)) ||\n isEnumShape(shape)\n );\n}\n\nexport function isNotShape(shape: amf.Shape): boolean {\n return !!shape.not;\n}\n\nexport function isScalarNode(node: amf.DataNode): node is amf.ScalarNode {\n return node instanceof amf.ScalarNode;\n}\n\nexport function isEnumShape(shape: amf.Shape): boolean {\n return shape.values.length > 0;\n}\n\nexport function getEnumValuesFromShape<T extends string | number | boolean | null>(\n shape: amf.ScalarShape | amf.UnionShape | amf.NilShape\n): T[] {\n return shape.values.map((val) => extractScalarEnumValue(val, shape) as unknown as T);\n}\n\nfunction extractScalarEnumValue(node: amf.DataNode, parentShape: amf.Shape) {\n if (isScalarNode(node)) {\n const scalarType = DATATYPE_TO_SCALAR_TYPE[node.dataType.value()];\n switch (scalarType) {\n case 'datetime':\n return String(node.value.value());\n default:\n return coerceValueByType(node.value.value(), {\n type: scalarType,\n });\n }\n } else {\n throw new Error(\n `Invalid non-scalar enum value provided for shape ${parentShape.name.value()}`\n );\n }\n}\n\nexport function coerceValueByType<D extends string | any>(\n value: string,\n type: {\n type:\n | 'boolean'\n | 'double'\n | 'integer'\n | 'number'\n | 'string'\n | 'date'\n | 'time'\n | 'datetime-only';\n }\n): string | boolean | number | null | D {\n switch (type.type) {\n case 'string':\n return String(value);\n case 'boolean':\n return value === 'true';\n case 'number':\n case 'double':\n case 'integer':\n return Number(value);\n default:\n return value;\n }\n}\n","/* eslint no-redeclare: \"off\" */\nimport {\n BOOLEAN_DATA_TYPE,\n DOUBLE_DATA_TYPE,\n INTEGER_DATA_TYPE,\n NUMBER_DATA_TYPE,\n} from './amf-utils';\nimport type amf from 'amf-client-js';\n\n/**\n * Graph structure content related types.\n */\nconst DATA_SCALAR_PROPERTY_NAME = 'http://a.ml/vocabularies/data#Scalar';\nconst DATA_OBJECT_PROPERTY_NAME = 'http://a.ml/vocabularies/data#Object';\nconst DATA_ARRAY_PROPERTY_NAME = 'http://a.ml/vocabularies/data#Array';\n\nconst DATA_DATATYPE_PROPERTY_NAME = 'http://www.w3.org/ns/shacl#datatype';\nconst DATA_VALUE_PROPERTY_NAME = 'http://a.ml/vocabularies/data#value';\nconst NAME_PROPERTY_VALUE = 'http://a.ml/vocabularies/core#name';\n\nexport function extractExtensions(\n customDomainProperties: ReadonlyArray<amf.DomainExtension>\n): Record<string, unknown> {\n let extensions: Record<string, unknown> = {};\n (customDomainProperties || []).forEach((cdp) => {\n const name = cdp.name.value();\n const graph = cdp.extension.graph();\n\n extensions[name] = extractExtensionsFromGraph(graph);\n });\n return extensions;\n}\n\nfunction extractExtensionsFromGraph(graph: amf.Graph): unknown {\n if (isObject(graph)) {\n return buildExtensionsObject(graph);\n }\n\n if (isArray(graph)) {\n return buildExtensionsArray(graph);\n }\n\n if (isScalar(graph)) {\n return buildExtensionScalar(graph);\n }\n\n throw new Error(`Unsupported AMF graph type: ${graph.types()}`);\n}\n\nconst isScalar = (graph: amf.Graph) => graph.types().includes(DATA_SCALAR_PROPERTY_NAME);\nconst isObject = (graph: amf.Graph) => graph.types().includes(DATA_OBJECT_PROPERTY_NAME);\nconst isArray = (graph: amf.Graph) => graph.types().includes(DATA_ARRAY_PROPERTY_NAME);\n\n/**\n * Builds an Extensions object.\n */\nfunction buildExtensionsObject(graph: amf.Graph): Record<string, unknown> {\n let extensions: Record<string, unknown> = {};\n graph\n .properties()\n .filter((prop) => prop !== NAME_PROPERTY_VALUE)\n .forEach((fullname) => {\n const name = fullname.split('#')[1];\n const propGraph = graph.getObjectByProperty(fullname)[0].graph();\n\n extensions[name] = extractExtensionsFromGraph(propGraph);\n });\n return extensions;\n}\n\nfunction buildExtensionsArray(graph: amf.Graph): Array<unknown> {\n const propertyUri = 'http://www.w3.org/2000/01/rdf-schema#member';\n return graph\n .getObjectByProperty(propertyUri)\n .map((item: any) => extractExtensionsFromGraph(item.graph()));\n}\n\n/**\n * Builds an ExtensionProperty item from its detail graph structure.\n */\nfunction buildExtensionScalar(graph: amf.Graph): unknown {\n const rawType = graph.scalarByProperty(DATA_DATATYPE_PROPERTY_NAME)[0];\n const rawValue = graph.scalarByProperty(DATA_VALUE_PROPERTY_NAME)[0];\n\n const value = [DOUBLE_DATA_TYPE, INTEGER_DATA_TYPE, NUMBER_DATA_TYPE].includes(rawType)\n ? Number(rawValue)\n : rawType === BOOLEAN_DATA_TYPE\n ? rawValue === 'true'\n : String(rawValue);\n\n return value;\n}\n","import { z } from 'zod';\nimport { CacheStrategy } from '../..';\n\nexport const cacheControl = z.discriminatedUnion('type', [\n z\n .object({\n type: z.literal('max-age'),\n 'max-age': z.number().nonnegative(),\n 'stale-while-revalidate': z.number().nonnegative().optional(),\n })\n .strict(),\n z.object({\n type: z.literal('no-cache'),\n }),\n]);\n\nexport const resourceCacheControl = z\n .object({\n 'max-age': z.number().nonnegative(),\n 'stale-while-revalidate': z.number().nonnegative().optional(),\n })\n .strict();\n\nconst ALLOWED_SOURCES_FOR_KEY = ['path', 'query', 'body', 'cookie', 'header'];\nconst allowedFieldPrefixes = ALLOWED_SOURCES_FOR_KEY.map((s) => s + '.');\n\nexport const operationCacheStrategy = function (\n defaultCacheStrategyType?: Pick<CacheStrategy, 'type'>\n) {\n return z.preprocess(\n (data) => {\n if (typeof data === 'object' && data !== null && defaultCacheStrategyType) {\n const objData = data as Record<string, unknown>;\n return {\n type: objData.type ? objData.type : defaultCacheStrategyType.type,\n ...objData,\n };\n } else if ((data === null || data === undefined) && defaultCacheStrategyType) {\n return {\n type: defaultCacheStrategyType.type,\n };\n }\n // If not an object or undefined, or no default, just do nothing.\n return data;\n },\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('none') }).strict(),\n z\n .object({\n type: z.literal('resource'),\n config: resourceCacheControl,\n })\n .strict(),\n z\n .object({\n type: z.literal('normalized'),\n 'cache-control': cacheControl.optional(),\n key: z\n .record(z.string(), z.string())\n .refine(\n (fields) => {\n const values = Object.values(fields);\n return values.every((field) =>\n allowedFieldPrefixes.some((resourceParam) =>\n field.startsWith(resourceParam)\n )\n );\n },\n (_fields) => {\n return {\n message: `Operation key fields must have format \"(${ALLOWED_SOURCES_FOR_KEY.join('|')}).*\".`,\n };\n }\n )\n .optional(),\n })\n .strict(),\n ])\n );\n};\n\nexport const typeExtensions = z\n .object({\n key: z.object({\n fields: z.record(z.string(), z.string()),\n }), // @todo: .strict();\n 'cache-control': cacheControl,\n })\n .strict();\n","import { z } from 'zod';\nimport { extractExtensions } from '../amf-extensions';\nimport { formatZodError } from '../../zod-utils';\nimport { typeExtensions } from './annotations-schemas';\nimport type { AMFTypeFactory } from './factory';\nimport type amf from 'amf-client-js';\nimport type { BaseType, Type, TypeExtensions, TypeRegistry } from '../../types';\nimport type { AMFType } from '.';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport type { API } from '../../api';\n\nconst annotationSchema = z.object({\n onestore: typeExtensions.optional(),\n});\n\nexport abstract class AMFBaseType<T extends Type['type'], S extends amf.AnyShape = amf.AnyShape>\n implements BaseType\n{\n resolved = false;\n abstract type: T;\n parsedExtensions: TypeExtensions = { type: 'unidentifiable' };\n shapePosition: { line: number; column: number };\n\n constructor(\n public api: API,\n public shape: S,\n /* NOTE: The type registry is not guaranteed to have any named types until resolve has been called. */\n protected typeRegistry: TypeRegistry<AMFType>,\n protected factory: AMFTypeFactory,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger\n ) {\n const { line = 0, column = 0 } = this.shape.position?.start || {};\n this.shapePosition = { line, column };\n }\n\n resolve(): void {\n if (!this.resolved) {\n // On 2nd pass the TypeRegistry has entries for all the named types so\n // go ahead & resolve all our inherited types from the AMF Shape. Note\n // that shapeToAMFType can return unresolved AMFTypes, so we need to\n // resolve them as well.\n this.resolved = true;\n\n // read extensions\n const annotationResult = annotationSchema.safeParse(\n extractExtensions(this.shape.customDomainProperties)\n );\n\n // make sure read was successful\n if (!annotationResult.success) {\n const message = formatZodError(annotationResult.error);\n this.fileParserLogger.error(\n this.shape.position.start,\n `Errors validating type:\\n${message}`\n );\n throw new Error();\n }\n\n // store extensions\n if (annotationResult.data.onestore?.key) {\n this.parsedExtensions = {\n type: 'identifiable',\n ...annotationResult.data.onestore,\n };\n }\n\n this.logger.trace('Running this types resolution');\n this.typeResolve();\n } else {\n this.logger.trace('Type was already resolved');\n }\n }\n\n /*\n Placeholder for type specific resolution\n */\n typeResolve(): void {}\n\n get extensions(): TypeExtensions {\n if (this.parsedExtensions.type === 'identifiable') {\n // apply any defaults for identifiable\n const CACHE_CONTROL = 'cache-control';\n const defaults = this.api.defaults.typeCacheControl;\n\n return {\n ...this.parsedExtensions,\n [CACHE_CONTROL]: {\n ...defaults,\n ...this.parsedExtensions[CACHE_CONTROL],\n },\n };\n } else {\n // return anonymous as is\n return this.parsedExtensions;\n }\n }\n}\n","import { AMFBaseType } from './AMFBaseType';\nimport type { AMFType } from '.';\nimport type { AnyType } from '../../types';\n\nexport type AMFAnyType = AMFType & AnyType;\nexport class AMFAnyTypeImpl extends AMFBaseType<'any'> implements AMFAnyType {\n type = 'any' as const;\n}\n","import { AMFBaseType } from './AMFBaseType';\nimport type amf from 'amf-client-js';\nimport type { AMFTypeProps } from '.';\nimport type { Property, ObjectType, Type } from '../../types';\n\nexport type AMFObjectType = AMFTypeProps<amf.NodeShape> & ObjectType;\nexport class AMFObjectTypeImpl\n extends AMFBaseType<'object', amf.NodeShape>\n implements AMFObjectType\n{\n type = 'object' as const;\n properties: Record<string, Property> = {};\n resolved = false;\n additionalProperties: Type = { type: 'any' };\n\n typeResolve() {\n if (this.shape.values?.length > 0) {\n this.fileParserLogger.error(\n this.shapePosition,\n `Type Error (${this.shape.name.value()}). Object type may not specify enum property.`\n );\n throw new Error();\n }\n\n this.logger.trace('Resolving properties');\n this.resolveProperties();\n this.logger.trace('Resolving additional properties');\n this.resolveAdditionalProperties();\n }\n\n private resolveProperties() {\n // It's now safe to process this object's properties from the\n // AMF Shape and use the TypeRegistry to resolve those.\n for (const property of this.shape.properties) {\n const propertyName = property.name.value();\n const type = this.factory(\n this.api,\n property.range,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true\n );\n type.resolve();\n const propertyType: Property = {\n type,\n required: property.minCount.value() !== 0,\n };\n\n this.properties[propertyName] = propertyType;\n }\n }\n\n private resolveAdditionalProperties() {\n if (this.shape.closed.value()) {\n // additionalProperties: false -> all additional properties fail validation, meaning a Not Any\n // type satisfies this constraint\n this.additionalProperties = {\n type: 'not',\n not: { type: 'any' },\n };\n } else if (this.shape.additionalPropertiesSchema) {\n this.additionalProperties = this.factory(\n this.api,\n this.shape.additionalPropertiesSchema,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true\n );\n }\n }\n}\n","import { AMFBaseType } from './AMFBaseType';\nimport type { AMFTypeProps } from '.';\nimport type { NilType } from '../../types';\nexport type AMFNilType = AMFTypeProps & NilType;\n\nexport class AMFNilTypeImpl extends AMFBaseType<'nil'> implements AMFNilType {\n type = 'nil' as const;\n}\n","import { AMFBaseType } from './AMFBaseType';\nimport type { AMFType, AMFTypeFactory, AMFTypeProps } from '.';\nimport type { NotType, Type } from '../../types';\nimport type amf from 'amf-client-js';\nimport type { TypeRegistry } from '../../types';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport type { API } from '../../api';\n\nexport type AMFNotType = AMFTypeProps<amf.NodeShape> & NotType;\nexport class AMFNotTypeImpl extends AMFBaseType<'not', amf.NodeShape> implements AMFNotType {\n type = 'not' as const;\n not: Type;\n\n constructor(\n api: API,\n public shape: amf.NodeShape,\n protected typeRegistry: TypeRegistry<AMFType>,\n protected factory: AMFTypeFactory,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger\n ) {\n super(api, shape, typeRegistry, factory, logger, fileParserLogger);\n const amfType = this.factory(\n this.api,\n this.shape.not,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger\n );\n amfType.resolve();\n this.not = amfType;\n }\n}\n","import { bfs } from '@conduit-client/utils';\nimport { isEnumShape, isOneOfShape } from '../amf-utils';\nimport { AMFBaseType } from './AMFBaseType';\nimport { canonicalizeType, isDiscriminatedObjectType } from '../../types/utils';\nimport type { AMFType } from '.';\nimport type { AllOfType, DiscriminatedObjectType, Type, TypeExtensions } from '../../types';\nimport type amf from 'amf-client-js';\n\nexport type AMFAllOfType = AMFType & AllOfType;\nexport class AMFAllOfTypeImpl extends AMFBaseType<'allOf', amf.AnyShape> implements AMFAllOfType {\n type = 'allOf' as const;\n values?: (string | number | boolean | null)[] | undefined;\n allOf: AMFType[] = [];\n\n typeResolve(): void {\n this.logger.trace('Running resolution for inherited and composed shapes');\n const allOfTypes = [...this.shape.inherits, ...this.shape.and].map(\n (inheritedShape: amf.Shape) => {\n return this.factory(\n this.api,\n inheritedShape,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true\n );\n }\n );\n const rootType = this.factory(\n this.api,\n this.shape,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true,\n new Set([\n 'any',\n 'ref',\n 'array',\n 'boolean',\n 'date',\n 'number',\n 'datetime',\n 'datetime-only',\n 'double',\n 'integer',\n 'nil',\n 'not',\n 'number',\n 'object',\n 'string',\n 'time',\n ]),\n true\n );\n this.allOf = [rootType, ...allOfTypes];\n if (isOneOfShape(this.shape)) {\n const OneOf = this.factory(\n this.api,\n this.shape,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true,\n new Set(['oneOf']),\n true\n );\n this.allOf.push(OneOf);\n }\n if (isEnumShape(this.shape)) {\n const enumType = this.factory(\n this.api,\n this.shape,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true,\n new Set(['enum']),\n true\n );\n this.allOf.push(enumType);\n }\n this.validateDiscriminators();\n }\n\n includes(t: Type): boolean {\n return this.allOf.some((parent) => {\n const canonicalizedParent = canonicalizeType(parent);\n if (canonicalizedParent === t) {\n return true;\n }\n\n return canonicalizedParent.type === 'allOf' && canonicalizedParent.includes(t);\n });\n }\n\n get discriminatedParent(): DiscriminatedObjectType | undefined {\n const discriminatedParents = [\n ...bfs<Type>(\n [this],\n (type: Type) => {\n return isDiscriminatedObjectType(type);\n },\n (type: Type) => {\n return type.type === 'allOf'\n ? type.allOf\n : type.type === 'ref'\n ? [type.$ref]\n : [];\n }\n ).values(),\n ] as DiscriminatedObjectType[];\n\n if (discriminatedParents.length === 0) {\n return;\n }\n\n if (discriminatedParents.length > 1) {\n const { line = 0, column = 0 } = this.shape.position?.start || {};\n this.fileParserLogger.error(\n { line, column },\n `Type ${this.typeRegistry.nameOf(\n this\n )} cannot inherit from multiple discriminated objects. Inherits from ${discriminatedParents.map(\n (parent) => this.typeRegistry.nameOf(parent as AMFType)\n )}.`\n );\n throw new Error();\n }\n\n return discriminatedParents[0];\n }\n\n protected validateDiscriminators() {\n // getting the parent runs the validation\n this.discriminatedParent;\n }\n\n get extensions() {\n if (super.extensions.type === 'identifiable') {\n return super.extensions;\n }\n\n if (this.discriminatedParent?.extensions?.type === 'identifiable') {\n return this.discriminatedParent.extensions;\n }\n\n return super.extensions;\n }\n}\n","import { getEnumValuesFromShape } from '../amf-utils';\nimport { AMFBaseType } from './AMFBaseType';\nimport type amf from 'amf-client-js';\nimport type { AMFTypeProps, AMFType, AMFTypeFactory } from '.';\nimport type {\n BooleanType,\n DateTimeOnlyType,\n DateTimeType,\n DateType,\n DoubleType,\n IntegerType,\n NumberType,\n ScalarType,\n StringType,\n TimeType,\n} from '../../types';\nimport type { TypeRegistry } from '../../types';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport type { API } from '../../api';\nexport type AMFBooleanType = AMFTypeProps & BooleanType;\nexport type AMFDoubleType = AMFTypeProps & DoubleType;\nexport type AMFIntegerType = AMFTypeProps & IntegerType;\nexport type AMFNumberType = AMFTypeProps & NumberType;\nexport type AMFStringType = AMFTypeProps & StringType;\nexport type AMFDateType = AMFTypeProps & DateType;\nexport type AMFTimeType = AMFTypeProps & TimeType;\nexport type AMFDateTimeOnlyType = AMFTypeProps & DateTimeOnlyType;\nexport type AMFDateTimeType = AMFTypeProps & DateTimeType;\n\nexport abstract class AMFEnumerableScalarType<\n T extends string | number | boolean | null,\n S extends ScalarType['type'],\n> extends AMFBaseType<S> {\n values?: Array<T>;\n typeResolve() {\n if (this.shape.values?.length > 0) {\n this.values = getEnumValuesFromShape(this.shape);\n }\n\n if (this.parsedExtensions.type === 'identifiable') {\n this.fileParserLogger.error(\n this.shape.position.start,\n `${this.shape.name} is scalar and thus cannot be made identifiable by specifying a key`\n );\n throw new Error();\n }\n }\n}\n\nexport class AMFBooleanTypeImpl\n extends AMFEnumerableScalarType<boolean, 'boolean'>\n implements AMFBooleanType\n{\n type = 'boolean' as const;\n}\nexport class AMFDoubleTypeImpl\n extends AMFEnumerableScalarType<number, 'double'>\n implements AMFDoubleType\n{\n type = 'double' as const;\n}\nexport class AMFIntegerTypeImpl\n extends AMFEnumerableScalarType<number, 'integer'>\n implements AMFIntegerType\n{\n type = 'integer' as const;\n}\nexport class AMFNumberTypeImpl\n extends AMFEnumerableScalarType<number, 'number'>\n implements AMFNumberType\n{\n type = 'number' as const;\n}\nexport class AMFStringTypeImpl\n extends AMFEnumerableScalarType<string, 'string'>\n implements AMFStringType\n{\n type = 'string' as const;\n}\nexport class AMFDateTypeImpl\n extends AMFEnumerableScalarType<string, 'date'>\n implements AMFDateType\n{\n type = 'date' as const;\n}\n\nconst DATE = 'date';\nconst DATE_TIME = 'date-time';\nexport class AMFDateTimeImpl\n extends AMFEnumerableScalarType<string, 'datetime'>\n implements AMFDateTimeType\n{\n type = 'datetime' as const;\n format: typeof DATE | typeof DATE_TIME;\n constructor(\n api: API,\n public shape: amf.ScalarShape,\n typeRegistry: TypeRegistry<AMFType>,\n factory: AMFTypeFactory,\n logger: LoggerService,\n fileParserLogger: FileParserLogger\n ) {\n super(api, shape, typeRegistry, factory, logger, fileParserLogger);\n\n const formatValue = shape.format.value() as string | null;\n\n this.format = formatValue === DATE ? DATE : DATE_TIME;\n }\n}\n","import { getEnumValuesFromShape } from '../amf-utils';\nimport { AMFBaseType } from './AMFBaseType';\nimport type { AMFType } from '.';\nimport type { OneOf } from '../../types';\nimport type amf from 'amf-client-js';\n\nexport type AMFOneOfType = AMFType & OneOf;\nexport class AMFOneOfTypeImpl extends AMFBaseType<'oneOf', amf.UnionShape> implements AMFOneOfType {\n type = 'oneOf' as const;\n values?: (string | number | boolean | null)[] | undefined;\n oneOf: AMFType[] = [];\n\n typeResolve(): void {\n let { anyOf = [], xone = [] } = this.shape;\n\n // Similarly, it's now safe to process the oneof types from the\n // AMF Shape, and use the TypeRegistry to resolve those.\n this.oneOf = [...anyOf, ...xone].map((subTypeShape) => {\n const subType = this.factory(\n this.api,\n subTypeShape,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger\n );\n subType.resolve();\n return subType;\n });\n\n if (this.shape.values?.length > 0) {\n this.values = getEnumValuesFromShape(this.shape);\n }\n\n // Preserve identifiable extensions when AMF converts nullable objects to oneOf unions\n this.preserveIdentifiableExtensionsFromNullablePattern();\n }\n\n /**\n * When AMF encounters 'nullable: true' on an object with identifiable extensions,\n * it converts it to a oneOf with [object, null]. This method detects this pattern\n * and preserves the identifiable extensions from the object member on the union.\n */\n private preserveIdentifiableExtensionsFromNullablePattern(): void {\n // Only handle simple nullable pattern: exactly 2 members, one object and one null\n if (this.oneOf.length !== 2) {\n return;\n }\n\n const nullMember = this.oneOf.find((member) => member.type === 'nil');\n const objectMember = this.oneOf.find((member) => member.type === 'object');\n\n if (!nullMember || !objectMember) {\n return;\n }\n\n // If the object member has identifiable extensions, preserve them on the union\n if (objectMember.extensions?.type === 'identifiable') {\n this.parsedExtensions = { ...objectMember.extensions };\n }\n }\n}\n","import { getEnumValuesFromShape } from '../amf-utils';\nimport { AMFBaseType } from './AMFBaseType';\nimport type { AMFType, AMFTypeFactory, AMFTypeProps } from '.';\nimport type { EnumType } from '../../types';\nimport type amf from 'amf-client-js';\nimport type { TypeRegistry } from '../../types';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport type { API } from '../../api';\n\nexport type AMFEnumType = AMFTypeProps & EnumType;\nexport class AMFEnumTypeImpl extends AMFBaseType<'enum'> implements AMFEnumType {\n type = 'enum' as const;\n values = [];\n\n constructor(\n api: API,\n public shape: amf.NodeShape,\n protected typeRegistry: TypeRegistry<AMFType>,\n protected factory: AMFTypeFactory,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger\n ) {\n super(api, shape, typeRegistry, factory, logger, fileParserLogger);\n this.values = getEnumValuesFromShape(shape);\n }\n}\n","import { AMFBaseType } from './AMFBaseType';\nimport type { RefType, AMFType, Type } from '../..';\nimport type amf from 'amf-client-js';\n\nexport type AMFRefType = AMFType & RefType;\nexport class AMFRefTypeImpl extends AMFBaseType<'ref', amf.AnyShape> implements AMFRefType {\n type = 'ref' as const;\n $ref: Type = {\n type: 'not',\n not: { type: 'any' },\n }; // Should never happen, but will reject all\n resolved = false;\n\n typeResolve(): void {\n this.logger.trace(`Resolving $ref at ${this.shape.id.split('#')[1]}`); // ignore the filepath\n if (this.shape.isLink && this.shape.linkTarget) {\n const inheritedType = this.typeRegistry.get(this.shape.linkLabel.toString());\n if (inheritedType) {\n this.logger.trace(`Found ${inheritedType.shape.name} for $ref`);\n inheritedType.resolve();\n this.$ref = inheritedType;\n } else {\n const errorMessage = `Failed to resolve $ref: ${this.shape.linkLabel.toString()} from ${this.shape.id}`;\n this.fileParserLogger.error(this.shapePosition, errorMessage);\n throw new Error(errorMessage);\n }\n }\n }\n}\n","import { AMFObjectType, type AMFType, type AMFTypeFactory, AMFTypeProps } from './index';\nimport type amf from 'amf-client-js';\nimport type { DiscriminatedObjectType, Type, TypeRegistry } from '../../types';\nimport type { API } from '../../api';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport { AMFBaseType } from './AMFBaseType';\n\nexport type AMFDiscriminatedObjectType = AMFTypeProps<amf.NodeShape> & DiscriminatedObjectType;\n\nexport class AMFDiscriminatedObjectTypeImpl\n extends AMFBaseType<'discriminatedObject', amf.NodeShape>\n implements AMFDiscriminatedObjectType\n{\n readonly type = 'discriminatedObject';\n readonly baseType: AMFObjectType;\n readonly discriminator: string;\n protected _mapping: Record<string, Type> | undefined = undefined;\n\n constructor(\n api: API,\n public shape: amf.NodeShape,\n protected typeRegistry: TypeRegistry<AMFType>,\n protected factory: AMFTypeFactory,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger\n ) {\n super(api, shape, typeRegistry, factory, logger, fileParserLogger);\n\n if (this.shape.discriminator.isNullOrEmpty) {\n this.fileParserLogger.error(\n this.shapePosition,\n 'Supplied shape does not provide a discriminator'\n );\n throw new Error();\n }\n\n this.discriminator = this.shape.discriminator.value();\n\n this.baseType = factory(\n api,\n shape,\n typeRegistry,\n logger,\n fileParserLogger,\n false,\n new Set(['object'])\n ) as AMFObjectType;\n }\n\n typeResolve() {\n this.baseType.resolve();\n if (this.typeRegistry.nameOf(this) === undefined) {\n this.fileParserLogger.error(\n this.shapePosition,\n 'Cannot use discriminator on inline types.'\n );\n throw new Error();\n }\n }\n\n get mapping(): Record<string, Type> {\n if (this._mapping === undefined) {\n this._mapping = {};\n this.resolveDiscriminator();\n }\n return this._mapping!;\n }\n\n private resolveDiscriminator(): void {\n this.buildExplicitMapping();\n this.buildImplicitMapping();\n }\n\n /**\n * Adds implicit discriminator values (i.e., type names) as mappings to types\n *\n * @private\n */\n private buildImplicitMapping(): void {\n const oneOfNames = this.shape.xone.reduce((result, shape) => {\n // per https://spec.openapis.org/oas/v3.1.0.html#discriminator-object\n // \"When using the discriminator, inline schemas will not be considered.\"\n if (shape.isLink) {\n result.push(shape.linkLabel.value());\n }\n return result;\n }, [] as string[]);\n\n this.typeRegistry.forEach((type, name) => {\n type.resolve();\n\n if (\n ((type.type === 'allOf' && type.includes(this)) || oneOfNames.includes(name)) &&\n !Object.values(this._mapping!).includes(type)\n ) {\n this._mapping![name] = type;\n }\n });\n }\n\n /**\n * Adds explicit discriminator values as mappings to types\n *\n * @private\n */\n private buildExplicitMapping(): void {\n this.shape.discriminatorMapping.forEach((el) => {\n const value = el.templateVariable.value();\n\n // TODO: Grabbing the last value out of the link expression is pretty hacky.\n // We should lookup the type by ID, but I don't think we can do this today.\n const linkExpressionSplit = el.linkExpression.value().split('/');\n const typeName = linkExpressionSplit[linkExpressionSplit.length - 1];\n const type = this.typeRegistry.get(typeName);\n\n if (type === undefined) {\n this.fileParserLogger.error(this.shapePosition, `Cannot find type ${typeName}`);\n throw new Error();\n }\n\n this._mapping![value] = type;\n });\n }\n}\n","import {\n isAnyShape,\n isAnyOfShape,\n isArrayShape,\n isNilShape,\n isNodeShape,\n isScalarShape,\n isOneOfShape,\n DATATYPE_TO_SCALAR_TYPE,\n isNotShape,\n isAllOfShape,\n isEnumShape,\n isRefShape,\n} from '../amf-utils';\nimport { AMFAnyTypeImpl } from './AMFAnyType';\nimport { AMFArrayTypeImpl } from './AMFArrayType';\nimport { AMFObjectTypeImpl } from './AMFObjectType';\nimport { AMFNilTypeImpl } from './AMFNilType';\nimport { AMFNotTypeImpl } from './AMFNotType';\nimport { AMFAllOfTypeImpl } from './AMFAllOfType';\nimport {\n AMFBooleanTypeImpl,\n AMFDateTimeImpl,\n AMFDateTypeImpl,\n AMFDoubleTypeImpl,\n AMFIntegerTypeImpl,\n AMFNumberTypeImpl,\n AMFStringTypeImpl,\n} from './AMFScalarTypes';\nimport { AMFOneOfTypeImpl } from './AMFOneOfType';\nimport { AMFEnumTypeImpl } from './AMFEnumType';\nimport { AMFRefTypeImpl } from './AMFRefType';\nimport { AMFDiscriminatedObjectTypeImpl } from './AMFDiscriminatedObjectType';\nimport type amf from 'amf-client-js';\nimport type { AMFType } from '.';\nimport type { TypeRegistry, Type } from '../../types';\nimport type { AMFEnumerableScalarType } from './AMFScalarTypes';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport type { API } from '../../api';\n\n/**\n * Constructs an AMFType based on the provided AMF Shape and a set of parameters that guide the creation process.\n *\n * @param api The API\n * @param shape The AMF Shape for which an AMFType is to be created.\n * @param typeRegistry The TypeRegistry is searched for an existing AMFType that corresponds to the shape.\n * If a match is found based on shape IDs, it is returned instead of creating a new AMFType.\n * @param logger A LoggerService for logging standard operations.\n * @param fileParserLogger A FileParserLogger for logging file parsing specific operations.\n * @param resolve Optional boolean flag to determine if the constructed type should resolve references (default: false).\n * @param allowedTypes Optional set of allowed type categories (e.g., 'allOf', 'oneOf') to limit the types constructed (default: empty set).\n * @param skipRegistry Optional boolean flag to bypass type registry cache lookup for an existing type (default: false).\n * @returns The constructed or retrieved AMFType based on the provided shape and conditions.\n *\n * @throws Error if the shape type is unsupported, unrecognized, or if specific conditions like 'oneOf' are encountered without support.\n */\nexport function amfTypeFactory(\n api: API,\n shape: amf.Shape,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n resolve = false,\n allowedTypes: Set<Type['type']> | undefined = undefined,\n skipRegistry = false\n): AMFType {\n if (!skipRegistry) {\n // see if we've already built an AMFType for a Shape with a matching id\n for (const [_, type] of typeRegistry.entries()) {\n if (shape.id === type.shape.id) {\n return type;\n }\n }\n }\n\n const { line = 0, column = 0 } = shape.position?.start || {};\n\n let ctor: new (\n api: API,\n shape: any,\n typeRegistry: TypeRegistry<AMFType>,\n factory: AMFTypeFactory,\n logger: LoggerService,\n fileParserLogger: FileParserLogger\n ) => AMFEnumerableScalarType<any, any>;\n\n if (isAnyOfShape(shape)) {\n // oneOf not supported, error out\n fileParserLogger.error(\n { line, column },\n `anyOf is not suppoort, found in type ${shape.name.value()}`\n );\n throw new Error();\n }\n\n if (isRefShape(shape)) {\n ctor = AMFRefTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('allOf')) && isAllOfShape(shape)) {\n ctor = AMFAllOfTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('oneOf')) && isOneOfShape(shape)) {\n ctor = AMFOneOfTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('enum')) && isEnumShape(shape)) {\n ctor = AMFEnumTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('nil')) && isNilShape(shape)) {\n ctor = AMFNilTypeImpl;\n } else if (\n isScalarShape(shape) &&\n shape.dataType.value() in DATATYPE_TO_SCALAR_TYPE &&\n (!allowedTypes || allowedTypes.has(DATATYPE_TO_SCALAR_TYPE[shape.dataType.value()] as any))\n ) {\n const scalarType = DATATYPE_TO_SCALAR_TYPE[shape.dataType.value()];\n\n switch (scalarType) {\n case 'string':\n ctor = AMFStringTypeImpl;\n break;\n case 'number':\n ctor = AMFNumberTypeImpl;\n break;\n case 'boolean':\n ctor = AMFBooleanTypeImpl;\n break;\n case 'double':\n ctor = AMFDoubleTypeImpl;\n break;\n case 'integer':\n ctor = AMFIntegerTypeImpl;\n break;\n case 'date':\n ctor = AMFDateTypeImpl;\n break;\n case 'datetime':\n ctor = AMFDateTimeImpl;\n break;\n default:\n fileParserLogger.error(\n { line, column },\n `type of shape ${shape.name.value()} not recognized`\n );\n throw new Error();\n }\n } else if (\n (!allowedTypes || allowedTypes.has('discriminatedObject')) &&\n isNodeShape(shape) &&\n !shape.discriminator.isNullOrEmpty\n ) {\n ctor = AMFDiscriminatedObjectTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('object')) && isNodeShape(shape)) {\n ctor = AMFObjectTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('array')) && isArrayShape(shape)) {\n ctor = AMFArrayTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('not')) && isNotShape(shape)) {\n ctor = AMFNotTypeImpl;\n } else if ((!allowedTypes || allowedTypes.has('any')) && isAnyShape(shape)) {\n ctor = AMFAnyTypeImpl;\n } else {\n fileParserLogger.error(\n { line, column },\n `type of shape ${shape.name.value()} not recognized`\n );\n throw new Error();\n }\n\n const result = new ctor(api, shape, typeRegistry, amfTypeFactory, logger, fileParserLogger);\n if (resolve) {\n result.resolve();\n }\n\n return result;\n}\n\nexport type AMFTypeFactory = typeof amfTypeFactory;\n","import { amfTypeFactory } from './factory';\nimport { AMFBaseType } from './AMFBaseType';\nimport type amf from 'amf-client-js';\nimport type { AMFType } from '.';\nimport type { ArrayType, Type } from '../../types';\n\nexport type AMFArrayType = AMFType & ArrayType;\nexport class AMFArrayTypeImpl extends AMFBaseType<'array', amf.ArrayShape> implements AMFArrayType {\n type = 'array' as const;\n items: Type = { type: 'any' };\n\n typeResolve(): void {\n if (this.shape.items) {\n const items = amfTypeFactory(\n this.api,\n this.shape.items,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger\n );\n items.resolve();\n this.items = items;\n }\n\n // else, items defaults to any\n }\n}\n","import { z } from 'zod';\n\n/**\n * Service Overrides parsing utilities for OAS `x-onestore` extensions.\n *\n * This module only provides schemas and helpers. Wiring into AMF parsing\n * happens separately in the endpoint/operation builders.\n */\n\n// -----------------------------\n// Types\n// -----------------------------\n\nexport type ServiceTypeName = string; // canonical type name, e.g. \"fetch\"\n\nexport type ServiceVariantDescriptor = {\n type: ServiceTypeName;\n version: string;\n tags?: Record<string, string>;\n default?: boolean;\n};\n\nexport type ServicesCatalog = Record<string, ServiceVariantDescriptor>;\n\nexport type OperationServiceRef = { ref: string };\n\nexport type OperationServiceInline = {\n version: string;\n tags?: Record<string, string>;\n};\n\nexport type OperationServices = Record<\n ServiceTypeName,\n OperationServiceRef | OperationServiceInline\n>;\n\nexport type ResolvedServiceOverrides = {\n catalog: ServicesCatalog;\n /** Map of service type -> alias key that is marked default */\n defaultsByType: Record<ServiceTypeName, string>;\n};\n\n// -----------------------------\n// Zod Schemas\n// -----------------------------\n\nexport const serviceVariantDescriptorSchema = z\n .object({\n type: z.string(),\n version: z.string(),\n tags: z.record(z.string(), z.string()).optional(),\n default: z.boolean().optional(),\n })\n .strict();\n\nexport const servicesCatalogSchema = z.record(z.string(), serviceVariantDescriptorSchema);\n\nexport const operationServiceRefSchema = z\n .object({\n ref: z.string(),\n })\n .strict();\n\nexport const operationServiceInlineSchema = z\n .object({\n version: z.string(),\n tags: z.record(z.string(), z.string()).optional(),\n // Capture but disallow to provide a clearer error\n optional: z.boolean().optional(),\n })\n .strict()\n .superRefine((val, ctx) => {\n if (val.optional !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['optional'],\n message: 'optional is not allowed for service overrides',\n });\n }\n });\n\nexport const operationServicesSchema = z.record(\n z.string(),\n z.union([operationServiceRefSchema, operationServiceInlineSchema])\n);\n\n// Full shapes for convenience when validating raw extension objects\nexport const componentsOnestoreServicesSchema = z\n .object({ onestore: z.object({ services: servicesCatalogSchema }).strict() })\n .strict();\n\nexport const operationOnestoreServicesSchema = z\n .object({ onestore: z.object({ services: operationServicesSchema }).strict() })\n .strict();\n\n// -----------------------------\n// Helpers\n// -----------------------------\n\n/**\n * Validates and normalizes a components-level services catalog.\n * Enforces single default per service type.\n */\nexport function validateAndNormalizeCatalog(catalog: ServicesCatalog): ResolvedServiceOverrides {\n // Validate object shape via schema\n const parsed = servicesCatalogSchema.safeParse(catalog);\n if (!parsed.success) {\n throw new Error(parsed.error.message);\n }\n\n const defaultsByType: Record<ServiceTypeName, string> = {};\n for (const [alias, descriptor] of Object.entries(parsed.data)) {\n if (descriptor.default) {\n const prior = defaultsByType[descriptor.type];\n if (prior !== undefined && prior !== alias) {\n throw new Error(\n `Multiple defaults defined for service type '${descriptor.type}': '${prior}' and '${alias}'`\n );\n }\n defaultsByType[descriptor.type] = alias;\n }\n }\n\n return { catalog: parsed.data, defaultsByType };\n}\n\n/**\n * Given an operation-level services object and a catalog, produce a normalized mapping\n * of canonical service type -> alias key (when $ref used) or inline descriptor.\n *\n * This does not perform runtime resolution or merging — it only standardizes shape.\n */\nexport type ResolvedServiceDescriptor = Pick<\n ServiceVariantDescriptor,\n 'type' | 'version' | 'tags' | 'default'\n>;\nexport type ResolvedOperationServices = Record<ServiceTypeName, ResolvedServiceDescriptor>;\n\nexport function resolveOperationServices(\n services: OperationServices,\n catalog?: ResolvedServiceOverrides\n): ResolvedOperationServices {\n const result: Record<string, ResolvedServiceDescriptor> = {};\n for (const [canonicalName, entry] of Object.entries(services)) {\n if ('ref' in (entry as any)) {\n const alias = (entry as OperationServiceRef).ref;\n const descriptor = catalog?.catalog[alias];\n if (!descriptor) {\n throw new Error(`ref '${alias}' does not exist in the catalog`);\n } else if (descriptor.default) {\n throw new Error(`ref is not required for default service '${alias}'`);\n } else if (descriptor.type !== canonicalName) {\n throw new Error(\n `Service '${alias}' uses non-canonical type '${descriptor.type}'. Expected canonical type '${canonicalName}'`\n );\n }\n result[canonicalName] = {\n type: descriptor.type,\n version: descriptor.version,\n tags: descriptor.tags,\n };\n } else {\n const inline = entry as OperationServiceInline;\n result[canonicalName] = {\n type: canonicalName,\n version: inline.version,\n tags: inline.tags,\n };\n }\n }\n return result;\n}\n\nexport function resolveDefaultServiceOverrides(\n catalog?: ResolvedServiceOverrides\n): ResolvedOperationServices {\n const result: Record<string, ResolvedServiceDescriptor> = {};\n if (catalog) {\n for (const [alias, type] of Object.entries(catalog.defaultsByType)) {\n const entry = catalog.catalog[type];\n if (entry && !result[entry.type]) {\n result[entry.type] = {\n type: entry.type,\n version: entry.version,\n tags: entry.tags,\n };\n } else {\n throw new Error(\n `Missing or multiple default service overrides for service ${alias}`\n );\n }\n }\n }\n return result;\n}\n","import {\n type LoggerService,\n type FileParserLogger,\n toTypeScriptSafeIdentifier,\n} from '@conduit-client/utils';\nimport { z } from 'zod';\nimport { extractExtensions } from '../amf-extensions';\nimport { formatZodError } from '../../zod-utils';\nimport { cacheControl, operationCacheStrategy } from '../types';\nimport { BindingTypesEnum } from '../../api/endpoint';\nimport type amf from 'amf-client-js';\nimport type {\n BaseAuraOperation,\n AuraOperationWithRequestBody,\n BaseOperation,\n HttpMethod,\n Parameter,\n Payload,\n Request,\n Response,\n StatusCode,\n CacheStrategy,\n ConfigSchemaType,\n OperationType,\n ErrorStrategy,\n Binding,\n BaseHttpOperation,\n HttpOperationWithRequestBody,\n GraphQLConfig,\n BaseGraphQLOperation,\n} from '../../api/endpoint';\nimport type { AMFType, AMFTypeFactory } from '../types';\nimport type { TypeRegistry } from '../../types';\nimport type { ScalarType } from '../../types';\nimport type { AmfEndPoint } from './amf-endpoint';\nimport type { API, Server } from '../../api';\nimport {\n operationServicesSchema,\n resolveOperationServices,\n type ResolvedOperationServices,\n} from '../../api/service-overrides';\n\nconst cacheInvalidationEntrySchema = z.object({\n ref: z.string(),\n key: z.record(z.string(), z.string()),\n});\n\nconst cacheInvalidationSchema = z.object({\n onestore: z.object({\n invalidate: z.array(cacheInvalidationEntrySchema),\n }),\n});\n\nexport class OperationSchemaBuilder {\n constructor(\n private method: HttpMethod,\n private operationId: string | undefined,\n private operationCacheStrategyType: Pick<CacheStrategy, 'type'>\n ) {}\n\n buildOperationSchema() {\n const bindingSchema = z.object({\n type: z.enum(BindingTypesEnum).default('wire'),\n identifier: z.string().default(''),\n });\n\n const configSchema = z\n .object({\n 'operation-type': z\n .enum(['query', 'mutation', 'graphql'])\n .default(this.method === 'GET' ? 'query' : 'mutation'),\n schema: z.enum(['flattened', 'default']).default('default'),\n bindings: z.array(bindingSchema).default([]),\n exposeRefresh: z.boolean().default(false),\n 'body-param': z.string().optional(),\n })\n .default({})\n .transform((config, ctx) => {\n const { bindings, 'operation-type': operationType } = config;\n if (bindings.length === 0) {\n if (!this.operationId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `operationId is required for adapter name generation when no explicit bindings defined for operation. Add an operationId or expicit bindings annotation.`,\n });\n return config;\n }\n\n if (operationType === 'graphql') {\n // For graphql operations, default to wire\n config.bindings = [{ type: 'wire', identifier: this.operationId }];\n return config;\n } else {\n // If no bindings are provided, add a default binding type\n const bindingType = operationType === 'query' ? 'wire' : 'imperative';\n config.bindings = [{ type: bindingType, identifier: this.operationId }];\n }\n } else if (bindings.length === 1) {\n // If only one binding is provided, default to operationId\n if (!bindings[0].identifier) {\n if (!this.operationId) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `operationId is required for adapter name generation when one explicit binding is requested without an identifier. Add an operationId or a binding identifier.`,\n });\n return config;\n }\n bindings[0].identifier = this.operationId;\n }\n }\n\n return config;\n })\n .refine(\n (config) => {\n // Error if 'wire' or 'imperative-legacy' binding is used with mutation\n const { bindings, 'operation-type': operationType } = config;\n if (operationType === 'mutation') {\n return !bindings.some(\n (binding) =>\n binding.type === 'wire' || binding.type === 'imperative-legacy'\n );\n }\n return true;\n },\n {\n message:\n 'Cannot use \"wire\" or \"imperative-legacy\" binding with operation-type \"mutation\"',\n }\n )\n .refine(\n (config) => {\n // Error if exposeRefresh on mutation\n const { 'operation-type': operationType, exposeRefresh } = config;\n return !(exposeRefresh && operationType === 'mutation');\n },\n {\n message: 'Cannot exposeRefresh with operation-type \"mutation\"',\n }\n )\n .refine(\n (config) => {\n // Error if exposeRefresh on mutation or 'imperative-legacy' binding\n const { bindings, exposeRefresh } = config;\n if (exposeRefresh) {\n return !bindings.some((binding) => binding.type === 'imperative-legacy');\n }\n return true;\n },\n {\n message: 'Cannot exposeRefresh with \"imperative-legacy\" binding',\n }\n )\n .refine(\n (config) => {\n // Error if there are multiple bindings and no identifier is provided\n const { bindings } = config;\n if (bindings.length <= 1) {\n return true;\n }\n return bindings.every((binding) => !!binding.identifier);\n },\n {\n message: 'Binding identifier is required if more than one binding is provided.',\n }\n )\n .refine(\n (config) => {\n // Error if there are multiple bindings and identifier is not unique\n const { bindings } = config;\n if (bindings.length <= 1) {\n return true;\n }\n const identifiers = bindings.map((binding) => binding.identifier);\n return new Set(identifiers).size === identifiers.length;\n },\n { message: 'Binding identifier must be unique' }\n )\n .refine(\n (config) => {\n const { bindings, 'operation-type': operationType } = config;\n if (operationType !== 'graphql') {\n return !bindings.some((binding) => binding.type === 'mutation');\n }\n return true;\n },\n {\n message: 'Cannot use \"mutation\" binding with non-graphql operations',\n }\n )\n .superRefine((config, ctx) => {\n // Error if any bindings identifiers are invalid typescript variable/function names\n config.bindings.forEach((binding) => {\n const tsSafeIdentifier = toTypeScriptSafeIdentifier(binding.identifier);\n if (binding.identifier !== tsSafeIdentifier) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Invalid identifier \"${binding.identifier}\" for adapter binding. This may be derived from operationId. Use a valid TypeScript variable name, e.g. '${tsSafeIdentifier}'.`,\n });\n }\n });\n });\n\n return z.object({\n onestore: z\n .object({\n config: configSchema,\n 'cache-strategy': operationCacheStrategy(this.operationCacheStrategyType),\n 'error-strategy': z\n .discriminatedUnion('type', [\n z.object({ type: z.literal('stringified') }).strict(),\n z.object({ type: z.literal('fetchResponse') }).strict(),\n ])\n .default({ type: 'stringified' }),\n services: operationServicesSchema.optional(),\n })\n .strict()\n .default({})\n .transform((extensions) => {\n if (\n extensions['cache-strategy']?.type === 'normalized' &&\n extensions.config['operation-type'] === 'mutation'\n ) {\n if (extensions['cache-strategy']['cache-control'] === undefined) {\n extensions['cache-strategy']['cache-control'] = {\n type: 'no-cache',\n };\n }\n }\n return extensions;\n })\n .refine(\n (extensions) => {\n if (extensions['cache-strategy']?.type === 'normalized') {\n const cacheControl = extensions['cache-strategy']['cache-control'];\n if (\n extensions.config['operation-type'] === 'mutation' &&\n cacheControl\n ) {\n // Error if anything but no-cache used for mutation operations.\n return cacheControl.type === 'no-cache';\n }\n }\n return true;\n },\n {\n message:\n 'Cannot use \"cache-control\" values other than \"no-cache\" with operation-type \"mutation\"',\n }\n )\n .refine(\n (extensions) => {\n if (extensions['cache-strategy']?.type === 'normalized') {\n if (extensions.config['operation-type'] === 'query') {\n // Error if value not provided used for query operations.\n return extensions['cache-strategy']['cache-control'] !== undefined;\n }\n }\n return true;\n },\n {\n message: 'Cannot use undefined \"cache-control\" with operation-type \"query\"',\n }\n )\n .refine(\n (extensions) => {\n if (extensions.config['operation-type'] === 'graphql') {\n return extensions['cache-strategy']?.type === 'normalized';\n }\n return true;\n },\n {\n message: 'GraphQL operations must use normalized cache strategy',\n }\n ),\n });\n }\n\n buildHttpOperationSchema() {\n return this.buildOperationSchema().transform((config, _ctx) => {\n let bodyParam =\n config.onestore.config['body-param'] === undefined\n ? 'inputPayload'\n : config.onestore.config['body-param'];\n\n return {\n onestore: {\n config: {\n ...config.onestore.config,\n 'body-param': bodyParam,\n },\n },\n };\n });\n }\n\n buildAuraOperationSchema() {\n return this.buildOperationSchema().and(\n z.object({\n onestore: z.object({\n config: z.object({\n aura: z.object({\n method: z.string(),\n }),\n }),\n }),\n })\n );\n }\n\n buildAuraOperationWithBodySchema() {\n return this.buildAuraOperationSchema()\n .and(\n z.object({\n onestore: z.object({\n config: z.object({\n aura: z.object({\n 'body-param': z.string().optional(),\n }),\n }),\n }),\n })\n )\n .transform((config, ctx) => {\n let topLevelParam = config.onestore.config['body-param'];\n let auraParam = config.onestore.config.aura['body-param'];\n\n // If one or the other is present, use for both, if neither is present, error, if both are present, use correspondingly\n if (topLevelParam === undefined && auraParam === undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'Missing body-param in both x-onestore.config and x-onestore.config.aura.',\n });\n return z.NEVER;\n }\n\n if (topLevelParam !== undefined && auraParam !== undefined) {\n // Nothing to do, both have been explicitly set\n return config;\n }\n\n if (topLevelParam === undefined) {\n topLevelParam = auraParam;\n }\n\n if (auraParam === undefined) {\n auraParam = topLevelParam;\n }\n\n return {\n onestore: {\n config: {\n ...config.onestore.config,\n 'body-param': topLevelParam,\n aura: {\n ...config.onestore.config.aura,\n 'body-param': auraParam,\n },\n },\n },\n };\n });\n }\n\n buildGraphQLOperationSchema() {\n return this.buildOperationSchema().and(\n z.object({\n onestore: z.object({\n config: z.object({\n graphql: z.object({\n schema: z.string(),\n 'type-metadata': z\n .array(\n z.object({\n typename: z.string(),\n 'cache-control': cacheControl,\n })\n )\n .default([]),\n }),\n }),\n }),\n })\n );\n }\n}\n\nexport abstract class AmfBaseOperation implements BaseOperation {\n method: HttpMethod;\n operationId: string | undefined;\n requests: Request[];\n responses: Response[];\n operationType: OperationType;\n configSchemaType: ConfigSchemaType;\n errorStrategy: ErrorStrategy;\n bindings: Binding[];\n exposeRefresh: boolean;\n protected parsedCacheStrategy: CacheStrategy;\n protected operationSchemaBuilder: OperationSchemaBuilder;\n defaults: API['defaults'];\n serviceOverrides: ResolvedOperationServices;\n\n position: { line: number; column: number };\n basePath: string;\n\n abstract readonly type: 'aura' | 'http';\n\n constructor(\n protected amfOperation: amf.Operation,\n protected amfTypeFactory: AMFTypeFactory,\n protected typeRegistry: TypeRegistry<AMFType>,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger,\n public endpoint: AmfEndPoint,\n public server: Server\n ) {\n this.defaults = endpoint.api.defaults;\n this.method = this.amfOperation.method.value().toUpperCase() as HttpMethod;\n\n this.position = {\n line: this.amfOperation.position.lineFrom.valueOf(),\n column: this.amfOperation.position.columnFrom.valueOf(),\n };\n\n const extensionsRaw = extractExtensions(this.amfOperation.customDomainProperties);\n this.operationId = this.amfOperation.operationId.value() || this.amfOperation.name.value();\n this.operationSchemaBuilder = new OperationSchemaBuilder(\n this.method,\n this.operationId,\n this.defaults.operationCacheStrategy\n );\n const extensionsResult = this.operationSchemaBuilder\n .buildOperationSchema()\n .default({})\n .safeParse(extensionsRaw);\n\n if (!extensionsResult.success) {\n const message = formatZodError(extensionsResult.error);\n this.fileParserLogger.error(\n this.amfOperation.position.start,\n `Error validating operation:\\n${message}`\n );\n throw new Error(`Error validating operation:\\n${message}`);\n }\n\n const extensions = extensionsResult.data;\n\n this.operationType = extensions.onestore.config['operation-type'];\n this.configSchemaType = extensions.onestore.config.schema;\n this.bindings = extensions.onestore.config.bindings;\n this.exposeRefresh = extensions.onestore.config.exposeRefresh;\n this.parsedCacheStrategy = extensions.onestore['cache-strategy'] as CacheStrategy;\n this.errorStrategy = extensions.onestore['error-strategy'];\n this.basePath = this.endpoint.api.basePath;\n\n if (extensions.onestore.services) {\n this.serviceOverrides = resolveOperationServices(\n extensions.onestore.services,\n this.endpoint.api.serviceOverrides\n );\n } else {\n this.serviceOverrides = {};\n }\n\n this.requests = this.amfOperation.requests.map((request) => {\n return {\n queryParameters: this.buildParams(request.queryParameters),\n uriParameters: this.buildParams(request.uriParameters),\n payloads: this.buildPayloads(request),\n cookies: this.buildParams(request.cookieParameters),\n headers: this.buildParams(request.headers),\n };\n });\n this.responses = this.amfOperation.responses.map((response) => {\n const extensionsRaw = extractExtensions(response.customDomainProperties);\n\n if (extensionsRaw.onestore !== undefined) {\n const extensionsResult = cacheInvalidationSchema.safeParse(extensionsRaw);\n\n if (!extensionsResult.success) {\n const message = formatZodError(extensionsResult.error);\n this.fileParserLogger.error(\n this.amfOperation.position.start,\n `Error validating operation invalidation annotation:\\n${message}`\n );\n throw new Error(\n `Error validating operation invalidation annotation:\\n${message}`\n );\n }\n\n const extensions = extensionsResult.data;\n if (\n Object.keys(extensions.onestore.invalidate).length > 0 &&\n this.operationType === 'query'\n ) {\n this.fileParserLogger.error(\n this.position,\n `Cannot use an invalidate extension on a query type adapter`\n );\n throw new Error();\n }\n return {\n statusCode: response.statusCode.value() as StatusCode,\n headers: this.buildParams(response.headers),\n payloads: this.buildPayloads(response),\n invalidation: extensions.onestore.invalidate,\n };\n }\n\n return {\n statusCode: response.statusCode.value() as StatusCode,\n headers: this.buildParams(response.headers),\n payloads: this.buildPayloads(response),\n };\n });\n }\n\n get cacheStrategy(): CacheStrategy {\n return this.parsedCacheStrategy;\n }\n\n buildPayloads(r: amf.Request | amf.Response): Payload[] {\n return r.payloads.map((payload) => {\n return {\n mediaType: payload.mediaType.value() as Payload['mediaType'],\n data: this.amfTypeFactory(\n {} as any,\n payload.schema,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true\n ),\n };\n });\n }\n\n getDefaultValue(param: amf.Parameter) {\n const defaultValue = param.schema?.defaultValue as any;\n if (defaultValue) {\n return defaultValue.value?.value();\n }\n }\n\n buildParams(p: amf.Parameter[]): Record<string, Parameter> {\n const params: Record<string, Parameter> = {};\n p.forEach((param) => {\n params[`${param.name.value()}`] = {\n required: param.required.value(),\n type: this.amfTypeFactory(\n {} as any,\n param.schema,\n this.typeRegistry,\n this.logger,\n this.fileParserLogger,\n true\n ) as ScalarType,\n explode: param.explode.value(),\n defaultValue: this.getDefaultValue(param),\n };\n });\n return params;\n }\n}\n\nexport class AmfHttpOperation extends AmfBaseOperation implements BaseHttpOperation {\n readonly type = 'http';\n}\n\nexport class AmfHttpOperationWithRequestBody\n extends AmfBaseOperation\n implements HttpOperationWithRequestBody\n{\n readonly type = 'http';\n configBodyParam: string;\n constructor(\n amfOperation: amf.Operation,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n endpoint: AmfEndPoint,\n server: Server\n ) {\n super(\n amfOperation,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n endpoint,\n server\n );\n const hasRequestBody = amfOperation.requests.some((request) => request.payloads.length > 0);\n if (!hasRequestBody) {\n throw new Error('Operation must have a request body defined');\n }\n this.method = amfOperation.method.value().toUpperCase() as HttpMethod;\n\n const extensionsRaw = extractExtensions(amfOperation.customDomainProperties);\n\n const extensionsResult = this.operationSchemaBuilder\n .buildHttpOperationSchema()\n .default({})\n .safeParse(extensionsRaw);\n\n if (!extensionsResult.success) {\n const message = formatZodError(extensionsResult.error);\n this.fileParserLogger.error(\n this.amfOperation.position.start,\n `Error validating aura operation:\\n${message}`\n );\n throw new Error();\n }\n\n const extensions = extensionsResult.data;\n if (!extensions.onestore.config['body-param']) {\n throw new Error('Missing body-param');\n }\n this.configBodyParam = extensions.onestore.config['body-param'];\n }\n}\n\nexport class AmfAuraOperation extends AmfBaseOperation implements BaseAuraOperation {\n readonly type = 'aura';\n method: HttpMethod;\n aura: { methodName: string };\n\n constructor(\n amfOperation: amf.Operation,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n endpoint: AmfEndPoint,\n server: Server\n ) {\n super(\n amfOperation,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n endpoint,\n server\n );\n\n const hasRequestBody = amfOperation.requests.some((request) => request.payloads.length > 0);\n if (hasRequestBody) {\n throw new Error('Operation must not have a request body defined');\n }\n this.method = amfOperation.method.value().toUpperCase() as HttpMethod;\n const extensionsRaw = extractExtensions(amfOperation.customDomainProperties);\n\n const extensionsResult = this.operationSchemaBuilder\n .buildAuraOperationSchema()\n .safeParse(extensionsRaw);\n\n if (!extensionsResult.success) {\n const message = formatZodError(extensionsResult.error);\n this.fileParserLogger.error(\n this.amfOperation.position.start,\n `Error validating aura operation:\\n${message}`\n );\n throw new Error();\n }\n\n const extensions = extensionsResult.data;\n\n this.aura = { methodName: extensions.onestore.config.aura.method };\n }\n}\n\nexport class AmfAuraOperationWithRequestBody\n extends AmfBaseOperation\n implements AuraOperationWithRequestBody\n{\n readonly type = 'aura';\n method: HttpMethod;\n configBodyParam: string;\n aura: { methodName: string; bodyParam: string };\n\n constructor(\n amfOperation: amf.Operation,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n endpoint: AmfEndPoint,\n server: Server\n ) {\n super(\n amfOperation,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n endpoint,\n server\n );\n\n const hasRequestBody = amfOperation.requests.some((request) => request.payloads.length > 0);\n if (!hasRequestBody) {\n throw new Error('Operation must have a request body defined');\n }\n this.method = amfOperation.method.value().toUpperCase() as HttpMethod;\n\n const extensionsRaw = extractExtensions(amfOperation.customDomainProperties);\n\n const extensionsResult = this.operationSchemaBuilder\n .buildAuraOperationWithBodySchema()\n .safeParse(extensionsRaw);\n\n if (!extensionsResult.success) {\n const message = formatZodError(extensionsResult.error);\n this.fileParserLogger.error(\n this.amfOperation.position.start,\n `Error validating aura operation:\\n${message}`\n );\n throw new Error();\n }\n\n const extensions = extensionsResult.data;\n if (extensions.onestore.config['body-param'] === undefined) {\n throw new Error('Missing body param');\n }\n if (extensions.onestore.config.aura['body-param'] === undefined) {\n throw new Error('Missing aura body param');\n }\n this.configBodyParam = extensions.onestore.config['body-param'];\n this.aura = {\n methodName: extensions.onestore.config.aura.method,\n bodyParam: extensions.onestore.config.aura['body-param'],\n };\n }\n}\n\ntype AmfBaseOperationConstructor = new (...args: any[]) => AmfBaseOperation & BaseOperation;\nexport function AmfGraphQLOperationMixin<T extends AmfBaseOperationConstructor>(\n Base: T\n): T & (new (...args: any[]) => BaseGraphQLOperation) {\n return class AmfGraphQLOperation extends Base implements BaseGraphQLOperation {\n readonly operationType = 'graphql';\n graphqlConfig: GraphQLConfig;\n\n constructor(...args: any[]) {\n super(...args);\n this.graphqlConfig = this.setupGraphQLConfig();\n }\n setupGraphQLConfig() {\n const extensionsRaw = extractExtensions(this.amfOperation.customDomainProperties);\n\n const extensionsResult = this.operationSchemaBuilder\n .buildGraphQLOperationSchema()\n .safeParse(extensionsRaw);\n\n if (!extensionsResult.success) {\n const message = formatZodError(extensionsResult.error);\n this.fileParserLogger.error(\n this.amfOperation.position.start,\n `Error validating graphql operation:\\n${message}`\n );\n throw new Error(message);\n }\n\n const extensions = extensionsResult.data;\n\n const config = {\n schemaFilePath: extensions.onestore.config.graphql.schema,\n 'type-metadata': extensions.onestore.config.graphql['type-metadata'],\n };\n\n return config;\n }\n };\n}\n","import { z } from 'zod';\nimport { formatZodError } from '../../zod-utils';\nimport { extractExtensions } from '../amf-extensions';\nimport {\n AmfAuraOperationWithRequestBody,\n AmfAuraOperation,\n AmfHttpOperation,\n AmfHttpOperationWithRequestBody,\n AmfGraphQLOperationMixin,\n} from './amf-operation';\nimport type {\n AuraController,\n AuraEndPoint,\n BaseEndPoint,\n HttpEndPoint,\n Parameter,\n Operation,\n Server,\n API,\n} from '../../api';\nimport type { AMFType, AMFTypeFactory } from '../types';\nimport type { TypeRegistry } from '../../types';\nimport type { FileParserLogger, LoggerService } from '@conduit-client/utils';\nimport type { StringType } from '../../types';\nimport type amf from 'amf-client-js';\nimport { validateUniqueBindingIdentfiers } from '../../api/validation';\n\nexport type AmfEndPoint = AmfAuraEndpoint | AmfHttpEndPoint;\nexport type NetworkPreference = 'aura' | 'http';\n\nconst endpointSchema = z.object({\n onestore: z\n .discriminatedUnion('endpoint-type', [\n z\n .object({\n 'endpoint-type': z.literal('http'),\n })\n .strict(),\n z\n .object({\n 'endpoint-type': z.literal('aura'),\n config: z.object({\n aura: z.object({\n controller: z.string(),\n }),\n }),\n 'network-preference': z.enum(['aura', 'http']).default('aura'),\n })\n .strict(),\n ])\n .optional(),\n});\n\nconst partialOperationSchema = z.object({\n onestore: z\n .object({\n config: z\n .object({\n 'operation-type': z.enum(['query', 'mutation', 'graphql']).optional(),\n })\n .passthrough() // Allow additional properties\n .optional(),\n })\n .passthrough() // Allow additional properties\n .optional(),\n});\n\nfunction createAmfAuraEndpoint(\n amfEndpoint: amf.EndPoint,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n server: Server,\n api: API,\n networkPreference: NetworkPreference\n): AmfAuraEndpoint {\n const endpoint = new AmfAuraEndpoint(\n amfEndpoint,\n [],\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n api,\n networkPreference\n );\n const operations = amfEndpoint.operations.map((operation) => {\n const extensionsRaw = extractExtensions(operation.customDomainProperties);\n\n const operationConfigValidationResult = partialOperationSchema.safeParse(extensionsRaw);\n\n if (!operationConfigValidationResult.success) {\n const message = formatZodError(operationConfigValidationResult.error);\n fileParserLogger.error(\n operation.position.start,\n `Errors validating operation:\\n${message}`\n );\n throw new Error();\n }\n const hasRequestBody = operation.requests.some((request) => request.payloads.length > 0);\n const isGraphQLOperation =\n operationConfigValidationResult.data.onestore?.config?.['operation-type'] === 'graphql';\n let baseClass = isGraphQLOperation\n ? AmfGraphQLOperationMixin(\n hasRequestBody ? AmfAuraOperationWithRequestBody : AmfAuraOperation\n )\n : hasRequestBody\n ? AmfAuraOperationWithRequestBody\n : AmfAuraOperation;\n\n return new baseClass(\n operation,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n endpoint,\n server\n );\n });\n\n endpoint.operations = operations;\n\n return endpoint;\n}\n\nfunction createAmfHttpEndpoint(\n amfEndpoint: amf.EndPoint,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n server: Server,\n api: API\n): AmfHttpEndPoint {\n const endpoint = new AmfHttpEndPoint(\n amfEndpoint,\n [],\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n api\n );\n const operations = amfEndpoint.operations.map((operation) => {\n const operationConfigValidationResult = partialOperationSchema.safeParse(\n extractExtensions(operation.customDomainProperties)\n );\n if (!operationConfigValidationResult.success) {\n const message = formatZodError(operationConfigValidationResult.error);\n const errorMessage = `Error validating operation:\\n${message}`;\n fileParserLogger.error(operation.position.start, errorMessage);\n throw new Error(errorMessage);\n }\n\n const hasRequestBody = operation.requests.some((request) => request.payloads.length > 0);\n const isGraphQLOperation =\n operationConfigValidationResult.data.onestore?.config?.['operation-type'] === 'graphql';\n let baseClass = isGraphQLOperation\n ? AmfGraphQLOperationMixin(\n hasRequestBody ? AmfHttpOperationWithRequestBody : AmfHttpOperation\n )\n : hasRequestBody\n ? AmfHttpOperationWithRequestBody\n : AmfHttpOperation;\n\n return new baseClass(\n operation,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n endpoint,\n server\n );\n });\n\n endpoint.operations = operations;\n return endpoint;\n}\n\nexport function amfEndpointFactory(\n amfEndpoint: amf.EndPoint,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n logger: LoggerService,\n fileParserLogger: FileParserLogger,\n server: Server,\n api: API\n): AmfEndPoint | undefined {\n const endpointConfigValidationResult = endpointSchema.safeParse(\n extractExtensions(amfEndpoint.customDomainProperties)\n );\n if (!endpointConfigValidationResult.success) {\n const message = formatZodError(endpointConfigValidationResult.error);\n const errorMessage = `Error validating endpoint:\\n${message}`;\n fileParserLogger.error(amfEndpoint.position.start, errorMessage);\n throw new Error(errorMessage);\n }\n\n const config = endpointConfigValidationResult.data;\n\n if (config.onestore === undefined) {\n return undefined;\n }\n const endpoint =\n config.onestore['endpoint-type'] === 'aura'\n ? createAmfAuraEndpoint(\n amfEndpoint,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n server,\n api,\n config.onestore['network-preference']\n )\n : createAmfHttpEndpoint(\n amfEndpoint,\n amfTypeFactory,\n typeRegistry,\n logger,\n fileParserLogger,\n server,\n api\n );\n\n // cross-endpoint validation to ensure that all operations have unique bindings\n if (!validateUniqueBindingIdentfiers(endpoint.operations)) {\n const errorMessage = `All operations must have unique bindings`;\n fileParserLogger.error(amfEndpoint.position.start, errorMessage);\n throw new Error(errorMessage);\n }\n\n return endpoint;\n}\n\nexport abstract class AmfBaseEndpoint implements BaseEndPoint {\n path: string;\n uriParameters: Record<string, Parameter>;\n abstract type: 'aura' | 'http';\n\n constructor(\n protected amfEndpoint: amf.EndPoint,\n public operations: ReadonlyArray<Operation>,\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger,\n public api: API\n ) {\n this.path = this.amfEndpoint.path.value();\n this.uriParameters = {};\n this.amfEndpoint.parameters.forEach((param) => {\n this.uriParameters[`${param.name}`] = {\n required: param.required.value(),\n type: amfTypeFactory(\n this.api,\n param.schema,\n typeRegistry,\n logger,\n fileParserLogger,\n true\n ) as StringType,\n explode: param.explode.value(),\n };\n });\n }\n}\n\nexport class AmfHttpEndPoint extends AmfBaseEndpoint implements HttpEndPoint {\n readonly type = 'http';\n}\n\nexport class AmfAuraEndpoint extends AmfBaseEndpoint implements AuraEndPoint {\n readonly type = 'aura';\n auraController: AuraController;\n constructor(\n amfEndPoint: amf.EndPoint,\n operations: Operation[],\n amfTypeFactory: AMFTypeFactory,\n typeRegistry: TypeRegistry<AMFType>,\n protected logger: LoggerService,\n protected fileParserLogger: FileParserLogger,\n public api: API,\n public networkPreference: NetworkPreference\n ) {\n super(amfEndPoint, operations, amfTypeFactory, typeRegistry, logger, fileParserLogger, api);\n this.auraController = this.buildAuraController();\n }\n\n buildAuraController(): AuraController {\n const configResult = endpointSchema.safeParse(\n extractExtensions(this.amfEndpoint.customDomainProperties)\n );\n\n if (!configResult.success) {\n const message = formatZodError(configResult.error);\n const errorMessage = `Error validating aura endpoint:\\n${message}`;\n this.fileParserLogger.error(this.amfEndpoint.position.start, errorMessage);\n throw new Error(errorMessage);\n }\n\n const config = configResult.data;\n\n if (!config.onestore || config.onestore['endpoint-type'] !== 'aura') {\n throw new Error('invalid config');\n }\n const name = config.onestore.config.aura.controller;\n\n if (name === undefined) {\n throw new Error('Aura controller name must be defined for an Aura endpoint.');\n }\n\n return { name };\n }\n}\n","import { stringIsVersion, type Version } from '@conduit-client/utils';\nimport { z } from 'zod';\nimport { formatZodError } from '../zod-utils';\nimport { extractExtensions } from './amf-extensions';\nimport type amf from 'amf-client-js';\n\nconst rootSchema = z.object({\n onestore: z.object({\n version: z.string().refine(stringIsVersion, () => {\n return {\n message: 'Version must satisfy format major[.minor[.patch]]',\n };\n }),\n }),\n});\n\nexport function getAmfAnnotationVersion(webApi: amf.WebApi): Version {\n const configRaw = extractExtensions(webApi.customDomainProperties);\n\n const config = rootSchema.safeParse(configRaw);\n if (!config.success) {\n const validationMessage = formatZodError(config.error);\n throw new Error(`Error validating root x-onestore extension:\\n${validationMessage}`);\n }\n\n return config.data.onestore.version;\n}\n","import { lineFormatter } from '@conduit-client/utils';\nimport { buildApiValidatorFor } from '../api';\nimport { ValidationSeverity } from '../validation';\nimport type { FileParserLogger } from '@conduit-client/utils';\nimport type { AMFAPI } from './AMFAPI';\nimport { ValidationMessage, ValidationType } from '../validation';\n\ntype LineFormatter = (pos: { line: number; column: number }, msg: string) => string;\n\nfunction getShapePosition(subject: any, validationType: ValidationType) {\n // operation position is in line, column format\n if (validationType === ValidationType.Operation) {\n return subject.position || { line: 0, column: 0 };\n }\n\n return subject.shape?.position?.start || { line: 0, column: 0 };\n}\n\nfunction formatMessage(\n messages: ValidationMessage<unknown>[],\n lineFormatter: LineFormatter,\n level = 0\n): string {\n const padding = Array(4 * level)\n .fill(' ')\n .join('');\n\n return messages.reduce((result, message) => {\n const position = getShapePosition(message.subject, message.validationType);\n\n return `${result}${padding}- ${lineFormatter(position, message.message)}\n${formatMessage(message.subValidationMessages ?? [], lineFormatter, level + 1)}`;\n }, '');\n}\n\n/**\n * Validates the @api and logs any information related to validation. Returns\n * true when the @api model is valid and false otherwise.\n *\n * @param api\n * @param fileParserlogger\n * @returns true when the @api model is valid, false otherwise.\n */\nexport function isValidAmfAPI(api: AMFAPI, fileParserlogger: FileParserLogger): boolean {\n const formatter: LineFormatter = (pos, msg) => {\n return lineFormatter(pos, msg, fileParserlogger.filePath);\n };\n\n const apiValidator = buildApiValidatorFor(api);\n\n const result = apiValidator.validate(api);\n const isValid = result.isOk();\n const messages = isValid ? result.value : result.error;\n\n for (const {\n message,\n subject,\n severity,\n validationType,\n subValidationMessages: extraValidation,\n } of messages) {\n let lineMessage = message;\n if (extraValidation !== undefined) {\n const formattedValidation = `${formatMessage(extraValidation, formatter, 1)}`;\n lineMessage = `${lineMessage}\\n${formattedValidation}`;\n }\n\n const position = getShapePosition(subject, validationType);\n if (severity === ValidationSeverity.Error) {\n fileParserlogger.error(position, lineMessage);\n } else if (severity === ValidationSeverity.Warning) {\n fileParserlogger.warn(position, lineMessage);\n } else if (severity === ValidationSeverity.Info) {\n fileParserlogger.info(position, lineMessage);\n }\n }\n\n return isValid;\n}\n","import path from 'path';\nimport { z } from 'zod';\nimport {\n satisfies,\n type FileParserLogger,\n type NamedLoggerService,\n type Version,\n} from '@conduit-client/utils';\nimport { BaseTypeRegistry } from '../types';\nimport { formatZodError } from '../zod-utils';\nimport { type AmfEndPoint, amfEndpointFactory } from './endpoints/amf-endpoint';\nimport { amfTypeFactory, cacheControl, operationCacheStrategy } from './types';\nimport { isTypeShape } from './amf-utils';\nimport { getAmfAnnotationVersion } from './version';\nimport { extractExtensions } from './amf-extensions';\nimport {\n servicesCatalogSchema,\n type ResolvedServiceOverrides,\n validateAndNormalizeCatalog,\n resolveDefaultServiceOverrides,\n} from '../api/service-overrides';\nimport { isValidAmfAPI } from './validation';\nimport type { AMFType } from './types';\nimport type { API, CacheStrategy, EndPoint, Parameter, Server } from '../api';\nimport type {\n ReadOnlyTypeRegistry,\n ScalarType,\n TypeCacheControlExtension,\n TypeRegistry,\n} from '../types';\nimport type * as amf from 'amf-client-js';\nimport type { NamedFeatureFlagsService } from '@conduit-client/service-feature-flags/v1';\n\nexport const V1_VERSION = '1.0.0' satisfies Version;\n\nconst oneStoreExtensionsSchema = z.object({\n onestore: z\n .object({\n defaults: z\n .object({\n operations: z.object({\n 'cache-strategy': z.discriminatedUnion('type', [\n z.object({ type: z.literal('none') }).strict(),\n z.object({ type: z.literal('resource') }).strict(),\n z.object({ type: z.literal('normalized') }).strict(),\n ]),\n }),\n schemas: z.object({\n 'cache-control': cacheControl,\n }),\n })\n .partial()\n .strict()\n .optional(),\n // Allow service catalog at root-level for reliability\n services: servicesCatalogSchema.optional(),\n namespace: z.string().optional(),\n version: z.string(),\n })\n .strict(),\n});\n\nexport const ANONYMOUS_TYPE_NAME = '<anonymous>';\n\nexport class AMFAPI implements API {\n typeRegistry?: TypeRegistry<AMFType>;\n _endpoints?: EndPoint[];\n _servers?: Server[];\n annotationsVersion?: string;\n basePath: string;\n private built = false;\n private parsedDefaultOperationCacheStrategyType?: Pick<CacheStrategy, 'type'>;\n private parsedDefaultTypeCacheControl?: Partial<TypeCacheControlExtension>;\n private parsedNamespace?: string;\n private defaultedNamespace: string;\n serviceOverrides?: ResolvedServiceOverrides;\n\n constructor(\n public readonly document: amf.Document,\n private services: NamedLoggerService & NamedFeatureFlagsService,\n private fileParserlogger: FileParserLogger\n ) {\n this.defaultedNamespace = path.parse(document.id).name;\n // Get the location, handling both AMF structures:\n // - Tests: document.location is a string (per TypeScript definitions)\n // - Production: document.location is an object with .value() method (AMF runtime behavior)\n const locationObj = document.location as any;\n const location =\n typeof locationObj === 'string'\n ? locationObj\n : typeof locationObj?.value === 'function'\n ? locationObj.value()\n : locationObj;\n\n let filePath: string;\n if (location && location.startsWith('file:')) {\n // Use URL constructor to properly parse file:// URLs\n filePath = new URL(location).pathname;\n } else {\n filePath = location;\n }\n this.basePath = path.dirname(filePath);\n\n this.checkAnnotationsVersion();\n this.setRootLevelAnnotations();\n }\n\n private build() {\n if (!this.built) {\n // eagerly setting to true, due to later builders leveraging getters that trigger building\n this.built = true;\n\n // ordering is crucial; data needs to be built before being consumed\n this.buildTypes();\n this.buildServers();\n this.buildEndpoints();\n\n this.validate();\n }\n }\n\n private buildEndpoints() {\n this._endpoints = (this.document.encodes as amf.WebApi).endPoints\n .map((endPoint) => {\n return amfEndpointFactory(\n endPoint,\n amfTypeFactory,\n this.types as TypeRegistry<AMFType>,\n this.services.logger,\n this.fileParserlogger,\n this.servers[0],\n this\n );\n })\n .filter<AmfEndPoint>((endpoint): endpoint is AmfEndPoint => endpoint !== undefined);\n }\n\n private buildServers() {\n if (this.webApi.servers.length === 0) {\n this.fileParserlogger.error(\n { line: this.webApi.position.lineFrom, column: this.webApi.position.columnFrom },\n `At least one server must be specified in your OpenAPI file. e.g.:\nservers:\n - url: http://localhost:3000\n description: Local development server`\n );\n throw new Error();\n }\n\n this._servers = this.webApi.servers.map((s) => {\n const uriParameters: Record<string, Parameter> = {};\n s.variables.forEach((param) => {\n uriParameters[`${param.name.value()}`] = {\n required: param.required.value(),\n type: amfTypeFactory(\n this,\n param.schema,\n this.types as TypeRegistry<AMFType>,\n this.services.logger,\n this.fileParserlogger\n ) as ScalarType,\n explode: param.explode.value(),\n };\n });\n return {\n url: s.url.value(),\n uriParameters,\n };\n });\n }\n\n private buildTypes() {\n this.services.logger.debug('AMFAPI - Building the type registry');\n const typeRegistry = (this.typeRegistry = new BaseTypeRegistry<AMFType>());\n\n // AMF allows circular references within types. This means that while iterating through\n // document.declares we may encounter types that are not yet in the TypeRegistry. To\n // handle this, we make two passes through the types.\n //\n // On the 1st pass we construct skeleton AMFTypes and add them to the TypeRegistry, but make\n // no attempt to parse or resolve nested type references, eg: inherited types, properties for object types.\n this.document.declares\n .filter(isTypeShape) // Only process types. https://github.com/aml-org/amf/blob/develop/documentation/model.md#anyshape\n .forEach((shape) => {\n const name = shape.name.value();\n this.services.logger.debug(`AMFAPI - Building AMF Type for ${name}`);\n const amfType = amfTypeFactory(\n this,\n shape,\n typeRegistry,\n this.services.logger,\n this.fileParserlogger\n );\n\n this.services.logger.debug(`AMFAPI - Setting ${name} in type registry`);\n typeRegistry.set(shape.name.value(), amfType);\n });\n\n // On the 2nd pass we iterate back through all the types in the registry and resolve them.\n typeRegistry.forEach((type, name) => {\n this.services.logger.debug(`AMFAPI - Resolving type ${name}`);\n type.resolve();\n });\n }\n\n get webApi(): amf.WebApi {\n return this.document.encodes as amf.WebApi;\n }\n\n get endpoints(): ReadonlyArray<EndPoint> {\n this.build();\n return this._endpoints!;\n }\n\n get defaults(): API['defaults'] {\n const operationCacheStrategy =\n this.parsedDefaultOperationCacheStrategyType ?? ({ type: 'none' } as const);\n const typeCacheControl = this.parsedDefaultTypeCacheControl;\n const services = resolveDefaultServiceOverrides(this.serviceOverrides);\n\n return {\n operationCacheStrategy,\n typeCacheControl,\n services,\n };\n }\n\n get servers(): ReadonlyArray<Server> {\n this.build();\n return this._servers!;\n }\n\n get types(): ReadOnlyTypeRegistry<AMFType> {\n this.build();\n return this.typeRegistry!;\n }\n\n get namespace(): string {\n if (this.parsedNamespace === undefined) {\n return this.defaultedNamespace;\n }\n\n return this.parsedNamespace;\n }\n\n checkAnnotationsVersion(): void {\n const version = getAmfAnnotationVersion(this.webApi);\n\n if (!satisfies(V1_VERSION, version)) {\n throw new Error(\n `Version ${version} requested cannot be satisfied by version ${V1_VERSION} of the AMF API.`\n );\n }\n }\n\n setRootLevelAnnotations(): void {\n const extensionsRaw = extractExtensions(this.webApi.customDomainProperties);\n const oneStoreExtensionsResult = oneStoreExtensionsSchema.safeParse(extensionsRaw);\n if (!oneStoreExtensionsResult.success) {\n const message = formatZodError(oneStoreExtensionsResult.error);\n throw new Error(message);\n }\n\n const onestore = oneStoreExtensionsResult.data.onestore;\n\n this.parsedDefaultOperationCacheStrategyType =\n onestore?.defaults?.operations?.['cache-strategy'];\n this.parsedDefaultTypeCacheControl = onestore?.defaults?.schemas?.['cache-control'];\n this.parsedNamespace = onestore?.namespace;\n\n if (this.parsedNamespace === undefined) {\n this.services.logger.warn(\n `AMFAPI - namespace is missing, will be defaulted \"${this.defaultedNamespace}\".`\n );\n }\n\n // Root-level services catalog under x-onestore\n if (onestore?.services) {\n this.serviceOverrides = validateAndNormalizeCatalog(onestore.services);\n }\n }\n\n /**\n * Validates all endpoints and types. A validation error will be thrown if any are invalid.\n *\n * @protected\n */\n public validate() {\n if (!isValidAmfAPI(this, this.fileParserlogger)) {\n throw new Error('API OneStore configuration failed validation');\n }\n }\n}\n","import { bfs, err, ok } from '@conduit-client/utils';\nimport type { AMFType, Operation, ReadOnlyTypeRegistry, Type } from '../../..';\nimport { ValidationMessage, Validator } from '../../../validation';\nimport { getFormattedMessage, isNormalizedOperation } from './utils';\nimport { ANONYMOUS_TYPE_NAME } from '../../../amf/AMFAPI';\n\n/**\n * Validates that if an operation is not normalized, its responses payloads has\n * NO references to identifiable (i.e., normalized) types\n */\nexport class NoNormalizedTypesValidator implements Validator<Operation, Operation | Type> {\n constructor(private types: ReadOnlyTypeRegistry) {}\n\n validate(operation: Operation) {\n // normalized operations are allowed to have normalized types\n if (isNormalizedOperation(operation)) {\n return ok([]);\n }\n\n // search for any nested identifiable types\n const identifiableTypes = new Set<Type>();\n operation.responses.forEach((response) => {\n return response.payloads.forEach((payload) => {\n this.findNestedIdentifiableTypes(payload.data).forEach((type) =>\n identifiableTypes.add(type)\n );\n });\n });\n\n const messages: ValidationMessage<Operation | Type>[] = [];\n\n // record an error if any were any identifiable types\n if (identifiableTypes.size > 0) {\n identifiableTypes.forEach((type) => {\n const typeName = this.types.nameOf(type as AMFType) || ANONYMOUS_TYPE_NAME;\n messages.push(\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}is not normalized but references the normalized type ${typeName} in its response`\n )\n );\n });\n\n return messages.length === 0 ? ok([]) : err(messages);\n }\n\n return ok([]);\n }\n\n /**\n * Completes a breadth-first search of a Type to locate any nested types that are identifiable.\n *\n * @returns a Set of all nested types that are identifiable.\n * @param start\n * @protected\n */\n findNestedIdentifiableTypes(start: Type) {\n return bfs(\n [start],\n (type) => type.extensions?.type === 'identifiable',\n (type) => {\n const typing = type.type;\n\n switch (typing) {\n case 'allOf':\n return type.allOf;\n case 'array':\n return [type.items];\n case 'object':\n return [\n ...Object.values(type.properties).map((property) => property.type),\n type.additionalProperties,\n ];\n case 'oneOf':\n return type.oneOf;\n case 'ref':\n return [type.$ref];\n case 'discriminatedObject':\n return [...Object.values(type.mapping), type.baseType];\n case 'any':\n case 'enum':\n case 'boolean':\n case 'double':\n case 'integer':\n case 'number':\n case 'string':\n case 'date':\n case 'datetime':\n case 'datetime-only':\n case 'nil':\n case 'not':\n case 'time':\n return [];\n default:\n throw new Error(\n `${typing} has not been accounted for when searching for nested identifiable types`\n );\n }\n }\n );\n }\n}\n","import { deepEquals, err, ok } from '@conduit-client/utils';\nimport type { AMFType, Operation, ReadOnlyTypeRegistry } from '../../..';\nimport { ValidationMessage, Validator } from '../../../validation';\nimport { getFormattedMessage, isNormalizedOperation } from './utils';\nimport { ANONYMOUS_TYPE_NAME } from '../../../amf/AMFAPI';\n\nexport class KeyMatchValidator<T extends Operation = Operation> implements Validator<T, Operation> {\n constructor(private types: ReadOnlyTypeRegistry) {}\n\n validate(operation: T) {\n if (!isNormalizedOperation(operation)) {\n return ok([]);\n }\n\n const operationHasKey = !!operation.cacheStrategy.key;\n\n let valid = true;\n const messages: ValidationMessage<Operation>[] = [];\n\n operation.responses.forEach((response) => {\n response.payloads.forEach((payload) => {\n if (payload.data.extensions?.type === 'identifiable') {\n const typeName =\n this.types.nameOf(payload.data as AMFType) || ANONYMOUS_TYPE_NAME;\n\n if (!operationHasKey) {\n valid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}is missing a key to match against its ${typeName} response type`\n )\n );\n } else if (!payload.data.extensions.key?.fields) {\n valid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}has a key but its ${typeName} response type doesn't have one to match against`\n )\n );\n } else if (\n !deepEquals(\n Object.keys(operation.cacheStrategy.key || {}),\n Object.keys(payload.data.extensions.key.fields)\n )\n ) {\n valid = false;\n messages.push(\n getFormattedMessage(\n operation,\n `Operation ${operation.operationId ? `${operation.operationId} ` : ``}and its ${typeName} response type have mismatched keys`\n )\n );\n }\n }\n });\n });\n\n return valid ? ok(messages) : err(messages);\n }\n}\n","import { err, ok } from '@conduit-client/utils';\nimport type { Operation, Type, Request, Response } from '../../..';\nimport { Validator } from '../../../validation';\nimport { getFormattedMessage } from './utils';\nimport { KeySourcesValidator } from '../../../types/validators/extensions';\n\n/**\n * Validates the body of a request or response supports a key path\n */\nexport class BodyDataValidator<T extends Operation = Operation>\n implements Validator<Operation, Operation | Type>\n{\n constructor(\n private target: Response | Request,\n private keys: string[],\n private keySourcesValidatorSupplier: (sources: string[]) => KeySourcesValidator\n ) {}\n\n validate(operation: T) {\n if (this.keys.length === 0) {\n return ok([]);\n }\n\n // need a JSON payload\n const jsonPayload = this.target.payloads.find((p) => p.mediaType === 'application/json');\n if (jsonPayload === undefined) {\n return err([\n getFormattedMessage(\n operation,\n `Use of 'body' keys requires a json payload: ${operation.method} ${operation.endpoint.path} has none.`\n ),\n ]);\n }\n\n // key path needs to be exist\n const result = this.keySourcesValidatorSupplier(this.keys).validate(jsonPayload.data);\n if (!result.isOk()) {\n const message = getFormattedMessage<Operation | Type>(\n operation,\n `Invalid body key(s) specified for ${operation.operationId || `${operation.method} ${operation.endpoint.path}`}`\n );\n message.subValidationMessages = result.error;\n\n return err([message]);\n }\n\n return ok([]);\n }\n}\n","import { API, Operation, type Request, type Response, Type } from '../../..';\nimport { compose, Validator } from '../../../validation';\nimport { KeySourceValidator } from './KeySourceValidator';\nimport { KeySourcesValidator } from '../../../types/validators/extensions';\nimport { Response200Validator } from './Response200Validator';\nimport { InvalidationValidator } from './InvalidationValidator';\nimport { NoNormalizedTypesValidator } from './NoNormalizedTypesValidator';\nimport { KeyMatchValidator } from './KeyMatchValidator';\nimport { BodyDataValidator } from './BodyDataValidator';\n\nexport function buildOperationValidator(api: API): Validator<Operation, Operation | Type> {\n const bodyDateValidatorSupplier = (target: Request | Response, sources: string[]) => {\n return new BodyDataValidator(target, sources, (keys: string[]) => {\n return new KeySourcesValidator(api.types, keys);\n });\n };\n\n return compose([\n new InvalidationValidator(api.types, bodyDateValidatorSupplier),\n new KeySourceValidator(bodyDateValidatorSupplier),\n new Response200Validator(),\n new NoNormalizedTypesValidator(api.types),\n new KeyMatchValidator(api.types),\n ]);\n}\n","import type { API, EndPoint, Operation, Type } from '../../..';\nimport { combineValidationResults, Validator } from '../../../validation';\nimport { buildOperationValidator } from '../operation';\n\nexport function buildEndpointValidator(api: API): Validator<EndPoint, EndPoint | Operation | Type> {\n const operationValidator = buildOperationValidator(api);\n\n return {\n validate(subject: EndPoint) {\n return combineValidationResults(\n subject.operations.map((operation) => operationValidator.validate(operation))\n );\n },\n };\n}\n","import { ok, err } from '@conduit-client/utils';\nimport {\n ValidationSeverity,\n ValidationType,\n type ValidationMessage,\n type ValidationResult,\n type Validator,\n} from '../../validation';\nimport { API, Operation } from '..';\n\ntype PathAndOperation = {\n path: string;\n operationId: string;\n};\n\nexport class BindingsValidation<S extends API = API> implements Validator<S, Operation> {\n constructor() {}\n validate(api: S): ValidationResult<Operation> {\n const messages: ValidationMessage<Operation>[] = [];\n const endpoints = api.endpoints;\n const identToPathAndOperation = new Map<string, PathAndOperation>();\n for (const endpoint of endpoints) {\n const { path, operations } = endpoint;\n for (const operation of operations) {\n const operationId =\n operation.operationId || `${operation.method} ${operation.endpoint.path}`;\n const { bindings } = operation;\n for (const binding of bindings) {\n const { identifier } = binding;\n if (identToPathAndOperation.has(identifier)) {\n const existing = identToPathAndOperation.get(identifier)!;\n messages.push({\n severity: ValidationSeverity.Error,\n message: `Binding identifier '${identifier}' in operation '${operationId}' is already used in path '${existing.path}' and operation '${existing.operationId}'`,\n subject: operation,\n validationType: ValidationType.Operation,\n });\n } else {\n identToPathAndOperation.set(identifier, { path, operationId });\n }\n }\n }\n }\n return messages.length > 0 ? err(messages) : ok(messages);\n }\n}\n","import { Result } from '@conduit-client/utils';\nimport { buildTypeValidator } from '../../types';\nimport type { API } from '../api';\nimport { combineValidationResults, type ValidationMessage, type Validator } from '../../validation';\nimport type { Type } from '../../types';\nimport type { EndPoint, Operation } from '../endpoint';\nimport { buildEndpointValidator } from './endpoint';\nimport { BindingsValidation } from './bindings';\n\ntype MessageSourceTypes = API | Type | EndPoint | Operation;\n\nexport class ApiValidator implements Validator<API, MessageSourceTypes> {\n constructor(\n private apiValidators: Validator<API, MessageSourceTypes>[],\n private typeValidator: Validator<Type, Type>,\n private endpointValidator: Validator<EndPoint, MessageSourceTypes>\n ) {}\n\n validate(subject: API) {\n const results = [\n this.validateCollection(subject.types.values(), this.typeValidator),\n this.validateCollection(subject.endpoints, this.endpointValidator),\n ...this.apiValidators.map((v) => v.validate(subject)),\n ];\n\n return combineValidationResults(results);\n }\n\n private validateCollection<T, R>(\n items: Iterable<T>,\n validator: { validate: (item: T) => Result<ValidationMessage<R>[], ValidationMessage<R>[]> }\n ): Result<ValidationMessage<R>[], ValidationMessage<R>[]> {\n const results = [];\n\n for (const item of items) {\n results.push(validator.validate(item));\n }\n\n return combineValidationResults(results);\n }\n}\n\nexport function buildApiValidatorFor(api: API): Validator<API, MessageSourceTypes> {\n const typeValidation = buildTypeValidator(api.types);\n const apiValidators = [new BindingsValidation()];\n const endpointValidation = buildEndpointValidator(api);\n\n return new ApiValidator(apiValidators, typeValidation, endpointValidation);\n}\n\n// TODO: Convert this into a Validator<Endpoint, Operation> so that more granular location information can be provided in the error message.\nexport function validateUniqueBindingIdentfiers(operations: readonly Operation[]): boolean {\n const operationsBindings = operations\n .map(({ bindings }) => bindings.map(({ identifier }) => identifier))\n .flat();\n const uniqueBindings = new Set(operationsBindings);\n return operationsBindings.length === uniqueBindings.size;\n}\n","import amf from 'amf-client-js';\nimport { AMFAPI } from './AMFAPI';\nimport type { FileParserLogger, NamedLoggerService } from '@conduit-client/utils';\nimport type { Document } from 'amf-client-js';\nimport type { NamedFeatureFlagsService } from '@conduit-client/service-feature-flags/v1';\n\nexport async function parseAmfDocument(\n source: URL,\n logger: FileParserLogger\n): Promise<amf.Document> {\n const parseResult = await amf.APIConfiguration.API().baseUnitClient().parse(source.toString());\n\n parseResult.results.forEach((result) => logResult(result, logger));\n\n if (!parseResult.conforms) {\n throw new Error(`IDL file ${source.toString()} has errors.`);\n }\n\n return parseResult.baseUnit as Document;\n}\nexport async function parseUrl(\n source: URL,\n services: NamedLoggerService & NamedFeatureFlagsService,\n fileParserLogger: FileParserLogger\n): Promise<AMFAPI> {\n const api = new AMFAPI(\n await parseAmfDocument(source, fileParserLogger),\n services,\n fileParserLogger\n );\n\n api.validate(); // will throw if invalid.\n\n return api;\n}\n\nfunction logResult(result: amf.AMFValidationResult, logger: FileParserLogger): void {\n const position = { line: result.position.lineFrom, column: result.position.columnFrom };\n const { message } = result;\n switch (result.severityLevel) {\n case 'Info':\n logger.info(position, message);\n break;\n case 'Warning':\n logger.warn(position, message);\n break;\n case 'Violation':\n case 'Partial':\n default:\n logger.error(position, message);\n }\n}\n","import * as url from 'url';\nimport { DefaultFileParserLogger } from '@conduit-client/utils';\nimport { parseUrl } from './parser';\nimport type { API, APIService } from '../api';\nimport type { NamedLoggerService } from '@conduit-client/utils';\nimport type { NamedFeatureFlagsService } from '@conduit-client/service-feature-flags/v1';\n\n/**\n * An APIService based on the AMF API code.\n */\nclass AMFAPIService implements APIService {\n // most recently created API\n _api: API | undefined;\n\n constructor(private services: NamedLoggerService & NamedFeatureFlagsService) {}\n\n get api(): API {\n if (!this._api) {\n throw new Error('api must be created before being used');\n }\n\n return this._api;\n }\n\n async build(args: { url: URL } | { filename: string }): Promise<API> {\n const ramlUrl = 'filename' in args ? (url.pathToFileURL(args.filename) as URL) : args.url;\n const ramlFilePath = 'filename' in args ? args.filename : args.url.toString();\n return (this._api = await parseUrl(\n ramlUrl,\n this.services,\n new DefaultFileParserLogger(this.services, ramlFilePath)\n ));\n }\n}\n\n/**\n * Returns a new APIService based on the AMF API code.\n * @returns a new APIService\n */\nexport function amfAPIService(services: NamedLoggerService & NamedFeatureFlagsService): APIService {\n return new AMFAPIService(services);\n}\n\n/**\n * Wraps an already-created API in an APIService.\n *\n * @param api an API\n * @returns\n */\nexport function asAPIService(api: API): APIService {\n const p = Promise.resolve(api);\n\n return {\n build: () => p,\n api,\n };\n}\n"],"names":["isArray","isScalar","ValidationType","ValidationSeverity","isValid","getFormattedMessage","path","util","objectUtil","errorUtil","errorMap","err","ctx","result","issues","elements","processed","ZodFirstPartyTypeKind","enumType","cacheControl","amfTypeFactory","extensionsRaw","extensionsResult","extensions","lineFormatter","operationCacheStrategy"],"mappings":"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","x_google_ignoreList":[15]}
|