aizek-chatbot 1.0.14 → 1.0.15
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/index.cjs +376 -18880
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +578 -18967
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/ajv/lib/compile/codegen/code.ts","../node_modules/ajv/lib/compile/codegen/scope.ts","../node_modules/ajv/lib/compile/codegen/index.ts","../node_modules/ajv/lib/compile/util.ts","../node_modules/ajv/lib/compile/names.ts","../node_modules/ajv/lib/compile/errors.ts","../node_modules/ajv/lib/compile/validate/boolSchema.ts","../node_modules/ajv/lib/compile/rules.ts","../node_modules/ajv/lib/compile/validate/applicability.ts","../node_modules/ajv/lib/compile/validate/dataType.ts","../node_modules/ajv/lib/compile/validate/defaults.ts","../node_modules/ajv/lib/vocabularies/code.ts","../node_modules/ajv/lib/compile/validate/keyword.ts","../node_modules/ajv/lib/compile/validate/subschema.ts","../node_modules/fast-deep-equal/index.js","../node_modules/json-schema-traverse/index.js","../node_modules/ajv/lib/compile/resolve.ts","../node_modules/ajv/lib/compile/validate/index.ts","../node_modules/ajv/lib/runtime/validation_error.ts","../node_modules/ajv/lib/compile/ref_error.ts","../node_modules/ajv/lib/compile/index.ts","../node_modules/ajv/dist/refs/data.json","../node_modules/fast-uri/lib/utils.js","../node_modules/fast-uri/lib/schemes.js","../node_modules/fast-uri/index.js","../node_modules/ajv/lib/runtime/uri.ts","../node_modules/ajv/lib/core.ts","../node_modules/ajv/lib/vocabularies/core/id.ts","../node_modules/ajv/lib/vocabularies/core/ref.ts","../node_modules/ajv/lib/vocabularies/core/index.ts","../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../node_modules/ajv/lib/runtime/ucs2length.ts","../node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../node_modules/ajv/lib/vocabularies/validation/pattern.ts","../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../node_modules/ajv/lib/vocabularies/validation/required.ts","../node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../node_modules/ajv/lib/runtime/equal.ts","../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../node_modules/ajv/lib/vocabularies/validation/const.ts","../node_modules/ajv/lib/vocabularies/validation/enum.ts","../node_modules/ajv/lib/vocabularies/validation/index.ts","../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../node_modules/ajv/lib/vocabularies/applicator/items.ts","../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../node_modules/ajv/lib/vocabularies/applicator/contains.ts","../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../node_modules/ajv/lib/vocabularies/applicator/properties.ts","../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../node_modules/ajv/lib/vocabularies/applicator/not.ts","../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../node_modules/ajv/lib/vocabularies/applicator/if.ts","../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../node_modules/ajv/lib/vocabularies/applicator/index.ts","../node_modules/ajv/lib/vocabularies/format/format.ts","../node_modules/ajv/lib/vocabularies/format/index.ts","../node_modules/ajv/lib/vocabularies/metadata.ts","../node_modules/ajv/lib/vocabularies/draft7.ts","../node_modules/ajv/lib/vocabularies/discriminator/types.ts","../node_modules/ajv/lib/vocabularies/discriminator/index.ts","../node_modules/ajv/dist/refs/json-schema-draft-07.json","../node_modules/ajv/lib/ajv.ts","../node_modules/ajv-formats/src/formats.ts","../node_modules/ajv-formats/src/limit.ts","../node_modules/ajv-formats/src/index.ts","../src/services/chat-widget-api.ts","../src/utils/cx.ts","../src/store/static.ts","../src/components/header-alert/index.tsx","../src/components/loading-spinner/index.tsx","../src/components/chat-input/index.tsx","../src/components/generative-ui/index.tsx","../src/components/message-bubble/index.tsx","../src/components/typing-dots/index.tsx","../node_modules/@anthropic-ai/sdk/internal/tslib.mjs","../node_modules/@anthropic-ai/sdk/src/internal/utils/uuid.ts","../node_modules/@anthropic-ai/sdk/src/internal/errors.ts","../node_modules/@anthropic-ai/sdk/src/core/error.ts","../node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts","../node_modules/@anthropic-ai/sdk/src/internal/utils/sleep.ts","../node_modules/@anthropic-ai/sdk/src/version.ts","../node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts","../node_modules/@anthropic-ai/sdk/src/internal/shims.ts","../node_modules/@anthropic-ai/sdk/src/internal/request-options.ts","../node_modules/@anthropic-ai/sdk/src/internal/utils/bytes.ts","../node_modules/@anthropic-ai/sdk/src/internal/decoders/line.ts","../node_modules/@anthropic-ai/sdk/src/internal/utils/log.ts","../node_modules/@anthropic-ai/sdk/src/core/streaming.ts","../node_modules/@anthropic-ai/sdk/src/internal/parse.ts","../node_modules/@anthropic-ai/sdk/src/core/api-promise.ts","../node_modules/@anthropic-ai/sdk/src/core/pagination.ts","../node_modules/@anthropic-ai/sdk/src/internal/uploads.ts","../node_modules/@anthropic-ai/sdk/src/internal/to-file.ts","../node_modules/@anthropic-ai/sdk/src/core/resource.ts","../node_modules/@anthropic-ai/sdk/src/internal/headers.ts","../node_modules/@anthropic-ai/sdk/src/internal/utils/path.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/models.ts","../node_modules/@anthropic-ai/sdk/src/internal/constants.ts","../node_modules/@anthropic-ai/sdk/src/lib/beta-parser.ts","../node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/parser.ts","../node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts","../node_modules/@anthropic-ai/sdk/src/lib/tools/CompactionControl.ts","../node_modules/@anthropic-ai/sdk/src/lib/tools/BetaToolRunner.ts","../node_modules/@anthropic-ai/sdk/src/internal/decoders/jsonl.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/messages/batches.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/skills/versions.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/skills/skills.ts","../node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts","../node_modules/@anthropic-ai/sdk/src/resources/completions.ts","../node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts","../node_modules/@anthropic-ai/sdk/src/resources/messages/batches.ts","../node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts","../node_modules/@anthropic-ai/sdk/src/resources/models.ts","../node_modules/@anthropic-ai/sdk/src/internal/utils/env.ts","../node_modules/@anthropic-ai/sdk/src/client.ts","../node_modules/zod/v4/core/core.js","../node_modules/zod/v4/core/util.js","../node_modules/zod/v4/core/errors.js","../node_modules/zod/v4/core/parse.js","../node_modules/zod/v4/core/regexes.js","../node_modules/zod/v4/core/checks.js","../node_modules/zod/v4/core/doc.js","../node_modules/zod/v4/core/versions.js","../node_modules/zod/v4/core/schemas.js","../node_modules/zod/v4/locales/en.js","../node_modules/zod/v4/core/registries.js","../node_modules/zod/v4/core/api.js","../node_modules/@modelcontextprotocol/sdk/src/server/zod-compat.ts","../node_modules/zod/v4/classic/iso.js","../node_modules/zod/v4/classic/errors.js","../node_modules/zod/v4/classic/parse.js","../node_modules/zod/v4/classic/schemas.js","../node_modules/zod/v4/classic/compat.js","../node_modules/zod/v4/classic/external.js","../node_modules/@modelcontextprotocol/sdk/src/types.ts","../node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../node_modules/@modelcontextprotocol/sdk/src/server/zod-json-schema-compat.ts","../node_modules/@modelcontextprotocol/sdk/src/shared/protocol.ts","../node_modules/@modelcontextprotocol/sdk/src/validation/ajv-provider.ts","../node_modules/@modelcontextprotocol/sdk/src/client/index.ts","../node_modules/eventsource-parser/src/errors.ts","../node_modules/eventsource-parser/src/parse.ts","../node_modules/eventsource/src/errors.ts","../node_modules/eventsource/src/EventSource.ts","../node_modules/@modelcontextprotocol/sdk/src/shared/transport.ts","../node_modules/pkce-challenge/dist/index.node.js","../node_modules/@modelcontextprotocol/sdk/src/shared/auth.ts","../node_modules/@modelcontextprotocol/sdk/src/shared/auth-utils.ts","../node_modules/@modelcontextprotocol/sdk/src/server/auth/errors.ts","../node_modules/@modelcontextprotocol/sdk/src/client/auth.ts","../node_modules/@modelcontextprotocol/sdk/src/client/sse.ts","../src/utils/chatbot.ts","../src/components/aizek-chat/index.tsx"],"names":["_a","UsedValueState","error","mergeValues","Type","DataType","ipv6","path","esc","parse","Ajv","DiscrError","required","date","time","jsx","jsxs","useState","useRef","Fragment","ReactMarkdown","remarkGfm","useEffect","crypto","url","transform","Page","client","fetch","cached","_BetaMessageStream_getFinalMessage","_BetaMessageStream_getFinalText","_BetaMessageStream_beginRequest","_BetaMessageStream_addStreamEvent","_BetaMessageStream_endRequest","_BetaMessageStream_accumulateMessage","chunk","_BetaToolRunner_checkAndCompact","_BetaToolRunner_generateToolResponse","version","JSON_BUF_PROPERTY","tracksToolInput","_MessageStream_getFinalMessage","_MessageStream_getFinalText","_MessageStream_beginRequest","_MessageStream_addStreamEvent","checkNever","_MessageStream_endRequest","_MessageStream_accumulateMessage","Batches","Messages","DEPRECATED_MODELS","Models","opts","retryMessage","err","initializer","array","object","Class","config","issue","inst","checks","result","_","base64","isObject","allowsEval","r","results","left","right","output","_emoji","safeParse","def","datetime","duration","issues","parseAsync","safeParseAsync","check","string","number","boolean","ErrorCode","jsonrpcNotification","isPlainObject","_addFormats","_c","_b","noop","flattenError","_url","codeVerifier","tokens","normalizeHeaders","anthropic","mcpClient"],"mappings":"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","file":"index.cjs","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {data, $data, schema, schemaCode, it} = cxt\n // TODO regexp should be wrapped in try/catchs\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email:\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname:\n /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const {gen, data, schemaCode, keyword, it} = cxt\n const {opts, self} = it\n if (!opts.validateFormats) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","import { ChatWidgetApiResponse, ChatWidgetSettings } from '../types/chatbot';\r\nimport { BaseResponse } from '../types/global';\r\n\r\nconst API_BASE_URL = 'https://api-alpha.aizek.ai';\r\n\r\nexport const fetchChatWidgetSettings = async (clientId: string): Promise<BaseResponse<ChatWidgetApiResponse>> => {\r\n try {\r\n const response = await fetch(`${API_BASE_URL}/ChatWidgetSettings/GetByClientId?client_id=${clientId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data: BaseResponse<ChatWidgetApiResponse> = await response.json();\r\n return data;\r\n } catch (error) {\r\n console.error('Error fetching chat widget settings:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const mapApiSettingsToConfig = (apiSettings: ChatWidgetSettings | null) => {\r\n if (!apiSettings) {\r\n return null;\r\n }\r\n\r\n return {\r\n welcomeMessage: apiSettings.welcome_message,\r\n buttonBackground: apiSettings.button_background,\r\n placeholder: apiSettings.placeholder,\r\n buttonPosition: apiSettings.button_position,\r\n buttonSize: apiSettings.button_size || 'medium',\r\n chatWidth: apiSettings.chat_width,\r\n chatHeight: apiSettings.chat_height,\r\n showTypingIndicator: apiSettings.show_typing_indicator,\r\n initialOpen: apiSettings.initial_open,\r\n headerBackground: apiSettings.header_background,\r\n companyLogo: apiSettings.company_logo || undefined,\r\n companyName: apiSettings.company_name,\r\n };\r\n};\r\n","import { AuthConfig, HeadersType } from \"../types/chatbot\";\r\n\r\nexport function cx(...args: Array<string | false | null | undefined>): string {\r\n return args.filter(Boolean).join(\" \");\r\n}\r\n\r\nexport function validateHeaders(\r\n headers: HeadersType,\r\n authConfig: AuthConfig,\r\n opts: { caseSensitive?: boolean; allowExtra?: boolean } = {}\r\n) {\r\n const { caseSensitive = false, allowExtra = false } = opts;\r\n\r\n const normalize = (s: string) => (caseSensitive ? s : s.toLowerCase());\r\n\r\n const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);\r\n const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);\r\n\r\n const headerKeys = headerEntries.map(([k]) => k);\r\n const authKeys = authEntries.map(([k]) => k);\r\n\r\n const requiredSet = new Set(authKeys);\r\n\r\n const missingKeys = authKeys.filter(k => !headerKeys.includes(k));\r\n const extraKeys = headerKeys.filter(k => !requiredSet.has(k));\r\n\r\n // 🔍 1. Gerekli tüm key’ler mevcut mu?\r\n const hasAllRequired = missingKeys.length === 0;\r\n // 🔍 2. Fazla key var mı?\r\n const hasExtraKeys = extraKeys.length > 0 && !allowExtra;\r\n // 🔍 3. Gerekli değerler boş mu?\r\n const emptyValueKeys = authKeys.filter(k => {\r\n const val = headerEntries.find(([key]) => key === k)?.[1];\r\n return !val || val.length === 0;\r\n });\r\n\r\n const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;\r\n\r\n return { isValid, missingKeys, extraKeys, emptyValueKeys };\r\n}","import { ChatWidgetApiResponse } from \"../types/chatbot\";\r\n\r\nexport const defaultConfig: ChatWidgetApiResponse = {\r\n auth_config: {\r\n \"header\": \"\"\r\n },\r\n chat_widget_settings: {\r\n welcome_message: \"Merhaba! Size nasıl yardımcı olabilirim?\",\r\n button_background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\r\n placeholder: \"Mesajınızı yazın...\",\r\n button_position: \"bottom-left\",\r\n button_size: \"medium\",\r\n chat_width: \"400px\",\r\n chat_height: \"600px\",\r\n show_typing_indicator: true,\r\n initial_open: true,\r\n header_background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\r\n company_logo: \"\",\r\n company_name: \"Aizek\",\r\n api_source_id: 0,\r\n chat_widget_settings_id: 0,\r\n created_at: \"\",\r\n updated_at: \"\"\r\n },\r\n mcp_url: \"\",\r\n openai_key: \"\"\r\n};\r\n\r\nexport const GENERATIVE_UI_SYSTEM_PROMPT = `\r\nYou can generate interactive UI components as part of your responses.\r\nWhen users need to:\r\n- Provide multiple pieces of information → Generate a FORM\r\n- Make a choice between options → Generate BUTTONS\r\n- View structured data → Generate a TABLE or LIST\r\n- See entity details → Generate a CARD\r\n\r\nFor each component type, include JSON in this format:\r\n\r\n\\`\\`\\`ui-component\r\n{\r\n \"version\": \"1.0\",\r\n \"title\": string,\r\n \"description\"?: string,\r\n \"components\": Array<{\r\n id: string,\r\n type:\r\n | \"text\"\r\n | \"input\"\r\n | \"button\"\r\n | \"select\"\r\n | \"card\"\r\n | \"list\"\r\n | \"image\"\r\n | \"link\"\r\n | \"table\"\r\n | \"form\",\r\n label?: string,\r\n fieldType?: \"text\" | \"number\" | \"date\" | \"textarea\",\r\n requiredField?: boolean,\r\n placeholder?: string,\r\n options?: string[],\r\n columns?: string[],\r\n rows?: string[][],\r\n url?: string,\r\n fieldName?: string\r\n buttonType?: click | submit\r\n }>\r\n}\r\n\\`\\`\\`\r\n\r\n\r\n\r\n\r\n\r\nAlways provide both a conversational text response AND appropriate UI components.\r\n\r\n`;","import { Dispatch, SetStateAction } from \"react\";\r\n\r\ninterface IHeaderAlertProps {\r\n headerValidation: { isValid: boolean; missingKeys: string[]; extraKeys: string[]; emptyValueKeys: string[]; } | null\r\n showAlert: boolean,\r\n setShowAlert: Dispatch<SetStateAction<boolean>>\r\n}\r\nexport const HeaderAlert = ({ headerValidation, showAlert, setShowAlert }: IHeaderAlertProps) => {\r\n if (!headerValidation || !showAlert) return null;\r\n\r\n const { isValid, missingKeys, extraKeys, emptyValueKeys } =\r\n headerValidation;\r\n\r\n if (\r\n isValid &&\r\n missingKeys.length === 0 &&\r\n extraKeys.length === 0 &&\r\n emptyValueKeys.length === 0\r\n ) {\r\n return null;\r\n }\r\n\r\n const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;\r\n const hasWarnings = extraKeys.length > 0;\r\n const alertType = hasErrors ? \"error\" : \"warning\";\r\n\r\n const getAlertIcon = () => {\r\n if (hasErrors) {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\r\n </svg>\r\n );\r\n }\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\r\n </svg>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <div className={`alert-container ${alertType}`}>\r\n <div className=\"alert-icon-container\">{getAlertIcon()}</div>\r\n <div className=\"alert-content\">\r\n <h4 className=\"alert-title\">\r\n {hasErrors ? \"Header Doğrulama Hatası\" : \"Header Uyarısı\"}\r\n </h4>\r\n <p className=\"alert-message\">\r\n {hasErrors && hasWarnings\r\n ? \"Header yapılandırmanızda hatalar ve uyarılar bulundu.\"\r\n : hasErrors\r\n ? \"Header yapılandırmanızda hatalar bulundu.\"\r\n : \"Header yapılandırmanızda fazla anahtarlar bulundu.\"}\r\n </p>\r\n\r\n {missingKeys.length > 0 && (\r\n <div>\r\n <strong>Eksik Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {missingKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code>\r\n {key}\r\n </code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {emptyValueKeys.length > 0 && (\r\n <div>\r\n <strong >\r\n Boş Değerli Header'lar:\r\n </strong>\r\n <ul className=\"alert-list\">\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n <span >\r\n (değer boş olamaz)\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {extraKeys.length > 0 && (\r\n <div>\r\n <strong >Fazla Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {extraKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n <button\r\n onClick={() => setShowAlert(false)}\r\n className=\"alert-close-button\"\r\n aria-label=\"Uyarıyı kapat\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n};","export const LoadingSpinner: React.FC = () => {\r\n return <div className=\"loading-spinner\" />;\r\n};","import { useRef, useState } from \"react\";\r\nimport { LoadingSpinner } from \"../loading-spinner\";\r\n\r\ninterface IChatInputProps {\r\n isLoading: boolean;\r\n placeholder: string;\r\n handleSendMessage: (message: string, approval?: boolean) => void\r\n}\r\n\r\nexport const ChatInput = ({ isLoading, placeholder, handleSendMessage }: IChatInputProps) => {\r\n const [message, setMessage] = useState(\"\");\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (message.trim() && !isLoading) {\r\n handleSendMessage(message.trim());\r\n setMessage(\"\");\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = \"auto\";\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault();\r\n handleSubmit(e);\r\n }\r\n };\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setMessage(e.target.value);\r\n\r\n const textarea = e.target;\r\n textarea.style.height = \"auto\";\r\n textarea.style.height = Math.min(textarea.scrollHeight, 120) + \"px\";\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit} className=\"input-container\">\r\n <textarea\r\n ref={textareaRef}\r\n value={message}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={isLoading}\r\n className=\"textarea\"\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading || !message.trim()}\r\n className=\"send-button\"\r\n >\r\n {isLoading ? (\r\n <LoadingSpinner />\r\n ) : (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </form>\r\n );\r\n};","import React, { useRef } from \"react\";\r\nimport { UIComponent, UIData } from \"../../types/generative-ui\";\r\n\r\n\r\n\r\ntype GenericUIRendererProps = {\r\n uiData: UIData;\r\n onInteraction: (event: any) => void;\r\n};\r\n\r\nexport const GenericUIRenderer: React.FC<GenericUIRendererProps> = ({ uiData, onInteraction }) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n if (!uiData || !uiData.components) return null;\r\n\r\n // Form değerlerini toplayan fonksiyon\r\n const collectFormValues = () => {\r\n if (!containerRef.current) return {};\r\n\r\n const formData: Record<string, any> = {};\r\n const inputs = containerRef.current.querySelectorAll<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>('input, textarea, select');\r\n\r\n inputs.forEach((element) => {\r\n const name = element.getAttribute('name');\r\n if (name) {\r\n if (element instanceof HTMLInputElement && element.type === 'checkbox') {\r\n formData[name] = element.checked;\r\n } else if (element instanceof HTMLInputElement && element.type === 'radio') {\r\n if (element.checked) {\r\n formData[name] = element.value;\r\n }\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n }\r\n });\r\n\r\n return formData;\r\n };\r\n\r\n const renderComponent = (comp: UIComponent): React.ReactNode => {\r\n switch (comp.type) {\r\n case \"text\":\r\n return (\r\n <p key={comp.id} className=\"gen-ui-text\">\r\n {comp.value ?? comp.label}\r\n </p>\r\n );\r\n\r\n case \"input\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-input-wrapper\">\r\n {comp.label && <label className=\"gen-ui-input-label\">{comp.label}</label>}\r\n {comp.fieldType === \"textarea\" ? (\r\n <textarea\r\n name={comp.id}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-textarea\"\r\n />\r\n ) : (\r\n <input\r\n name={comp.id}\r\n type={comp.fieldType || \"text\"}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-input\"\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n case \"select\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-select-wrapper\">\r\n {comp.label && <label className=\"gen-ui-select-label\">{comp.label}</label>}\r\n <select name={comp.id} className=\"gen-ui-select\">\r\n {comp.options?.map((opt) => (\r\n <option key={opt} value={opt}>\r\n {opt}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n );\r\n\r\n case \"button\":\r\n return (\r\n <button\r\n onClick={() => {\r\n const formValues = collectFormValues();\r\n onInteraction({\r\n action: comp.label,\r\n buttonId: comp.buttonType,\r\n formData: formValues\r\n });\r\n }}\r\n key={comp.id}\r\n className=\"gen-ui-button\"\r\n >\r\n {comp.label}\r\n </button>\r\n );\r\n\r\n case \"card\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-card\">\r\n {comp.label && <h2 className=\"gen-ui-card-title\">{comp.label}</h2>}\r\n {comp.value && <p className=\"gen-ui-card-content\">{comp.value}</p>}\r\n </div>\r\n );\r\n\r\n case \"list\":\r\n return (\r\n <ul key={comp.id} className=\"gen-ui-list\">\r\n {comp.items?.map((item) => (\r\n <li key={item.id} className=\"gen-ui-list-item\">\r\n {item.label ?? String(item.value ?? \"\")}\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n\r\n case \"image\":\r\n return (\r\n <img\r\n key={comp.id}\r\n src={comp.url}\r\n alt={comp.label || \"\"}\r\n className=\"gen-ui-image\"\r\n />\r\n );\r\n\r\n case \"link\":\r\n return (\r\n <a\r\n key={comp.id}\r\n href={comp.url}\r\n className=\"gen-ui-link\"\r\n >\r\n {comp.label || comp.url}\r\n </a>\r\n );\r\n\r\n case \"table\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-table-wrapper\">\r\n <table className=\"gen-ui-table\">\r\n {comp.columns && (\r\n <thead className=\"gen-ui-table-header\">\r\n <tr>\r\n {comp.columns.map((col) => (\r\n <th key={col} className=\"gen-ui-table-th\">\r\n {col}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n )}\r\n {comp.rows && (\r\n <tbody className=\"gen-ui-table-body\">\r\n {comp.rows.map((row, ridx) => (\r\n <tr key={ridx}>\r\n {row.map((cell, cidx) => (\r\n <td key={cidx} className=\"gen-ui-table-td\">\r\n {cell}\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n )}\r\n </table>\r\n </div>\r\n );\r\n\r\n case \"form\":\r\n return (\r\n <form key={comp.id} className=\"gen-ui-form\">\r\n {comp.items?.map((field) => renderComponent(field))}\r\n </form>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"generative-ui-container\" ref={containerRef}>\r\n {(uiData.title || uiData.description) && (\r\n <div className=\"generative-ui-header\">\r\n {uiData.title && (\r\n <h1 className=\"generative-ui-title\">{uiData.title}</h1>\r\n )}\r\n {uiData.description && (\r\n <p className=\"generative-ui-description\">{uiData.description}</p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {uiData.components.map((comp) => renderComponent(comp))}\r\n </div>\r\n );\r\n};\r\n\r\n","import { Message } from \"../../types/chatbot\";\r\nimport { GenericUIRenderer } from \"../generative-ui\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport remarkGfm from \"remark-gfm\";\r\n\r\ninterface IMessageBubbleProps {\r\n message: Message;\r\n onAction: (msg: string, approval: boolean) => void;\r\n}\r\n\r\nexport const MessageBubble = ({ message, onAction }: IMessageBubbleProps) => {\r\n console.log(\"MESSAGE\", message);\r\n\r\n const isUser = message.role === \"user\";\r\n const approval = message.role === \"approval\"\r\n\r\n if (approval) {\r\n return <></>\r\n }\r\n\r\n return (\r\n <div className={`message-container ${isUser ? \"user\" : \"assistant\"}`}>\r\n <div className={`message-bubble ${isUser ? \"user\" : \"assistant\"}`}>\r\n {isUser ? (\r\n message.text && (\r\n <div className=\"markdown-content\">{message.text}</div>\r\n )\r\n ) : (\r\n <>\r\n {message.text && (\r\n <div className=\"markdown-content\">\r\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\r\n {message.text}\r\n </ReactMarkdown>\r\n </div>\r\n )}\r\n {message.ui && (\r\n <GenericUIRenderer\r\n uiData={message.ui}\r\n onInteraction={(event) => {\r\n console.log(\"event\", event);\r\n if (event.buttonId === \"submit\") {\r\n onAction(JSON.stringify(event.formData), true);\r\n\r\n } else {\r\n onAction(event.action, true);\r\n\r\n }\r\n\r\n }}\r\n />\r\n )}\r\n\r\n </>\r\n )}\r\n </div>\r\n\r\n <div className={`message-time ${isUser ? \"user\" : \"assistant\"}`}>\r\n {message.timestamp.toLocaleTimeString(\"tr-TR\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const TypingDots = () => {\r\n const [dots, setDots] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setDots((prev) => {\r\n if (prev === \"...\") return \"\";\r\n return prev + \".\";\r\n });\r\n }, 500);\r\n\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n return (\r\n <div className=\"message-container assistant\">\r\n <div className=\"message-bubble assistant\">\r\n <div className=\"message-typing-indicator\">\r\n <span>{dots}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};","function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\")\n throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? (f.value = value) : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f)\n throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport { __classPrivateFieldSet, __classPrivateFieldGet };\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n/**\n * https://stackoverflow.com/a/2117523\n */\nexport let uuid4 = function () {\n const { crypto } = globalThis as any;\n if (crypto?.randomUUID) {\n uuid4 = crypto.randomUUID.bind(crypto);\n return crypto.randomUUID();\n }\n const u8 = new Uint8Array(1);\n const randomByte = crypto ? () => crypto.getRandomValues(u8)[0]! : () => (Math.random() * 0xff) & 0xff;\n return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) =>\n (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16),\n );\n};\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nexport function isAbortError(err: unknown) {\n return (\n typeof err === 'object' &&\n err !== null &&\n // Spec-compliant fetch implementations\n (('name' in err && (err as any).name === 'AbortError') ||\n // Expo fetch\n ('message' in err && String((err as any).message).includes('FetchRequestCanceledException')))\n );\n}\n\nexport const castToError = (err: any): Error => {\n if (err instanceof Error) return err;\n if (typeof err === 'object' && err !== null) {\n try {\n if (Object.prototype.toString.call(err) === '[object Error]') {\n // @ts-ignore - not all envs have native support for cause yet\n const error = new Error(err.message, err.cause ? { cause: err.cause } : {});\n if (err.stack) error.stack = err.stack;\n // @ts-ignore - not all envs have native support for cause yet\n if (err.cause && !error.cause) error.cause = err.cause;\n if (err.name) error.name = err.name;\n return error;\n }\n } catch {}\n try {\n return new Error(JSON.stringify(err));\n } catch {}\n }\n return new Error(err);\n};\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { castToError } from '../internal/errors';\n\nexport class AnthropicError extends Error {}\n\nexport class APIError<\n TStatus extends number | undefined = number | undefined,\n THeaders extends Headers | undefined = Headers | undefined,\n TError extends Object | undefined = Object | undefined,\n> extends AnthropicError {\n /** HTTP status for the response that caused the error */\n readonly status: TStatus;\n /** HTTP headers for the response that caused the error */\n readonly headers: THeaders;\n /** JSON body of the response that caused the error */\n readonly error: TError;\n\n readonly requestID: string | null | undefined;\n\n constructor(status: TStatus, error: TError, message: string | undefined, headers: THeaders) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n this.requestID = headers?.get('request-id');\n this.error = error;\n }\n\n private static makeMessage(status: number | undefined, error: any, message: string | undefined) {\n const msg =\n error?.message ?\n typeof error.message === 'string' ?\n error.message\n : JSON.stringify(error.message)\n : error ? JSON.stringify(error)\n : message;\n\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return '(no status code or body)';\n }\n\n static generate(\n status: number | undefined,\n errorResponse: Object | undefined,\n message: string | undefined,\n headers: Headers | undefined,\n ): APIError {\n if (!status || !headers) {\n return new APIConnectionError({ message, cause: castToError(errorResponse) });\n }\n\n const error = errorResponse as Record<string, any>;\n\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n\n return new APIError(status, error, message, headers);\n }\n}\n\nexport class APIUserAbortError extends APIError<undefined, undefined, undefined> {\n constructor({ message }: { message?: string } = {}) {\n super(undefined, undefined, message || 'Request was aborted.', undefined);\n }\n}\n\nexport class APIConnectionError extends APIError<undefined, undefined, undefined> {\n constructor({ message, cause }: { message?: string | undefined; cause?: Error | undefined }) {\n super(undefined, undefined, message || 'Connection error.', undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause) this.cause = cause;\n }\n}\n\nexport class APIConnectionTimeoutError extends APIConnectionError {\n constructor({ message }: { message?: string } = {}) {\n super({ message: message ?? 'Request timed out.' });\n }\n}\n\nexport class BadRequestError extends APIError<400, Headers> {}\n\nexport class AuthenticationError extends APIError<401, Headers> {}\n\nexport class PermissionDeniedError extends APIError<403, Headers> {}\n\nexport class NotFoundError extends APIError<404, Headers> {}\n\nexport class ConflictError extends APIError<409, Headers> {}\n\nexport class UnprocessableEntityError extends APIError<422, Headers> {}\n\nexport class RateLimitError extends APIError<429, Headers> {}\n\nexport class InternalServerError extends APIError<number, Headers> {}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { AnthropicError } from '../../core/error';\n\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\n\nexport const isAbsoluteURL = (url: string): boolean => {\n return startsWithSchemeRegexp.test(url);\n};\n\nexport let isArray = (val: unknown): val is unknown[] => ((isArray = Array.isArray), isArray(val));\nexport let isReadonlyArray = isArray as (val: unknown) => val is readonly unknown[];\n\n/** Returns an object if the given value isn't an object, otherwise returns as-is */\nexport function maybeObj(x: unknown): object {\n if (typeof x !== 'object') {\n return {};\n }\n\n return x ?? {};\n}\n\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj: Object | null | undefined): boolean {\n if (!obj) return true;\n for (const _k in obj) return false;\n return true;\n}\n\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn<T extends object = object>(obj: T, key: PropertyKey): key is keyof T {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function isObj(obj: unknown): obj is Record<string, unknown> {\n return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\n\nexport const ensurePresent = <T>(value: T | null | undefined): T => {\n if (value == null) {\n throw new AnthropicError(`Expected a value to be given but received ${value} instead.`);\n }\n\n return value;\n};\n\nexport const validatePositiveInteger = (name: string, n: unknown): number => {\n if (typeof n !== 'number' || !Number.isInteger(n)) {\n throw new AnthropicError(`${name} must be an integer`);\n }\n if (n < 0) {\n throw new AnthropicError(`${name} must be a positive integer`);\n }\n return n;\n};\n\nexport const coerceInteger = (value: unknown): number => {\n if (typeof value === 'number') return Math.round(value);\n if (typeof value === 'string') return parseInt(value, 10);\n\n throw new AnthropicError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\n\nexport const coerceFloat = (value: unknown): number => {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') return parseFloat(value);\n\n throw new AnthropicError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\n\nexport const coerceBoolean = (value: unknown): boolean => {\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return Boolean(value);\n};\n\nexport const maybeCoerceInteger = (value: unknown): number | undefined => {\n if (value == null) {\n return undefined;\n }\n return coerceInteger(value);\n};\n\nexport const maybeCoerceFloat = (value: unknown): number | undefined => {\n if (value == null) {\n return undefined;\n }\n return coerceFloat(value);\n};\n\nexport const maybeCoerceBoolean = (value: unknown): boolean | undefined => {\n if (value == null) {\n return undefined;\n }\n return coerceBoolean(value);\n};\n\nexport const safeJSON = (text: string) => {\n try {\n return JSON.parse(text);\n } catch (err) {\n return undefined;\n }\n};\n\n// Gets a value from an object, deletes the key, and returns the value (or undefined if not found)\nexport const pop = <T extends Record<string, any>, K extends string>(obj: T, key: K): T[K] => {\n const value = obj[key];\n delete obj[key];\n return value;\n};\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nexport const sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));\n","export const VERSION = '0.71.0'; // x-release-please-version\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { VERSION } from '../version';\n\nexport const isRunningInBrowser = () => {\n return (\n // @ts-ignore\n typeof window !== 'undefined' &&\n // @ts-ignore\n typeof window.document !== 'undefined' &&\n // @ts-ignore\n typeof navigator !== 'undefined'\n );\n};\n\ntype DetectedPlatform = 'deno' | 'node' | 'edge' | 'unknown';\n\n/**\n * Note this does not detect 'browser'; for that, use getBrowserInfo().\n */\nfunction getDetectedPlatform(): DetectedPlatform {\n if (typeof Deno !== 'undefined' && Deno.build != null) {\n return 'deno';\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return 'edge';\n }\n if (\n Object.prototype.toString.call(\n typeof (globalThis as any).process !== 'undefined' ? (globalThis as any).process : 0,\n ) === '[object process]'\n ) {\n return 'node';\n }\n return 'unknown';\n}\n\ndeclare const Deno: any;\ndeclare const EdgeRuntime: any;\ntype Arch = 'x32' | 'x64' | 'arm' | 'arm64' | `other:${string}` | 'unknown';\ntype PlatformName =\n | 'MacOS'\n | 'Linux'\n | 'Windows'\n | 'FreeBSD'\n | 'OpenBSD'\n | 'iOS'\n | 'Android'\n | `Other:${string}`\n | 'Unknown';\ntype Browser = 'ie' | 'edge' | 'chrome' | 'firefox' | 'safari';\ntype PlatformProperties = {\n 'X-Stainless-Lang': 'js';\n 'X-Stainless-Package-Version': string;\n 'X-Stainless-OS': PlatformName;\n 'X-Stainless-Arch': Arch;\n 'X-Stainless-Runtime': 'node' | 'deno' | 'edge' | `browser:${Browser}` | 'unknown';\n 'X-Stainless-Runtime-Version': string;\n};\nconst getPlatformProperties = (): PlatformProperties => {\n const detectedPlatform = getDetectedPlatform();\n if (detectedPlatform === 'deno') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform(Deno.build.os),\n 'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n 'X-Stainless-Runtime': 'deno',\n 'X-Stainless-Runtime-Version':\n typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n };\n }\n if (typeof EdgeRuntime !== 'undefined') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': `other:${EdgeRuntime}`,\n 'X-Stainless-Runtime': 'edge',\n 'X-Stainless-Runtime-Version': (globalThis as any).process.version,\n };\n }\n // Check if Node.js\n if (detectedPlatform === 'node') {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': normalizePlatform((globalThis as any).process.platform ?? 'unknown'),\n 'X-Stainless-Arch': normalizeArch((globalThis as any).process.arch ?? 'unknown'),\n 'X-Stainless-Runtime': 'node',\n 'X-Stainless-Runtime-Version': (globalThis as any).process.version ?? 'unknown',\n };\n }\n\n const browserInfo = getBrowserInfo();\n if (browserInfo) {\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n 'X-Stainless-Runtime-Version': browserInfo.version,\n };\n }\n\n // TODO add support for Cloudflare workers, etc.\n return {\n 'X-Stainless-Lang': 'js',\n 'X-Stainless-Package-Version': VERSION,\n 'X-Stainless-OS': 'Unknown',\n 'X-Stainless-Arch': 'unknown',\n 'X-Stainless-Runtime': 'unknown',\n 'X-Stainless-Runtime-Version': 'unknown',\n };\n};\n\ntype BrowserInfo = {\n browser: Browser;\n version: string;\n};\n\ndeclare const navigator: { userAgent: string } | undefined;\n\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo(): BrowserInfo | null {\n if (typeof navigator === 'undefined' || !navigator) {\n return null;\n }\n\n // NOTE: The order matters here!\n const browserPatterns = [\n { key: 'edge' as const, pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie' as const, pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'ie' as const, pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'chrome' as const, pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'firefox' as const, pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n { key: 'safari' as const, pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n ];\n\n // Find the FIRST matching browser\n for (const { key, pattern } of browserPatterns) {\n const match = pattern.exec(navigator.userAgent);\n if (match) {\n const major = match[1] || 0;\n const minor = match[2] || 0;\n const patch = match[3] || 0;\n\n return { browser: key, version: `${major}.${minor}.${patch}` };\n }\n }\n\n return null;\n}\n\nconst normalizeArch = (arch: string): Arch => {\n // Node docs:\n // - https://nodejs.org/api/process.html#processarch\n // Deno docs:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n if (arch === 'x32') return 'x32';\n if (arch === 'x86_64' || arch === 'x64') return 'x64';\n if (arch === 'arm') return 'arm';\n if (arch === 'aarch64' || arch === 'arm64') return 'arm64';\n if (arch) return `other:${arch}`;\n return 'unknown';\n};\n\nconst normalizePlatform = (platform: string): PlatformName => {\n // Node platforms:\n // - https://nodejs.org/api/process.html#processplatform\n // Deno platforms:\n // - https://doc.deno.land/deno/stable/~/Deno.build\n // - https://github.com/denoland/deno/issues/14799\n\n platform = platform.toLowerCase();\n\n // NOTE: this iOS check is untested and may not work\n // Node does not work natively on IOS, there is a fork at\n // https://github.com/nodejs-mobile/nodejs-mobile\n // however it is unknown at the time of writing how to detect if it is running\n if (platform.includes('ios')) return 'iOS';\n if (platform === 'android') return 'Android';\n if (platform === 'darwin') return 'MacOS';\n if (platform === 'win32') return 'Windows';\n if (platform === 'freebsd') return 'FreeBSD';\n if (platform === 'openbsd') return 'OpenBSD';\n if (platform === 'linux') return 'Linux';\n if (platform) return `Other:${platform}`;\n return 'Unknown';\n};\n\nlet _platformHeaders: PlatformProperties;\nexport const getPlatformHeaders = () => {\n return (_platformHeaders ??= getPlatformProperties());\n};\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n/**\n * This module provides internal shims and utility functions for environments where certain Node.js or global types may not be available.\n *\n * These are used to ensure we can provide a consistent behaviour between different JavaScript environments and good error\n * messages in cases where an environment isn't fully supported.\n */\n\nimport type { Fetch } from './builtin-types';\nimport type { ReadableStream } from './shim-types';\n\nexport function getDefaultFetch(): Fetch {\n if (typeof fetch !== 'undefined') {\n return fetch as any;\n }\n\n throw new Error(\n '`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`',\n );\n}\n\ntype ReadableStreamArgs = ConstructorParameters<typeof ReadableStream>;\n\nexport function makeReadableStream(...args: ReadableStreamArgs): ReadableStream {\n const ReadableStream = (globalThis as any).ReadableStream;\n if (typeof ReadableStream === 'undefined') {\n // Note: All of the platforms / runtimes we officially support already define\n // `ReadableStream` as a global, so this should only ever be hit on unsupported runtimes.\n throw new Error(\n '`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`',\n );\n }\n\n return new ReadableStream(...args);\n}\n\nexport function ReadableStreamFrom<T>(iterable: Iterable<T> | AsyncIterable<T>): ReadableStream<T> {\n let iter: AsyncIterator<T> | Iterator<T> =\n Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n\n return makeReadableStream({\n start() {},\n async pull(controller: any) {\n const { done, value } = await iter.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n}\n\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable<T>(stream: any): AsyncIterableIterator<T> {\n if (stream[Symbol.asyncIterator]) return stream;\n\n const reader = stream.getReader();\n return {\n async next() {\n try {\n const result = await reader.read();\n if (result?.done) reader.releaseLock(); // release lock when stream becomes closed\n return result;\n } catch (e) {\n reader.releaseLock(); // release lock when stream becomes errored\n throw e;\n }\n },\n async return() {\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n return { done: true, value: undefined };\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n\n/**\n * Cancels a ReadableStream we don't need to consume.\n * See https://undici.nodejs.org/#/?id=garbage-collection\n */\nexport async function CancelReadableStream(stream: any): Promise<void> {\n if (stream === null || typeof stream !== 'object') return;\n\n if (stream[Symbol.asyncIterator]) {\n await stream[Symbol.asyncIterator]().return?.();\n return;\n }\n\n const reader = stream.getReader();\n const cancelPromise = reader.cancel();\n reader.releaseLock();\n await cancelPromise;\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { NullableHeaders } from './headers';\n\nimport type { BodyInit } from './builtin-types';\nimport { Stream } from '../core/streaming';\nimport type { HTTPMethod, MergedRequestInit } from './types';\nimport { type HeadersLike } from './headers';\n\nexport type FinalRequestOptions = RequestOptions & { method: HTTPMethod; path: string };\n\nexport type RequestOptions = {\n /**\n * The HTTP method for the request (e.g., 'get', 'post', 'put', 'delete').\n */\n method?: HTTPMethod;\n\n /**\n * The URL path for the request.\n *\n * @example \"/v1/foo\"\n */\n path?: string;\n\n /**\n * Query parameters to include in the request URL.\n */\n query?: object | undefined | null;\n\n /**\n * The request body. Can be a string, JSON object, FormData, or other supported types.\n */\n body?: unknown;\n\n /**\n * HTTP headers to include with the request. Can be a Headers object, plain object, or array of tuples.\n */\n headers?: HeadersLike;\n\n /**\n * The maximum number of times that the client will retry a request in case of a\n * temporary failure, like a network error or a 5XX error from the server.\n *\n * @default 2\n */\n maxRetries?: number;\n\n stream?: boolean | undefined;\n\n /**\n * The maximum amount of time (in milliseconds) that the client should wait for a response\n * from the server before timing out a single request.\n *\n * @unit milliseconds\n */\n timeout?: number;\n\n /**\n * Additional `RequestInit` options to be passed to the underlying `fetch` call.\n * These options will be merged with the client's default fetch options.\n */\n fetchOptions?: MergedRequestInit;\n\n /**\n * An AbortSignal that can be used to cancel the request.\n */\n signal?: AbortSignal | undefined | null;\n\n /**\n * A unique key for this request to enable idempotency.\n */\n idempotencyKey?: string;\n\n /**\n * Override the default base URL for this specific request.\n */\n defaultBaseURL?: string | undefined;\n\n __binaryResponse?: boolean | undefined;\n __streamClass?: typeof Stream;\n};\n\nexport type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };\nexport type RequestEncoder = (request: { headers: NullableHeaders; body: unknown }) => EncodedContent;\n\nexport const FallbackEncoder: RequestEncoder = ({ headers, body }) => {\n return {\n bodyHeaders: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify(body),\n };\n};\n","export function concatBytes(buffers: Uint8Array[]): Uint8Array {\n let length = 0;\n for (const buffer of buffers) {\n length += buffer.length;\n }\n const output = new Uint8Array(length);\n let index = 0;\n for (const buffer of buffers) {\n output.set(buffer, index);\n index += buffer.length;\n }\n\n return output;\n}\n\nlet encodeUTF8_: (str: string) => Uint8Array;\nexport function encodeUTF8(str: string) {\n let encoder;\n return (\n encodeUTF8_ ??\n ((encoder = new (globalThis as any).TextEncoder()), (encodeUTF8_ = encoder.encode.bind(encoder)))\n )(str);\n}\n\nlet decodeUTF8_: (bytes: Uint8Array) => string;\nexport function decodeUTF8(bytes: Uint8Array) {\n let decoder;\n return (\n decodeUTF8_ ??\n ((decoder = new (globalThis as any).TextDecoder()), (decodeUTF8_ = decoder.decode.bind(decoder)))\n )(bytes);\n}\n","import { concatBytes, decodeUTF8, encodeUTF8 } from '../utils/bytes';\n\nexport type Bytes = string | ArrayBuffer | Uint8Array | null | undefined;\n\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n // prettier-ignore\n static NEWLINE_CHARS = new Set(['\\n', '\\r']);\n static NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n\n #buffer: Uint8Array;\n #carriageReturnIndex: number | null;\n\n constructor() {\n this.#buffer = new Uint8Array();\n this.#carriageReturnIndex = null;\n }\n\n decode(chunk: Bytes): string[] {\n if (chunk == null) {\n return [];\n }\n\n const binaryChunk =\n chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? encodeUTF8(chunk)\n : chunk;\n\n this.#buffer = concatBytes([this.#buffer, binaryChunk]);\n\n const lines: string[] = [];\n let patternIndex;\n while ((patternIndex = findNewlineIndex(this.#buffer, this.#carriageReturnIndex)) != null) {\n if (patternIndex.carriage && this.#carriageReturnIndex == null) {\n // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n this.#carriageReturnIndex = patternIndex.index;\n continue;\n }\n\n // we got double \\r or \\rtext\\n\n if (\n this.#carriageReturnIndex != null &&\n (patternIndex.index !== this.#carriageReturnIndex + 1 || patternIndex.carriage)\n ) {\n lines.push(decodeUTF8(this.#buffer.subarray(0, this.#carriageReturnIndex - 1)));\n this.#buffer = this.#buffer.subarray(this.#carriageReturnIndex);\n this.#carriageReturnIndex = null;\n continue;\n }\n\n const endIndex =\n this.#carriageReturnIndex !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n\n const line = decodeUTF8(this.#buffer.subarray(0, endIndex));\n lines.push(line);\n\n this.#buffer = this.#buffer.subarray(patternIndex.index);\n this.#carriageReturnIndex = null;\n }\n\n return lines;\n }\n\n flush(): string[] {\n if (!this.#buffer.length) {\n return [];\n }\n return this.decode('\\n');\n }\n}\n\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(\n buffer: Uint8Array,\n startIndex: number | null,\n): { preceding: number; index: number; carriage: boolean } | null {\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n\n for (let i = startIndex ?? 0; i < buffer.length; i++) {\n if (buffer[i] === newline) {\n return { preceding: i, index: i + 1, carriage: false };\n }\n\n if (buffer[i] === carriage) {\n return { preceding: i, index: i + 1, carriage: true };\n }\n }\n\n return null;\n}\n\nexport function findDoubleNewlineIndex(buffer: Uint8Array): number {\n // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n // and returns the index right after the first occurrence of any pattern,\n // or -1 if none of the patterns are found.\n const newline = 0x0a; // \\n\n const carriage = 0x0d; // \\r\n\n for (let i = 0; i < buffer.length - 1; i++) {\n if (buffer[i] === newline && buffer[i + 1] === newline) {\n // \\n\\n\n return i + 2;\n }\n if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n // \\r\\r\n return i + 2;\n }\n if (\n buffer[i] === carriage &&\n buffer[i + 1] === newline &&\n i + 3 < buffer.length &&\n buffer[i + 2] === carriage &&\n buffer[i + 3] === newline\n ) {\n // \\r\\n\\r\\n\n return i + 4;\n }\n }\n\n return -1;\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { hasOwn } from './values';\nimport { type BaseAnthropic } from '../../client';\nimport { RequestOptions } from '../request-options';\n\ntype LogFn = (message: string, ...rest: unknown[]) => void;\nexport type Logger = {\n error: LogFn;\n warn: LogFn;\n info: LogFn;\n debug: LogFn;\n};\nexport type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';\n\nconst levelNumbers = {\n off: 0,\n error: 200,\n warn: 300,\n info: 400,\n debug: 500,\n};\n\nexport const parseLogLevel = (\n maybeLevel: string | undefined,\n sourceName: string,\n client: BaseAnthropic,\n): LogLevel | undefined => {\n if (!maybeLevel) {\n return undefined;\n }\n if (hasOwn(levelNumbers, maybeLevel)) {\n return maybeLevel;\n }\n loggerFor(client).warn(\n `${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(\n Object.keys(levelNumbers),\n )}`,\n );\n return undefined;\n};\n\nfunction noop() {}\n\nfunction makeLogFn(fnLevel: keyof Logger, logger: Logger | undefined, logLevel: LogLevel) {\n if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {\n return noop;\n } else {\n // Don't wrap logger functions, we want the stacktrace intact!\n return logger[fnLevel].bind(logger);\n }\n}\n\nconst noopLogger = {\n error: noop,\n warn: noop,\n info: noop,\n debug: noop,\n};\n\nlet cachedLoggers = /* @__PURE__ */ new WeakMap<Logger, [LogLevel, Logger]>();\n\nexport function loggerFor(client: BaseAnthropic): Logger {\n const logger = client.logger;\n const logLevel = client.logLevel ?? 'off';\n if (!logger) {\n return noopLogger;\n }\n\n const cachedLogger = cachedLoggers.get(logger);\n if (cachedLogger && cachedLogger[0] === logLevel) {\n return cachedLogger[1];\n }\n\n const levelLogger = {\n error: makeLogFn('error', logger, logLevel),\n warn: makeLogFn('warn', logger, logLevel),\n info: makeLogFn('info', logger, logLevel),\n debug: makeLogFn('debug', logger, logLevel),\n };\n\n cachedLoggers.set(logger, [logLevel, levelLogger]);\n\n return levelLogger;\n}\n\nexport const formatRequestDetails = (details: {\n options?: RequestOptions | undefined;\n headers?: Headers | Record<string, string> | undefined;\n retryOfRequestLogID?: string | undefined;\n retryOf?: string | undefined;\n url?: string | undefined;\n status?: number | undefined;\n method?: string | undefined;\n durationMs?: number | undefined;\n message?: unknown;\n body?: unknown;\n}) => {\n if (details.options) {\n details.options = { ...details.options };\n delete details.options['headers']; // redundant + leaks internals\n }\n if (details.headers) {\n details.headers = Object.fromEntries(\n (details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(\n ([name, value]) => [\n name,\n (\n name.toLowerCase() === 'x-api-key' ||\n name.toLowerCase() === 'authorization' ||\n name.toLowerCase() === 'cookie' ||\n name.toLowerCase() === 'set-cookie'\n ) ?\n '***'\n : value,\n ],\n ),\n );\n }\n if ('retryOfRequestLogID' in details) {\n if (details.retryOfRequestLogID) {\n details.retryOf = details.retryOfRequestLogID;\n }\n delete details.retryOfRequestLogID;\n }\n return details;\n};\n","import { AnthropicError } from './error';\nimport { type ReadableStream } from '../internal/shim-types';\nimport { makeReadableStream } from '../internal/shims';\nimport { findDoubleNewlineIndex, LineDecoder } from '../internal/decoders/line';\nimport { ReadableStreamToAsyncIterable } from '../internal/shims';\nimport { isAbortError } from '../internal/errors';\nimport { safeJSON } from '../internal/utils/values';\nimport { encodeUTF8 } from '../internal/utils/bytes';\nimport { loggerFor } from '../internal/utils/log';\nimport type { BaseAnthropic } from '../client';\n\nimport { APIError } from './error';\n\ntype Bytes = string | ArrayBuffer | Uint8Array | null | undefined;\n\nexport type ServerSentEvent = {\n event: string | null;\n data: string;\n raw: string[];\n};\n\nexport class Stream<Item> implements AsyncIterable<Item> {\n controller: AbortController;\n #client: BaseAnthropic | undefined;\n\n constructor(\n private iterator: () => AsyncIterator<Item>,\n controller: AbortController,\n client?: BaseAnthropic,\n ) {\n this.controller = controller;\n this.#client = client;\n }\n\n static fromSSEResponse<Item>(\n response: Response,\n controller: AbortController,\n client?: BaseAnthropic,\n ): Stream<Item> {\n let consumed = false;\n const logger = client ? loggerFor(client) : console;\n\n async function* iterator(): AsyncIterator<Item, any, undefined> {\n if (consumed) {\n throw new AnthropicError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const sse of _iterSSEMessages(response, controller)) {\n if (sse.event === 'completion') {\n try {\n yield JSON.parse(sse.data);\n } catch (e) {\n logger.error(`Could not parse message into JSON:`, sse.data);\n logger.error(`From chunk:`, sse.raw);\n throw e;\n }\n }\n\n if (\n sse.event === 'message_start' ||\n sse.event === 'message_delta' ||\n sse.event === 'message_stop' ||\n sse.event === 'content_block_start' ||\n sse.event === 'content_block_delta' ||\n sse.event === 'content_block_stop'\n ) {\n try {\n yield JSON.parse(sse.data);\n } catch (e) {\n logger.error(`Could not parse message into JSON:`, sse.data);\n logger.error(`From chunk:`, sse.raw);\n throw e;\n }\n }\n\n if (sse.event === 'ping') {\n continue;\n }\n\n if (sse.event === 'error') {\n throw new APIError(undefined, safeJSON(sse.data) ?? sse.data, undefined, response.headers);\n }\n }\n done = true;\n } catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (isAbortError(e)) return;\n throw e;\n } finally {\n // If the user `break`s, abort the ongoing request.\n if (!done) controller.abort();\n }\n }\n\n return new Stream(iterator, controller, client);\n }\n\n /**\n * Generates a Stream from a newline-separated ReadableStream\n * where each item is a JSON value.\n */\n static fromReadableStream<Item>(\n readableStream: ReadableStream,\n controller: AbortController,\n client?: BaseAnthropic,\n ): Stream<Item> {\n let consumed = false;\n\n async function* iterLines(): AsyncGenerator<string, void, unknown> {\n const lineDecoder = new LineDecoder();\n\n const iter = ReadableStreamToAsyncIterable<Bytes>(readableStream);\n for await (const chunk of iter) {\n for (const line of lineDecoder.decode(chunk)) {\n yield line;\n }\n }\n\n for (const line of lineDecoder.flush()) {\n yield line;\n }\n }\n\n async function* iterator(): AsyncIterator<Item, any, undefined> {\n if (consumed) {\n throw new AnthropicError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n }\n consumed = true;\n let done = false;\n try {\n for await (const line of iterLines()) {\n if (done) continue;\n if (line) yield JSON.parse(line);\n }\n done = true;\n } catch (e) {\n // If the user calls `stream.controller.abort()`, we should exit without throwing.\n if (isAbortError(e)) return;\n throw e;\n } finally {\n // If the user `break`s, abort the ongoing request.\n if (!done) controller.abort();\n }\n }\n\n return new Stream(iterator, controller, client);\n }\n\n [Symbol.asyncIterator](): AsyncIterator<Item> {\n return this.iterator();\n }\n\n /**\n * Splits the stream into two streams which can be\n * independently read from at different speeds.\n */\n tee(): [Stream<Item>, Stream<Item>] {\n const left: Array<Promise<IteratorResult<Item>>> = [];\n const right: Array<Promise<IteratorResult<Item>>> = [];\n const iterator = this.iterator();\n\n const teeIterator = (queue: Array<Promise<IteratorResult<Item>>>): AsyncIterator<Item> => {\n return {\n next: () => {\n if (queue.length === 0) {\n const result = iterator.next();\n left.push(result);\n right.push(result);\n }\n return queue.shift()!;\n },\n };\n };\n\n return [\n new Stream(() => teeIterator(left), this.controller, this.#client),\n new Stream(() => teeIterator(right), this.controller, this.#client),\n ];\n }\n\n /**\n * Converts this stream to a newline-separated ReadableStream of\n * JSON stringified values in the stream\n * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n */\n toReadableStream(): ReadableStream {\n const self = this;\n let iter: AsyncIterator<Item>;\n\n return makeReadableStream({\n async start() {\n iter = self[Symbol.asyncIterator]();\n },\n async pull(ctrl: any) {\n try {\n const { value, done } = await iter.next();\n if (done) return ctrl.close();\n\n const bytes = encodeUTF8(JSON.stringify(value) + '\\n');\n\n ctrl.enqueue(bytes);\n } catch (err) {\n ctrl.error(err);\n }\n },\n async cancel() {\n await iter.return?.();\n },\n });\n }\n}\n\nexport async function* _iterSSEMessages(\n response: Response,\n controller: AbortController,\n): AsyncGenerator<ServerSentEvent, void, unknown> {\n if (!response.body) {\n controller.abort();\n if (\n typeof (globalThis as any).navigator !== 'undefined' &&\n (globalThis as any).navigator.product === 'ReactNative'\n ) {\n throw new AnthropicError(\n `The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`,\n );\n }\n throw new AnthropicError(`Attempted to iterate over a response with no body`);\n }\n\n const sseDecoder = new SSEDecoder();\n const lineDecoder = new LineDecoder();\n\n const iter = ReadableStreamToAsyncIterable<Bytes>(response.body);\n for await (const sseChunk of iterSSEChunks(iter)) {\n for (const line of lineDecoder.decode(sseChunk)) {\n const sse = sseDecoder.decode(line);\n if (sse) yield sse;\n }\n }\n\n for (const line of lineDecoder.flush()) {\n const sse = sseDecoder.decode(line);\n if (sse) yield sse;\n }\n}\n\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator: AsyncIterableIterator<Bytes>): AsyncGenerator<Uint8Array> {\n let data = new Uint8Array();\n\n for await (const chunk of iterator) {\n if (chunk == null) {\n continue;\n }\n\n const binaryChunk =\n chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n : typeof chunk === 'string' ? encodeUTF8(chunk)\n : chunk;\n\n let newData = new Uint8Array(data.length + binaryChunk.length);\n newData.set(data);\n newData.set(binaryChunk, data.length);\n data = newData;\n\n let patternIndex;\n while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n yield data.slice(0, patternIndex);\n data = data.slice(patternIndex);\n }\n }\n\n if (data.length > 0) {\n yield data;\n }\n}\n\nclass SSEDecoder {\n private data: string[];\n private event: string | null;\n private chunks: string[];\n\n constructor() {\n this.event = null;\n this.data = [];\n this.chunks = [];\n }\n\n decode(line: string) {\n if (line.endsWith('\\r')) {\n line = line.substring(0, line.length - 1);\n }\n\n if (!line) {\n // empty line and we didn't previously encounter any messages\n if (!this.event && !this.data.length) return null;\n\n const sse: ServerSentEvent = {\n event: this.event,\n data: this.data.join('\\n'),\n raw: this.chunks,\n };\n\n this.event = null;\n this.data = [];\n this.chunks = [];\n\n return sse;\n }\n\n this.chunks.push(line);\n\n if (line.startsWith(':')) {\n return null;\n }\n\n let [fieldname, _, value] = partition(line, ':');\n\n if (value.startsWith(' ')) {\n value = value.substring(1);\n }\n\n if (fieldname === 'event') {\n this.event = value;\n } else if (fieldname === 'data') {\n this.data.push(value);\n }\n\n return null;\n }\n}\n\nfunction partition(str: string, delimiter: string): [string, string, string] {\n const index = str.indexOf(delimiter);\n if (index !== -1) {\n return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n }\n\n return [str, '', ''];\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport type { FinalRequestOptions } from './request-options';\nimport { Stream } from '../core/streaming';\nimport { type BaseAnthropic } from '../client';\nimport { formatRequestDetails, loggerFor } from './utils/log';\nimport type { AbstractPage } from '../core/pagination';\n\nexport type APIResponseProps = {\n response: Response;\n options: FinalRequestOptions;\n controller: AbortController;\n requestLogID: string;\n retryOfRequestLogID: string | undefined;\n startTime: number;\n};\n\nexport async function defaultParseResponse<T>(\n client: BaseAnthropic,\n props: APIResponseProps,\n): Promise<WithRequestID<T>> {\n const { response, requestLogID, retryOfRequestLogID, startTime } = props;\n const body = await (async () => {\n if (props.options.stream) {\n loggerFor(client).debug('response', response.status, response.url, response.headers, response.body);\n\n // Note: there is an invariant here that isn't represented in the type system\n // that if you set `stream: true` the response type must also be `Stream<T>`\n\n if (props.options.__streamClass) {\n return props.options.__streamClass.fromSSEResponse(response, props.controller) as any;\n }\n\n return Stream.fromSSEResponse(response, props.controller) as any;\n }\n\n // fetch refuses to read the body when the status code is 204.\n if (response.status === 204) {\n return null as T;\n }\n\n if (props.options.__binaryResponse) {\n return response as unknown as T;\n }\n\n const contentType = response.headers.get('content-type');\n const mediaType = contentType?.split(';')[0]?.trim();\n const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n if (isJSON) {\n const json = await response.json();\n return addRequestID(json as T, response);\n }\n\n const text = await response.text();\n return text as unknown as T;\n })();\n loggerFor(client).debug(\n `[${requestLogID}] response parsed`,\n formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n body,\n durationMs: Date.now() - startTime,\n }),\n );\n return body;\n}\n\nexport type WithRequestID<T> =\n T extends Array<any> | Response | AbstractPage<any> ? T\n : T extends Record<string, any> ? T & { _request_id?: string | null }\n : T;\n\nexport function addRequestID<T>(value: T, response: Response): WithRequestID<T> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value as WithRequestID<T>;\n }\n\n return Object.defineProperty(value, '_request_id', {\n value: response.headers.get('request-id'),\n enumerable: false,\n }) as WithRequestID<T>;\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { type BaseAnthropic } from '../client';\n\nimport { type PromiseOrValue } from '../internal/types';\nimport {\n type APIResponseProps,\n type WithRequestID,\n defaultParseResponse,\n addRequestID,\n} from '../internal/parse';\n\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise<T> extends Promise<WithRequestID<T>> {\n private parsedPromise: Promise<WithRequestID<T>> | undefined;\n #client: BaseAnthropic;\n\n constructor(\n client: BaseAnthropic,\n private responsePromise: Promise<APIResponseProps>,\n private parseResponse: (\n client: BaseAnthropic,\n props: APIResponseProps,\n ) => PromiseOrValue<WithRequestID<T>> = defaultParseResponse,\n ) {\n super((resolve) => {\n // this is maybe a bit weird but this has to be a no-op to not implicitly\n // parse the response body; instead .then, .catch, .finally are overridden\n // to parse the response\n resolve(null as any);\n });\n this.#client = client;\n }\n\n _thenUnwrap<U>(transform: (data: T, props: APIResponseProps) => U): APIPromise<U> {\n return new APIPromise(this.#client, this.responsePromise, async (client, props) =>\n addRequestID(transform(await this.parseResponse(client, props), props), props.response),\n );\n }\n\n /**\n * Gets the raw `Response` instance instead of parsing the response\n * data.\n *\n * If you want to parse the response body but still get the `Response`\n * instance, you can use {@link withResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n * to your `tsconfig.json`.\n */\n asResponse(): Promise<Response> {\n return this.responsePromise.then((p) => p.response);\n }\n\n /**\n * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n * returned via the `request-id` header which is useful for debugging requests and resporting\n * issues to Anthropic.\n *\n * If you just want to get the raw `Response` instance without parsing it,\n * you can use {@link asResponse()}.\n *\n * 👋 Getting the wrong TypeScript type for `Response`?\n * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n * to your `tsconfig.json`.\n */\n async withResponse(): Promise<{ data: T; response: Response; request_id: string | null | undefined }> {\n const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n return { data, response, request_id: response.headers.get('request-id') };\n }\n\n private parse(): Promise<WithRequestID<T>> {\n if (!this.parsedPromise) {\n this.parsedPromise = this.responsePromise.then(\n (data) => this.parseResponse(this.#client, data) as any as Promise<WithRequestID<T>>,\n );\n }\n return this.parsedPromise;\n }\n\n override then<TResult1 = WithRequestID<T>, TResult2 = never>(\n onfulfilled?: ((value: WithRequestID<T>) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.parse().then(onfulfilled, onrejected);\n }\n\n override catch<TResult = never>(\n onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null,\n ): Promise<WithRequestID<T> | TResult> {\n return this.parse().catch(onrejected);\n }\n\n override finally(onfinally?: (() => void) | undefined | null): Promise<WithRequestID<T>> {\n return this.parse().finally(onfinally);\n }\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { AnthropicError } from './error';\nimport { FinalRequestOptions } from '../internal/request-options';\nimport { defaultParseResponse, WithRequestID } from '../internal/parse';\nimport { type BaseAnthropic } from '../client';\nimport { APIPromise } from './api-promise';\nimport { type APIResponseProps } from '../internal/parse';\nimport { maybeObj } from '../internal/utils/values';\n\nexport type PageRequestOptions = Pick<FinalRequestOptions, 'query' | 'headers' | 'body' | 'path' | 'method'>;\n\nexport abstract class AbstractPage<Item> implements AsyncIterable<Item> {\n #client: BaseAnthropic;\n protected options: FinalRequestOptions;\n\n protected response: Response;\n protected body: unknown;\n\n constructor(client: BaseAnthropic, response: Response, body: unknown, options: FinalRequestOptions) {\n this.#client = client;\n this.options = options;\n this.response = response;\n this.body = body;\n }\n\n abstract nextPageRequestOptions(): PageRequestOptions | null;\n\n abstract getPaginatedItems(): Item[];\n\n hasNextPage(): boolean {\n const items = this.getPaginatedItems();\n if (!items.length) return false;\n return this.nextPageRequestOptions() != null;\n }\n\n async getNextPage(): Promise<this> {\n const nextOptions = this.nextPageRequestOptions();\n if (!nextOptions) {\n throw new AnthropicError(\n 'No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.',\n );\n }\n\n return await this.#client.requestAPIList(this.constructor as any, nextOptions);\n }\n\n async *iterPages(): AsyncGenerator<this> {\n let page: this = this;\n yield page;\n while (page.hasNextPage()) {\n page = await page.getNextPage();\n yield page;\n }\n }\n\n async *[Symbol.asyncIterator](): AsyncGenerator<Item> {\n for await (const page of this.iterPages()) {\n for (const item of page.getPaginatedItems()) {\n yield item;\n }\n }\n }\n}\n\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\nexport class PagePromise<\n PageClass extends AbstractPage<Item>,\n Item = ReturnType<PageClass['getPaginatedItems']>[number],\n >\n extends APIPromise<PageClass>\n implements AsyncIterable<Item>\n{\n constructor(\n client: BaseAnthropic,\n request: Promise<APIResponseProps>,\n Page: new (...args: ConstructorParameters<typeof AbstractPage>) => PageClass,\n ) {\n super(\n client,\n request,\n async (client, props) =>\n new Page(\n client,\n props.response,\n await defaultParseResponse(client, props),\n props.options,\n ) as WithRequestID<PageClass>,\n );\n }\n\n /**\n * Allow auto-paginating iteration on an unawaited list call, eg:\n *\n * for await (const item of client.items.list()) {\n * console.log(item)\n * }\n */\n async *[Symbol.asyncIterator](): AsyncGenerator<Item> {\n const page = await this;\n for await (const item of page) {\n yield item;\n }\n }\n}\n\nexport interface PageResponse<Item> {\n data: Array<Item>;\n\n has_more: boolean;\n\n first_id: string | null;\n\n last_id: string | null;\n}\n\nexport interface PageParams {\n /**\n * Number of items per page.\n */\n limit?: number;\n\n before_id?: string;\n\n after_id?: string;\n}\n\nexport class Page<Item> extends AbstractPage<Item> implements PageResponse<Item> {\n data: Array<Item>;\n\n has_more: boolean;\n\n first_id: string | null;\n\n last_id: string | null;\n\n constructor(\n client: BaseAnthropic,\n response: Response,\n body: PageResponse<Item>,\n options: FinalRequestOptions,\n ) {\n super(client, response, body, options);\n\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n this.first_id = body.first_id || null;\n this.last_id = body.last_id || null;\n }\n\n getPaginatedItems(): Item[] {\n return this.data ?? [];\n }\n\n override hasNextPage(): boolean {\n if (this.has_more === false) {\n return false;\n }\n\n return super.hasNextPage();\n }\n\n nextPageRequestOptions(): PageRequestOptions | null {\n if ((this.options.query as Record<string, unknown>)?.['before_id']) {\n // in reverse\n const first_id = this.first_id;\n if (!first_id) {\n return null;\n }\n\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n before_id: first_id,\n },\n };\n }\n\n const cursor = this.last_id;\n if (!cursor) {\n return null;\n }\n\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n after_id: cursor,\n },\n };\n }\n}\n\nexport interface TokenPageResponse<Item> {\n data: Array<Item>;\n\n has_more: boolean;\n\n next_page: string | null;\n}\n\nexport interface TokenPageParams {\n /**\n * Number of items per page.\n */\n limit?: number;\n\n page_token?: string;\n}\n\nexport class TokenPage<Item> extends AbstractPage<Item> implements TokenPageResponse<Item> {\n data: Array<Item>;\n\n has_more: boolean;\n\n next_page: string | null;\n\n constructor(\n client: BaseAnthropic,\n response: Response,\n body: TokenPageResponse<Item>,\n options: FinalRequestOptions,\n ) {\n super(client, response, body, options);\n\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n this.next_page = body.next_page || null;\n }\n\n getPaginatedItems(): Item[] {\n return this.data ?? [];\n }\n\n override hasNextPage(): boolean {\n if (this.has_more === false) {\n return false;\n }\n\n return super.hasNextPage();\n }\n\n nextPageRequestOptions(): PageRequestOptions | null {\n const cursor = this.next_page;\n if (!cursor) {\n return null;\n }\n\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n page_token: cursor,\n },\n };\n }\n}\n\nexport interface PageCursorResponse<Item> {\n data: Array<Item>;\n\n has_more: boolean;\n\n next_page: string | null;\n}\n\nexport interface PageCursorParams {\n /**\n * Number of items per page.\n */\n limit?: number;\n\n page?: string | null;\n}\n\nexport class PageCursor<Item> extends AbstractPage<Item> implements PageCursorResponse<Item> {\n data: Array<Item>;\n\n has_more: boolean;\n\n next_page: string | null;\n\n constructor(\n client: BaseAnthropic,\n response: Response,\n body: PageCursorResponse<Item>,\n options: FinalRequestOptions,\n ) {\n super(client, response, body, options);\n\n this.data = body.data || [];\n this.has_more = body.has_more || false;\n this.next_page = body.next_page || null;\n }\n\n getPaginatedItems(): Item[] {\n return this.data ?? [];\n }\n\n override hasNextPage(): boolean {\n if (this.has_more === false) {\n return false;\n }\n\n return super.hasNextPage();\n }\n\n nextPageRequestOptions(): PageRequestOptions | null {\n const cursor = this.next_page;\n if (!cursor) {\n return null;\n }\n\n return {\n ...this.options,\n query: {\n ...maybeObj(this.options.query),\n page: cursor,\n },\n };\n }\n}\n","import { type RequestOptions } from './request-options';\nimport type { FilePropertyBag, Fetch } from './builtin-types';\nimport type { BaseAnthropic } from '../client';\nimport { ReadableStreamFrom } from './shims';\n\nexport type BlobPart = string | ArrayBuffer | ArrayBufferView | Blob | DataView;\ntype FsReadStream = AsyncIterable<Uint8Array> & { path: string | { toString(): string } };\n\n// https://github.com/oven-sh/bun/issues/5980\ninterface BunFile extends Blob {\n readonly name?: string | undefined;\n}\n\nexport const checkFileSupport = () => {\n if (typeof File === 'undefined') {\n const { process } = globalThis as any;\n const isOldNode =\n typeof process?.versions?.node === 'string' && parseInt(process.versions.node.split('.')) < 20;\n throw new Error(\n '`File` is not defined as a global, which is required for file uploads.' +\n (isOldNode ?\n \" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.\"\n : ''),\n );\n }\n};\n\n/**\n * Typically, this is a native \"File\" class.\n *\n * We provide the {@link toFile} utility to convert a variety of objects\n * into the File class.\n *\n * For convenience, you can also pass a fetch Response, or in Node,\n * the result of fs.createReadStream().\n */\nexport type Uploadable = File | Response | FsReadStream | BunFile;\n\n/**\n * Construct a `File` instance. This is used to ensure a helpful error is thrown\n * for environments that don't define a global `File` yet.\n */\nexport function makeFile(\n fileBits: BlobPart[],\n fileName: string | undefined,\n options?: FilePropertyBag,\n): File {\n checkFileSupport();\n return new File(fileBits as any, fileName ?? 'unknown_file', options);\n}\n\nexport function getName(value: any): string | undefined {\n return (\n (\n (typeof value === 'object' &&\n value !== null &&\n (('name' in value && value.name && String(value.name)) ||\n ('url' in value && value.url && String(value.url)) ||\n ('filename' in value && value.filename && String(value.filename)) ||\n ('path' in value && value.path && String(value.path)))) ||\n ''\n )\n .split(/[\\\\/]/)\n .pop() || undefined\n );\n}\n\nexport const isAsyncIterable = (value: any): value is AsyncIterable<any> =>\n value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\n\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (\n opts: RequestOptions,\n fetch: BaseAnthropic | Fetch,\n): Promise<RequestOptions> => {\n if (!hasUploadableValue(opts.body)) return opts;\n\n return { ...opts, body: await createForm(opts.body, fetch) };\n};\n\ntype MultipartFormRequestOptions = Omit<RequestOptions, 'body'> & { body: unknown };\n\nexport const multipartFormRequestOptions = async (\n opts: MultipartFormRequestOptions,\n fetch: BaseAnthropic | Fetch,\n): Promise<RequestOptions> => {\n return { ...opts, body: await createForm(opts.body, fetch) };\n};\n\nconst supportsFormDataMap = /* @__PURE__ */ new WeakMap<Fetch, Promise<boolean>>();\n\n/**\n * node-fetch doesn't support the global FormData object in recent node versions. Instead of sending\n * properly-encoded form data, it just stringifies the object, resulting in a request body of \"[object FormData]\".\n * This function detects if the fetch function provided supports the global FormData object to avoid\n * confusing error messages later on.\n */\nfunction supportsFormData(fetchObject: BaseAnthropic | Fetch): Promise<boolean> {\n const fetch: Fetch = typeof fetchObject === 'function' ? fetchObject : (fetchObject as any).fetch;\n const cached = supportsFormDataMap.get(fetch);\n if (cached) return cached;\n const promise = (async () => {\n try {\n const FetchResponse = (\n 'Response' in fetch ?\n fetch.Response\n : (await fetch('data:,')).constructor) as typeof Response;\n const data = new FormData();\n if (data.toString() === (await new FetchResponse(data).text())) {\n return false;\n }\n return true;\n } catch {\n // avoid false negatives\n return true;\n }\n })();\n supportsFormDataMap.set(fetch, promise);\n return promise;\n}\n\nexport const createForm = async <T = Record<string, unknown>>(\n body: T | undefined,\n fetch: BaseAnthropic | Fetch,\n): Promise<FormData> => {\n if (!(await supportsFormData(fetch))) {\n throw new TypeError(\n 'The provided fetch function does not support file uploads with the current global FormData class.',\n );\n }\n const form = new FormData();\n await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n return form;\n};\n\n// We check for Blob not File because Bun.File doesn't inherit from File,\n// but they both inherit from Blob and have a `name` property at runtime.\nconst isNamedBlob = (value: unknown): value is Blob => value instanceof Blob && 'name' in value;\n\nconst isUploadable = (value: unknown) =>\n typeof value === 'object' &&\n value !== null &&\n (value instanceof Response || isAsyncIterable(value) || isNamedBlob(value));\n\nconst hasUploadableValue = (value: unknown): boolean => {\n if (isUploadable(value)) return true;\n if (Array.isArray(value)) return value.some(hasUploadableValue);\n if (value && typeof value === 'object') {\n for (const k in value) {\n if (hasUploadableValue((value as any)[k])) return true;\n }\n }\n return false;\n};\n\nconst addFormValue = async (form: FormData, key: string, value: unknown): Promise<void> => {\n if (value === undefined) return;\n if (value == null) {\n throw new TypeError(\n `Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`,\n );\n }\n\n // TODO: make nested formats configurable\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n form.append(key, String(value));\n } else if (value instanceof Response) {\n let options = {} as FilePropertyBag;\n const contentType = value.headers.get('Content-Type');\n if (contentType) {\n options = { type: contentType };\n }\n\n form.append(key, makeFile([await value.blob()], getName(value), options));\n } else if (isAsyncIterable(value)) {\n form.append(key, makeFile([await new Response(ReadableStreamFrom(value)).blob()], getName(value)));\n } else if (isNamedBlob(value)) {\n form.append(key, makeFile([value], getName(value), { type: value.type }));\n } else if (Array.isArray(value)) {\n await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n } else if (typeof value === 'object') {\n await Promise.all(\n Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)),\n );\n } else {\n throw new TypeError(\n `Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`,\n );\n }\n};\n","import { BlobPart, getName, makeFile, isAsyncIterable } from './uploads';\nimport type { FilePropertyBag } from './builtin-types';\nimport { checkFileSupport } from './uploads';\n\ntype BlobLikePart = string | ArrayBuffer | ArrayBufferView | BlobLike | DataView;\n\n/**\n * Intended to match DOM Blob, node-fetch Blob, node:buffer Blob, etc.\n * Don't add arrayBuffer here, node-fetch doesn't have it\n */\ninterface BlobLike {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */\n readonly size: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */\n readonly type: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */\n text(): Promise<string>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */\n slice(start?: number, end?: number): BlobLike;\n}\n\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isBlobLike = (value: any): value is BlobLike & { arrayBuffer(): Promise<ArrayBuffer> } =>\n value != null &&\n typeof value === 'object' &&\n typeof value.size === 'number' &&\n typeof value.type === 'string' &&\n typeof value.text === 'function' &&\n typeof value.slice === 'function' &&\n typeof value.arrayBuffer === 'function';\n\n/**\n * Intended to match DOM File, node:buffer File, undici File, etc.\n */\ninterface FileLike extends BlobLike {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */\n readonly lastModified: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */\n readonly name?: string | undefined;\n}\n\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isFileLike = (value: any): value is FileLike & { arrayBuffer(): Promise<ArrayBuffer> } =>\n value != null &&\n typeof value === 'object' &&\n typeof value.name === 'string' &&\n typeof value.lastModified === 'number' &&\n isBlobLike(value);\n\n/**\n * Intended to match DOM Response, node-fetch Response, undici Response, etc.\n */\nexport interface ResponseLike {\n url: string;\n blob(): Promise<BlobLike>;\n}\n\nconst isResponseLike = (value: any): value is ResponseLike =>\n value != null &&\n typeof value === 'object' &&\n typeof value.url === 'string' &&\n typeof value.blob === 'function';\n\nexport type ToFileInput =\n | FileLike\n | ResponseLike\n | Exclude<BlobLikePart, string>\n | AsyncIterable<BlobLikePart>;\n\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file. Can be an {@link Uploadable}, BlobLikePart, or AsyncIterable of BlobLikeParts\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(\n value: ToFileInput | PromiseLike<ToFileInput>,\n name?: string | null | undefined,\n options?: FilePropertyBag | undefined,\n): Promise<File> {\n checkFileSupport();\n\n // If it's a promise, resolve it.\n value = await value;\n\n name ||= getName(value);\n\n // If we've been given a `File` we don't need to do anything if the name / options\n // have not been customised.\n if (isFileLike(value)) {\n if (value instanceof File && name == null && options == null) {\n return value;\n }\n return makeFile([await value.arrayBuffer()], name ?? value.name, {\n type: value.type,\n lastModified: value.lastModified,\n ...options,\n });\n }\n\n if (isResponseLike(value)) {\n const blob = await value.blob();\n name ||= new URL(value.url).pathname.split(/[\\\\/]/).pop();\n\n return makeFile(await getBytes(blob), name, options);\n }\n\n const parts = await getBytes(value);\n\n if (!options?.type) {\n const type = parts.find((part) => typeof part === 'object' && 'type' in part && part.type);\n if (typeof type === 'string') {\n options = { ...options, type };\n }\n }\n\n return makeFile(parts, name, options);\n}\n\nasync function getBytes(value: BlobLikePart | AsyncIterable<BlobLikePart>): Promise<Array<BlobPart>> {\n let parts: Array<BlobPart> = [];\n if (\n typeof value === 'string' ||\n ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n value instanceof ArrayBuffer\n ) {\n parts.push(value);\n } else if (isBlobLike(value)) {\n parts.push(value instanceof Blob ? value : await value.arrayBuffer());\n } else if (\n isAsyncIterable(value) // includes Readable, ReadableStream, etc.\n ) {\n for await (const chunk of value) {\n parts.push(...(await getBytes(chunk as BlobLikePart))); // TODO, consider validating?\n }\n } else {\n const constructor = value?.constructor?.name;\n throw new Error(\n `Unexpected data type: ${typeof value}${\n constructor ? `; constructor: ${constructor}` : ''\n }${propsForError(value)}`,\n );\n }\n\n return parts;\n}\n\nfunction propsForError(value: unknown): string {\n if (typeof value !== 'object' || value === null) return '';\n const props = Object.getOwnPropertyNames(value);\n return `; props: [${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { BaseAnthropic } from '../client';\n\nexport abstract class APIResource {\n protected _client: BaseAnthropic;\n\n constructor(client: BaseAnthropic) {\n this._client = client;\n }\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { isReadonlyArray } from './utils/values';\n\ntype HeaderValue = string | undefined | null;\nexport type HeadersLike =\n | Headers\n | readonly HeaderValue[][]\n | Record<string, HeaderValue | readonly HeaderValue[]>\n | undefined\n | null\n | NullableHeaders;\n\nconst brand_privateNullableHeaders = Symbol.for('brand.privateNullableHeaders') as symbol & {\n description: 'brand.privateNullableHeaders';\n};\n\n/**\n * @internal\n * Users can pass explicit nulls to unset default headers. When we parse them\n * into a standard headers type we need to preserve that information.\n */\nexport type NullableHeaders = {\n /** Brand check, prevent users from creating a NullableHeaders. */\n [_: typeof brand_privateNullableHeaders]: true;\n /** Parsed headers. */\n values: Headers;\n /** Set of lowercase header names explicitly set to null. */\n nulls: Set<string>;\n};\n\nfunction* iterateHeaders(headers: HeadersLike): IterableIterator<readonly [string, string | null]> {\n if (!headers) return;\n\n if (brand_privateNullableHeaders in headers) {\n const { values, nulls } = headers as NullableHeaders;\n yield* values.entries();\n for (const name of nulls) {\n yield [name, null];\n }\n return;\n }\n\n let shouldClear = false;\n let iter: Iterable<readonly (HeaderValue | readonly HeaderValue[])[]>;\n if (headers instanceof Headers) {\n iter = headers.entries();\n } else if (isReadonlyArray(headers)) {\n iter = headers;\n } else {\n shouldClear = true;\n iter = Object.entries(headers ?? {});\n }\n for (let row of iter) {\n const name = row[0];\n if (typeof name !== 'string') throw new TypeError('expected header name to be a string');\n const values = isReadonlyArray(row[1]) ? row[1] : [row[1]];\n let didClear = false;\n for (const value of values) {\n if (value === undefined) continue;\n\n // Objects keys always overwrite older headers, they never append.\n // Yield a null to clear the header before adding the new values.\n if (shouldClear && !didClear) {\n didClear = true;\n yield [name, null];\n }\n yield [name, value];\n }\n }\n}\n\nexport const buildHeaders = (newHeaders: HeadersLike[]): NullableHeaders => {\n const targetHeaders = new Headers();\n const nullHeaders = new Set<string>();\n for (const headers of newHeaders) {\n const seenHeaders = new Set<string>();\n for (const [name, value] of iterateHeaders(headers)) {\n const lowerName = name.toLowerCase();\n if (!seenHeaders.has(lowerName)) {\n targetHeaders.delete(name);\n seenHeaders.add(lowerName);\n }\n if (value === null) {\n targetHeaders.delete(name);\n nullHeaders.add(lowerName);\n } else {\n targetHeaders.append(name, value);\n nullHeaders.delete(lowerName);\n }\n }\n }\n return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders };\n};\n\nexport const isEmptyHeaders = (headers: HeadersLike) => {\n for (const _ of iterateHeaders(headers)) return false;\n return true;\n};\n","import { AnthropicError } from '../../core/error';\n\n/**\n * Percent-encode everything that isn't safe to have in a path without encoding safe chars.\n *\n * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:\n * > unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * > sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n * > pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n */\nexport function encodeURIPath(str: string) {\n return str.replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);\n}\n\nconst EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));\n\nexport const createPathTagFunction = (pathEncoder = encodeURIPath) =>\n function path(statics: readonly string[], ...params: readonly unknown[]): string {\n // If there are no params, no processing is needed.\n if (statics.length === 1) return statics[0]!;\n\n let postPath = false;\n const invalidSegments = [];\n const path = statics.reduce((previousValue, currentValue, index) => {\n if (/[?#]/.test(currentValue)) {\n postPath = true;\n }\n const value = params[index];\n let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);\n if (\n index !== params.length &&\n (value == null ||\n (typeof value === 'object' &&\n // handle values from other realms\n value.toString ===\n Object.getPrototypeOf(Object.getPrototypeOf((value as any).hasOwnProperty ?? EMPTY) ?? EMPTY)\n ?.toString))\n ) {\n encoded = value + '';\n invalidSegments.push({\n start: previousValue.length + currentValue.length,\n length: encoded.length,\n error: `Value of type ${Object.prototype.toString\n .call(value)\n .slice(8, -1)} is not a valid path parameter`,\n });\n }\n return previousValue + currentValue + (index === params.length ? '' : encoded);\n }, '');\n\n const pathOnly = path.split(/[?#]/, 1)[0]!;\n const invalidSegmentPattern = /(?<=^|\\/)(?:\\.|%2e){1,2}(?=\\/|$)/gi;\n let match;\n\n // Find all invalid segments\n while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {\n invalidSegments.push({\n start: match.index,\n length: match[0].length,\n error: `Value \"${match[0]}\" can\\'t be safely passed as a path parameter`,\n });\n }\n\n invalidSegments.sort((a, b) => a.start - b.start);\n\n if (invalidSegments.length > 0) {\n let lastEnd = 0;\n const underline = invalidSegments.reduce((acc, segment) => {\n const spaces = ' '.repeat(segment.start - lastEnd);\n const arrows = '^'.repeat(segment.length);\n lastEnd = segment.start + segment.length;\n return acc + spaces + arrows;\n }, '');\n\n throw new AnthropicError(\n `Path parameters result in path with invalid segments:\\n${invalidSegments\n .map((e) => e.error)\n .join('\\n')}\\n${path}\\n${underline}`,\n );\n }\n\n return path;\n };\n\n/**\n * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.\n */\nexport const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as BetaAPI from './beta';\nimport { APIPromise } from '../../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../../core/pagination';\nimport { type Uploadable } from '../../core/uploads';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { multipartFormRequestOptions } from '../../internal/uploads';\nimport { path } from '../../internal/utils/path';\n\nexport class Files extends APIResource {\n /**\n * List Files\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const fileMetadata of client.beta.files.list()) {\n * // ...\n * }\n * ```\n */\n list(\n params: FileListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<FileMetadataPage, FileMetadata> {\n const { betas, ...query } = params ?? {};\n return this._client.getAPIList('/v1/files', Page<FileMetadata>, {\n query,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Delete File\n *\n * @example\n * ```ts\n * const deletedFile = await client.beta.files.delete(\n * 'file_id',\n * );\n * ```\n */\n delete(\n fileID: string,\n params: FileDeleteParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<DeletedFile> {\n const { betas } = params ?? {};\n return this._client.delete(path`/v1/files/${fileID}`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Download File\n *\n * @example\n * ```ts\n * const response = await client.beta.files.download(\n * 'file_id',\n * );\n *\n * const content = await response.blob();\n * console.log(content);\n * ```\n */\n download(\n fileID: string,\n params: FileDownloadParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<Response> {\n const { betas } = params ?? {};\n return this._client.get(path`/v1/files/${fileID}/content`, {\n ...options,\n headers: buildHeaders([\n {\n 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString(),\n Accept: 'application/binary',\n },\n options?.headers,\n ]),\n __binaryResponse: true,\n });\n }\n\n /**\n * Get File Metadata\n *\n * @example\n * ```ts\n * const fileMetadata =\n * await client.beta.files.retrieveMetadata('file_id');\n * ```\n */\n retrieveMetadata(\n fileID: string,\n params: FileRetrieveMetadataParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<FileMetadata> {\n const { betas } = params ?? {};\n return this._client.get(path`/v1/files/${fileID}`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Upload File\n *\n * @example\n * ```ts\n * const fileMetadata = await client.beta.files.upload({\n * file: fs.createReadStream('path/to/file'),\n * });\n * ```\n */\n upload(params: FileUploadParams, options?: RequestOptions): APIPromise<FileMetadata> {\n const { betas, ...body } = params;\n return this._client.post(\n '/v1/files',\n multipartFormRequestOptions(\n {\n body,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n options?.headers,\n ]),\n },\n this._client,\n ),\n );\n }\n}\n\nexport type FileMetadataPage = Page<FileMetadata>;\n\nexport interface DeletedFile {\n /**\n * ID of the deleted file.\n */\n id: string;\n\n /**\n * Deleted object type.\n *\n * For file deletion, this is always `\"file_deleted\"`.\n */\n type?: 'file_deleted';\n}\n\nexport interface FileMetadata {\n /**\n * Unique object identifier.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * RFC 3339 datetime string representing when the file was created.\n */\n created_at: string;\n\n /**\n * Original filename of the uploaded file.\n */\n filename: string;\n\n /**\n * MIME type of the file.\n */\n mime_type: string;\n\n /**\n * Size of the file in bytes.\n */\n size_bytes: number;\n\n /**\n * Object type.\n *\n * For files, this is always `\"file\"`.\n */\n type: 'file';\n\n /**\n * Whether the file can be downloaded.\n */\n downloadable?: boolean;\n}\n\nexport interface FileListParams extends PageParams {\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileDeleteParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileDownloadParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileRetrieveMetadataParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface FileUploadParams {\n /**\n * Body param: The file to upload\n */\n file: Uploadable;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Files {\n export {\n type DeletedFile as DeletedFile,\n type FileMetadata as FileMetadata,\n type FileMetadataPage as FileMetadataPage,\n type FileListParams as FileListParams,\n type FileDeleteParams as FileDeleteParams,\n type FileDownloadParams as FileDownloadParams,\n type FileRetrieveMetadataParams as FileRetrieveMetadataParams,\n type FileUploadParams as FileUploadParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as BetaAPI from './beta';\nimport { APIPromise } from '../../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../../core/pagination';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { path } from '../../internal/utils/path';\n\nexport class Models extends APIResource {\n /**\n * Get a specific model.\n *\n * The Models API response can be used to determine information about a specific\n * model or resolve a model alias to a model ID.\n *\n * @example\n * ```ts\n * const betaModelInfo = await client.beta.models.retrieve(\n * 'model_id',\n * );\n * ```\n */\n retrieve(\n modelID: string,\n params: ModelRetrieveParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<BetaModelInfo> {\n const { betas } = params ?? {};\n return this._client.get(path`/v1/models/${modelID}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n options?.headers,\n ]),\n });\n }\n\n /**\n * List available models.\n *\n * The Models API response can be used to determine which models are available for\n * use in the API. More recently released models are listed first.\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const betaModelInfo of client.beta.models.list()) {\n * // ...\n * }\n * ```\n */\n list(\n params: ModelListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<BetaModelInfosPage, BetaModelInfo> {\n const { betas, ...query } = params ?? {};\n return this._client.getAPIList('/v1/models?beta=true', Page<BetaModelInfo>, {\n query,\n ...options,\n headers: buildHeaders([\n { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n options?.headers,\n ]),\n });\n }\n}\n\nexport type BetaModelInfosPage = Page<BetaModelInfo>;\n\nexport interface BetaModelInfo {\n /**\n * Unique model identifier.\n */\n id: string;\n\n /**\n * RFC 3339 datetime string representing the time at which the model was released.\n * May be set to an epoch value if the release date is unknown.\n */\n created_at: string;\n\n /**\n * A human-readable name for the model.\n */\n display_name: string;\n\n /**\n * Object type.\n *\n * For Models, this is always `\"model\"`.\n */\n type: 'model';\n}\n\nexport interface ModelRetrieveParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ModelListParams extends PageParams {\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Models {\n export {\n type BetaModelInfo as BetaModelInfo,\n type BetaModelInfosPage as BetaModelInfosPage,\n type ModelRetrieveParams as ModelRetrieveParams,\n type ModelListParams as ModelListParams,\n };\n}\n","// File containing shared constants\n\n/**\n * Model-specific timeout constraints for non-streaming requests\n */\nexport const MODEL_NONSTREAMING_TOKENS: Record<string, number> = {\n 'claude-opus-4-20250514': 8192,\n 'claude-opus-4-0': 8192,\n 'claude-4-opus-20250514': 8192,\n 'anthropic.claude-opus-4-20250514-v1:0': 8192,\n 'claude-opus-4@20250514': 8192,\n 'claude-opus-4-1-20250805': 8192,\n 'anthropic.claude-opus-4-1-20250805-v1:0': 8192,\n 'claude-opus-4-1@20250805': 8192,\n};\n","import { AnthropicError } from '../core/error';\nimport {\n BetaContentBlock,\n BetaJSONOutputFormat,\n BetaMessage,\n BetaTextBlock,\n MessageCreateParams,\n} from '../resources/beta/messages/messages';\n\n// vendored from typefest just to make things look a bit nicer on hover\ntype Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};\n\nexport type BetaParseableMessageCreateParams = Simplify<\n Omit<MessageCreateParams, 'output_format'> & {\n output_format?: BetaJSONOutputFormat | AutoParseableBetaOutputFormat<any> | null;\n }\n>;\n\nexport type ExtractParsedContentFromBetaParams<Params extends BetaParseableMessageCreateParams> =\n Params['output_format'] extends AutoParseableBetaOutputFormat<infer P> ? P : null;\n\nexport type AutoParseableBetaOutputFormat<ParsedT> = BetaJSONOutputFormat & {\n parse(content: string): ParsedT;\n};\n\nexport type ParsedBetaMessage<ParsedT> = BetaMessage & {\n content: Array<ParsedBetaContentBlock<ParsedT>>;\n parsed_output: ParsedT | null;\n};\n\nexport type ParsedBetaContentBlock<ParsedT> =\n | (BetaTextBlock & { parsed: ParsedT | null })\n | Exclude<BetaContentBlock, BetaTextBlock>;\n\nexport function maybeParseBetaMessage<Params extends BetaParseableMessageCreateParams | null>(\n message: BetaMessage,\n params: Params,\n): ParsedBetaMessage<ExtractParsedContentFromBetaParams<NonNullable<Params>>> {\n if (!params || !('parse' in (params.output_format ?? {}))) {\n return {\n ...message,\n content: message.content.map((block) => {\n if (block.type === 'text') {\n return {\n ...block,\n parsed: null,\n };\n }\n return block;\n }),\n parsed_output: null,\n } as ParsedBetaMessage<ExtractParsedContentFromBetaParams<NonNullable<Params>>>;\n }\n\n return parseBetaMessage(message, params);\n}\n\nexport function parseBetaMessage<Params extends BetaParseableMessageCreateParams>(\n message: BetaMessage,\n params: Params,\n): ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>> {\n let firstParsed: ReturnType<typeof parseBetaOutputFormat<Params>> | null = null;\n\n const content: Array<ParsedBetaContentBlock<ExtractParsedContentFromBetaParams<Params>>> =\n message.content.map((block) => {\n if (block.type === 'text') {\n const parsed = parseBetaOutputFormat(params, block.text);\n\n if (firstParsed === null) {\n firstParsed = parsed;\n }\n\n return {\n ...block,\n parsed,\n };\n }\n return block;\n });\n\n return {\n ...message,\n content,\n parsed_output: firstParsed,\n } as ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>;\n}\n\nfunction parseBetaOutputFormat<Params extends BetaParseableMessageCreateParams>(\n params: Params,\n content: string,\n): ExtractParsedContentFromBetaParams<Params> | null {\n if (params.output_format?.type !== 'json_schema') {\n return null;\n }\n\n try {\n if ('parse' in params.output_format) {\n return params.output_format.parse(content);\n }\n\n return JSON.parse(content);\n } catch (error) {\n throw new AnthropicError(`Failed to parse structured output: ${error}`);\n }\n}\n","type Token = {\n type: string;\n value: string;\n};\n\nconst tokenize = (input: string): Token[] => {\n let current = 0;\n let tokens: Token[] = [];\n\n while (current < input.length) {\n let char = input[current];\n\n if (char === '\\\\') {\n current++;\n continue;\n }\n\n if (char === '{') {\n tokens.push({\n type: 'brace',\n value: '{',\n });\n\n current++;\n continue;\n }\n\n if (char === '}') {\n tokens.push({\n type: 'brace',\n value: '}',\n });\n\n current++;\n continue;\n }\n\n if (char === '[') {\n tokens.push({\n type: 'paren',\n value: '[',\n });\n\n current++;\n continue;\n }\n\n if (char === ']') {\n tokens.push({\n type: 'paren',\n value: ']',\n });\n\n current++;\n continue;\n }\n\n if (char === ':') {\n tokens.push({\n type: 'separator',\n value: ':',\n });\n\n current++;\n continue;\n }\n\n if (char === ',') {\n tokens.push({\n type: 'delimiter',\n value: ',',\n });\n\n current++;\n continue;\n }\n\n if (char === '\"') {\n let value = '';\n let danglingQuote = false;\n\n char = input[++current];\n\n while (char !== '\"') {\n if (current === input.length) {\n danglingQuote = true;\n break;\n }\n\n if (char === '\\\\') {\n current++;\n if (current === input.length) {\n danglingQuote = true;\n break;\n }\n value += char + input[current];\n char = input[++current];\n } else {\n value += char;\n char = input[++current];\n }\n }\n\n char = input[++current];\n\n if (!danglingQuote) {\n tokens.push({\n type: 'string',\n value,\n });\n }\n continue;\n }\n\n let WHITESPACE = /\\s/;\n if (char && WHITESPACE.test(char)) {\n current++;\n continue;\n }\n\n let NUMBERS = /[0-9]/;\n if ((char && NUMBERS.test(char)) || char === '-' || char === '.') {\n let value = '';\n\n if (char === '-') {\n value += char;\n char = input[++current];\n }\n\n while ((char && NUMBERS.test(char)) || char === '.') {\n value += char;\n char = input[++current];\n }\n\n tokens.push({\n type: 'number',\n value,\n });\n continue;\n }\n\n let LETTERS = /[a-z]/i;\n if (char && LETTERS.test(char)) {\n let value = '';\n\n while (char && LETTERS.test(char)) {\n if (current === input.length) {\n break;\n }\n value += char;\n char = input[++current];\n }\n\n if (value == 'true' || value == 'false' || value === 'null') {\n tokens.push({\n type: 'name',\n value,\n });\n } else {\n // unknown token, e.g. `nul` which isn't quite `null`\n current++;\n continue;\n }\n continue;\n }\n\n current++;\n }\n\n return tokens;\n },\n strip = (tokens: Token[]): Token[] => {\n if (tokens.length === 0) {\n return tokens;\n }\n\n let lastToken = tokens[tokens.length - 1]!;\n\n switch (lastToken.type) {\n case 'separator':\n tokens = tokens.slice(0, tokens.length - 1);\n return strip(tokens);\n break;\n case 'number':\n let lastCharacterOfLastToken = lastToken.value[lastToken.value.length - 1];\n if (lastCharacterOfLastToken === '.' || lastCharacterOfLastToken === '-') {\n tokens = tokens.slice(0, tokens.length - 1);\n return strip(tokens);\n }\n case 'string':\n let tokenBeforeTheLastToken = tokens[tokens.length - 2];\n if (tokenBeforeTheLastToken?.type === 'delimiter') {\n tokens = tokens.slice(0, tokens.length - 1);\n return strip(tokens);\n } else if (tokenBeforeTheLastToken?.type === 'brace' && tokenBeforeTheLastToken.value === '{') {\n tokens = tokens.slice(0, tokens.length - 1);\n return strip(tokens);\n }\n break;\n case 'delimiter':\n tokens = tokens.slice(0, tokens.length - 1);\n return strip(tokens);\n break;\n }\n\n return tokens;\n },\n unstrip = (tokens: Token[]): Token[] => {\n let tail: string[] = [];\n\n tokens.map((token) => {\n if (token.type === 'brace') {\n if (token.value === '{') {\n tail.push('}');\n } else {\n tail.splice(tail.lastIndexOf('}'), 1);\n }\n }\n if (token.type === 'paren') {\n if (token.value === '[') {\n tail.push(']');\n } else {\n tail.splice(tail.lastIndexOf(']'), 1);\n }\n }\n });\n\n if (tail.length > 0) {\n tail.reverse().map((item) => {\n if (item === '}') {\n tokens.push({\n type: 'brace',\n value: '}',\n });\n } else if (item === ']') {\n tokens.push({\n type: 'paren',\n value: ']',\n });\n }\n });\n }\n\n return tokens;\n },\n generate = (tokens: Token[]): string => {\n let output = '';\n\n tokens.map((token) => {\n switch (token.type) {\n case 'string':\n output += '\"' + token.value + '\"';\n break;\n default:\n output += token.value;\n break;\n }\n });\n\n return output;\n },\n partialParse = (input: string): unknown => JSON.parse(generate(unstrip(strip(tokenize(input)))));\n\nexport { partialParse };\n","import { partialParse } from '../_vendor/partial-json-parser/parser';\nimport { AnthropicError, APIUserAbortError } from '../error';\nimport { isAbortError } from '../internal/errors';\nimport { type RequestOptions } from '../internal/request-options';\nimport {\n type BetaContentBlock,\n type BetaMCPToolUseBlock,\n type BetaMessage,\n type BetaMessageParam,\n Messages as BetaMessages,\n type BetaRawMessageStreamEvent as BetaMessageStreamEvent,\n type BetaServerToolUseBlock,\n type BetaTextBlock,\n type BetaTextCitation,\n type BetaToolUseBlock,\n type MessageCreateParams,\n type MessageCreateParamsBase,\n MessageCreateParamsStreaming,\n} from '../resources/beta/messages/messages';\nimport { Stream } from '../streaming';\nimport { maybeParseBetaMessage, type ParsedBetaMessage } from './beta-parser';\n\nexport interface MessageStreamEvents {\n connect: () => void;\n streamEvent: (event: BetaMessageStreamEvent, snapshot: BetaMessage) => void;\n text: (textDelta: string, textSnapshot: string) => void;\n citation: (citation: BetaTextCitation, citationsSnapshot: BetaTextCitation[]) => void;\n inputJson: (partialJson: string, jsonSnapshot: unknown) => void;\n thinking: (thinkingDelta: string, thinkingSnapshot: string) => void;\n signature: (signature: string) => void;\n message: (message: BetaMessage) => void;\n contentBlock: (content: BetaContentBlock) => void;\n finalMessage: (message: BetaMessage) => void;\n error: (error: AnthropicError) => void;\n abort: (error: APIUserAbortError) => void;\n end: () => void;\n}\n\ntype MessageStreamEventListeners<Event extends keyof MessageStreamEvents> = {\n listener: MessageStreamEvents[Event];\n once?: boolean;\n}[];\n\nconst JSON_BUF_PROPERTY = '__json_buf';\n\nexport type TracksToolInput = BetaToolUseBlock | BetaServerToolUseBlock | BetaMCPToolUseBlock;\n\nfunction tracksToolInput(content: BetaContentBlock): content is TracksToolInput {\n return content.type === 'tool_use' || content.type === 'server_tool_use' || content.type === 'mcp_tool_use';\n}\n\nexport class BetaMessageStream<ParsedT = null> implements AsyncIterable<BetaMessageStreamEvent> {\n messages: BetaMessageParam[] = [];\n receivedMessages: ParsedBetaMessage<ParsedT>[] = [];\n #currentMessageSnapshot: BetaMessage | undefined;\n #params: MessageCreateParams | null = null;\n\n controller: AbortController = new AbortController();\n\n #connectedPromise: Promise<Response | null>;\n #resolveConnectedPromise: (response: Response | null) => void = () => {};\n #rejectConnectedPromise: (error: AnthropicError) => void = () => {};\n\n #endPromise: Promise<void>;\n #resolveEndPromise: () => void = () => {};\n #rejectEndPromise: (error: AnthropicError) => void = () => {};\n\n #listeners: { [Event in keyof MessageStreamEvents]?: MessageStreamEventListeners<Event> } = {};\n\n #ended = false;\n #errored = false;\n #aborted = false;\n #catchingPromiseCreated = false;\n #response: Response | null | undefined;\n #request_id: string | null | undefined;\n\n constructor(params: MessageCreateParamsBase | null) {\n this.#connectedPromise = new Promise<Response | null>((resolve, reject) => {\n this.#resolveConnectedPromise = resolve;\n this.#rejectConnectedPromise = reject;\n });\n\n this.#endPromise = new Promise<void>((resolve, reject) => {\n this.#resolveEndPromise = resolve;\n this.#rejectEndPromise = reject;\n });\n\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n this.#connectedPromise.catch(() => {});\n this.#endPromise.catch(() => {});\n\n this.#params = params;\n }\n\n get response(): Response | null | undefined {\n return this.#response;\n }\n\n get request_id(): string | null | undefined {\n return this.#request_id;\n }\n\n /**\n * Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,\n * returned vie the `request-id` header which is useful for debugging requests and resporting\n * issues to Anthropic.\n *\n * This is the same as the `APIPromise.withResponse()` method.\n *\n * This method will raise an error if you created the stream using `MessageStream.fromReadableStream`\n * as no `Response` is available.\n */\n async withResponse(): Promise<{\n data: BetaMessageStream<ParsedT>;\n response: Response;\n request_id: string | null | undefined;\n }> {\n const response = await this.#connectedPromise;\n if (!response) {\n throw new Error('Could not resolve a `Response` object');\n }\n\n return {\n data: this,\n response,\n request_id: response.headers.get('request-id'),\n };\n }\n\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream: ReadableStream): BetaMessageStream {\n const runner = new BetaMessageStream(null);\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n\n static createMessage<ParsedT>(\n messages: BetaMessages,\n params: MessageCreateParamsBase,\n options?: RequestOptions,\n ): BetaMessageStream<ParsedT> {\n const runner = new BetaMessageStream<ParsedT>(params as MessageCreateParamsStreaming);\n for (const message of params.messages) {\n runner._addMessageParam(message);\n }\n runner.#params = { ...params, stream: true };\n runner._run(() =>\n runner._createMessage(\n messages,\n { ...params, stream: true },\n { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } },\n ),\n );\n return runner;\n }\n\n protected _run(executor: () => Promise<any>) {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, this.#handleError);\n }\n\n protected _addMessageParam(message: BetaMessageParam) {\n this.messages.push(message);\n }\n\n protected _addMessage(message: ParsedBetaMessage<ParsedT>, emit = true) {\n this.receivedMessages.push(message);\n if (emit) {\n this._emit('message', message);\n }\n }\n\n protected async _createMessage(\n messages: BetaMessages,\n params: MessageCreateParams,\n options?: RequestOptions,\n ): Promise<void> {\n const signal = options?.signal;\n let abortHandler: (() => void) | undefined;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n abortHandler = this.controller.abort.bind(this.controller);\n signal.addEventListener('abort', abortHandler);\n }\n try {\n this.#beginRequest();\n const { response, data: stream } = await messages\n .create({ ...params, stream: true }, { ...options, signal: this.controller.signal })\n .withResponse();\n this._connected(response);\n for await (const event of stream) {\n this.#addStreamEvent(event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n this.#endRequest();\n } finally {\n if (signal && abortHandler) {\n signal.removeEventListener('abort', abortHandler);\n }\n }\n }\n\n protected _connected(response: Response | null) {\n if (this.ended) return;\n this.#response = response;\n this.#request_id = response?.headers.get('request-id');\n this.#resolveConnectedPromise(response);\n this._emit('connect');\n }\n\n get ended(): boolean {\n return this.#ended;\n }\n\n get errored(): boolean {\n return this.#errored;\n }\n\n get aborted(): boolean {\n return this.#aborted;\n }\n\n abort() {\n this.controller.abort();\n }\n\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this MessageStream, so that calls can be chained\n */\n on<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n const listeners: MessageStreamEventListeners<Event> =\n this.#listeners[event] || (this.#listeners[event] = []);\n listeners.push({ listener });\n return this;\n }\n\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this MessageStream, so that calls can be chained\n */\n off<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n const listeners = this.#listeners[event];\n if (!listeners) return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0) listeners.splice(index, 1);\n return this;\n }\n\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this MessageStream, so that calls can be chained\n */\n once<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n const listeners: MessageStreamEventListeners<Event> =\n this.#listeners[event] || (this.#listeners[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted<Event extends keyof MessageStreamEvents>(\n event: Event,\n ): Promise<\n Parameters<MessageStreamEvents[Event]> extends [infer Param] ? Param\n : Parameters<MessageStreamEvents[Event]> extends [] ? void\n : Parameters<MessageStreamEvents[Event]>\n > {\n return new Promise((resolve, reject) => {\n this.#catchingPromiseCreated = true;\n if (event !== 'error') this.once('error', reject);\n this.once(event, resolve as any);\n });\n }\n\n async done(): Promise<void> {\n this.#catchingPromiseCreated = true;\n await this.#endPromise;\n }\n\n get currentMessage(): BetaMessage | undefined {\n return this.#currentMessageSnapshot;\n }\n\n #getFinalMessage(): ParsedBetaMessage<ParsedT> {\n if (this.receivedMessages.length === 0) {\n throw new AnthropicError('stream ended without producing a Message with role=assistant');\n }\n return this.receivedMessages.at(-1)!;\n }\n\n /**\n * @returns a promise that resolves with the the final assistant Message response,\n * or rejects if an error occurred or the stream ended prematurely without producing a Message.\n * If structured outputs were used, this will be a ParsedMessage with a `parsed` field.\n */\n async finalMessage(): Promise<ParsedBetaMessage<ParsedT>> {\n await this.done();\n return this.#getFinalMessage();\n }\n\n #getFinalText(): string {\n if (this.receivedMessages.length === 0) {\n throw new AnthropicError('stream ended without producing a Message with role=assistant');\n }\n const textBlocks = this.receivedMessages\n .at(-1)!\n .content.filter((block): block is BetaTextBlock => block.type === 'text')\n .map((block) => block.text);\n if (textBlocks.length === 0) {\n throw new AnthropicError('stream ended without producing a content block with type=text');\n }\n return textBlocks.join(' ');\n }\n\n /**\n * @returns a promise that resolves with the the final assistant Message's text response, concatenated\n * together if there are more than one text blocks.\n * Rejects if an error occurred or the stream ended prematurely without producing a Message.\n */\n async finalText(): Promise<string> {\n await this.done();\n return this.#getFinalText();\n }\n\n #handleError = (error: unknown) => {\n this.#errored = true;\n if (isAbortError(error)) {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n this.#aborted = true;\n return this._emit('abort', error);\n }\n if (error instanceof AnthropicError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const anthropicError: AnthropicError = new AnthropicError(error.message);\n // @ts-ignore\n anthropicError.cause = error;\n return this._emit('error', anthropicError);\n }\n return this._emit('error', new AnthropicError(String(error)));\n };\n\n protected _emit<Event extends keyof MessageStreamEvents>(\n event: Event,\n ...args: Parameters<MessageStreamEvents[Event]>\n ) {\n // make sure we don't emit any MessageStreamEvents after end\n if (this.#ended) return;\n\n if (event === 'end') {\n this.#ended = true;\n this.#resolveEndPromise();\n }\n\n const listeners: MessageStreamEventListeners<Event> | undefined = this.#listeners[event];\n if (listeners) {\n this.#listeners[event] = listeners.filter((l) => !l.once) as any;\n listeners.forEach(({ listener }: any) => listener(...args));\n }\n\n if (event === 'abort') {\n const error = args[0] as APIUserAbortError;\n if (!this.#catchingPromiseCreated && !listeners?.length) {\n Promise.reject(error);\n }\n this.#rejectConnectedPromise(error);\n this.#rejectEndPromise(error);\n this._emit('end');\n return;\n }\n\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n\n const error = args[0] as AnthropicError;\n if (!this.#catchingPromiseCreated && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.final...()\n // - etc.\n Promise.reject(error);\n }\n this.#rejectConnectedPromise(error);\n this.#rejectEndPromise(error);\n this._emit('end');\n }\n }\n\n protected _emitFinal() {\n const finalMessage = this.receivedMessages.at(-1);\n if (finalMessage) {\n this._emit('finalMessage', this.#getFinalMessage());\n }\n }\n\n #beginRequest() {\n if (this.ended) return;\n this.#currentMessageSnapshot = undefined;\n }\n #addStreamEvent(event: BetaMessageStreamEvent) {\n if (this.ended) return;\n const messageSnapshot = this.#accumulateMessage(event);\n this._emit('streamEvent', event, messageSnapshot);\n\n switch (event.type) {\n case 'content_block_delta': {\n const content = messageSnapshot.content.at(-1)!;\n switch (event.delta.type) {\n case 'text_delta': {\n if (content.type === 'text') {\n this._emit('text', event.delta.text, content.text || '');\n }\n break;\n }\n case 'citations_delta': {\n if (content.type === 'text') {\n this._emit('citation', event.delta.citation, content.citations ?? []);\n }\n break;\n }\n case 'input_json_delta': {\n if (tracksToolInput(content) && content.input) {\n this._emit('inputJson', event.delta.partial_json, content.input);\n }\n break;\n }\n case 'thinking_delta': {\n if (content.type === 'thinking') {\n this._emit('thinking', event.delta.thinking, content.thinking);\n }\n break;\n }\n case 'signature_delta': {\n if (content.type === 'thinking') {\n this._emit('signature', content.signature);\n }\n break;\n }\n default:\n checkNever(event.delta);\n }\n break;\n }\n case 'message_stop': {\n this._addMessageParam(messageSnapshot);\n this._addMessage(maybeParseBetaMessage(messageSnapshot, this.#params), true);\n break;\n }\n case 'content_block_stop': {\n this._emit('contentBlock', messageSnapshot.content.at(-1)!);\n break;\n }\n case 'message_start': {\n this.#currentMessageSnapshot = messageSnapshot;\n break;\n }\n case 'content_block_start':\n case 'message_delta':\n break;\n }\n }\n #endRequest(): ParsedBetaMessage<ParsedT> {\n if (this.ended) {\n throw new AnthropicError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = this.#currentMessageSnapshot;\n if (!snapshot) {\n throw new AnthropicError(`request ended without sending any chunks`);\n }\n this.#currentMessageSnapshot = undefined;\n return maybeParseBetaMessage(snapshot, this.#params);\n }\n\n protected async _fromReadableStream(\n readableStream: ReadableStream,\n options?: RequestOptions,\n ): Promise<void> {\n const signal = options?.signal;\n let abortHandler: (() => void) | undefined;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n abortHandler = this.controller.abort.bind(this.controller);\n signal.addEventListener('abort', abortHandler);\n }\n try {\n this.#beginRequest();\n this._connected(null);\n const stream = Stream.fromReadableStream<BetaMessageStreamEvent>(readableStream, this.controller);\n for await (const event of stream) {\n this.#addStreamEvent(event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n this.#endRequest();\n } finally {\n if (signal && abortHandler) {\n signal.removeEventListener('abort', abortHandler);\n }\n }\n }\n\n /**\n * Mutates this.#currentMessage with the current event. Handling the accumulation of multiple messages\n * will be needed to be handled by the caller, this method will throw if you try to accumulate for multiple\n * messages.\n */\n #accumulateMessage(event: BetaMessageStreamEvent): BetaMessage {\n let snapshot = this.#currentMessageSnapshot;\n\n if (event.type === 'message_start') {\n if (snapshot) {\n throw new AnthropicError(`Unexpected event order, got ${event.type} before receiving \"message_stop\"`);\n }\n return event.message;\n }\n\n if (!snapshot) {\n throw new AnthropicError(`Unexpected event order, got ${event.type} before \"message_start\"`);\n }\n\n switch (event.type) {\n case 'message_stop':\n return snapshot;\n case 'message_delta':\n snapshot.container = event.delta.container;\n snapshot.stop_reason = event.delta.stop_reason;\n snapshot.stop_sequence = event.delta.stop_sequence;\n snapshot.usage.output_tokens = event.usage.output_tokens;\n snapshot.context_management = event.context_management;\n\n if (event.usage.input_tokens != null) {\n snapshot.usage.input_tokens = event.usage.input_tokens;\n }\n\n if (event.usage.cache_creation_input_tokens != null) {\n snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;\n }\n\n if (event.usage.cache_read_input_tokens != null) {\n snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;\n }\n\n if (event.usage.server_tool_use != null) {\n snapshot.usage.server_tool_use = event.usage.server_tool_use;\n }\n\n return snapshot;\n case 'content_block_start':\n snapshot.content.push(event.content_block);\n return snapshot;\n case 'content_block_delta': {\n const snapshotContent = snapshot.content.at(event.index);\n\n switch (event.delta.type) {\n case 'text_delta': {\n if (snapshotContent?.type === 'text') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n text: (snapshotContent.text || '') + event.delta.text,\n };\n }\n break;\n }\n case 'citations_delta': {\n if (snapshotContent?.type === 'text') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n citations: [...(snapshotContent.citations ?? []), event.delta.citation],\n };\n }\n break;\n }\n case 'input_json_delta': {\n if (snapshotContent && tracksToolInput(snapshotContent)) {\n // we need to keep track of the raw JSON string as well so that we can\n // re-parse it for each delta, for now we just store it as an untyped\n // non-enumerable property on the snapshot\n let jsonBuf = (snapshotContent as any)[JSON_BUF_PROPERTY] || '';\n jsonBuf += event.delta.partial_json;\n\n const newContent = { ...snapshotContent };\n Object.defineProperty(newContent, JSON_BUF_PROPERTY, {\n value: jsonBuf,\n enumerable: false,\n writable: true,\n });\n\n if (jsonBuf) {\n try {\n newContent.input = partialParse(jsonBuf);\n } catch (err) {\n const error = new AnthropicError(\n `Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${err}. JSON: ${jsonBuf}`,\n );\n this.#handleError(error);\n }\n }\n snapshot.content[event.index] = newContent;\n }\n break;\n }\n case 'thinking_delta': {\n if (snapshotContent?.type === 'thinking') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n thinking: snapshotContent.thinking + event.delta.thinking,\n };\n }\n break;\n }\n case 'signature_delta': {\n if (snapshotContent?.type === 'thinking') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n signature: event.delta.signature,\n };\n }\n break;\n }\n default:\n checkNever(event.delta);\n }\n return snapshot;\n }\n case 'content_block_stop':\n return snapshot;\n }\n }\n\n [Symbol.asyncIterator](): AsyncIterator<BetaMessageStreamEvent> {\n const pushQueue: BetaMessageStreamEvent[] = [];\n const readQueue: {\n resolve: (chunk: BetaMessageStreamEvent | undefined) => void;\n reject: (error: unknown) => void;\n }[] = [];\n let done = false;\n\n this.on('streamEvent', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n } else {\n pushQueue.push(event);\n }\n });\n\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n\n return {\n next: async (): Promise<IteratorResult<BetaMessageStreamEvent>> => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise<BetaMessageStreamEvent | undefined>((resolve, reject) =>\n readQueue.push({ resolve, reject }),\n ).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift()!;\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n\n toReadableStream(): ReadableStream {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\n\n// used to ensure exhaustive case matching without throwing a runtime error\nfunction checkNever(x: never) {}\n","import { Model } from '../../resources';\n\nexport const DEFAULT_TOKEN_THRESHOLD = 100_000;\n\nexport const DEFAULT_SUMMARY_PROMPT = `You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:\n1. Task Overview\nThe user's core request and success criteria\nAny clarifications or constraints they specified\n2. Current State\nWhat has been completed so far\nFiles created, modified, or analyzed (with paths if relevant)\nKey outputs or artifacts produced\n3. Important Discoveries\nTechnical constraints or requirements uncovered\nDecisions made and their rationale\nErrors encountered and how they were resolved\nWhat approaches were tried that didn't work (and why)\n4. Next Steps\nSpecific actions needed to complete the task\nAny blockers or open questions to resolve\nPriority order if multiple steps remain\n5. Context to Preserve\nUser preferences or style requirements\nDomain-specific details that aren't obvious\nAny promises made to the user\nBe concise but complete—err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.\nWrap your summary in <summary></summary> tags.`;\n\nexport interface CompactionControl {\n /**\n * The context token threshold at which to trigger compaction.\n *\n * When the cumulative token count (input + output) across all messages exceeds this threshold,\n * the message history will be automatically summarized and compressed.\n *\n * @default 100000\n */\n contextTokenThreshold?: number;\n\n /**\n * The model to use for generating the compaction summary.\n * If not specified, defaults to the same model used for the tool runner.\n */\n model?: Model;\n\n /**\n * The prompt used to instruct the model on how to generate the summary.\n */\n summaryPrompt?: string;\n\n enabled: boolean;\n}\n","import { BetaRunnableTool } from './BetaRunnableTool';\nimport { Anthropic } from '../..';\nimport { AnthropicError } from '../../core/error';\nimport { BetaMessage, BetaMessageParam, BetaToolUnion, MessageCreateParams } from '../../resources/beta';\nimport { BetaMessageStream } from '../BetaMessageStream';\nimport { RequestOptions } from '../../internal/request-options';\nimport { buildHeaders } from '../../internal/headers';\nimport { CompactionControl, DEFAULT_SUMMARY_PROMPT, DEFAULT_TOKEN_THRESHOLD } from './CompactionControl';\n\n/**\n * Just Promise.withResolvers(), which is not available in all environments.\n */\nfunction promiseWithResolvers<T>(): {\n promise: Promise<T>;\n resolve: (value: T) => void;\n reject: (reason?: any) => void;\n} {\n let resolve: (value: T) => void;\n let reject: (reason?: any) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve: resolve!, reject: reject! };\n}\n\n/**\n * A ToolRunner handles the automatic conversation loop between the assistant and tools.\n *\n * A ToolRunner is an async iterable that yields either BetaMessage or BetaMessageStream objects\n * depending on the streaming configuration.\n */\nexport class BetaToolRunner<Stream extends boolean> {\n /** Whether the async iterator has been consumed */\n #consumed = false;\n /** Whether parameters have been mutated since the last API call */\n #mutated = false;\n /** Current state containing the request parameters */\n #state: { params: BetaToolRunnerParams };\n #options: BetaToolRunnerRequestOptions;\n /** Promise for the last message received from the assistant */\n #message?: Promise<BetaMessage> | undefined;\n /** Cached tool response to avoid redundant executions */\n #toolResponse?: Promise<BetaMessageParam | null> | undefined;\n /** Promise resolvers for waiting on completion */\n #completion: {\n promise: Promise<BetaMessage>;\n resolve: (value: BetaMessage) => void;\n reject: (reason?: any) => void;\n };\n /** Number of iterations (API requests) made so far */\n #iterationCount = 0;\n\n constructor(\n private client: Anthropic,\n params: BetaToolRunnerParams,\n options?: BetaToolRunnerRequestOptions,\n ) {\n this.#state = {\n params: {\n // You can't clone the entire params since there are functions as handlers.\n // You also don't really need to clone params.messages, but it probably will prevent a foot gun\n // somewhere.\n ...params,\n messages: structuredClone(params.messages),\n },\n };\n\n this.#options = {\n ...options,\n headers: buildHeaders([{ 'x-stainless-helper': 'BetaToolRunner' }, options?.headers]),\n };\n this.#completion = promiseWithResolvers();\n }\n\n async #checkAndCompact(): Promise<boolean> {\n const compactionControl = this.#state.params.compactionControl;\n if (!compactionControl || !compactionControl.enabled) {\n return false;\n }\n\n let tokensUsed = 0;\n if (this.#message !== undefined) {\n try {\n const message = await this.#message;\n const totalInputTokens =\n message.usage.input_tokens +\n (message.usage.cache_creation_input_tokens ?? 0) +\n (message.usage.cache_read_input_tokens ?? 0);\n tokensUsed = totalInputTokens + message.usage.output_tokens;\n } catch {\n // If we can't get the message, skip compaction\n return false;\n }\n }\n\n const threshold = compactionControl.contextTokenThreshold ?? DEFAULT_TOKEN_THRESHOLD;\n\n if (tokensUsed < threshold) {\n return false;\n }\n\n const model = compactionControl.model ?? this.#state.params.model;\n const summaryPrompt = compactionControl.summaryPrompt ?? DEFAULT_SUMMARY_PROMPT;\n\n const messages = this.#state.params.messages;\n\n if (messages[messages.length - 1]!.role === 'assistant') {\n // Remove tool_use blocks from the last message to avoid 400 error\n // (tool_use requires tool_result, which we don't have yet)\n const lastMessage = messages[messages.length - 1]!;\n if (Array.isArray(lastMessage.content)) {\n const nonToolBlocks = lastMessage.content.filter((block) => block.type !== 'tool_use');\n\n if (nonToolBlocks.length === 0) {\n // If all blocks were tool_use, just remove the message entirely\n messages.pop();\n } else {\n lastMessage.content = nonToolBlocks;\n }\n }\n }\n\n const response = await this.client.beta.messages.create(\n {\n model,\n messages: [\n ...messages,\n {\n role: 'user',\n content: [\n {\n type: 'text',\n text: summaryPrompt,\n },\n ],\n },\n ],\n max_tokens: this.#state.params.max_tokens,\n },\n {\n headers: { 'x-stainless-helper': 'compaction' },\n },\n );\n\n if (response.content[0]?.type !== 'text') {\n throw new AnthropicError('Expected text response for compaction');\n }\n this.#state.params.messages = [\n {\n role: 'user',\n content: response.content,\n },\n ];\n return true;\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<\n Stream extends true ? BetaMessageStream\n : Stream extends false ? BetaMessage\n : BetaMessage | BetaMessageStream\n > {\n if (this.#consumed) {\n throw new AnthropicError('Cannot iterate over a consumed stream');\n }\n\n this.#consumed = true;\n this.#mutated = true;\n this.#toolResponse = undefined;\n\n try {\n while (true) {\n let stream;\n try {\n if (\n this.#state.params.max_iterations &&\n this.#iterationCount >= this.#state.params.max_iterations\n ) {\n break;\n }\n\n this.#mutated = false;\n this.#toolResponse = undefined;\n this.#iterationCount++;\n this.#message = undefined;\n\n const { max_iterations, compactionControl, ...params } = this.#state.params;\n\n if (params.stream) {\n stream = this.client.beta.messages.stream({ ...params }, this.#options);\n this.#message = stream.finalMessage();\n // Make sure that this promise doesn't throw before we get the option to do something about it.\n // Error will be caught when we call await this.#message ultimately\n this.#message.catch(() => {});\n yield stream as any;\n } else {\n this.#message = this.client.beta.messages.create({ ...params, stream: false }, this.#options);\n yield this.#message as any;\n }\n\n const isCompacted = await this.#checkAndCompact();\n if (!isCompacted) {\n if (!this.#mutated) {\n const { role, content } = await this.#message;\n this.#state.params.messages.push({ role, content });\n }\n\n const toolMessage = await this.#generateToolResponse(this.#state.params.messages.at(-1)!);\n if (toolMessage) {\n this.#state.params.messages.push(toolMessage);\n } else if (!this.#mutated) {\n break;\n }\n }\n } finally {\n if (stream) {\n stream.abort();\n }\n }\n }\n\n if (!this.#message) {\n throw new AnthropicError('ToolRunner concluded without a message from the server');\n }\n\n this.#completion.resolve(await this.#message);\n } catch (error) {\n this.#consumed = false;\n // Silence unhandled promise errors\n this.#completion.promise.catch(() => {});\n this.#completion.reject(error);\n this.#completion = promiseWithResolvers();\n throw error;\n }\n }\n\n /**\n * Update the parameters for the next API call. This invalidates any cached tool responses.\n *\n * @param paramsOrMutator - Either new parameters or a function to mutate existing parameters\n *\n * @example\n * // Direct parameter update\n * runner.setMessagesParams({\n * model: 'claude-3-5-haiku-latest',\n * max_tokens: 500,\n * });\n *\n * @example\n * // Using a mutator function\n * runner.setMessagesParams((params) => ({\n * ...params,\n * max_tokens: 100,\n * }));\n */\n setMessagesParams(params: BetaToolRunnerParams): void;\n setMessagesParams(mutator: (prevParams: BetaToolRunnerParams) => BetaToolRunnerParams): void;\n setMessagesParams(\n paramsOrMutator: BetaToolRunnerParams | ((prevParams: BetaToolRunnerParams) => BetaToolRunnerParams),\n ) {\n if (typeof paramsOrMutator === 'function') {\n this.#state.params = paramsOrMutator(this.#state.params);\n } else {\n this.#state.params = paramsOrMutator;\n }\n this.#mutated = true;\n // Invalidate cached tool response since parameters changed\n this.#toolResponse = undefined;\n }\n\n /**\n * Get the tool response for the last message from the assistant.\n * Avoids redundant tool executions by caching results.\n *\n * @returns A promise that resolves to a BetaMessageParam containing tool results, or null if no tools need to be executed\n *\n * @example\n * const toolResponse = await runner.generateToolResponse();\n * if (toolResponse) {\n * console.log('Tool results:', toolResponse.content);\n * }\n */\n async generateToolResponse() {\n const message = (await this.#message) ?? this.params.messages.at(-1);\n if (!message) {\n return null;\n }\n return this.#generateToolResponse(message);\n }\n\n async #generateToolResponse(lastMessage: BetaMessageParam) {\n if (this.#toolResponse !== undefined) {\n return this.#toolResponse;\n }\n this.#toolResponse = generateToolResponse(this.#state.params, lastMessage);\n return this.#toolResponse;\n }\n\n /**\n * Wait for the async iterator to complete. This works even if the async iterator hasn't yet started, and\n * will wait for an instance to start and go to completion.\n *\n * @returns A promise that resolves to the final BetaMessage when the iterator completes\n *\n * @example\n * // Start consuming the iterator\n * for await (const message of runner) {\n * console.log('Message:', message.content);\n * }\n *\n * // Meanwhile, wait for completion from another part of the code\n * const finalMessage = await runner.done();\n * console.log('Final response:', finalMessage.content);\n */\n done(): Promise<BetaMessage> {\n return this.#completion.promise;\n }\n\n /**\n * Returns a promise indicating that the stream is done. Unlike .done(), this will eagerly read the stream:\n * * If the iterator has not been consumed, consume the entire iterator and return the final message from the\n * assistant.\n * * If the iterator has been consumed, waits for it to complete and returns the final message.\n *\n * @returns A promise that resolves to the final BetaMessage from the conversation\n * @throws {AnthropicError} If no messages were processed during the conversation\n *\n * @example\n * const finalMessage = await runner.runUntilDone();\n * console.log('Final response:', finalMessage.content);\n */\n async runUntilDone(): Promise<BetaMessage> {\n // If not yet consumed, start consuming and wait for completion\n if (!this.#consumed) {\n for await (const _ of this) {\n // Iterator naturally populates this.#message\n }\n }\n\n // If consumed but not completed, wait for completion\n return this.done();\n }\n\n /**\n * Get the current parameters being used by the ToolRunner.\n *\n * @returns A readonly view of the current ToolRunnerParams\n *\n * @example\n * const currentParams = runner.params;\n * console.log('Current model:', currentParams.model);\n * console.log('Message count:', currentParams.messages.length);\n */\n get params(): Readonly<BetaToolRunnerParams> {\n return this.#state.params as Readonly<BetaToolRunnerParams>;\n }\n\n /**\n * Add one or more messages to the conversation history.\n *\n * @param messages - One or more BetaMessageParam objects to add to the conversation\n *\n * @example\n * runner.pushMessages(\n * { role: 'user', content: 'Also, what about the weather in NYC?' }\n * );\n *\n * @example\n * // Adding multiple messages\n * runner.pushMessages(\n * { role: 'user', content: 'What about NYC?' },\n * { role: 'user', content: 'And Boston?' }\n * );\n */\n pushMessages(...messages: BetaMessageParam[]) {\n this.setMessagesParams((params) => ({\n ...params,\n messages: [...params.messages, ...messages],\n }));\n }\n\n /**\n * Makes the ToolRunner directly awaitable, equivalent to calling .runUntilDone()\n * This allows using `await runner` instead of `await runner.runUntilDone()`\n */\n then<TResult1 = BetaMessage, TResult2 = never>(\n onfulfilled?: ((value: BetaMessage) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2> {\n return this.runUntilDone().then(onfulfilled, onrejected);\n }\n}\n\nasync function generateToolResponse(\n params: BetaToolRunnerParams,\n lastMessage = params.messages.at(-1),\n): Promise<BetaMessageParam | null> {\n // Only process if the last message is from the assistant and has tool use blocks\n if (\n !lastMessage ||\n lastMessage.role !== 'assistant' ||\n !lastMessage.content ||\n typeof lastMessage.content === 'string'\n ) {\n return null;\n }\n\n const toolUseBlocks = lastMessage.content.filter((content) => content.type === 'tool_use');\n if (toolUseBlocks.length === 0) {\n return null;\n }\n\n const toolResults = await Promise.all(\n toolUseBlocks.map(async (toolUse) => {\n const tool = params.tools.find((t) => ('name' in t ? t.name : t.mcp_server_name) === toolUse.name);\n if (!tool || !('run' in tool)) {\n return {\n type: 'tool_result' as const,\n tool_use_id: toolUse.id,\n content: `Error: Tool '${toolUse.name}' not found`,\n is_error: true,\n };\n }\n\n try {\n let input = toolUse.input;\n if ('parse' in tool && tool.parse) {\n input = tool.parse(input);\n }\n\n const result = await tool.run(input);\n return {\n type: 'tool_result' as const,\n tool_use_id: toolUse.id,\n content: result,\n };\n } catch (error) {\n return {\n type: 'tool_result' as const,\n tool_use_id: toolUse.id,\n content: `Error: ${error instanceof Error ? error.message : String(error)}`,\n is_error: true,\n };\n }\n }),\n );\n\n return {\n role: 'user' as const,\n content: toolResults,\n };\n}\n\n// vendored from typefest just to make things look a bit nicer on hover\ntype Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};\n\n/**\n * Parameters for creating a ToolRunner, extending MessageCreateParams with runnable tools.\n */\nexport type BetaToolRunnerParams = Simplify<\n Omit<MessageCreateParams, 'tools'> & {\n tools: (BetaToolUnion | BetaRunnableTool<any>)[];\n /**\n * Maximum number of iterations (API requests) to make in the tool execution loop.\n * Each iteration consists of: assistant response → tool execution → tool results.\n * When exceeded, the loop will terminate even if tools are still being requested.\n */\n max_iterations?: number;\n compactionControl?: CompactionControl;\n }\n>;\n\nexport type BetaToolRunnerRequestOptions = Pick<RequestOptions, 'headers'>;\n","import { AnthropicError } from '../../core/error';\nimport { ReadableStreamToAsyncIterable } from '../shims';\nimport { LineDecoder, type Bytes } from './line';\n\nexport class JSONLDecoder<T> {\n controller: AbortController;\n\n constructor(\n private iterator: AsyncIterableIterator<Bytes>,\n controller: AbortController,\n ) {\n this.controller = controller;\n }\n\n private async *decoder(): AsyncIterator<T, any, undefined> {\n const lineDecoder = new LineDecoder();\n for await (const chunk of this.iterator) {\n for (const line of lineDecoder.decode(chunk)) {\n yield JSON.parse(line);\n }\n }\n\n for (const line of lineDecoder.flush()) {\n yield JSON.parse(line);\n }\n }\n\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return this.decoder();\n }\n\n static fromResponse<T>(response: Response, controller: AbortController): JSONLDecoder<T> {\n if (!response.body) {\n controller.abort();\n if (\n typeof (globalThis as any).navigator !== 'undefined' &&\n (globalThis as any).navigator.product === 'ReactNative'\n ) {\n throw new AnthropicError(\n `The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`,\n );\n }\n throw new AnthropicError(`Attempted to iterate over a response with no body`);\n }\n\n return new JSONLDecoder(ReadableStreamToAsyncIterable<Bytes>(response.body), controller);\n }\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport * as BetaMessagesAPI from './messages';\nimport { Page, type PageParams, PagePromise } from '../../../core/pagination';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { JSONLDecoder } from '../../../internal/decoders/jsonl';\nimport { AnthropicError } from '../../../error';\nimport { path } from '../../../internal/utils/path';\nimport * as MessagesApi from '../../messages/messages';\n\nexport class Batches extends APIResource {\n /**\n * Send a batch of Message creation requests.\n *\n * The Message Batches API can be used to process multiple Messages API requests at\n * once. Once a Message Batch is created, it begins processing immediately. Batches\n * can take up to 24 hours to complete.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const betaMessageBatch =\n * await client.beta.messages.batches.create({\n * requests: [\n * {\n * custom_id: 'my-custom-id-1',\n * params: {\n * max_tokens: 1024,\n * messages: [\n * { content: 'Hello, world', role: 'user' },\n * ],\n * model: 'claude-sonnet-4-5-20250929',\n * },\n * },\n * ],\n * });\n * ```\n */\n create(params: BatchCreateParams, options?: RequestOptions): APIPromise<BetaMessageBatch> {\n const { betas, ...body } = params;\n return this._client.post('/v1/messages/batches?beta=true', {\n body,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * This endpoint is idempotent and can be used to poll for Message Batch\n * completion. To access the results of a Message Batch, make a request to the\n * `results_url` field in the response.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const betaMessageBatch =\n * await client.beta.messages.batches.retrieve(\n * 'message_batch_id',\n * );\n * ```\n */\n retrieve(\n messageBatchID: string,\n params: BatchRetrieveParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<BetaMessageBatch> {\n const { betas } = params ?? {};\n return this._client.get(path`/v1/messages/batches/${messageBatchID}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * List all Message Batches within a Workspace. Most recently created batches are\n * returned first.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const betaMessageBatch of client.beta.messages.batches.list()) {\n * // ...\n * }\n * ```\n */\n list(\n params: BatchListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<BetaMessageBatchesPage, BetaMessageBatch> {\n const { betas, ...query } = params ?? {};\n return this._client.getAPIList('/v1/messages/batches?beta=true', Page<BetaMessageBatch>, {\n query,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Delete a Message Batch.\n *\n * Message Batches can only be deleted once they've finished processing. If you'd\n * like to delete an in-progress batch, you must first cancel it.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const betaDeletedMessageBatch =\n * await client.beta.messages.batches.delete(\n * 'message_batch_id',\n * );\n * ```\n */\n delete(\n messageBatchID: string,\n params: BatchDeleteParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<BetaDeletedMessageBatch> {\n const { betas } = params ?? {};\n return this._client.delete(path`/v1/messages/batches/${messageBatchID}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Batches may be canceled any time before processing ends. Once cancellation is\n * initiated, the batch enters a `canceling` state, at which time the system may\n * complete any in-progress, non-interruptible requests before finalizing\n * cancellation.\n *\n * The number of canceled requests is specified in `request_counts`. To determine\n * which requests were canceled, check the individual results within the batch.\n * Note that cancellation may not result in any canceled requests if they were\n * non-interruptible.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const betaMessageBatch =\n * await client.beta.messages.batches.cancel(\n * 'message_batch_id',\n * );\n * ```\n */\n cancel(\n messageBatchID: string,\n params: BatchCancelParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<BetaMessageBatch> {\n const { betas } = params ?? {};\n return this._client.post(path`/v1/messages/batches/${messageBatchID}/cancel?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Streams the results of a Message Batch as a `.jsonl` file.\n *\n * Each line in the file is a JSON object containing the result of a single request\n * in the Message Batch. Results are not guaranteed to be in the same order as\n * requests. Use the `custom_id` field to match results to requests.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const betaMessageBatchIndividualResponse =\n * await client.beta.messages.batches.results(\n * 'message_batch_id',\n * );\n * ```\n */\n async results(\n messageBatchID: string,\n params: BatchResultsParams | undefined = {},\n options?: RequestOptions,\n ): Promise<JSONLDecoder<BetaMessageBatchIndividualResponse>> {\n const batch = await this.retrieve(messageBatchID);\n if (!batch.results_url) {\n throw new AnthropicError(\n `No batch \\`results_url\\`; Has it finished processing? ${batch.processing_status} - ${batch.id}`,\n );\n }\n\n const { betas } = params ?? {};\n return this._client\n .get(batch.results_url, {\n ...options,\n headers: buildHeaders([\n {\n 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString(),\n Accept: 'application/binary',\n },\n options?.headers,\n ]),\n stream: true,\n __binaryResponse: true,\n })\n ._thenUnwrap((_, props) => JSONLDecoder.fromResponse(props.response, props.controller)) as APIPromise<\n JSONLDecoder<BetaMessageBatchIndividualResponse>\n >;\n }\n}\n\nexport type BetaMessageBatchesPage = Page<BetaMessageBatch>;\n\nexport interface BetaDeletedMessageBatch {\n /**\n * ID of the Message Batch.\n */\n id: string;\n\n /**\n * Deleted object type.\n *\n * For Message Batches, this is always `\"message_batch_deleted\"`.\n */\n type: 'message_batch_deleted';\n}\n\nexport interface BetaMessageBatch {\n /**\n * Unique object identifier.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * RFC 3339 datetime string representing the time at which the Message Batch was\n * archived and its results became unavailable.\n */\n archived_at: string | null;\n\n /**\n * RFC 3339 datetime string representing the time at which cancellation was\n * initiated for the Message Batch. Specified only if cancellation was initiated.\n */\n cancel_initiated_at: string | null;\n\n /**\n * RFC 3339 datetime string representing the time at which the Message Batch was\n * created.\n */\n created_at: string;\n\n /**\n * RFC 3339 datetime string representing the time at which processing for the\n * Message Batch ended. Specified only once processing ends.\n *\n * Processing ends when every request in a Message Batch has either succeeded,\n * errored, canceled, or expired.\n */\n ended_at: string | null;\n\n /**\n * RFC 3339 datetime string representing the time at which the Message Batch will\n * expire and end processing, which is 24 hours after creation.\n */\n expires_at: string;\n\n /**\n * Processing status of the Message Batch.\n */\n processing_status: 'in_progress' | 'canceling' | 'ended';\n\n /**\n * Tallies requests within the Message Batch, categorized by their status.\n *\n * Requests start as `processing` and move to one of the other statuses only once\n * processing of the entire batch ends. The sum of all values always matches the\n * total number of requests in the batch.\n */\n request_counts: BetaMessageBatchRequestCounts;\n\n /**\n * URL to a `.jsonl` file containing the results of the Message Batch requests.\n * Specified only once processing ends.\n *\n * Results in the file are not guaranteed to be in the same order as requests. Use\n * the `custom_id` field to match results to requests.\n */\n results_url: string | null;\n\n /**\n * Object type.\n *\n * For Message Batches, this is always `\"message_batch\"`.\n */\n type: 'message_batch';\n}\n\nexport interface BetaMessageBatchCanceledResult {\n type: 'canceled';\n}\n\nexport interface BetaMessageBatchErroredResult {\n error: BetaAPI.BetaErrorResponse;\n\n type: 'errored';\n}\n\nexport interface BetaMessageBatchExpiredResult {\n type: 'expired';\n}\n\n/**\n * This is a single line in the response `.jsonl` file and does not represent the\n * response as a whole.\n */\nexport interface BetaMessageBatchIndividualResponse {\n /**\n * Developer-provided ID created for each request in a Message Batch. Useful for\n * matching results to requests, as results may be given out of request order.\n *\n * Must be unique for each request within the Message Batch.\n */\n custom_id: string;\n\n /**\n * Processing result for this request.\n *\n * Contains a Message output if processing was successful, an error response if\n * processing failed, or the reason why processing was not attempted, such as\n * cancellation or expiration.\n */\n result: BetaMessageBatchResult;\n}\n\nexport interface BetaMessageBatchRequestCounts {\n /**\n * Number of requests in the Message Batch that have been canceled.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n canceled: number;\n\n /**\n * Number of requests in the Message Batch that encountered an error.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n errored: number;\n\n /**\n * Number of requests in the Message Batch that have expired.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n expired: number;\n\n /**\n * Number of requests in the Message Batch that are processing.\n */\n processing: number;\n\n /**\n * Number of requests in the Message Batch that have completed successfully.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n succeeded: number;\n}\n\n/**\n * Processing result for this request.\n *\n * Contains a Message output if processing was successful, an error response if\n * processing failed, or the reason why processing was not attempted, such as\n * cancellation or expiration.\n */\nexport type BetaMessageBatchResult =\n | BetaMessageBatchSucceededResult\n | BetaMessageBatchErroredResult\n | BetaMessageBatchCanceledResult\n | BetaMessageBatchExpiredResult;\n\nexport interface BetaMessageBatchSucceededResult {\n message: BetaMessagesAPI.BetaMessage;\n\n type: 'succeeded';\n}\n\nexport interface BatchCreateParams {\n /**\n * Body param: List of requests for prompt completion. Each is an individual\n * request to create a Message.\n */\n requests: Array<BatchCreateParams.Request>;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport namespace BatchCreateParams {\n export interface Request {\n /**\n * Developer-provided ID created for each request in a Message Batch. Useful for\n * matching results to requests, as results may be given out of request order.\n *\n * Must be unique for each request within the Message Batch.\n */\n custom_id: string;\n\n /**\n * Messages API creation parameters for the individual request.\n *\n * See the [Messages API reference](https://docs.claude.com/en/api/messages) for\n * full documentation on available parameters.\n */\n params: Request.Params;\n }\n\n export namespace Request {\n /**\n * Messages API creation parameters for the individual request.\n *\n * See the [Messages API reference](https://docs.claude.com/en/api/messages) for\n * full documentation on available parameters.\n */\n export interface Params {\n /**\n * The maximum number of tokens to generate before stopping.\n *\n * Note that our models may stop _before_ reaching this maximum. This parameter\n * only specifies the absolute maximum number of tokens to generate.\n *\n * Different models have different maximum values for this parameter. See\n * [models](https://docs.claude.com/en/docs/models-overview) for details.\n */\n max_tokens: number;\n\n /**\n * Input messages.\n *\n * Our models are trained to operate on alternating `user` and `assistant`\n * conversational turns. When creating a new `Message`, you specify the prior\n * conversational turns with the `messages` parameter, and the model then generates\n * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n * in your request will be combined into a single turn.\n *\n * Each input message must be an object with a `role` and `content`. You can\n * specify a single `user`-role message, or you can include multiple `user` and\n * `assistant` messages.\n *\n * If the final message uses the `assistant` role, the response content will\n * continue immediately from the content in that message. This can be used to\n * constrain part of the model's response.\n *\n * Example with a single `user` message:\n *\n * ```json\n * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n * ```\n *\n * Example with multiple conversational turns:\n *\n * ```json\n * [\n * { \"role\": \"user\", \"content\": \"Hello there.\" },\n * { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n * { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n * ]\n * ```\n *\n * Example with a partially-filled response from Claude:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Each input message `content` may be either a single `string` or an array of\n * content blocks, where each block has a specific `type`. Using a `string` for\n * `content` is shorthand for an array of one content block of type `\"text\"`. The\n * following input messages are equivalent:\n *\n * ```json\n * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n * ```\n *\n * ```json\n * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n * ```\n *\n * See [input examples](https://docs.claude.com/en/api/messages-examples).\n *\n * Note that if you want to include a\n * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n * top-level `system` parameter — there is no `\"system\"` role for input messages in\n * the Messages API.\n *\n * There is a limit of 100,000 messages in a single request.\n */\n messages: Array<BetaMessagesAPI.BetaMessageParam>;\n\n /**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: MessagesApi.Model;\n\n /**\n * Container identifier for reuse across requests.\n */\n container?: BetaMessagesAPI.BetaContainerParams | string | null;\n\n /**\n * Context management configuration.\n *\n * This allows you to control how Claude manages context across multiple requests,\n * such as whether to clear function results or not.\n */\n context_management?: BetaMessagesAPI.BetaContextManagementConfig | null;\n\n /**\n * MCP servers to be utilized in this request\n */\n mcp_servers?: Array<BetaMessagesAPI.BetaRequestMCPServerURLDefinition>;\n\n /**\n * An object describing metadata about the request.\n */\n metadata?: BetaMessagesAPI.BetaMetadata;\n\n /**\n * Configuration options for the model's output. Controls aspects like how much\n * effort the model puts into its response.\n */\n output_config?: BetaMessagesAPI.BetaOutputConfig;\n\n /**\n * A schema to specify Claude's output format in responses.\n */\n output_format?: BetaMessagesAPI.BetaJSONOutputFormat | null;\n\n /**\n * Determines whether to use priority capacity (if available) or standard capacity\n * for this request.\n *\n * Anthropic offers different levels of service for your API requests. See\n * [service-tiers](https://docs.claude.com/en/api/service-tiers) for details.\n */\n service_tier?: 'auto' | 'standard_only';\n\n /**\n * Custom text sequences that will cause the model to stop generating.\n *\n * Our models will normally stop when they have naturally completed their turn,\n * which will result in a response `stop_reason` of `\"end_turn\"`.\n *\n * If you want the model to stop generating when it encounters custom strings of\n * text, you can use the `stop_sequences` parameter. If the model encounters one of\n * the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"`\n * and the response `stop_sequence` value will contain the matched stop sequence.\n */\n stop_sequences?: Array<string>;\n\n /**\n * Whether to incrementally stream the response using server-sent events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream?: boolean;\n\n /**\n * System prompt.\n *\n * A system prompt is a way of providing context and instructions to Claude, such\n * as specifying a particular goal or role. See our\n * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n */\n system?: string | Array<BetaMessagesAPI.BetaTextBlockParam>;\n\n /**\n * Amount of randomness injected into the response.\n *\n * Defaults to `1.0`. Ranges from `0.0` to `1.0`. Use `temperature` closer to `0.0`\n * for analytical / multiple choice, and closer to `1.0` for creative and\n * generative tasks.\n *\n * Note that even with `temperature` of `0.0`, the results will not be fully\n * deterministic.\n */\n temperature?: number;\n\n /**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n thinking?: BetaMessagesAPI.BetaThinkingConfigParam;\n\n /**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\n tool_choice?: BetaMessagesAPI.BetaToolChoice;\n\n /**\n * Definitions of tools that the model may use.\n *\n * If you include `tools` in your API request, the model may return `tool_use`\n * content blocks that represent the model's use of those tools. You can then run\n * those tools using the tool input generated by the model and then optionally\n * return results back to the model using `tool_result` content blocks.\n *\n * There are two types of tools: **client tools** and **server tools**. The\n * behavior described below applies to client tools. For\n * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n * see their individual documentation as each has its own behavior (e.g., the\n * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n *\n * Each tool definition includes:\n *\n * - `name`: Name of the tool.\n * - `description`: Optional, but strongly-recommended description of the tool.\n * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n * tool `input` shape that the model will produce in `tool_use` output content\n * blocks.\n *\n * For example, if you defined `tools` as:\n *\n * ```json\n * [\n * {\n * \"name\": \"get_stock_price\",\n * \"description\": \"Get the current stock price for a given ticker symbol.\",\n * \"input_schema\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"ticker\": {\n * \"type\": \"string\",\n * \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n * }\n * },\n * \"required\": [\"ticker\"]\n * }\n * }\n * ]\n * ```\n *\n * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n * `tool_use` content blocks in the response like this:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_use\",\n * \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"name\": \"get_stock_price\",\n * \"input\": { \"ticker\": \"^GSPC\" }\n * }\n * ]\n * ```\n *\n * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n * input, and return the following back to the model in a subsequent `user`\n * message:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_result\",\n * \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"content\": \"259.75 USD\"\n * }\n * ]\n * ```\n *\n * Tools can be used for workflows that include running client-side tools and\n * functions, or more generally whenever you want the model to produce a particular\n * JSON structure of output.\n *\n * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n */\n tools?: Array<BetaMessagesAPI.BetaToolUnion>;\n\n /**\n * Only sample from the top K options for each subsequent token.\n *\n * Used to remove \"long tail\" low probability responses.\n * [Learn more technical details here](https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277).\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_k?: number;\n\n /**\n * Use nucleus sampling.\n *\n * In nucleus sampling, we compute the cumulative distribution over all the options\n * for each subsequent token in decreasing probability order and cut it off once it\n * reaches a particular probability specified by `top_p`. You should either alter\n * `temperature` or `top_p`, but not both.\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_p?: number;\n }\n }\n}\n\nexport interface BatchRetrieveParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchListParams extends PageParams {\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchDeleteParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchCancelParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface BatchResultsParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Batches {\n export {\n type BetaDeletedMessageBatch as BetaDeletedMessageBatch,\n type BetaMessageBatch as BetaMessageBatch,\n type BetaMessageBatchCanceledResult as BetaMessageBatchCanceledResult,\n type BetaMessageBatchErroredResult as BetaMessageBatchErroredResult,\n type BetaMessageBatchExpiredResult as BetaMessageBatchExpiredResult,\n type BetaMessageBatchIndividualResponse as BetaMessageBatchIndividualResponse,\n type BetaMessageBatchRequestCounts as BetaMessageBatchRequestCounts,\n type BetaMessageBatchResult as BetaMessageBatchResult,\n type BetaMessageBatchSucceededResult as BetaMessageBatchSucceededResult,\n type BetaMessageBatchesPage as BetaMessageBatchesPage,\n type BatchCreateParams as BatchCreateParams,\n type BatchRetrieveParams as BatchRetrieveParams,\n type BatchListParams as BatchListParams,\n type BatchDeleteParams as BatchDeleteParams,\n type BatchCancelParams as BatchCancelParams,\n type BatchResultsParams as BatchResultsParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { Anthropic } from '../../../client';\nimport { APIPromise } from '../../../core/api-promise';\nimport { APIResource } from '../../../core/resource';\nimport { Stream } from '../../../core/streaming';\nimport { MODEL_NONSTREAMING_TOKENS } from '../../../internal/constants';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport {\n parseBetaMessage,\n type ExtractParsedContentFromBetaParams,\n type ParsedBetaMessage,\n} from '../../../lib/beta-parser';\nimport { BetaMessageStream } from '../../../lib/BetaMessageStream';\nimport {\n BetaToolRunner,\n BetaToolRunnerParams,\n BetaToolRunnerRequestOptions,\n} from '../../../lib/tools/BetaToolRunner';\nimport type { Model } from '../../messages/messages';\nimport * as MessagesAPI from '../../messages/messages';\nimport * as BetaAPI from '../beta';\nimport * as BatchesAPI from './batches';\nimport {\n BatchCancelParams,\n BatchCreateParams,\n BatchDeleteParams,\n BatchListParams,\n BatchResultsParams,\n BatchRetrieveParams,\n Batches,\n BetaDeletedMessageBatch,\n BetaMessageBatch,\n BetaMessageBatchCanceledResult,\n BetaMessageBatchErroredResult,\n BetaMessageBatchExpiredResult,\n BetaMessageBatchIndividualResponse,\n BetaMessageBatchRequestCounts,\n BetaMessageBatchResult,\n BetaMessageBatchSucceededResult,\n BetaMessageBatchesPage,\n} from './batches';\nimport * as MessagesMessagesAPI from './messages';\n\nconst DEPRECATED_MODELS: {\n [K in Model]?: string;\n} = {\n 'claude-1.3': 'November 6th, 2024',\n 'claude-1.3-100k': 'November 6th, 2024',\n 'claude-instant-1.1': 'November 6th, 2024',\n 'claude-instant-1.1-100k': 'November 6th, 2024',\n 'claude-instant-1.2': 'November 6th, 2024',\n 'claude-3-sonnet-20240229': 'July 21st, 2025',\n 'claude-3-opus-20240229': 'January 5th, 2026',\n 'claude-2.1': 'July 21st, 2025',\n 'claude-2.0': 'July 21st, 2025',\n 'claude-3-7-sonnet-latest': 'February 19th, 2026',\n 'claude-3-7-sonnet-20250219': 'February 19th, 2026',\n};\n\nexport class Messages extends APIResource {\n batches: BatchesAPI.Batches = new BatchesAPI.Batches(this._client);\n\n /**\n * Send a structured list of input messages with text and/or image content, and the\n * model will generate the next message in the conversation.\n *\n * The Messages API can be used for either single queries or stateless multi-turn\n * conversations.\n *\n * Learn more about the Messages API in our\n * [user guide](https://docs.claude.com/en/docs/initial-setup)\n *\n * @example\n * ```ts\n * const betaMessage = await client.beta.messages.create({\n * max_tokens: 1024,\n * messages: [{ content: 'Hello, world', role: 'user' }],\n * model: 'claude-sonnet-4-5-20250929',\n * });\n * ```\n */\n create(params: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<BetaMessage>;\n create(\n params: MessageCreateParamsStreaming,\n options?: RequestOptions,\n ): APIPromise<Stream<BetaRawMessageStreamEvent>>;\n create(\n params: MessageCreateParamsBase,\n options?: RequestOptions,\n ): APIPromise<Stream<BetaRawMessageStreamEvent> | BetaMessage>;\n create(\n params: MessageCreateParams,\n options?: RequestOptions,\n ): APIPromise<BetaMessage> | APIPromise<Stream<BetaRawMessageStreamEvent>> {\n const { betas, ...body } = params;\n\n if (body.model in DEPRECATED_MODELS) {\n console.warn(\n `The model '${body.model}' is deprecated and will reach end-of-life on ${\n DEPRECATED_MODELS[body.model]\n }\\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`,\n );\n }\n\n let timeout = (this._client as any)._options.timeout as number | null;\n if (!body.stream && timeout == null) {\n const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined;\n timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens);\n }\n return this._client.post('/v1/messages?beta=true', {\n body,\n timeout: timeout ?? 600000,\n ...options,\n headers: buildHeaders([\n { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n options?.headers,\n ]),\n stream: params.stream ?? false,\n }) as APIPromise<BetaMessage> | APIPromise<Stream<BetaRawMessageStreamEvent>>;\n }\n\n /**\n * Send a structured list of input messages with text and/or image content, along with an expected `output_format` and\n * the response will be automatically parsed and available in the `parsed` property of the message.\n *\n * @example\n * ```ts\n * const message = await client.beta.messages.parse({\n * model: 'claude-3-5-sonnet-20241022',\n * max_tokens: 1024,\n * messages: [{ role: 'user', content: 'What is 2+2?' }],\n * output_format: zodOutputFormat(z.object({ answer: z.number() }), 'math'),\n * });\n *\n * console.log(message.parsed?.answer); // 4\n * ```\n */\n parse<Params extends MessageCreateParamsNonStreaming>(\n params: Params,\n options?: RequestOptions,\n ): APIPromise<ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>> {\n options = {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(params.betas ?? []), 'structured-outputs-2025-11-13'].toString() },\n options?.headers,\n ]),\n };\n\n return this.create(params, options).then((message) => parseBetaMessage(message, params)) as APIPromise<\n ParsedBetaMessage<ExtractParsedContentFromBetaParams<Params>>\n >;\n }\n\n /**\n * Create a Message stream\n */\n stream<Params extends BetaMessageStreamParams>(\n body: Params,\n options?: RequestOptions,\n ): BetaMessageStream<ExtractParsedContentFromBetaParams<Params>> {\n return BetaMessageStream.createMessage(this, body, options);\n }\n\n /**\n * Count the number of tokens in a Message.\n *\n * The Token Count API can be used to count the number of tokens in a Message,\n * including tools, images, and documents, without creating it.\n *\n * Learn more about token counting in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/token-counting)\n *\n * @example\n * ```ts\n * const betaMessageTokensCount =\n * await client.beta.messages.countTokens({\n * messages: [{ content: 'string', role: 'user' }],\n * model: 'claude-opus-4-5-20251101',\n * });\n * ```\n */\n countTokens(\n params: MessageCountTokensParams,\n options?: RequestOptions,\n ): APIPromise<BetaMessageTokensCount> {\n const { betas, ...body } = params;\n return this._client.post('/v1/messages/count_tokens?beta=true', {\n body,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'token-counting-2024-11-01'].toString() },\n options?.headers,\n ]),\n });\n }\n\n toolRunner(\n body: BetaToolRunnerParams & { stream?: false },\n options?: BetaToolRunnerRequestOptions,\n ): BetaToolRunner<false>;\n toolRunner(\n body: BetaToolRunnerParams & { stream: true },\n options?: BetaToolRunnerRequestOptions,\n ): BetaToolRunner<true>;\n toolRunner(body: BetaToolRunnerParams, options?: BetaToolRunnerRequestOptions): BetaToolRunner<boolean>;\n toolRunner(body: BetaToolRunnerParams, options?: BetaToolRunnerRequestOptions): BetaToolRunner<boolean> {\n return new BetaToolRunner(this._client as Anthropic, body, options);\n }\n}\n\nexport interface BetaAllThinkingTurns {\n type: 'all';\n}\n\nexport type BetaMessageStreamParams = MessageCreateParamsBase;\n\nexport interface BetaBase64ImageSource {\n data: string;\n\n media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp';\n\n type: 'base64';\n}\n\nexport interface BetaBase64PDFSource {\n data: string;\n\n media_type: 'application/pdf';\n\n type: 'base64';\n}\n\nexport interface BetaBashCodeExecutionOutputBlock {\n file_id: string;\n\n type: 'bash_code_execution_output';\n}\n\nexport interface BetaBashCodeExecutionOutputBlockParam {\n file_id: string;\n\n type: 'bash_code_execution_output';\n}\n\nexport interface BetaBashCodeExecutionResultBlock {\n content: Array<BetaBashCodeExecutionOutputBlock>;\n\n return_code: number;\n\n stderr: string;\n\n stdout: string;\n\n type: 'bash_code_execution_result';\n}\n\nexport interface BetaBashCodeExecutionResultBlockParam {\n content: Array<BetaBashCodeExecutionOutputBlockParam>;\n\n return_code: number;\n\n stderr: string;\n\n stdout: string;\n\n type: 'bash_code_execution_result';\n}\n\nexport interface BetaBashCodeExecutionToolResultBlock {\n content: BetaBashCodeExecutionToolResultError | BetaBashCodeExecutionResultBlock;\n\n tool_use_id: string;\n\n type: 'bash_code_execution_tool_result';\n}\n\nexport interface BetaBashCodeExecutionToolResultBlockParam {\n content: BetaBashCodeExecutionToolResultErrorParam | BetaBashCodeExecutionResultBlockParam;\n\n tool_use_id: string;\n\n type: 'bash_code_execution_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaBashCodeExecutionToolResultError {\n error_code:\n | 'invalid_tool_input'\n | 'unavailable'\n | 'too_many_requests'\n | 'execution_time_exceeded'\n | 'output_file_too_large';\n\n type: 'bash_code_execution_tool_result_error';\n}\n\nexport interface BetaBashCodeExecutionToolResultErrorParam {\n error_code:\n | 'invalid_tool_input'\n | 'unavailable'\n | 'too_many_requests'\n | 'execution_time_exceeded'\n | 'output_file_too_large';\n\n type: 'bash_code_execution_tool_result_error';\n}\n\nexport interface BetaCacheControlEphemeral {\n type: 'ephemeral';\n\n /**\n * The time-to-live for the cache control breakpoint.\n *\n * This may be one the following values:\n *\n * - `5m`: 5 minutes\n * - `1h`: 1 hour\n *\n * Defaults to `5m`.\n */\n ttl?: '5m' | '1h';\n}\n\nexport interface BetaCacheCreation {\n /**\n * The number of input tokens used to create the 1 hour cache entry.\n */\n ephemeral_1h_input_tokens: number;\n\n /**\n * The number of input tokens used to create the 5 minute cache entry.\n */\n ephemeral_5m_input_tokens: number;\n}\n\nexport interface BetaCitationCharLocation {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_char_index: number;\n\n file_id: string | null;\n\n start_char_index: number;\n\n type: 'char_location';\n}\n\nexport interface BetaCitationCharLocationParam {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_char_index: number;\n\n start_char_index: number;\n\n type: 'char_location';\n}\n\nexport interface BetaCitationConfig {\n enabled: boolean;\n}\n\nexport interface BetaCitationContentBlockLocation {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_block_index: number;\n\n file_id: string | null;\n\n start_block_index: number;\n\n type: 'content_block_location';\n}\n\nexport interface BetaCitationContentBlockLocationParam {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_block_index: number;\n\n start_block_index: number;\n\n type: 'content_block_location';\n}\n\nexport interface BetaCitationPageLocation {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_page_number: number;\n\n file_id: string | null;\n\n start_page_number: number;\n\n type: 'page_location';\n}\n\nexport interface BetaCitationPageLocationParam {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_page_number: number;\n\n start_page_number: number;\n\n type: 'page_location';\n}\n\nexport interface BetaCitationSearchResultLocation {\n cited_text: string;\n\n end_block_index: number;\n\n search_result_index: number;\n\n source: string;\n\n start_block_index: number;\n\n title: string | null;\n\n type: 'search_result_location';\n}\n\nexport interface BetaCitationSearchResultLocationParam {\n cited_text: string;\n\n end_block_index: number;\n\n search_result_index: number;\n\n source: string;\n\n start_block_index: number;\n\n title: string | null;\n\n type: 'search_result_location';\n}\n\nexport interface BetaCitationWebSearchResultLocationParam {\n cited_text: string;\n\n encrypted_index: string;\n\n title: string | null;\n\n type: 'web_search_result_location';\n\n url: string;\n}\n\nexport interface BetaCitationsConfigParam {\n enabled?: boolean;\n}\n\nexport interface BetaCitationsDelta {\n citation:\n | BetaCitationCharLocation\n | BetaCitationPageLocation\n | BetaCitationContentBlockLocation\n | BetaCitationsWebSearchResultLocation\n | BetaCitationSearchResultLocation;\n\n type: 'citations_delta';\n}\n\nexport interface BetaCitationsWebSearchResultLocation {\n cited_text: string;\n\n encrypted_index: string;\n\n title: string | null;\n\n type: 'web_search_result_location';\n\n url: string;\n}\n\nexport interface BetaClearThinking20251015Edit {\n type: 'clear_thinking_20251015';\n\n /**\n * Number of most recent assistant turns to keep thinking blocks for. Older turns\n * will have their thinking blocks removed.\n */\n keep?: BetaThinkingTurns | BetaAllThinkingTurns | 'all';\n}\n\nexport interface BetaClearThinking20251015EditResponse {\n /**\n * Number of input tokens cleared by this edit.\n */\n cleared_input_tokens: number;\n\n /**\n * Number of thinking turns that were cleared.\n */\n cleared_thinking_turns: number;\n\n /**\n * The type of context management edit applied.\n */\n type: 'clear_thinking_20251015';\n}\n\nexport interface BetaClearToolUses20250919Edit {\n type: 'clear_tool_uses_20250919';\n\n /**\n * Minimum number of tokens that must be cleared when triggered. Context will only\n * be modified if at least this many tokens can be removed.\n */\n clear_at_least?: BetaInputTokensClearAtLeast | null;\n\n /**\n * Whether to clear all tool inputs (bool) or specific tool inputs to clear (list)\n */\n clear_tool_inputs?: boolean | Array<string> | null;\n\n /**\n * Tool names whose uses are preserved from clearing\n */\n exclude_tools?: Array<string> | null;\n\n /**\n * Number of tool uses to retain in the conversation\n */\n keep?: BetaToolUsesKeep;\n\n /**\n * Condition that triggers the context management strategy\n */\n trigger?: BetaInputTokensTrigger | BetaToolUsesTrigger;\n}\n\nexport interface BetaClearToolUses20250919EditResponse {\n /**\n * Number of input tokens cleared by this edit.\n */\n cleared_input_tokens: number;\n\n /**\n * Number of tool uses that were cleared.\n */\n cleared_tool_uses: number;\n\n /**\n * The type of context management edit applied.\n */\n type: 'clear_tool_uses_20250919';\n}\n\nexport interface BetaCodeExecutionOutputBlock {\n file_id: string;\n\n type: 'code_execution_output';\n}\n\nexport interface BetaCodeExecutionOutputBlockParam {\n file_id: string;\n\n type: 'code_execution_output';\n}\n\nexport interface BetaCodeExecutionResultBlock {\n content: Array<BetaCodeExecutionOutputBlock>;\n\n return_code: number;\n\n stderr: string;\n\n stdout: string;\n\n type: 'code_execution_result';\n}\n\nexport interface BetaCodeExecutionResultBlockParam {\n content: Array<BetaCodeExecutionOutputBlockParam>;\n\n return_code: number;\n\n stderr: string;\n\n stdout: string;\n\n type: 'code_execution_result';\n}\n\nexport interface BetaCodeExecutionTool20250522 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'code_execution';\n\n type: 'code_execution_20250522';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n strict?: boolean;\n}\n\nexport interface BetaCodeExecutionTool20250825 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'code_execution';\n\n type: 'code_execution_20250825';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n strict?: boolean;\n}\n\nexport interface BetaCodeExecutionToolResultBlock {\n content: BetaCodeExecutionToolResultBlockContent;\n\n tool_use_id: string;\n\n type: 'code_execution_tool_result';\n}\n\nexport type BetaCodeExecutionToolResultBlockContent =\n | BetaCodeExecutionToolResultError\n | BetaCodeExecutionResultBlock;\n\nexport interface BetaCodeExecutionToolResultBlockParam {\n content: BetaCodeExecutionToolResultBlockParamContent;\n\n tool_use_id: string;\n\n type: 'code_execution_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport type BetaCodeExecutionToolResultBlockParamContent =\n | BetaCodeExecutionToolResultErrorParam\n | BetaCodeExecutionResultBlockParam;\n\nexport interface BetaCodeExecutionToolResultError {\n error_code: BetaCodeExecutionToolResultErrorCode;\n\n type: 'code_execution_tool_result_error';\n}\n\nexport type BetaCodeExecutionToolResultErrorCode =\n | 'invalid_tool_input'\n | 'unavailable'\n | 'too_many_requests'\n | 'execution_time_exceeded';\n\nexport interface BetaCodeExecutionToolResultErrorParam {\n error_code: BetaCodeExecutionToolResultErrorCode;\n\n type: 'code_execution_tool_result_error';\n}\n\n/**\n * Information about the container used in the request (for the code execution\n * tool)\n */\nexport interface BetaContainer {\n /**\n * Identifier for the container used in this request\n */\n id: string;\n\n /**\n * The time at which the container will expire.\n */\n expires_at: string;\n\n /**\n * Skills loaded in the container\n */\n skills: Array<BetaSkill> | null;\n}\n\n/**\n * Container parameters with skills to be loaded.\n */\nexport interface BetaContainerParams {\n /**\n * Container id\n */\n id?: string | null;\n\n /**\n * List of skills to load in the container\n */\n skills?: Array<BetaSkillParams> | null;\n}\n\n/**\n * Response model for a file uploaded to the container.\n */\nexport interface BetaContainerUploadBlock {\n file_id: string;\n\n type: 'container_upload';\n}\n\n/**\n * A content block that represents a file to be uploaded to the container Files\n * uploaded via this block will be available in the container's input directory.\n */\nexport interface BetaContainerUploadBlockParam {\n file_id: string;\n\n type: 'container_upload';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\n/**\n * Response model for a file uploaded to the container.\n */\nexport type BetaContentBlock =\n | BetaTextBlock\n | BetaThinkingBlock\n | BetaRedactedThinkingBlock\n | BetaToolUseBlock\n | BetaServerToolUseBlock\n | BetaWebSearchToolResultBlock\n | BetaWebFetchToolResultBlock\n | BetaCodeExecutionToolResultBlock\n | BetaBashCodeExecutionToolResultBlock\n | BetaTextEditorCodeExecutionToolResultBlock\n | BetaToolSearchToolResultBlock\n | BetaMCPToolUseBlock\n | BetaMCPToolResultBlock\n | BetaContainerUploadBlock;\n\n/**\n * Regular text content.\n */\nexport type BetaContentBlockParam =\n | BetaTextBlockParam\n | BetaImageBlockParam\n | BetaRequestDocumentBlock\n | BetaSearchResultBlockParam\n | BetaThinkingBlockParam\n | BetaRedactedThinkingBlockParam\n | BetaToolUseBlockParam\n | BetaToolResultBlockParam\n | BetaServerToolUseBlockParam\n | BetaWebSearchToolResultBlockParam\n | BetaWebFetchToolResultBlockParam\n | BetaCodeExecutionToolResultBlockParam\n | BetaBashCodeExecutionToolResultBlockParam\n | BetaTextEditorCodeExecutionToolResultBlockParam\n | BetaToolSearchToolResultBlockParam\n | BetaMCPToolUseBlockParam\n | BetaRequestMCPToolResultBlockParam\n | BetaContainerUploadBlockParam;\n\nexport interface BetaContentBlockSource {\n content: string | Array<BetaContentBlockSourceContent>;\n\n type: 'content';\n}\n\nexport type BetaContentBlockSourceContent = BetaTextBlockParam | BetaImageBlockParam;\n\nexport interface BetaContextManagementConfig {\n /**\n * List of context management edits to apply\n */\n edits?: Array<BetaClearToolUses20250919Edit | BetaClearThinking20251015Edit>;\n}\n\nexport interface BetaContextManagementResponse {\n /**\n * List of context management edits that were applied.\n */\n applied_edits: Array<BetaClearToolUses20250919EditResponse | BetaClearThinking20251015EditResponse>;\n}\n\nexport interface BetaCountTokensContextManagementResponse {\n /**\n * The original token count before context management was applied\n */\n original_input_tokens: number;\n}\n\n/**\n * Tool invocation directly from the model.\n */\nexport interface BetaDirectCaller {\n type: 'direct';\n}\n\nexport interface BetaDocumentBlock {\n /**\n * Citation configuration for the document\n */\n citations: BetaCitationConfig | null;\n\n source: BetaBase64PDFSource | BetaPlainTextSource;\n\n /**\n * The title of the document\n */\n title: string | null;\n\n type: 'document';\n}\n\nexport interface BetaFileDocumentSource {\n file_id: string;\n\n type: 'file';\n}\n\nexport interface BetaFileImageSource {\n file_id: string;\n\n type: 'file';\n}\n\nexport interface BetaImageBlockParam {\n source: BetaBase64ImageSource | BetaURLImageSource | BetaFileImageSource;\n\n type: 'image';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaInputJSONDelta {\n partial_json: string;\n\n type: 'input_json_delta';\n}\n\nexport interface BetaInputTokensClearAtLeast {\n type: 'input_tokens';\n\n value: number;\n}\n\nexport interface BetaInputTokensTrigger {\n type: 'input_tokens';\n\n value: number;\n}\n\nexport interface BetaJSONOutputFormat {\n /**\n * The JSON schema of the format\n */\n schema: { [key: string]: unknown };\n\n type: 'json_schema';\n}\n\n/**\n * Configuration for a specific tool in an MCP toolset.\n */\nexport interface BetaMCPToolConfig {\n defer_loading?: boolean;\n\n enabled?: boolean;\n}\n\n/**\n * Default configuration for tools in an MCP toolset.\n */\nexport interface BetaMCPToolDefaultConfig {\n defer_loading?: boolean;\n\n enabled?: boolean;\n}\n\nexport interface BetaMCPToolResultBlock {\n content: string | Array<BetaTextBlock>;\n\n is_error: boolean;\n\n tool_use_id: string;\n\n type: 'mcp_tool_result';\n}\n\nexport interface BetaMCPToolUseBlock {\n id: string;\n\n input: unknown;\n\n /**\n * The name of the MCP tool\n */\n name: string;\n\n /**\n * The name of the MCP server\n */\n server_name: string;\n\n type: 'mcp_tool_use';\n}\n\nexport interface BetaMCPToolUseBlockParam {\n id: string;\n\n input: unknown;\n\n name: string;\n\n /**\n * The name of the MCP server\n */\n server_name: string;\n\n type: 'mcp_tool_use';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\n/**\n * Configuration for a group of tools from an MCP server.\n *\n * Allows configuring enabled status and defer_loading for all tools from an MCP\n * server, with optional per-tool overrides.\n */\nexport interface BetaMCPToolset {\n /**\n * Name of the MCP server to configure tools for\n */\n mcp_server_name: string;\n\n type: 'mcp_toolset';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * Configuration overrides for specific tools, keyed by tool name\n */\n configs?: { [key: string]: BetaMCPToolConfig } | null;\n\n /**\n * Default configuration applied to all tools from this server\n */\n default_config?: BetaMCPToolDefaultConfig;\n}\n\nexport interface BetaMemoryTool20250818 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'memory';\n\n type: 'memory_20250818';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport type BetaMemoryTool20250818Command =\n | BetaMemoryTool20250818ViewCommand\n | BetaMemoryTool20250818CreateCommand\n | BetaMemoryTool20250818StrReplaceCommand\n | BetaMemoryTool20250818InsertCommand\n | BetaMemoryTool20250818DeleteCommand\n | BetaMemoryTool20250818RenameCommand;\n\nexport interface BetaMemoryTool20250818CreateCommand {\n /**\n * Command type identifier\n */\n command: 'create';\n\n /**\n * Content to write to the file\n */\n file_text: string;\n\n /**\n * Path where the file should be created\n */\n path: string;\n}\n\nexport interface BetaMemoryTool20250818DeleteCommand {\n /**\n * Command type identifier\n */\n command: 'delete';\n\n /**\n * Path to the file or directory to delete\n */\n path: string;\n}\n\nexport interface BetaMemoryTool20250818InsertCommand {\n /**\n * Command type identifier\n */\n command: 'insert';\n\n /**\n * Line number where text should be inserted\n */\n insert_line: number;\n\n /**\n * Text to insert at the specified line\n */\n insert_text: string;\n\n /**\n * Path to the file where text should be inserted\n */\n path: string;\n}\n\nexport interface BetaMemoryTool20250818RenameCommand {\n /**\n * Command type identifier\n */\n command: 'rename';\n\n /**\n * New path for the file or directory\n */\n new_path: string;\n\n /**\n * Current path of the file or directory\n */\n old_path: string;\n}\n\nexport interface BetaMemoryTool20250818StrReplaceCommand {\n /**\n * Command type identifier\n */\n command: 'str_replace';\n\n /**\n * Text to replace with\n */\n new_str: string;\n\n /**\n * Text to search for and replace\n */\n old_str: string;\n\n /**\n * Path to the file where text should be replaced\n */\n path: string;\n}\n\nexport interface BetaMemoryTool20250818ViewCommand {\n /**\n * Command type identifier\n */\n command: 'view';\n\n /**\n * Path to directory or file to view\n */\n path: string;\n\n /**\n * Optional line range for viewing specific lines\n */\n view_range?: Array<number>;\n}\n\nexport interface BetaMessage {\n /**\n * Unique object identifier.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * Information about the container used in the request (for the code execution\n * tool)\n */\n container: BetaContainer | null;\n\n /**\n * Content generated by the model.\n *\n * This is an array of content blocks, each of which has a `type` that determines\n * its shape.\n *\n * Example:\n *\n * ```json\n * [{ \"type\": \"text\", \"text\": \"Hi, I'm Claude.\" }]\n * ```\n *\n * If the request input `messages` ended with an `assistant` turn, then the\n * response `content` will continue directly from that last turn. You can use this\n * to constrain the model's output.\n *\n * For example, if the input `messages` were:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Then the response `content` might be:\n *\n * ```json\n * [{ \"type\": \"text\", \"text\": \"B)\" }]\n * ```\n */\n content: Array<BetaContentBlock>;\n\n /**\n * Context management response.\n *\n * Information about context management strategies applied during the request.\n */\n context_management: BetaContextManagementResponse | null;\n\n /**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: MessagesAPI.Model;\n\n /**\n * Conversational role of the generated message.\n *\n * This will always be `\"assistant\"`.\n */\n role: 'assistant';\n\n /**\n * The reason that we stopped.\n *\n * This may be one the following values:\n *\n * - `\"end_turn\"`: the model reached a natural stopping point\n * - `\"max_tokens\"`: we exceeded the requested `max_tokens` or the model's maximum\n * - `\"stop_sequence\"`: one of your provided custom `stop_sequences` was generated\n * - `\"tool_use\"`: the model invoked one or more tools\n * - `\"pause_turn\"`: we paused a long-running turn. You may provide the response\n * back as-is in a subsequent request to let the model continue.\n * - `\"refusal\"`: when streaming classifiers intervene to handle potential policy\n * violations\n *\n * In non-streaming mode this value is always non-null. In streaming mode, it is\n * null in the `message_start` event and non-null otherwise.\n */\n stop_reason: BetaStopReason | null;\n\n /**\n * Which custom stop sequence was generated, if any.\n *\n * This value will be a non-null string if one of your custom stop sequences was\n * generated.\n */\n stop_sequence: string | null;\n\n /**\n * Object type.\n *\n * For Messages, this is always `\"message\"`.\n */\n type: 'message';\n\n /**\n * Billing and rate-limit usage.\n *\n * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n * underlying cost to our systems.\n *\n * Under the hood, the API transforms requests into a format suitable for the\n * model. The model's output then goes through a parsing stage before becoming an\n * API response. As a result, the token counts in `usage` will not match one-to-one\n * with the exact visible content of an API request or response.\n *\n * For example, `output_tokens` will be non-zero, even for an empty string response\n * from Claude.\n *\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n usage: BetaUsage;\n}\n\nexport interface BetaMessageDeltaUsage {\n /**\n * The cumulative number of input tokens used to create the cache entry.\n */\n cache_creation_input_tokens: number | null;\n\n /**\n * The cumulative number of input tokens read from the cache.\n */\n cache_read_input_tokens: number | null;\n\n /**\n * The cumulative number of input tokens which were used.\n */\n input_tokens: number | null;\n\n /**\n * The cumulative number of output tokens which were used.\n */\n output_tokens: number;\n\n /**\n * The number of server tool requests.\n */\n server_tool_use: BetaServerToolUsage | null;\n}\n\nexport interface BetaMessageParam {\n content: string | Array<BetaContentBlockParam>;\n\n role: 'user' | 'assistant';\n}\n\nexport interface BetaMessageTokensCount {\n /**\n * Information about context management applied to the message.\n */\n context_management: BetaCountTokensContextManagementResponse | null;\n\n /**\n * The total number of tokens across the provided list of messages, system prompt,\n * and tools.\n */\n input_tokens: number;\n}\n\nexport interface BetaMetadata {\n /**\n * An external identifier for the user who is associated with the request.\n *\n * This should be a uuid, hash value, or other opaque identifier. Anthropic may use\n * this id to help detect abuse. Do not include any identifying information such as\n * name, email address, or phone number.\n */\n user_id?: string | null;\n}\n\nexport interface BetaOutputConfig {\n /**\n * All possible effort levels.\n */\n effort?: 'low' | 'medium' | 'high' | null;\n}\n\nexport interface BetaPlainTextSource {\n data: string;\n\n media_type: 'text/plain';\n\n type: 'text';\n}\n\nexport type BetaRawContentBlockDelta =\n | BetaTextDelta\n | BetaInputJSONDelta\n | BetaCitationsDelta\n | BetaThinkingDelta\n | BetaSignatureDelta;\n\nexport interface BetaRawContentBlockDeltaEvent {\n delta: BetaRawContentBlockDelta;\n\n index: number;\n\n type: 'content_block_delta';\n}\n\nexport interface BetaRawContentBlockStartEvent {\n /**\n * Response model for a file uploaded to the container.\n */\n content_block:\n | BetaTextBlock\n | BetaThinkingBlock\n | BetaRedactedThinkingBlock\n | BetaToolUseBlock\n | BetaServerToolUseBlock\n | BetaWebSearchToolResultBlock\n | BetaWebFetchToolResultBlock\n | BetaCodeExecutionToolResultBlock\n | BetaBashCodeExecutionToolResultBlock\n | BetaTextEditorCodeExecutionToolResultBlock\n | BetaToolSearchToolResultBlock\n | BetaMCPToolUseBlock\n | BetaMCPToolResultBlock\n | BetaContainerUploadBlock;\n\n index: number;\n\n type: 'content_block_start';\n}\n\nexport interface BetaRawContentBlockStopEvent {\n index: number;\n\n type: 'content_block_stop';\n}\n\nexport interface BetaRawMessageDeltaEvent {\n /**\n * Information about context management strategies applied during the request\n */\n context_management: BetaContextManagementResponse | null;\n\n delta: BetaRawMessageDeltaEvent.Delta;\n\n type: 'message_delta';\n\n /**\n * Billing and rate-limit usage.\n *\n * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n * underlying cost to our systems.\n *\n * Under the hood, the API transforms requests into a format suitable for the\n * model. The model's output then goes through a parsing stage before becoming an\n * API response. As a result, the token counts in `usage` will not match one-to-one\n * with the exact visible content of an API request or response.\n *\n * For example, `output_tokens` will be non-zero, even for an empty string response\n * from Claude.\n *\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n usage: BetaMessageDeltaUsage;\n}\n\nexport namespace BetaRawMessageDeltaEvent {\n export interface Delta {\n /**\n * Information about the container used in the request (for the code execution\n * tool)\n */\n container: MessagesMessagesAPI.BetaContainer | null;\n\n stop_reason: MessagesMessagesAPI.BetaStopReason | null;\n\n stop_sequence: string | null;\n }\n}\n\nexport interface BetaRawMessageStartEvent {\n message: BetaMessage;\n\n type: 'message_start';\n}\n\nexport interface BetaRawMessageStopEvent {\n type: 'message_stop';\n}\n\nexport type BetaRawMessageStreamEvent =\n | BetaRawMessageStartEvent\n | BetaRawMessageDeltaEvent\n | BetaRawMessageStopEvent\n | BetaRawContentBlockStartEvent\n | BetaRawContentBlockDeltaEvent\n | BetaRawContentBlockStopEvent;\n\nexport interface BetaRedactedThinkingBlock {\n data: string;\n\n type: 'redacted_thinking';\n}\n\nexport interface BetaRedactedThinkingBlockParam {\n data: string;\n\n type: 'redacted_thinking';\n}\n\nexport interface BetaRequestDocumentBlock {\n source:\n | BetaBase64PDFSource\n | BetaPlainTextSource\n | BetaContentBlockSource\n | BetaURLPDFSource\n | BetaFileDocumentSource;\n\n type: 'document';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n citations?: BetaCitationsConfigParam | null;\n\n context?: string | null;\n\n title?: string | null;\n}\n\nexport interface BetaRequestMCPServerToolConfiguration {\n allowed_tools?: Array<string> | null;\n\n enabled?: boolean | null;\n}\n\nexport interface BetaRequestMCPServerURLDefinition {\n name: string;\n\n type: 'url';\n\n url: string;\n\n authorization_token?: string | null;\n\n tool_configuration?: BetaRequestMCPServerToolConfiguration | null;\n}\n\nexport interface BetaRequestMCPToolResultBlockParam {\n tool_use_id: string;\n\n type: 'mcp_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n content?: string | Array<BetaTextBlockParam>;\n\n is_error?: boolean;\n}\n\nexport interface BetaSearchResultBlockParam {\n content: Array<BetaTextBlockParam>;\n\n source: string;\n\n title: string;\n\n type: 'search_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n citations?: BetaCitationsConfigParam;\n}\n\n/**\n * Tool invocation generated by a server-side tool.\n */\nexport interface BetaServerToolCaller {\n tool_id: string;\n\n type: 'code_execution_20250825';\n}\n\nexport interface BetaServerToolUsage {\n /**\n * The number of web fetch tool requests.\n */\n web_fetch_requests: number;\n\n /**\n * The number of web search tool requests.\n */\n web_search_requests: number;\n}\n\nexport interface BetaServerToolUseBlock {\n id: string;\n\n /**\n * Tool invocation directly from the model.\n */\n caller: BetaDirectCaller | BetaServerToolCaller;\n\n input: { [key: string]: unknown };\n\n name:\n | 'web_search'\n | 'web_fetch'\n | 'code_execution'\n | 'bash_code_execution'\n | 'text_editor_code_execution'\n | 'tool_search_tool_regex'\n | 'tool_search_tool_bm25';\n\n type: 'server_tool_use';\n}\n\nexport interface BetaServerToolUseBlockParam {\n id: string;\n\n input: unknown;\n\n name:\n | 'web_search'\n | 'web_fetch'\n | 'code_execution'\n | 'bash_code_execution'\n | 'text_editor_code_execution'\n | 'tool_search_tool_regex'\n | 'tool_search_tool_bm25';\n\n type: 'server_tool_use';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * Tool invocation directly from the model.\n */\n caller?: BetaDirectCaller | BetaServerToolCaller;\n}\n\nexport interface BetaSignatureDelta {\n signature: string;\n\n type: 'signature_delta';\n}\n\n/**\n * A skill that was loaded in a container (response model).\n */\nexport interface BetaSkill {\n /**\n * Skill ID\n */\n skill_id: string;\n\n /**\n * Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)\n */\n type: 'anthropic' | 'custom';\n\n /**\n * Skill version or 'latest' for most recent version\n */\n version: string;\n}\n\n/**\n * Specification for a skill to be loaded in a container (request model).\n */\nexport interface BetaSkillParams {\n /**\n * Skill ID\n */\n skill_id: string;\n\n /**\n * Type of skill - either 'anthropic' (built-in) or 'custom' (user-defined)\n */\n type: 'anthropic' | 'custom';\n\n /**\n * Skill version or 'latest' for most recent version\n */\n version?: string;\n}\n\nexport type BetaStopReason =\n | 'end_turn'\n | 'max_tokens'\n | 'stop_sequence'\n | 'tool_use'\n | 'pause_turn'\n | 'refusal'\n | 'model_context_window_exceeded';\n\nexport interface BetaTextBlock {\n /**\n * Citations supporting the text block.\n *\n * The type of citation returned will depend on the type of document being cited.\n * Citing a PDF results in `page_location`, plain text results in `char_location`,\n * and content document results in `content_block_location`.\n */\n citations: Array<BetaTextCitation> | null;\n\n text: string;\n\n type: 'text';\n}\n\nexport interface BetaTextBlockParam {\n text: string;\n\n type: 'text';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n citations?: Array<BetaTextCitationParam> | null;\n}\n\nexport type BetaTextCitation =\n | BetaCitationCharLocation\n | BetaCitationPageLocation\n | BetaCitationContentBlockLocation\n | BetaCitationsWebSearchResultLocation\n | BetaCitationSearchResultLocation;\n\nexport type BetaTextCitationParam =\n | BetaCitationCharLocationParam\n | BetaCitationPageLocationParam\n | BetaCitationContentBlockLocationParam\n | BetaCitationWebSearchResultLocationParam\n | BetaCitationSearchResultLocationParam;\n\nexport interface BetaTextDelta {\n text: string;\n\n type: 'text_delta';\n}\n\nexport interface BetaTextEditorCodeExecutionCreateResultBlock {\n is_file_update: boolean;\n\n type: 'text_editor_code_execution_create_result';\n}\n\nexport interface BetaTextEditorCodeExecutionCreateResultBlockParam {\n is_file_update: boolean;\n\n type: 'text_editor_code_execution_create_result';\n}\n\nexport interface BetaTextEditorCodeExecutionStrReplaceResultBlock {\n lines: Array<string> | null;\n\n new_lines: number | null;\n\n new_start: number | null;\n\n old_lines: number | null;\n\n old_start: number | null;\n\n type: 'text_editor_code_execution_str_replace_result';\n}\n\nexport interface BetaTextEditorCodeExecutionStrReplaceResultBlockParam {\n type: 'text_editor_code_execution_str_replace_result';\n\n lines?: Array<string> | null;\n\n new_lines?: number | null;\n\n new_start?: number | null;\n\n old_lines?: number | null;\n\n old_start?: number | null;\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultBlock {\n content:\n | BetaTextEditorCodeExecutionToolResultError\n | BetaTextEditorCodeExecutionViewResultBlock\n | BetaTextEditorCodeExecutionCreateResultBlock\n | BetaTextEditorCodeExecutionStrReplaceResultBlock;\n\n tool_use_id: string;\n\n type: 'text_editor_code_execution_tool_result';\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultBlockParam {\n content:\n | BetaTextEditorCodeExecutionToolResultErrorParam\n | BetaTextEditorCodeExecutionViewResultBlockParam\n | BetaTextEditorCodeExecutionCreateResultBlockParam\n | BetaTextEditorCodeExecutionStrReplaceResultBlockParam;\n\n tool_use_id: string;\n\n type: 'text_editor_code_execution_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultError {\n error_code:\n | 'invalid_tool_input'\n | 'unavailable'\n | 'too_many_requests'\n | 'execution_time_exceeded'\n | 'file_not_found';\n\n error_message: string | null;\n\n type: 'text_editor_code_execution_tool_result_error';\n}\n\nexport interface BetaTextEditorCodeExecutionToolResultErrorParam {\n error_code:\n | 'invalid_tool_input'\n | 'unavailable'\n | 'too_many_requests'\n | 'execution_time_exceeded'\n | 'file_not_found';\n\n type: 'text_editor_code_execution_tool_result_error';\n\n error_message?: string | null;\n}\n\nexport interface BetaTextEditorCodeExecutionViewResultBlock {\n content: string;\n\n file_type: 'text' | 'image' | 'pdf';\n\n num_lines: number | null;\n\n start_line: number | null;\n\n total_lines: number | null;\n\n type: 'text_editor_code_execution_view_result';\n}\n\nexport interface BetaTextEditorCodeExecutionViewResultBlockParam {\n content: string;\n\n file_type: 'text' | 'image' | 'pdf';\n\n type: 'text_editor_code_execution_view_result';\n\n num_lines?: number | null;\n\n start_line?: number | null;\n\n total_lines?: number | null;\n}\n\nexport interface BetaThinkingBlock {\n signature: string;\n\n thinking: string;\n\n type: 'thinking';\n}\n\nexport interface BetaThinkingBlockParam {\n signature: string;\n\n thinking: string;\n\n type: 'thinking';\n}\n\nexport interface BetaThinkingConfigDisabled {\n type: 'disabled';\n}\n\nexport interface BetaThinkingConfigEnabled {\n /**\n * Determines how many tokens Claude can use for its internal reasoning process.\n * Larger budgets can enable more thorough analysis for complex problems, improving\n * response quality.\n *\n * Must be ≥1024 and less than `max_tokens`.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n budget_tokens: number;\n\n type: 'enabled';\n}\n\n/**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\nexport type BetaThinkingConfigParam = BetaThinkingConfigEnabled | BetaThinkingConfigDisabled;\n\nexport interface BetaThinkingDelta {\n thinking: string;\n\n type: 'thinking_delta';\n}\n\nexport interface BetaThinkingTurns {\n type: 'thinking_turns';\n\n value: number;\n}\n\nexport interface BetaTool {\n /**\n * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n *\n * This defines the shape of the `input` that your tool accepts and that the model\n * will produce.\n */\n input_schema: BetaTool.InputSchema;\n\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: string;\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n /**\n * Description of what this tool does.\n *\n * Tool descriptions should be as detailed as possible. The more information that\n * the model has about what the tool is and how to use it, the better it will\n * perform. You can use natural language descriptions to reinforce important\n * aspects of the tool input JSON schema.\n */\n description?: string;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n\n type?: 'custom' | null;\n}\n\nexport namespace BetaTool {\n /**\n * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n *\n * This defines the shape of the `input` that your tool accepts and that the model\n * will produce.\n */\n export interface InputSchema {\n type: 'object';\n\n properties?: unknown | null;\n\n required?: string[] | readonly string[] | null;\n\n [k: string]: unknown;\n }\n}\n\nexport interface BetaToolBash20241022 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'bash';\n\n type: 'bash_20241022';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolBash20250124 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'bash';\n\n type: 'bash_20250124';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\n/**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\nexport type BetaToolChoice = BetaToolChoiceAuto | BetaToolChoiceAny | BetaToolChoiceTool | BetaToolChoiceNone;\n\n/**\n * The model will use any available tools.\n */\nexport interface BetaToolChoiceAny {\n type: 'any';\n\n /**\n * Whether to disable parallel tool use.\n *\n * Defaults to `false`. If set to `true`, the model will output exactly one tool\n * use.\n */\n disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will automatically decide whether to use tools.\n */\nexport interface BetaToolChoiceAuto {\n type: 'auto';\n\n /**\n * Whether to disable parallel tool use.\n *\n * Defaults to `false`. If set to `true`, the model will output at most one tool\n * use.\n */\n disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will not be allowed to use tools.\n */\nexport interface BetaToolChoiceNone {\n type: 'none';\n}\n\n/**\n * The model will use the specified tool with `tool_choice.name`.\n */\nexport interface BetaToolChoiceTool {\n /**\n * The name of the tool to use.\n */\n name: string;\n\n type: 'tool';\n\n /**\n * Whether to disable parallel tool use.\n *\n * Defaults to `false`. If set to `true`, the model will output exactly one tool\n * use.\n */\n disable_parallel_tool_use?: boolean;\n}\n\nexport interface BetaToolComputerUse20241022 {\n /**\n * The height of the display in pixels.\n */\n display_height_px: number;\n\n /**\n * The width of the display in pixels.\n */\n display_width_px: number;\n\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'computer';\n\n type: 'computer_20241022';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n /**\n * The X11 display number (e.g. 0, 1) for the display.\n */\n display_number?: number | null;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolComputerUse20250124 {\n /**\n * The height of the display in pixels.\n */\n display_height_px: number;\n\n /**\n * The width of the display in pixels.\n */\n display_width_px: number;\n\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'computer';\n\n type: 'computer_20250124';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n /**\n * The X11 display number (e.g. 0, 1) for the display.\n */\n display_number?: number | null;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolComputerUse20251124 {\n /**\n * The height of the display in pixels.\n */\n display_height_px: number;\n\n /**\n * The width of the display in pixels.\n */\n display_width_px: number;\n\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'computer';\n\n type: 'computer_20251124';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n /**\n * The X11 display number (e.g. 0, 1) for the display.\n */\n display_number?: number | null;\n\n /**\n * Whether to enable an action to take a zoomed-in screenshot of the screen.\n */\n enable_zoom?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolReferenceBlock {\n tool_name: string;\n\n type: 'tool_reference';\n}\n\n/**\n * Tool reference block that can be included in tool_result content.\n */\nexport interface BetaToolReferenceBlockParam {\n tool_name: string;\n\n type: 'tool_reference';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaToolResultBlockParam {\n tool_use_id: string;\n\n type: 'tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n content?:\n | string\n | Array<\n | BetaTextBlockParam\n | BetaImageBlockParam\n | BetaSearchResultBlockParam\n | BetaRequestDocumentBlock\n | BetaToolReferenceBlockParam\n >;\n\n is_error?: boolean;\n}\n\nexport interface BetaToolSearchToolBm25_20251119 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'tool_search_tool_bm25';\n\n type: 'tool_search_tool_bm25_20251119' | 'tool_search_tool_bm25';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n strict?: boolean;\n}\n\nexport interface BetaToolSearchToolRegex20251119 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'tool_search_tool_regex';\n\n type: 'tool_search_tool_regex_20251119' | 'tool_search_tool_regex';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n strict?: boolean;\n}\n\nexport interface BetaToolSearchToolResultBlock {\n content: BetaToolSearchToolResultError | BetaToolSearchToolSearchResultBlock;\n\n tool_use_id: string;\n\n type: 'tool_search_tool_result';\n}\n\nexport interface BetaToolSearchToolResultBlockParam {\n content: BetaToolSearchToolResultErrorParam | BetaToolSearchToolSearchResultBlockParam;\n\n tool_use_id: string;\n\n type: 'tool_search_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaToolSearchToolResultError {\n error_code: 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded';\n\n error_message: string | null;\n\n type: 'tool_search_tool_result_error';\n}\n\nexport interface BetaToolSearchToolResultErrorParam {\n error_code: 'invalid_tool_input' | 'unavailable' | 'too_many_requests' | 'execution_time_exceeded';\n\n type: 'tool_search_tool_result_error';\n}\n\nexport interface BetaToolSearchToolSearchResultBlock {\n tool_references: Array<BetaToolReferenceBlock>;\n\n type: 'tool_search_tool_search_result';\n}\n\nexport interface BetaToolSearchToolSearchResultBlockParam {\n tool_references: Array<BetaToolReferenceBlockParam>;\n\n type: 'tool_search_tool_search_result';\n}\n\nexport type BetaToolResultContentBlockParam = Extract<BetaToolResultBlockParam['content'], any[]>[number];\n\nexport interface BetaToolTextEditor20241022 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_editor';\n\n type: 'text_editor_20241022';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolTextEditor20250124 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_editor';\n\n type: 'text_editor_20250124';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolTextEditor20250429 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_based_edit_tool';\n\n type: 'text_editor_20250429';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n strict?: boolean;\n}\n\nexport interface BetaToolTextEditor20250728 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_based_edit_tool';\n\n type: 'text_editor_20250728';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n input_examples?: Array<{ [key: string]: unknown }>;\n\n /**\n * Maximum number of characters to display when viewing a file. If not specified,\n * defaults to displaying the full file.\n */\n max_characters?: number | null;\n\n strict?: boolean;\n}\n\n/**\n * Configuration for a group of tools from an MCP server.\n *\n * Allows configuring enabled status and defer_loading for all tools from an MCP\n * server, with optional per-tool overrides.\n */\nexport type BetaToolUnion =\n | BetaTool\n | BetaToolBash20241022\n | BetaToolBash20250124\n | BetaCodeExecutionTool20250522\n | BetaCodeExecutionTool20250825\n | BetaToolComputerUse20241022\n | BetaMemoryTool20250818\n | BetaToolComputerUse20250124\n | BetaToolTextEditor20241022\n | BetaToolComputerUse20251124\n | BetaToolTextEditor20250124\n | BetaToolTextEditor20250429\n | BetaToolTextEditor20250728\n | BetaWebSearchTool20250305\n | BetaWebFetchTool20250910\n | BetaToolSearchToolBm25_20251119\n | BetaToolSearchToolRegex20251119\n | BetaMCPToolset;\n\nexport interface BetaToolUseBlock {\n id: string;\n\n input: unknown;\n\n name: string;\n\n type: 'tool_use';\n\n /**\n * Tool invocation directly from the model.\n */\n caller?: BetaDirectCaller | BetaServerToolCaller;\n}\n\nexport interface BetaToolUseBlockParam {\n id: string;\n\n input: unknown;\n\n name: string;\n\n type: 'tool_use';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * Tool invocation directly from the model.\n */\n caller?: BetaDirectCaller | BetaServerToolCaller;\n}\n\nexport interface BetaToolUsesKeep {\n type: 'tool_uses';\n\n value: number;\n}\n\nexport interface BetaToolUsesTrigger {\n type: 'tool_uses';\n\n value: number;\n}\n\nexport interface BetaURLImageSource {\n type: 'url';\n\n url: string;\n}\n\nexport interface BetaURLPDFSource {\n type: 'url';\n\n url: string;\n}\n\nexport interface BetaUsage {\n /**\n * Breakdown of cached tokens by TTL\n */\n cache_creation: BetaCacheCreation | null;\n\n /**\n * The number of input tokens used to create the cache entry.\n */\n cache_creation_input_tokens: number | null;\n\n /**\n * The number of input tokens read from the cache.\n */\n cache_read_input_tokens: number | null;\n\n /**\n * The number of input tokens which were used.\n */\n input_tokens: number;\n\n /**\n * The number of output tokens which were used.\n */\n output_tokens: number;\n\n /**\n * The number of server tool requests.\n */\n server_tool_use: BetaServerToolUsage | null;\n\n /**\n * If the request used the priority, standard, or batch tier.\n */\n service_tier: 'standard' | 'priority' | 'batch' | null;\n}\n\nexport interface BetaWebFetchBlock {\n content: BetaDocumentBlock;\n\n /**\n * ISO 8601 timestamp when the content was retrieved\n */\n retrieved_at: string | null;\n\n type: 'web_fetch_result';\n\n /**\n * Fetched content URL\n */\n url: string;\n}\n\nexport interface BetaWebFetchBlockParam {\n content: BetaRequestDocumentBlock;\n\n type: 'web_fetch_result';\n\n /**\n * Fetched content URL\n */\n url: string;\n\n /**\n * ISO 8601 timestamp when the content was retrieved\n */\n retrieved_at?: string | null;\n}\n\nexport interface BetaWebFetchTool20250910 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'web_fetch';\n\n type: 'web_fetch_20250910';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * List of domains to allow fetching from\n */\n allowed_domains?: Array<string> | null;\n\n /**\n * List of domains to block fetching from\n */\n blocked_domains?: Array<string> | null;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * Citations configuration for fetched documents. Citations are disabled by\n * default.\n */\n citations?: BetaCitationsConfigParam | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n /**\n * Maximum number of tokens used by including web page text content in the context.\n * The limit is approximate and does not apply to binary content such as PDFs.\n */\n max_content_tokens?: number | null;\n\n /**\n * Maximum number of times the tool can be used in the API request.\n */\n max_uses?: number | null;\n\n strict?: boolean;\n}\n\nexport interface BetaWebFetchToolResultBlock {\n content: BetaWebFetchToolResultErrorBlock | BetaWebFetchBlock;\n\n tool_use_id: string;\n\n type: 'web_fetch_tool_result';\n}\n\nexport interface BetaWebFetchToolResultBlockParam {\n content: BetaWebFetchToolResultErrorBlockParam | BetaWebFetchBlockParam;\n\n tool_use_id: string;\n\n type: 'web_fetch_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport interface BetaWebFetchToolResultErrorBlock {\n error_code: BetaWebFetchToolResultErrorCode;\n\n type: 'web_fetch_tool_result_error';\n}\n\nexport interface BetaWebFetchToolResultErrorBlockParam {\n error_code: BetaWebFetchToolResultErrorCode;\n\n type: 'web_fetch_tool_result_error';\n}\n\nexport type BetaWebFetchToolResultErrorCode =\n | 'invalid_tool_input'\n | 'url_too_long'\n | 'url_not_allowed'\n | 'url_not_accessible'\n | 'unsupported_content_type'\n | 'too_many_requests'\n | 'max_uses_exceeded'\n | 'unavailable';\n\nexport interface BetaWebSearchResultBlock {\n encrypted_content: string;\n\n page_age: string | null;\n\n title: string;\n\n type: 'web_search_result';\n\n url: string;\n}\n\nexport interface BetaWebSearchResultBlockParam {\n encrypted_content: string;\n\n title: string;\n\n type: 'web_search_result';\n\n url: string;\n\n page_age?: string | null;\n}\n\nexport interface BetaWebSearchTool20250305 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'web_search';\n\n type: 'web_search_20250305';\n\n allowed_callers?: Array<'direct' | 'code_execution_20250825'>;\n\n /**\n * If provided, only these domains will be included in results. Cannot be used\n * alongside `blocked_domains`.\n */\n allowed_domains?: Array<string> | null;\n\n /**\n * If provided, these domains will never appear in results. Cannot be used\n * alongside `allowed_domains`.\n */\n blocked_domains?: Array<string> | null;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n\n /**\n * If true, tool will not be included in initial system prompt. Only loaded when\n * returned via tool_reference from tool search.\n */\n defer_loading?: boolean;\n\n /**\n * Maximum number of times the tool can be used in the API request.\n */\n max_uses?: number | null;\n\n strict?: boolean;\n\n /**\n * Parameters for the user's location. Used to provide more relevant search\n * results.\n */\n user_location?: BetaWebSearchTool20250305.UserLocation | null;\n}\n\nexport namespace BetaWebSearchTool20250305 {\n /**\n * Parameters for the user's location. Used to provide more relevant search\n * results.\n */\n export interface UserLocation {\n type: 'approximate';\n\n /**\n * The city of the user.\n */\n city?: string | null;\n\n /**\n * The two letter\n * [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the\n * user.\n */\n country?: string | null;\n\n /**\n * The region of the user.\n */\n region?: string | null;\n\n /**\n * The [IANA timezone](https://nodatime.org/TimeZones) of the user.\n */\n timezone?: string | null;\n }\n}\n\nexport interface BetaWebSearchToolRequestError {\n error_code: BetaWebSearchToolResultErrorCode;\n\n type: 'web_search_tool_result_error';\n}\n\nexport interface BetaWebSearchToolResultBlock {\n content: BetaWebSearchToolResultBlockContent;\n\n tool_use_id: string;\n\n type: 'web_search_tool_result';\n}\n\nexport type BetaWebSearchToolResultBlockContent =\n | BetaWebSearchToolResultError\n | Array<BetaWebSearchResultBlock>;\n\nexport interface BetaWebSearchToolResultBlockParam {\n content: BetaWebSearchToolResultBlockParamContent;\n\n tool_use_id: string;\n\n type: 'web_search_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: BetaCacheControlEphemeral | null;\n}\n\nexport type BetaWebSearchToolResultBlockParamContent =\n | Array<BetaWebSearchResultBlockParam>\n | BetaWebSearchToolRequestError;\n\nexport interface BetaWebSearchToolResultError {\n error_code: BetaWebSearchToolResultErrorCode;\n\n type: 'web_search_tool_result_error';\n}\n\nexport type BetaWebSearchToolResultErrorCode =\n | 'invalid_tool_input'\n | 'unavailable'\n | 'max_uses_exceeded'\n | 'too_many_requests'\n | 'query_too_long';\n\n/**\n * @deprecated BetaRequestDocumentBlock should be used insated\n */\nexport type BetaBase64PDFBlock = BetaRequestDocumentBlock;\n\nexport type MessageCreateParams = MessageCreateParamsNonStreaming | MessageCreateParamsStreaming;\n\nexport interface MessageCreateParamsBase {\n /**\n * Body param: The maximum number of tokens to generate before stopping.\n *\n * Note that our models may stop _before_ reaching this maximum. This parameter\n * only specifies the absolute maximum number of tokens to generate.\n *\n * Different models have different maximum values for this parameter. See\n * [models](https://docs.claude.com/en/docs/models-overview) for details.\n */\n max_tokens: number;\n\n /**\n * Body param: Input messages.\n *\n * Our models are trained to operate on alternating `user` and `assistant`\n * conversational turns. When creating a new `Message`, you specify the prior\n * conversational turns with the `messages` parameter, and the model then generates\n * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n * in your request will be combined into a single turn.\n *\n * Each input message must be an object with a `role` and `content`. You can\n * specify a single `user`-role message, or you can include multiple `user` and\n * `assistant` messages.\n *\n * If the final message uses the `assistant` role, the response content will\n * continue immediately from the content in that message. This can be used to\n * constrain part of the model's response.\n *\n * Example with a single `user` message:\n *\n * ```json\n * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n * ```\n *\n * Example with multiple conversational turns:\n *\n * ```json\n * [\n * { \"role\": \"user\", \"content\": \"Hello there.\" },\n * { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n * { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n * ]\n * ```\n *\n * Example with a partially-filled response from Claude:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Each input message `content` may be either a single `string` or an array of\n * content blocks, where each block has a specific `type`. Using a `string` for\n * `content` is shorthand for an array of one content block of type `\"text\"`. The\n * following input messages are equivalent:\n *\n * ```json\n * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n * ```\n *\n * ```json\n * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n * ```\n *\n * See [input examples](https://docs.claude.com/en/api/messages-examples).\n *\n * Note that if you want to include a\n * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n * top-level `system` parameter — there is no `\"system\"` role for input messages in\n * the Messages API.\n *\n * There is a limit of 100,000 messages in a single request.\n */\n messages: Array<BetaMessageParam>;\n\n /**\n * Body param: The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: MessagesAPI.Model;\n\n /**\n * Body param: Container identifier for reuse across requests.\n */\n container?: BetaContainerParams | string | null;\n\n /**\n * Body param: Context management configuration.\n *\n * This allows you to control how Claude manages context across multiple requests,\n * such as whether to clear function results or not.\n */\n context_management?: BetaContextManagementConfig | null;\n\n /**\n * Body param: MCP servers to be utilized in this request\n */\n mcp_servers?: Array<BetaRequestMCPServerURLDefinition>;\n\n /**\n * Body param: An object describing metadata about the request.\n */\n metadata?: BetaMetadata;\n\n /**\n * Body param: Configuration options for the model's output. Controls aspects like\n * how much effort the model puts into its response.\n */\n output_config?: BetaOutputConfig;\n\n /**\n * Body param: A schema to specify Claude's output format in responses.\n */\n output_format?: BetaJSONOutputFormat | null;\n\n /**\n * Body param: Determines whether to use priority capacity (if available) or\n * standard capacity for this request.\n *\n * Anthropic offers different levels of service for your API requests. See\n * [service-tiers](https://docs.claude.com/en/api/service-tiers) for details.\n */\n service_tier?: 'auto' | 'standard_only';\n\n /**\n * Body param: Custom text sequences that will cause the model to stop generating.\n *\n * Our models will normally stop when they have naturally completed their turn,\n * which will result in a response `stop_reason` of `\"end_turn\"`.\n *\n * If you want the model to stop generating when it encounters custom strings of\n * text, you can use the `stop_sequences` parameter. If the model encounters one of\n * the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"`\n * and the response `stop_sequence` value will contain the matched stop sequence.\n */\n stop_sequences?: Array<string>;\n\n /**\n * Body param: Whether to incrementally stream the response using server-sent\n * events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream?: boolean;\n\n /**\n * Body param: System prompt.\n *\n * A system prompt is a way of providing context and instructions to Claude, such\n * as specifying a particular goal or role. See our\n * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n */\n system?: string | Array<BetaTextBlockParam>;\n\n /**\n * Body param: Amount of randomness injected into the response.\n *\n * Defaults to `1.0`. Ranges from `0.0` to `1.0`. Use `temperature` closer to `0.0`\n * for analytical / multiple choice, and closer to `1.0` for creative and\n * generative tasks.\n *\n * Note that even with `temperature` of `0.0`, the results will not be fully\n * deterministic.\n */\n temperature?: number;\n\n /**\n * Body param: Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n thinking?: BetaThinkingConfigParam;\n\n /**\n * Body param: How the model should use the provided tools. The model can use a\n * specific tool, any available tool, decide by itself, or not use tools at all.\n */\n tool_choice?: BetaToolChoice;\n\n /**\n * Body param: Definitions of tools that the model may use.\n *\n * If you include `tools` in your API request, the model may return `tool_use`\n * content blocks that represent the model's use of those tools. You can then run\n * those tools using the tool input generated by the model and then optionally\n * return results back to the model using `tool_result` content blocks.\n *\n * There are two types of tools: **client tools** and **server tools**. The\n * behavior described below applies to client tools. For\n * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n * see their individual documentation as each has its own behavior (e.g., the\n * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n *\n * Each tool definition includes:\n *\n * - `name`: Name of the tool.\n * - `description`: Optional, but strongly-recommended description of the tool.\n * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n * tool `input` shape that the model will produce in `tool_use` output content\n * blocks.\n *\n * For example, if you defined `tools` as:\n *\n * ```json\n * [\n * {\n * \"name\": \"get_stock_price\",\n * \"description\": \"Get the current stock price for a given ticker symbol.\",\n * \"input_schema\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"ticker\": {\n * \"type\": \"string\",\n * \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n * }\n * },\n * \"required\": [\"ticker\"]\n * }\n * }\n * ]\n * ```\n *\n * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n * `tool_use` content blocks in the response like this:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_use\",\n * \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"name\": \"get_stock_price\",\n * \"input\": { \"ticker\": \"^GSPC\" }\n * }\n * ]\n * ```\n *\n * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n * input, and return the following back to the model in a subsequent `user`\n * message:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_result\",\n * \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"content\": \"259.75 USD\"\n * }\n * ]\n * ```\n *\n * Tools can be used for workflows that include running client-side tools and\n * functions, or more generally whenever you want the model to produce a particular\n * JSON structure of output.\n *\n * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n */\n tools?: Array<BetaToolUnion>;\n\n /**\n * Body param: Only sample from the top K options for each subsequent token.\n *\n * Used to remove \"long tail\" low probability responses.\n * [Learn more technical details here](https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277).\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_k?: number;\n\n /**\n * Body param: Use nucleus sampling.\n *\n * In nucleus sampling, we compute the cumulative distribution over all the options\n * for each subsequent token in decreasing probability order and cut it off once it\n * reaches a particular probability specified by `top_p`. You should either alter\n * `temperature` or `top_p`, but not both.\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_p?: number;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport namespace MessageCreateParams {\n export type MessageCreateParamsNonStreaming = MessagesMessagesAPI.MessageCreateParamsNonStreaming;\n export type MessageCreateParamsStreaming = MessagesMessagesAPI.MessageCreateParamsStreaming;\n}\n\nexport interface MessageCreateParamsNonStreaming extends MessageCreateParamsBase {\n /**\n * Body param: Whether to incrementally stream the response using server-sent\n * events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream?: false;\n}\n\nexport interface MessageCreateParamsStreaming extends MessageCreateParamsBase {\n /**\n * Body param: Whether to incrementally stream the response using server-sent\n * events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream: true;\n}\n\nexport interface MessageCountTokensParams {\n /**\n * Body param: Input messages.\n *\n * Our models are trained to operate on alternating `user` and `assistant`\n * conversational turns. When creating a new `Message`, you specify the prior\n * conversational turns with the `messages` parameter, and the model then generates\n * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n * in your request will be combined into a single turn.\n *\n * Each input message must be an object with a `role` and `content`. You can\n * specify a single `user`-role message, or you can include multiple `user` and\n * `assistant` messages.\n *\n * If the final message uses the `assistant` role, the response content will\n * continue immediately from the content in that message. This can be used to\n * constrain part of the model's response.\n *\n * Example with a single `user` message:\n *\n * ```json\n * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n * ```\n *\n * Example with multiple conversational turns:\n *\n * ```json\n * [\n * { \"role\": \"user\", \"content\": \"Hello there.\" },\n * { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n * { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n * ]\n * ```\n *\n * Example with a partially-filled response from Claude:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Each input message `content` may be either a single `string` or an array of\n * content blocks, where each block has a specific `type`. Using a `string` for\n * `content` is shorthand for an array of one content block of type `\"text\"`. The\n * following input messages are equivalent:\n *\n * ```json\n * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n * ```\n *\n * ```json\n * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n * ```\n *\n * See [input examples](https://docs.claude.com/en/api/messages-examples).\n *\n * Note that if you want to include a\n * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n * top-level `system` parameter — there is no `\"system\"` role for input messages in\n * the Messages API.\n *\n * There is a limit of 100,000 messages in a single request.\n */\n messages: Array<BetaMessageParam>;\n\n /**\n * Body param: The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: MessagesAPI.Model;\n\n /**\n * Body param: Context management configuration.\n *\n * This allows you to control how Claude manages context across multiple requests,\n * such as whether to clear function results or not.\n */\n context_management?: BetaContextManagementConfig | null;\n\n /**\n * Body param: MCP servers to be utilized in this request\n */\n mcp_servers?: Array<BetaRequestMCPServerURLDefinition>;\n\n /**\n * Body param: Configuration options for the model's output. Controls aspects like\n * how much effort the model puts into its response.\n */\n output_config?: BetaOutputConfig;\n\n /**\n * Body param: A schema to specify Claude's output format in responses.\n */\n output_format?: BetaJSONOutputFormat | null;\n\n /**\n * Body param: System prompt.\n *\n * A system prompt is a way of providing context and instructions to Claude, such\n * as specifying a particular goal or role. See our\n * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n */\n system?: string | Array<BetaTextBlockParam>;\n\n /**\n * Body param: Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n thinking?: BetaThinkingConfigParam;\n\n /**\n * Body param: How the model should use the provided tools. The model can use a\n * specific tool, any available tool, decide by itself, or not use tools at all.\n */\n tool_choice?: BetaToolChoice;\n\n /**\n * Body param: Definitions of tools that the model may use.\n *\n * If you include `tools` in your API request, the model may return `tool_use`\n * content blocks that represent the model's use of those tools. You can then run\n * those tools using the tool input generated by the model and then optionally\n * return results back to the model using `tool_result` content blocks.\n *\n * There are two types of tools: **client tools** and **server tools**. The\n * behavior described below applies to client tools. For\n * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n * see their individual documentation as each has its own behavior (e.g., the\n * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n *\n * Each tool definition includes:\n *\n * - `name`: Name of the tool.\n * - `description`: Optional, but strongly-recommended description of the tool.\n * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n * tool `input` shape that the model will produce in `tool_use` output content\n * blocks.\n *\n * For example, if you defined `tools` as:\n *\n * ```json\n * [\n * {\n * \"name\": \"get_stock_price\",\n * \"description\": \"Get the current stock price for a given ticker symbol.\",\n * \"input_schema\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"ticker\": {\n * \"type\": \"string\",\n * \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n * }\n * },\n * \"required\": [\"ticker\"]\n * }\n * }\n * ]\n * ```\n *\n * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n * `tool_use` content blocks in the response like this:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_use\",\n * \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"name\": \"get_stock_price\",\n * \"input\": { \"ticker\": \"^GSPC\" }\n * }\n * ]\n * ```\n *\n * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n * input, and return the following back to the model in a subsequent `user`\n * message:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_result\",\n * \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"content\": \"259.75 USD\"\n * }\n * ]\n * ```\n *\n * Tools can be used for workflows that include running client-side tools and\n * functions, or more generally whenever you want the model to produce a particular\n * JSON structure of output.\n *\n * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n */\n tools?: Array<\n | BetaTool\n | BetaToolBash20241022\n | BetaToolBash20250124\n | BetaCodeExecutionTool20250522\n | BetaCodeExecutionTool20250825\n | BetaToolComputerUse20241022\n | BetaMemoryTool20250818\n | BetaToolComputerUse20250124\n | BetaToolTextEditor20241022\n | BetaToolComputerUse20251124\n | BetaToolTextEditor20250124\n | BetaToolTextEditor20250429\n | BetaToolTextEditor20250728\n | BetaWebSearchTool20250305\n | BetaWebFetchTool20250910\n | BetaToolSearchToolBm25_20251119\n | BetaToolSearchToolRegex20251119\n | BetaMCPToolset\n >;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport { BetaToolRunner, type BetaToolRunnerParams } from '../../../lib/tools/BetaToolRunner';\n\nMessages.Batches = Batches;\n\nMessages.BetaToolRunner = BetaToolRunner;\n\nexport declare namespace Messages {\n export {\n type BetaAllThinkingTurns as BetaAllThinkingTurns,\n type BetaBase64ImageSource as BetaBase64ImageSource,\n type BetaBase64PDFSource as BetaBase64PDFSource,\n type BetaBashCodeExecutionOutputBlock as BetaBashCodeExecutionOutputBlock,\n type BetaBashCodeExecutionOutputBlockParam as BetaBashCodeExecutionOutputBlockParam,\n type BetaBashCodeExecutionResultBlock as BetaBashCodeExecutionResultBlock,\n type BetaBashCodeExecutionResultBlockParam as BetaBashCodeExecutionResultBlockParam,\n type BetaBashCodeExecutionToolResultBlock as BetaBashCodeExecutionToolResultBlock,\n type BetaBashCodeExecutionToolResultBlockParam as BetaBashCodeExecutionToolResultBlockParam,\n type BetaBashCodeExecutionToolResultError as BetaBashCodeExecutionToolResultError,\n type BetaBashCodeExecutionToolResultErrorParam as BetaBashCodeExecutionToolResultErrorParam,\n type BetaCacheControlEphemeral as BetaCacheControlEphemeral,\n type BetaCacheCreation as BetaCacheCreation,\n type BetaCitationCharLocation as BetaCitationCharLocation,\n type BetaCitationCharLocationParam as BetaCitationCharLocationParam,\n type BetaCitationConfig as BetaCitationConfig,\n type BetaCitationContentBlockLocation as BetaCitationContentBlockLocation,\n type BetaCitationContentBlockLocationParam as BetaCitationContentBlockLocationParam,\n type BetaCitationPageLocation as BetaCitationPageLocation,\n type BetaCitationPageLocationParam as BetaCitationPageLocationParam,\n type BetaCitationSearchResultLocation as BetaCitationSearchResultLocation,\n type BetaCitationSearchResultLocationParam as BetaCitationSearchResultLocationParam,\n type BetaCitationWebSearchResultLocationParam as BetaCitationWebSearchResultLocationParam,\n type BetaCitationsConfigParam as BetaCitationsConfigParam,\n type BetaCitationsDelta as BetaCitationsDelta,\n type BetaCitationsWebSearchResultLocation as BetaCitationsWebSearchResultLocation,\n type BetaClearThinking20251015Edit as BetaClearThinking20251015Edit,\n type BetaClearThinking20251015EditResponse as BetaClearThinking20251015EditResponse,\n type BetaClearToolUses20250919Edit as BetaClearToolUses20250919Edit,\n type BetaClearToolUses20250919EditResponse as BetaClearToolUses20250919EditResponse,\n type BetaCodeExecutionOutputBlock as BetaCodeExecutionOutputBlock,\n type BetaCodeExecutionOutputBlockParam as BetaCodeExecutionOutputBlockParam,\n type BetaCodeExecutionResultBlock as BetaCodeExecutionResultBlock,\n type BetaCodeExecutionResultBlockParam as BetaCodeExecutionResultBlockParam,\n type BetaCodeExecutionTool20250522 as BetaCodeExecutionTool20250522,\n type BetaCodeExecutionTool20250825 as BetaCodeExecutionTool20250825,\n type BetaCodeExecutionToolResultBlock as BetaCodeExecutionToolResultBlock,\n type BetaCodeExecutionToolResultBlockContent as BetaCodeExecutionToolResultBlockContent,\n type BetaCodeExecutionToolResultBlockParam as BetaCodeExecutionToolResultBlockParam,\n type BetaCodeExecutionToolResultBlockParamContent as BetaCodeExecutionToolResultBlockParamContent,\n type BetaCodeExecutionToolResultError as BetaCodeExecutionToolResultError,\n type BetaCodeExecutionToolResultErrorCode as BetaCodeExecutionToolResultErrorCode,\n type BetaCodeExecutionToolResultErrorParam as BetaCodeExecutionToolResultErrorParam,\n type BetaContainer as BetaContainer,\n type BetaContainerParams as BetaContainerParams,\n type BetaContainerUploadBlock as BetaContainerUploadBlock,\n type BetaContainerUploadBlockParam as BetaContainerUploadBlockParam,\n type BetaContentBlock as BetaContentBlock,\n type BetaContentBlockParam as BetaContentBlockParam,\n type BetaContentBlockSource as BetaContentBlockSource,\n type BetaContentBlockSourceContent as BetaContentBlockSourceContent,\n type BetaContextManagementConfig as BetaContextManagementConfig,\n type BetaContextManagementResponse as BetaContextManagementResponse,\n type BetaCountTokensContextManagementResponse as BetaCountTokensContextManagementResponse,\n type BetaDirectCaller as BetaDirectCaller,\n type BetaDocumentBlock as BetaDocumentBlock,\n type BetaFileDocumentSource as BetaFileDocumentSource,\n type BetaFileImageSource as BetaFileImageSource,\n type BetaImageBlockParam as BetaImageBlockParam,\n type BetaInputJSONDelta as BetaInputJSONDelta,\n type BetaInputTokensClearAtLeast as BetaInputTokensClearAtLeast,\n type BetaInputTokensTrigger as BetaInputTokensTrigger,\n type BetaJSONOutputFormat as BetaJSONOutputFormat,\n type BetaMCPToolConfig as BetaMCPToolConfig,\n type BetaMCPToolDefaultConfig as BetaMCPToolDefaultConfig,\n type BetaMCPToolResultBlock as BetaMCPToolResultBlock,\n type BetaMCPToolUseBlock as BetaMCPToolUseBlock,\n type BetaMCPToolUseBlockParam as BetaMCPToolUseBlockParam,\n type BetaMCPToolset as BetaMCPToolset,\n type BetaMemoryTool20250818 as BetaMemoryTool20250818,\n type BetaMemoryTool20250818Command as BetaMemoryTool20250818Command,\n type BetaMemoryTool20250818CreateCommand as BetaMemoryTool20250818CreateCommand,\n type BetaMemoryTool20250818DeleteCommand as BetaMemoryTool20250818DeleteCommand,\n type BetaMemoryTool20250818InsertCommand as BetaMemoryTool20250818InsertCommand,\n type BetaMemoryTool20250818RenameCommand as BetaMemoryTool20250818RenameCommand,\n type BetaMemoryTool20250818StrReplaceCommand as BetaMemoryTool20250818StrReplaceCommand,\n type BetaMemoryTool20250818ViewCommand as BetaMemoryTool20250818ViewCommand,\n type BetaMessage as BetaMessage,\n type BetaMessageDeltaUsage as BetaMessageDeltaUsage,\n type BetaMessageParam as BetaMessageParam,\n type BetaMessageTokensCount as BetaMessageTokensCount,\n type BetaMetadata as BetaMetadata,\n type BetaOutputConfig as BetaOutputConfig,\n type BetaPlainTextSource as BetaPlainTextSource,\n type BetaRawContentBlockDelta as BetaRawContentBlockDelta,\n type BetaRawContentBlockDeltaEvent as BetaRawContentBlockDeltaEvent,\n type BetaRawContentBlockStartEvent as BetaRawContentBlockStartEvent,\n type BetaRawContentBlockStopEvent as BetaRawContentBlockStopEvent,\n type BetaRawMessageDeltaEvent as BetaRawMessageDeltaEvent,\n type BetaRawMessageStartEvent as BetaRawMessageStartEvent,\n type BetaRawMessageStopEvent as BetaRawMessageStopEvent,\n type BetaRawMessageStreamEvent as BetaRawMessageStreamEvent,\n type BetaRedactedThinkingBlock as BetaRedactedThinkingBlock,\n type BetaRedactedThinkingBlockParam as BetaRedactedThinkingBlockParam,\n type BetaRequestDocumentBlock as BetaRequestDocumentBlock,\n type BetaRequestMCPServerToolConfiguration as BetaRequestMCPServerToolConfiguration,\n type BetaRequestMCPServerURLDefinition as BetaRequestMCPServerURLDefinition,\n type BetaRequestMCPToolResultBlockParam as BetaRequestMCPToolResultBlockParam,\n type BetaSearchResultBlockParam as BetaSearchResultBlockParam,\n type BetaServerToolCaller as BetaServerToolCaller,\n type BetaServerToolUsage as BetaServerToolUsage,\n type BetaServerToolUseBlock as BetaServerToolUseBlock,\n type BetaServerToolUseBlockParam as BetaServerToolUseBlockParam,\n type BetaSignatureDelta as BetaSignatureDelta,\n type BetaSkill as BetaSkill,\n type BetaSkillParams as BetaSkillParams,\n type BetaStopReason as BetaStopReason,\n type BetaTextBlock as BetaTextBlock,\n type BetaTextBlockParam as BetaTextBlockParam,\n type BetaTextCitation as BetaTextCitation,\n type BetaTextCitationParam as BetaTextCitationParam,\n type BetaTextDelta as BetaTextDelta,\n type BetaTextEditorCodeExecutionCreateResultBlock as BetaTextEditorCodeExecutionCreateResultBlock,\n type BetaTextEditorCodeExecutionCreateResultBlockParam as BetaTextEditorCodeExecutionCreateResultBlockParam,\n type BetaTextEditorCodeExecutionStrReplaceResultBlock as BetaTextEditorCodeExecutionStrReplaceResultBlock,\n type BetaTextEditorCodeExecutionStrReplaceResultBlockParam as BetaTextEditorCodeExecutionStrReplaceResultBlockParam,\n type BetaTextEditorCodeExecutionToolResultBlock as BetaTextEditorCodeExecutionToolResultBlock,\n type BetaTextEditorCodeExecutionToolResultBlockParam as BetaTextEditorCodeExecutionToolResultBlockParam,\n type BetaTextEditorCodeExecutionToolResultError as BetaTextEditorCodeExecutionToolResultError,\n type BetaTextEditorCodeExecutionToolResultErrorParam as BetaTextEditorCodeExecutionToolResultErrorParam,\n type BetaTextEditorCodeExecutionViewResultBlock as BetaTextEditorCodeExecutionViewResultBlock,\n type BetaTextEditorCodeExecutionViewResultBlockParam as BetaTextEditorCodeExecutionViewResultBlockParam,\n type BetaThinkingBlock as BetaThinkingBlock,\n type BetaThinkingBlockParam as BetaThinkingBlockParam,\n type BetaThinkingConfigDisabled as BetaThinkingConfigDisabled,\n type BetaThinkingConfigEnabled as BetaThinkingConfigEnabled,\n type BetaThinkingConfigParam as BetaThinkingConfigParam,\n type BetaThinkingDelta as BetaThinkingDelta,\n type BetaThinkingTurns as BetaThinkingTurns,\n type BetaTool as BetaTool,\n type BetaToolBash20241022 as BetaToolBash20241022,\n type BetaToolBash20250124 as BetaToolBash20250124,\n type BetaToolChoice as BetaToolChoice,\n type BetaToolChoiceAny as BetaToolChoiceAny,\n type BetaToolChoiceAuto as BetaToolChoiceAuto,\n type BetaToolChoiceNone as BetaToolChoiceNone,\n type BetaToolChoiceTool as BetaToolChoiceTool,\n type BetaToolComputerUse20241022 as BetaToolComputerUse20241022,\n type BetaToolComputerUse20250124 as BetaToolComputerUse20250124,\n type BetaToolComputerUse20251124 as BetaToolComputerUse20251124,\n type BetaToolReferenceBlock as BetaToolReferenceBlock,\n type BetaToolReferenceBlockParam as BetaToolReferenceBlockParam,\n type BetaToolResultBlockParam as BetaToolResultBlockParam,\n type BetaToolResultContentBlockParam as BetaToolResultContentBlockParam,\n type BetaToolSearchToolBm25_20251119 as BetaToolSearchToolBm25_20251119,\n type BetaToolSearchToolRegex20251119 as BetaToolSearchToolRegex20251119,\n type BetaToolSearchToolResultBlock as BetaToolSearchToolResultBlock,\n type BetaToolSearchToolResultBlockParam as BetaToolSearchToolResultBlockParam,\n type BetaToolSearchToolResultError as BetaToolSearchToolResultError,\n type BetaToolSearchToolResultErrorParam as BetaToolSearchToolResultErrorParam,\n type BetaToolSearchToolSearchResultBlock as BetaToolSearchToolSearchResultBlock,\n type BetaToolSearchToolSearchResultBlockParam as BetaToolSearchToolSearchResultBlockParam,\n type BetaToolTextEditor20241022 as BetaToolTextEditor20241022,\n type BetaToolTextEditor20250124 as BetaToolTextEditor20250124,\n type BetaToolTextEditor20250429 as BetaToolTextEditor20250429,\n type BetaToolTextEditor20250728 as BetaToolTextEditor20250728,\n type BetaToolUnion as BetaToolUnion,\n type BetaToolUseBlock as BetaToolUseBlock,\n type BetaToolUseBlockParam as BetaToolUseBlockParam,\n type BetaToolUsesKeep as BetaToolUsesKeep,\n type BetaToolUsesTrigger as BetaToolUsesTrigger,\n type BetaURLImageSource as BetaURLImageSource,\n type BetaURLPDFSource as BetaURLPDFSource,\n type BetaUsage as BetaUsage,\n type BetaWebFetchBlock as BetaWebFetchBlock,\n type BetaWebFetchBlockParam as BetaWebFetchBlockParam,\n type BetaWebFetchTool20250910 as BetaWebFetchTool20250910,\n type BetaWebFetchToolResultBlock as BetaWebFetchToolResultBlock,\n type BetaWebFetchToolResultBlockParam as BetaWebFetchToolResultBlockParam,\n type BetaWebFetchToolResultErrorBlock as BetaWebFetchToolResultErrorBlock,\n type BetaWebFetchToolResultErrorBlockParam as BetaWebFetchToolResultErrorBlockParam,\n type BetaWebFetchToolResultErrorCode as BetaWebFetchToolResultErrorCode,\n type BetaWebSearchResultBlock as BetaWebSearchResultBlock,\n type BetaWebSearchResultBlockParam as BetaWebSearchResultBlockParam,\n type BetaWebSearchTool20250305 as BetaWebSearchTool20250305,\n type BetaWebSearchToolRequestError as BetaWebSearchToolRequestError,\n type BetaWebSearchToolResultBlock as BetaWebSearchToolResultBlock,\n type BetaWebSearchToolResultBlockContent as BetaWebSearchToolResultBlockContent,\n type BetaWebSearchToolResultBlockParam as BetaWebSearchToolResultBlockParam,\n type BetaWebSearchToolResultBlockParamContent as BetaWebSearchToolResultBlockParamContent,\n type BetaWebSearchToolResultError as BetaWebSearchToolResultError,\n type BetaWebSearchToolResultErrorCode as BetaWebSearchToolResultErrorCode,\n type BetaBase64PDFBlock as BetaBase64PDFBlock,\n type MessageCreateParams as MessageCreateParams,\n type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n type MessageCountTokensParams as MessageCountTokensParams,\n };\n\n export { type BetaToolRunnerParams, BetaToolRunner };\n\n export {\n Batches as Batches,\n type BetaDeletedMessageBatch as BetaDeletedMessageBatch,\n type BetaMessageBatch as BetaMessageBatch,\n type BetaMessageBatchCanceledResult as BetaMessageBatchCanceledResult,\n type BetaMessageBatchErroredResult as BetaMessageBatchErroredResult,\n type BetaMessageBatchExpiredResult as BetaMessageBatchExpiredResult,\n type BetaMessageBatchIndividualResponse as BetaMessageBatchIndividualResponse,\n type BetaMessageBatchRequestCounts as BetaMessageBatchRequestCounts,\n type BetaMessageBatchResult as BetaMessageBatchResult,\n type BetaMessageBatchSucceededResult as BetaMessageBatchSucceededResult,\n type BetaMessageBatchesPage as BetaMessageBatchesPage,\n type BatchCreateParams as BatchCreateParams,\n type BatchRetrieveParams as BatchRetrieveParams,\n type BatchListParams as BatchListParams,\n type BatchDeleteParams as BatchDeleteParams,\n type BatchCancelParams as BatchCancelParams,\n type BatchResultsParams as BatchResultsParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { type Uploadable } from '../../../core/uploads';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { multipartFormRequestOptions } from '../../../internal/uploads';\nimport { path } from '../../../internal/utils/path';\n\nexport class Versions extends APIResource {\n /**\n * Create Skill Version\n *\n * @example\n * ```ts\n * const version = await client.beta.skills.versions.create(\n * 'skill_id',\n * );\n * ```\n */\n create(\n skillID: string,\n params: VersionCreateParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<VersionCreateResponse> {\n const { betas, ...body } = params ?? {};\n return this._client.post(\n path`/v1/skills/${skillID}/versions?beta=true`,\n multipartFormRequestOptions(\n {\n body,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n },\n this._client,\n ),\n );\n }\n\n /**\n * Get Skill Version\n *\n * @example\n * ```ts\n * const version = await client.beta.skills.versions.retrieve(\n * 'version',\n * { skill_id: 'skill_id' },\n * );\n * ```\n */\n retrieve(\n version: string,\n params: VersionRetrieveParams,\n options?: RequestOptions,\n ): APIPromise<VersionRetrieveResponse> {\n const { skill_id, betas } = params;\n return this._client.get(path`/v1/skills/${skill_id}/versions/${version}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * List Skill Versions\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const versionListResponse of client.beta.skills.versions.list(\n * 'skill_id',\n * )) {\n * // ...\n * }\n * ```\n */\n list(\n skillID: string,\n params: VersionListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<VersionListResponsesPageCursor, VersionListResponse> {\n const { betas, ...query } = params ?? {};\n return this._client.getAPIList(\n path`/v1/skills/${skillID}/versions?beta=true`,\n PageCursor<VersionListResponse>,\n {\n query,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n },\n );\n }\n\n /**\n * Delete Skill Version\n *\n * @example\n * ```ts\n * const version = await client.beta.skills.versions.delete(\n * 'version',\n * { skill_id: 'skill_id' },\n * );\n * ```\n */\n delete(\n version: string,\n params: VersionDeleteParams,\n options?: RequestOptions,\n ): APIPromise<VersionDeleteResponse> {\n const { skill_id, betas } = params;\n return this._client.delete(path`/v1/skills/${skill_id}/versions/${version}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n });\n }\n}\n\nexport type VersionListResponsesPageCursor = PageCursor<VersionListResponse>;\n\nexport interface VersionCreateResponse {\n /**\n * Unique identifier for the skill version.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * ISO 8601 timestamp of when the skill version was created.\n */\n created_at: string;\n\n /**\n * Description of the skill version.\n *\n * This is extracted from the SKILL.md file in the skill upload.\n */\n description: string;\n\n /**\n * Directory name of the skill version.\n *\n * This is the top-level directory name that was extracted from the uploaded files.\n */\n directory: string;\n\n /**\n * Human-readable name of the skill version.\n *\n * This is extracted from the SKILL.md file in the skill upload.\n */\n name: string;\n\n /**\n * Identifier for the skill that this version belongs to.\n */\n skill_id: string;\n\n /**\n * Object type.\n *\n * For Skill Versions, this is always `\"skill_version\"`.\n */\n type: string;\n\n /**\n * Version identifier for the skill.\n *\n * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n */\n version: string;\n}\n\nexport interface VersionRetrieveResponse {\n /**\n * Unique identifier for the skill version.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * ISO 8601 timestamp of when the skill version was created.\n */\n created_at: string;\n\n /**\n * Description of the skill version.\n *\n * This is extracted from the SKILL.md file in the skill upload.\n */\n description: string;\n\n /**\n * Directory name of the skill version.\n *\n * This is the top-level directory name that was extracted from the uploaded files.\n */\n directory: string;\n\n /**\n * Human-readable name of the skill version.\n *\n * This is extracted from the SKILL.md file in the skill upload.\n */\n name: string;\n\n /**\n * Identifier for the skill that this version belongs to.\n */\n skill_id: string;\n\n /**\n * Object type.\n *\n * For Skill Versions, this is always `\"skill_version\"`.\n */\n type: string;\n\n /**\n * Version identifier for the skill.\n *\n * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n */\n version: string;\n}\n\nexport interface VersionListResponse {\n /**\n * Unique identifier for the skill version.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * ISO 8601 timestamp of when the skill version was created.\n */\n created_at: string;\n\n /**\n * Description of the skill version.\n *\n * This is extracted from the SKILL.md file in the skill upload.\n */\n description: string;\n\n /**\n * Directory name of the skill version.\n *\n * This is the top-level directory name that was extracted from the uploaded files.\n */\n directory: string;\n\n /**\n * Human-readable name of the skill version.\n *\n * This is extracted from the SKILL.md file in the skill upload.\n */\n name: string;\n\n /**\n * Identifier for the skill that this version belongs to.\n */\n skill_id: string;\n\n /**\n * Object type.\n *\n * For Skill Versions, this is always `\"skill_version\"`.\n */\n type: string;\n\n /**\n * Version identifier for the skill.\n *\n * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n */\n version: string;\n}\n\nexport interface VersionDeleteResponse {\n /**\n * Version identifier for the skill.\n *\n * Each version is identified by a Unix epoch timestamp (e.g., \"1759178010641129\").\n */\n id: string;\n\n /**\n * Deleted object type.\n *\n * For Skill Versions, this is always `\"skill_version_deleted\"`.\n */\n type: string;\n}\n\nexport interface VersionCreateParams {\n /**\n * Body param: Files to upload for the skill.\n *\n * All files must be in the same top-level directory and must include a SKILL.md\n * file at the root of that directory.\n */\n files?: Array<Uploadable> | null;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VersionRetrieveParams {\n /**\n * Path param: Unique identifier for the skill.\n *\n * The format and length of IDs may change over time.\n */\n skill_id: string;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VersionListParams extends PageCursorParams {\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface VersionDeleteParams {\n /**\n * Path param: Unique identifier for the skill.\n *\n * The format and length of IDs may change over time.\n */\n skill_id: string;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Versions {\n export {\n type VersionCreateResponse as VersionCreateResponse,\n type VersionRetrieveResponse as VersionRetrieveResponse,\n type VersionListResponse as VersionListResponse,\n type VersionDeleteResponse as VersionDeleteResponse,\n type VersionListResponsesPageCursor as VersionListResponsesPageCursor,\n type VersionCreateParams as VersionCreateParams,\n type VersionRetrieveParams as VersionRetrieveParams,\n type VersionListParams as VersionListParams,\n type VersionDeleteParams as VersionDeleteParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../../core/resource';\nimport * as BetaAPI from '../beta';\nimport * as VersionsAPI from './versions';\nimport {\n VersionCreateParams,\n VersionCreateResponse,\n VersionDeleteParams,\n VersionDeleteResponse,\n VersionListParams,\n VersionListResponse,\n VersionListResponsesPageCursor,\n VersionRetrieveParams,\n VersionRetrieveResponse,\n Versions,\n} from './versions';\nimport { APIPromise } from '../../../core/api-promise';\nimport { PageCursor, type PageCursorParams, PagePromise } from '../../../core/pagination';\nimport { type Uploadable } from '../../../core/uploads';\nimport { buildHeaders } from '../../../internal/headers';\nimport { RequestOptions } from '../../../internal/request-options';\nimport { multipartFormRequestOptions } from '../../../internal/uploads';\nimport { path } from '../../../internal/utils/path';\n\nexport class Skills extends APIResource {\n versions: VersionsAPI.Versions = new VersionsAPI.Versions(this._client);\n\n /**\n * Create Skill\n *\n * @example\n * ```ts\n * const skill = await client.beta.skills.create();\n * ```\n */\n create(\n params: SkillCreateParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<SkillCreateResponse> {\n const { betas, ...body } = params ?? {};\n return this._client.post(\n '/v1/skills?beta=true',\n multipartFormRequestOptions(\n {\n body,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n },\n this._client,\n ),\n );\n }\n\n /**\n * Get Skill\n *\n * @example\n * ```ts\n * const skill = await client.beta.skills.retrieve('skill_id');\n * ```\n */\n retrieve(\n skillID: string,\n params: SkillRetrieveParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<SkillRetrieveResponse> {\n const { betas } = params ?? {};\n return this._client.get(path`/v1/skills/${skillID}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * List Skills\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const skillListResponse of client.beta.skills.list()) {\n * // ...\n * }\n * ```\n */\n list(\n params: SkillListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<SkillListResponsesPageCursor, SkillListResponse> {\n const { betas, ...query } = params ?? {};\n return this._client.getAPIList('/v1/skills?beta=true', PageCursor<SkillListResponse>, {\n query,\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n });\n }\n\n /**\n * Delete Skill\n *\n * @example\n * ```ts\n * const skill = await client.beta.skills.delete('skill_id');\n * ```\n */\n delete(\n skillID: string,\n params: SkillDeleteParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<SkillDeleteResponse> {\n const { betas } = params ?? {};\n return this._client.delete(path`/v1/skills/${skillID}?beta=true`, {\n ...options,\n headers: buildHeaders([\n { 'anthropic-beta': [...(betas ?? []), 'skills-2025-10-02'].toString() },\n options?.headers,\n ]),\n });\n }\n}\n\nexport type SkillListResponsesPageCursor = PageCursor<SkillListResponse>;\n\nexport interface SkillCreateResponse {\n /**\n * Unique identifier for the skill.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * ISO 8601 timestamp of when the skill was created.\n */\n created_at: string;\n\n /**\n * Display title for the skill.\n *\n * This is a human-readable label that is not included in the prompt sent to the\n * model.\n */\n display_title: string | null;\n\n /**\n * The latest version identifier for the skill.\n *\n * This represents the most recent version of the skill that has been created.\n */\n latest_version: string | null;\n\n /**\n * Source of the skill.\n *\n * This may be one of the following values:\n *\n * - `\"custom\"`: the skill was created by a user\n * - `\"anthropic\"`: the skill was created by Anthropic\n */\n source: string;\n\n /**\n * Object type.\n *\n * For Skills, this is always `\"skill\"`.\n */\n type: string;\n\n /**\n * ISO 8601 timestamp of when the skill was last updated.\n */\n updated_at: string;\n}\n\nexport interface SkillRetrieveResponse {\n /**\n * Unique identifier for the skill.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * ISO 8601 timestamp of when the skill was created.\n */\n created_at: string;\n\n /**\n * Display title for the skill.\n *\n * This is a human-readable label that is not included in the prompt sent to the\n * model.\n */\n display_title: string | null;\n\n /**\n * The latest version identifier for the skill.\n *\n * This represents the most recent version of the skill that has been created.\n */\n latest_version: string | null;\n\n /**\n * Source of the skill.\n *\n * This may be one of the following values:\n *\n * - `\"custom\"`: the skill was created by a user\n * - `\"anthropic\"`: the skill was created by Anthropic\n */\n source: string;\n\n /**\n * Object type.\n *\n * For Skills, this is always `\"skill\"`.\n */\n type: string;\n\n /**\n * ISO 8601 timestamp of when the skill was last updated.\n */\n updated_at: string;\n}\n\nexport interface SkillListResponse {\n /**\n * Unique identifier for the skill.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * ISO 8601 timestamp of when the skill was created.\n */\n created_at: string;\n\n /**\n * Display title for the skill.\n *\n * This is a human-readable label that is not included in the prompt sent to the\n * model.\n */\n display_title: string | null;\n\n /**\n * The latest version identifier for the skill.\n *\n * This represents the most recent version of the skill that has been created.\n */\n latest_version: string | null;\n\n /**\n * Source of the skill.\n *\n * This may be one of the following values:\n *\n * - `\"custom\"`: the skill was created by a user\n * - `\"anthropic\"`: the skill was created by Anthropic\n */\n source: string;\n\n /**\n * Object type.\n *\n * For Skills, this is always `\"skill\"`.\n */\n type: string;\n\n /**\n * ISO 8601 timestamp of when the skill was last updated.\n */\n updated_at: string;\n}\n\nexport interface SkillDeleteResponse {\n /**\n * Unique identifier for the skill.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * Deleted object type.\n *\n * For Skills, this is always `\"skill_deleted\"`.\n */\n type: string;\n}\n\nexport interface SkillCreateParams {\n /**\n * Body param: Display title for the skill.\n *\n * This is a human-readable label that is not included in the prompt sent to the\n * model.\n */\n display_title?: string | null;\n\n /**\n * Body param: Files to upload for the skill.\n *\n * All files must be in the same top-level directory and must include a SKILL.md\n * file at the root of that directory.\n */\n files?: Array<Uploadable> | null;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SkillRetrieveParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SkillListParams extends PageCursorParams {\n /**\n * Query param: Filter skills by source.\n *\n * If provided, only skills from the specified source will be returned:\n *\n * - `\"custom\"`: only return user-created skills\n * - `\"anthropic\"`: only return Anthropic-created skills\n */\n source?: string | null;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface SkillDeleteParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nSkills.Versions = Versions;\n\nexport declare namespace Skills {\n export {\n type SkillCreateResponse as SkillCreateResponse,\n type SkillRetrieveResponse as SkillRetrieveResponse,\n type SkillListResponse as SkillListResponse,\n type SkillDeleteResponse as SkillDeleteResponse,\n type SkillListResponsesPageCursor as SkillListResponsesPageCursor,\n type SkillCreateParams as SkillCreateParams,\n type SkillRetrieveParams as SkillRetrieveParams,\n type SkillListParams as SkillListParams,\n type SkillDeleteParams as SkillDeleteParams,\n };\n\n export {\n Versions as Versions,\n type VersionCreateResponse as VersionCreateResponse,\n type VersionRetrieveResponse as VersionRetrieveResponse,\n type VersionListResponse as VersionListResponse,\n type VersionDeleteResponse as VersionDeleteResponse,\n type VersionListResponsesPageCursor as VersionListResponsesPageCursor,\n type VersionCreateParams as VersionCreateParams,\n type VersionRetrieveParams as VersionRetrieveParams,\n type VersionListParams as VersionListParams,\n type VersionDeleteParams as VersionDeleteParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as FilesAPI from './files';\nimport {\n DeletedFile,\n FileDeleteParams,\n FileDownloadParams,\n FileListParams,\n FileMetadata,\n FileMetadataPage,\n FileRetrieveMetadataParams,\n FileUploadParams,\n Files,\n} from './files';\nimport * as ModelsAPI from './models';\nimport { BetaModelInfo, BetaModelInfosPage, ModelListParams, ModelRetrieveParams, Models } from './models';\nimport * as MessagesAPI from './messages/messages';\nimport {\n BetaAllThinkingTurns,\n BetaBase64ImageSource,\n BetaBase64PDFBlock,\n BetaBase64PDFSource,\n BetaBashCodeExecutionOutputBlock,\n BetaBashCodeExecutionOutputBlockParam,\n BetaBashCodeExecutionResultBlock,\n BetaBashCodeExecutionResultBlockParam,\n BetaBashCodeExecutionToolResultBlock,\n BetaBashCodeExecutionToolResultBlockParam,\n BetaBashCodeExecutionToolResultError,\n BetaBashCodeExecutionToolResultErrorParam,\n BetaCacheControlEphemeral,\n BetaCacheCreation,\n BetaCitationCharLocation,\n BetaCitationCharLocationParam,\n BetaCitationConfig,\n BetaCitationContentBlockLocation,\n BetaCitationContentBlockLocationParam,\n BetaCitationPageLocation,\n BetaCitationPageLocationParam,\n BetaCitationSearchResultLocation,\n BetaCitationSearchResultLocationParam,\n BetaCitationWebSearchResultLocationParam,\n BetaCitationsConfigParam,\n BetaCitationsDelta,\n BetaCitationsWebSearchResultLocation,\n BetaClearThinking20251015Edit,\n BetaClearThinking20251015EditResponse,\n BetaClearToolUses20250919Edit,\n BetaClearToolUses20250919EditResponse,\n BetaCodeExecutionOutputBlock,\n BetaCodeExecutionOutputBlockParam,\n BetaCodeExecutionResultBlock,\n BetaCodeExecutionResultBlockParam,\n BetaCodeExecutionTool20250522,\n BetaCodeExecutionTool20250825,\n BetaCodeExecutionToolResultBlock,\n BetaCodeExecutionToolResultBlockContent,\n BetaCodeExecutionToolResultBlockParam,\n BetaCodeExecutionToolResultBlockParamContent,\n BetaCodeExecutionToolResultError,\n BetaCodeExecutionToolResultErrorCode,\n BetaCodeExecutionToolResultErrorParam,\n BetaContainer,\n BetaContainerParams,\n BetaContainerUploadBlock,\n BetaContainerUploadBlockParam,\n BetaContentBlock,\n BetaContentBlockParam,\n BetaContentBlockSource,\n BetaContentBlockSourceContent,\n BetaContextManagementConfig,\n BetaContextManagementResponse,\n BetaCountTokensContextManagementResponse,\n BetaDirectCaller,\n BetaDocumentBlock,\n BetaFileDocumentSource,\n BetaFileImageSource,\n BetaImageBlockParam,\n BetaInputJSONDelta,\n BetaJSONOutputFormat,\n BetaInputTokensClearAtLeast,\n BetaInputTokensTrigger,\n BetaMCPToolResultBlock,\n BetaMCPToolUseBlock,\n BetaMCPToolUseBlockParam,\n BetaMCPToolset,\n BetaMemoryTool20250818,\n BetaMemoryTool20250818Command,\n BetaMemoryTool20250818CreateCommand,\n BetaMemoryTool20250818DeleteCommand,\n BetaMemoryTool20250818InsertCommand,\n BetaMemoryTool20250818RenameCommand,\n BetaMemoryTool20250818StrReplaceCommand,\n BetaMemoryTool20250818ViewCommand,\n BetaMessage,\n BetaMessageDeltaUsage,\n BetaMessageParam,\n BetaMessageTokensCount,\n BetaMetadata,\n BetaOutputConfig,\n BetaPlainTextSource,\n BetaRawContentBlockDelta,\n BetaRawContentBlockDeltaEvent,\n BetaRawContentBlockStartEvent,\n BetaRawContentBlockStopEvent,\n BetaRawMessageDeltaEvent,\n BetaRawMessageStartEvent,\n BetaRawMessageStopEvent,\n BetaRawMessageStreamEvent,\n BetaRedactedThinkingBlock,\n BetaRedactedThinkingBlockParam,\n BetaRequestDocumentBlock,\n BetaRequestMCPServerToolConfiguration,\n BetaRequestMCPServerURLDefinition,\n BetaRequestMCPToolResultBlockParam,\n BetaSearchResultBlockParam,\n BetaServerToolCaller,\n BetaServerToolUsage,\n BetaServerToolUseBlock,\n BetaServerToolUseBlockParam,\n BetaSignatureDelta,\n BetaSkill,\n BetaSkillParams,\n BetaStopReason,\n BetaTextBlock,\n BetaTextBlockParam,\n BetaTextCitation,\n BetaTextCitationParam,\n BetaTextDelta,\n BetaTextEditorCodeExecutionCreateResultBlock,\n BetaTextEditorCodeExecutionCreateResultBlockParam,\n BetaTextEditorCodeExecutionStrReplaceResultBlock,\n BetaTextEditorCodeExecutionStrReplaceResultBlockParam,\n BetaTextEditorCodeExecutionToolResultBlock,\n BetaTextEditorCodeExecutionToolResultBlockParam,\n BetaTextEditorCodeExecutionToolResultError,\n BetaTextEditorCodeExecutionToolResultErrorParam,\n BetaTextEditorCodeExecutionViewResultBlock,\n BetaTextEditorCodeExecutionViewResultBlockParam,\n BetaThinkingBlock,\n BetaThinkingBlockParam,\n BetaThinkingConfigDisabled,\n BetaThinkingConfigEnabled,\n BetaThinkingConfigParam,\n BetaThinkingDelta,\n BetaThinkingTurns,\n BetaTool,\n BetaToolBash20241022,\n BetaToolBash20250124,\n BetaToolChoice,\n BetaToolChoiceAny,\n BetaToolChoiceAuto,\n BetaToolChoiceNone,\n BetaToolChoiceTool,\n BetaToolComputerUse20241022,\n BetaToolComputerUse20250124,\n BetaToolComputerUse20251124,\n BetaToolReferenceBlock,\n BetaToolReferenceBlockParam,\n BetaToolResultBlockParam,\n BetaToolTextEditor20241022,\n BetaToolTextEditor20250124,\n BetaToolTextEditor20250429,\n BetaToolTextEditor20250728,\n BetaToolUnion,\n BetaToolUseBlock,\n BetaToolUseBlockParam,\n BetaToolUsesKeep,\n BetaToolUsesTrigger,\n BetaURLImageSource,\n BetaURLPDFSource,\n BetaUsage,\n BetaWebFetchBlock,\n BetaWebFetchBlockParam,\n BetaWebFetchTool20250910,\n BetaWebFetchToolResultBlock,\n BetaWebFetchToolResultBlockParam,\n BetaWebFetchToolResultErrorBlock,\n BetaWebFetchToolResultErrorBlockParam,\n BetaWebFetchToolResultErrorCode,\n BetaWebSearchResultBlock,\n BetaWebSearchResultBlockParam,\n BetaWebSearchTool20250305,\n BetaWebSearchToolRequestError,\n BetaWebSearchToolResultBlock,\n BetaWebSearchToolResultBlockContent,\n BetaWebSearchToolResultBlockParam,\n BetaWebSearchToolResultBlockParamContent,\n BetaWebSearchToolResultError,\n BetaWebSearchToolResultErrorCode,\n MessageCountTokensParams,\n MessageCreateParams,\n MessageCreateParamsNonStreaming,\n MessageCreateParamsStreaming,\n Messages,\n BetaMCPToolConfig,\n BetaMCPToolDefaultConfig,\n} from './messages/messages';\nimport * as SkillsAPI from './skills/skills';\nimport {\n SkillCreateParams,\n SkillCreateResponse,\n SkillDeleteParams,\n SkillDeleteResponse,\n SkillListParams,\n SkillListResponse,\n SkillListResponsesPageCursor,\n SkillRetrieveParams,\n SkillRetrieveResponse,\n Skills,\n} from './skills/skills';\n\nexport class Beta extends APIResource {\n models: ModelsAPI.Models = new ModelsAPI.Models(this._client);\n messages: MessagesAPI.Messages = new MessagesAPI.Messages(this._client);\n files: FilesAPI.Files = new FilesAPI.Files(this._client);\n skills: SkillsAPI.Skills = new SkillsAPI.Skills(this._client);\n}\n\nexport type AnthropicBeta =\n | (string & {})\n | 'message-batches-2024-09-24'\n | 'prompt-caching-2024-07-31'\n | 'computer-use-2024-10-22'\n | 'computer-use-2025-01-24'\n | 'pdfs-2024-09-25'\n | 'token-counting-2024-11-01'\n | 'token-efficient-tools-2025-02-19'\n | 'output-128k-2025-02-19'\n | 'files-api-2025-04-14'\n | 'mcp-client-2025-04-04'\n | 'mcp-client-2025-11-20'\n | 'dev-full-thinking-2025-05-14'\n | 'interleaved-thinking-2025-05-14'\n | 'code-execution-2025-05-22'\n | 'extended-cache-ttl-2025-04-11'\n | 'context-1m-2025-08-07'\n | 'context-management-2025-06-27'\n | 'model-context-window-exceeded-2025-08-26'\n | 'skills-2025-10-02';\n\nexport interface BetaAPIError {\n message: string;\n\n type: 'api_error';\n}\n\nexport interface BetaAuthenticationError {\n message: string;\n\n type: 'authentication_error';\n}\n\nexport interface BetaBillingError {\n message: string;\n\n type: 'billing_error';\n}\n\nexport type BetaError =\n | BetaInvalidRequestError\n | BetaAuthenticationError\n | BetaBillingError\n | BetaPermissionError\n | BetaNotFoundError\n | BetaRateLimitError\n | BetaGatewayTimeoutError\n | BetaAPIError\n | BetaOverloadedError;\n\nexport interface BetaErrorResponse {\n error: BetaError;\n\n request_id: string | null;\n\n type: 'error';\n}\n\nexport interface BetaGatewayTimeoutError {\n message: string;\n\n type: 'timeout_error';\n}\n\nexport interface BetaInvalidRequestError {\n message: string;\n\n type: 'invalid_request_error';\n}\n\nexport interface BetaNotFoundError {\n message: string;\n\n type: 'not_found_error';\n}\n\nexport interface BetaOverloadedError {\n message: string;\n\n type: 'overloaded_error';\n}\n\nexport interface BetaPermissionError {\n message: string;\n\n type: 'permission_error';\n}\n\nexport interface BetaRateLimitError {\n message: string;\n\n type: 'rate_limit_error';\n}\n\nBeta.Models = Models;\nBeta.Messages = Messages;\nBeta.Files = Files;\nBeta.Skills = Skills;\n\nexport declare namespace Beta {\n export {\n type AnthropicBeta as AnthropicBeta,\n type BetaAPIError as BetaAPIError,\n type BetaAuthenticationError as BetaAuthenticationError,\n type BetaBillingError as BetaBillingError,\n type BetaError as BetaError,\n type BetaErrorResponse as BetaErrorResponse,\n type BetaGatewayTimeoutError as BetaGatewayTimeoutError,\n type BetaInvalidRequestError as BetaInvalidRequestError,\n type BetaNotFoundError as BetaNotFoundError,\n type BetaOverloadedError as BetaOverloadedError,\n type BetaPermissionError as BetaPermissionError,\n type BetaRateLimitError as BetaRateLimitError,\n };\n\n export {\n Models as Models,\n type BetaModelInfo as BetaModelInfo,\n type BetaModelInfosPage as BetaModelInfosPage,\n type ModelRetrieveParams as ModelRetrieveParams,\n type ModelListParams as ModelListParams,\n };\n\n export {\n Messages as Messages,\n type BetaAllThinkingTurns as BetaAllThinkingTurns,\n type BetaBase64ImageSource as BetaBase64ImageSource,\n type BetaBase64PDFSource as BetaBase64PDFSource,\n type BetaBashCodeExecutionOutputBlock as BetaBashCodeExecutionOutputBlock,\n type BetaBashCodeExecutionOutputBlockParam as BetaBashCodeExecutionOutputBlockParam,\n type BetaBashCodeExecutionResultBlock as BetaBashCodeExecutionResultBlock,\n type BetaBashCodeExecutionResultBlockParam as BetaBashCodeExecutionResultBlockParam,\n type BetaBashCodeExecutionToolResultBlock as BetaBashCodeExecutionToolResultBlock,\n type BetaBashCodeExecutionToolResultBlockParam as BetaBashCodeExecutionToolResultBlockParam,\n type BetaBashCodeExecutionToolResultError as BetaBashCodeExecutionToolResultError,\n type BetaBashCodeExecutionToolResultErrorParam as BetaBashCodeExecutionToolResultErrorParam,\n type BetaCacheControlEphemeral as BetaCacheControlEphemeral,\n type BetaCacheCreation as BetaCacheCreation,\n type BetaCitationCharLocation as BetaCitationCharLocation,\n type BetaCitationCharLocationParam as BetaCitationCharLocationParam,\n type BetaCitationConfig as BetaCitationConfig,\n type BetaCitationContentBlockLocation as BetaCitationContentBlockLocation,\n type BetaCitationContentBlockLocationParam as BetaCitationContentBlockLocationParam,\n type BetaCitationPageLocation as BetaCitationPageLocation,\n type BetaCitationPageLocationParam as BetaCitationPageLocationParam,\n type BetaCitationSearchResultLocation as BetaCitationSearchResultLocation,\n type BetaCitationSearchResultLocationParam as BetaCitationSearchResultLocationParam,\n type BetaCitationWebSearchResultLocationParam as BetaCitationWebSearchResultLocationParam,\n type BetaCitationsConfigParam as BetaCitationsConfigParam,\n type BetaCitationsDelta as BetaCitationsDelta,\n type BetaCitationsWebSearchResultLocation as BetaCitationsWebSearchResultLocation,\n type BetaClearThinking20251015Edit as BetaClearThinking20251015Edit,\n type BetaClearThinking20251015EditResponse as BetaClearThinking20251015EditResponse,\n type BetaClearToolUses20250919Edit as BetaClearToolUses20250919Edit,\n type BetaClearToolUses20250919EditResponse as BetaClearToolUses20250919EditResponse,\n type BetaCodeExecutionOutputBlock as BetaCodeExecutionOutputBlock,\n type BetaCodeExecutionOutputBlockParam as BetaCodeExecutionOutputBlockParam,\n type BetaCodeExecutionResultBlock as BetaCodeExecutionResultBlock,\n type BetaCodeExecutionResultBlockParam as BetaCodeExecutionResultBlockParam,\n type BetaCodeExecutionTool20250522 as BetaCodeExecutionTool20250522,\n type BetaCodeExecutionTool20250825 as BetaCodeExecutionTool20250825,\n type BetaCodeExecutionToolResultBlock as BetaCodeExecutionToolResultBlock,\n type BetaCodeExecutionToolResultBlockContent as BetaCodeExecutionToolResultBlockContent,\n type BetaCodeExecutionToolResultBlockParam as BetaCodeExecutionToolResultBlockParam,\n type BetaCodeExecutionToolResultBlockParamContent as BetaCodeExecutionToolResultBlockParamContent,\n type BetaCodeExecutionToolResultError as BetaCodeExecutionToolResultError,\n type BetaCodeExecutionToolResultErrorCode as BetaCodeExecutionToolResultErrorCode,\n type BetaCodeExecutionToolResultErrorParam as BetaCodeExecutionToolResultErrorParam,\n type BetaContainer as BetaContainer,\n type BetaContainerParams as BetaContainerParams,\n type BetaContainerUploadBlock as BetaContainerUploadBlock,\n type BetaContainerUploadBlockParam as BetaContainerUploadBlockParam,\n type BetaContentBlock as BetaContentBlock,\n type BetaContentBlockParam as BetaContentBlockParam,\n type BetaContentBlockSource as BetaContentBlockSource,\n type BetaContentBlockSourceContent as BetaContentBlockSourceContent,\n type BetaContextManagementConfig as BetaContextManagementConfig,\n type BetaContextManagementResponse as BetaContextManagementResponse,\n type BetaCountTokensContextManagementResponse as BetaCountTokensContextManagementResponse,\n type BetaDirectCaller as BetaDirectCaller,\n type BetaDocumentBlock as BetaDocumentBlock,\n type BetaFileDocumentSource as BetaFileDocumentSource,\n type BetaFileImageSource as BetaFileImageSource,\n type BetaImageBlockParam as BetaImageBlockParam,\n type BetaInputJSONDelta as BetaInputJSONDelta,\n type BetaJSONOutputFormat as BetaJSONOutputFormat,\n type BetaInputTokensClearAtLeast as BetaInputTokensClearAtLeast,\n type BetaInputTokensTrigger as BetaInputTokensTrigger,\n type BetaMCPToolConfig as BetaMCPToolConfig,\n type BetaMCPToolDefaultConfig as BetaMCPToolDefaultConfig,\n type BetaMCPToolResultBlock as BetaMCPToolResultBlock,\n type BetaMCPToolUseBlock as BetaMCPToolUseBlock,\n type BetaMCPToolUseBlockParam as BetaMCPToolUseBlockParam,\n type BetaMCPToolset as BetaMCPToolset,\n type BetaMemoryTool20250818 as BetaMemoryTool20250818,\n type BetaMemoryTool20250818Command as BetaMemoryTool20250818Command,\n type BetaMemoryTool20250818CreateCommand as BetaMemoryTool20250818CreateCommand,\n type BetaMemoryTool20250818DeleteCommand as BetaMemoryTool20250818DeleteCommand,\n type BetaMemoryTool20250818InsertCommand as BetaMemoryTool20250818InsertCommand,\n type BetaMemoryTool20250818RenameCommand as BetaMemoryTool20250818RenameCommand,\n type BetaMemoryTool20250818StrReplaceCommand as BetaMemoryTool20250818StrReplaceCommand,\n type BetaMemoryTool20250818ViewCommand as BetaMemoryTool20250818ViewCommand,\n type BetaMessage as BetaMessage,\n type BetaMessageDeltaUsage as BetaMessageDeltaUsage,\n type BetaMessageParam as BetaMessageParam,\n type BetaMessageTokensCount as BetaMessageTokensCount,\n type BetaMetadata as BetaMetadata,\n type BetaOutputConfig as BetaOutputConfig,\n type BetaPlainTextSource as BetaPlainTextSource,\n type BetaRawContentBlockDelta as BetaRawContentBlockDelta,\n type BetaRawContentBlockDeltaEvent as BetaRawContentBlockDeltaEvent,\n type BetaRawContentBlockStartEvent as BetaRawContentBlockStartEvent,\n type BetaRawContentBlockStopEvent as BetaRawContentBlockStopEvent,\n type BetaRawMessageDeltaEvent as BetaRawMessageDeltaEvent,\n type BetaRawMessageStartEvent as BetaRawMessageStartEvent,\n type BetaRawMessageStopEvent as BetaRawMessageStopEvent,\n type BetaRawMessageStreamEvent as BetaRawMessageStreamEvent,\n type BetaRedactedThinkingBlock as BetaRedactedThinkingBlock,\n type BetaRedactedThinkingBlockParam as BetaRedactedThinkingBlockParam,\n type BetaRequestDocumentBlock as BetaRequestDocumentBlock,\n type BetaRequestMCPServerToolConfiguration as BetaRequestMCPServerToolConfiguration,\n type BetaRequestMCPServerURLDefinition as BetaRequestMCPServerURLDefinition,\n type BetaRequestMCPToolResultBlockParam as BetaRequestMCPToolResultBlockParam,\n type BetaSearchResultBlockParam as BetaSearchResultBlockParam,\n type BetaServerToolCaller as BetaServerToolCaller,\n type BetaServerToolUsage as BetaServerToolUsage,\n type BetaServerToolUseBlock as BetaServerToolUseBlock,\n type BetaServerToolUseBlockParam as BetaServerToolUseBlockParam,\n type BetaSignatureDelta as BetaSignatureDelta,\n type BetaSkill as BetaSkill,\n type BetaSkillParams as BetaSkillParams,\n type BetaStopReason as BetaStopReason,\n type BetaTextBlock as BetaTextBlock,\n type BetaTextBlockParam as BetaTextBlockParam,\n type BetaTextCitation as BetaTextCitation,\n type BetaTextCitationParam as BetaTextCitationParam,\n type BetaTextDelta as BetaTextDelta,\n type BetaTextEditorCodeExecutionCreateResultBlock as BetaTextEditorCodeExecutionCreateResultBlock,\n type BetaTextEditorCodeExecutionCreateResultBlockParam as BetaTextEditorCodeExecutionCreateResultBlockParam,\n type BetaTextEditorCodeExecutionStrReplaceResultBlock as BetaTextEditorCodeExecutionStrReplaceResultBlock,\n type BetaTextEditorCodeExecutionStrReplaceResultBlockParam as BetaTextEditorCodeExecutionStrReplaceResultBlockParam,\n type BetaTextEditorCodeExecutionToolResultBlock as BetaTextEditorCodeExecutionToolResultBlock,\n type BetaTextEditorCodeExecutionToolResultBlockParam as BetaTextEditorCodeExecutionToolResultBlockParam,\n type BetaTextEditorCodeExecutionToolResultError as BetaTextEditorCodeExecutionToolResultError,\n type BetaTextEditorCodeExecutionToolResultErrorParam as BetaTextEditorCodeExecutionToolResultErrorParam,\n type BetaTextEditorCodeExecutionViewResultBlock as BetaTextEditorCodeExecutionViewResultBlock,\n type BetaTextEditorCodeExecutionViewResultBlockParam as BetaTextEditorCodeExecutionViewResultBlockParam,\n type BetaThinkingBlock as BetaThinkingBlock,\n type BetaThinkingBlockParam as BetaThinkingBlockParam,\n type BetaThinkingConfigDisabled as BetaThinkingConfigDisabled,\n type BetaThinkingConfigEnabled as BetaThinkingConfigEnabled,\n type BetaThinkingConfigParam as BetaThinkingConfigParam,\n type BetaThinkingDelta as BetaThinkingDelta,\n type BetaThinkingTurns as BetaThinkingTurns,\n type BetaTool as BetaTool,\n type BetaToolBash20241022 as BetaToolBash20241022,\n type BetaToolBash20250124 as BetaToolBash20250124,\n type BetaToolChoice as BetaToolChoice,\n type BetaToolChoiceAny as BetaToolChoiceAny,\n type BetaToolChoiceAuto as BetaToolChoiceAuto,\n type BetaToolChoiceNone as BetaToolChoiceNone,\n type BetaToolChoiceTool as BetaToolChoiceTool,\n type BetaToolComputerUse20241022 as BetaToolComputerUse20241022,\n type BetaToolComputerUse20250124 as BetaToolComputerUse20250124,\n type BetaToolComputerUse20251124 as BetaToolComputerUse20251124,\n type BetaToolReferenceBlock as BetaToolReferenceBlock,\n type BetaToolReferenceBlockParam as BetaToolReferenceBlockParam,\n type BetaToolResultBlockParam as BetaToolResultBlockParam,\n type BetaToolTextEditor20241022 as BetaToolTextEditor20241022,\n type BetaToolTextEditor20250124 as BetaToolTextEditor20250124,\n type BetaToolTextEditor20250429 as BetaToolTextEditor20250429,\n type BetaToolTextEditor20250728 as BetaToolTextEditor20250728,\n type BetaToolUnion as BetaToolUnion,\n type BetaToolUseBlock as BetaToolUseBlock,\n type BetaToolUseBlockParam as BetaToolUseBlockParam,\n type BetaToolUsesKeep as BetaToolUsesKeep,\n type BetaToolUsesTrigger as BetaToolUsesTrigger,\n type BetaURLImageSource as BetaURLImageSource,\n type BetaURLPDFSource as BetaURLPDFSource,\n type BetaUsage as BetaUsage,\n type BetaWebFetchBlock as BetaWebFetchBlock,\n type BetaWebFetchBlockParam as BetaWebFetchBlockParam,\n type BetaWebFetchTool20250910 as BetaWebFetchTool20250910,\n type BetaWebFetchToolResultBlock as BetaWebFetchToolResultBlock,\n type BetaWebFetchToolResultBlockParam as BetaWebFetchToolResultBlockParam,\n type BetaWebFetchToolResultErrorBlock as BetaWebFetchToolResultErrorBlock,\n type BetaWebFetchToolResultErrorBlockParam as BetaWebFetchToolResultErrorBlockParam,\n type BetaWebFetchToolResultErrorCode as BetaWebFetchToolResultErrorCode,\n type BetaWebSearchResultBlock as BetaWebSearchResultBlock,\n type BetaWebSearchResultBlockParam as BetaWebSearchResultBlockParam,\n type BetaWebSearchTool20250305 as BetaWebSearchTool20250305,\n type BetaWebSearchToolRequestError as BetaWebSearchToolRequestError,\n type BetaWebSearchToolResultBlock as BetaWebSearchToolResultBlock,\n type BetaWebSearchToolResultBlockContent as BetaWebSearchToolResultBlockContent,\n type BetaWebSearchToolResultBlockParam as BetaWebSearchToolResultBlockParam,\n type BetaWebSearchToolResultBlockParamContent as BetaWebSearchToolResultBlockParamContent,\n type BetaWebSearchToolResultError as BetaWebSearchToolResultError,\n type BetaWebSearchToolResultErrorCode as BetaWebSearchToolResultErrorCode,\n type BetaBase64PDFBlock as BetaBase64PDFBlock,\n type MessageCreateParams as MessageCreateParams,\n type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n type MessageCountTokensParams as MessageCountTokensParams,\n };\n\n export {\n Files as Files,\n type DeletedFile as DeletedFile,\n type FileMetadata as FileMetadata,\n type FileMetadataPage as FileMetadataPage,\n type FileListParams as FileListParams,\n type FileDeleteParams as FileDeleteParams,\n type FileDownloadParams as FileDownloadParams,\n type FileRetrieveMetadataParams as FileRetrieveMetadataParams,\n type FileUploadParams as FileUploadParams,\n };\n\n export {\n Skills as Skills,\n type SkillCreateResponse as SkillCreateResponse,\n type SkillRetrieveResponse as SkillRetrieveResponse,\n type SkillListResponse as SkillListResponse,\n type SkillDeleteResponse as SkillDeleteResponse,\n type SkillListResponsesPageCursor as SkillListResponsesPageCursor,\n type SkillCreateParams as SkillCreateParams,\n type SkillRetrieveParams as SkillRetrieveParams,\n type SkillListParams as SkillListParams,\n type SkillDeleteParams as SkillDeleteParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../core/resource';\nimport * as CompletionsAPI from './completions';\nimport * as BetaAPI from './beta/beta';\nimport * as MessagesAPI from './messages/messages';\nimport { APIPromise } from '../core/api-promise';\nimport { Stream } from '../core/streaming';\nimport { buildHeaders } from '../internal/headers';\nimport { RequestOptions } from '../internal/request-options';\n\nexport class Completions extends APIResource {\n /**\n * [Legacy] Create a Text Completion.\n *\n * The Text Completions API is a legacy API. We recommend using the\n * [Messages API](https://docs.claude.com/en/api/messages) going forward.\n *\n * Future models and features will not be compatible with Text Completions. See our\n * [migration guide](https://docs.claude.com/en/api/migrating-from-text-completions-to-messages)\n * for guidance in migrating from Text Completions to Messages.\n *\n * @example\n * ```ts\n * const completion = await client.completions.create({\n * max_tokens_to_sample: 256,\n * model: 'claude-opus-4-5-20251101',\n * prompt: '\\n\\nHuman: Hello, world!\\n\\nAssistant:',\n * });\n * ```\n */\n create(params: CompletionCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Completion>;\n create(params: CompletionCreateParamsStreaming, options?: RequestOptions): APIPromise<Stream<Completion>>;\n create(\n params: CompletionCreateParamsBase,\n options?: RequestOptions,\n ): APIPromise<Stream<Completion> | Completion>;\n create(\n params: CompletionCreateParams,\n options?: RequestOptions,\n ): APIPromise<Completion> | APIPromise<Stream<Completion>> {\n const { betas, ...body } = params;\n return this._client.post('/v1/complete', {\n body,\n timeout: (this._client as any)._options.timeout ?? 600000,\n ...options,\n headers: buildHeaders([\n { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n options?.headers,\n ]),\n stream: params.stream ?? false,\n }) as APIPromise<Completion> | APIPromise<Stream<Completion>>;\n }\n}\n\nexport interface Completion {\n /**\n * Unique object identifier.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * The resulting completion up to and excluding the stop sequences.\n */\n completion: string;\n\n /**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: MessagesAPI.Model;\n\n /**\n * The reason that we stopped.\n *\n * This may be one the following values:\n *\n * - `\"stop_sequence\"`: we reached a stop sequence — either provided by you via the\n * `stop_sequences` parameter, or a stop sequence built into the model\n * - `\"max_tokens\"`: we exceeded `max_tokens_to_sample` or the model's maximum\n */\n stop_reason: string | null;\n\n /**\n * Object type.\n *\n * For Text Completions, this is always `\"completion\"`.\n */\n type: 'completion';\n}\n\nexport type CompletionCreateParams = CompletionCreateParamsNonStreaming | CompletionCreateParamsStreaming;\n\nexport interface CompletionCreateParamsBase {\n /**\n * Body param: The maximum number of tokens to generate before stopping.\n *\n * Note that our models may stop _before_ reaching this maximum. This parameter\n * only specifies the absolute maximum number of tokens to generate.\n */\n max_tokens_to_sample: number;\n\n /**\n * Body param: The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: MessagesAPI.Model;\n\n /**\n * Body param: The prompt that you want Claude to complete.\n *\n * For proper response generation you will need to format your prompt using\n * alternating `\\n\\nHuman:` and `\\n\\nAssistant:` conversational turns. For example:\n *\n * ```\n * \"\\n\\nHuman: {userQuestion}\\n\\nAssistant:\"\n * ```\n *\n * See [prompt validation](https://docs.claude.com/en/api/prompt-validation) and\n * our guide to [prompt design](https://docs.claude.com/en/docs/intro-to-prompting)\n * for more details.\n */\n prompt: string;\n\n /**\n * Body param: An object describing metadata about the request.\n */\n metadata?: MessagesAPI.Metadata;\n\n /**\n * Body param: Sequences that will cause the model to stop generating.\n *\n * Our models stop on `\"\\n\\nHuman:\"`, and may include additional built-in stop\n * sequences in the future. By providing the stop_sequences parameter, you may\n * include additional strings that will cause the model to stop generating.\n */\n stop_sequences?: Array<string>;\n\n /**\n * Body param: Whether to incrementally stream the response using server-sent\n * events.\n *\n * See [streaming](https://docs.claude.com/en/api/streaming) for details.\n */\n stream?: boolean;\n\n /**\n * Body param: Amount of randomness injected into the response.\n *\n * Defaults to `1.0`. Ranges from `0.0` to `1.0`. Use `temperature` closer to `0.0`\n * for analytical / multiple choice, and closer to `1.0` for creative and\n * generative tasks.\n *\n * Note that even with `temperature` of `0.0`, the results will not be fully\n * deterministic.\n */\n temperature?: number;\n\n /**\n * Body param: Only sample from the top K options for each subsequent token.\n *\n * Used to remove \"long tail\" low probability responses.\n * [Learn more technical details here](https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277).\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_k?: number;\n\n /**\n * Body param: Use nucleus sampling.\n *\n * In nucleus sampling, we compute the cumulative distribution over all the options\n * for each subsequent token in decreasing probability order and cut it off once it\n * reaches a particular probability specified by `top_p`. You should either alter\n * `temperature` or `top_p`, but not both.\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_p?: number;\n\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport namespace CompletionCreateParams {\n /**\n * @deprecated use `Anthropic.Messages.Metadata` instead\n */\n export type Metadata = MessagesAPI.Metadata;\n\n export type CompletionCreateParamsNonStreaming = CompletionsAPI.CompletionCreateParamsNonStreaming;\n export type CompletionCreateParamsStreaming = CompletionsAPI.CompletionCreateParamsStreaming;\n}\n\nexport interface CompletionCreateParamsNonStreaming extends CompletionCreateParamsBase {\n /**\n * Body param: Whether to incrementally stream the response using server-sent\n * events.\n *\n * See [streaming](https://docs.claude.com/en/api/streaming) for details.\n */\n stream?: false;\n}\n\nexport interface CompletionCreateParamsStreaming extends CompletionCreateParamsBase {\n /**\n * Body param: Whether to incrementally stream the response using server-sent\n * events.\n *\n * See [streaming](https://docs.claude.com/en/api/streaming) for details.\n */\n stream: true;\n}\n\nexport declare namespace Completions {\n export {\n type Completion as Completion,\n type CompletionCreateParams as CompletionCreateParams,\n type CompletionCreateParamsNonStreaming as CompletionCreateParamsNonStreaming,\n type CompletionCreateParamsStreaming as CompletionCreateParamsStreaming,\n };\n}\n","import { isAbortError } from '../internal/errors';\nimport { AnthropicError, APIUserAbortError } from '../error';\nimport {\n type ContentBlock,\n Messages,\n type Message,\n type MessageStreamEvent,\n type MessageParam,\n type MessageCreateParams,\n type MessageCreateParamsBase,\n type TextBlock,\n type TextCitation,\n type ToolUseBlock,\n type ServerToolUseBlock,\n} from '../resources/messages';\nimport { Stream } from '../streaming';\nimport { partialParse } from '../_vendor/partial-json-parser/parser';\nimport { RequestOptions } from '../internal/request-options';\n\nexport interface MessageStreamEvents {\n connect: () => void;\n streamEvent: (event: MessageStreamEvent, snapshot: Message) => void;\n text: (textDelta: string, textSnapshot: string) => void;\n citation: (citation: TextCitation, citationsSnapshot: TextCitation[]) => void;\n inputJson: (partialJson: string, jsonSnapshot: unknown) => void;\n thinking: (thinkingDelta: string, thinkingSnapshot: string) => void;\n signature: (signature: string) => void;\n message: (message: Message) => void;\n contentBlock: (content: ContentBlock) => void;\n finalMessage: (message: Message) => void;\n error: (error: AnthropicError) => void;\n abort: (error: APIUserAbortError) => void;\n end: () => void;\n}\n\ntype MessageStreamEventListeners<Event extends keyof MessageStreamEvents> = {\n listener: MessageStreamEvents[Event];\n once?: boolean;\n}[];\n\nconst JSON_BUF_PROPERTY = '__json_buf';\n\nexport type TracksToolInput = ToolUseBlock | ServerToolUseBlock;\n\nfunction tracksToolInput(content: ContentBlock): content is TracksToolInput {\n return content.type === 'tool_use' || content.type === 'server_tool_use';\n}\n\nexport class MessageStream implements AsyncIterable<MessageStreamEvent> {\n messages: MessageParam[] = [];\n receivedMessages: Message[] = [];\n #currentMessageSnapshot: Message | undefined;\n\n controller: AbortController = new AbortController();\n\n #connectedPromise: Promise<Response | null>;\n #resolveConnectedPromise: (response: Response | null) => void = () => {};\n #rejectConnectedPromise: (error: AnthropicError) => void = () => {};\n\n #endPromise: Promise<void>;\n #resolveEndPromise: () => void = () => {};\n #rejectEndPromise: (error: AnthropicError) => void = () => {};\n\n #listeners: { [Event in keyof MessageStreamEvents]?: MessageStreamEventListeners<Event> } = {};\n\n #ended = false;\n #errored = false;\n #aborted = false;\n #catchingPromiseCreated = false;\n #response: Response | null | undefined;\n #request_id: string | null | undefined;\n\n constructor() {\n this.#connectedPromise = new Promise<Response | null>((resolve, reject) => {\n this.#resolveConnectedPromise = resolve;\n this.#rejectConnectedPromise = reject;\n });\n\n this.#endPromise = new Promise<void>((resolve, reject) => {\n this.#resolveEndPromise = resolve;\n this.#rejectEndPromise = reject;\n });\n\n // Don't let these promises cause unhandled rejection errors.\n // we will manually cause an unhandled rejection error later\n // if the user hasn't registered any error listener or called\n // any promise-returning method.\n this.#connectedPromise.catch(() => {});\n this.#endPromise.catch(() => {});\n }\n\n get response(): Response | null | undefined {\n return this.#response;\n }\n\n get request_id(): string | null | undefined {\n return this.#request_id;\n }\n\n /**\n * Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,\n * returned vie the `request-id` header which is useful for debugging requests and resporting\n * issues to Anthropic.\n *\n * This is the same as the `APIPromise.withResponse()` method.\n *\n * This method will raise an error if you created the stream using `MessageStream.fromReadableStream`\n * as no `Response` is available.\n */\n async withResponse(): Promise<{\n data: MessageStream;\n response: Response;\n request_id: string | null | undefined;\n }> {\n const response = await this.#connectedPromise;\n if (!response) {\n throw new Error('Could not resolve a `Response` object');\n }\n\n return {\n data: this,\n response,\n request_id: response.headers.get('request-id'),\n };\n }\n\n /**\n * Intended for use on the frontend, consuming a stream produced with\n * `.toReadableStream()` on the backend.\n *\n * Note that messages sent to the model do not appear in `.on('message')`\n * in this context.\n */\n static fromReadableStream(stream: ReadableStream): MessageStream {\n const runner = new MessageStream();\n runner._run(() => runner._fromReadableStream(stream));\n return runner;\n }\n\n static createMessage(\n messages: Messages,\n params: MessageCreateParamsBase,\n options?: RequestOptions,\n ): MessageStream {\n const runner = new MessageStream();\n for (const message of params.messages) {\n runner._addMessageParam(message);\n }\n runner._run(() =>\n runner._createMessage(\n messages,\n { ...params, stream: true },\n { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } },\n ),\n );\n return runner;\n }\n\n protected _run(executor: () => Promise<any>) {\n executor().then(() => {\n this._emitFinal();\n this._emit('end');\n }, this.#handleError);\n }\n\n protected _addMessageParam(message: MessageParam) {\n this.messages.push(message);\n }\n\n protected _addMessage(message: Message, emit = true) {\n this.receivedMessages.push(message);\n if (emit) {\n this._emit('message', message);\n }\n }\n\n protected async _createMessage(\n messages: Messages,\n params: MessageCreateParams,\n options?: RequestOptions,\n ): Promise<void> {\n const signal = options?.signal;\n let abortHandler: (() => void) | undefined;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n abortHandler = this.controller.abort.bind(this.controller);\n signal.addEventListener('abort', abortHandler);\n }\n try {\n this.#beginRequest();\n const { response, data: stream } = await messages\n .create({ ...params, stream: true }, { ...options, signal: this.controller.signal })\n .withResponse();\n this._connected(response);\n for await (const event of stream) {\n this.#addStreamEvent(event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n this.#endRequest();\n } finally {\n if (signal && abortHandler) {\n signal.removeEventListener('abort', abortHandler);\n }\n }\n }\n\n protected _connected(response: Response | null) {\n if (this.ended) return;\n this.#response = response;\n this.#request_id = response?.headers.get('request-id');\n this.#resolveConnectedPromise(response);\n this._emit('connect');\n }\n\n get ended(): boolean {\n return this.#ended;\n }\n\n get errored(): boolean {\n return this.#errored;\n }\n\n get aborted(): boolean {\n return this.#aborted;\n }\n\n abort() {\n this.controller.abort();\n }\n\n /**\n * Adds the listener function to the end of the listeners array for the event.\n * No checks are made to see if the listener has already been added. Multiple calls passing\n * the same combination of event and listener will result in the listener being added, and\n * called, multiple times.\n * @returns this MessageStream, so that calls can be chained\n */\n on<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n const listeners: MessageStreamEventListeners<Event> =\n this.#listeners[event] || (this.#listeners[event] = []);\n listeners.push({ listener });\n return this;\n }\n\n /**\n * Removes the specified listener from the listener array for the event.\n * off() will remove, at most, one instance of a listener from the listener array. If any single\n * listener has been added multiple times to the listener array for the specified event, then\n * off() must be called multiple times to remove each instance.\n * @returns this MessageStream, so that calls can be chained\n */\n off<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n const listeners = this.#listeners[event];\n if (!listeners) return this;\n const index = listeners.findIndex((l) => l.listener === listener);\n if (index >= 0) listeners.splice(index, 1);\n return this;\n }\n\n /**\n * Adds a one-time listener function for the event. The next time the event is triggered,\n * this listener is removed and then invoked.\n * @returns this MessageStream, so that calls can be chained\n */\n once<Event extends keyof MessageStreamEvents>(event: Event, listener: MessageStreamEvents[Event]): this {\n const listeners: MessageStreamEventListeners<Event> =\n this.#listeners[event] || (this.#listeners[event] = []);\n listeners.push({ listener, once: true });\n return this;\n }\n\n /**\n * This is similar to `.once()`, but returns a Promise that resolves the next time\n * the event is triggered, instead of calling a listener callback.\n * @returns a Promise that resolves the next time given event is triggered,\n * or rejects if an error is emitted. (If you request the 'error' event,\n * returns a promise that resolves with the error).\n *\n * Example:\n *\n * const message = await stream.emitted('message') // rejects if the stream errors\n */\n emitted<Event extends keyof MessageStreamEvents>(\n event: Event,\n ): Promise<\n Parameters<MessageStreamEvents[Event]> extends [infer Param] ? Param\n : Parameters<MessageStreamEvents[Event]> extends [] ? void\n : Parameters<MessageStreamEvents[Event]>\n > {\n return new Promise((resolve, reject) => {\n this.#catchingPromiseCreated = true;\n if (event !== 'error') this.once('error', reject);\n this.once(event, resolve as any);\n });\n }\n\n async done(): Promise<void> {\n this.#catchingPromiseCreated = true;\n await this.#endPromise;\n }\n\n get currentMessage(): Message | undefined {\n return this.#currentMessageSnapshot;\n }\n\n #getFinalMessage(): Message {\n if (this.receivedMessages.length === 0) {\n throw new AnthropicError('stream ended without producing a Message with role=assistant');\n }\n return this.receivedMessages.at(-1)!;\n }\n\n /**\n * @returns a promise that resolves with the the final assistant Message response,\n * or rejects if an error occurred or the stream ended prematurely without producing a Message.\n */\n async finalMessage(): Promise<Message> {\n await this.done();\n return this.#getFinalMessage();\n }\n\n #getFinalText(): string {\n if (this.receivedMessages.length === 0) {\n throw new AnthropicError('stream ended without producing a Message with role=assistant');\n }\n const textBlocks = this.receivedMessages\n .at(-1)!\n .content.filter((block): block is TextBlock => block.type === 'text')\n .map((block) => block.text);\n if (textBlocks.length === 0) {\n throw new AnthropicError('stream ended without producing a content block with type=text');\n }\n return textBlocks.join(' ');\n }\n\n /**\n * @returns a promise that resolves with the the final assistant Message's text response, concatenated\n * together if there are more than one text blocks.\n * Rejects if an error occurred or the stream ended prematurely without producing a Message.\n */\n async finalText(): Promise<string> {\n await this.done();\n return this.#getFinalText();\n }\n\n #handleError = (error: unknown) => {\n this.#errored = true;\n if (isAbortError(error)) {\n error = new APIUserAbortError();\n }\n if (error instanceof APIUserAbortError) {\n this.#aborted = true;\n return this._emit('abort', error);\n }\n if (error instanceof AnthropicError) {\n return this._emit('error', error);\n }\n if (error instanceof Error) {\n const anthropicError: AnthropicError = new AnthropicError(error.message);\n // @ts-ignore\n anthropicError.cause = error;\n return this._emit('error', anthropicError);\n }\n return this._emit('error', new AnthropicError(String(error)));\n };\n\n protected _emit<Event extends keyof MessageStreamEvents>(\n event: Event,\n ...args: Parameters<MessageStreamEvents[Event]>\n ) {\n // make sure we don't emit any MessageStreamEvents after end\n if (this.#ended) return;\n\n if (event === 'end') {\n this.#ended = true;\n this.#resolveEndPromise();\n }\n\n const listeners: MessageStreamEventListeners<Event> | undefined = this.#listeners[event];\n if (listeners) {\n this.#listeners[event] = listeners.filter((l) => !l.once) as any;\n listeners.forEach(({ listener }: any) => listener(...args));\n }\n\n if (event === 'abort') {\n const error = args[0] as APIUserAbortError;\n if (!this.#catchingPromiseCreated && !listeners?.length) {\n Promise.reject(error);\n }\n this.#rejectConnectedPromise(error);\n this.#rejectEndPromise(error);\n this._emit('end');\n return;\n }\n\n if (event === 'error') {\n // NOTE: _emit('error', error) should only be called from #handleError().\n\n const error = args[0] as AnthropicError;\n if (!this.#catchingPromiseCreated && !listeners?.length) {\n // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n // If you are seeing stack traces here, make sure to handle errors via either:\n // - runner.on('error', () => ...)\n // - await runner.done()\n // - await runner.final...()\n // - etc.\n Promise.reject(error);\n }\n this.#rejectConnectedPromise(error);\n this.#rejectEndPromise(error);\n this._emit('end');\n }\n }\n\n protected _emitFinal() {\n const finalMessage = this.receivedMessages.at(-1);\n if (finalMessage) {\n this._emit('finalMessage', this.#getFinalMessage());\n }\n }\n\n #beginRequest() {\n if (this.ended) return;\n this.#currentMessageSnapshot = undefined;\n }\n #addStreamEvent(event: MessageStreamEvent) {\n if (this.ended) return;\n const messageSnapshot = this.#accumulateMessage(event);\n this._emit('streamEvent', event, messageSnapshot);\n\n switch (event.type) {\n case 'content_block_delta': {\n const content = messageSnapshot.content.at(-1)!;\n switch (event.delta.type) {\n case 'text_delta': {\n if (content.type === 'text') {\n this._emit('text', event.delta.text, content.text || '');\n }\n break;\n }\n case 'citations_delta': {\n if (content.type === 'text') {\n this._emit('citation', event.delta.citation, content.citations ?? []);\n }\n break;\n }\n case 'input_json_delta': {\n if (tracksToolInput(content) && content.input) {\n this._emit('inputJson', event.delta.partial_json, content.input);\n }\n break;\n }\n case 'thinking_delta': {\n if (content.type === 'thinking') {\n this._emit('thinking', event.delta.thinking, content.thinking);\n }\n break;\n }\n case 'signature_delta': {\n if (content.type === 'thinking') {\n this._emit('signature', content.signature);\n }\n break;\n }\n default:\n checkNever(event.delta);\n }\n break;\n }\n case 'message_stop': {\n this._addMessageParam(messageSnapshot);\n this._addMessage(messageSnapshot, true);\n break;\n }\n case 'content_block_stop': {\n this._emit('contentBlock', messageSnapshot.content.at(-1)!);\n break;\n }\n case 'message_start': {\n this.#currentMessageSnapshot = messageSnapshot;\n break;\n }\n case 'content_block_start':\n case 'message_delta':\n break;\n }\n }\n #endRequest(): Message {\n if (this.ended) {\n throw new AnthropicError(`stream has ended, this shouldn't happen`);\n }\n const snapshot = this.#currentMessageSnapshot;\n if (!snapshot) {\n throw new AnthropicError(`request ended without sending any chunks`);\n }\n this.#currentMessageSnapshot = undefined;\n return snapshot;\n }\n\n protected async _fromReadableStream(\n readableStream: ReadableStream,\n options?: RequestOptions,\n ): Promise<void> {\n const signal = options?.signal;\n let abortHandler: (() => void) | undefined;\n if (signal) {\n if (signal.aborted) this.controller.abort();\n abortHandler = this.controller.abort.bind(this.controller);\n signal.addEventListener('abort', abortHandler);\n }\n try {\n this.#beginRequest();\n this._connected(null);\n const stream = Stream.fromReadableStream<MessageStreamEvent>(readableStream, this.controller);\n for await (const event of stream) {\n this.#addStreamEvent(event);\n }\n if (stream.controller.signal?.aborted) {\n throw new APIUserAbortError();\n }\n this.#endRequest();\n } finally {\n if (signal && abortHandler) {\n signal.removeEventListener('abort', abortHandler);\n }\n }\n }\n\n /**\n * Mutates this.#currentMessage with the current event. Handling the accumulation of multiple messages\n * will be needed to be handled by the caller, this method will throw if you try to accumulate for multiple\n * messages.\n */\n #accumulateMessage(event: MessageStreamEvent): Message {\n let snapshot = this.#currentMessageSnapshot;\n\n if (event.type === 'message_start') {\n if (snapshot) {\n throw new AnthropicError(`Unexpected event order, got ${event.type} before receiving \"message_stop\"`);\n }\n return event.message;\n }\n\n if (!snapshot) {\n throw new AnthropicError(`Unexpected event order, got ${event.type} before \"message_start\"`);\n }\n\n switch (event.type) {\n case 'message_stop':\n return snapshot;\n case 'message_delta':\n snapshot.stop_reason = event.delta.stop_reason;\n snapshot.stop_sequence = event.delta.stop_sequence;\n snapshot.usage.output_tokens = event.usage.output_tokens;\n\n // Update other usage fields if they exist in the event\n if (event.usage.input_tokens != null) {\n snapshot.usage.input_tokens = event.usage.input_tokens;\n }\n\n if (event.usage.cache_creation_input_tokens != null) {\n snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;\n }\n\n if (event.usage.cache_read_input_tokens != null) {\n snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;\n }\n\n if (event.usage.server_tool_use != null) {\n snapshot.usage.server_tool_use = event.usage.server_tool_use;\n }\n\n return snapshot;\n case 'content_block_start':\n snapshot.content.push({ ...event.content_block });\n return snapshot;\n case 'content_block_delta': {\n const snapshotContent = snapshot.content.at(event.index);\n\n switch (event.delta.type) {\n case 'text_delta': {\n if (snapshotContent?.type === 'text') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n text: (snapshotContent.text || '') + event.delta.text,\n };\n }\n break;\n }\n case 'citations_delta': {\n if (snapshotContent?.type === 'text') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n citations: [...(snapshotContent.citations ?? []), event.delta.citation],\n };\n }\n break;\n }\n case 'input_json_delta': {\n if (snapshotContent && tracksToolInput(snapshotContent)) {\n // we need to keep track of the raw JSON string as well so that we can\n // re-parse it for each delta, for now we just store it as an untyped\n // non-enumerable property on the snapshot\n let jsonBuf = (snapshotContent as any)[JSON_BUF_PROPERTY] || '';\n jsonBuf += event.delta.partial_json;\n\n const newContent = { ...snapshotContent };\n Object.defineProperty(newContent, JSON_BUF_PROPERTY, {\n value: jsonBuf,\n enumerable: false,\n writable: true,\n });\n\n if (jsonBuf) {\n newContent.input = partialParse(jsonBuf);\n }\n snapshot.content[event.index] = newContent;\n }\n break;\n }\n case 'thinking_delta': {\n if (snapshotContent?.type === 'thinking') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n thinking: snapshotContent.thinking + event.delta.thinking,\n };\n }\n break;\n }\n case 'signature_delta': {\n if (snapshotContent?.type === 'thinking') {\n snapshot.content[event.index] = {\n ...snapshotContent,\n signature: event.delta.signature,\n };\n }\n break;\n }\n default:\n checkNever(event.delta);\n }\n\n return snapshot;\n }\n case 'content_block_stop':\n return snapshot;\n }\n }\n\n [Symbol.asyncIterator](): AsyncIterator<MessageStreamEvent> {\n const pushQueue: MessageStreamEvent[] = [];\n const readQueue: {\n resolve: (chunk: MessageStreamEvent | undefined) => void;\n reject: (error: unknown) => void;\n }[] = [];\n let done = false;\n\n this.on('streamEvent', (event) => {\n const reader = readQueue.shift();\n if (reader) {\n reader.resolve(event);\n } else {\n pushQueue.push(event);\n }\n });\n\n this.on('end', () => {\n done = true;\n for (const reader of readQueue) {\n reader.resolve(undefined);\n }\n readQueue.length = 0;\n });\n\n this.on('abort', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n\n this.on('error', (err) => {\n done = true;\n for (const reader of readQueue) {\n reader.reject(err);\n }\n readQueue.length = 0;\n });\n\n return {\n next: async (): Promise<IteratorResult<MessageStreamEvent>> => {\n if (!pushQueue.length) {\n if (done) {\n return { value: undefined, done: true };\n }\n return new Promise<MessageStreamEvent | undefined>((resolve, reject) =>\n readQueue.push({ resolve, reject }),\n ).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n }\n const chunk = pushQueue.shift()!;\n return { value: chunk, done: false };\n },\n return: async () => {\n this.abort();\n return { value: undefined, done: true };\n },\n };\n }\n\n toReadableStream(): ReadableStream {\n const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n return stream.toReadableStream();\n }\n}\n\n// used to ensure exhaustive case matching without throwing a runtime error\nfunction checkNever(x: never) {}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../../core/resource';\nimport * as Shared from '../shared';\nimport * as MessagesAPI from './messages';\nimport { APIPromise } from '../../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../../core/pagination';\nimport { buildHeaders } from '../../internal/headers';\nimport { RequestOptions } from '../../internal/request-options';\nimport { JSONLDecoder } from '../../internal/decoders/jsonl';\nimport { AnthropicError } from '../../error';\nimport { path } from '../../internal/utils/path';\n\nexport class Batches extends APIResource {\n /**\n * Send a batch of Message creation requests.\n *\n * The Message Batches API can be used to process multiple Messages API requests at\n * once. Once a Message Batch is created, it begins processing immediately. Batches\n * can take up to 24 hours to complete.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const messageBatch = await client.messages.batches.create({\n * requests: [\n * {\n * custom_id: 'my-custom-id-1',\n * params: {\n * max_tokens: 1024,\n * messages: [\n * { content: 'Hello, world', role: 'user' },\n * ],\n * model: 'claude-sonnet-4-5-20250929',\n * },\n * },\n * ],\n * });\n * ```\n */\n create(body: BatchCreateParams, options?: RequestOptions): APIPromise<MessageBatch> {\n return this._client.post('/v1/messages/batches', { body, ...options });\n }\n\n /**\n * This endpoint is idempotent and can be used to poll for Message Batch\n * completion. To access the results of a Message Batch, make a request to the\n * `results_url` field in the response.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const messageBatch = await client.messages.batches.retrieve(\n * 'message_batch_id',\n * );\n * ```\n */\n retrieve(messageBatchID: string, options?: RequestOptions): APIPromise<MessageBatch> {\n return this._client.get(path`/v1/messages/batches/${messageBatchID}`, options);\n }\n\n /**\n * List all Message Batches within a Workspace. Most recently created batches are\n * returned first.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * // Automatically fetches more pages as needed.\n * for await (const messageBatch of client.messages.batches.list()) {\n * // ...\n * }\n * ```\n */\n list(\n query: BatchListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<MessageBatchesPage, MessageBatch> {\n return this._client.getAPIList('/v1/messages/batches', Page<MessageBatch>, { query, ...options });\n }\n\n /**\n * Delete a Message Batch.\n *\n * Message Batches can only be deleted once they've finished processing. If you'd\n * like to delete an in-progress batch, you must first cancel it.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const deletedMessageBatch =\n * await client.messages.batches.delete('message_batch_id');\n * ```\n */\n delete(messageBatchID: string, options?: RequestOptions): APIPromise<DeletedMessageBatch> {\n return this._client.delete(path`/v1/messages/batches/${messageBatchID}`, options);\n }\n\n /**\n * Batches may be canceled any time before processing ends. Once cancellation is\n * initiated, the batch enters a `canceling` state, at which time the system may\n * complete any in-progress, non-interruptible requests before finalizing\n * cancellation.\n *\n * The number of canceled requests is specified in `request_counts`. To determine\n * which requests were canceled, check the individual results within the batch.\n * Note that cancellation may not result in any canceled requests if they were\n * non-interruptible.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const messageBatch = await client.messages.batches.cancel(\n * 'message_batch_id',\n * );\n * ```\n */\n cancel(messageBatchID: string, options?: RequestOptions): APIPromise<MessageBatch> {\n return this._client.post(path`/v1/messages/batches/${messageBatchID}/cancel`, options);\n }\n\n /**\n * Streams the results of a Message Batch as a `.jsonl` file.\n *\n * Each line in the file is a JSON object containing the result of a single request\n * in the Message Batch. Results are not guaranteed to be in the same order as\n * requests. Use the `custom_id` field to match results to requests.\n *\n * Learn more about the Message Batches API in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/batch-processing)\n *\n * @example\n * ```ts\n * const messageBatchIndividualResponse =\n * await client.messages.batches.results('message_batch_id');\n * ```\n */\n async results(\n messageBatchID: string,\n options?: RequestOptions,\n ): Promise<JSONLDecoder<MessageBatchIndividualResponse>> {\n const batch = await this.retrieve(messageBatchID);\n if (!batch.results_url) {\n throw new AnthropicError(\n `No batch \\`results_url\\`; Has it finished processing? ${batch.processing_status} - ${batch.id}`,\n );\n }\n\n return this._client\n .get(batch.results_url, {\n ...options,\n headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n stream: true,\n __binaryResponse: true,\n })\n ._thenUnwrap((_, props) => JSONLDecoder.fromResponse(props.response, props.controller)) as APIPromise<\n JSONLDecoder<MessageBatchIndividualResponse>\n >;\n }\n}\n\nexport type MessageBatchesPage = Page<MessageBatch>;\n\nexport interface DeletedMessageBatch {\n /**\n * ID of the Message Batch.\n */\n id: string;\n\n /**\n * Deleted object type.\n *\n * For Message Batches, this is always `\"message_batch_deleted\"`.\n */\n type: 'message_batch_deleted';\n}\n\nexport interface MessageBatch {\n /**\n * Unique object identifier.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * RFC 3339 datetime string representing the time at which the Message Batch was\n * archived and its results became unavailable.\n */\n archived_at: string | null;\n\n /**\n * RFC 3339 datetime string representing the time at which cancellation was\n * initiated for the Message Batch. Specified only if cancellation was initiated.\n */\n cancel_initiated_at: string | null;\n\n /**\n * RFC 3339 datetime string representing the time at which the Message Batch was\n * created.\n */\n created_at: string;\n\n /**\n * RFC 3339 datetime string representing the time at which processing for the\n * Message Batch ended. Specified only once processing ends.\n *\n * Processing ends when every request in a Message Batch has either succeeded,\n * errored, canceled, or expired.\n */\n ended_at: string | null;\n\n /**\n * RFC 3339 datetime string representing the time at which the Message Batch will\n * expire and end processing, which is 24 hours after creation.\n */\n expires_at: string;\n\n /**\n * Processing status of the Message Batch.\n */\n processing_status: 'in_progress' | 'canceling' | 'ended';\n\n /**\n * Tallies requests within the Message Batch, categorized by their status.\n *\n * Requests start as `processing` and move to one of the other statuses only once\n * processing of the entire batch ends. The sum of all values always matches the\n * total number of requests in the batch.\n */\n request_counts: MessageBatchRequestCounts;\n\n /**\n * URL to a `.jsonl` file containing the results of the Message Batch requests.\n * Specified only once processing ends.\n *\n * Results in the file are not guaranteed to be in the same order as requests. Use\n * the `custom_id` field to match results to requests.\n */\n results_url: string | null;\n\n /**\n * Object type.\n *\n * For Message Batches, this is always `\"message_batch\"`.\n */\n type: 'message_batch';\n}\n\nexport interface MessageBatchCanceledResult {\n type: 'canceled';\n}\n\nexport interface MessageBatchErroredResult {\n error: Shared.ErrorResponse;\n\n type: 'errored';\n}\n\nexport interface MessageBatchExpiredResult {\n type: 'expired';\n}\n\n/**\n * This is a single line in the response `.jsonl` file and does not represent the\n * response as a whole.\n */\nexport interface MessageBatchIndividualResponse {\n /**\n * Developer-provided ID created for each request in a Message Batch. Useful for\n * matching results to requests, as results may be given out of request order.\n *\n * Must be unique for each request within the Message Batch.\n */\n custom_id: string;\n\n /**\n * Processing result for this request.\n *\n * Contains a Message output if processing was successful, an error response if\n * processing failed, or the reason why processing was not attempted, such as\n * cancellation or expiration.\n */\n result: MessageBatchResult;\n}\n\nexport interface MessageBatchRequestCounts {\n /**\n * Number of requests in the Message Batch that have been canceled.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n canceled: number;\n\n /**\n * Number of requests in the Message Batch that encountered an error.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n errored: number;\n\n /**\n * Number of requests in the Message Batch that have expired.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n expired: number;\n\n /**\n * Number of requests in the Message Batch that are processing.\n */\n processing: number;\n\n /**\n * Number of requests in the Message Batch that have completed successfully.\n *\n * This is zero until processing of the entire Message Batch has ended.\n */\n succeeded: number;\n}\n\n/**\n * Processing result for this request.\n *\n * Contains a Message output if processing was successful, an error response if\n * processing failed, or the reason why processing was not attempted, such as\n * cancellation or expiration.\n */\nexport type MessageBatchResult =\n | MessageBatchSucceededResult\n | MessageBatchErroredResult\n | MessageBatchCanceledResult\n | MessageBatchExpiredResult;\n\nexport interface MessageBatchSucceededResult {\n message: MessagesAPI.Message;\n\n type: 'succeeded';\n}\n\nexport interface BatchCreateParams {\n /**\n * List of requests for prompt completion. Each is an individual request to create\n * a Message.\n */\n requests: Array<BatchCreateParams.Request>;\n}\n\nexport namespace BatchCreateParams {\n export interface Request {\n /**\n * Developer-provided ID created for each request in a Message Batch. Useful for\n * matching results to requests, as results may be given out of request order.\n *\n * Must be unique for each request within the Message Batch.\n */\n custom_id: string;\n\n /**\n * Messages API creation parameters for the individual request.\n *\n * See the [Messages API reference](https://docs.claude.com/en/api/messages) for\n * full documentation on available parameters.\n */\n params: MessagesAPI.MessageCreateParamsNonStreaming;\n }\n}\n\nexport interface BatchListParams extends PageParams {}\n\nexport declare namespace Batches {\n export {\n type DeletedMessageBatch as DeletedMessageBatch,\n type MessageBatch as MessageBatch,\n type MessageBatchCanceledResult as MessageBatchCanceledResult,\n type MessageBatchErroredResult as MessageBatchErroredResult,\n type MessageBatchExpiredResult as MessageBatchExpiredResult,\n type MessageBatchIndividualResponse as MessageBatchIndividualResponse,\n type MessageBatchRequestCounts as MessageBatchRequestCounts,\n type MessageBatchResult as MessageBatchResult,\n type MessageBatchSucceededResult as MessageBatchSucceededResult,\n type MessageBatchesPage as MessageBatchesPage,\n type BatchCreateParams as BatchCreateParams,\n type BatchListParams as BatchListParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIPromise } from '../../core/api-promise';\nimport { APIResource } from '../../core/resource';\nimport { Stream } from '../../core/streaming';\nimport { RequestOptions } from '../../internal/request-options';\nimport { MessageStream } from '../../lib/MessageStream';\nimport * as BatchesAPI from './batches';\nimport {\n BatchCreateParams,\n BatchListParams,\n Batches,\n DeletedMessageBatch,\n MessageBatch,\n MessageBatchCanceledResult,\n MessageBatchErroredResult,\n MessageBatchExpiredResult,\n MessageBatchIndividualResponse,\n MessageBatchRequestCounts,\n MessageBatchResult,\n MessageBatchSucceededResult,\n MessageBatchesPage,\n} from './batches';\nimport * as MessagesAPI from './messages';\n\nimport { MODEL_NONSTREAMING_TOKENS } from '../../internal/constants';\n\nexport class Messages extends APIResource {\n batches: BatchesAPI.Batches = new BatchesAPI.Batches(this._client);\n\n /**\n * Send a structured list of input messages with text and/or image content, and the\n * model will generate the next message in the conversation.\n *\n * The Messages API can be used for either single queries or stateless multi-turn\n * conversations.\n *\n * Learn more about the Messages API in our\n * [user guide](https://docs.claude.com/en/docs/initial-setup)\n *\n * @example\n * ```ts\n * const message = await client.messages.create({\n * max_tokens: 1024,\n * messages: [{ content: 'Hello, world', role: 'user' }],\n * model: 'claude-sonnet-4-5-20250929',\n * });\n * ```\n */\n create(body: MessageCreateParamsNonStreaming, options?: RequestOptions): APIPromise<Message>;\n create(\n body: MessageCreateParamsStreaming,\n options?: RequestOptions,\n ): APIPromise<Stream<RawMessageStreamEvent>>;\n create(\n body: MessageCreateParamsBase,\n options?: RequestOptions,\n ): APIPromise<Stream<RawMessageStreamEvent> | Message>;\n create(\n body: MessageCreateParams,\n options?: RequestOptions,\n ): APIPromise<Message> | APIPromise<Stream<RawMessageStreamEvent>> {\n if (body.model in DEPRECATED_MODELS) {\n console.warn(\n `The model '${body.model}' is deprecated and will reach end-of-life on ${\n DEPRECATED_MODELS[body.model]\n }\\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`,\n );\n }\n let timeout = (this._client as any)._options.timeout as number | null;\n if (!body.stream && timeout == null) {\n const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined;\n timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens);\n }\n return this._client.post('/v1/messages', {\n body,\n timeout: timeout ?? 600000,\n ...options,\n stream: body.stream ?? false,\n }) as APIPromise<Message> | APIPromise<Stream<RawMessageStreamEvent>>;\n }\n\n /**\n * Create a Message stream\n */\n stream(body: MessageStreamParams, options?: RequestOptions): MessageStream {\n return MessageStream.createMessage(this, body, options);\n }\n\n /**\n * Count the number of tokens in a Message.\n *\n * The Token Count API can be used to count the number of tokens in a Message,\n * including tools, images, and documents, without creating it.\n *\n * Learn more about token counting in our\n * [user guide](https://docs.claude.com/en/docs/build-with-claude/token-counting)\n *\n * @example\n * ```ts\n * const messageTokensCount =\n * await client.messages.countTokens({\n * messages: [{ content: 'string', role: 'user' }],\n * model: 'claude-opus-4-5-20251101',\n * });\n * ```\n */\n countTokens(body: MessageCountTokensParams, options?: RequestOptions): APIPromise<MessageTokensCount> {\n return this._client.post('/v1/messages/count_tokens', { body, ...options });\n }\n}\n\nexport interface Base64ImageSource {\n data: string;\n\n media_type: 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp';\n\n type: 'base64';\n}\n\nexport interface Base64PDFSource {\n data: string;\n\n media_type: 'application/pdf';\n\n type: 'base64';\n}\n\nexport interface CacheControlEphemeral {\n type: 'ephemeral';\n\n /**\n * The time-to-live for the cache control breakpoint.\n *\n * This may be one the following values:\n *\n * - `5m`: 5 minutes\n * - `1h`: 1 hour\n *\n * Defaults to `5m`.\n */\n ttl?: '5m' | '1h';\n}\n\nexport interface CacheCreation {\n /**\n * The number of input tokens used to create the 1 hour cache entry.\n */\n ephemeral_1h_input_tokens: number;\n\n /**\n * The number of input tokens used to create the 5 minute cache entry.\n */\n ephemeral_5m_input_tokens: number;\n}\n\nexport interface CitationCharLocation {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_char_index: number;\n\n file_id: string | null;\n\n start_char_index: number;\n\n type: 'char_location';\n}\n\nexport interface CitationCharLocationParam {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_char_index: number;\n\n start_char_index: number;\n\n type: 'char_location';\n}\n\nexport interface CitationContentBlockLocation {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_block_index: number;\n\n file_id: string | null;\n\n start_block_index: number;\n\n type: 'content_block_location';\n}\n\nexport interface CitationContentBlockLocationParam {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_block_index: number;\n\n start_block_index: number;\n\n type: 'content_block_location';\n}\n\nexport interface CitationPageLocation {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_page_number: number;\n\n file_id: string | null;\n\n start_page_number: number;\n\n type: 'page_location';\n}\n\nexport interface CitationPageLocationParam {\n cited_text: string;\n\n document_index: number;\n\n document_title: string | null;\n\n end_page_number: number;\n\n start_page_number: number;\n\n type: 'page_location';\n}\n\nexport interface CitationSearchResultLocationParam {\n cited_text: string;\n\n end_block_index: number;\n\n search_result_index: number;\n\n source: string;\n\n start_block_index: number;\n\n title: string | null;\n\n type: 'search_result_location';\n}\n\nexport interface CitationWebSearchResultLocationParam {\n cited_text: string;\n\n encrypted_index: string;\n\n title: string | null;\n\n type: 'web_search_result_location';\n\n url: string;\n}\n\nexport interface CitationsConfigParam {\n enabled?: boolean;\n}\n\nexport interface CitationsDelta {\n citation:\n | CitationCharLocation\n | CitationPageLocation\n | CitationContentBlockLocation\n | CitationsWebSearchResultLocation\n | CitationsSearchResultLocation;\n\n type: 'citations_delta';\n}\n\nexport interface CitationsSearchResultLocation {\n cited_text: string;\n\n end_block_index: number;\n\n search_result_index: number;\n\n source: string;\n\n start_block_index: number;\n\n title: string | null;\n\n type: 'search_result_location';\n}\n\nexport interface CitationsWebSearchResultLocation {\n cited_text: string;\n\n encrypted_index: string;\n\n title: string | null;\n\n type: 'web_search_result_location';\n\n url: string;\n}\n\nexport type ContentBlock =\n | TextBlock\n | ThinkingBlock\n | RedactedThinkingBlock\n | ToolUseBlock\n | ServerToolUseBlock\n | WebSearchToolResultBlock;\n\n/**\n * Regular text content.\n */\nexport type ContentBlockParam =\n | TextBlockParam\n | ImageBlockParam\n | DocumentBlockParam\n | SearchResultBlockParam\n | ThinkingBlockParam\n | RedactedThinkingBlockParam\n | ToolUseBlockParam\n | ToolResultBlockParam\n | ServerToolUseBlockParam\n | WebSearchToolResultBlockParam;\n\nexport interface ContentBlockSource {\n content: string | Array<ContentBlockSourceContent>;\n\n type: 'content';\n}\n\nexport type ContentBlockSourceContent = TextBlockParam | ImageBlockParam;\n\nexport interface DocumentBlockParam {\n source: Base64PDFSource | PlainTextSource | ContentBlockSource | URLPDFSource;\n\n type: 'document';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n citations?: CitationsConfigParam | null;\n\n context?: string | null;\n\n title?: string | null;\n}\n\nexport interface ImageBlockParam {\n source: Base64ImageSource | URLImageSource;\n\n type: 'image';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface InputJSONDelta {\n partial_json: string;\n\n type: 'input_json_delta';\n}\n\nexport interface Message {\n /**\n * Unique object identifier.\n *\n * The format and length of IDs may change over time.\n */\n id: string;\n\n /**\n * Content generated by the model.\n *\n * This is an array of content blocks, each of which has a `type` that determines\n * its shape.\n *\n * Example:\n *\n * ```json\n * [{ \"type\": \"text\", \"text\": \"Hi, I'm Claude.\" }]\n * ```\n *\n * If the request input `messages` ended with an `assistant` turn, then the\n * response `content` will continue directly from that last turn. You can use this\n * to constrain the model's output.\n *\n * For example, if the input `messages` were:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Then the response `content` might be:\n *\n * ```json\n * [{ \"type\": \"text\", \"text\": \"B)\" }]\n * ```\n */\n content: Array<ContentBlock>;\n\n /**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: Model;\n\n /**\n * Conversational role of the generated message.\n *\n * This will always be `\"assistant\"`.\n */\n role: 'assistant';\n\n /**\n * The reason that we stopped.\n *\n * This may be one the following values:\n *\n * - `\"end_turn\"`: the model reached a natural stopping point\n * - `\"max_tokens\"`: we exceeded the requested `max_tokens` or the model's maximum\n * - `\"stop_sequence\"`: one of your provided custom `stop_sequences` was generated\n * - `\"tool_use\"`: the model invoked one or more tools\n * - `\"pause_turn\"`: we paused a long-running turn. You may provide the response\n * back as-is in a subsequent request to let the model continue.\n * - `\"refusal\"`: when streaming classifiers intervene to handle potential policy\n * violations\n *\n * In non-streaming mode this value is always non-null. In streaming mode, it is\n * null in the `message_start` event and non-null otherwise.\n */\n stop_reason: StopReason | null;\n\n /**\n * Which custom stop sequence was generated, if any.\n *\n * This value will be a non-null string if one of your custom stop sequences was\n * generated.\n */\n stop_sequence: string | null;\n\n /**\n * Object type.\n *\n * For Messages, this is always `\"message\"`.\n */\n type: 'message';\n\n /**\n * Billing and rate-limit usage.\n *\n * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n * underlying cost to our systems.\n *\n * Under the hood, the API transforms requests into a format suitable for the\n * model. The model's output then goes through a parsing stage before becoming an\n * API response. As a result, the token counts in `usage` will not match one-to-one\n * with the exact visible content of an API request or response.\n *\n * For example, `output_tokens` will be non-zero, even for an empty string response\n * from Claude.\n *\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n usage: Usage;\n}\n\nexport type MessageCountTokensTool =\n | Tool\n | ToolBash20250124\n | ToolTextEditor20250124\n | ToolTextEditor20250429\n | ToolTextEditor20250728\n | WebSearchTool20250305;\n\nexport interface MessageDeltaUsage {\n /**\n * The cumulative number of input tokens used to create the cache entry.\n */\n cache_creation_input_tokens: number | null;\n\n /**\n * The cumulative number of input tokens read from the cache.\n */\n cache_read_input_tokens: number | null;\n\n /**\n * The cumulative number of input tokens which were used.\n */\n input_tokens: number | null;\n\n /**\n * The cumulative number of output tokens which were used.\n */\n output_tokens: number;\n\n /**\n * The number of server tool requests.\n */\n server_tool_use: ServerToolUsage | null;\n}\n\nexport interface MessageParam {\n content: string | Array<ContentBlockParam>;\n\n role: 'user' | 'assistant';\n}\n\nexport interface MessageTokensCount {\n /**\n * The total number of tokens across the provided list of messages, system prompt,\n * and tools.\n */\n input_tokens: number;\n}\n\nexport interface Metadata {\n /**\n * An external identifier for the user who is associated with the request.\n *\n * This should be a uuid, hash value, or other opaque identifier. Anthropic may use\n * this id to help detect abuse. Do not include any identifying information such as\n * name, email address, or phone number.\n */\n user_id?: string | null;\n}\n\n/**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\nexport type Model =\n | 'claude-opus-4-5-20251101'\n | 'claude-opus-4-5'\n | 'claude-3-7-sonnet-latest'\n | 'claude-3-7-sonnet-20250219'\n | 'claude-3-5-haiku-latest'\n | 'claude-3-5-haiku-20241022'\n | 'claude-haiku-4-5'\n | 'claude-haiku-4-5-20251001'\n | 'claude-sonnet-4-20250514'\n | 'claude-sonnet-4-0'\n | 'claude-4-sonnet-20250514'\n | 'claude-sonnet-4-5'\n | 'claude-sonnet-4-5-20250929'\n | 'claude-opus-4-0'\n | 'claude-opus-4-20250514'\n | 'claude-4-opus-20250514'\n | 'claude-opus-4-1-20250805'\n | 'claude-3-opus-latest'\n | 'claude-3-opus-20240229'\n | 'claude-3-haiku-20240307'\n | (string & {});\n\nconst DEPRECATED_MODELS: {\n [K in Model]?: string;\n} = {\n 'claude-1.3': 'November 6th, 2024',\n 'claude-1.3-100k': 'November 6th, 2024',\n 'claude-instant-1.1': 'November 6th, 2024',\n 'claude-instant-1.1-100k': 'November 6th, 2024',\n 'claude-instant-1.2': 'November 6th, 2024',\n 'claude-3-sonnet-20240229': 'July 21st, 2025',\n 'claude-3-opus-20240229': 'January 5th, 2026',\n 'claude-2.1': 'July 21st, 2025',\n 'claude-2.0': 'July 21st, 2025',\n 'claude-3-7-sonnet-latest': 'February 19th, 2026',\n 'claude-3-7-sonnet-20250219': 'February 19th, 2026',\n};\n\nexport interface PlainTextSource {\n data: string;\n\n media_type: 'text/plain';\n\n type: 'text';\n}\n\nexport type RawContentBlockDelta =\n | TextDelta\n | InputJSONDelta\n | CitationsDelta\n | ThinkingDelta\n | SignatureDelta;\n\nexport interface RawContentBlockDeltaEvent {\n delta: RawContentBlockDelta;\n\n index: number;\n\n type: 'content_block_delta';\n}\n\nexport interface RawContentBlockStartEvent {\n content_block:\n | TextBlock\n | ThinkingBlock\n | RedactedThinkingBlock\n | ToolUseBlock\n | ServerToolUseBlock\n | WebSearchToolResultBlock;\n\n index: number;\n\n type: 'content_block_start';\n}\n\nexport interface RawContentBlockStopEvent {\n index: number;\n\n type: 'content_block_stop';\n}\n\nexport interface RawMessageDeltaEvent {\n delta: RawMessageDeltaEvent.Delta;\n\n type: 'message_delta';\n\n /**\n * Billing and rate-limit usage.\n *\n * Anthropic's API bills and rate-limits by token counts, as tokens represent the\n * underlying cost to our systems.\n *\n * Under the hood, the API transforms requests into a format suitable for the\n * model. The model's output then goes through a parsing stage before becoming an\n * API response. As a result, the token counts in `usage` will not match one-to-one\n * with the exact visible content of an API request or response.\n *\n * For example, `output_tokens` will be non-zero, even for an empty string response\n * from Claude.\n *\n * Total input tokens in a request is the summation of `input_tokens`,\n * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n */\n usage: MessageDeltaUsage;\n}\n\nexport namespace RawMessageDeltaEvent {\n export interface Delta {\n stop_reason: MessagesAPI.StopReason | null;\n\n stop_sequence: string | null;\n }\n}\n\nexport interface RawMessageStartEvent {\n message: Message;\n\n type: 'message_start';\n}\n\nexport interface RawMessageStopEvent {\n type: 'message_stop';\n}\n\nexport type RawMessageStreamEvent =\n | RawMessageStartEvent\n | RawMessageDeltaEvent\n | RawMessageStopEvent\n | RawContentBlockStartEvent\n | RawContentBlockDeltaEvent\n | RawContentBlockStopEvent;\n\nexport interface RedactedThinkingBlock {\n data: string;\n\n type: 'redacted_thinking';\n}\n\nexport interface RedactedThinkingBlockParam {\n data: string;\n\n type: 'redacted_thinking';\n}\n\nexport interface SearchResultBlockParam {\n content: Array<TextBlockParam>;\n\n source: string;\n\n title: string;\n\n type: 'search_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n citations?: CitationsConfigParam;\n}\n\nexport interface ServerToolUsage {\n /**\n * The number of web search tool requests.\n */\n web_search_requests: number;\n}\n\nexport interface ServerToolUseBlock {\n id: string;\n\n input: unknown;\n\n name: 'web_search';\n\n type: 'server_tool_use';\n}\n\nexport interface ServerToolUseBlockParam {\n id: string;\n\n input: unknown;\n\n name: 'web_search';\n\n type: 'server_tool_use';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface SignatureDelta {\n signature: string;\n\n type: 'signature_delta';\n}\n\nexport type StopReason = 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use' | 'pause_turn' | 'refusal';\n\nexport interface TextBlock {\n /**\n * Citations supporting the text block.\n *\n * The type of citation returned will depend on the type of document being cited.\n * Citing a PDF results in `page_location`, plain text results in `char_location`,\n * and content document results in `content_block_location`.\n */\n citations: Array<TextCitation> | null;\n\n text: string;\n\n type: 'text';\n}\n\nexport interface TextBlockParam {\n text: string;\n\n type: 'text';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n citations?: Array<TextCitationParam> | null;\n}\n\nexport type TextCitation =\n | CitationCharLocation\n | CitationPageLocation\n | CitationContentBlockLocation\n | CitationsWebSearchResultLocation\n | CitationsSearchResultLocation;\n\nexport type TextCitationParam =\n | CitationCharLocationParam\n | CitationPageLocationParam\n | CitationContentBlockLocationParam\n | CitationWebSearchResultLocationParam\n | CitationSearchResultLocationParam;\n\nexport interface TextDelta {\n text: string;\n\n type: 'text_delta';\n}\n\nexport interface ThinkingBlock {\n signature: string;\n\n thinking: string;\n\n type: 'thinking';\n}\n\nexport interface ThinkingBlockParam {\n signature: string;\n\n thinking: string;\n\n type: 'thinking';\n}\n\nexport interface ThinkingConfigDisabled {\n type: 'disabled';\n}\n\nexport interface ThinkingConfigEnabled {\n /**\n * Determines how many tokens Claude can use for its internal reasoning process.\n * Larger budgets can enable more thorough analysis for complex problems, improving\n * response quality.\n *\n * Must be ≥1024 and less than `max_tokens`.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n budget_tokens: number;\n\n type: 'enabled';\n}\n\n/**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\nexport type ThinkingConfigParam = ThinkingConfigEnabled | ThinkingConfigDisabled;\n\nexport interface ThinkingDelta {\n thinking: string;\n\n type: 'thinking_delta';\n}\n\nexport interface Tool {\n /**\n * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n *\n * This defines the shape of the `input` that your tool accepts and that the model\n * will produce.\n */\n input_schema: Tool.InputSchema;\n\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: string;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n /**\n * Description of what this tool does.\n *\n * Tool descriptions should be as detailed as possible. The more information that\n * the model has about what the tool is and how to use it, the better it will\n * perform. You can use natural language descriptions to reinforce important\n * aspects of the tool input JSON schema.\n */\n description?: string;\n\n type?: 'custom' | null;\n}\n\nexport namespace Tool {\n /**\n * [JSON schema](https://json-schema.org/draft/2020-12) for this tool's input.\n *\n * This defines the shape of the `input` that your tool accepts and that the model\n * will produce.\n */\n export interface InputSchema {\n type: 'object';\n\n properties?: unknown | null;\n\n required?: Array<string> | null;\n\n [k: string]: unknown;\n }\n}\n\nexport interface ToolBash20250124 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'bash';\n\n type: 'bash_20250124';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\n/**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\nexport type ToolChoice = ToolChoiceAuto | ToolChoiceAny | ToolChoiceTool | ToolChoiceNone;\n\n/**\n * The model will use any available tools.\n */\nexport interface ToolChoiceAny {\n type: 'any';\n\n /**\n * Whether to disable parallel tool use.\n *\n * Defaults to `false`. If set to `true`, the model will output exactly one tool\n * use.\n */\n disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will automatically decide whether to use tools.\n */\nexport interface ToolChoiceAuto {\n type: 'auto';\n\n /**\n * Whether to disable parallel tool use.\n *\n * Defaults to `false`. If set to `true`, the model will output at most one tool\n * use.\n */\n disable_parallel_tool_use?: boolean;\n}\n\n/**\n * The model will not be allowed to use tools.\n */\nexport interface ToolChoiceNone {\n type: 'none';\n}\n\n/**\n * The model will use the specified tool with `tool_choice.name`.\n */\nexport interface ToolChoiceTool {\n /**\n * The name of the tool to use.\n */\n name: string;\n\n type: 'tool';\n\n /**\n * Whether to disable parallel tool use.\n *\n * Defaults to `false`. If set to `true`, the model will output exactly one tool\n * use.\n */\n disable_parallel_tool_use?: boolean;\n}\n\nexport interface ToolResultBlockParam {\n tool_use_id: string;\n\n type: 'tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n content?: string | Array<TextBlockParam | ImageBlockParam | SearchResultBlockParam | DocumentBlockParam>;\n\n is_error?: boolean;\n}\n\nexport interface ToolTextEditor20250124 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_editor';\n\n type: 'text_editor_20250124';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface ToolTextEditor20250429 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_based_edit_tool';\n\n type: 'text_editor_20250429';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface ToolTextEditor20250728 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'str_replace_based_edit_tool';\n\n type: 'text_editor_20250728';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n /**\n * Maximum number of characters to display when viewing a file. If not specified,\n * defaults to displaying the full file.\n */\n max_characters?: number | null;\n}\n\nexport type ToolUnion =\n | Tool\n | ToolBash20250124\n | ToolTextEditor20250124\n | ToolTextEditor20250429\n | ToolTextEditor20250728\n | WebSearchTool20250305;\n\nexport interface ToolUseBlock {\n id: string;\n\n input: unknown;\n\n name: string;\n\n type: 'tool_use';\n}\n\nexport interface ToolUseBlockParam {\n id: string;\n\n input: unknown;\n\n name: string;\n\n type: 'tool_use';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\nexport interface URLImageSource {\n type: 'url';\n\n url: string;\n}\n\nexport interface URLPDFSource {\n type: 'url';\n\n url: string;\n}\n\nexport interface Usage {\n /**\n * Breakdown of cached tokens by TTL\n */\n cache_creation: CacheCreation | null;\n\n /**\n * The number of input tokens used to create the cache entry.\n */\n cache_creation_input_tokens: number | null;\n\n /**\n * The number of input tokens read from the cache.\n */\n cache_read_input_tokens: number | null;\n\n /**\n * The number of input tokens which were used.\n */\n input_tokens: number;\n\n /**\n * The number of output tokens which were used.\n */\n output_tokens: number;\n\n /**\n * The number of server tool requests.\n */\n server_tool_use: ServerToolUsage | null;\n\n /**\n * If the request used the priority, standard, or batch tier.\n */\n service_tier: 'standard' | 'priority' | 'batch' | null;\n}\n\nexport interface WebSearchResultBlock {\n encrypted_content: string;\n\n page_age: string | null;\n\n title: string;\n\n type: 'web_search_result';\n\n url: string;\n}\n\nexport interface WebSearchResultBlockParam {\n encrypted_content: string;\n\n title: string;\n\n type: 'web_search_result';\n\n url: string;\n\n page_age?: string | null;\n}\n\nexport interface WebSearchTool20250305 {\n /**\n * Name of the tool.\n *\n * This is how the tool will be called by the model and in `tool_use` blocks.\n */\n name: 'web_search';\n\n type: 'web_search_20250305';\n\n /**\n * If provided, only these domains will be included in results. Cannot be used\n * alongside `blocked_domains`.\n */\n allowed_domains?: Array<string> | null;\n\n /**\n * If provided, these domains will never appear in results. Cannot be used\n * alongside `allowed_domains`.\n */\n blocked_domains?: Array<string> | null;\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n\n /**\n * Maximum number of times the tool can be used in the API request.\n */\n max_uses?: number | null;\n\n /**\n * Parameters for the user's location. Used to provide more relevant search\n * results.\n */\n user_location?: WebSearchTool20250305.UserLocation | null;\n}\n\nexport namespace WebSearchTool20250305 {\n /**\n * Parameters for the user's location. Used to provide more relevant search\n * results.\n */\n export interface UserLocation {\n type: 'approximate';\n\n /**\n * The city of the user.\n */\n city?: string | null;\n\n /**\n * The two letter\n * [ISO country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the\n * user.\n */\n country?: string | null;\n\n /**\n * The region of the user.\n */\n region?: string | null;\n\n /**\n * The [IANA timezone](https://nodatime.org/TimeZones) of the user.\n */\n timezone?: string | null;\n }\n}\n\nexport interface WebSearchToolRequestError {\n error_code:\n | 'invalid_tool_input'\n | 'unavailable'\n | 'max_uses_exceeded'\n | 'too_many_requests'\n | 'query_too_long';\n\n type: 'web_search_tool_result_error';\n}\n\nexport interface WebSearchToolResultBlock {\n content: WebSearchToolResultBlockContent;\n\n tool_use_id: string;\n\n type: 'web_search_tool_result';\n}\n\nexport type WebSearchToolResultBlockContent = WebSearchToolResultError | Array<WebSearchResultBlock>;\n\nexport interface WebSearchToolResultBlockParam {\n content: WebSearchToolResultBlockParamContent;\n\n tool_use_id: string;\n\n type: 'web_search_tool_result';\n\n /**\n * Create a cache control breakpoint at this content block.\n */\n cache_control?: CacheControlEphemeral | null;\n}\n\nexport type WebSearchToolResultBlockParamContent =\n | Array<WebSearchResultBlockParam>\n | WebSearchToolRequestError;\n\nexport interface WebSearchToolResultError {\n error_code:\n | 'invalid_tool_input'\n | 'unavailable'\n | 'max_uses_exceeded'\n | 'too_many_requests'\n | 'query_too_long';\n\n type: 'web_search_tool_result_error';\n}\n\nexport type MessageStreamEvent = RawMessageStreamEvent;\n\nexport type MessageStartEvent = RawMessageStartEvent;\n\nexport type MessageDeltaEvent = RawMessageDeltaEvent;\n\nexport type MessageStopEvent = RawMessageStopEvent;\n\nexport type ContentBlockStartEvent = RawContentBlockStartEvent;\n\nexport type ContentBlockDeltaEvent = RawContentBlockDeltaEvent;\n\nexport type ContentBlockStopEvent = RawContentBlockStopEvent;\n\nexport type MessageCreateParams = MessageCreateParamsNonStreaming | MessageCreateParamsStreaming;\n\nexport interface MessageCreateParamsBase {\n /**\n * The maximum number of tokens to generate before stopping.\n *\n * Note that our models may stop _before_ reaching this maximum. This parameter\n * only specifies the absolute maximum number of tokens to generate.\n *\n * Different models have different maximum values for this parameter. See\n * [models](https://docs.claude.com/en/docs/models-overview) for details.\n */\n max_tokens: number;\n\n /**\n * Input messages.\n *\n * Our models are trained to operate on alternating `user` and `assistant`\n * conversational turns. When creating a new `Message`, you specify the prior\n * conversational turns with the `messages` parameter, and the model then generates\n * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n * in your request will be combined into a single turn.\n *\n * Each input message must be an object with a `role` and `content`. You can\n * specify a single `user`-role message, or you can include multiple `user` and\n * `assistant` messages.\n *\n * If the final message uses the `assistant` role, the response content will\n * continue immediately from the content in that message. This can be used to\n * constrain part of the model's response.\n *\n * Example with a single `user` message:\n *\n * ```json\n * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n * ```\n *\n * Example with multiple conversational turns:\n *\n * ```json\n * [\n * { \"role\": \"user\", \"content\": \"Hello there.\" },\n * { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n * { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n * ]\n * ```\n *\n * Example with a partially-filled response from Claude:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Each input message `content` may be either a single `string` or an array of\n * content blocks, where each block has a specific `type`. Using a `string` for\n * `content` is shorthand for an array of one content block of type `\"text\"`. The\n * following input messages are equivalent:\n *\n * ```json\n * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n * ```\n *\n * ```json\n * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n * ```\n *\n * See [input examples](https://docs.claude.com/en/api/messages-examples).\n *\n * Note that if you want to include a\n * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n * top-level `system` parameter — there is no `\"system\"` role for input messages in\n * the Messages API.\n *\n * There is a limit of 100,000 messages in a single request.\n */\n messages: Array<MessageParam>;\n\n /**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: Model;\n\n /**\n * An object describing metadata about the request.\n */\n metadata?: Metadata;\n\n /**\n * Determines whether to use priority capacity (if available) or standard capacity\n * for this request.\n *\n * Anthropic offers different levels of service for your API requests. See\n * [service-tiers](https://docs.claude.com/en/api/service-tiers) for details.\n */\n service_tier?: 'auto' | 'standard_only';\n\n /**\n * Custom text sequences that will cause the model to stop generating.\n *\n * Our models will normally stop when they have naturally completed their turn,\n * which will result in a response `stop_reason` of `\"end_turn\"`.\n *\n * If you want the model to stop generating when it encounters custom strings of\n * text, you can use the `stop_sequences` parameter. If the model encounters one of\n * the custom sequences, the response `stop_reason` value will be `\"stop_sequence\"`\n * and the response `stop_sequence` value will contain the matched stop sequence.\n */\n stop_sequences?: Array<string>;\n\n /**\n * Whether to incrementally stream the response using server-sent events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream?: boolean;\n\n /**\n * System prompt.\n *\n * A system prompt is a way of providing context and instructions to Claude, such\n * as specifying a particular goal or role. See our\n * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n */\n system?: string | Array<TextBlockParam>;\n\n /**\n * Amount of randomness injected into the response.\n *\n * Defaults to `1.0`. Ranges from `0.0` to `1.0`. Use `temperature` closer to `0.0`\n * for analytical / multiple choice, and closer to `1.0` for creative and\n * generative tasks.\n *\n * Note that even with `temperature` of `0.0`, the results will not be fully\n * deterministic.\n */\n temperature?: number;\n\n /**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n thinking?: ThinkingConfigParam;\n\n /**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\n tool_choice?: ToolChoice;\n\n /**\n * Definitions of tools that the model may use.\n *\n * If you include `tools` in your API request, the model may return `tool_use`\n * content blocks that represent the model's use of those tools. You can then run\n * those tools using the tool input generated by the model and then optionally\n * return results back to the model using `tool_result` content blocks.\n *\n * There are two types of tools: **client tools** and **server tools**. The\n * behavior described below applies to client tools. For\n * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n * see their individual documentation as each has its own behavior (e.g., the\n * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n *\n * Each tool definition includes:\n *\n * - `name`: Name of the tool.\n * - `description`: Optional, but strongly-recommended description of the tool.\n * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n * tool `input` shape that the model will produce in `tool_use` output content\n * blocks.\n *\n * For example, if you defined `tools` as:\n *\n * ```json\n * [\n * {\n * \"name\": \"get_stock_price\",\n * \"description\": \"Get the current stock price for a given ticker symbol.\",\n * \"input_schema\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"ticker\": {\n * \"type\": \"string\",\n * \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n * }\n * },\n * \"required\": [\"ticker\"]\n * }\n * }\n * ]\n * ```\n *\n * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n * `tool_use` content blocks in the response like this:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_use\",\n * \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"name\": \"get_stock_price\",\n * \"input\": { \"ticker\": \"^GSPC\" }\n * }\n * ]\n * ```\n *\n * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n * input, and return the following back to the model in a subsequent `user`\n * message:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_result\",\n * \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"content\": \"259.75 USD\"\n * }\n * ]\n * ```\n *\n * Tools can be used for workflows that include running client-side tools and\n * functions, or more generally whenever you want the model to produce a particular\n * JSON structure of output.\n *\n * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n */\n tools?: Array<ToolUnion>;\n\n /**\n * Only sample from the top K options for each subsequent token.\n *\n * Used to remove \"long tail\" low probability responses.\n * [Learn more technical details here](https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277).\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_k?: number;\n\n /**\n * Use nucleus sampling.\n *\n * In nucleus sampling, we compute the cumulative distribution over all the options\n * for each subsequent token in decreasing probability order and cut it off once it\n * reaches a particular probability specified by `top_p`. You should either alter\n * `temperature` or `top_p`, but not both.\n *\n * Recommended for advanced use cases only. You usually only need to use\n * `temperature`.\n */\n top_p?: number;\n}\n\nexport namespace MessageCreateParams {\n export type MessageCreateParamsNonStreaming = MessagesAPI.MessageCreateParamsNonStreaming;\n export type MessageCreateParamsStreaming = MessagesAPI.MessageCreateParamsStreaming;\n}\n\nexport interface MessageCreateParamsNonStreaming extends MessageCreateParamsBase {\n /**\n * Whether to incrementally stream the response using server-sent events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream?: false;\n}\n\nexport interface MessageCreateParamsStreaming extends MessageCreateParamsBase {\n /**\n * Whether to incrementally stream the response using server-sent events.\n *\n * See [streaming](https://docs.claude.com/en/api/messages-streaming) for details.\n */\n stream: true;\n}\n\nexport type MessageStreamParams = MessageCreateParamsBase;\n\nexport interface MessageCountTokensParams {\n /**\n * Input messages.\n *\n * Our models are trained to operate on alternating `user` and `assistant`\n * conversational turns. When creating a new `Message`, you specify the prior\n * conversational turns with the `messages` parameter, and the model then generates\n * the next `Message` in the conversation. Consecutive `user` or `assistant` turns\n * in your request will be combined into a single turn.\n *\n * Each input message must be an object with a `role` and `content`. You can\n * specify a single `user`-role message, or you can include multiple `user` and\n * `assistant` messages.\n *\n * If the final message uses the `assistant` role, the response content will\n * continue immediately from the content in that message. This can be used to\n * constrain part of the model's response.\n *\n * Example with a single `user` message:\n *\n * ```json\n * [{ \"role\": \"user\", \"content\": \"Hello, Claude\" }]\n * ```\n *\n * Example with multiple conversational turns:\n *\n * ```json\n * [\n * { \"role\": \"user\", \"content\": \"Hello there.\" },\n * { \"role\": \"assistant\", \"content\": \"Hi, I'm Claude. How can I help you?\" },\n * { \"role\": \"user\", \"content\": \"Can you explain LLMs in plain English?\" }\n * ]\n * ```\n *\n * Example with a partially-filled response from Claude:\n *\n * ```json\n * [\n * {\n * \"role\": \"user\",\n * \"content\": \"What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun\"\n * },\n * { \"role\": \"assistant\", \"content\": \"The best answer is (\" }\n * ]\n * ```\n *\n * Each input message `content` may be either a single `string` or an array of\n * content blocks, where each block has a specific `type`. Using a `string` for\n * `content` is shorthand for an array of one content block of type `\"text\"`. The\n * following input messages are equivalent:\n *\n * ```json\n * { \"role\": \"user\", \"content\": \"Hello, Claude\" }\n * ```\n *\n * ```json\n * { \"role\": \"user\", \"content\": [{ \"type\": \"text\", \"text\": \"Hello, Claude\" }] }\n * ```\n *\n * See [input examples](https://docs.claude.com/en/api/messages-examples).\n *\n * Note that if you want to include a\n * [system prompt](https://docs.claude.com/en/docs/system-prompts), you can use the\n * top-level `system` parameter — there is no `\"system\"` role for input messages in\n * the Messages API.\n *\n * There is a limit of 100,000 messages in a single request.\n */\n messages: Array<MessageParam>;\n\n /**\n * The model that will complete your prompt.\\n\\nSee\n * [models](https://docs.anthropic.com/en/docs/models-overview) for additional\n * details and options.\n */\n model: Model;\n\n /**\n * System prompt.\n *\n * A system prompt is a way of providing context and instructions to Claude, such\n * as specifying a particular goal or role. See our\n * [guide to system prompts](https://docs.claude.com/en/docs/system-prompts).\n */\n system?: string | Array<TextBlockParam>;\n\n /**\n * Configuration for enabling Claude's extended thinking.\n *\n * When enabled, responses include `thinking` content blocks showing Claude's\n * thinking process before the final answer. Requires a minimum budget of 1,024\n * tokens and counts towards your `max_tokens` limit.\n *\n * See\n * [extended thinking](https://docs.claude.com/en/docs/build-with-claude/extended-thinking)\n * for details.\n */\n thinking?: ThinkingConfigParam;\n\n /**\n * How the model should use the provided tools. The model can use a specific tool,\n * any available tool, decide by itself, or not use tools at all.\n */\n tool_choice?: ToolChoice;\n\n /**\n * Definitions of tools that the model may use.\n *\n * If you include `tools` in your API request, the model may return `tool_use`\n * content blocks that represent the model's use of those tools. You can then run\n * those tools using the tool input generated by the model and then optionally\n * return results back to the model using `tool_result` content blocks.\n *\n * There are two types of tools: **client tools** and **server tools**. The\n * behavior described below applies to client tools. For\n * [server tools](https://docs.claude.com/en/docs/agents-and-tools/tool-use/overview#server-tools),\n * see their individual documentation as each has its own behavior (e.g., the\n * [web search tool](https://docs.claude.com/en/docs/agents-and-tools/tool-use/web-search-tool)).\n *\n * Each tool definition includes:\n *\n * - `name`: Name of the tool.\n * - `description`: Optional, but strongly-recommended description of the tool.\n * - `input_schema`: [JSON schema](https://json-schema.org/draft/2020-12) for the\n * tool `input` shape that the model will produce in `tool_use` output content\n * blocks.\n *\n * For example, if you defined `tools` as:\n *\n * ```json\n * [\n * {\n * \"name\": \"get_stock_price\",\n * \"description\": \"Get the current stock price for a given ticker symbol.\",\n * \"input_schema\": {\n * \"type\": \"object\",\n * \"properties\": {\n * \"ticker\": {\n * \"type\": \"string\",\n * \"description\": \"The stock ticker symbol, e.g. AAPL for Apple Inc.\"\n * }\n * },\n * \"required\": [\"ticker\"]\n * }\n * }\n * ]\n * ```\n *\n * And then asked the model \"What's the S&P 500 at today?\", the model might produce\n * `tool_use` content blocks in the response like this:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_use\",\n * \"id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"name\": \"get_stock_price\",\n * \"input\": { \"ticker\": \"^GSPC\" }\n * }\n * ]\n * ```\n *\n * You might then run your `get_stock_price` tool with `{\"ticker\": \"^GSPC\"}` as an\n * input, and return the following back to the model in a subsequent `user`\n * message:\n *\n * ```json\n * [\n * {\n * \"type\": \"tool_result\",\n * \"tool_use_id\": \"toolu_01D7FLrfh4GYq7yT1ULFeyMV\",\n * \"content\": \"259.75 USD\"\n * }\n * ]\n * ```\n *\n * Tools can be used for workflows that include running client-side tools and\n * functions, or more generally whenever you want the model to produce a particular\n * JSON structure of output.\n *\n * See our [guide](https://docs.claude.com/en/docs/tool-use) for more details.\n */\n tools?: Array<MessageCountTokensTool>;\n}\n\nMessages.Batches = Batches;\n\nexport declare namespace Messages {\n export {\n type Base64ImageSource as Base64ImageSource,\n type Base64PDFSource as Base64PDFSource,\n type CacheControlEphemeral as CacheControlEphemeral,\n type CacheCreation as CacheCreation,\n type CitationCharLocation as CitationCharLocation,\n type CitationCharLocationParam as CitationCharLocationParam,\n type CitationContentBlockLocation as CitationContentBlockLocation,\n type CitationContentBlockLocationParam as CitationContentBlockLocationParam,\n type CitationPageLocation as CitationPageLocation,\n type CitationPageLocationParam as CitationPageLocationParam,\n type CitationSearchResultLocationParam as CitationSearchResultLocationParam,\n type CitationWebSearchResultLocationParam as CitationWebSearchResultLocationParam,\n type CitationsConfigParam as CitationsConfigParam,\n type CitationsDelta as CitationsDelta,\n type CitationsSearchResultLocation as CitationsSearchResultLocation,\n type CitationsWebSearchResultLocation as CitationsWebSearchResultLocation,\n type ContentBlock as ContentBlock,\n type ContentBlockParam as ContentBlockParam,\n type ContentBlockStartEvent as ContentBlockStartEvent,\n type ContentBlockStopEvent as ContentBlockStopEvent,\n type ContentBlockSource as ContentBlockSource,\n type ContentBlockSourceContent as ContentBlockSourceContent,\n type DocumentBlockParam as DocumentBlockParam,\n type ImageBlockParam as ImageBlockParam,\n type InputJSONDelta as InputJSONDelta,\n type Message as Message,\n type MessageCountTokensTool as MessageCountTokensTool,\n type MessageDeltaEvent as MessageDeltaEvent,\n type MessageDeltaUsage as MessageDeltaUsage,\n type MessageParam as MessageParam,\n type MessageTokensCount as MessageTokensCount,\n type Metadata as Metadata,\n type Model as Model,\n type PlainTextSource as PlainTextSource,\n type RawContentBlockDelta as RawContentBlockDelta,\n type RawContentBlockDeltaEvent as RawContentBlockDeltaEvent,\n type RawContentBlockStartEvent as RawContentBlockStartEvent,\n type RawContentBlockStopEvent as RawContentBlockStopEvent,\n type RawMessageDeltaEvent as RawMessageDeltaEvent,\n type RawMessageStartEvent as RawMessageStartEvent,\n type RawMessageStopEvent as RawMessageStopEvent,\n type RawMessageStreamEvent as RawMessageStreamEvent,\n type RedactedThinkingBlock as RedactedThinkingBlock,\n type RedactedThinkingBlockParam as RedactedThinkingBlockParam,\n type SearchResultBlockParam as SearchResultBlockParam,\n type ServerToolUsage as ServerToolUsage,\n type ServerToolUseBlock as ServerToolUseBlock,\n type ServerToolUseBlockParam as ServerToolUseBlockParam,\n type SignatureDelta as SignatureDelta,\n type StopReason as StopReason,\n type TextBlock as TextBlock,\n type TextBlockParam as TextBlockParam,\n type TextCitation as TextCitation,\n type TextCitationParam as TextCitationParam,\n type TextDelta as TextDelta,\n type ThinkingBlock as ThinkingBlock,\n type ThinkingBlockParam as ThinkingBlockParam,\n type ThinkingConfigDisabled as ThinkingConfigDisabled,\n type ThinkingConfigEnabled as ThinkingConfigEnabled,\n type ThinkingConfigParam as ThinkingConfigParam,\n type ThinkingDelta as ThinkingDelta,\n type Tool as Tool,\n type ToolBash20250124 as ToolBash20250124,\n type ToolChoice as ToolChoice,\n type ToolChoiceAny as ToolChoiceAny,\n type ToolChoiceAuto as ToolChoiceAuto,\n type ToolChoiceNone as ToolChoiceNone,\n type ToolChoiceTool as ToolChoiceTool,\n type ToolResultBlockParam as ToolResultBlockParam,\n type ToolTextEditor20250124 as ToolTextEditor20250124,\n type ToolTextEditor20250429 as ToolTextEditor20250429,\n type ToolTextEditor20250728 as ToolTextEditor20250728,\n type ToolUnion as ToolUnion,\n type ToolUseBlock as ToolUseBlock,\n type ToolUseBlockParam as ToolUseBlockParam,\n type URLImageSource as URLImageSource,\n type URLPDFSource as URLPDFSource,\n type Usage as Usage,\n type WebSearchResultBlock as WebSearchResultBlock,\n type WebSearchResultBlockParam as WebSearchResultBlockParam,\n type WebSearchTool20250305 as WebSearchTool20250305,\n type WebSearchToolRequestError as WebSearchToolRequestError,\n type WebSearchToolResultBlock as WebSearchToolResultBlock,\n type WebSearchToolResultBlockContent as WebSearchToolResultBlockContent,\n type WebSearchToolResultBlockParam as WebSearchToolResultBlockParam,\n type WebSearchToolResultBlockParamContent as WebSearchToolResultBlockParamContent,\n type WebSearchToolResultError as WebSearchToolResultError,\n type MessageStreamEvent as MessageStreamEvent,\n type MessageStartEvent as MessageStartEvent,\n type MessageStopEvent as MessageStopEvent,\n type ContentBlockDeltaEvent as ContentBlockDeltaEvent,\n type MessageCreateParams as MessageCreateParams,\n type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n type MessageStreamParams as MessageStreamParams,\n type MessageCountTokensParams as MessageCountTokensParams,\n };\n\n export {\n Batches as Batches,\n type DeletedMessageBatch as DeletedMessageBatch,\n type MessageBatch as MessageBatch,\n type MessageBatchCanceledResult as MessageBatchCanceledResult,\n type MessageBatchErroredResult as MessageBatchErroredResult,\n type MessageBatchExpiredResult as MessageBatchExpiredResult,\n type MessageBatchIndividualResponse as MessageBatchIndividualResponse,\n type MessageBatchRequestCounts as MessageBatchRequestCounts,\n type MessageBatchResult as MessageBatchResult,\n type MessageBatchSucceededResult as MessageBatchSucceededResult,\n type MessageBatchesPage as MessageBatchesPage,\n type BatchCreateParams as BatchCreateParams,\n type BatchListParams as BatchListParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport { APIResource } from '../core/resource';\nimport * as BetaAPI from './beta/beta';\nimport { APIPromise } from '../core/api-promise';\nimport { Page, type PageParams, PagePromise } from '../core/pagination';\nimport { buildHeaders } from '../internal/headers';\nimport { RequestOptions } from '../internal/request-options';\nimport { path } from '../internal/utils/path';\n\nexport class Models extends APIResource {\n /**\n * Get a specific model.\n *\n * The Models API response can be used to determine information about a specific\n * model or resolve a model alias to a model ID.\n */\n retrieve(\n modelID: string,\n params: ModelRetrieveParams | null | undefined = {},\n options?: RequestOptions,\n ): APIPromise<ModelInfo> {\n const { betas } = params ?? {};\n return this._client.get(path`/v1/models/${modelID}`, {\n ...options,\n headers: buildHeaders([\n { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n options?.headers,\n ]),\n });\n }\n\n /**\n * List available models.\n *\n * The Models API response can be used to determine which models are available for\n * use in the API. More recently released models are listed first.\n */\n list(\n params: ModelListParams | null | undefined = {},\n options?: RequestOptions,\n ): PagePromise<ModelInfosPage, ModelInfo> {\n const { betas, ...query } = params ?? {};\n return this._client.getAPIList('/v1/models', Page<ModelInfo>, {\n query,\n ...options,\n headers: buildHeaders([\n { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n options?.headers,\n ]),\n });\n }\n}\n\nexport type ModelInfosPage = Page<ModelInfo>;\n\nexport interface ModelInfo {\n /**\n * Unique model identifier.\n */\n id: string;\n\n /**\n * RFC 3339 datetime string representing the time at which the model was released.\n * May be set to an epoch value if the release date is unknown.\n */\n created_at: string;\n\n /**\n * A human-readable name for the model.\n */\n display_name: string;\n\n /**\n * Object type.\n *\n * For Models, this is always `\"model\"`.\n */\n type: 'model';\n}\n\nexport interface ModelRetrieveParams {\n /**\n * Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport interface ModelListParams extends PageParams {\n /**\n * Header param: Optional header to specify the beta version(s) you want to use.\n */\n betas?: Array<BetaAPI.AnthropicBeta>;\n}\n\nexport declare namespace Models {\n export {\n type ModelInfo as ModelInfo,\n type ModelInfosPage as ModelInfosPage,\n type ModelRetrieveParams as ModelRetrieveParams,\n type ModelListParams as ModelListParams,\n };\n}\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env: string): string | undefined => {\n if (typeof (globalThis as any).process !== 'undefined') {\n return (globalThis as any).process.env?.[env]?.trim() ?? undefined;\n }\n if (typeof (globalThis as any).Deno !== 'undefined') {\n return (globalThis as any).Deno.env?.get?.(env)?.trim();\n }\n return undefined;\n};\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n\nimport type { RequestInit, RequestInfo, BodyInit } from './internal/builtin-types';\nimport type { HTTPMethod, PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from './internal/types';\nimport { uuid4 } from './internal/utils/uuid';\nimport { validatePositiveInteger, isAbsoluteURL, safeJSON } from './internal/utils/values';\nimport { sleep } from './internal/utils/sleep';\nexport type { Logger, LogLevel } from './internal/utils/log';\nimport { castToError, isAbortError } from './internal/errors';\nimport type { APIResponseProps } from './internal/parse';\nimport { getPlatformHeaders } from './internal/detect-platform';\nimport * as Shims from './internal/shims';\nimport * as Opts from './internal/request-options';\nimport { VERSION } from './version';\nimport * as Errors from './core/error';\nimport * as Pagination from './core/pagination';\nimport {\n type PageParams,\n PageResponse,\n type PageCursorParams,\n PageCursorResponse,\n type TokenPageParams,\n TokenPageResponse,\n} from './core/pagination';\nimport * as Uploads from './core/uploads';\nimport * as API from './resources/index';\nimport { APIPromise } from './core/api-promise';\nimport {\n Completion,\n CompletionCreateParams,\n CompletionCreateParamsNonStreaming,\n CompletionCreateParamsStreaming,\n Completions,\n} from './resources/completions';\nimport { ModelInfo, ModelInfosPage, ModelListParams, ModelRetrieveParams, Models } from './resources/models';\nimport {\n AnthropicBeta,\n Beta,\n BetaAPIError,\n BetaAuthenticationError,\n BetaBillingError,\n BetaError,\n BetaErrorResponse,\n BetaGatewayTimeoutError,\n BetaInvalidRequestError,\n BetaNotFoundError,\n BetaOverloadedError,\n BetaPermissionError,\n BetaRateLimitError,\n} from './resources/beta/beta';\nimport {\n Base64ImageSource,\n Base64PDFSource,\n CacheControlEphemeral,\n CacheCreation,\n CitationCharLocation,\n CitationCharLocationParam,\n CitationContentBlockLocation,\n CitationContentBlockLocationParam,\n CitationPageLocation,\n CitationPageLocationParam,\n CitationSearchResultLocationParam,\n CitationWebSearchResultLocationParam,\n CitationsConfigParam,\n CitationsDelta,\n CitationsSearchResultLocation,\n CitationsWebSearchResultLocation,\n ContentBlock,\n ContentBlockDeltaEvent,\n ContentBlockParam,\n ContentBlockStartEvent,\n ContentBlockStopEvent,\n ContentBlockSource,\n ContentBlockSourceContent,\n DocumentBlockParam,\n ImageBlockParam,\n InputJSONDelta,\n Message,\n MessageStreamParams,\n MessageCountTokensParams,\n MessageCountTokensTool,\n MessageCreateParams,\n MessageCreateParamsNonStreaming,\n MessageCreateParamsStreaming,\n MessageDeltaEvent,\n MessageDeltaUsage,\n MessageParam,\n MessageStartEvent,\n MessageStopEvent,\n MessageStreamEvent,\n MessageTokensCount,\n Messages,\n Metadata,\n Model,\n PlainTextSource,\n RawContentBlockDelta,\n RawContentBlockDeltaEvent,\n RawContentBlockStartEvent,\n RawContentBlockStopEvent,\n RawMessageDeltaEvent,\n RawMessageStartEvent,\n RawMessageStopEvent,\n RawMessageStreamEvent,\n RedactedThinkingBlock,\n RedactedThinkingBlockParam,\n SearchResultBlockParam,\n ServerToolUsage,\n ServerToolUseBlock,\n ServerToolUseBlockParam,\n SignatureDelta,\n StopReason,\n TextBlock,\n TextBlockParam,\n TextCitation,\n TextCitationParam,\n TextDelta,\n ThinkingBlock,\n ThinkingBlockParam,\n ThinkingConfigDisabled,\n ThinkingConfigEnabled,\n ThinkingConfigParam,\n ThinkingDelta,\n Tool,\n ToolBash20250124,\n ToolChoice,\n ToolChoiceAny,\n ToolChoiceAuto,\n ToolChoiceNone,\n ToolChoiceTool,\n ToolResultBlockParam,\n ToolTextEditor20250124,\n ToolTextEditor20250429,\n ToolTextEditor20250728,\n ToolUnion,\n ToolUseBlock,\n ToolUseBlockParam,\n URLImageSource,\n URLPDFSource,\n Usage,\n WebSearchResultBlock,\n WebSearchResultBlockParam,\n WebSearchTool20250305,\n WebSearchToolRequestError,\n WebSearchToolResultBlock,\n WebSearchToolResultBlockContent,\n WebSearchToolResultBlockParam,\n WebSearchToolResultBlockParamContent,\n WebSearchToolResultError,\n} from './resources/messages/messages';\nimport { type Fetch } from './internal/builtin-types';\nimport { isRunningInBrowser } from './internal/detect-platform';\nimport { HeadersLike, NullableHeaders, buildHeaders } from './internal/headers';\nimport { FinalRequestOptions, RequestOptions } from './internal/request-options';\nimport { readEnv } from './internal/utils/env';\nimport {\n type LogLevel,\n type Logger,\n formatRequestDetails,\n loggerFor,\n parseLogLevel,\n} from './internal/utils/log';\nimport { isEmptyObj } from './internal/utils/values';\n\nexport type ApiKeySetter = () => Promise<string>;\n\nexport interface ClientOptions {\n /**\n * API key used for authentication.\n *\n * - Accepts either a static string or an async function that resolves to a string.\n * - Defaults to process.env['ANTHROPIC_API_KEY'].\n * - When a function is provided, it is invoked before each request so you can rotate\n * or refresh credentials at runtime.\n * - The function must return a non-empty string; otherwise an AnthropicError is thrown.\n * - If the function throws, the error is wrapped in an AnthropicError with the original\n * error available as `cause`.\n */\n apiKey?: string | ApiKeySetter | null | undefined;\n\n /**\n * Defaults to process.env['ANTHROPIC_AUTH_TOKEN'].\n */\n authToken?: string | null | undefined;\n\n /**\n * Override the default base URL for the API, e.g., \"https://api.example.com/v2/\"\n *\n * Defaults to process.env['ANTHROPIC_BASE_URL'].\n */\n baseURL?: string | null | undefined;\n\n /**\n * The maximum amount of time (in milliseconds) that the client should wait for a response\n * from the server before timing out a single request.\n *\n * Note that request timeouts are retried by default, so in a worst-case scenario you may wait\n * much longer than this timeout before the promise succeeds or fails.\n *\n * @unit milliseconds\n */\n timeout?: number | undefined;\n /**\n * Additional `RequestInit` options to be passed to `fetch` calls.\n * Properties will be overridden by per-request `fetchOptions`.\n */\n fetchOptions?: MergedRequestInit | undefined;\n\n /**\n * Specify a custom `fetch` function implementation.\n *\n * If not provided, we expect that `fetch` is defined globally.\n */\n fetch?: Fetch | undefined;\n\n /**\n * The maximum number of times that the client will retry a request in case of a\n * temporary failure, like a network error or a 5XX error from the server.\n *\n * @default 2\n */\n maxRetries?: number | undefined;\n\n /**\n * Default headers to include with every request to the API.\n *\n * These can be removed in individual requests by explicitly setting the\n * header to `null` in request options.\n */\n defaultHeaders?: HeadersLike | undefined;\n\n /**\n * Default query parameters to include with every request to the API.\n *\n * These can be removed in individual requests by explicitly setting the\n * param to `undefined` in request options.\n */\n defaultQuery?: Record<string, string | undefined> | undefined;\n\n /**\n * By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n * Only set this option to `true` if you understand the risks and have appropriate mitigations in place.\n */\n dangerouslyAllowBrowser?: boolean | undefined;\n\n /**\n * Set the log level.\n *\n * Defaults to process.env['ANTHROPIC_LOG'] or 'warn' if it isn't set.\n */\n logLevel?: LogLevel | undefined;\n\n /**\n * Set the logger.\n *\n * Defaults to globalThis.console.\n */\n logger?: Logger | undefined;\n}\n\nexport const HUMAN_PROMPT = '\\\\n\\\\nHuman:';\nexport const AI_PROMPT = '\\\\n\\\\nAssistant:';\n\n/**\n * Base class for Anthropic API clients.\n */\nexport class BaseAnthropic {\n apiKey: string | null;\n authToken: string | null;\n\n baseURL: string;\n maxRetries: number;\n timeout: number;\n logger: Logger | undefined;\n logLevel: LogLevel | undefined;\n fetchOptions: MergedRequestInit | undefined;\n\n private fetch: Fetch;\n #encoder: Opts.RequestEncoder;\n protected idempotencyHeader?: string;\n protected _options: ClientOptions;\n\n /**\n * API Client for interfacing with the Anthropic API.\n *\n * @param {string | null | undefined} [opts.apiKey=process.env['ANTHROPIC_API_KEY'] ?? null]\n * @param {string | null | undefined} [opts.authToken=process.env['ANTHROPIC_AUTH_TOKEN'] ?? null]\n * @param {string} [opts.baseURL=process.env['ANTHROPIC_BASE_URL'] ?? https://api.anthropic.com] - Override the default base URL for the API.\n * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.\n * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API.\n * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.\n * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n */\n constructor({\n baseURL = readEnv('ANTHROPIC_BASE_URL'),\n apiKey = readEnv('ANTHROPIC_API_KEY') ?? null,\n authToken = readEnv('ANTHROPIC_AUTH_TOKEN') ?? null,\n ...opts\n }: ClientOptions = {}) {\n const options: ClientOptions = {\n apiKey,\n authToken,\n ...opts,\n baseURL: baseURL || `https://api.anthropic.com`,\n };\n\n if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n throw new Errors.AnthropicError(\n \"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew Anthropic({ apiKey, dangerouslyAllowBrowser: true });\\n\",\n );\n }\n\n this.baseURL = options.baseURL!;\n this.timeout = options.timeout ?? BaseAnthropic.DEFAULT_TIMEOUT /* 10 minutes */;\n this.logger = options.logger ?? console;\n const defaultLogLevel = 'warn';\n // Set default logLevel early so that we can log a warning in parseLogLevel.\n this.logLevel = defaultLogLevel;\n this.logLevel =\n parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??\n parseLogLevel(readEnv('ANTHROPIC_LOG'), \"process.env['ANTHROPIC_LOG']\", this) ??\n defaultLogLevel;\n this.fetchOptions = options.fetchOptions;\n this.maxRetries = options.maxRetries ?? 2;\n this.fetch = options.fetch ?? Shims.getDefaultFetch();\n this.#encoder = Opts.FallbackEncoder;\n\n this._options = options;\n\n this.apiKey = typeof apiKey === 'string' ? apiKey : null;\n this.authToken = authToken;\n }\n\n /**\n * Create a new client instance re-using the same options given to the current client with optional overriding.\n */\n withOptions(options: Partial<ClientOptions>): this {\n const client = new (this.constructor as any as new (props: ClientOptions) => typeof this)({\n ...this._options,\n baseURL: this.baseURL,\n maxRetries: this.maxRetries,\n timeout: this.timeout,\n logger: this.logger,\n logLevel: this.logLevel,\n fetch: this.fetch,\n fetchOptions: this.fetchOptions,\n apiKey: this.apiKey,\n authToken: this.authToken,\n ...options,\n });\n return client;\n }\n\n /**\n * Check whether the base URL is set to its default.\n */\n #baseURLOverridden(): boolean {\n return this.baseURL !== 'https://api.anthropic.com';\n }\n\n protected defaultQuery(): Record<string, string | undefined> | undefined {\n return this._options.defaultQuery;\n }\n\n protected validateHeaders({ values, nulls }: NullableHeaders) {\n if (values.get('x-api-key') || values.get('authorization')) {\n return;\n }\n\n if (this.apiKey && values.get('x-api-key')) {\n return;\n }\n if (nulls.has('x-api-key')) {\n return;\n }\n\n if (this.authToken && values.get('authorization')) {\n return;\n }\n if (nulls.has('authorization')) {\n return;\n }\n\n throw new Error(\n 'Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the \"X-Api-Key\" or \"Authorization\" headers to be explicitly omitted',\n );\n }\n\n protected async authHeaders(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {\n return buildHeaders([await this.apiKeyAuth(opts), await this.bearerAuth(opts)]);\n }\n\n protected async apiKeyAuth(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {\n if (this.apiKey == null) {\n return undefined;\n }\n return buildHeaders([{ 'X-Api-Key': this.apiKey }]);\n }\n\n protected async bearerAuth(opts: FinalRequestOptions): Promise<NullableHeaders | undefined> {\n if (this.authToken == null) {\n return undefined;\n }\n return buildHeaders([{ Authorization: `Bearer ${this.authToken}` }]);\n }\n\n /**\n * Basic re-implementation of `qs.stringify` for primitive types.\n */\n protected stringifyQuery(query: Record<string, unknown>): string {\n return Object.entries(query)\n .filter(([_, value]) => typeof value !== 'undefined')\n .map(([key, value]) => {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n }\n if (value === null) {\n return `${encodeURIComponent(key)}=`;\n }\n throw new Errors.AnthropicError(\n `Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`,\n );\n })\n .join('&');\n }\n\n private getUserAgent(): string {\n return `${this.constructor.name}/JS ${VERSION}`;\n }\n\n protected defaultIdempotencyKey(): string {\n return `stainless-node-retry-${uuid4()}`;\n }\n\n protected makeStatusError(\n status: number,\n error: Object,\n message: string | undefined,\n headers: Headers,\n ): Errors.APIError {\n return Errors.APIError.generate(status, error, message, headers);\n }\n\n buildURL(\n path: string,\n query: Record<string, unknown> | null | undefined,\n defaultBaseURL?: string | undefined,\n ): string {\n const baseURL = (!this.#baseURLOverridden() && defaultBaseURL) || this.baseURL;\n const url =\n isAbsoluteURL(path) ?\n new URL(path)\n : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n\n const defaultQuery = this.defaultQuery();\n if (!isEmptyObj(defaultQuery)) {\n query = { ...defaultQuery, ...query };\n }\n\n if (typeof query === 'object' && query && !Array.isArray(query)) {\n url.search = this.stringifyQuery(query as Record<string, unknown>);\n }\n\n return url.toString();\n }\n\n _calculateNonstreamingTimeout(maxTokens: number): number {\n const defaultTimeout = 10 * 60;\n const expectedTimeout = (60 * 60 * maxTokens) / 128_000;\n if (expectedTimeout > defaultTimeout) {\n throw new Errors.AnthropicError(\n 'Streaming is required for operations that may take longer than 10 minutes. ' +\n 'See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details',\n );\n }\n return defaultTimeout * 1000;\n }\n\n /**\n * Used as a callback for mutating the given `FinalRequestOptions` object.\n */\n protected async prepareOptions(options: FinalRequestOptions): Promise<void> {}\n\n /**\n * Used as a callback for mutating the given `RequestInit` object.\n *\n * This is useful for cases where you want to add certain headers based off of\n * the request properties, e.g. `method` or `url`.\n */\n protected async prepareRequest(\n request: RequestInit,\n { url, options }: { url: string; options: FinalRequestOptions },\n ): Promise<void> {}\n\n get<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n return this.methodRequest('get', path, opts);\n }\n\n post<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n return this.methodRequest('post', path, opts);\n }\n\n patch<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n return this.methodRequest('patch', path, opts);\n }\n\n put<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n return this.methodRequest('put', path, opts);\n }\n\n delete<Rsp>(path: string, opts?: PromiseOrValue<RequestOptions>): APIPromise<Rsp> {\n return this.methodRequest('delete', path, opts);\n }\n\n private methodRequest<Rsp>(\n method: HTTPMethod,\n path: string,\n opts?: PromiseOrValue<RequestOptions>,\n ): APIPromise<Rsp> {\n return this.request(\n Promise.resolve(opts).then((opts) => {\n return { method, path, ...opts };\n }),\n );\n }\n\n request<Rsp>(\n options: PromiseOrValue<FinalRequestOptions>,\n remainingRetries: number | null = null,\n ): APIPromise<Rsp> {\n return new APIPromise(this, this.makeRequest(options, remainingRetries, undefined));\n }\n\n private async makeRequest(\n optionsInput: PromiseOrValue<FinalRequestOptions>,\n retriesRemaining: number | null,\n retryOfRequestLogID: string | undefined,\n ): Promise<APIResponseProps> {\n const options = await optionsInput;\n const maxRetries = options.maxRetries ?? this.maxRetries;\n if (retriesRemaining == null) {\n retriesRemaining = maxRetries;\n }\n\n await this.prepareOptions(options);\n\n const { req, url, timeout } = await this.buildRequest(options, {\n retryCount: maxRetries - retriesRemaining,\n });\n\n await this.prepareRequest(req, { url, options });\n\n /** Not an API request ID, just for correlating local log entries. */\n const requestLogID = 'log_' + ((Math.random() * (1 << 24)) | 0).toString(16).padStart(6, '0');\n const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;\n const startTime = Date.now();\n\n loggerFor(this).debug(\n `[${requestLogID}] sending request`,\n formatRequestDetails({\n retryOfRequestLogID,\n method: options.method,\n url,\n options,\n headers: req.headers,\n }),\n );\n\n if (options.signal?.aborted) {\n throw new Errors.APIUserAbortError();\n }\n\n const controller = new AbortController();\n const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n const headersTime = Date.now();\n\n if (response instanceof globalThis.Error) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n if (options.signal?.aborted) {\n throw new Errors.APIUserAbortError();\n }\n // detect native connection timeout errors\n // deno throws \"TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)\"\n // undici throws \"TypeError: fetch failed\" with cause \"ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)\"\n // others do not provide enough information to distinguish timeouts from other connection errors\n const isTimeout =\n isAbortError(response) ||\n /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));\n if (retriesRemaining) {\n loggerFor(this).info(\n `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`,\n );\n loggerFor(this).debug(\n `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`,\n formatRequestDetails({\n retryOfRequestLogID,\n url,\n durationMs: headersTime - startTime,\n message: response.message,\n }),\n );\n return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);\n }\n loggerFor(this).info(\n `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`,\n );\n loggerFor(this).debug(\n `[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`,\n formatRequestDetails({\n retryOfRequestLogID,\n url,\n durationMs: headersTime - startTime,\n message: response.message,\n }),\n );\n if (isTimeout) {\n throw new Errors.APIConnectionTimeoutError();\n }\n throw new Errors.APIConnectionError({ cause: response });\n }\n\n const specialHeaders = [...response.headers.entries()]\n .filter(([name]) => name === 'request-id')\n .map(([name, value]) => ', ' + name + ': ' + JSON.stringify(value))\n .join('');\n const responseInfo = `[${requestLogID}${retryLogStr}${specialHeaders}] ${req.method} ${url} ${\n response.ok ? 'succeeded' : 'failed'\n } with status ${response.status} in ${headersTime - startTime}ms`;\n\n if (!response.ok) {\n const shouldRetry = await this.shouldRetry(response);\n if (retriesRemaining && shouldRetry) {\n const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n\n // We don't need the body of this response.\n await Shims.CancelReadableStream(response.body);\n loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n loggerFor(this).debug(\n `[${requestLogID}] response error (${retryMessage})`,\n formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n durationMs: headersTime - startTime,\n }),\n );\n return this.retryRequest(\n options,\n retriesRemaining,\n retryOfRequestLogID ?? requestLogID,\n response.headers,\n );\n }\n\n const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;\n\n loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n\n const errText = await response.text().catch((err: any) => castToError(err).message);\n const errJSON = safeJSON(errText);\n const errMessage = errJSON ? undefined : errText;\n\n loggerFor(this).debug(\n `[${requestLogID}] response error (${retryMessage})`,\n formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n message: errMessage,\n durationMs: Date.now() - startTime,\n }),\n );\n\n const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);\n throw err;\n }\n\n loggerFor(this).info(responseInfo);\n loggerFor(this).debug(\n `[${requestLogID}] response start`,\n formatRequestDetails({\n retryOfRequestLogID,\n url: response.url,\n status: response.status,\n headers: response.headers,\n durationMs: headersTime - startTime,\n }),\n );\n\n return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };\n }\n\n getAPIList<Item, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(\n path: string,\n Page: new (...args: any[]) => PageClass,\n opts?: RequestOptions,\n ): Pagination.PagePromise<PageClass, Item> {\n return this.requestAPIList(Page, { method: 'get', path, ...opts });\n }\n\n requestAPIList<\n Item = unknown,\n PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>,\n >(\n Page: new (...args: ConstructorParameters<typeof Pagination.AbstractPage>) => PageClass,\n options: FinalRequestOptions,\n ): Pagination.PagePromise<PageClass, Item> {\n const request = this.makeRequest(options, null, undefined);\n return new Pagination.PagePromise<PageClass, Item>(this as any as Anthropic, request, Page);\n }\n\n async fetchWithTimeout(\n url: RequestInfo,\n init: RequestInit | undefined,\n ms: number,\n controller: AbortController,\n ): Promise<Response> {\n const { signal, method, ...options } = init || {};\n if (signal) signal.addEventListener('abort', () => controller.abort());\n\n const timeout = setTimeout(() => controller.abort(), ms);\n\n const isReadableBody =\n ((globalThis as any).ReadableStream && options.body instanceof (globalThis as any).ReadableStream) ||\n (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);\n\n const fetchOptions: RequestInit = {\n signal: controller.signal as any,\n ...(isReadableBody ? { duplex: 'half' } : {}),\n method: 'GET',\n ...options,\n };\n if (method) {\n // Custom methods like 'patch' need to be uppercased\n // See https://github.com/nodejs/undici/issues/2294\n fetchOptions.method = method.toUpperCase();\n }\n\n try {\n // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n return await this.fetch.call(undefined, url, fetchOptions);\n } finally {\n clearTimeout(timeout);\n }\n }\n\n private async shouldRetry(response: Response): Promise<boolean> {\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get('x-should-retry');\n\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === 'true') return true;\n if (shouldRetryHeader === 'false') return false;\n\n // Retry on request timeouts.\n if (response.status === 408) return true;\n\n // Retry on lock timeouts.\n if (response.status === 409) return true;\n\n // Retry on rate limits.\n if (response.status === 429) return true;\n\n // Retry internal errors.\n if (response.status >= 500) return true;\n\n return false;\n }\n\n private async retryRequest(\n options: FinalRequestOptions,\n retriesRemaining: number,\n requestLogID: string,\n responseHeaders?: Headers | undefined,\n ): Promise<APIResponseProps> {\n let timeoutMillis: number | undefined;\n\n // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');\n if (retryAfterMillisHeader) {\n const timeoutMs = parseFloat(retryAfterMillisHeader);\n if (!Number.isNaN(timeoutMs)) {\n timeoutMillis = timeoutMs;\n }\n }\n\n // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n const retryAfterHeader = responseHeaders?.get('retry-after');\n if (retryAfterHeader && !timeoutMillis) {\n const timeoutSeconds = parseFloat(retryAfterHeader);\n if (!Number.isNaN(timeoutSeconds)) {\n timeoutMillis = timeoutSeconds * 1000;\n } else {\n timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n }\n }\n\n // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n // just do what it says, but otherwise calculate a default\n if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n const maxRetries = options.maxRetries ?? this.maxRetries;\n timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n }\n await sleep(timeoutMillis);\n\n return this.makeRequest(options, retriesRemaining - 1, requestLogID);\n }\n\n private calculateDefaultRetryTimeoutMillis(retriesRemaining: number, maxRetries: number): number {\n const initialRetryDelay = 0.5;\n const maxRetryDelay = 8.0;\n\n const numRetries = maxRetries - retriesRemaining;\n\n // Apply exponential backoff, but not more than the max.\n const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n\n // Apply some jitter, take up to at most 25 percent of the retry time.\n const jitter = 1 - Math.random() * 0.25;\n\n return sleepSeconds * jitter * 1000;\n }\n\n public calculateNonstreamingTimeout(maxTokens: number, maxNonstreamingTokens?: number): number {\n const maxTime = 60 * 60 * 1000; // 60 minutes\n const defaultTime = 60 * 10 * 1000; // 10 minutes\n\n const expectedTime = (maxTime * maxTokens) / 128000;\n if (expectedTime > defaultTime || (maxNonstreamingTokens != null && maxTokens > maxNonstreamingTokens)) {\n throw new Errors.AnthropicError(\n 'Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details',\n );\n }\n\n return defaultTime;\n }\n\n async buildRequest(\n inputOptions: FinalRequestOptions,\n { retryCount = 0 }: { retryCount?: number } = {},\n ): Promise<{ req: FinalizedRequestInit; url: string; timeout: number }> {\n const options = { ...inputOptions };\n const { method, path, query, defaultBaseURL } = options;\n\n const url = this.buildURL(path!, query as Record<string, unknown>, defaultBaseURL);\n if ('timeout' in options) validatePositiveInteger('timeout', options.timeout);\n options.timeout = options.timeout ?? this.timeout;\n const { bodyHeaders, body } = this.buildBody({ options });\n const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });\n\n const req: FinalizedRequestInit = {\n method,\n headers: reqHeaders,\n ...(options.signal && { signal: options.signal }),\n ...((globalThis as any).ReadableStream &&\n body instanceof (globalThis as any).ReadableStream && { duplex: 'half' }),\n ...(body && { body }),\n ...((this.fetchOptions as any) ?? {}),\n ...((options.fetchOptions as any) ?? {}),\n };\n\n return { req, url, timeout: options.timeout };\n }\n\n private async buildHeaders({\n options,\n method,\n bodyHeaders,\n retryCount,\n }: {\n options: FinalRequestOptions;\n method: HTTPMethod;\n bodyHeaders: HeadersLike;\n retryCount: number;\n }): Promise<Headers> {\n let idempotencyHeaders: HeadersLike = {};\n if (this.idempotencyHeader && method !== 'get') {\n if (!options.idempotencyKey) options.idempotencyKey = this.defaultIdempotencyKey();\n idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey;\n }\n\n const headers = buildHeaders([\n idempotencyHeaders,\n {\n Accept: 'application/json',\n 'User-Agent': this.getUserAgent(),\n 'X-Stainless-Retry-Count': String(retryCount),\n ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),\n ...getPlatformHeaders(),\n ...(this._options.dangerouslyAllowBrowser ?\n { 'anthropic-dangerous-direct-browser-access': 'true' }\n : undefined),\n 'anthropic-version': '2023-06-01',\n },\n await this.authHeaders(options),\n this._options.defaultHeaders,\n bodyHeaders,\n options.headers,\n ]);\n\n this.validateHeaders(headers);\n\n return headers.values;\n }\n\n private buildBody({ options: { body, headers: rawHeaders } }: { options: FinalRequestOptions }): {\n bodyHeaders: HeadersLike;\n body: BodyInit | undefined;\n } {\n if (!body) {\n return { bodyHeaders: undefined, body: undefined };\n }\n const headers = buildHeaders([rawHeaders]);\n if (\n // Pass raw type verbatim\n ArrayBuffer.isView(body) ||\n body instanceof ArrayBuffer ||\n body instanceof DataView ||\n (typeof body === 'string' &&\n // Preserve legacy string encoding behavior for now\n headers.values.has('content-type')) ||\n // `Blob` is superset of `File`\n ((globalThis as any).Blob && body instanceof (globalThis as any).Blob) ||\n // `FormData` -> `multipart/form-data`\n body instanceof FormData ||\n // `URLSearchParams` -> `application/x-www-form-urlencoded`\n body instanceof URLSearchParams ||\n // Send chunked stream (each chunk has own `length`)\n ((globalThis as any).ReadableStream && body instanceof (globalThis as any).ReadableStream)\n ) {\n return { bodyHeaders: undefined, body: body as BodyInit };\n } else if (\n typeof body === 'object' &&\n (Symbol.asyncIterator in body ||\n (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))\n ) {\n return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body as AsyncIterable<Uint8Array>) };\n } else {\n return this.#encoder({ body, headers });\n }\n }\n\n static Anthropic = this;\n static HUMAN_PROMPT = HUMAN_PROMPT;\n static AI_PROMPT = AI_PROMPT;\n static DEFAULT_TIMEOUT = 600000; // 10 minutes\n\n static AnthropicError = Errors.AnthropicError;\n static APIError = Errors.APIError;\n static APIConnectionError = Errors.APIConnectionError;\n static APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\n static APIUserAbortError = Errors.APIUserAbortError;\n static NotFoundError = Errors.NotFoundError;\n static ConflictError = Errors.ConflictError;\n static RateLimitError = Errors.RateLimitError;\n static BadRequestError = Errors.BadRequestError;\n static AuthenticationError = Errors.AuthenticationError;\n static InternalServerError = Errors.InternalServerError;\n static PermissionDeniedError = Errors.PermissionDeniedError;\n static UnprocessableEntityError = Errors.UnprocessableEntityError;\n\n static toFile = Uploads.toFile;\n}\n\n/**\n * API Client for interfacing with the Anthropic API.\n */\nexport class Anthropic extends BaseAnthropic {\n completions: API.Completions = new API.Completions(this);\n messages: API.Messages = new API.Messages(this);\n models: API.Models = new API.Models(this);\n beta: API.Beta = new API.Beta(this);\n}\n\nAnthropic.Completions = Completions;\nAnthropic.Messages = Messages;\nAnthropic.Models = Models;\nAnthropic.Beta = Beta;\n\nexport declare namespace Anthropic {\n export type RequestOptions = Opts.RequestOptions;\n\n export type { ApiKeySetter };\n\n export import Page = Pagination.Page;\n export { type PageParams as PageParams, type PageResponse as PageResponse };\n\n export import TokenPage = Pagination.TokenPage;\n export { type TokenPageParams as TokenPageParams, type TokenPageResponse as TokenPageResponse };\n\n export import PageCursor = Pagination.PageCursor;\n export { type PageCursorParams as PageCursorParams, type PageCursorResponse as PageCursorResponse };\n\n export {\n Completions as Completions,\n type Completion as Completion,\n type CompletionCreateParams as CompletionCreateParams,\n type CompletionCreateParamsNonStreaming as CompletionCreateParamsNonStreaming,\n type CompletionCreateParamsStreaming as CompletionCreateParamsStreaming,\n };\n\n export {\n Messages as Messages,\n type Base64ImageSource as Base64ImageSource,\n type Base64PDFSource as Base64PDFSource,\n type CacheControlEphemeral as CacheControlEphemeral,\n type CacheCreation as CacheCreation,\n type CitationCharLocation as CitationCharLocation,\n type CitationCharLocationParam as CitationCharLocationParam,\n type CitationContentBlockLocation as CitationContentBlockLocation,\n type CitationContentBlockLocationParam as CitationContentBlockLocationParam,\n type CitationPageLocation as CitationPageLocation,\n type CitationPageLocationParam as CitationPageLocationParam,\n type CitationSearchResultLocationParam as CitationSearchResultLocationParam,\n type CitationWebSearchResultLocationParam as CitationWebSearchResultLocationParam,\n type CitationsConfigParam as CitationsConfigParam,\n type CitationsDelta as CitationsDelta,\n type CitationsSearchResultLocation as CitationsSearchResultLocation,\n type CitationsWebSearchResultLocation as CitationsWebSearchResultLocation,\n type ContentBlock as ContentBlock,\n type ContentBlockDeltaEvent as ContentBlockDeltaEvent,\n type ContentBlockParam as ContentBlockParam,\n type ContentBlockStartEvent as ContentBlockStartEvent,\n type ContentBlockStopEvent as ContentBlockStopEvent,\n type ContentBlockSource as ContentBlockSource,\n type ContentBlockSourceContent as ContentBlockSourceContent,\n type DocumentBlockParam as DocumentBlockParam,\n type ImageBlockParam as ImageBlockParam,\n type InputJSONDelta as InputJSONDelta,\n type Message as Message,\n type MessageCountTokensTool as MessageCountTokensTool,\n type MessageDeltaEvent as MessageDeltaEvent,\n type MessageDeltaUsage as MessageDeltaUsage,\n type MessageParam as MessageParam,\n type MessageStartEvent as MessageStartEvent,\n type MessageStopEvent as MessageStopEvent,\n type MessageStreamEvent as MessageStreamEvent,\n type MessageTokensCount as MessageTokensCount,\n type Metadata as Metadata,\n type Model as Model,\n type PlainTextSource as PlainTextSource,\n type RawContentBlockDelta as RawContentBlockDelta,\n type RawContentBlockDeltaEvent as RawContentBlockDeltaEvent,\n type RawContentBlockStartEvent as RawContentBlockStartEvent,\n type RawContentBlockStopEvent as RawContentBlockStopEvent,\n type RawMessageDeltaEvent as RawMessageDeltaEvent,\n type RawMessageStartEvent as RawMessageStartEvent,\n type RawMessageStopEvent as RawMessageStopEvent,\n type RawMessageStreamEvent as RawMessageStreamEvent,\n type RedactedThinkingBlock as RedactedThinkingBlock,\n type RedactedThinkingBlockParam as RedactedThinkingBlockParam,\n type SearchResultBlockParam as SearchResultBlockParam,\n type ServerToolUsage as ServerToolUsage,\n type ServerToolUseBlock as ServerToolUseBlock,\n type ServerToolUseBlockParam as ServerToolUseBlockParam,\n type SignatureDelta as SignatureDelta,\n type StopReason as StopReason,\n type TextBlock as TextBlock,\n type TextBlockParam as TextBlockParam,\n type TextCitation as TextCitation,\n type TextCitationParam as TextCitationParam,\n type TextDelta as TextDelta,\n type ThinkingBlock as ThinkingBlock,\n type ThinkingBlockParam as ThinkingBlockParam,\n type ThinkingConfigDisabled as ThinkingConfigDisabled,\n type ThinkingConfigEnabled as ThinkingConfigEnabled,\n type ThinkingConfigParam as ThinkingConfigParam,\n type ThinkingDelta as ThinkingDelta,\n type Tool as Tool,\n type ToolBash20250124 as ToolBash20250124,\n type ToolChoice as ToolChoice,\n type ToolChoiceAny as ToolChoiceAny,\n type ToolChoiceAuto as ToolChoiceAuto,\n type ToolChoiceNone as ToolChoiceNone,\n type ToolChoiceTool as ToolChoiceTool,\n type ToolResultBlockParam as ToolResultBlockParam,\n type ToolTextEditor20250124 as ToolTextEditor20250124,\n type ToolTextEditor20250429 as ToolTextEditor20250429,\n type ToolTextEditor20250728 as ToolTextEditor20250728,\n type ToolUnion as ToolUnion,\n type ToolUseBlock as ToolUseBlock,\n type ToolUseBlockParam as ToolUseBlockParam,\n type URLImageSource as URLImageSource,\n type URLPDFSource as URLPDFSource,\n type Usage as Usage,\n type WebSearchResultBlock as WebSearchResultBlock,\n type WebSearchResultBlockParam as WebSearchResultBlockParam,\n type WebSearchTool20250305 as WebSearchTool20250305,\n type WebSearchToolRequestError as WebSearchToolRequestError,\n type WebSearchToolResultBlock as WebSearchToolResultBlock,\n type WebSearchToolResultBlockContent as WebSearchToolResultBlockContent,\n type WebSearchToolResultBlockParam as WebSearchToolResultBlockParam,\n type WebSearchToolResultBlockParamContent as WebSearchToolResultBlockParamContent,\n type WebSearchToolResultError as WebSearchToolResultError,\n type MessageCreateParams as MessageCreateParams,\n type MessageCreateParamsNonStreaming as MessageCreateParamsNonStreaming,\n type MessageCreateParamsStreaming as MessageCreateParamsStreaming,\n type MessageStreamParams as MessageStreamParams,\n type MessageCountTokensParams as MessageCountTokensParams,\n };\n\n export {\n Models as Models,\n type ModelInfo as ModelInfo,\n type ModelInfosPage as ModelInfosPage,\n type ModelRetrieveParams as ModelRetrieveParams,\n type ModelListParams as ModelListParams,\n };\n\n export {\n Beta as Beta,\n type AnthropicBeta as AnthropicBeta,\n type BetaAPIError as BetaAPIError,\n type BetaAuthenticationError as BetaAuthenticationError,\n type BetaBillingError as BetaBillingError,\n type BetaError as BetaError,\n type BetaErrorResponse as BetaErrorResponse,\n type BetaGatewayTimeoutError as BetaGatewayTimeoutError,\n type BetaInvalidRequestError as BetaInvalidRequestError,\n type BetaNotFoundError as BetaNotFoundError,\n type BetaOverloadedError as BetaOverloadedError,\n type BetaPermissionError as BetaPermissionError,\n type BetaRateLimitError as BetaRateLimitError,\n };\n\n export type APIErrorObject = API.APIErrorObject;\n export type AuthenticationError = API.AuthenticationError;\n export type BillingError = API.BillingError;\n export type ErrorObject = API.ErrorObject;\n export type ErrorResponse = API.ErrorResponse;\n export type GatewayTimeoutError = API.GatewayTimeoutError;\n export type InvalidRequestError = API.InvalidRequestError;\n export type NotFoundError = API.NotFoundError;\n export type OverloadedError = API.OverloadedError;\n export type PermissionError = API.PermissionError;\n export type RateLimitError = API.RateLimitError;\n}\n","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n var _a;\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod ?? {},\n enumerable: false,\n });\n (_a = inst._zod).traits ?? (_a.traits = new Set());\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n for (const k in _.prototype) {\n if (!(k in inst))\n Object.defineProperty(inst, k, { value: _.prototype[k].bind(inst) });\n }\n inst._zod.constr = _;\n inst._zod.def = def;\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error();\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function 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 = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport function defineLazy(object, key, getter) {\n const set = false;\n Object.defineProperty(object, key, {\n get() {\n if (!set) {\n const value = getter();\n object[key] = value;\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport const captureStackTrace = Error.captureStackTrace\n ? Error.captureStackTrace\n : (..._args) => { };\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const newShape = {};\n const currDef = schema._zod.def; //.shape;\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // pick key\n newShape[key] = currDef.shape[key];\n }\n return clone(schema, {\n ...schema._zod.def,\n shape: newShape,\n checks: [],\n });\n}\nexport function omit(schema, mask) {\n const newShape = { ...schema._zod.def.shape };\n const currDef = schema._zod.def; //.shape;\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n return clone(schema, {\n ...schema._zod.def,\n shape: newShape,\n checks: [],\n });\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const def = {\n ...schema._zod.def,\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: [], // delete existing checks\n };\n return clone(schema, def);\n}\nexport function merge(a, b) {\n return clone(a, {\n ...a._zod.def,\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n catchall: b._zod.def.catchall,\n checks: [], // delete existing checks\n });\n}\nexport function partial(Class, schema, mask) {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n return clone(schema, {\n ...schema._zod.def,\n shape,\n checks: [],\n });\n}\nexport function required(Class, schema, mask) {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n return clone(schema, {\n ...schema._zod.def,\n shape,\n // optional: [],\n checks: [],\n });\n}\nexport function aborted(x, startIndex = 0) {\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true)\n return true;\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n Object.defineProperty(inst, \"message\", {\n get() {\n return JSON.stringify(def, util.jsonStringifyReplacer, 2);\n },\n enumerable: true,\n // configurable: false,\n });\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.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}\nexport function formatError(error, _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\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\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 }\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(error);\n return fieldErrors;\n}\nexport function treeifyError(error, _mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(path) {\n const segs = [];\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => a.path.length - b.path.length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\n","export const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?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/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[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/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const browserEmail = /^[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// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nexport const _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?: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])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/;\nexport const cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(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\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp =\n// /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$/;\nexport const hostname = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nexport const e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\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 dateSource = `(?:(?:\\\\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])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^\\d+n?$/;\nexport const integer = /^\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?/i;\nexport const boolean = /true|false/i;\nconst _null = /null/i;\nexport { _null as null };\nconst _undefined = /undefined/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inst,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 0,\n patch: 0,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n //\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n inst._zod.run = (payload, ctx) => {\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n inst[\"~standard\"] = {\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n };\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n const orig = payload.value;\n const url = new URL(orig);\n const href = url.href;\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: regexes.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // payload.value = url.href;\n if (!orig.endsWith(\"/\") && href.endsWith(\"/\")) {\n payload.value = href.slice(0, -1);\n }\n else {\n payload.value = href;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv4`;\n });\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = `ipv6`;\n });\n inst._zod.check = (payload) => {\n try {\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const [address, prefix] = payload.value.split(\"/\");\n try {\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.contentEncoding = \"base64url\";\n });\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checksp\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handleObjectResult(result, final, key) {\n // if(isOptional)\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n final.value[key] = result.value;\n}\nfunction handleOptionalObjectResult(result, final, key, input) {\n if (result.issues.length) {\n // validation failed against value schema\n if (input[key] === undefined) {\n // if input was undefined, ignore the error\n if (key in input) {\n final.value[key] = undefined;\n }\n else {\n final.value[key] = result.value;\n }\n }\n else {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n }\n else if (result.value === undefined) {\n // validation returned `undefined`\n if (key in input)\n final.value[key] = undefined;\n }\n else {\n // non-undefined value\n final.value[key] = result.value;\n }\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n const _normalized = util.cached(() => {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!(def.shape[k] instanceof $ZodType)) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n shape: def.shape,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n });\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {}`);\n for (const key of normalized.keys) {\n if (normalized.optionalKeys.has(key)) {\n const id = ids[key];\n doc.write(`const ${id} = ${parseStr(key)};`);\n const k = util.esc(key);\n doc.write(`\n if (${id}.issues.length) {\n if (input[${k}] === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n payload.issues = payload.issues.concat(\n ${id}.issues.map((iss) => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}],\n }))\n );\n }\n } else if (${id}.value === undefined) {\n if (${k} in input) newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n `);\n }\n else {\n const id = ids[key];\n // const id = ids[key];\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${util.esc(key)}, ...iss.path] : [${util.esc(key)}]\n })));`);\n doc.write(`newResult[${util.esc(key)}] = ${id}.value`);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n }\n else {\n payload.value = {};\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n // do not add omitted optional keys\n // if (!(key in input)) {\n // if (optionalKeys.has(key)) continue;\n // payload.issues.push({\n // code: \"invalid_type\",\n // path: [key],\n // expected: \"nonoptional\",\n // note: `Missing required key: \"${key}\"`,\n // input,\n // inst,\n // });\n // }\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n const isOptional = el._zod.optin === \"optional\" && el._zod.optout === \"optional\";\n if (r instanceof Promise) {\n proms.push(r.then((r) => isOptional ? handleOptionalObjectResult(r, payload, key, input) : handleObjectResult(r, payload, key)));\n }\n else if (isOptional) {\n handleOptionalObjectResult(r, payload, key, input);\n }\n else {\n handleObjectResult(r, payload, key);\n }\n }\n }\n if (!catchall) {\n // return payload;\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n const unrecognized = [];\n // iterate over input keys\n const keySet = value.keySet;\n const _catchall = catchall._zod;\n const t = _catchall.def.type;\n for (const key of Object.keys(input)) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handleObjectResult(r, payload, key)));\n }\n else {\n handleObjectResult(r, payload, key);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).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 {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\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 {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n if (left.issues.length) {\n result.issues.push(...left.issues);\n }\n if (right.issues.length) {\n result.issues.push(...right.issues);\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n const optStart = items.length - [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n input,\n inst,\n origin: \"array\",\n ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n if (def.keyType._zod.values) {\n const values = def.keyType._zod.values;\n payload.value = {};\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!values.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n origin: \"record\",\n code: \"invalid_key\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n payload.value[keyResult.value] = keyResult.value;\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_key\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n inst._zod.values = new Set(values);\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.values = new Set(def.values);\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? o.toString() : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const _out = def.transform(payload.value, payload);\n if (_ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n return def.innerType._zod.run(payload, ctx);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault always returns the default value immediately.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def, ctx));\n }\n return handlePipeResult(left, def, ctx);\n };\n});\nfunction handlePipeResult(left, def, ctx) {\n if (util.aborted(left)) {\n return left;\n }\n return def.out._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (part instanceof $ZodType) {\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"template_literal\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType._zod.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","import * as util from \"../core/util.js\";\nexport const parsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"NaN\" : \"number\";\n }\n case \"object\": {\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {\n return data.constructor.name;\n }\n }\n }\n return t;\n};\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const Nouns = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\":\n return `Invalid input: expected ${issue.expected}, received ${parsedType(issue.input)}`;\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${Nouns[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","export const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new Map();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n if (this._idmap.has(meta.id)) {\n throw new Error(`ID ${meta.id} already exists in the registry`);\n }\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new Map();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n return { ...pm, ...this._map.get(schema) };\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\nexport const globalRegistry = /*@__PURE__*/ registry();\n","import * as checks from \"./checks.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n },\n });\n}\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// export function _refine<T>(\n// Class: util.SchemaClass<schemas.$ZodCustom>,\n// fn: (arg: NoInfer<T>) => util.MaybeAsync<unknown>,\n// _params: string | $ZodCustomParams = {}\n// ): checks.$ZodCheck<T> {\n// return _custom(Class, fn, _params);\n// }\n// same as _custom but defaults to abort:false\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Pipe = Classes.Pipe ?? schemas.$ZodPipe;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const _Transform = Classes.Transform ?? schemas.$ZodTransform;\n const tx = new _Transform({\n type: \"transform\",\n transform: (input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: tx,\n });\n return {};\n }\n },\n error: params.error,\n });\n // params.error;\n const innerPipe = new _Pipe({\n type: \"pipe\",\n in: new _String({ type: \"string\", error: params.error }),\n out: tx,\n error: params.error,\n });\n const outerPipe = new _Pipe({\n type: \"pipe\",\n in: innerPipe,\n out: new _Boolean({\n type: \"boolean\",\n error: params.error,\n }),\n error: params.error,\n });\n return outerPipe;\n}\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n",null,"import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => inst.issues.push(issue),\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => inst.issues.push(...issues),\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n inst.def = def;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone({\n ...def,\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }\n // { parent: true }\n );\n };\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return literal(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObject.init(inst, def);\n ZodType.init(inst, def);\n util.defineLazy(inst, \"shape\", () => def.shape);\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n // inst.nonstrict = () => inst.clone({ ...inst._zod.def, catchall: api.unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n get shape() {\n util.assignProp(this, \"shape\", { ...shape });\n return this.shape;\n },\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n get shape() {\n util.assignProp(this, \"shape\", { ...shape });\n return this.shape;\n },\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n get shape() {\n util.assignProp(this, \"shape\", { ...shape });\n return this.shape;\n },\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType: union([keyType, never()]),\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n _issue.continue ?? (_issue.continue = true);\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n const ch = check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort);\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`,\n}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Pipe: ZodPipe,\n Boolean: ZodBoolean,\n String: ZodString,\n Transform: ZodTransform,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, function, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, toJSONSchema, TimePrecision, NEVER, } from \"../core/index.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n",null,"import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[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}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?: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])$/,\n ipv4Cidr: /^(?:(?: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 /**\n * Unused\n */\n 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})))$/,\n ipv6Cidr: /^(([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 base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n",null,null,null,null,"/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string | undefined\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string | undefined\n\n /**\n * The line that caused the error, if available.\n */\n line?: string | undefined\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array<string>, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array<string> = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n // CR at the end of a chunk might be part of a CRLF sequence that spans chunks,\n // so we shouldn't treat it as a line terminator (yet)\n if (crIndex === chunk.length - 1) {\n lineEnd = -1\n } else {\n lineEnd = crIndex\n }\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n","/**\n * An extended version of the `Event` emitted by the `EventSource` object when an error occurs.\n * While the spec does not include any additional properties, we intentionally go beyond the spec\n * and provide some (minimal) additional information to aid in debugging.\n *\n * @public\n */\nexport class ErrorEvent extends Event {\n /**\n * HTTP status code, if this was triggered by an HTTP error\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public code?: number | undefined\n\n /**\n * Optional message attached to the error.\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public message?: string | undefined\n\n /**\n * Constructs a new `ErrorEvent` instance. This is typically not called directly,\n * but rather emitted by the `EventSource` object when an error occurs.\n *\n * @param type - The type of the event (should be \"error\")\n * @param errorEventInitDict - Optional properties to include in the error event\n */\n constructor(\n type: string,\n errorEventInitDict?: {message?: string | undefined; code?: number | undefined},\n ) {\n super(type)\n this.code = errorEventInitDict?.code ?? undefined\n this.message = errorEventInitDict?.message ?? undefined\n }\n\n /**\n * Node.js \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Node.js when you `console.log` an instance of this class.\n *\n * @param _depth - The current depth\n * @param options - The options passed to `util.inspect`\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @returns A string representation of the error\n */\n [Symbol.for('nodejs.util.inspect.custom')](\n _depth: number,\n options: {colors: boolean},\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n ): string {\n return inspect(inspectableError(this), options)\n }\n\n /**\n * Deno \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Deno when you `console.log` an instance of this class.\n *\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @param options - The options passed to `Deno.inspect`\n * @returns A string representation of the error\n */\n [Symbol.for('Deno.customInspect')](\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n options: {colors: boolean},\n ): string {\n return inspect(inspectableError(this), options)\n }\n}\n\n/**\n * For environments where DOMException may not exist, we will use a SyntaxError instead.\n * While this isn't strictly according to spec, it is very close.\n *\n * @param message - The message to include in the error\n * @returns A `DOMException` or `SyntaxError` instance\n * @internal\n */\nexport function syntaxError(message: string): SyntaxError {\n // If someone can figure out a way to make this work without depending on DOM/Node.js typings,\n // and without casting to `any`, please send a PR 🙏\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const DomException = (globalThis as any).DOMException\n if (typeof DomException === 'function') {\n return new DomException(message, 'SyntaxError')\n }\n\n return new SyntaxError(message)\n}\n\n/**\n * Flatten an error into a single error message string.\n * Unwraps nested errors and joins them with a comma.\n *\n * @param err - The error to flatten\n * @returns A string representation of the error\n * @internal\n */\nexport function flattenError(err: unknown): string {\n if (!(err instanceof Error)) {\n return `${err}`\n }\n\n if ('errors' in err && Array.isArray(err.errors)) {\n return err.errors.map(flattenError).join(', ')\n }\n\n if ('cause' in err && err.cause instanceof Error) {\n return `${err}: ${flattenError(err.cause)}`\n }\n\n return err.message\n}\n\n/**\n * Convert an `ErrorEvent` instance into a plain object for inspection.\n *\n * @param err - The `ErrorEvent` instance to inspect\n * @returns A plain object representation of the error\n * @internal\n */\nfunction inspectableError(err: ErrorEvent) {\n return {\n type: err.type,\n message: err.message,\n code: err.code,\n defaultPrevented: err.defaultPrevented,\n cancelable: err.cancelable,\n timeStamp: err.timeStamp,\n }\n}\n","import {createParser, type EventSourceMessage, type EventSourceParser} from 'eventsource-parser'\n\nimport {ErrorEvent, flattenError, syntaxError} from './errors.js'\nimport type {\n AddEventListenerOptions,\n EventListenerOptions,\n EventListenerOrEventListenerObject,\n EventSourceEventMap,\n EventSourceFetchInit,\n EventSourceInit,\n FetchLike,\n FetchLikeResponse,\n} from './types.js'\n\n/**\n * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events\n * in `text/event-stream` format. The connection remains open until closed by calling `.close()`.\n *\n * @public\n * @example\n * ```js\n * const eventSource = new EventSource('https://example.com/stream')\n * eventSource.addEventListener('error', (error) => {\n * console.error(error)\n * })\n * eventSource.addEventListener('message', (event) => {\n * console.log('Received message:', event.data)\n * })\n * ```\n */\nexport class EventSource extends EventTarget {\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n static CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n static OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n static CLOSED = 2 as const\n\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n readonly CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n readonly OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n readonly CLOSED = 2 as const\n\n /**\n * Returns the state of this EventSource object's connection. It can have the values described below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState)\n *\n * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface,\n * defined in the TypeScript `dom` library.\n *\n * @public\n */\n public get readyState(): number {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url)\n *\n * @public\n */\n public get url(): string {\n return this.#url.href\n }\n\n /**\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials)\n */\n public get withCredentials(): boolean {\n return this.#withCredentials\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */\n public get onerror(): ((ev: ErrorEvent) => unknown) | null {\n return this.#onError\n }\n public set onerror(value: ((ev: ErrorEvent) => unknown) | null) {\n this.#onError = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */\n public get onmessage(): ((ev: MessageEvent) => unknown) | null {\n return this.#onMessage\n }\n public set onmessage(value: ((ev: MessageEvent) => unknown) | null) {\n this.#onMessage = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */\n public get onopen(): ((ev: Event) => unknown) | null {\n return this.#onOpen\n }\n public set onopen(value: ((ev: Event) => unknown) | null) {\n this.#onOpen = value\n }\n\n override addEventListener<K extends keyof EventSourceEventMap>(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.addEventListener(type, listen, options)\n }\n\n override removeEventListener<K extends keyof EventSourceEventMap>(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.removeEventListener(type, listen, options)\n }\n\n constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) {\n super()\n\n try {\n if (url instanceof URL) {\n this.#url = url\n } else if (typeof url === 'string') {\n this.#url = new URL(url, getBaseURL())\n } else {\n throw new Error('Invalid URL')\n }\n } catch (err) {\n throw syntaxError('An invalid or illegal string was specified')\n }\n\n this.#parser = createParser({\n onEvent: this.#onEvent,\n onRetry: this.#onRetryChange,\n })\n\n this.#readyState = this.CONNECTING\n this.#reconnectInterval = 3000\n this.#fetch = eventSourceInitDict?.fetch ?? globalThis.fetch\n this.#withCredentials = eventSourceInitDict?.withCredentials ?? false\n\n this.#connect()\n }\n\n /**\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close)\n *\n * @public\n */\n close(): void {\n if (this.#reconnectTimer) clearTimeout(this.#reconnectTimer)\n if (this.#readyState === this.CLOSED) return\n if (this.#controller) this.#controller.abort()\n this.#readyState = this.CLOSED\n this.#controller = undefined\n }\n\n // PRIVATES FOLLOW\n\n /**\n * Current connection state\n *\n * @internal\n */\n #readyState: number\n\n /**\n * Original URL used to connect.\n *\n * Note that this will stay the same even after a redirect.\n *\n * @internal\n */\n #url: URL\n\n /**\n * The destination URL after a redirect. Is reset on reconnection.\n *\n * @internal\n */\n #redirectUrl: URL | undefined\n\n /**\n * Whether to include credentials in the request\n *\n * @internal\n */\n #withCredentials: boolean\n\n /**\n * The fetch implementation to use\n *\n * @internal\n */\n #fetch: FetchLike\n\n /**\n * The reconnection time in milliseconds\n *\n * @internal\n */\n #reconnectInterval: number\n\n /**\n * Reference to an ongoing reconnect attempt, if any\n *\n * @internal\n */\n #reconnectTimer: ReturnType<typeof setTimeout> | undefined\n\n /**\n * The last event ID seen by the EventSource, which will be sent as `Last-Event-ID` in the\n * request headers on a reconnection attempt.\n *\n * @internal\n */\n #lastEventId: string | null = null\n\n /**\n * The AbortController instance used to abort the fetch request\n *\n * @internal\n */\n #controller: AbortController | undefined\n\n /**\n * Instance of an EventSource parser (`eventsource-parser` npm module)\n *\n * @internal\n */\n #parser: EventSourceParser\n\n /**\n * Holds the current error handler, attached through `onerror` property directly.\n * Note that `addEventListener('error', …)` will not be stored here.\n *\n * @internal\n */\n #onError: ((ev: ErrorEvent) => unknown) | null = null\n\n /**\n * Holds the current message handler, attached through `onmessage` property directly.\n * Note that `addEventListener('message', …)` will not be stored here.\n *\n * @internal\n */\n #onMessage: ((ev: MessageEvent) => unknown) | null = null\n\n /**\n * Holds the current open handler, attached through `onopen` property directly.\n * Note that `addEventListener('open', …)` will not be stored here.\n *\n * @internal\n */\n #onOpen: ((ev: Event) => unknown) | null = null\n\n /**\n * Connect to the given URL and start receiving events\n *\n * @internal\n */\n #connect() {\n this.#readyState = this.CONNECTING\n this.#controller = new AbortController()\n\n // Browser tests are failing if we directly call `this.#fetch()`, thus the indirection.\n const fetch = this.#fetch\n fetch(this.#url, this.#getRequestOptions())\n .then(this.#onFetchResponse)\n .catch(this.#onFetchError)\n }\n\n /**\n * Handles the fetch response\n *\n * @param response - The Fetch(ish) response\n * @internal\n */\n #onFetchResponse = async (response: FetchLikeResponse) => {\n this.#parser.reset()\n\n const {body, redirected, status, headers} = response\n\n // [spec] a client can be told to stop reconnecting using the HTTP 204 No Content response code.\n if (status === 204) {\n // We still need to emit an error event - this mirrors the browser behavior,\n // and without it there is no way to tell the user that the connection was closed.\n this.#failConnection('Server sent HTTP 204, not reconnecting', 204)\n this.close()\n return\n }\n\n // [spec] …Event stream requests can be redirected using HTTP 301 and 307 redirects as with\n // [spec] normal HTTP requests.\n // Spec does not say anything about other redirect codes (302, 308), but this seems an\n // unintended omission, rather than a feature. Browsers will happily redirect on other 3xxs's.\n if (redirected) {\n this.#redirectUrl = new URL(response.url)\n } else {\n this.#redirectUrl = undefined\n }\n\n // [spec] if res's status is not 200, …, then fail the connection.\n if (status !== 200) {\n this.#failConnection(`Non-200 status code (${status})`, status)\n return\n }\n\n // [spec] …or if res's `Content-Type` is not `text/event-stream`, then fail the connection.\n const contentType = headers.get('content-type') || ''\n if (!contentType.startsWith('text/event-stream')) {\n this.#failConnection('Invalid content type, expected \"text/event-stream\"', status)\n return\n }\n\n // [spec] …if the readyState attribute is set to a value other than CLOSED…\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] …sets the readyState attribute to OPEN and fires an event\n // [spec] …named open at the EventSource object.\n this.#readyState = this.OPEN\n\n const openEvent = new Event('open')\n this.#onOpen?.(openEvent)\n this.dispatchEvent(openEvent)\n\n // Ensure that the response stream is a web stream\n if (typeof body !== 'object' || !body || !('getReader' in body)) {\n this.#failConnection('Invalid response body, expected a web ReadableStream', status)\n this.close() // This should only happen if `fetch` provided is \"faulty\" - don't reconnect\n return\n }\n\n const decoder = new TextDecoder()\n\n const reader = body.getReader()\n let open = true\n\n do {\n const {done, value} = await reader.read()\n if (value) {\n this.#parser.feed(decoder.decode(value, {stream: !done}))\n }\n\n if (!done) {\n continue\n }\n\n open = false\n this.#parser.reset()\n\n this.#scheduleReconnect()\n } while (open)\n }\n\n /**\n * Handles rejected requests for the EventSource endpoint\n *\n * @param err - The error from `fetch()`\n * @internal\n */\n #onFetchError = (err: Error & {type?: string}) => {\n this.#controller = undefined\n\n // We expect abort errors when the user manually calls `close()` - ignore those\n if (err.name === 'AbortError' || err.type === 'aborted') {\n return\n }\n\n this.#scheduleReconnect(flattenError(err))\n }\n\n /**\n * Get request options for the `fetch()` request\n *\n * @returns The request options\n * @internal\n */\n #getRequestOptions(): EventSourceFetchInit {\n const lastEvent = this.#lastEventId ? {'Last-Event-ID': this.#lastEventId} : undefined\n\n const init: EventSourceFetchInit = {\n // [spec] Let `corsAttributeState` be `Anonymous`…\n // [spec] …will have their mode set to \"cors\"…\n mode: 'cors',\n redirect: 'follow',\n headers: {Accept: 'text/event-stream', ...lastEvent},\n cache: 'no-store',\n signal: this.#controller?.signal,\n }\n\n // Some environments crash if attempting to set `credentials` where it is not supported,\n // eg on Cloudflare Workers. To avoid this, we only set it in browser-like environments.\n if ('window' in globalThis) {\n // [spec] …and their credentials mode set to \"same-origin\"\n // [spec] …if the `withCredentials` attribute is `true`, set the credentials mode to \"include\"…\n init.credentials = this.withCredentials ? 'include' : 'same-origin'\n }\n\n return init\n }\n\n /**\n * Called by EventSourceParser instance when an event has successfully been parsed\n * and is ready to be processed.\n *\n * @param event - The parsed event\n * @internal\n */\n #onEvent = (event: EventSourceMessage) => {\n if (typeof event.id === 'string') {\n this.#lastEventId = event.id\n }\n\n const messageEvent = new MessageEvent(event.event || 'message', {\n data: event.data,\n origin: this.#redirectUrl ? this.#redirectUrl.origin : this.#url.origin,\n lastEventId: event.id || '',\n })\n\n // The `onmessage` property of the EventSource instance only triggers on messages without an\n // `event` field, or ones that explicitly set `message`.\n if (this.#onMessage && (!event.event || event.event === 'message')) {\n this.#onMessage(messageEvent)\n }\n\n this.dispatchEvent(messageEvent)\n }\n\n /**\n * Called by EventSourceParser instance when a new reconnection interval is received\n * from the EventSource endpoint.\n *\n * @param value - The new reconnection interval in milliseconds\n * @internal\n */\n #onRetryChange = (value: number) => {\n this.#reconnectInterval = value\n }\n\n /**\n * Handles the process referred to in the EventSource specification as \"failing a connection\".\n *\n * @param error - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #failConnection(message?: string, code?: number) {\n // [spec] …if the readyState attribute is set to a value other than CLOSED,\n // [spec] sets the readyState attribute to CLOSED…\n if (this.#readyState !== this.CLOSED) {\n this.#readyState = this.CLOSED\n }\n\n // [spec] …and fires an event named `error` at the `EventSource` object.\n // [spec] Once the user agent has failed the connection, it does not attempt to reconnect.\n // [spec] > Implementations are especially encouraged to report detailed information\n // [spec] > to their development consoles whenever an error event is fired, since little\n // [spec] > to no information can be made available in the events themselves.\n // Printing to console is not very programatically helpful, though, so we emit a custom event.\n const errorEvent = new ErrorEvent('error', {code, message})\n\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n }\n\n /**\n * Schedules a reconnection attempt against the EventSource endpoint.\n *\n * @param message - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #scheduleReconnect(message?: string, code?: number) {\n // [spec] If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] Set the readyState attribute to CONNECTING.\n this.#readyState = this.CONNECTING\n\n // [spec] Fire an event named `error` at the EventSource object.\n const errorEvent = new ErrorEvent('error', {code, message})\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n\n // [spec] Wait a delay equal to the reconnection time of the event source.\n this.#reconnectTimer = setTimeout(this.#reconnect, this.#reconnectInterval)\n }\n\n /**\n * Reconnects to the EventSource endpoint after a disconnect/failure\n *\n * @internal\n */\n #reconnect = () => {\n this.#reconnectTimer = undefined\n\n // [spec] If the EventSource's readyState attribute is not set to CONNECTING, then return.\n if (this.#readyState !== this.CONNECTING) {\n return\n }\n\n this.#connect()\n }\n}\n\n/**\n * According to spec, when constructing a URL:\n * > 1. Let baseURL be environment's base URL, if environment is a Document object\n * > 2. Return the result of applying the URL parser to url, with baseURL.\n *\n * Thus we should use `document.baseURI` if available, since it can be set through a base tag.\n *\n * @returns The base URL, if available - otherwise `undefined`\n * @internal\n */\nfunction getBaseURL(): string | undefined {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const doc = 'document' in globalThis ? (globalThis as any).document : undefined\n return doc && typeof doc === 'object' && 'baseURI' in doc && typeof doc.baseURI === 'string'\n ? doc.baseURI\n : undefined\n}\n",null,"let crypto;\ncrypto =\n globalThis.crypto?.webcrypto ?? // Node.js [18-16] REPL\n globalThis.crypto ?? // Node.js >18\n import(\"node:crypto\").then(m => m.webcrypto); // Node.js <18 Non-REPL\n/**\n * Creates an array of length `size` of random bytes\n * @param size\n * @returns Array of random ints (0 to 255)\n */\nasync function getRandomValues(size) {\n return (await crypto).getRandomValues(new Uint8Array(size));\n}\n/** Generate cryptographically strong random string\n * @param size The desired length of the string\n * @returns The random string\n */\nasync function random(size) {\n const mask = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~\";\n const evenDistCutoff = Math.pow(2, 8) - Math.pow(2, 8) % mask.length;\n let result = \"\";\n while (result.length < size) {\n const randomBytes = await getRandomValues(size - result.length);\n for (const randomByte of randomBytes) {\n if (randomByte < evenDistCutoff) {\n result += mask[randomByte % mask.length];\n }\n }\n }\n return result;\n}\n/** Generate a PKCE challenge verifier\n * @param length Length of the verifier\n * @returns A random verifier `length` characters long\n */\nasync function generateVerifier(length) {\n return await random(length);\n}\n/** Generate a PKCE code challenge from a code verifier\n * @param code_verifier\n * @returns The base64 url encoded code challenge\n */\nexport async function generateChallenge(code_verifier) {\n const buffer = await (await crypto).subtle.digest(\"SHA-256\", new TextEncoder().encode(code_verifier));\n // Generate base64url string\n // btoa is deprecated in Node.js but is used here for web browser compatibility\n // (which has no good replacement yet, see also https://github.com/whatwg/html/issues/6811)\n return btoa(String.fromCharCode(...new Uint8Array(buffer)))\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n .replace(/=/g, '');\n}\n/** Generate a PKCE challenge pair\n * @param length Length of the verifer (between 43-128). Defaults to 43.\n * @returns PKCE challenge pair\n */\nexport default async function pkceChallenge(length) {\n if (!length)\n length = 43;\n if (length < 43 || length > 128) {\n throw `Expected a length between 43 and 128. Received ${length}.`;\n }\n const verifier = await generateVerifier(length);\n const challenge = await generateChallenge(verifier);\n return {\n code_verifier: verifier,\n code_challenge: challenge,\n };\n}\n/** Verify that a code_verifier produces the expected code challenge\n * @param code_verifier\n * @param expectedChallenge The code challenge to verify\n * @returns True if challenges are equal. False otherwise.\n */\nexport async function verifyChallenge(code_verifier, expectedChallenge) {\n const actualChallenge = await generateChallenge(code_verifier);\n return actualChallenge === expectedChallenge;\n}\n",null,null,null,null,null,"import { BetaMessageParam } from \"@anthropic-ai/sdk/resources/beta.mjs\";\r\nimport { HeadersType, Message } from \"../types/chatbot\";\r\n\r\nexport const extractUIJsonFromText = (text: string): { cleanedText: string; uiData: any | null } => {\r\n const regex = /```ui-component([\\s\\S]*?)```/g;\r\n let cleaned = text;\r\n let match: RegExpExecArray | null;\r\n let uiData: any = null;\r\n\r\n while ((match = regex.exec(text)) !== null) {\r\n const block = match[1].trim();\r\n try {\r\n const parsed = JSON.parse(block);\r\n\r\n if (parsed && parsed.components && Array.isArray(parsed.components)) {\r\n parsed.components = parsed.components.map((comp: any, index: number) => {\r\n if (!comp.id || typeof comp.id !== \"string\" || !comp.id.trim()) {\r\n comp.id = `ui-comp-${index}-${Date.now()}`;\r\n }\r\n\r\n if (comp.type === \"button\") {\r\n if (!comp.buttonType) {\r\n comp.buttonType = \"click\";\r\n }\r\n }\r\n\r\n if (comp.type === \"input\") {\r\n if (!comp.fieldType) {\r\n comp.fieldType = \"text\";\r\n }\r\n }\r\n\r\n if (comp.type === \"select\") {\r\n if (comp.options && Array.isArray(comp.options)) {\r\n const firstOption = comp.options[0];\r\n if (typeof firstOption === \"object\" && firstOption !== null) {\r\n if (\"label\" in firstOption || \"value\" in firstOption) {\r\n comp.options = comp.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"table\") {\r\n if (comp.columns && Array.isArray(comp.columns)) {\r\n const firstCol = comp.columns[0];\r\n if (typeof firstCol === \"object\" && firstCol !== null) {\r\n comp.columns = comp.columns.map((col: any) =>\r\n col.label || col.id || String(col)\r\n );\r\n }\r\n }\r\n\r\n if (comp.rows && Array.isArray(comp.rows)) {\r\n const firstRow = comp.rows[0];\r\n if (typeof firstRow === \"object\" && !Array.isArray(firstRow)) {\r\n comp.rows = comp.rows.map((row: any) => {\r\n if (Array.isArray(row)) return row;\r\n return Object.values(row).map((val: any) => {\r\n if (typeof val === \"object\" && val !== null) {\r\n if (val.type === \"image\" && val.src) return val.src;\r\n if (val.value !== undefined) return String(val.value);\r\n }\r\n return String(val || \"\");\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"form\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((field: any, fieldIndex: number) => {\r\n if (!field.id || !field.id.trim()) {\r\n field.id = `field-${fieldIndex}-${Date.now()}`;\r\n }\r\n\r\n if (field.optional !== undefined) {\r\n field.requiredField = !field.optional;\r\n delete field.optional;\r\n }\r\n\r\n if (field.required !== undefined) {\r\n field.requiredField = field.required;\r\n delete field.required;\r\n }\r\n\r\n if (field.type === \"input\" && !field.fieldType) {\r\n field.fieldType = \"text\";\r\n }\r\n\r\n if (field.type === \"select\" && field.options && Array.isArray(field.options)) {\r\n const firstOpt = field.options[0];\r\n if (typeof firstOpt === \"object\" && firstOpt !== null) {\r\n field.options = field.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n\r\n return field;\r\n });\r\n }\r\n\r\n if (comp.type === \"list\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((item: any, itemIndex: number) => {\r\n if (typeof item === \"string\") {\r\n return {\r\n id: `list-item-${itemIndex}-${Date.now()}`,\r\n type: \"text\",\r\n value: item,\r\n label: item\r\n };\r\n }\r\n if (!item.id || !item.id.trim()) {\r\n item.id = `list-item-${itemIndex}-${Date.now()}`;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n return comp;\r\n });\r\n\r\n uiData = parsed;\r\n }\r\n\r\n cleaned = cleaned.replace(match[0], \"\").trim();\r\n\r\n break;\r\n } catch (e) {\r\n console.error(\"Invalid ui-component JSON:\", e, block);\r\n }\r\n }\r\n\r\n return {\r\n cleanedText: cleaned,\r\n uiData: uiData\r\n };\r\n};\r\n\r\nexport const historyMessages = (history: Message[], currentUserText: string): BetaMessageParam[] => {\r\n const claudeHistory: BetaMessageParam[] = history\r\n .filter((m) => m.role === \"user\" || m.role === \"assistant\")\r\n .map((m) => ({\r\n role: m.role as \"user\" | \"assistant\",\r\n content: m.text ?? JSON.stringify(m.ui ?? \"\")\r\n }));\r\n\r\n claudeHistory.push({\r\n role: \"user\",\r\n content: currentUserText,\r\n });\r\n\r\n return claudeHistory;\r\n};\r\n\r\nexport const generateId = () => Date.now().toString() + Math.random().toString(36).substr(2, 9);\r\n\r\nexport const normalizeHeaders = (headers: HeadersType): HeadersType => {\r\n const result: HeadersType = {};\r\n\r\n for (const [key, value] of Object.entries(headers)) {\r\n if (!value) continue;\r\n\r\n // cookie varyasyonlarını yakala\r\n if (key.toLowerCase() === \"cookie\") {\r\n result[\"x-cookie\"] = value;\r\n } else {\r\n result[key] = value;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n","\"use client\";\r\nimport { AizekChatBotProps, ChatWidgetApiResponse, HeadersType, Message } from \"../../types/chatbot\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { fetchChatWidgetSettings } from \"../../services/chat-widget-api\";\r\nimport { validateHeaders } from \"../../utils/cx\";\r\nimport \"../../styles/index.scss\";\r\nimport { defaultConfig, GENERATIVE_UI_SYSTEM_PROMPT } from \"../../store/static\";\r\nimport { HeaderAlert } from \"../header-alert\";\r\nimport { ChatInput } from \"../chat-input\";\r\nimport { MessageBubble } from \"../message-bubble\";\r\nimport { TypingDots } from \"../typing-dots\";\r\nimport Anthropic from \"@anthropic-ai/sdk\";\r\nimport { Client } from \"@modelcontextprotocol/sdk/client\";\r\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\r\nimport { BetaMessageParam } from \"@anthropic-ai/sdk/resources/beta.mjs\";\r\nimport { extractUIJsonFromText, generateId, normalizeHeaders } from \"../../utils/chatbot\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({ clientId, headers }) => {\r\n\r\n const messagesEndRef = useRef<HTMLDivElement>(null);\r\n\r\n const [config, setConfig] = useState<ChatWidgetApiResponse>(defaultConfig);\r\n const [anthropic, setAnthropic] = useState<Anthropic>()\r\n const [messages, setMessages] = useState<Message[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [mcpClient, setMcpClient] = useState<Client>()\r\n const [isConfigLoading, setIsConfigLoading] = useState(true);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [headerValidation, setHeaderValidation] = useState<{ isValid: boolean; missingKeys: string[]; extraKeys: string[]; emptyValueKeys: string[]; } | null>(null);\r\n const [showAlert, setShowAlert] = useState(true);\r\n\r\n const { button_background, button_position, button_size, chat_height, chat_width, company_logo, company_name, header_background, initial_open, placeholder, show_typing_indicator, welcome_message, } = config.chat_widget_settings;\r\n\r\n useEffect(() => {\r\n const loadConfig = async () => {\r\n try {\r\n\r\n setIsConfigLoading(true);\r\n const apiResponse = await fetchChatWidgetSettings(clientId);\r\n\r\n if (apiResponse.success) {\r\n\r\n const anthropic = new Anthropic({ apiKey: apiResponse.data.openai_key, dangerouslyAllowBrowser: true });\r\n const mcpClient = new Client({ name: \"mcp-client-cli\", version: \"1.0.0\" })\r\n\r\n const transport = new SSEClientTransport(new URL(\"\", apiResponse.data.mcp_url), {\r\n eventSourceInit: {\r\n fetch: (url, init) => {\r\n if (headers) {\r\n const dynamicHeaders = normalizeHeaders(headers)\r\n\r\n return fetch(url, {\r\n headers: {\r\n ...(init?.headers ?? {}),\r\n ...dynamicHeaders,\r\n },\r\n })\r\n\r\n } else {\r\n return fetch(url, {\r\n headers: {\r\n ...(init?.headers ?? {}),\r\n },\r\n })\r\n }\r\n },\r\n },\r\n })\r\n await mcpClient.connect(transport)\r\n setMcpClient(mcpClient)\r\n setAnthropic(anthropic)\r\n\r\n if (headers && apiResponse.data.auth_config) {\r\n const validationResult = validateHeaders(\r\n headers,\r\n apiResponse.data.auth_config,\r\n {\r\n allowExtra: false,\r\n caseSensitive: true,\r\n }\r\n );\r\n\r\n setHeaderValidation(validationResult);\r\n }\r\n\r\n if (!apiResponse.data.chat_widget_settings) {\r\n setConfig({\r\n auth_config: apiResponse.data.auth_config,\r\n mcp_url: apiResponse.data.mcp_url,\r\n openai_key: apiResponse.data.openai_key,\r\n chat_widget_settings: {\r\n api_source_id: 0,\r\n chat_widget_settings_id: 0,\r\n created_at: \"\",\r\n updated_at: \"\",\r\n button_background: defaultConfig.chat_widget_settings.button_background,\r\n button_position: defaultConfig.chat_widget_settings.button_position,\r\n button_size: defaultConfig.chat_widget_settings.button_size,\r\n chat_height: defaultConfig.chat_widget_settings.chat_height,\r\n chat_width: defaultConfig.chat_widget_settings.chat_width,\r\n company_logo: defaultConfig.chat_widget_settings.company_logo,\r\n company_name: defaultConfig.chat_widget_settings.company_name,\r\n header_background: defaultConfig.chat_widget_settings.header_background,\r\n initial_open: defaultConfig.chat_widget_settings.initial_open,\r\n placeholder: defaultConfig.chat_widget_settings.placeholder,\r\n show_typing_indicator: defaultConfig.chat_widget_settings.show_typing_indicator,\r\n welcome_message: defaultConfig.chat_widget_settings.welcome_message,\r\n }\r\n });\r\n } else {\r\n\r\n setConfig(apiResponse.data)\r\n }\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"Failed to load chat widget config:\", error);\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n loadConfig();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setIsOpen(initial_open);\r\n }, [initial_open]);\r\n\r\n useEffect(() => {\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n }, [messages]);\r\n\r\n\r\n if (isConfigLoading || !mcpClient || !anthropic) {\r\n return (\r\n <button className={`floating-button ${button_position} button-sizes ${button_size}`} style={{ background: button_background }} >\r\n <div className=\"loading-spinner\" />\r\n </button>\r\n );\r\n }\r\n\r\n const historyMessages = (\r\n history: Message[],\r\n currentUserText: string\r\n ): BetaMessageParam[] => {\r\n const claudeHistory: BetaMessageParam[] = history\r\n .filter((m) => m.role === \"user\" || m.role === \"assistant\")\r\n .map((m) => ({\r\n role: m.role as \"user\" | \"assistant\",\r\n content: m.text ?? JSON.stringify(m.ui ?? \"\")\r\n }));\r\n\r\n claudeHistory.push({\r\n role: \"user\",\r\n content: currentUserText,\r\n });\r\n\r\n return claudeHistory;\r\n };\r\n\r\n\r\n const addMessage = (payload: Omit<Message, \"timestamp\" | \"id\">) => {\r\n const newMessage: Message = {\r\n id: generateId(),\r\n text: payload.text,\r\n ui: payload.ui,\r\n role: payload.role,\r\n timestamp: new Date(),\r\n };\r\n setMessages((prev) => [...prev, newMessage]);\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n return newMessage;\r\n };\r\n\r\n\r\n\r\n\r\n const sendMessage = async (message: string, approval?: boolean) => {\r\n if (!message.trim() || isLoading) return;\r\n\r\n const newMessage: Message = {\r\n id: generateId(),\r\n text: message,\r\n ui: undefined,\r\n role: approval ? \"approval\" : \"user\",\r\n timestamp: new Date(),\r\n };\r\n\r\n setMessages(prev => [...prev, newMessage]);\r\n\r\n setIsLoading(true);\r\n\r\n const toolsResult = await mcpClient.listTools();\r\n\r\n const tools = toolsResult.tools.map((tool) => {\r\n return {\r\n name: tool.name,\r\n description: tool.description,\r\n input_schema: tool.inputSchema,\r\n };\r\n });\r\n\r\n try {\r\n\r\n const historyForContext = historyMessages([...messages, newMessage], message);\r\n\r\n const response = await anthropic.beta.messages.create({\r\n model: \"claude-sonnet-4-5\",\r\n betas: [\"structured-outputs-2025-11-13\"],\r\n max_tokens: 5000,\r\n messages: historyForContext,\r\n tools: tools,\r\n system: GENERATIVE_UI_SYSTEM_PROMPT\r\n });\r\n\r\n for (const content of response.content) {\r\n if (content.type === \"tool_use\") {\r\n const toolCall = await mcpClient.callTool({ name: content.name, arguments: content.input as any })\r\n const toolMessagesForContext = historyMessages([...messages, newMessage], JSON.stringify(toolCall.structuredContent));\r\n\r\n const finalResponse = await anthropic.beta.messages.create({\r\n model: \"claude-sonnet-4-5\",\r\n max_tokens: 1024,\r\n betas: [\"structured-outputs-2025-11-13\"],\r\n messages: toolMessagesForContext,\r\n tools: tools,\r\n system: GENERATIVE_UI_SYSTEM_PROMPT\r\n });\r\n\r\n const textBlock = finalResponse.content.find((x) => x.type === \"text\");\r\n const { cleanedText, uiData } = extractUIJsonFromText(textBlock?.text ?? \"\");\r\n\r\n addMessage({ ui: uiData, text: cleanedText || undefined, role: \"assistant\" });\r\n\r\n } else if (content.type === \"text\") {\r\n const { cleanedText, uiData } = extractUIJsonFromText(content?.text);\r\n console.log(cleanedText, uiData);\r\n addMessage({ ui: uiData, text: cleanedText || undefined, role: \"assistant\" });\r\n }\r\n }\r\n\r\n setIsLoading(false);\r\n } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n addMessage({ text: \"Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.\", role: \"assistant\" });\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const toggleChat = () => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n };\r\n\r\n return (\r\n <>\r\n {isOpen && (<div className={`overlay floating-chat-overlay ${isOpen ? \"is-open\" : \"\"}`} onClick={toggleChat} />)}\r\n\r\n <div className={`chat-container ${button_position} ${isOpen ? \"is-open\" : \"\"}`} style={{ width: chat_width, height: chat_height }} >\r\n <div className=\"chatbot-container\">\r\n <div className=\"header\" style={{ background: header_background }}>\r\n <div className=\"logo-container\">\r\n {company_logo ? (\r\n company_logo.startsWith(\"http\") ||\r\n company_logo.startsWith(\"data:\") ? (\r\n <img\r\n src={company_logo}\r\n alt=\"Company Logo\"\r\n className=\"logo-image\"\r\n />\r\n ) : (\r\n <span className=\"logo-text\">{company_logo}</span>\r\n )\r\n ) : (\r\n \"🤖\"\r\n )}\r\n </div>\r\n <div>\r\n <h3 className=\"company-name\">{company_name}</h3>\r\n <p className=\"status-text\">\r\n {isLoading ? \"Yazıyor...\" : \"Çevrimiçi\"}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"messages-container\">\r\n <HeaderAlert headerValidation={headerValidation} setShowAlert={setShowAlert} showAlert={showAlert} />\r\n\r\n {messages.length === 0 ? (\r\n <div className=\"empty-state\">\r\n <div className=\"empty-state-icon\">💬</div>\r\n <h4 className=\"empty-state-title\">\r\n {welcome_message}\r\n </h4>\r\n <p className=\"empty-state-description\">\r\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\r\n </p>\r\n </div>\r\n ) : (\r\n <>\r\n {messages.map((message) => (\r\n <MessageBubble\r\n key={message.id}\r\n message={message}\r\n onAction={sendMessage}\r\n />\r\n ))}\r\n\r\n {show_typing_indicator && isLoading && <TypingDots />}\r\n </>\r\n )}\r\n\r\n <div ref={messagesEndRef} />\r\n </div>\r\n\r\n <ChatInput handleSendMessage={sendMessage} isLoading={isLoading} placeholder={placeholder} />\r\n </div>\r\n </div>\r\n\r\n <button\r\n onClick={toggleChat}\r\n className={`floating-button ${button_position} button-sizes ${button_size} ${isOpen ? \"is-open\" : \"\"}`}\r\n style={{ background: button_background }}\r\n aria-label={isOpen ? \"Chati kapat\" : \"Chati aç\"}\r\n >\r\n {isOpen ? (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </>\r\n );\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/services/chat-widget-api.ts","../src/utils/cx.ts","../src/store/static.ts","../src/components/header-alert/index.tsx","../src/components/loading-spinner/index.tsx","../src/components/chat-input/index.tsx","../src/components/generative-ui/index.tsx","../src/components/message-bubble/index.tsx","../src/components/typing-dots/index.tsx","../src/utils/chatbot.ts","../src/components/aizek-chat/index.tsx"],"names":["jsx","jsxs","useState","useRef","Fragment","ReactMarkdown","remarkGfm","useEffect","anthropic","Anthropic","mcpClient","Client","SSEClientTransport"],"mappings":"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","file":"index.cjs","sourcesContent":["import { ChatWidgetApiResponse, ChatWidgetSettings } from '../types/chatbot';\r\nimport { BaseResponse } from '../types/global';\r\n\r\nconst API_BASE_URL = 'https://api-alpha.aizek.ai';\r\n\r\nexport const fetchChatWidgetSettings = async (clientId: string): Promise<BaseResponse<ChatWidgetApiResponse>> => {\r\n try {\r\n const response = await fetch(`${API_BASE_URL}/ChatWidgetSettings/GetByClientId?client_id=${clientId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data: BaseResponse<ChatWidgetApiResponse> = await response.json();\r\n return data;\r\n } catch (error) {\r\n console.error('Error fetching chat widget settings:', error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const mapApiSettingsToConfig = (apiSettings: ChatWidgetSettings | null) => {\r\n if (!apiSettings) {\r\n return null;\r\n }\r\n\r\n return {\r\n welcomeMessage: apiSettings.welcome_message,\r\n buttonBackground: apiSettings.button_background,\r\n placeholder: apiSettings.placeholder,\r\n buttonPosition: apiSettings.button_position,\r\n buttonSize: apiSettings.button_size || 'medium',\r\n chatWidth: apiSettings.chat_width,\r\n chatHeight: apiSettings.chat_height,\r\n showTypingIndicator: apiSettings.show_typing_indicator,\r\n initialOpen: apiSettings.initial_open,\r\n headerBackground: apiSettings.header_background,\r\n companyLogo: apiSettings.company_logo || undefined,\r\n companyName: apiSettings.company_name,\r\n };\r\n};\r\n","import { AuthConfig, HeadersType } from \"../types/chatbot\";\r\n\r\nexport function cx(...args: Array<string | false | null | undefined>): string {\r\n return args.filter(Boolean).join(\" \");\r\n}\r\n\r\nexport function validateHeaders(\r\n headers: HeadersType,\r\n authConfig: AuthConfig,\r\n opts: { caseSensitive?: boolean; allowExtra?: boolean } = {}\r\n) {\r\n const { caseSensitive = false, allowExtra = false } = opts;\r\n\r\n const normalize = (s: string) => (caseSensitive ? s : s.toLowerCase());\r\n\r\n const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);\r\n const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);\r\n\r\n const headerKeys = headerEntries.map(([k]) => k);\r\n const authKeys = authEntries.map(([k]) => k);\r\n\r\n const requiredSet = new Set(authKeys);\r\n\r\n const missingKeys = authKeys.filter(k => !headerKeys.includes(k));\r\n const extraKeys = headerKeys.filter(k => !requiredSet.has(k));\r\n\r\n // 🔍 1. Gerekli tüm key’ler mevcut mu?\r\n const hasAllRequired = missingKeys.length === 0;\r\n // 🔍 2. Fazla key var mı?\r\n const hasExtraKeys = extraKeys.length > 0 && !allowExtra;\r\n // 🔍 3. Gerekli değerler boş mu?\r\n const emptyValueKeys = authKeys.filter(k => {\r\n const val = headerEntries.find(([key]) => key === k)?.[1];\r\n return !val || val.length === 0;\r\n });\r\n\r\n const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;\r\n\r\n return { isValid, missingKeys, extraKeys, emptyValueKeys };\r\n}","import { ChatWidgetApiResponse } from \"../types/chatbot\";\r\n\r\nexport const defaultConfig: ChatWidgetApiResponse = {\r\n auth_config: {\r\n \"header\": \"\"\r\n },\r\n chat_widget_settings: {\r\n welcome_message: \"Merhaba! Size nasıl yardımcı olabilirim?\",\r\n button_background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\r\n placeholder: \"Mesajınızı yazın...\",\r\n button_position: \"bottom-left\",\r\n button_size: \"medium\",\r\n chat_width: \"400px\",\r\n chat_height: \"600px\",\r\n show_typing_indicator: true,\r\n initial_open: true,\r\n header_background: \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\r\n company_logo: \"\",\r\n company_name: \"Aizek\",\r\n api_source_id: 0,\r\n chat_widget_settings_id: 0,\r\n created_at: \"\",\r\n updated_at: \"\"\r\n },\r\n mcp_url: \"\",\r\n openai_key: \"\"\r\n};\r\n\r\nexport const GENERATIVE_UI_SYSTEM_PROMPT = `\r\nYou can generate interactive UI components as part of your responses.\r\nWhen users need to:\r\n- Provide multiple pieces of information → Generate a FORM\r\n- Make a choice between options → Generate BUTTONS\r\n- View structured data → Generate a TABLE or LIST\r\n- See entity details → Generate a CARD\r\n\r\nFor each component type, include JSON in this format:\r\n\r\n\\`\\`\\`ui-component\r\n{\r\n \"version\": \"1.0\",\r\n \"title\": string,\r\n \"description\"?: string,\r\n \"components\": Array<{\r\n id: string,\r\n type:\r\n | \"text\"\r\n | \"input\"\r\n | \"button\"\r\n | \"select\"\r\n | \"card\"\r\n | \"list\"\r\n | \"image\"\r\n | \"link\"\r\n | \"table\"\r\n | \"form\",\r\n label?: string,\r\n fieldType?: \"text\" | \"number\" | \"date\" | \"textarea\",\r\n requiredField?: boolean,\r\n placeholder?: string,\r\n options?: string[],\r\n columns?: string[],\r\n rows?: string[][],\r\n url?: string,\r\n fieldName?: string\r\n buttonType?: click | submit\r\n }>\r\n}\r\n\\`\\`\\`\r\n\r\n\r\n\r\n\r\n\r\nAlways provide both a conversational text response AND appropriate UI components.\r\n\r\n`;","import { Dispatch, SetStateAction } from \"react\";\r\n\r\ninterface IHeaderAlertProps {\r\n headerValidation: { isValid: boolean; missingKeys: string[]; extraKeys: string[]; emptyValueKeys: string[]; } | null\r\n showAlert: boolean,\r\n setShowAlert: Dispatch<SetStateAction<boolean>>\r\n}\r\nexport const HeaderAlert = ({ headerValidation, showAlert, setShowAlert }: IHeaderAlertProps) => {\r\n if (!headerValidation || !showAlert) return null;\r\n\r\n const { isValid, missingKeys, extraKeys, emptyValueKeys } =\r\n headerValidation;\r\n\r\n if (\r\n isValid &&\r\n missingKeys.length === 0 &&\r\n extraKeys.length === 0 &&\r\n emptyValueKeys.length === 0\r\n ) {\r\n return null;\r\n }\r\n\r\n const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;\r\n const hasWarnings = extraKeys.length > 0;\r\n const alertType = hasErrors ? \"error\" : \"warning\";\r\n\r\n const getAlertIcon = () => {\r\n if (hasErrors) {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\r\n </svg>\r\n );\r\n }\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\r\n </svg>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <div className={`alert-container ${alertType}`}>\r\n <div className=\"alert-icon-container\">{getAlertIcon()}</div>\r\n <div className=\"alert-content\">\r\n <h4 className=\"alert-title\">\r\n {hasErrors ? \"Header Doğrulama Hatası\" : \"Header Uyarısı\"}\r\n </h4>\r\n <p className=\"alert-message\">\r\n {hasErrors && hasWarnings\r\n ? \"Header yapılandırmanızda hatalar ve uyarılar bulundu.\"\r\n : hasErrors\r\n ? \"Header yapılandırmanızda hatalar bulundu.\"\r\n : \"Header yapılandırmanızda fazla anahtarlar bulundu.\"}\r\n </p>\r\n\r\n {missingKeys.length > 0 && (\r\n <div>\r\n <strong>Eksik Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {missingKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code>\r\n {key}\r\n </code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {emptyValueKeys.length > 0 && (\r\n <div>\r\n <strong >\r\n Boş Değerli Header'lar:\r\n </strong>\r\n <ul className=\"alert-list\">\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n <span >\r\n (değer boş olamaz)\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {extraKeys.length > 0 && (\r\n <div>\r\n <strong >Fazla Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {extraKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n <button\r\n onClick={() => setShowAlert(false)}\r\n className=\"alert-close-button\"\r\n aria-label=\"Uyarıyı kapat\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n};","export const LoadingSpinner: React.FC = () => {\r\n return <div className=\"loading-spinner\" />;\r\n};","import { useRef, useState } from \"react\";\r\nimport { LoadingSpinner } from \"../loading-spinner\";\r\n\r\ninterface IChatInputProps {\r\n isLoading: boolean;\r\n placeholder: string;\r\n handleSendMessage: (message: string, approval?: boolean) => void\r\n}\r\n\r\nexport const ChatInput = ({ isLoading, placeholder, handleSendMessage }: IChatInputProps) => {\r\n const [message, setMessage] = useState(\"\");\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (message.trim() && !isLoading) {\r\n handleSendMessage(message.trim());\r\n setMessage(\"\");\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = \"auto\";\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault();\r\n handleSubmit(e);\r\n }\r\n };\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setMessage(e.target.value);\r\n\r\n const textarea = e.target;\r\n textarea.style.height = \"auto\";\r\n textarea.style.height = Math.min(textarea.scrollHeight, 120) + \"px\";\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit} className=\"input-container\">\r\n <textarea\r\n ref={textareaRef}\r\n value={message}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={isLoading}\r\n className=\"textarea\"\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading || !message.trim()}\r\n className=\"send-button\"\r\n >\r\n {isLoading ? (\r\n <LoadingSpinner />\r\n ) : (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </form>\r\n );\r\n};","import React, { useRef } from \"react\";\r\nimport { UIComponent, UIData } from \"../../types/generative-ui\";\r\n\r\n\r\n\r\ntype GenericUIRendererProps = {\r\n uiData: UIData;\r\n onInteraction: (event: any) => void;\r\n};\r\n\r\nexport const GenericUIRenderer: React.FC<GenericUIRendererProps> = ({ uiData, onInteraction }) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n if (!uiData || !uiData.components) return null;\r\n\r\n // Form değerlerini toplayan fonksiyon\r\n const collectFormValues = () => {\r\n if (!containerRef.current) return {};\r\n\r\n const formData: Record<string, any> = {};\r\n const inputs = containerRef.current.querySelectorAll<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>('input, textarea, select');\r\n\r\n inputs.forEach((element) => {\r\n const name = element.getAttribute('name');\r\n if (name) {\r\n if (element instanceof HTMLInputElement && element.type === 'checkbox') {\r\n formData[name] = element.checked;\r\n } else if (element instanceof HTMLInputElement && element.type === 'radio') {\r\n if (element.checked) {\r\n formData[name] = element.value;\r\n }\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n }\r\n });\r\n\r\n return formData;\r\n };\r\n\r\n const renderComponent = (comp: UIComponent): React.ReactNode => {\r\n switch (comp.type) {\r\n case \"text\":\r\n return (\r\n <p key={comp.id} className=\"gen-ui-text\">\r\n {comp.value ?? comp.label}\r\n </p>\r\n );\r\n\r\n case \"input\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-input-wrapper\">\r\n {comp.label && <label className=\"gen-ui-input-label\">{comp.label}</label>}\r\n {comp.fieldType === \"textarea\" ? (\r\n <textarea\r\n name={comp.id}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-textarea\"\r\n />\r\n ) : (\r\n <input\r\n name={comp.id}\r\n type={comp.fieldType || \"text\"}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-input\"\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n case \"select\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-select-wrapper\">\r\n {comp.label && <label className=\"gen-ui-select-label\">{comp.label}</label>}\r\n <select name={comp.id} className=\"gen-ui-select\">\r\n {comp.options?.map((opt) => (\r\n <option key={opt} value={opt}>\r\n {opt}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n );\r\n\r\n case \"button\":\r\n return (\r\n <button\r\n onClick={() => {\r\n const formValues = collectFormValues();\r\n onInteraction({\r\n action: comp.label,\r\n buttonId: comp.buttonType,\r\n formData: formValues\r\n });\r\n }}\r\n key={comp.id}\r\n className=\"gen-ui-button\"\r\n >\r\n {comp.label}\r\n </button>\r\n );\r\n\r\n case \"card\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-card\">\r\n {comp.label && <h2 className=\"gen-ui-card-title\">{comp.label}</h2>}\r\n {comp.value && <p className=\"gen-ui-card-content\">{comp.value}</p>}\r\n </div>\r\n );\r\n\r\n case \"list\":\r\n return (\r\n <ul key={comp.id} className=\"gen-ui-list\">\r\n {comp.items?.map((item) => (\r\n <li key={item.id} className=\"gen-ui-list-item\">\r\n {item.label ?? String(item.value ?? \"\")}\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n\r\n case \"image\":\r\n return (\r\n <img\r\n key={comp.id}\r\n src={comp.url}\r\n alt={comp.label || \"\"}\r\n className=\"gen-ui-image\"\r\n />\r\n );\r\n\r\n case \"link\":\r\n return (\r\n <a\r\n key={comp.id}\r\n href={comp.url}\r\n className=\"gen-ui-link\"\r\n >\r\n {comp.label || comp.url}\r\n </a>\r\n );\r\n\r\n case \"table\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-table-wrapper\">\r\n <table className=\"gen-ui-table\">\r\n {comp.columns && (\r\n <thead className=\"gen-ui-table-header\">\r\n <tr>\r\n {comp.columns.map((col) => (\r\n <th key={col} className=\"gen-ui-table-th\">\r\n {col}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n )}\r\n {comp.rows && (\r\n <tbody className=\"gen-ui-table-body\">\r\n {comp.rows.map((row, ridx) => (\r\n <tr key={ridx}>\r\n {row.map((cell, cidx) => (\r\n <td key={cidx} className=\"gen-ui-table-td\">\r\n {cell}\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n )}\r\n </table>\r\n </div>\r\n );\r\n\r\n case \"form\":\r\n return (\r\n <form key={comp.id} className=\"gen-ui-form\">\r\n {comp.items?.map((field) => renderComponent(field))}\r\n </form>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"generative-ui-container\" ref={containerRef}>\r\n {(uiData.title || uiData.description) && (\r\n <div className=\"generative-ui-header\">\r\n {uiData.title && (\r\n <h1 className=\"generative-ui-title\">{uiData.title}</h1>\r\n )}\r\n {uiData.description && (\r\n <p className=\"generative-ui-description\">{uiData.description}</p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {uiData.components.map((comp) => renderComponent(comp))}\r\n </div>\r\n );\r\n};\r\n\r\n","import { Message } from \"../../types/chatbot\";\r\nimport { GenericUIRenderer } from \"../generative-ui\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport remarkGfm from \"remark-gfm\";\r\n\r\ninterface IMessageBubbleProps {\r\n message: Message;\r\n onAction: (msg: string, approval: boolean) => void;\r\n}\r\n\r\nexport const MessageBubble = ({ message, onAction }: IMessageBubbleProps) => {\r\n console.log(\"MESSAGE\", message);\r\n\r\n const isUser = message.role === \"user\";\r\n const approval = message.role === \"approval\"\r\n\r\n if (approval) {\r\n return <></>\r\n }\r\n\r\n return (\r\n <div className={`message-container ${isUser ? \"user\" : \"assistant\"}`}>\r\n <div className={`message-bubble ${isUser ? \"user\" : \"assistant\"}`}>\r\n {isUser ? (\r\n message.text && (\r\n <div className=\"markdown-content\">{message.text}</div>\r\n )\r\n ) : (\r\n <>\r\n {message.text && (\r\n <div className=\"markdown-content\">\r\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\r\n {message.text}\r\n </ReactMarkdown>\r\n </div>\r\n )}\r\n {message.ui && (\r\n <GenericUIRenderer\r\n uiData={message.ui}\r\n onInteraction={(event) => {\r\n console.log(\"event\", event);\r\n if (event.buttonId === \"submit\") {\r\n onAction(JSON.stringify(event.formData), true);\r\n\r\n } else {\r\n onAction(event.action, true);\r\n\r\n }\r\n\r\n }}\r\n />\r\n )}\r\n\r\n </>\r\n )}\r\n </div>\r\n\r\n <div className={`message-time ${isUser ? \"user\" : \"assistant\"}`}>\r\n {message.timestamp.toLocaleTimeString(\"tr-TR\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const TypingDots = () => {\r\n const [dots, setDots] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setDots((prev) => {\r\n if (prev === \"...\") return \"\";\r\n return prev + \".\";\r\n });\r\n }, 500);\r\n\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n return (\r\n <div className=\"message-container assistant\">\r\n <div className=\"message-bubble assistant\">\r\n <div className=\"message-typing-indicator\">\r\n <span>{dots}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};","import { BetaMessageParam } from \"@anthropic-ai/sdk/resources/beta.mjs\";\r\nimport { HeadersType, Message } from \"../types/chatbot\";\r\n\r\nexport const extractUIJsonFromText = (text: string): { cleanedText: string; uiData: any | null } => {\r\n const regex = /```ui-component([\\s\\S]*?)```/g;\r\n let cleaned = text;\r\n let match: RegExpExecArray | null;\r\n let uiData: any = null;\r\n\r\n while ((match = regex.exec(text)) !== null) {\r\n const block = match[1].trim();\r\n try {\r\n const parsed = JSON.parse(block);\r\n\r\n if (parsed && parsed.components && Array.isArray(parsed.components)) {\r\n parsed.components = parsed.components.map((comp: any, index: number) => {\r\n if (!comp.id || typeof comp.id !== \"string\" || !comp.id.trim()) {\r\n comp.id = `ui-comp-${index}-${Date.now()}`;\r\n }\r\n\r\n if (comp.type === \"button\") {\r\n if (!comp.buttonType) {\r\n comp.buttonType = \"click\";\r\n }\r\n }\r\n\r\n if (comp.type === \"input\") {\r\n if (!comp.fieldType) {\r\n comp.fieldType = \"text\";\r\n }\r\n }\r\n\r\n if (comp.type === \"select\") {\r\n if (comp.options && Array.isArray(comp.options)) {\r\n const firstOption = comp.options[0];\r\n if (typeof firstOption === \"object\" && firstOption !== null) {\r\n if (\"label\" in firstOption || \"value\" in firstOption) {\r\n comp.options = comp.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"table\") {\r\n if (comp.columns && Array.isArray(comp.columns)) {\r\n const firstCol = comp.columns[0];\r\n if (typeof firstCol === \"object\" && firstCol !== null) {\r\n comp.columns = comp.columns.map((col: any) =>\r\n col.label || col.id || String(col)\r\n );\r\n }\r\n }\r\n\r\n if (comp.rows && Array.isArray(comp.rows)) {\r\n const firstRow = comp.rows[0];\r\n if (typeof firstRow === \"object\" && !Array.isArray(firstRow)) {\r\n comp.rows = comp.rows.map((row: any) => {\r\n if (Array.isArray(row)) return row;\r\n return Object.values(row).map((val: any) => {\r\n if (typeof val === \"object\" && val !== null) {\r\n if (val.type === \"image\" && val.src) return val.src;\r\n if (val.value !== undefined) return String(val.value);\r\n }\r\n return String(val || \"\");\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"form\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((field: any, fieldIndex: number) => {\r\n if (!field.id || !field.id.trim()) {\r\n field.id = `field-${fieldIndex}-${Date.now()}`;\r\n }\r\n\r\n if (field.optional !== undefined) {\r\n field.requiredField = !field.optional;\r\n delete field.optional;\r\n }\r\n\r\n if (field.required !== undefined) {\r\n field.requiredField = field.required;\r\n delete field.required;\r\n }\r\n\r\n if (field.type === \"input\" && !field.fieldType) {\r\n field.fieldType = \"text\";\r\n }\r\n\r\n if (field.type === \"select\" && field.options && Array.isArray(field.options)) {\r\n const firstOpt = field.options[0];\r\n if (typeof firstOpt === \"object\" && firstOpt !== null) {\r\n field.options = field.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n\r\n return field;\r\n });\r\n }\r\n\r\n if (comp.type === \"list\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((item: any, itemIndex: number) => {\r\n if (typeof item === \"string\") {\r\n return {\r\n id: `list-item-${itemIndex}-${Date.now()}`,\r\n type: \"text\",\r\n value: item,\r\n label: item\r\n };\r\n }\r\n if (!item.id || !item.id.trim()) {\r\n item.id = `list-item-${itemIndex}-${Date.now()}`;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n return comp;\r\n });\r\n\r\n uiData = parsed;\r\n }\r\n\r\n cleaned = cleaned.replace(match[0], \"\").trim();\r\n\r\n break;\r\n } catch (e) {\r\n console.error(\"Invalid ui-component JSON:\", e, block);\r\n }\r\n }\r\n\r\n return {\r\n cleanedText: cleaned,\r\n uiData: uiData\r\n };\r\n};\r\n\r\nexport const historyMessages = (history: Message[], currentUserText: string): BetaMessageParam[] => {\r\n const claudeHistory: BetaMessageParam[] = history\r\n .filter((m) => m.role === \"user\" || m.role === \"assistant\")\r\n .map((m) => ({\r\n role: m.role as \"user\" | \"assistant\",\r\n content: m.text ?? JSON.stringify(m.ui ?? \"\")\r\n }));\r\n\r\n claudeHistory.push({\r\n role: \"user\",\r\n content: currentUserText,\r\n });\r\n\r\n return claudeHistory;\r\n};\r\n\r\nexport const generateId = () => Date.now().toString() + Math.random().toString(36).substr(2, 9);\r\n\r\nexport const normalizeHeaders = (headers: HeadersType): HeadersType => {\r\n const result: HeadersType = {};\r\n\r\n for (const [key, value] of Object.entries(headers)) {\r\n if (!value) continue;\r\n\r\n // cookie varyasyonlarını yakala\r\n if (key.toLowerCase() === \"cookie\") {\r\n result[\"x-cookie\"] = value;\r\n } else {\r\n result[key] = value;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n\r\n","\"use client\";\r\nimport { AizekChatBotProps, ChatWidgetApiResponse, HeadersType, Message } from \"../../types/chatbot\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { fetchChatWidgetSettings } from \"../../services/chat-widget-api\";\r\nimport { validateHeaders } from \"../../utils/cx\";\r\nimport \"../../styles/index.scss\";\r\nimport { defaultConfig, GENERATIVE_UI_SYSTEM_PROMPT } from \"../../store/static\";\r\nimport { HeaderAlert } from \"../header-alert\";\r\nimport { ChatInput } from \"../chat-input\";\r\nimport { MessageBubble } from \"../message-bubble\";\r\nimport { TypingDots } from \"../typing-dots\";\r\nimport Anthropic from \"@anthropic-ai/sdk\";\r\nimport { Client } from \"@modelcontextprotocol/sdk/client\";\r\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\r\nimport { BetaMessageParam } from \"@anthropic-ai/sdk/resources/beta.mjs\";\r\nimport { extractUIJsonFromText, generateId, normalizeHeaders } from \"../../utils/chatbot\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({ clientId, headers }) => {\r\n\r\n const messagesEndRef = useRef<HTMLDivElement>(null);\r\n\r\n const [config, setConfig] = useState<ChatWidgetApiResponse>(defaultConfig);\r\n const [anthropic, setAnthropic] = useState<Anthropic>()\r\n const [messages, setMessages] = useState<Message[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [mcpClient, setMcpClient] = useState<Client>()\r\n const [isConfigLoading, setIsConfigLoading] = useState(true);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [headerValidation, setHeaderValidation] = useState<{ isValid: boolean; missingKeys: string[]; extraKeys: string[]; emptyValueKeys: string[]; } | null>(null);\r\n const [showAlert, setShowAlert] = useState(true);\r\n\r\n const { button_background, button_position, button_size, chat_height, chat_width, company_logo, company_name, header_background, initial_open, placeholder, show_typing_indicator, welcome_message, } = config.chat_widget_settings;\r\n\r\n useEffect(() => {\r\n const loadConfig = async () => {\r\n try {\r\n\r\n setIsConfigLoading(true);\r\n const apiResponse = await fetchChatWidgetSettings(clientId);\r\n\r\n if (apiResponse.success) {\r\n\r\n const anthropic = new Anthropic({ apiKey: apiResponse.data.openai_key, dangerouslyAllowBrowser: true });\r\n const mcpClient = new Client({ name: \"mcp-client-cli\", version: \"1.0.0\" })\r\n\r\n const transport = new SSEClientTransport(new URL(\"\", apiResponse.data.mcp_url), {\r\n eventSourceInit: {\r\n fetch: (url, init) => {\r\n if (headers) {\r\n const dynamicHeaders = normalizeHeaders(headers)\r\n\r\n return fetch(url, {\r\n headers: {\r\n ...(init?.headers ?? {}),\r\n ...dynamicHeaders,\r\n },\r\n })\r\n\r\n } else {\r\n return fetch(url, {\r\n headers: {\r\n ...(init?.headers ?? {}),\r\n },\r\n })\r\n }\r\n },\r\n },\r\n })\r\n await mcpClient.connect(transport)\r\n setMcpClient(mcpClient)\r\n setAnthropic(anthropic)\r\n\r\n if (headers && apiResponse.data.auth_config) {\r\n const validationResult = validateHeaders(\r\n headers,\r\n apiResponse.data.auth_config,\r\n {\r\n allowExtra: false,\r\n caseSensitive: true,\r\n }\r\n );\r\n\r\n setHeaderValidation(validationResult);\r\n }\r\n\r\n if (!apiResponse.data.chat_widget_settings) {\r\n setConfig({\r\n auth_config: apiResponse.data.auth_config,\r\n mcp_url: apiResponse.data.mcp_url,\r\n openai_key: apiResponse.data.openai_key,\r\n chat_widget_settings: {\r\n api_source_id: 0,\r\n chat_widget_settings_id: 0,\r\n created_at: \"\",\r\n updated_at: \"\",\r\n button_background: defaultConfig.chat_widget_settings.button_background,\r\n button_position: defaultConfig.chat_widget_settings.button_position,\r\n button_size: defaultConfig.chat_widget_settings.button_size,\r\n chat_height: defaultConfig.chat_widget_settings.chat_height,\r\n chat_width: defaultConfig.chat_widget_settings.chat_width,\r\n company_logo: defaultConfig.chat_widget_settings.company_logo,\r\n company_name: defaultConfig.chat_widget_settings.company_name,\r\n header_background: defaultConfig.chat_widget_settings.header_background,\r\n initial_open: defaultConfig.chat_widget_settings.initial_open,\r\n placeholder: defaultConfig.chat_widget_settings.placeholder,\r\n show_typing_indicator: defaultConfig.chat_widget_settings.show_typing_indicator,\r\n welcome_message: defaultConfig.chat_widget_settings.welcome_message,\r\n }\r\n });\r\n } else {\r\n\r\n setConfig(apiResponse.data)\r\n }\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"Failed to load chat widget config:\", error);\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n loadConfig();\r\n }, []);\r\n\r\n useEffect(() => {\r\n setIsOpen(initial_open);\r\n }, [initial_open]);\r\n\r\n useEffect(() => {\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n }, [messages]);\r\n\r\n\r\n if (isConfigLoading || !mcpClient || !anthropic) {\r\n return (\r\n <button className={`floating-button ${button_position} button-sizes ${button_size}`} style={{ background: button_background }} >\r\n <div className=\"loading-spinner\" />\r\n </button>\r\n );\r\n }\r\n\r\n const historyMessages = (\r\n history: Message[],\r\n currentUserText: string\r\n ): BetaMessageParam[] => {\r\n const claudeHistory: BetaMessageParam[] = history\r\n .filter((m) => m.role === \"user\" || m.role === \"assistant\")\r\n .map((m) => ({\r\n role: m.role as \"user\" | \"assistant\",\r\n content: m.text ?? JSON.stringify(m.ui ?? \"\")\r\n }));\r\n\r\n claudeHistory.push({\r\n role: \"user\",\r\n content: currentUserText,\r\n });\r\n\r\n return claudeHistory;\r\n };\r\n\r\n\r\n const addMessage = (payload: Omit<Message, \"timestamp\" | \"id\">) => {\r\n const newMessage: Message = {\r\n id: generateId(),\r\n text: payload.text,\r\n ui: payload.ui,\r\n role: payload.role,\r\n timestamp: new Date(),\r\n };\r\n setMessages((prev) => [...prev, newMessage]);\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n return newMessage;\r\n };\r\n\r\n\r\n\r\n\r\n const sendMessage = async (message: string, approval?: boolean) => {\r\n if (!message.trim() || isLoading) return;\r\n\r\n const newMessage: Message = {\r\n id: generateId(),\r\n text: message,\r\n ui: undefined,\r\n role: approval ? \"approval\" : \"user\",\r\n timestamp: new Date(),\r\n };\r\n\r\n setMessages(prev => [...prev, newMessage]);\r\n\r\n setIsLoading(true);\r\n\r\n const toolsResult = await mcpClient.listTools();\r\n\r\n const tools = toolsResult.tools.map((tool) => {\r\n return {\r\n name: tool.name,\r\n description: tool.description,\r\n input_schema: tool.inputSchema,\r\n };\r\n });\r\n\r\n try {\r\n\r\n const historyForContext = historyMessages([...messages, newMessage], message);\r\n\r\n const response = await anthropic.beta.messages.create({\r\n model: \"claude-sonnet-4-5\",\r\n betas: [\"structured-outputs-2025-11-13\"],\r\n max_tokens: 5000,\r\n messages: historyForContext,\r\n tools: tools,\r\n system: GENERATIVE_UI_SYSTEM_PROMPT\r\n });\r\n\r\n for (const content of response.content) {\r\n if (content.type === \"tool_use\") {\r\n const toolCall = await mcpClient.callTool({ name: content.name, arguments: content.input as any })\r\n const toolMessagesForContext = historyMessages([...messages, newMessage], JSON.stringify(toolCall.structuredContent));\r\n\r\n const finalResponse = await anthropic.beta.messages.create({\r\n model: \"claude-sonnet-4-5\",\r\n max_tokens: 1024,\r\n betas: [\"structured-outputs-2025-11-13\"],\r\n messages: toolMessagesForContext,\r\n tools: tools,\r\n system: GENERATIVE_UI_SYSTEM_PROMPT\r\n });\r\n\r\n const textBlock = finalResponse.content.find((x) => x.type === \"text\");\r\n const { cleanedText, uiData } = extractUIJsonFromText(textBlock?.text ?? \"\");\r\n\r\n addMessage({ ui: uiData, text: cleanedText || undefined, role: \"assistant\" });\r\n\r\n } else if (content.type === \"text\") {\r\n const { cleanedText, uiData } = extractUIJsonFromText(content?.text);\r\n console.log(cleanedText, uiData);\r\n addMessage({ ui: uiData, text: cleanedText || undefined, role: \"assistant\" });\r\n }\r\n }\r\n\r\n setIsLoading(false);\r\n } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n addMessage({ text: \"Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.\", role: \"assistant\" });\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const toggleChat = () => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n };\r\n\r\n return (\r\n <>\r\n {isOpen && (<div className={`overlay floating-chat-overlay ${isOpen ? \"is-open\" : \"\"}`} onClick={toggleChat} />)}\r\n\r\n <div className={`chat-container ${button_position} ${isOpen ? \"is-open\" : \"\"}`} style={{ width: chat_width, height: chat_height }} >\r\n <div className=\"chatbot-container\">\r\n <div className=\"header\" style={{ background: header_background }}>\r\n <div className=\"logo-container\">\r\n {company_logo ? (\r\n company_logo.startsWith(\"http\") ||\r\n company_logo.startsWith(\"data:\") ? (\r\n <img\r\n src={company_logo}\r\n alt=\"Company Logo\"\r\n className=\"logo-image\"\r\n />\r\n ) : (\r\n <span className=\"logo-text\">{company_logo}</span>\r\n )\r\n ) : (\r\n \"🤖\"\r\n )}\r\n </div>\r\n <div>\r\n <h3 className=\"company-name\">{company_name}</h3>\r\n <p className=\"status-text\">\r\n {isLoading ? \"Yazıyor...\" : \"Çevrimiçi\"}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"messages-container\">\r\n <HeaderAlert headerValidation={headerValidation} setShowAlert={setShowAlert} showAlert={showAlert} />\r\n\r\n {messages.length === 0 ? (\r\n <div className=\"empty-state\">\r\n <div className=\"empty-state-icon\">💬</div>\r\n <h4 className=\"empty-state-title\">\r\n {welcome_message}\r\n </h4>\r\n <p className=\"empty-state-description\">\r\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\r\n </p>\r\n </div>\r\n ) : (\r\n <>\r\n {messages.map((message) => (\r\n <MessageBubble\r\n key={message.id}\r\n message={message}\r\n onAction={sendMessage}\r\n />\r\n ))}\r\n\r\n {show_typing_indicator && isLoading && <TypingDots />}\r\n </>\r\n )}\r\n\r\n <div ref={messagesEndRef} />\r\n </div>\r\n\r\n <ChatInput handleSendMessage={sendMessage} isLoading={isLoading} placeholder={placeholder} />\r\n </div>\r\n </div>\r\n\r\n <button\r\n onClick={toggleChat}\r\n className={`floating-button ${button_position} button-sizes ${button_size} ${isOpen ? \"is-open\" : \"\"}`}\r\n style={{ background: button_background }}\r\n aria-label={isOpen ? \"Chati kapat\" : \"Chati aç\"}\r\n >\r\n {isOpen ? (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </>\r\n );\r\n};\r\n"]}
|