@docsearch/react 4.0.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocSearchModal.js","sources":["../../../../node_modules/@ai-sdk/provider/dist/index.mjs","../../../../node_modules/eventsource-parser/dist/index.js","../../../../node_modules/eventsource-parser/dist/stream.js","../../../../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/core/registries.js","../../../../node_modules/zod/v4/core/api.js","../../../../node_modules/zod/v4/core/to-json-schema.js","../../../../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/v3/helpers/util.js","../../../../node_modules/zod/v3/ZodError.js","../../../../node_modules/zod/v3/locales/en.js","../../../../node_modules/zod/v3/errors.js","../../../../node_modules/zod/v3/helpers/parseUtil.js","../../../../node_modules/zod/v3/helpers/errorUtil.js","../../../../node_modules/zod/v3/types.js","../../../../node_modules/@ai-sdk/provider-utils/dist/index.mjs","../../../../node_modules/ai/dist/index.mjs","../../../../node_modules/@ai-sdk/react/node_modules/throttleit/index.js","../../../../node_modules/@ai-sdk/react/dist/index.mjs","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/debounce.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/flatten.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/generateAutocompleteId.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/getItemsCount.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/isEqual.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/noop.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/version.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/userAgents.js","../../../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createClickedEvent.js","../../../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/isModernInsightsClient.js","../../../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createSearchInsightsApi.js","../../../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createViewedEvents.js","../../../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/isAlgoliaInsightsHit.js","../../../../node_modules/@algolia/autocomplete-plugin-algolia-insights/dist/esm/createAlgoliaInsightsPlugin.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/safelyRunOnBrowser.js","../../../../node_modules/@algolia/autocomplete-shared/dist/esm/createRef.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/createCancelablePromise.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/createCancelablePromiseList.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getNextActiveItemId.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getNormalizedSources.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getPluginSubmitPromise.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getActiveItem.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getAutocompleteElementId.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/isSamsung.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/getNativeEvent.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/createStore.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/getAutocompleteSetters.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/getDefaultProps.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/reshape.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/resolve.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/mapToAlgoliaResponse.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/onInput.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/createConcurrentSafePromise.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/onKeyDown.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/getPropGetters.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/utils/isOrContainsNode.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/metadata.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/getCompletion.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/stateReducer.js","../../../../node_modules/@algolia/autocomplete-core/dist/esm/createAutocomplete.js","../../src/constants.ts","../../src/askai.ts","../../src/AlgoliaLogo.tsx","../../src/Footer.tsx","../../src/Hit.tsx","../../src/icons/LoadingIcon.tsx","../../src/icons/SparklesIcon.tsx","../../src/icons/RecentIcon.tsx","../../src/icons/CloseIcon.tsx","../../src/icons/SearchIcon.tsx","../../src/icons/AlertIcon.tsx","../../src/icons/SelectIcon.tsx","../../src/icons/SourceIcon.tsx","../../src/icons/StarIcon.tsx","../../src/icons/StopIcon.tsx","../../src/icons/ErrorIcon.tsx","../../src/icons/NoResultsIcon.tsx","../../src/icons/MoreVerticalIcon.tsx","../../src/icons/ConversationHistoryIcon.tsx","../../src/icons/NewConversationIcon.tsx","../../src/AggregatedSearchBlock.tsx","../../../../node_modules/marked/lib/marked.esm.js","../../src/MemoizedMarkdown.tsx","../../src/utils/ai.ts","../../src/AskAiScreen.tsx","../../src/utils/groupConsecutiveToolResults.ts","../../src/Snippet.tsx","../../src/Results.tsx","../../src/ConversationHistoryScreen.tsx","../../src/ErrorScreen.tsx","../../src/NewConversationScreen.tsx","../../src/NoResultsScreen.tsx","../../src/utils/groupBy.ts","../../src/utils/identity.ts","../../src/utils/isModifierEvent.ts","../../src/utils/noop.ts","../../src/utils/removeHighlightTags.ts","../../src/ResultsScreen.tsx","../../src/StartScreen.tsx","../../src/ScreenState.tsx","../../src/icons/BackIcon.tsx","../../src/Menu.tsx","../../src/ModalHeading.tsx","../../src/SearchBox.tsx","../../src/utils/storage.ts","../../src/stored-searches.ts","../../../../node_modules/@algolia/client-common/dist/common.js","../../src/version.ts","../../src/useSearchClient.ts","../../../../node_modules/algoliasearch/dist/lite/builds/browser.js","../../../../node_modules/@algolia/requester-browser-xhr/dist/requester.xhr.js","../../src/DocSearchModal.tsx","../../src/useTrapFocus.ts","../../src/useTouchEvents.ts","../../src/useTheme.tsx","../../src/utils/scrollTo.ts"],"sourcesContent":["// src/errors/ai-sdk-error.ts\nvar marker = \"vercel.ai.error\";\nvar symbol = Symbol.for(marker);\nvar _a;\nvar _AISDKError = class _AISDKError extends Error {\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name: name14,\n message,\n cause\n }) {\n super(message);\n this[_a] = true;\n this.name = name14;\n this.cause = cause;\n }\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error) {\n return _AISDKError.hasMarker(error, marker);\n }\n static hasMarker(error, marker15) {\n const markerSymbol = Symbol.for(marker15);\n return error != null && typeof error === \"object\" && markerSymbol in error && typeof error[markerSymbol] === \"boolean\" && error[markerSymbol] === true;\n }\n};\n_a = symbol;\nvar AISDKError = _AISDKError;\n\n// src/errors/api-call-error.ts\nvar name = \"AI_APICallError\";\nvar marker2 = `vercel.ai.error.${name}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar APICallError = class extends AISDKError {\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null && (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500),\n // server error\n data\n }) {\n super({ name, message, cause });\n this[_a2] = true;\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker2);\n }\n};\n_a2 = symbol2;\n\n// src/errors/empty-response-body-error.ts\nvar name2 = \"AI_EmptyResponseBodyError\";\nvar marker3 = `vercel.ai.error.${name2}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar EmptyResponseBodyError = class extends AISDKError {\n // used in isInstance\n constructor({ message = \"Empty response body\" } = {}) {\n super({ name: name2, message });\n this[_a3] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker3);\n }\n};\n_a3 = symbol3;\n\n// src/errors/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/errors/invalid-argument-error.ts\nvar name3 = \"AI_InvalidArgumentError\";\nvar marker4 = `vercel.ai.error.${name3}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidArgumentError = class extends AISDKError {\n constructor({\n message,\n cause,\n argument\n }) {\n super({ name: name3, message, cause });\n this[_a4] = true;\n this.argument = argument;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker4);\n }\n};\n_a4 = symbol4;\n\n// src/errors/invalid-prompt-error.ts\nvar name4 = \"AI_InvalidPromptError\";\nvar marker5 = `vercel.ai.error.${name4}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar InvalidPromptError = class extends AISDKError {\n constructor({\n prompt,\n message,\n cause\n }) {\n super({ name: name4, message: `Invalid prompt: ${message}`, cause });\n this[_a5] = true;\n this.prompt = prompt;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker5);\n }\n};\n_a5 = symbol5;\n\n// src/errors/invalid-response-data-error.ts\nvar name5 = \"AI_InvalidResponseDataError\";\nvar marker6 = `vercel.ai.error.${name5}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar InvalidResponseDataError = class extends AISDKError {\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`\n }) {\n super({ name: name5, message });\n this[_a6] = true;\n this.data = data;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker6);\n }\n};\n_a6 = symbol6;\n\n// src/errors/json-parse-error.ts\nvar name6 = \"AI_JSONParseError\";\nvar marker7 = `vercel.ai.error.${name6}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar JSONParseError = class extends AISDKError {\n constructor({ text, cause }) {\n super({\n name: name6,\n message: `JSON parsing failed: Text: ${text}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a7] = true;\n this.text = text;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker7);\n }\n};\n_a7 = symbol7;\n\n// src/errors/load-api-key-error.ts\nvar name7 = \"AI_LoadAPIKeyError\";\nvar marker8 = `vercel.ai.error.${name7}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar LoadAPIKeyError = class extends AISDKError {\n // used in isInstance\n constructor({ message }) {\n super({ name: name7, message });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker8);\n }\n};\n_a8 = symbol8;\n\n// src/errors/load-setting-error.ts\nvar name8 = \"AI_LoadSettingError\";\nvar marker9 = `vercel.ai.error.${name8}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar LoadSettingError = class extends AISDKError {\n // used in isInstance\n constructor({ message }) {\n super({ name: name8, message });\n this[_a9] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker9);\n }\n};\n_a9 = symbol9;\n\n// src/errors/no-content-generated-error.ts\nvar name9 = \"AI_NoContentGeneratedError\";\nvar marker10 = `vercel.ai.error.${name9}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar NoContentGeneratedError = class extends AISDKError {\n // used in isInstance\n constructor({\n message = \"No content generated.\"\n } = {}) {\n super({ name: name9, message });\n this[_a10] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker10);\n }\n};\n_a10 = symbol10;\n\n// src/errors/no-such-model-error.ts\nvar name10 = \"AI_NoSuchModelError\";\nvar marker11 = `vercel.ai.error.${name10}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar NoSuchModelError = class extends AISDKError {\n constructor({\n errorName = name10,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`\n }) {\n super({ name: errorName, message });\n this[_a11] = true;\n this.modelId = modelId;\n this.modelType = modelType;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker11);\n }\n};\n_a11 = symbol11;\n\n// src/errors/too-many-embedding-values-for-call-error.ts\nvar name11 = \"AI_TooManyEmbeddingValuesForCallError\";\nvar marker12 = `vercel.ai.error.${name11}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar TooManyEmbeddingValuesForCallError = class extends AISDKError {\n constructor(options) {\n super({\n name: name11,\n message: `Too many values for a single embedding call. The ${options.provider} model \"${options.modelId}\" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`\n });\n this[_a12] = true;\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker12);\n }\n};\n_a12 = symbol12;\n\n// src/errors/type-validation-error.ts\nvar name12 = \"AI_TypeValidationError\";\nvar marker13 = `vercel.ai.error.${name12}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar _TypeValidationError = class _TypeValidationError extends AISDKError {\n constructor({ value, cause }) {\n super({\n name: name12,\n message: `Type validation failed: Value: ${JSON.stringify(value)}.\nError message: ${getErrorMessage(cause)}`,\n cause\n });\n this[_a13] = true;\n this.value = value;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker13);\n }\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause\n }) {\n return _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({ value, cause });\n }\n};\n_a13 = symbol13;\nvar TypeValidationError = _TypeValidationError;\n\n// src/errors/unsupported-functionality-error.ts\nvar name13 = \"AI_UnsupportedFunctionalityError\";\nvar marker14 = `vercel.ai.error.${name13}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar UnsupportedFunctionalityError = class extends AISDKError {\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`\n }) {\n super({ name: name13, message });\n this[_a14] = true;\n this.functionality = functionality;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker14);\n }\n};\n_a14 = symbol14;\n\n// src/json-value/is-json.ts\nfunction isJSONValue(value) {\n if (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return true;\n }\n if (Array.isArray(value)) {\n return value.every(isJSONValue);\n }\n if (typeof value === \"object\") {\n return Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && isJSONValue(val)\n );\n }\n return false;\n}\nfunction isJSONArray(value) {\n return Array.isArray(value) && value.every(isJSONValue);\n}\nfunction isJSONObject(value) {\n return value != null && typeof value === \"object\" && Object.entries(value).every(\n ([key, val]) => typeof key === \"string\" && isJSONValue(val)\n );\n}\nexport {\n AISDKError,\n APICallError,\n EmptyResponseBodyError,\n InvalidArgumentError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n LoadSettingError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError,\n getErrorMessage,\n isJSONArray,\n isJSONObject,\n isJSONValue\n};\n//# sourceMappingURL=index.mjs.map","class ParseError extends Error {\n constructor(message, options) {\n super(message), this.name = \"ParseError\", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line;\n }\n}\nfunction noop(_arg) {\n}\nfunction createParser(callbacks) {\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 const { onEvent = noop, onError = noop, onRetry = noop, onComment } = callbacks;\n let incompleteLine = \"\", isFirstChunk = !0, id, data = \"\", eventType = \"\";\n function feed(newChunk) {\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, \"\") : newChunk, [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`);\n for (const line of complete)\n parseLine(line);\n incompleteLine = incomplete, isFirstChunk = !1;\n }\n function parseLine(line) {\n if (line === \"\") {\n dispatchEvent();\n return;\n }\n if (line.startsWith(\":\")) {\n onComment && onComment(line.slice(line.startsWith(\": \") ? 2 : 1));\n return;\n }\n const fieldSeparatorIndex = line.indexOf(\":\");\n if (fieldSeparatorIndex !== -1) {\n const field = line.slice(0, fieldSeparatorIndex), offset = line[fieldSeparatorIndex + 1] === \" \" ? 2 : 1, value = line.slice(fieldSeparatorIndex + offset);\n processField(field, value, line);\n return;\n }\n processField(line, \"\", line);\n }\n function processField(field, value, line) {\n switch (field) {\n case \"event\":\n eventType = value;\n break;\n case \"data\":\n data = `${data}${value}\n`;\n break;\n case \"id\":\n id = value.includes(\"\\0\") ? void 0 : value;\n break;\n case \"retry\":\n /^\\d+$/.test(value) ? onRetry(parseInt(value, 10)) : onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: \"invalid-retry\",\n value,\n line\n })\n );\n break;\n default:\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}\\u2026` : field}\"`,\n { type: \"unknown-field\", field, value, line }\n )\n );\n break;\n }\n }\n function dispatchEvent() {\n data.length > 0 && onEvent({\n id,\n event: eventType || void 0,\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 }), id = void 0, data = \"\", eventType = \"\";\n }\n function reset(options = {}) {\n incompleteLine && options.consume && parseLine(incompleteLine), isFirstChunk = !0, id = void 0, data = \"\", eventType = \"\", incompleteLine = \"\";\n }\n return { feed, reset };\n}\nfunction splitLines(chunk) {\n const lines = [];\n let incompleteLine = \"\", searchIndex = 0;\n for (; searchIndex < chunk.length; ) {\n const crIndex = chunk.indexOf(\"\\r\", searchIndex), lfIndex = chunk.indexOf(`\n`, searchIndex);\n let lineEnd = -1;\n if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = Math.min(crIndex, lfIndex) : crIndex !== -1 ? crIndex === chunk.length - 1 ? lineEnd = -1 : lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1) {\n incompleteLine = chunk.slice(searchIndex);\n break;\n } else {\n const line = chunk.slice(searchIndex, lineEnd);\n lines.push(line), searchIndex = lineEnd + 1, chunk[searchIndex - 1] === \"\\r\" && chunk[searchIndex] === `\n` && searchIndex++;\n }\n }\n return [lines, incompleteLine];\n}\nexport {\n ParseError,\n createParser\n};\n//# sourceMappingURL=index.js.map\n","import { createParser } from \"./index.js\";\nimport { ParseError } from \"./index.js\";\nclass EventSourceParserStream extends TransformStream {\n constructor({ onError, onRetry, onComment } = {}) {\n let parser;\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event);\n },\n onError(error) {\n onError === \"terminate\" ? controller.error(error) : typeof onError == \"function\" && onError(error);\n },\n onRetry,\n onComment\n });\n },\n transform(chunk) {\n parser.feed(chunk);\n }\n });\n }\n}\nexport {\n EventSourceParserStream,\n ParseError\n};\n//# sourceMappingURL=stream.js.map\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 class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\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 stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\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}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\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 objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\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 mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\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 = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\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 shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\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 // @ts-ignore\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 currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\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 newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...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 assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\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 checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\"Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.\");\n }\n const def = mergeDefs(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: [],\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: 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: schema._zod.def.checks,\n };\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(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 get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\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 assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\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 assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\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 // @ts-ignore\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// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\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 inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\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 const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\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);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(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 9562/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|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\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 idnEmail = unicodeEmail;\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\nconst _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}:){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}|:))$/;\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 = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\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) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\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+)?/;\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// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\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 continue: false,\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 inclusive: true,\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 inclusive: true,\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 continue: !def.abort,\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: 1,\n patch: 9,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, 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 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 // const handleChecksResult = (\n // checkResult: ParsePayload,\n // originalResult: ParsePayload,\n // ctx: ParseContextInternal\n // ): util.MaybeAsync<ParsePayload> => {\n // // if the checks mutated the value && there are no issues, re-parse the result\n // if (checkResult.value !== originalResult.value && !checkResult.issues.length)\n // return inst._zod.parse(checkResult, ctx);\n // return originalResult;\n // };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\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 // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\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 // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\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 // @ts-ignore\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 parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\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 // @ts-ignore\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 // @ts-ignore\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 // @ts-ignore\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 handlePropertyResult(result, final, key, input) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$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 ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.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) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\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}\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(() => normalizeDef(def));\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 isObject = util.isObject;\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 payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input)));\n }\n else {\n handlePropertyResult(r, payload, key, input);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\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 const id = ids[key];\n const k = util.esc(key);\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \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 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 if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\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 const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\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 const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\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 discriminator: def.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 ...(tooBig ? { code: \"too_big\", maximum: items.length } : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\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 code: \"invalid_key\",\n origin: \"record\",\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 code: \"invalid_key\",\n origin: \"map\",\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 const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\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 (valuesSet.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 if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\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 ? util.escapeRegex(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 // @ts-ignore\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 if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\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});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\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 const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\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 // Forward direction (decode): allow null to pass through\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 (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\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 // Forward direction: continue with default handling\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 (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\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 if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\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 util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\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 if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\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 util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (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 util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ 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 if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\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 (typeof part === \"object\" && part !== null) {\n // is Zod schema\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: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\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 // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\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 ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType._zod.optout ?? undefined);\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","export const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\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 WeakMap();\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 const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\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() : util.shallowClone(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// 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 _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); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\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 _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\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: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\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","import { $ZodRegistry, globalRegistry } from \"./registries.js\";\nimport { getEnumValues } from \"./util.js\";\nexport class JSONSchemaGenerator {\n constructor(params) {\n this.counter = 0;\n this.metadataRegistry = params?.metadata ?? globalRegistry;\n this.target = params?.target ?? \"draft-2020-12\";\n this.unrepresentable = params?.unrepresentable ?? \"throw\";\n this.override = params?.override ?? (() => { });\n this.io = params?.io ?? \"output\";\n this.seen = new Map();\n }\n process(schema, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n const formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n };\n // check for schema in seens\n const seen = this.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n this.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n const parent = schema._zod.parent;\n if (parent) {\n // schema was cloned from another schema\n result.ref = parent;\n this.process(parent, params);\n this.seen.get(parent).isParent = true;\n }\n else {\n const _json = result.schema;\n switch (def.type) {\n case \"string\": {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n result.schema.allOf = [\n ...regexes.map((regex) => ({\n ...(this.target === \"draft-7\" || this.target === \"draft-4\" || this.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n break;\n }\n case \"number\": {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (this.target === \"draft-4\" || this.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && this.target !== \"draft-4\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (this.target === \"draft-4\" || this.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && this.target !== \"draft-4\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n break;\n }\n case \"boolean\": {\n const json = _json;\n json.type = \"boolean\";\n break;\n }\n case \"bigint\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"symbol\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"null\": {\n if (this.target === \"openapi-3.0\") {\n _json.type = \"string\";\n _json.nullable = true;\n _json.enum = [null];\n }\n else\n _json.type = \"null\";\n break;\n }\n case \"any\": {\n break;\n }\n case \"unknown\": {\n break;\n }\n case \"undefined\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"void\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"never\": {\n _json.not = {};\n break;\n }\n case \"date\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"array\": {\n const json = _json;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = this.process(def.element, { ...params, path: [...params.path, \"items\"] });\n break;\n }\n case \"object\": {\n const json = _json;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape; // params.shapeCache.get(schema)!;\n for (const key in shape) {\n json.properties[key] = this.process(shape[key], {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n // const optionalKeys = new Set(def.optional);\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (this.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (this.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = this.process(def.catchall, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n break;\n }\n case \"union\": {\n const json = _json;\n const options = def.options.map((x, i) => this.process(x, {\n ...params,\n path: [...params.path, \"anyOf\", i],\n }));\n json.anyOf = options;\n break;\n }\n case \"intersection\": {\n const json = _json;\n const a = this.process(def.left, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = this.process(def.right, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n break;\n }\n case \"tuple\": {\n const json = _json;\n json.type = \"array\";\n const prefixPath = this.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = this.target === \"draft-2020-12\" ? \"items\" : this.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => this.process(x, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? this.process(def.rest, {\n ...params,\n path: [...params.path, restPath, ...(this.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (this.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (this.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n break;\n }\n case \"record\": {\n const json = _json;\n json.type = \"object\";\n if (this.target === \"draft-7\" || this.target === \"draft-2020-12\") {\n json.propertyNames = this.process(def.keyType, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = this.process(def.valueType, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n break;\n }\n case \"map\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"set\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"enum\": {\n const json = _json;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n break;\n }\n case \"literal\": {\n const json = _json;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (this.target === \"draft-4\" || this.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"string\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n break;\n }\n case \"file\": {\n const json = _json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(json, file);\n }\n else {\n json.anyOf = mime.map((m) => {\n const mFile = { ...file, contentMediaType: m };\n return mFile;\n });\n }\n }\n else {\n Object.assign(json, file);\n }\n // if (this.unrepresentable === \"throw\") {\n // throw new Error(\"File cannot be represented in JSON Schema\");\n // }\n break;\n }\n case \"transform\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"nullable\": {\n const inner = this.process(def.innerType, params);\n if (this.target === \"openapi-3.0\") {\n result.ref = def.innerType;\n _json.nullable = true;\n }\n else {\n _json.anyOf = [inner, { type: \"null\" }];\n }\n break;\n }\n case \"nonoptional\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"success\": {\n const json = _json;\n json.type = \"boolean\";\n break;\n }\n case \"default\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n _json.default = JSON.parse(JSON.stringify(def.defaultValue));\n break;\n }\n case \"prefault\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n if (this.io === \"input\")\n _json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n break;\n }\n case \"catch\": {\n // use conditionals\n this.process(def.innerType, params);\n result.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n _json.default = catchValue;\n break;\n }\n case \"nan\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"template_literal\": {\n const json = _json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n json.type = \"string\";\n json.pattern = pattern.source;\n break;\n }\n case \"pipe\": {\n const innerType = this.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n this.process(innerType, params);\n result.ref = innerType;\n break;\n }\n case \"readonly\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n _json.readOnly = true;\n break;\n }\n // passthrough types\n case \"promise\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"optional\": {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"lazy\": {\n const innerType = schema._zod.innerType;\n this.process(innerType, params);\n result.ref = innerType;\n break;\n }\n case \"custom\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"function\": {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n break;\n }\n default: {\n def;\n }\n }\n }\n }\n // metadata\n const meta = this.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (this.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (this.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from this.seen in case it was overwritten\n const _result = this.seen.get(schema);\n return _result.schema;\n }\n emit(schema, _params) {\n const params = {\n cycles: _params?.cycles ?? \"ref\",\n reused: _params?.reused ?? \"inline\",\n // unrepresentable: _params?.unrepresentable ?? \"throw\",\n // uri: _params?.uri ?? ((id) => `${id}`),\n external: _params?.external ?? undefined,\n };\n // iterate over seen map;\n const root = this.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // initialize result with root schema fields\n // Object.assign(result, seen.cached);\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = this.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (params.external) {\n const externalId = params.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${this.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = params.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${this.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${this.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (params.cycles === \"throw\") {\n for (const entry of this.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of this.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (params.external) {\n const ext = params.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = this.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (params.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n // flatten _refs\n const flattenRef = (zodSchema, params) => {\n const seen = this.seen.get(zodSchema);\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n // already seen\n if (seen.ref === null) {\n return;\n }\n // flatten ref if defined\n const ref = seen.ref;\n seen.ref = null; // prevent recursion\n if (ref) {\n flattenRef(ref, params);\n // merge referenced schema into current\n const refSchema = this.seen.get(ref).schema;\n if (refSchema.$ref &&\n (params.target === \"draft-7\" || params.target === \"draft-4\" || params.target === \"openapi-3.0\")) {\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n Object.assign(schema, _cached); // prevent overwriting any fields in the original schema\n }\n }\n // execute overrides\n if (!seen.isParent)\n this.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...this.seen.entries()].reverse()) {\n flattenRef(entry[0], { target: this.target });\n }\n const result = {};\n if (this.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (this.target === \"draft-7\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (this.target === \"draft-4\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (this.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // @ts-ignore\n console.warn(`Invalid target: ${this.target}`);\n }\n if (params.external?.uri) {\n const id = params.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = params.external.uri(id);\n }\n Object.assign(result, root.def);\n // build defs object\n const defs = params.external?.defs ?? {};\n for (const entry of this.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (params.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (this.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to .emit() is functionally independent\n // though the seen map is shared\n return JSON.parse(JSON.stringify(result));\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n }\n}\nexport function toJSONSchema(input, _params) {\n if (input instanceof $ZodRegistry) {\n const gen = new JSONSchemaGenerator(_params);\n const defs = {};\n for (const entry of input._idmap.entries()) {\n const [_, schema] = entry;\n gen.process(schema);\n }\n const schemas = {};\n const external = {\n registry: input,\n uri: _params?.uri,\n defs,\n };\n for (const entry of input._idmap.entries()) {\n const [key, schema] = entry;\n schemas[key] = gen.emit(schema, {\n ..._params,\n external,\n });\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = gen.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n const gen = new JSONSchemaGenerator(_params);\n gen.process(input);\n return gen.emit(input, _params);\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const schema = _schema;\n const def = schema._zod.def;\n switch (def.type) {\n case \"string\":\n case \"number\":\n case \"bigint\":\n case \"boolean\":\n case \"date\":\n case \"symbol\":\n case \"undefined\":\n case \"null\":\n case \"any\":\n case \"unknown\":\n case \"never\":\n case \"void\":\n case \"literal\":\n case \"enum\":\n case \"nan\":\n case \"file\":\n case \"template_literal\":\n return false;\n case \"array\": {\n return isTransforming(def.element, ctx);\n }\n case \"object\": {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n case \"union\": {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n case \"intersection\": {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n case \"tuple\": {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n case \"record\": {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n case \"map\": {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n case \"set\": {\n return isTransforming(def.valueType, ctx);\n }\n // inner types\n case \"promise\":\n case \"optional\":\n case \"nonoptional\":\n case \"nullable\":\n case \"readonly\":\n return isTransforming(def.innerType, ctx);\n case \"lazy\":\n return isTransforming(def.getter(), ctx);\n case \"default\": {\n return isTransforming(def.innerType, ctx);\n }\n case \"prefault\": {\n return isTransforming(def.innerType, ctx);\n }\n case \"custom\": {\n return false;\n }\n case \"transform\": {\n return true;\n }\n case \"pipe\": {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n case \"success\": {\n return false;\n }\n case \"catch\": {\n return false;\n }\n case \"function\": {\n return false;\n }\n default:\n def;\n }\n throw new Error(`Unknown schema type: ${def.type}`);\n}\n","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\";\nimport * as util from \"../core/util.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) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\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// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(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 inst.type = def.type;\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 // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\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 function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\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 function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, 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 _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.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.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.safeExtend = (incoming) => {\n return util.safeExtend(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 ? util.objectClone(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\", util.objectClone(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\", util.objectClone(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 const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\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 if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\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 ??= 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() : util.shallowClone(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() : util.shallowClone(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 ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = () => inst._zod.def.innerType;\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 ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\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 return core._superRefine(fn);\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 Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\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","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n // @ts-ignore\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n // @ts-ignore\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(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 { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","// src/combine-headers.ts\nfunction combineHeaders(...headers) {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...currentHeaders != null ? currentHeaders : {}\n }),\n {}\n );\n}\n\n// src/convert-async-iterator-to-readable-stream.ts\nfunction convertAsyncIteratorToReadableStream(iterator) {\n return new ReadableStream({\n /**\n * Called when the consumer wants to pull more data from the stream.\n *\n * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n * @returns {Promise<void>}\n */\n async pull(controller) {\n try {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n },\n /**\n * Called when the consumer cancels the stream.\n */\n cancel() {\n }\n });\n}\n\n// src/delay.ts\nasync function delay(delayInMs, options) {\n if (delayInMs == null) {\n return Promise.resolve();\n }\n const signal = options == null ? void 0 : options.abortSignal;\n return new Promise((resolve2, reject) => {\n if (signal == null ? void 0 : signal.aborted) {\n reject(createAbortError());\n return;\n }\n const timeoutId = setTimeout(() => {\n cleanup();\n resolve2();\n }, delayInMs);\n const cleanup = () => {\n clearTimeout(timeoutId);\n signal == null ? void 0 : signal.removeEventListener(\"abort\", onAbort);\n };\n const onAbort = () => {\n cleanup();\n reject(createAbortError());\n };\n signal == null ? void 0 : signal.addEventListener(\"abort\", onAbort);\n });\n}\nfunction createAbortError() {\n return new DOMException(\"Delay was aborted\", \"AbortError\");\n}\n\n// src/extract-response-headers.ts\nfunction extractResponseHeaders(response) {\n return Object.fromEntries([...response.headers]);\n}\n\n// src/get-runtime-environment-user-agent.ts\nfunction getRuntimeEnvironmentUserAgent(globalThisAny = globalThis) {\n var _a, _b, _c;\n if (globalThisAny.window) {\n return `runtime/browser`;\n }\n if ((_a = globalThisAny.navigator) == null ? void 0 : _a.userAgent) {\n return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n }\n if ((_c = (_b = globalThisAny.process) == null ? void 0 : _b.versions) == null ? void 0 : _c.node) {\n return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n }\n if (globalThisAny.EdgeRuntime) {\n return `runtime/vercel-edge`;\n }\n return \"runtime/unknown\";\n}\n\n// src/remove-undefined-entries.ts\nfunction removeUndefinedEntries(record) {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null)\n );\n}\n\n// src/with-user-agent-suffix.ts\nfunction withUserAgentSuffix(headers, ...userAgentSuffixParts) {\n const cleanedHeaders = removeUndefinedEntries(\n headers != null ? headers : {}\n );\n const normalizedHeaders = new Headers(cleanedHeaders);\n const currentUserAgentHeader = normalizedHeaders.get(\"user-agent\") || \"\";\n normalizedHeaders.set(\n \"user-agent\",\n [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(\" \")\n );\n return Object.fromEntries(normalizedHeaders);\n}\n\n// src/generate-id.ts\nimport { InvalidArgumentError } from \"@ai-sdk/provider\";\nvar createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n separator = \"-\"\n} = {}) => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[Math.random() * alphabetLength | 0];\n }\n return chars.join(\"\");\n };\n if (prefix == null) {\n return generator;\n }\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: \"separator\",\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`\n });\n }\n return () => `${prefix}${separator}${generator()}`;\n};\nvar generateId = createIdGenerator();\n\n// src/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/get-from-api.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\n\n// src/handle-fetch-error.ts\nimport { APICallError } from \"@ai-sdk/provider\";\n\n// src/is-abort-error.ts\nfunction isAbortError(error) {\n return (error instanceof Error || error instanceof DOMException) && (error.name === \"AbortError\" || error.name === \"ResponseAborted\" || // Next.js\n error.name === \"TimeoutError\");\n}\n\n// src/handle-fetch-error.ts\nvar FETCH_FAILED_ERROR_MESSAGES = [\"fetch failed\", \"failed to fetch\"];\nfunction handleFetchError({\n error,\n url,\n requestBodyValues\n}) {\n if (isAbortError(error)) {\n return error;\n }\n if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {\n const cause = error.cause;\n if (cause != null) {\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true\n // retry when network error\n });\n }\n }\n return error;\n}\n\n// src/version.ts\nvar VERSION = true ? \"3.0.9\" : \"0.0.0-test\";\n\n// src/get-from-api.ts\nvar getOriginalFetch = () => globalThis.fetch;\nvar getFromApi = async ({\n url,\n headers = {},\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch()\n}) => {\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n ),\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n throw new APICallError2({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError2({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: {} });\n }\n};\n\n// src/inject-json-instruction.ts\nvar DEFAULT_SCHEMA_PREFIX = \"JSON schema:\";\nvar DEFAULT_SCHEMA_SUFFIX = \"You MUST answer with a JSON object that matches the JSON schema above.\";\nvar DEFAULT_GENERIC_SUFFIX = \"You MUST answer with JSON.\";\nfunction injectJsonInstruction({\n prompt,\n schema,\n schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : void 0,\n schemaSuffix = schema != null ? DEFAULT_SCHEMA_SUFFIX : DEFAULT_GENERIC_SUFFIX\n}) {\n return [\n prompt != null && prompt.length > 0 ? prompt : void 0,\n prompt != null && prompt.length > 0 ? \"\" : void 0,\n // add a newline if prompt is not null\n schemaPrefix,\n schema != null ? JSON.stringify(schema) : void 0,\n schemaSuffix\n ].filter((line) => line != null).join(\"\\n\");\n}\nfunction injectJsonInstructionIntoMessages({\n messages,\n schema,\n schemaPrefix,\n schemaSuffix\n}) {\n var _a, _b;\n const systemMessage = ((_a = messages[0]) == null ? void 0 : _a.role) === \"system\" ? { ...messages[0] } : { role: \"system\", content: \"\" };\n systemMessage.content = injectJsonInstruction({\n prompt: systemMessage.content,\n schema,\n schemaPrefix,\n schemaSuffix\n });\n return [\n systemMessage,\n ...((_b = messages[0]) == null ? void 0 : _b.role) === \"system\" ? messages.slice(1) : messages\n ];\n}\n\n// src/is-url-supported.ts\nfunction isUrlSupported({\n mediaType,\n url,\n supportedUrls\n}) {\n url = url.toLowerCase();\n mediaType = mediaType.toLowerCase();\n return Object.entries(supportedUrls).map(([key, value]) => {\n const mediaType2 = key.toLowerCase();\n return mediaType2 === \"*\" || mediaType2 === \"*/*\" ? { mediaTypePrefix: \"\", regexes: value } : { mediaTypePrefix: mediaType2.replace(/\\*/, \"\"), regexes: value };\n }).filter(({ mediaTypePrefix }) => mediaType.startsWith(mediaTypePrefix)).flatMap(({ regexes }) => regexes).some((pattern) => pattern.test(url));\n}\n\n// src/load-api-key.ts\nimport { LoadAPIKeyError } from \"@ai-sdk/provider\";\nfunction loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = \"apiKey\",\n description\n}) {\n if (typeof apiKey === \"string\") {\n return apiKey;\n }\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`\n });\n }\n apiKey = process.env[environmentVariableName];\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof apiKey !== \"string\") {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return apiKey;\n}\n\n// src/load-optional-setting.ts\nfunction loadOptionalSetting({\n settingValue,\n environmentVariableName\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null || typeof process === \"undefined\") {\n return void 0;\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null || typeof settingValue !== \"string\") {\n return void 0;\n }\n return settingValue;\n}\n\n// src/load-setting.ts\nimport { LoadSettingError } from \"@ai-sdk/provider\";\nfunction loadSetting({\n settingValue,\n environmentVariableName,\n settingName,\n description\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null) {\n throw new LoadSettingError({\n message: `${description} setting must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`\n });\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null) {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof settingValue !== \"string\") {\n throw new LoadSettingError({\n message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return settingValue;\n}\n\n// src/media-type-to-extension.ts\nfunction mediaTypeToExtension(mediaType) {\n var _a;\n const [_type, subtype = \"\"] = mediaType.toLowerCase().split(\"/\");\n return (_a = {\n mpeg: \"mp3\",\n \"x-wav\": \"wav\",\n opus: \"ogg\",\n mp4: \"m4a\",\n \"x-m4a\": \"m4a\"\n }[subtype]) != null ? _a : subtype;\n}\n\n// src/parse-json.ts\nimport {\n JSONParseError,\n TypeValidationError as TypeValidationError3\n} from \"@ai-sdk/provider\";\n\n// src/secure-json-parse.ts\nvar suspectProtoRx = /\"__proto__\"\\s*:/;\nvar suspectConstructorRx = /\"constructor\"\\s*:/;\nfunction _parse(text) {\n const obj = JSON.parse(text);\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n return obj;\n }\n return filter(obj);\n}\nfunction filter(obj) {\n let next = [obj];\n while (next.length) {\n const nodes = next;\n next = [];\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, \"__proto__\")) {\n throw new SyntaxError(\"Object contains forbidden prototype property\");\n }\n if (Object.prototype.hasOwnProperty.call(node, \"constructor\") && Object.prototype.hasOwnProperty.call(node.constructor, \"prototype\")) {\n throw new SyntaxError(\"Object contains forbidden prototype property\");\n }\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === \"object\") {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\nfunction secureJsonParse(text) {\n const { stackTraceLimit } = Error;\n Error.stackTraceLimit = 0;\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n\n// src/validate-types.ts\nimport { TypeValidationError as TypeValidationError2 } from \"@ai-sdk/provider\";\n\n// src/validator.ts\nimport { TypeValidationError } from \"@ai-sdk/provider\";\nvar validatorSymbol = Symbol.for(\"vercel.ai.validator\");\nfunction validator(validate) {\n return { [validatorSymbol]: true, validate };\n}\nfunction isValidator(value) {\n return typeof value === \"object\" && value !== null && validatorSymbol in value && value[validatorSymbol] === true && \"validate\" in value;\n}\nfunction asValidator(value) {\n return isValidator(value) ? value : standardSchemaValidator(value);\n}\nfunction standardSchemaValidator(standardSchema) {\n return validator(async (value) => {\n const result = await standardSchema[\"~standard\"].validate(value);\n return result.issues == null ? { success: true, value: result.value } : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues\n })\n };\n });\n}\n\n// src/validate-types.ts\nasync function validateTypes({\n value,\n schema\n}) {\n const result = await safeValidateTypes({ value, schema });\n if (!result.success) {\n throw TypeValidationError2.wrap({ value, cause: result.error });\n }\n return result.value;\n}\nasync function safeValidateTypes({\n value,\n schema\n}) {\n const validator2 = asValidator(schema);\n try {\n if (validator2.validate == null) {\n return { success: true, value, rawValue: value };\n }\n const result = await validator2.validate(value);\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n return {\n success: false,\n error: TypeValidationError2.wrap({ value, cause: result.error }),\n rawValue: value\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError2.wrap({ value, cause: error }),\n rawValue: value\n };\n }\n}\n\n// src/parse-json.ts\nasync function parseJSON({\n text,\n schema\n}) {\n try {\n const value = secureJsonParse(text);\n if (schema == null) {\n return value;\n }\n return validateTypes({ value, schema });\n } catch (error) {\n if (JSONParseError.isInstance(error) || TypeValidationError3.isInstance(error)) {\n throw error;\n }\n throw new JSONParseError({ text, cause: error });\n }\n}\nasync function safeParseJSON({\n text,\n schema\n}) {\n try {\n const value = secureJsonParse(text);\n if (schema == null) {\n return { success: true, value, rawValue: value };\n }\n return await safeValidateTypes({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error }),\n rawValue: void 0\n };\n }\n}\nfunction isParsableJson(input) {\n try {\n secureJsonParse(input);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// src/parse-json-event-stream.ts\nimport {\n EventSourceParserStream\n} from \"eventsource-parser/stream\";\nfunction parseJsonEventStream({\n stream,\n schema\n}) {\n return stream.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream()).pipeThrough(\n new TransformStream({\n async transform({ data }, controller) {\n if (data === \"[DONE]\") {\n return;\n }\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n }\n })\n );\n}\n\n// src/parse-provider-options.ts\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nasync function parseProviderOptions({\n provider,\n providerOptions,\n schema\n}) {\n if ((providerOptions == null ? void 0 : providerOptions[provider]) == null) {\n return void 0;\n }\n const parsedProviderOptions = await safeValidateTypes({\n value: providerOptions[provider],\n schema\n });\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError2({\n argument: \"providerOptions\",\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error\n });\n }\n return parsedProviderOptions.value;\n}\n\n// src/post-to-api.ts\nimport { APICallError as APICallError3 } from \"@ai-sdk/provider\";\nvar getOriginalFetch2 = () => globalThis.fetch;\nvar postJsonToApi = async ({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n}) => postToApi({\n url,\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n body: {\n content: JSON.stringify(body),\n values: body\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n});\nvar postFormDataToApi = async ({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n}) => postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries(formData.entries())\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n});\nvar postToApi = async ({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch2()\n}) => {\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: withUserAgentSuffix(\n headers,\n `ai-sdk/provider-utils/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n ),\n body: body.content,\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (isAbortError(error) || APICallError3.isInstance(error)) {\n throw error;\n }\n throw new APICallError3({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError3.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError3({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n\n// src/types/tool.ts\nfunction tool(tool2) {\n return tool2;\n}\nfunction dynamicTool(tool2) {\n return { ...tool2, type: \"dynamic\" };\n}\n\n// src/provider-defined-tool-factory.ts\nfunction createProviderDefinedToolFactory({\n id,\n name,\n inputSchema\n}) {\n return ({\n execute,\n outputSchema,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }) => tool({\n type: \"provider-defined\",\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable\n });\n}\nfunction createProviderDefinedToolFactoryWithOutputSchema({\n id,\n name,\n inputSchema,\n outputSchema\n}) {\n return ({\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }) => tool({\n type: \"provider-defined\",\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable\n });\n}\n\n// src/resolve.ts\nasync function resolve(value) {\n if (typeof value === \"function\") {\n value = value();\n }\n return Promise.resolve(value);\n}\n\n// src/response-handler.ts\nimport { APICallError as APICallError4, EmptyResponseBodyError } from \"@ai-sdk/provider\";\nvar createJsonErrorResponseHandler = ({\n errorSchema,\n errorToMessage,\n isRetryable\n}) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n if (responseBody.trim() === \"\") {\n return {\n responseHeaders,\n value: new APICallError4({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema\n });\n return {\n responseHeaders,\n value: new APICallError4({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)\n })\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError4({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n};\nvar createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema\n })\n };\n};\nvar createJsonStreamResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n let buffer = \"\";\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream({\n async transform(chunkText, controller) {\n if (chunkText.endsWith(\"\\n\")) {\n controller.enqueue(\n await safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema\n })\n );\n buffer = \"\";\n } else {\n buffer += chunkText;\n }\n }\n })\n )\n };\n};\nvar createJsonResponseHandler = (responseSchema) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!parsedResult.success) {\n throw new APICallError4({\n message: \"Invalid JSON response\",\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues\n });\n }\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue\n };\n};\nvar createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (!response.body) {\n throw new APICallError4({\n message: \"Response body is empty\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0\n });\n }\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer)\n };\n } catch (error) {\n throw new APICallError4({\n message: \"Failed to read response as array buffer\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0,\n cause: error\n });\n }\n};\nvar createStatusCodeErrorResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n return {\n responseHeaders,\n value: new APICallError4({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody\n })\n };\n};\n\n// src/zod-schema.ts\nimport * as z4 from \"zod/v4\";\n\n// src/zod-to-json-schema/get-relative-path.ts\nvar getRelativePath = (pathA, pathB) => {\n let i = 0;\n for (; i < pathA.length && i < pathB.length; i++) {\n if (pathA[i] !== pathB[i])\n break;\n }\n return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n\n// src/zod-to-json-schema/options.ts\nvar ignoreOverride = Symbol(\n \"Let zodToJsonSchema decide on which parser to use\"\n);\nvar defaultOptions = {\n name: void 0,\n $refStrategy: \"root\",\n basePath: [\"#\"],\n effectStrategy: \"input\",\n pipeStrategy: \"all\",\n dateStrategy: \"format:date-time\",\n mapStrategy: \"entries\",\n removeAdditionalStrategy: \"passthrough\",\n allowedAdditionalProperties: true,\n rejectedAdditionalProperties: false,\n definitionPath: \"definitions\",\n strictUnions: false,\n definitions: {},\n errorMessages: false,\n patternStrategy: \"escape\",\n applyRegexFlags: false,\n emailStrategy: \"format:email\",\n base64Strategy: \"contentEncoding:base64\",\n nameStrategy: \"ref\"\n};\nvar getDefaultOptions = (options) => typeof options === \"string\" ? {\n ...defaultOptions,\n name: options\n} : {\n ...defaultOptions,\n ...options\n};\n\n// src/zod-to-json-schema/select-parser.ts\nimport { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from \"zod/v3\";\n\n// src/zod-to-json-schema/parsers/any.ts\nfunction parseAnyDef() {\n return {};\n}\n\n// src/zod-to-json-schema/parsers/array.ts\nimport { ZodFirstPartyTypeKind } from \"zod/v3\";\nfunction parseArrayDef(def, refs) {\n var _a, _b, _c;\n const res = {\n type: \"array\"\n };\n if (((_a = def.type) == null ? void 0 : _a._def) && ((_c = (_b = def.type) == null ? void 0 : _b._def) == null ? void 0 : _c.typeName) !== ZodFirstPartyTypeKind.ZodAny) {\n res.items = parseDef(def.type._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"]\n });\n }\n if (def.minLength) {\n res.minItems = def.minLength.value;\n }\n if (def.maxLength) {\n res.maxItems = def.maxLength.value;\n }\n if (def.exactLength) {\n res.minItems = def.exactLength.value;\n res.maxItems = def.exactLength.value;\n }\n return res;\n}\n\n// src/zod-to-json-schema/parsers/bigint.ts\nfunction parseBigintDef(def) {\n const res = {\n type: \"integer\",\n format: \"int64\"\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case \"max\":\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case \"multipleOf\":\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n\n// src/zod-to-json-schema/parsers/boolean.ts\nfunction parseBooleanDef() {\n return { type: \"boolean\" };\n}\n\n// src/zod-to-json-schema/parsers/branded.ts\nfunction parseBrandedDef(_def, refs) {\n return parseDef(_def.type._def, refs);\n}\n\n// src/zod-to-json-schema/parsers/catch.ts\nvar parseCatchDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n\n// src/zod-to-json-schema/parsers/date.ts\nfunction parseDateDef(def, refs, overrideDateStrategy) {\n const strategy = overrideDateStrategy != null ? overrideDateStrategy : refs.dateStrategy;\n if (Array.isArray(strategy)) {\n return {\n anyOf: strategy.map((item, i) => parseDateDef(def, refs, item))\n };\n }\n switch (strategy) {\n case \"string\":\n case \"format:date-time\":\n return {\n type: \"string\",\n format: \"date-time\"\n };\n case \"format:date\":\n return {\n type: \"string\",\n format: \"date\"\n };\n case \"integer\":\n return integerDateParser(def);\n }\n}\nvar integerDateParser = (def) => {\n const res = {\n type: \"integer\",\n format: \"unix-time\"\n };\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n res.minimum = check.value;\n break;\n case \"max\":\n res.maximum = check.value;\n break;\n }\n }\n return res;\n};\n\n// src/zod-to-json-schema/parsers/default.ts\nfunction parseDefaultDef(_def, refs) {\n return {\n ...parseDef(_def.innerType._def, refs),\n default: _def.defaultValue()\n };\n}\n\n// src/zod-to-json-schema/parsers/effects.ts\nfunction parseEffectsDef(_def, refs) {\n return refs.effectStrategy === \"input\" ? parseDef(_def.schema._def, refs) : parseAnyDef();\n}\n\n// src/zod-to-json-schema/parsers/enum.ts\nfunction parseEnumDef(def) {\n return {\n type: \"string\",\n enum: Array.from(def.values)\n };\n}\n\n// src/zod-to-json-schema/parsers/intersection.ts\nvar isJsonSchema7AllOfType = (type) => {\n if (\"type\" in type && type.type === \"string\")\n return false;\n return \"allOf\" in type;\n};\nfunction parseIntersectionDef(def, refs) {\n const allOf = [\n parseDef(def.left._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"]\n }),\n parseDef(def.right._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"1\"]\n })\n ].filter((x) => !!x);\n const mergedAllOf = [];\n allOf.forEach((schema) => {\n if (isJsonSchema7AllOfType(schema)) {\n mergedAllOf.push(...schema.allOf);\n } else {\n let nestedSchema = schema;\n if (\"additionalProperties\" in schema && schema.additionalProperties === false) {\n const { additionalProperties, ...rest } = schema;\n nestedSchema = rest;\n }\n mergedAllOf.push(nestedSchema);\n }\n });\n return mergedAllOf.length ? { allOf: mergedAllOf } : void 0;\n}\n\n// src/zod-to-json-schema/parsers/literal.ts\nfunction parseLiteralDef(def) {\n const parsedType = typeof def.value;\n if (parsedType !== \"bigint\" && parsedType !== \"number\" && parsedType !== \"boolean\" && parsedType !== \"string\") {\n return {\n type: Array.isArray(def.value) ? \"array\" : \"object\"\n };\n }\n return {\n type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n const: def.value\n };\n}\n\n// src/zod-to-json-schema/parsers/record.ts\nimport {\n ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2\n} from \"zod/v3\";\n\n// src/zod-to-json-schema/parsers/string.ts\nvar emojiRegex = void 0;\nvar 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 === void 0) {\n emojiRegex = RegExp(\n \"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\",\n \"u\"\n );\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};\nfunction 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 res.minLength = typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value;\n break;\n case \"max\":\n res.maxLength = typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value;\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(\n res,\n RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n check.message,\n refs\n );\n break;\n case \"endsWith\":\n addPattern(\n res,\n RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n check.message,\n refs\n );\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 res.minLength = typeof res.minLength === \"number\" ? Math.max(res.minLength, check.value) : check.value;\n res.maxLength = typeof res.maxLength === \"number\" ? Math.min(res.maxLength, check.value) : check.value;\n break;\n case \"includes\": {\n addPattern(\n res,\n RegExp(escapeLiteralCheckValue(check.value, refs)),\n check.message,\n refs\n );\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 res.contentEncoding = \"base64\";\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 /* @__PURE__ */ ((_) => {\n })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\" ? escapeNonAlphaNumeric(literal) : literal;\n}\nvar ALPHA_NUMERIC = new Set(\n \"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\"\n);\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}\nfunction addFormat(schema, value, message, refs) {\n var _a;\n if (schema.format || ((_a = schema.anyOf) == null ? void 0 : _a.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 });\n delete schema.format;\n }\n schema.anyOf.push({\n format: value,\n ...message && refs.errorMessages && { errorMessage: { format: message } }\n });\n } else {\n schema.format = value;\n }\n}\nfunction addPattern(schema, regex, message, refs) {\n var _a;\n if (schema.pattern || ((_a = schema.allOf) == null ? void 0 : _a.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 });\n delete schema.pattern;\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...message && refs.errorMessages && { errorMessage: { pattern: message } }\n });\n } else {\n schema.pattern = stringifyRegExpWithFlags(regex, refs);\n }\n}\nfunction stringifyRegExpWithFlags(regex, refs) {\n var _a;\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n const flags = {\n i: regex.flags.includes(\"i\"),\n // Case-insensitive\n m: regex.flags.includes(\"m\"),\n // `^` and `$` matches adjacent to newline characters\n s: regex.flags.includes(\"s\")\n // `.` matches newlines\n };\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 } else if (source[i + 1] === \"-\" && ((_a = source[i + 2]) == null ? void 0 : _a.match(/[a-z]/))) {\n pattern += source[i];\n inCharRange = true;\n } else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\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 } 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 } else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n } else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n } catch (e) {\n console.warn(\n `Could not convert regex pattern at ${refs.currentPath.join(\n \"/\"\n )} to a flag-independent form! Falling back to the flag-ignorant source`\n );\n return regex.source;\n }\n return pattern;\n}\n\n// src/zod-to-json-schema/parsers/record.ts\nfunction parseRecordDef(def, refs) {\n var _a, _b, _c, _d, _e, _f;\n const schema = {\n type: \"object\",\n additionalProperties: (_a = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"]\n })) != null ? _a : refs.allowedAdditionalProperties\n };\n if (((_b = def.keyType) == null ? void 0 : _b._def.typeName) === ZodFirstPartyTypeKind2.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {\n const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n return {\n ...schema,\n propertyNames: keyType\n };\n } else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) === ZodFirstPartyTypeKind2.ZodEnum) {\n return {\n ...schema,\n propertyNames: {\n enum: def.keyType._def.values\n }\n };\n } else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) === ZodFirstPartyTypeKind2.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind2.ZodString && ((_f = def.keyType._def.type._def.checks) == null ? void 0 : _f.length)) {\n const { type, ...keyType } = parseBrandedDef(\n def.keyType._def,\n refs\n );\n return {\n ...schema,\n propertyNames: keyType\n };\n }\n return schema;\n}\n\n// src/zod-to-json-schema/parsers/map.ts\nfunction parseMapDef(def, refs) {\n if (refs.mapStrategy === \"record\") {\n return parseRecordDef(def, refs);\n }\n const keys = parseDef(def.keyType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"]\n }) || parseAnyDef();\n const values = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"]\n }) || parseAnyDef();\n return {\n type: \"array\",\n maxItems: 125,\n items: {\n type: \"array\",\n items: [keys, values],\n minItems: 2,\n maxItems: 2\n }\n };\n}\n\n// src/zod-to-json-schema/parsers/native-enum.ts\nfunction parseNativeEnumDef(def) {\n const object = def.values;\n const actualKeys = Object.keys(def.values).filter((key) => {\n return typeof object[object[key]] !== \"number\";\n });\n const actualValues = actualKeys.map((key) => object[key]);\n const parsedTypes = Array.from(\n new Set(actualValues.map((values) => typeof values))\n );\n return {\n type: parsedTypes.length === 1 ? parsedTypes[0] === \"string\" ? \"string\" : \"number\" : [\"string\", \"number\"],\n enum: actualValues\n };\n}\n\n// src/zod-to-json-schema/parsers/never.ts\nfunction parseNeverDef() {\n return { not: parseAnyDef() };\n}\n\n// src/zod-to-json-schema/parsers/null.ts\nfunction parseNullDef() {\n return {\n type: \"null\"\n };\n}\n\n// src/zod-to-json-schema/parsers/union.ts\nvar primitiveMappings = {\n ZodString: \"string\",\n ZodNumber: \"number\",\n ZodBigInt: \"integer\",\n ZodBoolean: \"boolean\",\n ZodNull: \"null\"\n};\nfunction parseUnionDef(def, refs) {\n const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n if (options.every(\n (x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length)\n )) {\n const types = options.reduce((types2, x) => {\n const type = primitiveMappings[x._def.typeName];\n return type && !types2.includes(type) ? [...types2, type] : types2;\n }, []);\n return {\n type: types.length > 1 ? types : types[0]\n };\n } else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n const types = options.reduce(\n (acc, x) => {\n const type = typeof x._def.value;\n switch (type) {\n case \"string\":\n case \"number\":\n case \"boolean\":\n return [...acc, type];\n case \"bigint\":\n return [...acc, \"integer\"];\n case \"object\":\n if (x._def.value === null)\n return [...acc, \"null\"];\n case \"symbol\":\n case \"undefined\":\n case \"function\":\n default:\n return acc;\n }\n },\n []\n );\n if (types.length === options.length) {\n const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n return {\n type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n enum: options.reduce(\n (acc, x) => {\n return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n },\n []\n )\n };\n }\n } else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n return {\n type: \"string\",\n enum: options.reduce(\n (acc, x) => [\n ...acc,\n ...x._def.values.filter((x2) => !acc.includes(x2))\n ],\n []\n )\n };\n }\n return asAnyOf(def, refs);\n}\nvar asAnyOf = (def, refs) => {\n const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map(\n (x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", `${i}`]\n })\n ).filter(\n (x) => !!x && (!refs.strictUnions || typeof x === \"object\" && Object.keys(x).length > 0)\n );\n return anyOf.length ? { anyOf } : void 0;\n};\n\n// src/zod-to-json-schema/parsers/nullable.ts\nfunction parseNullableDef(def, refs) {\n if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(\n def.innerType._def.typeName\n ) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n return {\n type: [\n primitiveMappings[def.innerType._def.typeName],\n \"null\"\n ]\n };\n }\n const base = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"0\"]\n });\n return base && { anyOf: [base, { type: \"null\" }] };\n}\n\n// src/zod-to-json-schema/parsers/number.ts\nfunction parseNumberDef(def) {\n const res = {\n type: \"number\"\n };\n if (!def.checks)\n return res;\n for (const check of def.checks) {\n switch (check.kind) {\n case \"int\":\n res.type = \"integer\";\n break;\n case \"min\":\n if (check.inclusive) {\n res.minimum = check.value;\n } else {\n res.exclusiveMinimum = check.value;\n }\n break;\n case \"max\":\n if (check.inclusive) {\n res.maximum = check.value;\n } else {\n res.exclusiveMaximum = check.value;\n }\n break;\n case \"multipleOf\":\n res.multipleOf = check.value;\n break;\n }\n }\n return res;\n}\n\n// src/zod-to-json-schema/parsers/object.ts\nfunction parseObjectDef(def, refs) {\n const result = {\n type: \"object\",\n properties: {}\n };\n const required = [];\n const shape = def.shape();\n for (const propName in shape) {\n let propDef = shape[propName];\n if (propDef === void 0 || propDef._def === void 0) {\n continue;\n }\n const propOptional = safeIsOptional(propDef);\n const parsedDef = parseDef(propDef._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"properties\", propName],\n propertyPath: [...refs.currentPath, \"properties\", propName]\n });\n if (parsedDef === void 0) {\n continue;\n }\n result.properties[propName] = parsedDef;\n if (!propOptional) {\n required.push(propName);\n }\n }\n if (required.length) {\n result.required = required;\n }\n const additionalProperties = decideAdditionalProperties(def, refs);\n if (additionalProperties !== void 0) {\n result.additionalProperties = additionalProperties;\n }\n return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n if (def.catchall._def.typeName !== \"ZodNever\") {\n return parseDef(def.catchall._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalProperties\"]\n });\n }\n switch (def.unknownKeys) {\n case \"passthrough\":\n return refs.allowedAdditionalProperties;\n case \"strict\":\n return refs.rejectedAdditionalProperties;\n case \"strip\":\n return refs.removeAdditionalStrategy === \"strict\" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties;\n }\n}\nfunction safeIsOptional(schema) {\n try {\n return schema.isOptional();\n } catch (e) {\n return true;\n }\n}\n\n// src/zod-to-json-schema/parsers/optional.ts\nvar parseOptionalDef = (def, refs) => {\n var _a;\n if (refs.currentPath.toString() === ((_a = refs.propertyPath) == null ? void 0 : _a.toString())) {\n return parseDef(def.innerType._def, refs);\n }\n const innerSchema = parseDef(def.innerType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"anyOf\", \"1\"]\n });\n return innerSchema ? { anyOf: [{ not: parseAnyDef() }, innerSchema] } : parseAnyDef();\n};\n\n// src/zod-to-json-schema/parsers/pipeline.ts\nvar parsePipelineDef = (def, refs) => {\n if (refs.pipeStrategy === \"input\") {\n return parseDef(def.in._def, refs);\n } else if (refs.pipeStrategy === \"output\") {\n return parseDef(def.out._def, refs);\n }\n const a = parseDef(def.in._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", \"0\"]\n });\n const b = parseDef(def.out._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"]\n });\n return {\n allOf: [a, b].filter((x) => x !== void 0)\n };\n};\n\n// src/zod-to-json-schema/parsers/promise.ts\nfunction parsePromiseDef(def, refs) {\n return parseDef(def.type._def, refs);\n}\n\n// src/zod-to-json-schema/parsers/set.ts\nfunction parseSetDef(def, refs) {\n const items = parseDef(def.valueType._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\"]\n });\n const schema = {\n type: \"array\",\n uniqueItems: true,\n items\n };\n if (def.minSize) {\n schema.minItems = def.minSize.value;\n }\n if (def.maxSize) {\n schema.maxItems = def.maxSize.value;\n }\n return schema;\n}\n\n// src/zod-to-json-schema/parsers/tuple.ts\nfunction parseTupleDef(def, refs) {\n if (def.rest) {\n return {\n type: \"array\",\n minItems: def.items.length,\n items: def.items.map(\n (x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`]\n })\n ).reduce(\n (acc, x) => x === void 0 ? acc : [...acc, x],\n []\n ),\n additionalItems: parseDef(def.rest._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"additionalItems\"]\n })\n };\n } else {\n return {\n type: \"array\",\n minItems: def.items.length,\n maxItems: def.items.length,\n items: def.items.map(\n (x, i) => parseDef(x._def, {\n ...refs,\n currentPath: [...refs.currentPath, \"items\", `${i}`]\n })\n ).reduce(\n (acc, x) => x === void 0 ? acc : [...acc, x],\n []\n )\n };\n }\n}\n\n// src/zod-to-json-schema/parsers/undefined.ts\nfunction parseUndefinedDef() {\n return {\n not: parseAnyDef()\n };\n}\n\n// src/zod-to-json-schema/parsers/unknown.ts\nfunction parseUnknownDef() {\n return parseAnyDef();\n}\n\n// src/zod-to-json-schema/parsers/readonly.ts\nvar parseReadonlyDef = (def, refs) => {\n return parseDef(def.innerType._def, refs);\n};\n\n// src/zod-to-json-schema/select-parser.ts\nvar selectParser = (def, typeName, refs) => {\n switch (typeName) {\n case ZodFirstPartyTypeKind3.ZodString:\n return parseStringDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodNumber:\n return parseNumberDef(def);\n case ZodFirstPartyTypeKind3.ZodObject:\n return parseObjectDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodBigInt:\n return parseBigintDef(def);\n case ZodFirstPartyTypeKind3.ZodBoolean:\n return parseBooleanDef();\n case ZodFirstPartyTypeKind3.ZodDate:\n return parseDateDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodUndefined:\n return parseUndefinedDef();\n case ZodFirstPartyTypeKind3.ZodNull:\n return parseNullDef();\n case ZodFirstPartyTypeKind3.ZodArray:\n return parseArrayDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodUnion:\n case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:\n return parseUnionDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodIntersection:\n return parseIntersectionDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodTuple:\n return parseTupleDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodRecord:\n return parseRecordDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodLiteral:\n return parseLiteralDef(def);\n case ZodFirstPartyTypeKind3.ZodEnum:\n return parseEnumDef(def);\n case ZodFirstPartyTypeKind3.ZodNativeEnum:\n return parseNativeEnumDef(def);\n case ZodFirstPartyTypeKind3.ZodNullable:\n return parseNullableDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodOptional:\n return parseOptionalDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodMap:\n return parseMapDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodSet:\n return parseSetDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodLazy:\n return () => def.getter()._def;\n case ZodFirstPartyTypeKind3.ZodPromise:\n return parsePromiseDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodNaN:\n case ZodFirstPartyTypeKind3.ZodNever:\n return parseNeverDef();\n case ZodFirstPartyTypeKind3.ZodEffects:\n return parseEffectsDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodAny:\n return parseAnyDef();\n case ZodFirstPartyTypeKind3.ZodUnknown:\n return parseUnknownDef();\n case ZodFirstPartyTypeKind3.ZodDefault:\n return parseDefaultDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodBranded:\n return parseBrandedDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodReadonly:\n return parseReadonlyDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodCatch:\n return parseCatchDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodPipeline:\n return parsePipelineDef(def, refs);\n case ZodFirstPartyTypeKind3.ZodFunction:\n case ZodFirstPartyTypeKind3.ZodVoid:\n case ZodFirstPartyTypeKind3.ZodSymbol:\n return void 0;\n default:\n return /* @__PURE__ */ ((_) => void 0)(typeName);\n }\n};\n\n// src/zod-to-json-schema/parse-def.ts\nfunction parseDef(def, refs, forceResolution = false) {\n var _a;\n const seenItem = refs.seen.get(def);\n if (refs.override) {\n const overrideResult = (_a = refs.override) == null ? void 0 : _a.call(\n refs,\n def,\n refs,\n seenItem,\n forceResolution\n );\n if (overrideResult !== ignoreOverride) {\n return overrideResult;\n }\n }\n if (seenItem && !forceResolution) {\n const seenSchema = get$ref(seenItem, refs);\n if (seenSchema !== void 0) {\n return seenSchema;\n }\n }\n const newItem = { def, path: refs.currentPath, jsonSchema: void 0 };\n refs.seen.set(def, newItem);\n const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n const jsonSchema2 = typeof jsonSchemaOrGetter === \"function\" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter;\n if (jsonSchema2) {\n addMeta(def, refs, jsonSchema2);\n }\n if (refs.postProcess) {\n const postProcessResult = refs.postProcess(jsonSchema2, def, refs);\n newItem.jsonSchema = jsonSchema2;\n return postProcessResult;\n }\n newItem.jsonSchema = jsonSchema2;\n return jsonSchema2;\n}\nvar get$ref = (item, refs) => {\n switch (refs.$refStrategy) {\n case \"root\":\n return { $ref: item.path.join(\"/\") };\n case \"relative\":\n return { $ref: getRelativePath(refs.currentPath, item.path) };\n case \"none\":\n case \"seen\": {\n if (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) {\n console.warn(\n `Recursive reference detected at ${refs.currentPath.join(\n \"/\"\n )}! Defaulting to any`\n );\n return parseAnyDef();\n }\n return refs.$refStrategy === \"seen\" ? parseAnyDef() : void 0;\n }\n }\n};\nvar addMeta = (def, refs, jsonSchema2) => {\n if (def.description) {\n jsonSchema2.description = def.description;\n }\n return jsonSchema2;\n};\n\n// src/zod-to-json-schema/refs.ts\nvar getRefs = (options) => {\n const _options = getDefaultOptions(options);\n const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath;\n return {\n ..._options,\n currentPath,\n propertyPath: void 0,\n seen: new Map(\n Object.entries(_options.definitions).map(([name, def]) => [\n def._def,\n {\n def: def._def,\n path: [..._options.basePath, _options.definitionPath, name],\n // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n jsonSchema: void 0\n }\n ])\n )\n };\n};\n\n// src/zod-to-json-schema/zod-to-json-schema.ts\nvar zodToJsonSchema = (schema, options) => {\n var _a;\n const refs = getRefs(options);\n let definitions = typeof options === \"object\" && options.definitions ? Object.entries(options.definitions).reduce(\n (acc, [name2, schema2]) => {\n var _a2;\n return {\n ...acc,\n [name2]: (_a2 = parseDef(\n schema2._def,\n {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name2]\n },\n true\n )) != null ? _a2 : parseAnyDef()\n };\n },\n {}\n ) : void 0;\n const name = typeof options === \"string\" ? options : (options == null ? void 0 : options.nameStrategy) === \"title\" ? void 0 : options == null ? void 0 : options.name;\n const main = (_a = parseDef(\n schema._def,\n name === void 0 ? refs : {\n ...refs,\n currentPath: [...refs.basePath, refs.definitionPath, name]\n },\n false\n )) != null ? _a : parseAnyDef();\n const title = typeof options === \"object\" && options.name !== void 0 && options.nameStrategy === \"title\" ? options.name : void 0;\n if (title !== void 0) {\n main.title = title;\n }\n const combined = name === void 0 ? definitions ? {\n ...main,\n [refs.definitionPath]: definitions\n } : main : {\n $ref: [\n ...refs.$refStrategy === \"relative\" ? [] : refs.basePath,\n refs.definitionPath,\n name\n ].join(\"/\"),\n [refs.definitionPath]: {\n ...definitions,\n [name]: main\n }\n };\n combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n return combined;\n};\n\n// src/zod-to-json-schema/index.ts\nvar zod_to_json_schema_default = zodToJsonSchema;\n\n// src/zod-schema.ts\nfunction zod3Schema(zodSchema2, options) {\n var _a;\n const useReferences = (_a = options == null ? void 0 : options.useReferences) != null ? _a : false;\n return jsonSchema(\n zod_to_json_schema_default(zodSchema2, {\n $refStrategy: useReferences ? \"root\" : \"none\"\n }),\n {\n validate: async (value) => {\n const result = await zodSchema2.safeParseAsync(value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n }\n }\n );\n}\nfunction zod4Schema(zodSchema2, options) {\n var _a;\n const useReferences = (_a = options == null ? void 0 : options.useReferences) != null ? _a : false;\n const z4JSONSchema = z4.toJSONSchema(zodSchema2, {\n target: \"draft-7\",\n io: \"output\",\n reused: useReferences ? \"ref\" : \"inline\"\n });\n return jsonSchema(z4JSONSchema, {\n validate: async (value) => {\n const result = await z4.safeParseAsync(zodSchema2, value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n }\n });\n}\nfunction isZod4Schema(zodSchema2) {\n return \"_zod\" in zodSchema2;\n}\nfunction zodSchema(zodSchema2, options) {\n if (isZod4Schema(zodSchema2)) {\n return zod4Schema(zodSchema2, options);\n } else {\n return zod3Schema(zodSchema2, options);\n }\n}\n\n// src/schema.ts\nvar schemaSymbol = Symbol.for(\"vercel.ai.schema\");\nfunction jsonSchema(jsonSchema2, {\n validate\n} = {}) {\n return {\n [schemaSymbol]: true,\n _type: void 0,\n // should never be used directly\n [validatorSymbol]: true,\n jsonSchema: jsonSchema2,\n validate\n };\n}\nfunction isSchema(value) {\n return typeof value === \"object\" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && \"jsonSchema\" in value && \"validate\" in value;\n}\nfunction asSchema(schema) {\n return schema == null ? jsonSchema({\n properties: {},\n additionalProperties: false\n }) : isSchema(schema) ? schema : zodSchema(schema);\n}\n\n// src/uint8-utils.ts\nvar { btoa, atob } = globalThis;\nfunction convertBase64ToUint8Array(base64String) {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));\n}\nfunction convertUint8ArrayToBase64(array) {\n let latin1string = \"\";\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n return btoa(latin1string);\n}\nfunction convertToBase64(value) {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n\n// src/without-trailing-slash.ts\nfunction withoutTrailingSlash(url) {\n return url == null ? void 0 : url.replace(/\\/$/, \"\");\n}\n\n// src/is-async-iterable.ts\nfunction isAsyncIterable(obj) {\n return obj != null && typeof obj[Symbol.asyncIterator] === \"function\";\n}\n\n// src/types/execute-tool.ts\nasync function* executeTool({\n execute,\n input,\n options\n}) {\n const result = execute(input, options);\n if (isAsyncIterable(result)) {\n let lastOutput;\n for await (const output of result) {\n lastOutput = output;\n yield { type: \"preliminary\", output };\n }\n yield { type: \"final\", output: lastOutput };\n } else {\n yield { type: \"final\", output: await result };\n }\n}\n\n// src/index.ts\nexport * from \"@standard-schema/spec\";\nimport {\n EventSourceParserStream as EventSourceParserStream2\n} from \"eventsource-parser/stream\";\nexport {\n EventSourceParserStream2 as EventSourceParserStream,\n VERSION,\n asSchema,\n asValidator,\n combineHeaders,\n convertAsyncIteratorToReadableStream,\n convertBase64ToUint8Array,\n convertToBase64,\n convertUint8ArrayToBase64,\n createBinaryResponseHandler,\n createEventSourceResponseHandler,\n createIdGenerator,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n createProviderDefinedToolFactory,\n createProviderDefinedToolFactoryWithOutputSchema,\n createStatusCodeErrorResponseHandler,\n delay,\n dynamicTool,\n executeTool,\n extractResponseHeaders,\n generateId,\n getErrorMessage,\n getFromApi,\n getRuntimeEnvironmentUserAgent,\n injectJsonInstructionIntoMessages,\n isAbortError,\n isParsableJson,\n isUrlSupported,\n isValidator,\n jsonSchema,\n loadApiKey,\n loadOptionalSetting,\n loadSetting,\n mediaTypeToExtension,\n parseJSON,\n parseJsonEventStream,\n parseProviderOptions,\n postFormDataToApi,\n postJsonToApi,\n postToApi,\n removeUndefinedEntries,\n resolve,\n safeParseJSON,\n safeValidateTypes,\n standardSchemaValidator,\n tool,\n validateTypes,\n validator,\n validatorSymbol,\n withUserAgentSuffix,\n withoutTrailingSlash,\n zodSchema\n};\n//# sourceMappingURL=index.mjs.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name17 in all)\n __defProp(target, name17, { get: all[name17], enumerable: true });\n};\n\n// src/index.ts\nimport { gateway as gateway2, createGateway } from \"@ai-sdk/gateway\";\nimport {\n asSchema as asSchema5,\n createIdGenerator as createIdGenerator5,\n dynamicTool as dynamicTool2,\n generateId as generateId2,\n jsonSchema as jsonSchema2,\n tool as tool2,\n zodSchema\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/generate-text.ts\nimport {\n createIdGenerator,\n executeTool,\n getErrorMessage as getErrorMessage5,\n withUserAgentSuffix as withUserAgentSuffix2\n} from \"@ai-sdk/provider-utils\";\n\n// src/error/no-output-specified-error.ts\nimport { AISDKError } from \"@ai-sdk/provider\";\nvar name = \"AI_NoOutputSpecifiedError\";\nvar marker = `vercel.ai.error.${name}`;\nvar symbol = Symbol.for(marker);\nvar _a;\nvar NoOutputSpecifiedError = class extends AISDKError {\n // used in isInstance\n constructor({ message = \"No output specified.\" } = {}) {\n super({ name, message });\n this[_a] = true;\n }\n static isInstance(error) {\n return AISDKError.hasMarker(error, marker);\n }\n};\n_a = symbol;\n\n// src/logger/log-warnings.ts\nfunction formatWarning(warning) {\n const prefix = \"AI SDK Warning:\";\n switch (warning.type) {\n case \"unsupported-setting\": {\n let message = `${prefix} The \"${warning.setting}\" setting is not supported by this model`;\n if (warning.details) {\n message += ` - ${warning.details}`;\n }\n return message;\n }\n case \"unsupported-tool\": {\n const toolName = \"name\" in warning.tool ? warning.tool.name : \"unknown tool\";\n let message = `${prefix} The tool \"${toolName}\" is not supported by this model`;\n if (warning.details) {\n message += ` - ${warning.details}`;\n }\n return message;\n }\n case \"other\": {\n return `${prefix} ${warning.message}`;\n }\n default: {\n return `${prefix} ${JSON.stringify(warning, null, 2)}`;\n }\n }\n}\nvar FIRST_WARNING_INFO_MESSAGE = \"AI SDK Warning System: To turn off warning logging, set the AI_SDK_LOG_WARNINGS global to false.\";\nvar hasLoggedBefore = false;\nvar logWarnings = (warnings) => {\n if (warnings.length === 0) {\n return;\n }\n const logger = globalThis.AI_SDK_LOG_WARNINGS;\n if (logger === false) {\n return;\n }\n if (typeof logger === \"function\") {\n logger(warnings);\n return;\n }\n if (!hasLoggedBefore) {\n hasLoggedBefore = true;\n console.info(FIRST_WARNING_INFO_MESSAGE);\n }\n for (const warning of warnings) {\n console.warn(formatWarning(warning));\n }\n};\n\n// src/model/resolve-model.ts\nimport { gateway } from \"@ai-sdk/gateway\";\n\n// src/error/index.ts\nimport {\n AISDKError as AISDKError17,\n APICallError,\n EmptyResponseBodyError,\n InvalidPromptError,\n InvalidResponseDataError,\n JSONParseError,\n LoadAPIKeyError,\n NoContentGeneratedError,\n NoSuchModelError,\n TooManyEmbeddingValuesForCallError,\n TypeValidationError,\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\n\n// src/error/invalid-argument-error.ts\nimport { AISDKError as AISDKError2 } from \"@ai-sdk/provider\";\nvar name2 = \"AI_InvalidArgumentError\";\nvar marker2 = `vercel.ai.error.${name2}`;\nvar symbol2 = Symbol.for(marker2);\nvar _a2;\nvar InvalidArgumentError = class extends AISDKError2 {\n constructor({\n parameter,\n value,\n message\n }) {\n super({\n name: name2,\n message: `Invalid argument for parameter ${parameter}: ${message}`\n });\n this[_a2] = true;\n this.parameter = parameter;\n this.value = value;\n }\n static isInstance(error) {\n return AISDKError2.hasMarker(error, marker2);\n }\n};\n_a2 = symbol2;\n\n// src/error/invalid-stream-part-error.ts\nimport { AISDKError as AISDKError3 } from \"@ai-sdk/provider\";\nvar name3 = \"AI_InvalidStreamPartError\";\nvar marker3 = `vercel.ai.error.${name3}`;\nvar symbol3 = Symbol.for(marker3);\nvar _a3;\nvar InvalidStreamPartError = class extends AISDKError3 {\n constructor({\n chunk,\n message\n }) {\n super({ name: name3, message });\n this[_a3] = true;\n this.chunk = chunk;\n }\n static isInstance(error) {\n return AISDKError3.hasMarker(error, marker3);\n }\n};\n_a3 = symbol3;\n\n// src/error/invalid-tool-input-error.ts\nimport { AISDKError as AISDKError4, getErrorMessage } from \"@ai-sdk/provider\";\nvar name4 = \"AI_InvalidToolInputError\";\nvar marker4 = `vercel.ai.error.${name4}`;\nvar symbol4 = Symbol.for(marker4);\nvar _a4;\nvar InvalidToolInputError = class extends AISDKError4 {\n constructor({\n toolInput,\n toolName,\n cause,\n message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`\n }) {\n super({ name: name4, message, cause });\n this[_a4] = true;\n this.toolInput = toolInput;\n this.toolName = toolName;\n }\n static isInstance(error) {\n return AISDKError4.hasMarker(error, marker4);\n }\n};\n_a4 = symbol4;\n\n// src/error/mcp-client-error.ts\nimport { AISDKError as AISDKError5 } from \"@ai-sdk/provider\";\nvar name5 = \"AI_MCPClientError\";\nvar marker5 = `vercel.ai.error.${name5}`;\nvar symbol5 = Symbol.for(marker5);\nvar _a5;\nvar MCPClientError = class extends AISDKError5 {\n constructor({\n name: name17 = \"MCPClientError\",\n message,\n cause\n }) {\n super({ name: name17, message, cause });\n this[_a5] = true;\n }\n static isInstance(error) {\n return AISDKError5.hasMarker(error, marker5);\n }\n};\n_a5 = symbol5;\n\n// src/error/no-image-generated-error.ts\nimport { AISDKError as AISDKError6 } from \"@ai-sdk/provider\";\nvar name6 = \"AI_NoImageGeneratedError\";\nvar marker6 = `vercel.ai.error.${name6}`;\nvar symbol6 = Symbol.for(marker6);\nvar _a6;\nvar NoImageGeneratedError = class extends AISDKError6 {\n constructor({\n message = \"No image generated.\",\n cause,\n responses\n }) {\n super({ name: name6, message, cause });\n this[_a6] = true;\n this.responses = responses;\n }\n static isInstance(error) {\n return AISDKError6.hasMarker(error, marker6);\n }\n};\n_a6 = symbol6;\n\n// src/error/no-object-generated-error.ts\nimport { AISDKError as AISDKError7 } from \"@ai-sdk/provider\";\nvar name7 = \"AI_NoObjectGeneratedError\";\nvar marker7 = `vercel.ai.error.${name7}`;\nvar symbol7 = Symbol.for(marker7);\nvar _a7;\nvar NoObjectGeneratedError = class extends AISDKError7 {\n constructor({\n message = \"No object generated.\",\n cause,\n text: text2,\n response,\n usage,\n finishReason\n }) {\n super({ name: name7, message, cause });\n this[_a7] = true;\n this.text = text2;\n this.response = response;\n this.usage = usage;\n this.finishReason = finishReason;\n }\n static isInstance(error) {\n return AISDKError7.hasMarker(error, marker7);\n }\n};\n_a7 = symbol7;\n\n// src/error/no-output-generated-error.ts\nimport { AISDKError as AISDKError8 } from \"@ai-sdk/provider\";\nvar name8 = \"AI_NoOutputGeneratedError\";\nvar marker8 = `vercel.ai.error.${name8}`;\nvar symbol8 = Symbol.for(marker8);\nvar _a8;\nvar NoOutputGeneratedError = class extends AISDKError8 {\n // used in isInstance\n constructor({\n message = \"No output generated.\",\n cause\n } = {}) {\n super({ name: name8, message, cause });\n this[_a8] = true;\n }\n static isInstance(error) {\n return AISDKError8.hasMarker(error, marker8);\n }\n};\n_a8 = symbol8;\n\n// src/error/no-such-tool-error.ts\nimport { AISDKError as AISDKError9 } from \"@ai-sdk/provider\";\nvar name9 = \"AI_NoSuchToolError\";\nvar marker9 = `vercel.ai.error.${name9}`;\nvar symbol9 = Symbol.for(marker9);\nvar _a9;\nvar NoSuchToolError = class extends AISDKError9 {\n constructor({\n toolName,\n availableTools = void 0,\n message = `Model tried to call unavailable tool '${toolName}'. ${availableTools === void 0 ? \"No tools are available.\" : `Available tools: ${availableTools.join(\", \")}.`}`\n }) {\n super({ name: name9, message });\n this[_a9] = true;\n this.toolName = toolName;\n this.availableTools = availableTools;\n }\n static isInstance(error) {\n return AISDKError9.hasMarker(error, marker9);\n }\n};\n_a9 = symbol9;\n\n// src/error/tool-call-repair-error.ts\nimport { AISDKError as AISDKError10, getErrorMessage as getErrorMessage2 } from \"@ai-sdk/provider\";\nvar name10 = \"AI_ToolCallRepairError\";\nvar marker10 = `vercel.ai.error.${name10}`;\nvar symbol10 = Symbol.for(marker10);\nvar _a10;\nvar ToolCallRepairError = class extends AISDKError10 {\n constructor({\n cause,\n originalError,\n message = `Error repairing tool call: ${getErrorMessage2(cause)}`\n }) {\n super({ name: name10, message, cause });\n this[_a10] = true;\n this.originalError = originalError;\n }\n static isInstance(error) {\n return AISDKError10.hasMarker(error, marker10);\n }\n};\n_a10 = symbol10;\n\n// src/error/unsupported-model-version-error.ts\nimport { AISDKError as AISDKError11 } from \"@ai-sdk/provider\";\nvar UnsupportedModelVersionError = class extends AISDKError11 {\n constructor(options) {\n super({\n name: \"AI_UnsupportedModelVersionError\",\n message: `Unsupported model version ${options.version} for provider \"${options.provider}\" and model \"${options.modelId}\". AI SDK 5 only supports models that implement specification version \"v2\".`\n });\n this.version = options.version;\n this.provider = options.provider;\n this.modelId = options.modelId;\n }\n};\n\n// src/prompt/invalid-data-content-error.ts\nimport { AISDKError as AISDKError12 } from \"@ai-sdk/provider\";\nvar name11 = \"AI_InvalidDataContentError\";\nvar marker11 = `vercel.ai.error.${name11}`;\nvar symbol11 = Symbol.for(marker11);\nvar _a11;\nvar InvalidDataContentError = class extends AISDKError12 {\n constructor({\n content,\n cause,\n message = `Invalid data content. Expected a base64 string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`\n }) {\n super({ name: name11, message, cause });\n this[_a11] = true;\n this.content = content;\n }\n static isInstance(error) {\n return AISDKError12.hasMarker(error, marker11);\n }\n};\n_a11 = symbol11;\n\n// src/prompt/invalid-message-role-error.ts\nimport { AISDKError as AISDKError13 } from \"@ai-sdk/provider\";\nvar name12 = \"AI_InvalidMessageRoleError\";\nvar marker12 = `vercel.ai.error.${name12}`;\nvar symbol12 = Symbol.for(marker12);\nvar _a12;\nvar InvalidMessageRoleError = class extends AISDKError13 {\n constructor({\n role,\n message = `Invalid message role: '${role}'. Must be one of: \"system\", \"user\", \"assistant\", \"tool\".`\n }) {\n super({ name: name12, message });\n this[_a12] = true;\n this.role = role;\n }\n static isInstance(error) {\n return AISDKError13.hasMarker(error, marker12);\n }\n};\n_a12 = symbol12;\n\n// src/prompt/message-conversion-error.ts\nimport { AISDKError as AISDKError14 } from \"@ai-sdk/provider\";\nvar name13 = \"AI_MessageConversionError\";\nvar marker13 = `vercel.ai.error.${name13}`;\nvar symbol13 = Symbol.for(marker13);\nvar _a13;\nvar MessageConversionError = class extends AISDKError14 {\n constructor({\n originalMessage,\n message\n }) {\n super({ name: name13, message });\n this[_a13] = true;\n this.originalMessage = originalMessage;\n }\n static isInstance(error) {\n return AISDKError14.hasMarker(error, marker13);\n }\n};\n_a13 = symbol13;\n\n// src/util/download/download-error.ts\nimport { AISDKError as AISDKError15 } from \"@ai-sdk/provider\";\nvar name14 = \"AI_DownloadError\";\nvar marker14 = `vercel.ai.error.${name14}`;\nvar symbol14 = Symbol.for(marker14);\nvar _a14;\nvar DownloadError = class extends AISDKError15 {\n constructor({\n url,\n statusCode,\n statusText,\n cause,\n message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`\n }) {\n super({ name: name14, message, cause });\n this[_a14] = true;\n this.url = url;\n this.statusCode = statusCode;\n this.statusText = statusText;\n }\n static isInstance(error) {\n return AISDKError15.hasMarker(error, marker14);\n }\n};\n_a14 = symbol14;\n\n// src/util/retry-error.ts\nimport { AISDKError as AISDKError16 } from \"@ai-sdk/provider\";\nvar name15 = \"AI_RetryError\";\nvar marker15 = `vercel.ai.error.${name15}`;\nvar symbol15 = Symbol.for(marker15);\nvar _a15;\nvar RetryError = class extends AISDKError16 {\n constructor({\n message,\n reason,\n errors\n }) {\n super({ name: name15, message });\n this[_a15] = true;\n this.reason = reason;\n this.errors = errors;\n this.lastError = errors[errors.length - 1];\n }\n static isInstance(error) {\n return AISDKError16.hasMarker(error, marker15);\n }\n};\n_a15 = symbol15;\n\n// src/model/resolve-model.ts\nfunction resolveLanguageModel(model) {\n if (typeof model !== \"string\") {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n return model;\n }\n return getGlobalProvider().languageModel(model);\n}\nfunction resolveEmbeddingModel(model) {\n if (typeof model !== \"string\") {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n return model;\n }\n return getGlobalProvider().textEmbeddingModel(\n model\n );\n}\nfunction getGlobalProvider() {\n var _a17;\n return (_a17 = globalThis.AI_SDK_DEFAULT_PROVIDER) != null ? _a17 : gateway;\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nimport {\n isUrlSupported\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/detect-media-type.ts\nimport { convertBase64ToUint8Array } from \"@ai-sdk/provider-utils\";\nvar imageMediaTypeSignatures = [\n {\n mediaType: \"image/gif\",\n bytesPrefix: [71, 73, 70]\n // GIF\n },\n {\n mediaType: \"image/png\",\n bytesPrefix: [137, 80, 78, 71]\n // PNG\n },\n {\n mediaType: \"image/jpeg\",\n bytesPrefix: [255, 216]\n // JPEG\n },\n {\n mediaType: \"image/webp\",\n bytesPrefix: [\n 82,\n 73,\n 70,\n 70,\n // \"RIFF\"\n null,\n null,\n null,\n null,\n // file size (variable)\n 87,\n 69,\n 66,\n 80\n // \"WEBP\"\n ]\n },\n {\n mediaType: \"image/bmp\",\n bytesPrefix: [66, 77]\n },\n {\n mediaType: \"image/tiff\",\n bytesPrefix: [73, 73, 42, 0]\n },\n {\n mediaType: \"image/tiff\",\n bytesPrefix: [77, 77, 0, 42]\n },\n {\n mediaType: \"image/avif\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 32,\n 102,\n 116,\n 121,\n 112,\n 97,\n 118,\n 105,\n 102\n ]\n },\n {\n mediaType: \"image/heic\",\n bytesPrefix: [\n 0,\n 0,\n 0,\n 32,\n 102,\n 116,\n 121,\n 112,\n 104,\n 101,\n 105,\n 99\n ]\n }\n];\nvar audioMediaTypeSignatures = [\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 251]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 250]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 243]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 242]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 227]\n },\n {\n mediaType: \"audio/mpeg\",\n bytesPrefix: [255, 226]\n },\n {\n mediaType: \"audio/wav\",\n bytesPrefix: [\n 82,\n // R\n 73,\n // I\n 70,\n // F\n 70,\n // F\n null,\n null,\n null,\n null,\n 87,\n // W\n 65,\n // A\n 86,\n // V\n 69\n // E\n ]\n },\n {\n mediaType: \"audio/ogg\",\n bytesPrefix: [79, 103, 103, 83]\n },\n {\n mediaType: \"audio/flac\",\n bytesPrefix: [102, 76, 97, 67]\n },\n {\n mediaType: \"audio/aac\",\n bytesPrefix: [64, 21, 0, 0]\n },\n {\n mediaType: \"audio/mp4\",\n bytesPrefix: [102, 116, 121, 112]\n },\n {\n mediaType: \"audio/webm\",\n bytesPrefix: [26, 69, 223, 163]\n }\n];\nvar stripID3 = (data) => {\n const bytes = typeof data === \"string\" ? convertBase64ToUint8Array(data) : data;\n const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;\n return bytes.slice(id3Size + 10);\n};\nfunction stripID3TagsIfPresent(data) {\n const hasId3 = typeof data === \"string\" && data.startsWith(\"SUQz\") || typeof data !== \"string\" && data.length > 10 && data[0] === 73 && // 'I'\n data[1] === 68 && // 'D'\n data[2] === 51;\n return hasId3 ? stripID3(data) : data;\n}\nfunction detectMediaType({\n data,\n signatures\n}) {\n const processedData = stripID3TagsIfPresent(data);\n const bytes = typeof processedData === \"string\" ? convertBase64ToUint8Array(\n processedData.substring(0, Math.min(processedData.length, 24))\n ) : processedData;\n for (const signature of signatures) {\n if (bytes.length >= signature.bytesPrefix.length && signature.bytesPrefix.every(\n (byte, index) => byte === null || bytes[index] === byte\n )) {\n return signature.mediaType;\n }\n }\n return void 0;\n}\n\n// src/util/download/download.ts\nimport {\n withUserAgentSuffix,\n getRuntimeEnvironmentUserAgent\n} from \"@ai-sdk/provider-utils\";\n\n// src/version.ts\nvar VERSION = true ? \"5.0.47\" : \"0.0.0-test\";\n\n// src/util/download/download.ts\nvar download = async ({ url }) => {\n var _a17;\n const urlText = url.toString();\n try {\n const response = await fetch(urlText, {\n headers: withUserAgentSuffix(\n {},\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent()\n )\n });\n if (!response.ok) {\n throw new DownloadError({\n url: urlText,\n statusCode: response.status,\n statusText: response.statusText\n });\n }\n return {\n data: new Uint8Array(await response.arrayBuffer()),\n mediaType: (_a17 = response.headers.get(\"content-type\")) != null ? _a17 : void 0\n };\n } catch (error) {\n if (DownloadError.isInstance(error)) {\n throw error;\n }\n throw new DownloadError({ url: urlText, cause: error });\n }\n};\n\n// src/util/download/download-function.ts\nvar createDefaultDownloadFunction = (download2 = download) => (requestedDownloads) => Promise.all(\n requestedDownloads.map(\n async (requestedDownload) => requestedDownload.isUrlSupportedByModel ? null : download2(requestedDownload)\n )\n);\n\n// src/prompt/data-content.ts\nimport { AISDKError as AISDKError18 } from \"@ai-sdk/provider\";\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array2,\n convertUint8ArrayToBase64\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod/v4\";\n\n// src/prompt/split-data-url.ts\nfunction splitDataUrl(dataUrl) {\n try {\n const [header, base64Content] = dataUrl.split(\",\");\n return {\n mediaType: header.split(\";\")[0].split(\":\")[1],\n base64Content\n };\n } catch (error) {\n return {\n mediaType: void 0,\n base64Content: void 0\n };\n }\n}\n\n// src/prompt/data-content.ts\nvar dataContentSchema = z.union([\n z.string(),\n z.instanceof(Uint8Array),\n z.instanceof(ArrayBuffer),\n z.custom(\n // Buffer might not be available in some environments such as CloudFlare:\n (value) => {\n var _a17, _b;\n return (_b = (_a17 = globalThis.Buffer) == null ? void 0 : _a17.isBuffer(value)) != null ? _b : false;\n },\n { message: \"Must be a Buffer\" }\n )\n]);\nfunction convertToLanguageModelV2DataContent(content) {\n if (content instanceof Uint8Array) {\n return { data: content, mediaType: void 0 };\n }\n if (content instanceof ArrayBuffer) {\n return { data: new Uint8Array(content), mediaType: void 0 };\n }\n if (typeof content === \"string\") {\n try {\n content = new URL(content);\n } catch (error) {\n }\n }\n if (content instanceof URL && content.protocol === \"data:\") {\n const { mediaType: dataUrlMediaType, base64Content } = splitDataUrl(\n content.toString()\n );\n if (dataUrlMediaType == null || base64Content == null) {\n throw new AISDKError18({\n name: \"InvalidDataContentError\",\n message: `Invalid data URL format in content ${content.toString()}`\n });\n }\n return { data: base64Content, mediaType: dataUrlMediaType };\n }\n return { data: content, mediaType: void 0 };\n}\nfunction convertDataContentToBase64String(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (content instanceof ArrayBuffer) {\n return convertUint8ArrayToBase64(new Uint8Array(content));\n }\n return convertUint8ArrayToBase64(content);\n}\nfunction convertDataContentToUint8Array(content) {\n if (content instanceof Uint8Array) {\n return content;\n }\n if (typeof content === \"string\") {\n try {\n return convertBase64ToUint8Array2(content);\n } catch (error) {\n throw new InvalidDataContentError({\n message: \"Invalid data content. Content string is not a base64-encoded media.\",\n content,\n cause: error\n });\n }\n }\n if (content instanceof ArrayBuffer) {\n return new Uint8Array(content);\n }\n throw new InvalidDataContentError({ content });\n}\n\n// src/prompt/convert-to-language-model-prompt.ts\nasync function convertToLanguageModelPrompt({\n prompt,\n supportedUrls,\n download: download2 = createDefaultDownloadFunction()\n}) {\n const downloadedAssets = await downloadAssets(\n prompt.messages,\n download2,\n supportedUrls\n );\n return [\n ...prompt.system != null ? [{ role: \"system\", content: prompt.system }] : [],\n ...prompt.messages.map(\n (message) => convertToLanguageModelMessage({ message, downloadedAssets })\n )\n ];\n}\nfunction convertToLanguageModelMessage({\n message,\n downloadedAssets\n}) {\n const role = message.role;\n switch (role) {\n case \"system\": {\n return {\n role: \"system\",\n content: message.content,\n providerOptions: message.providerOptions\n };\n }\n case \"user\": {\n if (typeof message.content === \"string\") {\n return {\n role: \"user\",\n content: [{ type: \"text\", text: message.content }],\n providerOptions: message.providerOptions\n };\n }\n return {\n role: \"user\",\n content: message.content.map((part) => convertPartToLanguageModelPart(part, downloadedAssets)).filter((part) => part.type !== \"text\" || part.text !== \"\"),\n providerOptions: message.providerOptions\n };\n }\n case \"assistant\": {\n if (typeof message.content === \"string\") {\n return {\n role: \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n providerOptions: message.providerOptions\n };\n }\n return {\n role: \"assistant\",\n content: message.content.filter(\n // remove empty text parts (no text, and no provider options):\n (part) => part.type !== \"text\" || part.text !== \"\" || part.providerOptions != null\n ).map((part) => {\n const providerOptions = part.providerOptions;\n switch (part.type) {\n case \"file\": {\n const { data, mediaType } = convertToLanguageModelV2DataContent(\n part.data\n );\n return {\n type: \"file\",\n data,\n filename: part.filename,\n mediaType: mediaType != null ? mediaType : part.mediaType,\n providerOptions\n };\n }\n case \"reasoning\": {\n return {\n type: \"reasoning\",\n text: part.text,\n providerOptions\n };\n }\n case \"text\": {\n return {\n type: \"text\",\n text: part.text,\n providerOptions\n };\n }\n case \"tool-call\": {\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions\n };\n }\n case \"tool-result\": {\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: part.output,\n providerOptions\n };\n }\n }\n }),\n providerOptions: message.providerOptions\n };\n }\n case \"tool\": {\n return {\n role: \"tool\",\n content: message.content.map((part) => ({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: part.output,\n providerOptions: part.providerOptions\n })),\n providerOptions: message.providerOptions\n };\n }\n default: {\n const _exhaustiveCheck = role;\n throw new InvalidMessageRoleError({ role: _exhaustiveCheck });\n }\n }\n}\nasync function downloadAssets(messages, download2, supportedUrls) {\n const plannedDownloads = messages.filter((message) => message.role === \"user\").map((message) => message.content).filter(\n (content) => Array.isArray(content)\n ).flat().filter(\n (part) => part.type === \"image\" || part.type === \"file\"\n ).map((part) => {\n var _a17;\n const mediaType = (_a17 = part.mediaType) != null ? _a17 : part.type === \"image\" ? \"image/*\" : void 0;\n let data = part.type === \"image\" ? part.image : part.data;\n if (typeof data === \"string\") {\n try {\n data = new URL(data);\n } catch (ignored) {\n }\n }\n return { mediaType, data };\n }).filter(\n (part) => part.data instanceof URL\n ).map((part) => ({\n url: part.data,\n isUrlSupportedByModel: part.mediaType != null && isUrlSupported({\n url: part.data.toString(),\n mediaType: part.mediaType,\n supportedUrls\n })\n }));\n const downloadedFiles = await download2(plannedDownloads);\n return Object.fromEntries(\n downloadedFiles.filter(\n (downloadedFile) => (downloadedFile == null ? void 0 : downloadedFile.data) != null\n ).map(({ data, mediaType }, index) => [\n plannedDownloads[index].url.toString(),\n { data, mediaType }\n ])\n );\n}\nfunction convertPartToLanguageModelPart(part, downloadedAssets) {\n var _a17;\n if (part.type === \"text\") {\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerOptions\n };\n }\n let originalData;\n const type = part.type;\n switch (type) {\n case \"image\":\n originalData = part.image;\n break;\n case \"file\":\n originalData = part.data;\n break;\n default:\n throw new Error(`Unsupported part type: ${type}`);\n }\n const { data: convertedData, mediaType: convertedMediaType } = convertToLanguageModelV2DataContent(originalData);\n let mediaType = convertedMediaType != null ? convertedMediaType : part.mediaType;\n let data = convertedData;\n if (data instanceof URL) {\n const downloadedFile = downloadedAssets[data.toString()];\n if (downloadedFile) {\n data = downloadedFile.data;\n mediaType != null ? mediaType : mediaType = downloadedFile.mediaType;\n }\n }\n switch (type) {\n case \"image\": {\n if (data instanceof Uint8Array || typeof data === \"string\") {\n mediaType = (_a17 = detectMediaType({ data, signatures: imageMediaTypeSignatures })) != null ? _a17 : mediaType;\n }\n return {\n type: \"file\",\n mediaType: mediaType != null ? mediaType : \"image/*\",\n // any image\n filename: void 0,\n data,\n providerOptions: part.providerOptions\n };\n }\n case \"file\": {\n if (mediaType == null) {\n throw new Error(`Media type is missing for file part`);\n }\n return {\n type: \"file\",\n mediaType,\n filename: part.filename,\n data,\n providerOptions: part.providerOptions\n };\n }\n }\n}\n\n// src/prompt/prepare-call-settings.ts\nfunction prepareCallSettings({\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n stopSequences\n}) {\n if (maxOutputTokens != null) {\n if (!Number.isInteger(maxOutputTokens)) {\n throw new InvalidArgumentError({\n parameter: \"maxOutputTokens\",\n value: maxOutputTokens,\n message: \"maxOutputTokens must be an integer\"\n });\n }\n if (maxOutputTokens < 1) {\n throw new InvalidArgumentError({\n parameter: \"maxOutputTokens\",\n value: maxOutputTokens,\n message: \"maxOutputTokens must be >= 1\"\n });\n }\n }\n if (temperature != null) {\n if (typeof temperature !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"temperature\",\n value: temperature,\n message: \"temperature must be a number\"\n });\n }\n }\n if (topP != null) {\n if (typeof topP !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"topP\",\n value: topP,\n message: \"topP must be a number\"\n });\n }\n }\n if (topK != null) {\n if (typeof topK !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"topK\",\n value: topK,\n message: \"topK must be a number\"\n });\n }\n }\n if (presencePenalty != null) {\n if (typeof presencePenalty !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"presencePenalty\",\n value: presencePenalty,\n message: \"presencePenalty must be a number\"\n });\n }\n }\n if (frequencyPenalty != null) {\n if (typeof frequencyPenalty !== \"number\") {\n throw new InvalidArgumentError({\n parameter: \"frequencyPenalty\",\n value: frequencyPenalty,\n message: \"frequencyPenalty must be a number\"\n });\n }\n }\n if (seed != null) {\n if (!Number.isInteger(seed)) {\n throw new InvalidArgumentError({\n parameter: \"seed\",\n value: seed,\n message: \"seed must be an integer\"\n });\n }\n }\n return {\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n stopSequences,\n seed\n };\n}\n\n// src/prompt/prepare-tools-and-tool-choice.ts\nimport { asSchema } from \"@ai-sdk/provider-utils\";\n\n// src/util/is-non-empty-object.ts\nfunction isNonEmptyObject(object2) {\n return object2 != null && Object.keys(object2).length > 0;\n}\n\n// src/prompt/prepare-tools-and-tool-choice.ts\nfunction prepareToolsAndToolChoice({\n tools,\n toolChoice,\n activeTools\n}) {\n if (!isNonEmptyObject(tools)) {\n return {\n tools: void 0,\n toolChoice: void 0\n };\n }\n const filteredTools = activeTools != null ? Object.entries(tools).filter(\n ([name17]) => activeTools.includes(name17)\n ) : Object.entries(tools);\n return {\n tools: filteredTools.map(([name17, tool3]) => {\n const toolType = tool3.type;\n switch (toolType) {\n case void 0:\n case \"dynamic\":\n case \"function\":\n return {\n type: \"function\",\n name: name17,\n description: tool3.description,\n inputSchema: asSchema(tool3.inputSchema).jsonSchema,\n providerOptions: tool3.providerOptions\n };\n case \"provider-defined\":\n return {\n type: \"provider-defined\",\n name: name17,\n id: tool3.id,\n args: tool3.args\n };\n default: {\n const exhaustiveCheck = toolType;\n throw new Error(`Unsupported tool type: ${exhaustiveCheck}`);\n }\n }\n }),\n toolChoice: toolChoice == null ? { type: \"auto\" } : typeof toolChoice === \"string\" ? { type: toolChoice } : { type: \"tool\", toolName: toolChoice.toolName }\n };\n}\n\n// src/prompt/standardize-prompt.ts\nimport { InvalidPromptError as InvalidPromptError2 } from \"@ai-sdk/provider\";\nimport { safeValidateTypes } from \"@ai-sdk/provider-utils\";\nimport { z as z6 } from \"zod/v4\";\n\n// src/prompt/message.ts\nimport { z as z5 } from \"zod/v4\";\n\n// src/types/provider-metadata.ts\nimport { z as z3 } from \"zod/v4\";\n\n// src/types/json-value.ts\nimport { z as z2 } from \"zod/v4\";\nvar jsonValueSchema = z2.lazy(\n () => z2.union([\n z2.null(),\n z2.string(),\n z2.number(),\n z2.boolean(),\n z2.record(z2.string(), jsonValueSchema),\n z2.array(jsonValueSchema)\n ])\n);\n\n// src/types/provider-metadata.ts\nvar providerMetadataSchema = z3.record(\n z3.string(),\n z3.record(z3.string(), jsonValueSchema)\n);\n\n// src/prompt/content-part.ts\nimport { z as z4 } from \"zod/v4\";\nvar textPartSchema = z4.object({\n type: z4.literal(\"text\"),\n text: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar imagePartSchema = z4.object({\n type: z4.literal(\"image\"),\n image: z4.union([dataContentSchema, z4.instanceof(URL)]),\n mediaType: z4.string().optional(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar filePartSchema = z4.object({\n type: z4.literal(\"file\"),\n data: z4.union([dataContentSchema, z4.instanceof(URL)]),\n filename: z4.string().optional(),\n mediaType: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar reasoningPartSchema = z4.object({\n type: z4.literal(\"reasoning\"),\n text: z4.string(),\n providerOptions: providerMetadataSchema.optional()\n});\nvar toolCallPartSchema = z4.object({\n type: z4.literal(\"tool-call\"),\n toolCallId: z4.string(),\n toolName: z4.string(),\n input: z4.unknown(),\n providerOptions: providerMetadataSchema.optional(),\n providerExecuted: z4.boolean().optional()\n});\nvar outputSchema = z4.discriminatedUnion(\"type\", [\n z4.object({\n type: z4.literal(\"text\"),\n value: z4.string()\n }),\n z4.object({\n type: z4.literal(\"json\"),\n value: jsonValueSchema\n }),\n z4.object({\n type: z4.literal(\"error-text\"),\n value: z4.string()\n }),\n z4.object({\n type: z4.literal(\"error-json\"),\n value: jsonValueSchema\n }),\n z4.object({\n type: z4.literal(\"content\"),\n value: z4.array(\n z4.union([\n z4.object({\n type: z4.literal(\"text\"),\n text: z4.string()\n }),\n z4.object({\n type: z4.literal(\"media\"),\n data: z4.string(),\n mediaType: z4.string()\n })\n ])\n )\n })\n]);\nvar toolResultPartSchema = z4.object({\n type: z4.literal(\"tool-result\"),\n toolCallId: z4.string(),\n toolName: z4.string(),\n output: outputSchema,\n providerOptions: providerMetadataSchema.optional()\n});\n\n// src/prompt/message.ts\nvar systemModelMessageSchema = z5.object(\n {\n role: z5.literal(\"system\"),\n content: z5.string(),\n providerOptions: providerMetadataSchema.optional()\n }\n);\nvar coreSystemMessageSchema = systemModelMessageSchema;\nvar userModelMessageSchema = z5.object({\n role: z5.literal(\"user\"),\n content: z5.union([\n z5.string(),\n z5.array(z5.union([textPartSchema, imagePartSchema, filePartSchema]))\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreUserMessageSchema = userModelMessageSchema;\nvar assistantModelMessageSchema = z5.object({\n role: z5.literal(\"assistant\"),\n content: z5.union([\n z5.string(),\n z5.array(\n z5.union([\n textPartSchema,\n filePartSchema,\n reasoningPartSchema,\n toolCallPartSchema,\n toolResultPartSchema\n ])\n )\n ]),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreAssistantMessageSchema = assistantModelMessageSchema;\nvar toolModelMessageSchema = z5.object({\n role: z5.literal(\"tool\"),\n content: z5.array(toolResultPartSchema),\n providerOptions: providerMetadataSchema.optional()\n});\nvar coreToolMessageSchema = toolModelMessageSchema;\nvar modelMessageSchema = z5.union([\n systemModelMessageSchema,\n userModelMessageSchema,\n assistantModelMessageSchema,\n toolModelMessageSchema\n]);\nvar coreMessageSchema = modelMessageSchema;\n\n// src/prompt/standardize-prompt.ts\nasync function standardizePrompt(prompt) {\n if (prompt.prompt == null && prompt.messages == null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (prompt.prompt != null && prompt.messages != null) {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt and messages cannot be defined at the same time\"\n });\n }\n if (prompt.system != null && typeof prompt.system !== \"string\") {\n throw new InvalidPromptError2({\n prompt,\n message: \"system must be a string\"\n });\n }\n let messages;\n if (prompt.prompt != null && typeof prompt.prompt === \"string\") {\n messages = [{ role: \"user\", content: prompt.prompt }];\n } else if (prompt.prompt != null && Array.isArray(prompt.prompt)) {\n messages = prompt.prompt;\n } else if (prompt.messages != null) {\n messages = prompt.messages;\n } else {\n throw new InvalidPromptError2({\n prompt,\n message: \"prompt or messages must be defined\"\n });\n }\n if (messages.length === 0) {\n throw new InvalidPromptError2({\n prompt,\n message: \"messages must not be empty\"\n });\n }\n const validationResult = await safeValidateTypes({\n value: messages,\n schema: z6.array(modelMessageSchema)\n });\n if (!validationResult.success) {\n throw new InvalidPromptError2({\n prompt,\n message: \"The messages must be a ModelMessage[]. If you have passed a UIMessage[], you can use convertToModelMessages to convert them.\",\n cause: validationResult.error\n });\n }\n return {\n messages,\n system: prompt.system\n };\n}\n\n// src/prompt/wrap-gateway-error.ts\nimport {\n GatewayAuthenticationError,\n GatewayModelNotFoundError\n} from \"@ai-sdk/gateway\";\nimport { AISDKError as AISDKError19 } from \"@ai-sdk/provider\";\nfunction wrapGatewayError(error) {\n if (GatewayAuthenticationError.isInstance(error) || GatewayModelNotFoundError.isInstance(error)) {\n return new AISDKError19({\n name: \"GatewayError\",\n message: \"Vercel AI Gateway access failed. If you want to use AI SDK providers directly, use the providers, e.g. @ai-sdk/openai, or register a different global default provider.\",\n cause: error\n });\n }\n return error;\n}\n\n// src/telemetry/assemble-operation-name.ts\nfunction assembleOperationName({\n operationId,\n telemetry\n}) {\n return {\n // standardized operation and resource name:\n \"operation.name\": `${operationId}${(telemetry == null ? void 0 : telemetry.functionId) != null ? ` ${telemetry.functionId}` : \"\"}`,\n \"resource.name\": telemetry == null ? void 0 : telemetry.functionId,\n // detailed, AI SDK specific data:\n \"ai.operationId\": operationId,\n \"ai.telemetry.functionId\": telemetry == null ? void 0 : telemetry.functionId\n };\n}\n\n// src/telemetry/get-base-telemetry-attributes.ts\nfunction getBaseTelemetryAttributes({\n model,\n settings,\n telemetry,\n headers\n}) {\n var _a17;\n return {\n \"ai.model.provider\": model.provider,\n \"ai.model.id\": model.modelId,\n // settings:\n ...Object.entries(settings).reduce((attributes, [key, value]) => {\n attributes[`ai.settings.${key}`] = value;\n return attributes;\n }, {}),\n // add metadata as attributes:\n ...Object.entries((_a17 = telemetry == null ? void 0 : telemetry.metadata) != null ? _a17 : {}).reduce(\n (attributes, [key, value]) => {\n attributes[`ai.telemetry.metadata.${key}`] = value;\n return attributes;\n },\n {}\n ),\n // request headers\n ...Object.entries(headers != null ? headers : {}).reduce((attributes, [key, value]) => {\n if (value !== void 0) {\n attributes[`ai.request.headers.${key}`] = value;\n }\n return attributes;\n }, {})\n };\n}\n\n// src/telemetry/get-tracer.ts\nimport { trace } from \"@opentelemetry/api\";\n\n// src/telemetry/noop-tracer.ts\nvar noopTracer = {\n startSpan() {\n return noopSpan;\n },\n startActiveSpan(name17, arg1, arg2, arg3) {\n if (typeof arg1 === \"function\") {\n return arg1(noopSpan);\n }\n if (typeof arg2 === \"function\") {\n return arg2(noopSpan);\n }\n if (typeof arg3 === \"function\") {\n return arg3(noopSpan);\n }\n }\n};\nvar noopSpan = {\n spanContext() {\n return noopSpanContext;\n },\n setAttribute() {\n return this;\n },\n setAttributes() {\n return this;\n },\n addEvent() {\n return this;\n },\n addLink() {\n return this;\n },\n addLinks() {\n return this;\n },\n setStatus() {\n return this;\n },\n updateName() {\n return this;\n },\n end() {\n return this;\n },\n isRecording() {\n return false;\n },\n recordException() {\n return this;\n }\n};\nvar noopSpanContext = {\n traceId: \"\",\n spanId: \"\",\n traceFlags: 0\n};\n\n// src/telemetry/get-tracer.ts\nfunction getTracer({\n isEnabled = false,\n tracer\n} = {}) {\n if (!isEnabled) {\n return noopTracer;\n }\n if (tracer) {\n return tracer;\n }\n return trace.getTracer(\"ai\");\n}\n\n// src/telemetry/record-span.ts\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nfunction recordSpan({\n name: name17,\n tracer,\n attributes,\n fn,\n endWhenDone = true\n}) {\n return tracer.startActiveSpan(name17, { attributes }, async (span) => {\n try {\n const result = await fn(span);\n if (endWhenDone) {\n span.end();\n }\n return result;\n } catch (error) {\n try {\n recordErrorOnSpan(span, error);\n } finally {\n span.end();\n }\n throw error;\n }\n });\n}\nfunction recordErrorOnSpan(span, error) {\n if (error instanceof Error) {\n span.recordException({\n name: error.name,\n message: error.message,\n stack: error.stack\n });\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message\n });\n } else {\n span.setStatus({ code: SpanStatusCode.ERROR });\n }\n}\n\n// src/telemetry/select-telemetry-attributes.ts\nfunction selectTelemetryAttributes({\n telemetry,\n attributes\n}) {\n if ((telemetry == null ? void 0 : telemetry.isEnabled) !== true) {\n return {};\n }\n return Object.entries(attributes).reduce((attributes2, [key, value]) => {\n if (value == null) {\n return attributes2;\n }\n if (typeof value === \"object\" && \"input\" in value && typeof value.input === \"function\") {\n if ((telemetry == null ? void 0 : telemetry.recordInputs) === false) {\n return attributes2;\n }\n const result = value.input();\n return result == null ? attributes2 : { ...attributes2, [key]: result };\n }\n if (typeof value === \"object\" && \"output\" in value && typeof value.output === \"function\") {\n if ((telemetry == null ? void 0 : telemetry.recordOutputs) === false) {\n return attributes2;\n }\n const result = value.output();\n return result == null ? attributes2 : { ...attributes2, [key]: result };\n }\n return { ...attributes2, [key]: value };\n }, {});\n}\n\n// src/telemetry/stringify-for-telemetry.ts\nfunction stringifyForTelemetry(prompt) {\n return JSON.stringify(\n prompt.map((message) => ({\n ...message,\n content: typeof message.content === \"string\" ? message.content : message.content.map(\n (part) => part.type === \"file\" ? {\n ...part,\n data: part.data instanceof Uint8Array ? convertDataContentToBase64String(part.data) : part.data\n } : part\n )\n }))\n );\n}\n\n// src/types/usage.ts\nfunction addLanguageModelUsage(usage1, usage2) {\n return {\n inputTokens: addTokenCounts(usage1.inputTokens, usage2.inputTokens),\n outputTokens: addTokenCounts(usage1.outputTokens, usage2.outputTokens),\n totalTokens: addTokenCounts(usage1.totalTokens, usage2.totalTokens),\n reasoningTokens: addTokenCounts(\n usage1.reasoningTokens,\n usage2.reasoningTokens\n ),\n cachedInputTokens: addTokenCounts(\n usage1.cachedInputTokens,\n usage2.cachedInputTokens\n )\n };\n}\nfunction addTokenCounts(tokenCount1, tokenCount2) {\n return tokenCount1 == null && tokenCount2 == null ? void 0 : (tokenCount1 != null ? tokenCount1 : 0) + (tokenCount2 != null ? tokenCount2 : 0);\n}\n\n// src/util/as-array.ts\nfunction asArray(value) {\n return value === void 0 ? [] : Array.isArray(value) ? value : [value];\n}\n\n// src/util/retry-with-exponential-backoff.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\nimport { delay, getErrorMessage as getErrorMessage3, isAbortError } from \"@ai-sdk/provider-utils\";\nfunction getRetryDelayInMs({\n error,\n exponentialBackoffDelay\n}) {\n const headers = error.responseHeaders;\n if (!headers)\n return exponentialBackoffDelay;\n let ms;\n const retryAfterMs = headers[\"retry-after-ms\"];\n if (retryAfterMs) {\n const timeoutMs = parseFloat(retryAfterMs);\n if (!Number.isNaN(timeoutMs)) {\n ms = timeoutMs;\n }\n }\n const retryAfter = headers[\"retry-after\"];\n if (retryAfter && ms === void 0) {\n const timeoutSeconds = parseFloat(retryAfter);\n if (!Number.isNaN(timeoutSeconds)) {\n ms = timeoutSeconds * 1e3;\n } else {\n ms = Date.parse(retryAfter) - Date.now();\n }\n }\n if (ms != null && !Number.isNaN(ms) && 0 <= ms && (ms < 60 * 1e3 || ms < exponentialBackoffDelay)) {\n return ms;\n }\n return exponentialBackoffDelay;\n}\nvar retryWithExponentialBackoffRespectingRetryHeaders = ({\n maxRetries = 2,\n initialDelayInMs = 2e3,\n backoffFactor = 2,\n abortSignal\n} = {}) => async (f) => _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs: initialDelayInMs,\n backoffFactor,\n abortSignal\n});\nasync function _retryWithExponentialBackoff(f, {\n maxRetries,\n delayInMs,\n backoffFactor,\n abortSignal\n}, errors = []) {\n try {\n return await f();\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (maxRetries === 0) {\n throw error;\n }\n const errorMessage = getErrorMessage3(error);\n const newErrors = [...errors, error];\n const tryNumber = newErrors.length;\n if (tryNumber > maxRetries) {\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts. Last error: ${errorMessage}`,\n reason: \"maxRetriesExceeded\",\n errors: newErrors\n });\n }\n if (error instanceof Error && APICallError2.isInstance(error) && error.isRetryable === true && tryNumber <= maxRetries) {\n await delay(\n getRetryDelayInMs({\n error,\n exponentialBackoffDelay: delayInMs\n }),\n { abortSignal }\n );\n return _retryWithExponentialBackoff(\n f,\n {\n maxRetries,\n delayInMs: backoffFactor * delayInMs,\n backoffFactor,\n abortSignal\n },\n newErrors\n );\n }\n if (tryNumber === 1) {\n throw error;\n }\n throw new RetryError({\n message: `Failed after ${tryNumber} attempts with non-retryable error: '${errorMessage}'`,\n reason: \"errorNotRetryable\",\n errors: newErrors\n });\n }\n}\n\n// src/util/prepare-retries.ts\nfunction prepareRetries({\n maxRetries,\n abortSignal\n}) {\n if (maxRetries != null) {\n if (!Number.isInteger(maxRetries)) {\n throw new InvalidArgumentError({\n parameter: \"maxRetries\",\n value: maxRetries,\n message: \"maxRetries must be an integer\"\n });\n }\n if (maxRetries < 0) {\n throw new InvalidArgumentError({\n parameter: \"maxRetries\",\n value: maxRetries,\n message: \"maxRetries must be >= 0\"\n });\n }\n }\n const maxRetriesResult = maxRetries != null ? maxRetries : 2;\n return {\n maxRetries: maxRetriesResult,\n retry: retryWithExponentialBackoffRespectingRetryHeaders({\n maxRetries: maxRetriesResult,\n abortSignal\n })\n };\n}\n\n// src/generate-text/extract-text-content.ts\nfunction extractTextContent(content) {\n const parts = content.filter(\n (content2) => content2.type === \"text\"\n );\n if (parts.length === 0) {\n return void 0;\n }\n return parts.map((content2) => content2.text).join(\"\");\n}\n\n// src/generate-text/generated-file.ts\nimport {\n convertBase64ToUint8Array as convertBase64ToUint8Array3,\n convertUint8ArrayToBase64 as convertUint8ArrayToBase642\n} from \"@ai-sdk/provider-utils\";\nvar DefaultGeneratedFile = class {\n constructor({\n data,\n mediaType\n }) {\n const isUint8Array = data instanceof Uint8Array;\n this.base64Data = isUint8Array ? void 0 : data;\n this.uint8ArrayData = isUint8Array ? data : void 0;\n this.mediaType = mediaType;\n }\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get base64() {\n if (this.base64Data == null) {\n this.base64Data = convertUint8ArrayToBase642(this.uint8ArrayData);\n }\n return this.base64Data;\n }\n // lazy conversion with caching to avoid unnecessary conversion overhead:\n get uint8Array() {\n if (this.uint8ArrayData == null) {\n this.uint8ArrayData = convertBase64ToUint8Array3(this.base64Data);\n }\n return this.uint8ArrayData;\n }\n};\nvar DefaultGeneratedFileWithType = class extends DefaultGeneratedFile {\n constructor(options) {\n super(options);\n this.type = \"file\";\n }\n};\n\n// src/generate-text/parse-tool-call.ts\nimport {\n asSchema as asSchema2,\n safeParseJSON,\n safeValidateTypes as safeValidateTypes2\n} from \"@ai-sdk/provider-utils\";\nasync function parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages\n}) {\n try {\n if (tools == null) {\n throw new NoSuchToolError({ toolName: toolCall.toolName });\n }\n try {\n return await doParseToolCall({ toolCall, tools });\n } catch (error) {\n if (repairToolCall == null || !(NoSuchToolError.isInstance(error) || InvalidToolInputError.isInstance(error))) {\n throw error;\n }\n let repairedToolCall = null;\n try {\n repairedToolCall = await repairToolCall({\n toolCall,\n tools,\n inputSchema: ({ toolName }) => {\n const { inputSchema } = tools[toolName];\n return asSchema2(inputSchema).jsonSchema;\n },\n system,\n messages,\n error\n });\n } catch (repairError) {\n throw new ToolCallRepairError({\n cause: repairError,\n originalError: error\n });\n }\n if (repairedToolCall == null) {\n throw error;\n }\n return await doParseToolCall({ toolCall: repairedToolCall, tools });\n }\n } catch (error) {\n const parsedInput = await safeParseJSON({ text: toolCall.input });\n const input = parsedInput.success ? parsedInput.value : toolCall.input;\n return {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input,\n dynamic: true,\n invalid: true,\n error\n };\n }\n}\nasync function doParseToolCall({\n toolCall,\n tools\n}) {\n const toolName = toolCall.toolName;\n const tool3 = tools[toolName];\n if (tool3 == null) {\n throw new NoSuchToolError({\n toolName: toolCall.toolName,\n availableTools: Object.keys(tools)\n });\n }\n const schema = asSchema2(tool3.inputSchema);\n const parseResult = toolCall.input.trim() === \"\" ? await safeValidateTypes2({ value: {}, schema }) : await safeParseJSON({ text: toolCall.input, schema });\n if (parseResult.success === false) {\n throw new InvalidToolInputError({\n toolName,\n toolInput: toolCall.input,\n cause: parseResult.error\n });\n }\n return tool3.type === \"dynamic\" ? {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata,\n dynamic: true\n } : {\n type: \"tool-call\",\n toolCallId: toolCall.toolCallId,\n toolName,\n input: parseResult.value,\n providerExecuted: toolCall.providerExecuted,\n providerMetadata: toolCall.providerMetadata\n };\n}\n\n// src/generate-text/step-result.ts\nvar DefaultStepResult = class {\n constructor({\n content,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata\n }) {\n this.content = content;\n this.finishReason = finishReason;\n this.usage = usage;\n this.warnings = warnings;\n this.request = request;\n this.response = response;\n this.providerMetadata = providerMetadata;\n }\n get text() {\n return this.content.filter((part) => part.type === \"text\").map((part) => part.text).join(\"\");\n }\n get reasoning() {\n return this.content.filter((part) => part.type === \"reasoning\");\n }\n get reasoningText() {\n return this.reasoning.length === 0 ? void 0 : this.reasoning.map((part) => part.text).join(\"\");\n }\n get files() {\n return this.content.filter((part) => part.type === \"file\").map((part) => part.file);\n }\n get sources() {\n return this.content.filter((part) => part.type === \"source\");\n }\n get toolCalls() {\n return this.content.filter((part) => part.type === \"tool-call\");\n }\n get staticToolCalls() {\n return this.toolCalls.filter(\n (toolCall) => toolCall.dynamic !== true\n );\n }\n get dynamicToolCalls() {\n return this.toolCalls.filter(\n (toolCall) => toolCall.dynamic === true\n );\n }\n get toolResults() {\n return this.content.filter((part) => part.type === \"tool-result\");\n }\n get staticToolResults() {\n return this.toolResults.filter(\n (toolResult) => toolResult.dynamic !== true\n );\n }\n get dynamicToolResults() {\n return this.toolResults.filter(\n (toolResult) => toolResult.dynamic === true\n );\n }\n};\n\n// src/generate-text/stop-condition.ts\nfunction stepCountIs(stepCount) {\n return ({ steps }) => steps.length === stepCount;\n}\nfunction hasToolCall(toolName) {\n return ({ steps }) => {\n var _a17, _b, _c;\n return (_c = (_b = (_a17 = steps[steps.length - 1]) == null ? void 0 : _a17.toolCalls) == null ? void 0 : _b.some(\n (toolCall) => toolCall.toolName === toolName\n )) != null ? _c : false;\n };\n}\nasync function isStopConditionMet({\n stopConditions,\n steps\n}) {\n return (await Promise.all(stopConditions.map((condition) => condition({ steps })))).some((result) => result);\n}\n\n// src/prompt/create-tool-model-output.ts\nimport {\n getErrorMessage as getErrorMessage4\n} from \"@ai-sdk/provider\";\nfunction createToolModelOutput({\n output,\n tool: tool3,\n errorMode\n}) {\n if (errorMode === \"text\") {\n return { type: \"error-text\", value: getErrorMessage4(output) };\n } else if (errorMode === \"json\") {\n return { type: \"error-json\", value: toJSONValue(output) };\n }\n if (tool3 == null ? void 0 : tool3.toModelOutput) {\n return tool3.toModelOutput(output);\n }\n return typeof output === \"string\" ? { type: \"text\", value: output } : { type: \"json\", value: toJSONValue(output) };\n}\nfunction toJSONValue(value) {\n return value === void 0 ? null : value;\n}\n\n// src/generate-text/to-response-messages.ts\nfunction toResponseMessages({\n content: inputContent,\n tools\n}) {\n const responseMessages = [];\n const content = inputContent.filter((part) => part.type !== \"source\").filter(\n (part) => (part.type !== \"tool-result\" || part.providerExecuted) && (part.type !== \"tool-error\" || part.providerExecuted)\n ).filter((part) => part.type !== \"text\" || part.text.length > 0).map((part) => {\n switch (part.type) {\n case \"text\":\n return {\n type: \"text\",\n text: part.text,\n providerOptions: part.providerMetadata\n };\n case \"reasoning\":\n return {\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n };\n case \"file\":\n return {\n type: \"file\",\n data: part.file.base64,\n mediaType: part.file.mediaType,\n providerOptions: part.providerMetadata\n };\n case \"tool-call\":\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n providerExecuted: part.providerExecuted,\n providerOptions: part.providerMetadata\n };\n case \"tool-result\":\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.output,\n errorMode: \"none\"\n }),\n providerExecuted: true,\n providerOptions: part.providerMetadata\n };\n case \"tool-error\":\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[part.toolName],\n output: part.error,\n errorMode: \"json\"\n }),\n providerOptions: part.providerMetadata\n };\n }\n });\n if (content.length > 0) {\n responseMessages.push({\n role: \"assistant\",\n content\n });\n }\n const toolResultContent = inputContent.filter((part) => part.type === \"tool-result\" || part.type === \"tool-error\").filter((part) => !part.providerExecuted).map((toolResult) => ({\n type: \"tool-result\",\n toolCallId: toolResult.toolCallId,\n toolName: toolResult.toolName,\n output: createToolModelOutput({\n tool: tools == null ? void 0 : tools[toolResult.toolName],\n output: toolResult.type === \"tool-result\" ? toolResult.output : toolResult.error,\n errorMode: toolResult.type === \"tool-error\" ? \"text\" : \"none\"\n })\n }));\n if (toolResultContent.length > 0) {\n responseMessages.push({\n role: \"tool\",\n content: toolResultContent\n });\n }\n return responseMessages;\n}\n\n// src/generate-text/generate-text.ts\nvar originalGenerateId = createIdGenerator({\n prefix: \"aitxt\",\n size: 24\n});\nasync function generateText({\n model: modelArg,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output: output,\n experimental_telemetry: telemetry,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_prepareStep,\n prepareStep = experimental_prepareStep,\n experimental_repairToolCall: repairToolCall,\n experimental_download: download2,\n experimental_context,\n _internal: {\n generateId: generateId3 = originalGenerateId,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n onStepFinish,\n ...settings\n}) {\n const model = resolveLanguageModel(modelArg);\n const stopConditions = asArray(stopWhen);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareCallSettings(settings);\n const headersWithUserAgent = withUserAgentSuffix2(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries }\n });\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const tracer = getTracer(telemetry);\n try {\n return await recordSpan({\n name: \"ai.generateText\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateText\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": model.provider,\n \"ai.model.id\": model.modelId,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n }\n }\n }),\n tracer,\n fn: async (span) => {\n var _a17, _b, _c, _d, _e, _f, _g;\n const callSettings2 = prepareCallSettings(settings);\n let currentModelResponse;\n let clientToolCalls = [];\n let clientToolOutputs = [];\n const responseMessages = [];\n const steps = [];\n do {\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps,\n stepNumber: steps.length,\n messages: stepInputMessages\n }));\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _a17 : initialPrompt.system,\n messages: (_b = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _b : stepInputMessages\n },\n supportedUrls: await model.supportedUrls,\n download: download2\n });\n const stepModel = resolveLanguageModel(\n (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model\n );\n const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({\n tools,\n toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,\n activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools\n });\n currentModelResponse = await retry(\n () => {\n var _a18;\n return recordSpan({\n name: \"ai.generateText.doGenerate\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateText.doGenerate\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": stepModel.provider,\n \"ai.model.id\": stepModel.modelId,\n // prompt:\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n \"ai.prompt.tools\": {\n // convert the language model level tools:\n input: () => stepTools == null ? void 0 : stepTools.map((tool3) => JSON.stringify(tool3))\n },\n \"ai.prompt.toolChoice\": {\n input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": stepModel.provider,\n \"gen_ai.request.model\": stepModel.modelId,\n \"gen_ai.request.frequency_penalty\": settings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": settings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": settings.presencePenalty,\n \"gen_ai.request.stop_sequences\": settings.stopSequences,\n \"gen_ai.request.temperature\": (_a18 = settings.temperature) != null ? _a18 : void 0,\n \"gen_ai.request.top_k\": settings.topK,\n \"gen_ai.request.top_p\": settings.topP\n }\n }),\n tracer,\n fn: async (span2) => {\n var _a19, _b2, _c2, _d2, _e2, _f2, _g2, _h;\n const result = await stepModel.doGenerate({\n ...callSettings2,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: output == null ? void 0 : output.responseFormat,\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n });\n const responseData = {\n id: (_b2 = (_a19 = result.response) == null ? void 0 : _a19.id) != null ? _b2 : generateId3(),\n timestamp: (_d2 = (_c2 = result.response) == null ? void 0 : _c2.timestamp) != null ? _d2 : currentDate(),\n modelId: (_f2 = (_e2 = result.response) == null ? void 0 : _e2.modelId) != null ? _f2 : stepModel.modelId,\n headers: (_g2 = result.response) == null ? void 0 : _g2.headers,\n body: (_h = result.response) == null ? void 0 : _h.body\n };\n span2.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": result.finishReason,\n \"ai.response.text\": {\n output: () => extractTextContent(result.content)\n },\n \"ai.response.toolCalls\": {\n output: () => {\n const toolCalls = asToolCalls(result.content);\n return toolCalls == null ? void 0 : JSON.stringify(toolCalls);\n }\n },\n \"ai.response.id\": responseData.id,\n \"ai.response.model\": responseData.modelId,\n \"ai.response.timestamp\": responseData.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(\n result.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": result.usage.inputTokens,\n \"ai.usage.completionTokens\": result.usage.outputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [result.finishReason],\n \"gen_ai.response.id\": responseData.id,\n \"gen_ai.response.model\": responseData.modelId,\n \"gen_ai.usage.input_tokens\": result.usage.inputTokens,\n \"gen_ai.usage.output_tokens\": result.usage.outputTokens\n }\n })\n );\n return { ...result, response: responseData };\n }\n });\n }\n );\n const stepToolCalls = await Promise.all(\n currentModelResponse.content.filter(\n (part) => part.type === \"tool-call\"\n ).map(\n (toolCall) => parseToolCall({\n toolCall,\n tools,\n repairToolCall,\n system,\n messages: stepInputMessages\n })\n )\n );\n for (const toolCall of stepToolCalls) {\n if (toolCall.invalid) {\n continue;\n }\n const tool3 = tools[toolCall.toolName];\n if ((tool3 == null ? void 0 : tool3.onInputAvailable) != null) {\n await tool3.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n }\n const invalidToolCalls = stepToolCalls.filter(\n (toolCall) => toolCall.invalid && toolCall.dynamic\n );\n clientToolOutputs = [];\n for (const toolCall of invalidToolCalls) {\n clientToolOutputs.push({\n type: \"tool-error\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage5(toolCall.error),\n dynamic: true\n });\n }\n clientToolCalls = stepToolCalls.filter(\n (toolCall) => !toolCall.providerExecuted\n );\n if (tools != null) {\n clientToolOutputs.push(\n ...await executeTools({\n toolCalls: clientToolCalls.filter(\n (toolCall) => !toolCall.invalid\n ),\n tools,\n tracer,\n telemetry,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n })\n );\n }\n const stepContent = asContent({\n content: currentModelResponse.content,\n toolCalls: stepToolCalls,\n toolOutputs: clientToolOutputs\n });\n responseMessages.push(\n ...toResponseMessages({\n content: stepContent,\n tools\n })\n );\n const currentStepResult = new DefaultStepResult({\n content: stepContent,\n finishReason: currentModelResponse.finishReason,\n usage: currentModelResponse.usage,\n warnings: currentModelResponse.warnings,\n providerMetadata: currentModelResponse.providerMetadata,\n request: (_f = currentModelResponse.request) != null ? _f : {},\n response: {\n ...currentModelResponse.response,\n // deep clone msgs to avoid mutating past messages in multi-step:\n messages: structuredClone(responseMessages)\n }\n });\n logWarnings((_g = currentModelResponse.warnings) != null ? _g : []);\n steps.push(currentStepResult);\n await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n } while (\n // there are tool calls:\n clientToolCalls.length > 0 && // all current tool calls have outputs (incl. execution errors):\n clientToolOutputs.length === clientToolCalls.length && // continue until a stop condition is met:\n !await isStopConditionMet({ stopConditions, steps })\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": currentModelResponse.finishReason,\n \"ai.response.text\": {\n output: () => extractTextContent(currentModelResponse.content)\n },\n \"ai.response.toolCalls\": {\n output: () => {\n const toolCalls = asToolCalls(currentModelResponse.content);\n return toolCalls == null ? void 0 : JSON.stringify(toolCalls);\n }\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n currentModelResponse.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": currentModelResponse.usage.inputTokens,\n \"ai.usage.completionTokens\": currentModelResponse.usage.outputTokens\n }\n })\n );\n const lastStep = steps[steps.length - 1];\n return new DefaultGenerateTextResult({\n steps,\n resolvedOutput: await (output == null ? void 0 : output.parseOutput(\n { text: lastStep.text },\n {\n response: lastStep.response,\n usage: lastStep.usage,\n finishReason: lastStep.finishReason\n }\n ))\n });\n }\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\nasync function executeTools({\n toolCalls,\n tools,\n tracer,\n telemetry,\n messages,\n abortSignal,\n experimental_context\n}) {\n const toolOutputs = await Promise.all(\n toolCalls.map(async ({ toolCallId, toolName, input }) => {\n const tool3 = tools[toolName];\n if ((tool3 == null ? void 0 : tool3.execute) == null) {\n return void 0;\n }\n return recordSpan({\n name: \"ai.toolCall\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.toolCall\",\n telemetry\n }),\n \"ai.toolCall.name\": toolName,\n \"ai.toolCall.id\": toolCallId,\n \"ai.toolCall.args\": {\n output: () => JSON.stringify(input)\n }\n }\n }),\n tracer,\n fn: async (span) => {\n try {\n const stream = executeTool({\n execute: tool3.execute.bind(tool3),\n input,\n options: {\n toolCallId,\n messages,\n abortSignal,\n experimental_context\n }\n });\n let output;\n for await (const part of stream) {\n if (part.type === \"final\") {\n output = part.output;\n }\n }\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.toolCall.result\": {\n output: () => JSON.stringify(output)\n }\n }\n })\n );\n } catch (ignored) {\n }\n return {\n type: \"tool-result\",\n toolCallId,\n toolName,\n input,\n output,\n dynamic: tool3.type === \"dynamic\"\n };\n } catch (error) {\n recordErrorOnSpan(span, error);\n return {\n type: \"tool-error\",\n toolCallId,\n toolName,\n input,\n error,\n dynamic: tool3.type === \"dynamic\"\n };\n }\n }\n });\n })\n );\n return toolOutputs.filter(\n (output) => output != null\n );\n}\nvar DefaultGenerateTextResult = class {\n constructor(options) {\n this.steps = options.steps;\n this.resolvedOutput = options.resolvedOutput;\n }\n get finalStep() {\n return this.steps[this.steps.length - 1];\n }\n get content() {\n return this.finalStep.content;\n }\n get text() {\n return this.finalStep.text;\n }\n get files() {\n return this.finalStep.files;\n }\n get reasoningText() {\n return this.finalStep.reasoningText;\n }\n get reasoning() {\n return this.finalStep.reasoning;\n }\n get toolCalls() {\n return this.finalStep.toolCalls;\n }\n get staticToolCalls() {\n return this.finalStep.staticToolCalls;\n }\n get dynamicToolCalls() {\n return this.finalStep.dynamicToolCalls;\n }\n get toolResults() {\n return this.finalStep.toolResults;\n }\n get staticToolResults() {\n return this.finalStep.staticToolResults;\n }\n get dynamicToolResults() {\n return this.finalStep.dynamicToolResults;\n }\n get sources() {\n return this.finalStep.sources;\n }\n get finishReason() {\n return this.finalStep.finishReason;\n }\n get warnings() {\n return this.finalStep.warnings;\n }\n get providerMetadata() {\n return this.finalStep.providerMetadata;\n }\n get response() {\n return this.finalStep.response;\n }\n get request() {\n return this.finalStep.request;\n }\n get usage() {\n return this.finalStep.usage;\n }\n get totalUsage() {\n return this.steps.reduce(\n (totalUsage, step) => {\n return addLanguageModelUsage(totalUsage, step.usage);\n },\n {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0,\n reasoningTokens: void 0,\n cachedInputTokens: void 0\n }\n );\n }\n get experimental_output() {\n if (this.resolvedOutput == null) {\n throw new NoOutputSpecifiedError();\n }\n return this.resolvedOutput;\n }\n};\nfunction asToolCalls(content) {\n const parts = content.filter(\n (part) => part.type === \"tool-call\"\n );\n if (parts.length === 0) {\n return void 0;\n }\n return parts.map((toolCall) => ({\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input\n }));\n}\nfunction asContent({\n content,\n toolCalls,\n toolOutputs\n}) {\n return [\n ...content.map((part) => {\n switch (part.type) {\n case \"text\":\n case \"reasoning\":\n case \"source\":\n return part;\n case \"file\": {\n return {\n type: \"file\",\n file: new DefaultGeneratedFile(part)\n };\n }\n case \"tool-call\": {\n return toolCalls.find(\n (toolCall) => toolCall.toolCallId === part.toolCallId\n );\n }\n case \"tool-result\": {\n const toolCall = toolCalls.find(\n (toolCall2) => toolCall2.toolCallId === part.toolCallId\n );\n if (toolCall == null) {\n throw new Error(`Tool call ${part.toolCallId} not found.`);\n }\n if (part.isError) {\n return {\n type: \"tool-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: toolCall.input,\n error: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic\n };\n }\n return {\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: toolCall.input,\n output: part.result,\n providerExecuted: true,\n dynamic: toolCall.dynamic\n };\n }\n }\n }),\n ...toolOutputs\n ];\n}\n\n// src/generate-text/stream-text.ts\nimport {\n getErrorMessage as getErrorMessage7\n} from \"@ai-sdk/provider\";\nimport {\n createIdGenerator as createIdGenerator2,\n isAbortError as isAbortError2\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/prepare-headers.ts\nfunction prepareHeaders(headers, defaultHeaders) {\n const responseHeaders = new Headers(headers != null ? headers : {});\n for (const [key, value] of Object.entries(defaultHeaders)) {\n if (!responseHeaders.has(key)) {\n responseHeaders.set(key, value);\n }\n }\n return responseHeaders;\n}\n\n// src/text-stream/create-text-stream-response.ts\nfunction createTextStreamResponse({\n status,\n statusText,\n headers,\n textStream\n}) {\n return new Response(textStream.pipeThrough(new TextEncoderStream()), {\n status: status != null ? status : 200,\n statusText,\n headers: prepareHeaders(headers, {\n \"content-type\": \"text/plain; charset=utf-8\"\n })\n });\n}\n\n// src/util/write-to-server-response.ts\nfunction writeToServerResponse({\n response,\n status,\n statusText,\n headers,\n stream\n}) {\n response.writeHead(status != null ? status : 200, statusText, headers);\n const reader = stream.getReader();\n const read = async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n response.write(value);\n }\n } catch (error) {\n throw error;\n } finally {\n response.end();\n }\n };\n read();\n}\n\n// src/text-stream/pipe-text-stream-to-response.ts\nfunction pipeTextStreamToResponse({\n response,\n status,\n statusText,\n headers,\n textStream\n}) {\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, {\n \"content-type\": \"text/plain; charset=utf-8\"\n }).entries()\n ),\n stream: textStream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/ui-message-stream/json-to-sse-transform-stream.ts\nvar JsonToSseTransformStream = class extends TransformStream {\n constructor() {\n super({\n transform(part, controller) {\n controller.enqueue(`data: ${JSON.stringify(part)}\n\n`);\n },\n flush(controller) {\n controller.enqueue(\"data: [DONE]\\n\\n\");\n }\n });\n }\n};\n\n// src/ui-message-stream/ui-message-stream-headers.ts\nvar UI_MESSAGE_STREAM_HEADERS = {\n \"content-type\": \"text/event-stream\",\n \"cache-control\": \"no-cache\",\n connection: \"keep-alive\",\n \"x-vercel-ai-ui-message-stream\": \"v1\",\n \"x-accel-buffering\": \"no\"\n // disable nginx buffering\n};\n\n// src/ui-message-stream/create-ui-message-stream-response.ts\nfunction createUIMessageStreamResponse({\n status,\n statusText,\n headers,\n stream,\n consumeSseStream\n}) {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 });\n }\n return new Response(sseStream.pipeThrough(new TextEncoderStream()), {\n status,\n statusText,\n headers: prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS)\n });\n}\n\n// src/ui-message-stream/get-response-ui-message-id.ts\nfunction getResponseUIMessageId({\n originalMessages,\n responseMessageId\n}) {\n if (originalMessages == null) {\n return void 0;\n }\n const lastMessage = originalMessages[originalMessages.length - 1];\n return (lastMessage == null ? void 0 : lastMessage.role) === \"assistant\" ? lastMessage.id : typeof responseMessageId === \"function\" ? responseMessageId() : responseMessageId;\n}\n\n// src/ui/process-ui-message-stream.ts\nimport {\n validateTypes\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui-message-stream/ui-message-chunks.ts\nimport { z as z7 } from \"zod/v4\";\nvar uiMessageChunkSchema = z7.union([\n z7.strictObject({\n type: z7.literal(\"text-start\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"text-delta\"),\n id: z7.string(),\n delta: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"text-end\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"error\"),\n errorText: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-start\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-delta\"),\n toolCallId: z7.string(),\n inputTextDelta: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-available\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-input-error\"),\n toolCallId: z7.string(),\n toolName: z7.string(),\n input: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n providerMetadata: providerMetadataSchema.optional(),\n dynamic: z7.boolean().optional(),\n errorText: z7.string()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-output-available\"),\n toolCallId: z7.string(),\n output: z7.unknown(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional(),\n preliminary: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"tool-output-error\"),\n toolCallId: z7.string(),\n errorText: z7.string(),\n providerExecuted: z7.boolean().optional(),\n dynamic: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning\"),\n text: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-start\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-delta\"),\n id: z7.string(),\n delta: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-end\"),\n id: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"reasoning-part-finish\")\n }),\n z7.strictObject({\n type: z7.literal(\"source-url\"),\n sourceId: z7.string(),\n url: z7.string(),\n title: z7.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"source-document\"),\n sourceId: z7.string(),\n mediaType: z7.string(),\n title: z7.string(),\n filename: z7.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.literal(\"file\"),\n url: z7.string(),\n mediaType: z7.string(),\n providerMetadata: providerMetadataSchema.optional()\n }),\n z7.strictObject({\n type: z7.string().startsWith(\"data-\"),\n id: z7.string().optional(),\n data: z7.unknown(),\n transient: z7.boolean().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"start-step\")\n }),\n z7.strictObject({\n type: z7.literal(\"finish-step\")\n }),\n z7.strictObject({\n type: z7.literal(\"start\"),\n messageId: z7.string().optional(),\n messageMetadata: z7.unknown().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"finish\"),\n messageMetadata: z7.unknown().optional()\n }),\n z7.strictObject({\n type: z7.literal(\"abort\")\n }),\n z7.strictObject({\n type: z7.literal(\"message-metadata\"),\n messageMetadata: z7.unknown()\n })\n]);\nfunction isDataUIMessageChunk(chunk) {\n return chunk.type.startsWith(\"data-\");\n}\n\n// src/util/merge-objects.ts\nfunction mergeObjects(base, overrides) {\n if (base === void 0 && overrides === void 0) {\n return void 0;\n }\n if (base === void 0) {\n return overrides;\n }\n if (overrides === void 0) {\n return base;\n }\n const result = { ...base };\n for (const key in overrides) {\n if (Object.prototype.hasOwnProperty.call(overrides, key)) {\n const overridesValue = overrides[key];\n if (overridesValue === void 0)\n continue;\n const baseValue = key in base ? base[key] : void 0;\n const isSourceObject = overridesValue !== null && typeof overridesValue === \"object\" && !Array.isArray(overridesValue) && !(overridesValue instanceof Date) && !(overridesValue instanceof RegExp);\n const isTargetObject = baseValue !== null && baseValue !== void 0 && typeof baseValue === \"object\" && !Array.isArray(baseValue) && !(baseValue instanceof Date) && !(baseValue instanceof RegExp);\n if (isSourceObject && isTargetObject) {\n result[key] = mergeObjects(\n baseValue,\n overridesValue\n );\n } else {\n result[key] = overridesValue;\n }\n }\n }\n return result;\n}\n\n// src/util/parse-partial-json.ts\nimport { safeParseJSON as safeParseJSON2 } from \"@ai-sdk/provider-utils\";\n\n// src/util/fix-json.ts\nfunction fixJson(input) {\n const stack = [\"ROOT\"];\n let lastValidIndex = -1;\n let literalStart = null;\n function processValueStart(char, i, swapState) {\n {\n switch (char) {\n case '\"': {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_STRING\");\n break;\n }\n case \"f\":\n case \"t\":\n case \"n\": {\n lastValidIndex = i;\n literalStart = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_LITERAL\");\n break;\n }\n case \"-\": {\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n break;\n }\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_NUMBER\");\n break;\n }\n case \"{\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_OBJECT_START\");\n break;\n }\n case \"[\": {\n lastValidIndex = i;\n stack.pop();\n stack.push(swapState);\n stack.push(\"INSIDE_ARRAY_START\");\n break;\n }\n }\n }\n }\n function processAfterObjectValue(char, i) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_COMMA\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n function processAfterArrayValue(char, i) {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n }\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n const currentState = stack[stack.length - 1];\n switch (currentState) {\n case \"ROOT\":\n processValueStart(char, i, \"FINISH\");\n break;\n case \"INSIDE_OBJECT_START\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n break;\n }\n case \"}\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_AFTER_COMMA\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_KEY\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_KEY\": {\n switch (char) {\n case '\"': {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_AFTER_KEY\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_AFTER_KEY\": {\n switch (char) {\n case \":\": {\n stack.pop();\n stack.push(\"INSIDE_OBJECT_BEFORE_VALUE\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_OBJECT_BEFORE_VALUE\": {\n processValueStart(char, i, \"INSIDE_OBJECT_AFTER_VALUE\");\n break;\n }\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n processAfterObjectValue(char, i);\n break;\n }\n case \"INSIDE_STRING\": {\n switch (char) {\n case '\"': {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n case \"\\\\\": {\n stack.push(\"INSIDE_STRING_ESCAPE\");\n break;\n }\n default: {\n lastValidIndex = i;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_START\": {\n switch (char) {\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n default: {\n lastValidIndex = i;\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n switch (char) {\n case \",\": {\n stack.pop();\n stack.push(\"INSIDE_ARRAY_AFTER_COMMA\");\n break;\n }\n case \"]\": {\n lastValidIndex = i;\n stack.pop();\n break;\n }\n default: {\n lastValidIndex = i;\n break;\n }\n }\n break;\n }\n case \"INSIDE_ARRAY_AFTER_COMMA\": {\n processValueStart(char, i, \"INSIDE_ARRAY_AFTER_VALUE\");\n break;\n }\n case \"INSIDE_STRING_ESCAPE\": {\n stack.pop();\n lastValidIndex = i;\n break;\n }\n case \"INSIDE_NUMBER\": {\n switch (char) {\n case \"0\":\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\": {\n lastValidIndex = i;\n break;\n }\n case \"e\":\n case \"E\":\n case \"-\":\n case \".\": {\n break;\n }\n case \",\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n break;\n }\n case \"}\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n }\n break;\n }\n case \"]\": {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n break;\n }\n default: {\n stack.pop();\n break;\n }\n }\n break;\n }\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart, i + 1);\n if (!\"false\".startsWith(partialLiteral) && !\"true\".startsWith(partialLiteral) && !\"null\".startsWith(partialLiteral)) {\n stack.pop();\n if (stack[stack.length - 1] === \"INSIDE_OBJECT_AFTER_VALUE\") {\n processAfterObjectValue(char, i);\n } else if (stack[stack.length - 1] === \"INSIDE_ARRAY_AFTER_VALUE\") {\n processAfterArrayValue(char, i);\n }\n } else {\n lastValidIndex = i;\n }\n break;\n }\n }\n }\n let result = input.slice(0, lastValidIndex + 1);\n for (let i = stack.length - 1; i >= 0; i--) {\n const state = stack[i];\n switch (state) {\n case \"INSIDE_STRING\": {\n result += '\"';\n break;\n }\n case \"INSIDE_OBJECT_KEY\":\n case \"INSIDE_OBJECT_AFTER_KEY\":\n case \"INSIDE_OBJECT_AFTER_COMMA\":\n case \"INSIDE_OBJECT_START\":\n case \"INSIDE_OBJECT_BEFORE_VALUE\":\n case \"INSIDE_OBJECT_AFTER_VALUE\": {\n result += \"}\";\n break;\n }\n case \"INSIDE_ARRAY_START\":\n case \"INSIDE_ARRAY_AFTER_COMMA\":\n case \"INSIDE_ARRAY_AFTER_VALUE\": {\n result += \"]\";\n break;\n }\n case \"INSIDE_LITERAL\": {\n const partialLiteral = input.substring(literalStart, input.length);\n if (\"true\".startsWith(partialLiteral)) {\n result += \"true\".slice(partialLiteral.length);\n } else if (\"false\".startsWith(partialLiteral)) {\n result += \"false\".slice(partialLiteral.length);\n } else if (\"null\".startsWith(partialLiteral)) {\n result += \"null\".slice(partialLiteral.length);\n }\n }\n }\n }\n return result;\n}\n\n// src/util/parse-partial-json.ts\nasync function parsePartialJson(jsonText) {\n if (jsonText === void 0) {\n return { value: void 0, state: \"undefined-input\" };\n }\n let result = await safeParseJSON2({ text: jsonText });\n if (result.success) {\n return { value: result.value, state: \"successful-parse\" };\n }\n result = await safeParseJSON2({ text: fixJson(jsonText) });\n if (result.success) {\n return { value: result.value, state: \"repaired-parse\" };\n }\n return { value: void 0, state: \"failed-parse\" };\n}\n\n// src/ui/ui-messages.ts\nfunction isToolUIPart(part) {\n return part.type.startsWith(\"tool-\");\n}\nfunction isDynamicToolUIPart(part) {\n return part.type === \"dynamic-tool\";\n}\nfunction isToolOrDynamicToolUIPart(part) {\n return isToolUIPart(part) || isDynamicToolUIPart(part);\n}\nfunction getToolName(part) {\n return part.type.split(\"-\").slice(1).join(\"-\");\n}\nfunction getToolOrDynamicToolName(part) {\n return isDynamicToolUIPart(part) ? part.toolName : getToolName(part);\n}\n\n// src/ui/process-ui-message-stream.ts\nfunction createStreamingUIMessageState({\n lastMessage,\n messageId\n}) {\n return {\n message: (lastMessage == null ? void 0 : lastMessage.role) === \"assistant\" ? lastMessage : {\n id: messageId,\n metadata: void 0,\n role: \"assistant\",\n parts: []\n },\n activeTextParts: {},\n activeReasoningParts: {},\n partialToolCalls: {}\n };\n}\nfunction processUIMessageStream({\n stream,\n messageMetadataSchema,\n dataPartSchemas,\n runUpdateMessageJob,\n onError,\n onToolCall,\n onData\n}) {\n return stream.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n await runUpdateMessageJob(async ({ state, write }) => {\n var _a17, _b, _c, _d;\n function getToolInvocation(toolCallId) {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n const toolInvocation = toolInvocations.find(\n (invocation) => invocation.toolCallId === toolCallId\n );\n if (toolInvocation == null) {\n throw new Error(\n \"tool-output-error must be preceded by a tool-input-available\"\n );\n }\n return toolInvocation;\n }\n function getDynamicToolInvocation(toolCallId) {\n const toolInvocations = state.message.parts.filter(\n (part) => part.type === \"dynamic-tool\"\n );\n const toolInvocation = toolInvocations.find(\n (invocation) => invocation.toolCallId === toolCallId\n );\n if (toolInvocation == null) {\n throw new Error(\n \"tool-output-error must be preceded by a tool-input-available\"\n );\n }\n return toolInvocation;\n }\n function updateToolPart(options) {\n var _a18;\n const part = state.message.parts.find(\n (part2) => isToolUIPart(part2) && part2.toolCallId === options.toolCallId\n );\n const anyOptions = options;\n const anyPart = part;\n if (part != null) {\n part.state = options.state;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = anyOptions.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n anyPart.providerExecuted = (_a18 = anyOptions.providerExecuted) != null ? _a18 : part.providerExecuted;\n if (anyOptions.providerMetadata != null && part.state === \"input-available\") {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: `tool-${options.toolName}`,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n rawInput: anyOptions.rawInput,\n errorText: anyOptions.errorText,\n providerExecuted: anyOptions.providerExecuted,\n preliminary: anyOptions.preliminary,\n ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n function updateDynamicToolPart(options) {\n var _a18;\n const part = state.message.parts.find(\n (part2) => part2.type === \"dynamic-tool\" && part2.toolCallId === options.toolCallId\n );\n const anyOptions = options;\n const anyPart = part;\n if (part != null) {\n part.state = options.state;\n anyPart.toolName = options.toolName;\n anyPart.input = anyOptions.input;\n anyPart.output = anyOptions.output;\n anyPart.errorText = anyOptions.errorText;\n anyPart.rawInput = (_a18 = anyOptions.rawInput) != null ? _a18 : anyPart.rawInput;\n anyPart.preliminary = anyOptions.preliminary;\n if (anyOptions.providerMetadata != null && part.state === \"input-available\") {\n part.callProviderMetadata = anyOptions.providerMetadata;\n }\n } else {\n state.message.parts.push({\n type: \"dynamic-tool\",\n toolName: options.toolName,\n toolCallId: options.toolCallId,\n state: options.state,\n input: anyOptions.input,\n output: anyOptions.output,\n errorText: anyOptions.errorText,\n preliminary: anyOptions.preliminary,\n ...anyOptions.providerMetadata != null ? { callProviderMetadata: anyOptions.providerMetadata } : {}\n });\n }\n }\n async function updateMessageMetadata(metadata) {\n if (metadata != null) {\n const mergedMetadata = state.message.metadata != null ? mergeObjects(state.message.metadata, metadata) : metadata;\n if (messageMetadataSchema != null) {\n await validateTypes({\n value: mergedMetadata,\n schema: messageMetadataSchema\n });\n }\n state.message.metadata = mergedMetadata;\n }\n }\n switch (chunk.type) {\n case \"text-start\": {\n const textPart = {\n type: \"text\",\n text: \"\",\n providerMetadata: chunk.providerMetadata,\n state: \"streaming\"\n };\n state.activeTextParts[chunk.id] = textPart;\n state.message.parts.push(textPart);\n write();\n break;\n }\n case \"text-delta\": {\n const textPart = state.activeTextParts[chunk.id];\n textPart.text += chunk.delta;\n textPart.providerMetadata = (_a17 = chunk.providerMetadata) != null ? _a17 : textPart.providerMetadata;\n write();\n break;\n }\n case \"text-end\": {\n const textPart = state.activeTextParts[chunk.id];\n textPart.state = \"done\";\n textPart.providerMetadata = (_b = chunk.providerMetadata) != null ? _b : textPart.providerMetadata;\n delete state.activeTextParts[chunk.id];\n write();\n break;\n }\n case \"reasoning-start\": {\n const reasoningPart = {\n type: \"reasoning\",\n text: \"\",\n providerMetadata: chunk.providerMetadata,\n state: \"streaming\"\n };\n state.activeReasoningParts[chunk.id] = reasoningPart;\n state.message.parts.push(reasoningPart);\n write();\n break;\n }\n case \"reasoning-delta\": {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.text += chunk.delta;\n reasoningPart.providerMetadata = (_c = chunk.providerMetadata) != null ? _c : reasoningPart.providerMetadata;\n write();\n break;\n }\n case \"reasoning-end\": {\n const reasoningPart = state.activeReasoningParts[chunk.id];\n reasoningPart.providerMetadata = (_d = chunk.providerMetadata) != null ? _d : reasoningPart.providerMetadata;\n reasoningPart.state = \"done\";\n delete state.activeReasoningParts[chunk.id];\n write();\n break;\n }\n case \"file\": {\n state.message.parts.push({\n type: \"file\",\n mediaType: chunk.mediaType,\n url: chunk.url\n });\n write();\n break;\n }\n case \"source-url\": {\n state.message.parts.push({\n type: \"source-url\",\n sourceId: chunk.sourceId,\n url: chunk.url,\n title: chunk.title,\n providerMetadata: chunk.providerMetadata\n });\n write();\n break;\n }\n case \"source-document\": {\n state.message.parts.push({\n type: \"source-document\",\n sourceId: chunk.sourceId,\n mediaType: chunk.mediaType,\n title: chunk.title,\n filename: chunk.filename,\n providerMetadata: chunk.providerMetadata\n });\n write();\n break;\n }\n case \"tool-input-start\": {\n const toolInvocations = state.message.parts.filter(isToolUIPart);\n state.partialToolCalls[chunk.toolCallId] = {\n text: \"\",\n toolName: chunk.toolName,\n index: toolInvocations.length,\n dynamic: chunk.dynamic\n };\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-streaming\",\n input: void 0\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-streaming\",\n input: void 0,\n providerExecuted: chunk.providerExecuted\n });\n }\n write();\n break;\n }\n case \"tool-input-delta\": {\n const partialToolCall = state.partialToolCalls[chunk.toolCallId];\n partialToolCall.text += chunk.inputTextDelta;\n const { value: partialArgs } = await parsePartialJson(\n partialToolCall.text\n );\n if (partialToolCall.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: partialToolCall.toolName,\n state: \"input-streaming\",\n input: partialArgs\n });\n }\n write();\n break;\n }\n case \"tool-input-available\": {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-available\",\n input: chunk.input,\n providerMetadata: chunk.providerMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"input-available\",\n input: chunk.input,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n if (onToolCall && !chunk.providerExecuted) {\n await onToolCall({\n toolCall: chunk\n });\n }\n break;\n }\n case \"tool-input-error\": {\n if (chunk.dynamic) {\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"output-error\",\n input: chunk.input,\n errorText: chunk.errorText,\n providerMetadata: chunk.providerMetadata\n });\n } else {\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: chunk.toolName,\n state: \"output-error\",\n input: void 0,\n rawInput: chunk.input,\n errorText: chunk.errorText,\n providerExecuted: chunk.providerExecuted,\n providerMetadata: chunk.providerMetadata\n });\n }\n write();\n break;\n }\n case \"tool-output-available\": {\n if (chunk.dynamic) {\n const toolInvocation = getDynamicToolInvocation(\n chunk.toolCallId\n );\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n preliminary: chunk.preliminary\n });\n } else {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getToolName(toolInvocation),\n state: \"output-available\",\n input: toolInvocation.input,\n output: chunk.output,\n providerExecuted: chunk.providerExecuted,\n preliminary: chunk.preliminary\n });\n }\n write();\n break;\n }\n case \"tool-output-error\": {\n if (chunk.dynamic) {\n const toolInvocation = getDynamicToolInvocation(\n chunk.toolCallId\n );\n updateDynamicToolPart({\n toolCallId: chunk.toolCallId,\n toolName: toolInvocation.toolName,\n state: \"output-error\",\n input: toolInvocation.input,\n errorText: chunk.errorText\n });\n } else {\n const toolInvocation = getToolInvocation(chunk.toolCallId);\n updateToolPart({\n toolCallId: chunk.toolCallId,\n toolName: getToolName(toolInvocation),\n state: \"output-error\",\n input: toolInvocation.input,\n rawInput: toolInvocation.rawInput,\n errorText: chunk.errorText\n });\n }\n write();\n break;\n }\n case \"start-step\": {\n state.message.parts.push({ type: \"step-start\" });\n break;\n }\n case \"finish-step\": {\n state.activeTextParts = {};\n state.activeReasoningParts = {};\n break;\n }\n case \"start\": {\n if (chunk.messageId != null) {\n state.message.id = chunk.messageId;\n }\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageId != null || chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"finish\": {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"message-metadata\": {\n await updateMessageMetadata(chunk.messageMetadata);\n if (chunk.messageMetadata != null) {\n write();\n }\n break;\n }\n case \"error\": {\n onError == null ? void 0 : onError(new Error(chunk.errorText));\n break;\n }\n default: {\n if (isDataUIMessageChunk(chunk)) {\n if ((dataPartSchemas == null ? void 0 : dataPartSchemas[chunk.type]) != null) {\n await validateTypes({\n value: chunk.data,\n schema: dataPartSchemas[chunk.type]\n });\n }\n const dataChunk = chunk;\n if (dataChunk.transient) {\n onData == null ? void 0 : onData(dataChunk);\n break;\n }\n const existingUIPart = dataChunk.id != null ? state.message.parts.find(\n (chunkArg) => dataChunk.type === chunkArg.type && dataChunk.id === chunkArg.id\n ) : void 0;\n if (existingUIPart != null) {\n existingUIPart.data = dataChunk.data;\n } else {\n state.message.parts.push(dataChunk);\n }\n onData == null ? void 0 : onData(dataChunk);\n write();\n }\n }\n }\n controller.enqueue(chunk);\n });\n }\n })\n );\n}\n\n// src/ui-message-stream/handle-ui-message-stream-finish.ts\nfunction handleUIMessageStreamFinish({\n messageId,\n originalMessages = [],\n onFinish,\n onError,\n stream\n}) {\n let lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];\n if ((lastMessage == null ? void 0 : lastMessage.role) !== \"assistant\") {\n lastMessage = void 0;\n } else {\n messageId = lastMessage.id;\n }\n let isAborted = false;\n const idInjectedStream = stream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk.type === \"start\") {\n const startChunk = chunk;\n if (startChunk.messageId == null && messageId != null) {\n startChunk.messageId = messageId;\n }\n }\n if (chunk.type === \"abort\") {\n isAborted = true;\n }\n controller.enqueue(chunk);\n }\n })\n );\n if (onFinish == null) {\n return idInjectedStream;\n }\n const state = createStreamingUIMessageState({\n lastMessage: lastMessage ? structuredClone(lastMessage) : void 0,\n messageId: messageId != null ? messageId : \"\"\n // will be overridden by the stream\n });\n const runUpdateMessageJob = async (job) => {\n await job({ state, write: () => {\n } });\n };\n let finishCalled = false;\n const callOnFinish = async () => {\n if (finishCalled || !onFinish) {\n return;\n }\n finishCalled = true;\n const isContinuation = state.message.id === (lastMessage == null ? void 0 : lastMessage.id);\n await onFinish({\n isAborted,\n isContinuation,\n responseMessage: state.message,\n messages: [\n ...isContinuation ? originalMessages.slice(0, -1) : originalMessages,\n state.message\n ]\n });\n };\n return processUIMessageStream({\n stream: idInjectedStream,\n runUpdateMessageJob,\n onError\n }).pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n },\n // @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility\n async cancel() {\n await callOnFinish();\n },\n async flush() {\n await callOnFinish();\n }\n })\n );\n}\n\n// src/ui-message-stream/pipe-ui-message-stream-to-response.ts\nfunction pipeUIMessageStreamToResponse({\n response,\n status,\n statusText,\n headers,\n stream,\n consumeSseStream\n}) {\n let sseStream = stream.pipeThrough(new JsonToSseTransformStream());\n if (consumeSseStream) {\n const [stream1, stream2] = sseStream.tee();\n sseStream = stream1;\n consumeSseStream({ stream: stream2 });\n }\n writeToServerResponse({\n response,\n status,\n statusText,\n headers: Object.fromEntries(\n prepareHeaders(headers, UI_MESSAGE_STREAM_HEADERS).entries()\n ),\n stream: sseStream.pipeThrough(new TextEncoderStream())\n });\n}\n\n// src/util/async-iterable-stream.ts\nfunction createAsyncIterableStream(source) {\n const stream = source.pipeThrough(new TransformStream());\n stream[Symbol.asyncIterator] = function() {\n const reader = this.getReader();\n let finished = false;\n async function cleanup(cancelStream) {\n var _a17;\n finished = true;\n try {\n if (cancelStream) {\n await ((_a17 = reader.cancel) == null ? void 0 : _a17.call(reader));\n }\n } finally {\n try {\n reader.releaseLock();\n } catch (e) {\n }\n }\n }\n return {\n /**\n * Reads the next chunk from the stream.\n * @returns A promise resolving to the next IteratorResult.\n */\n async next() {\n if (finished) {\n return { done: true, value: void 0 };\n }\n const { done, value } = await reader.read();\n if (done) {\n await cleanup(true);\n return { done: true, value: void 0 };\n }\n return { done: false, value };\n },\n /**\n * Called on early exit (e.g., break from for-await).\n * Ensures the stream is cancelled and resources are released.\n * @returns A promise resolving to a completed IteratorResult.\n */\n async return() {\n await cleanup(true);\n return { done: true, value: void 0 };\n },\n /**\n * Called on early exit with error.\n * Ensures the stream is cancelled and resources are released, then rethrows the error.\n * @param err The error to throw.\n * @returns A promise that rejects with the provided error.\n */\n async throw(err) {\n await cleanup(true);\n throw err;\n }\n };\n };\n return stream;\n}\n\n// src/util/consume-stream.ts\nasync function consumeStream({\n stream,\n onError\n}) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done } = await reader.read();\n if (done)\n break;\n }\n } catch (error) {\n onError == null ? void 0 : onError(error);\n } finally {\n reader.releaseLock();\n }\n}\n\n// src/util/create-resolvable-promise.ts\nfunction createResolvablePromise() {\n let resolve2;\n let reject;\n const promise = new Promise((res, rej) => {\n resolve2 = res;\n reject = rej;\n });\n return {\n promise,\n resolve: resolve2,\n reject\n };\n}\n\n// src/util/create-stitchable-stream.ts\nfunction createStitchableStream() {\n let innerStreamReaders = [];\n let controller = null;\n let isClosed = false;\n let waitForNewStream = createResolvablePromise();\n const terminate = () => {\n isClosed = true;\n waitForNewStream.resolve();\n innerStreamReaders.forEach((reader) => reader.cancel());\n innerStreamReaders = [];\n controller == null ? void 0 : controller.close();\n };\n const processPull = async () => {\n if (isClosed && innerStreamReaders.length === 0) {\n controller == null ? void 0 : controller.close();\n return;\n }\n if (innerStreamReaders.length === 0) {\n waitForNewStream = createResolvablePromise();\n await waitForNewStream.promise;\n return processPull();\n }\n try {\n const { value, done } = await innerStreamReaders[0].read();\n if (done) {\n innerStreamReaders.shift();\n if (innerStreamReaders.length > 0) {\n await processPull();\n } else if (isClosed) {\n controller == null ? void 0 : controller.close();\n }\n } else {\n controller == null ? void 0 : controller.enqueue(value);\n }\n } catch (error) {\n controller == null ? void 0 : controller.error(error);\n innerStreamReaders.shift();\n terminate();\n }\n };\n return {\n stream: new ReadableStream({\n start(controllerParam) {\n controller = controllerParam;\n },\n pull: processPull,\n async cancel() {\n for (const reader of innerStreamReaders) {\n await reader.cancel();\n }\n innerStreamReaders = [];\n isClosed = true;\n }\n }),\n addStream: (innerStream) => {\n if (isClosed) {\n throw new Error(\"Cannot add inner stream: outer stream is closed\");\n }\n innerStreamReaders.push(innerStream.getReader());\n waitForNewStream.resolve();\n },\n /**\n * Gracefully close the outer stream. This will let the inner streams\n * finish processing and then close the outer stream.\n */\n close: () => {\n isClosed = true;\n waitForNewStream.resolve();\n if (innerStreamReaders.length === 0) {\n controller == null ? void 0 : controller.close();\n }\n },\n /**\n * Immediately close the outer stream. This will cancel all inner streams\n * and close the outer stream.\n */\n terminate\n };\n}\n\n// src/util/delayed-promise.ts\nvar DelayedPromise = class {\n constructor() {\n this.status = { type: \"pending\" };\n this._resolve = void 0;\n this._reject = void 0;\n }\n get promise() {\n if (this._promise) {\n return this._promise;\n }\n this._promise = new Promise((resolve2, reject) => {\n if (this.status.type === \"resolved\") {\n resolve2(this.status.value);\n } else if (this.status.type === \"rejected\") {\n reject(this.status.error);\n }\n this._resolve = resolve2;\n this._reject = reject;\n });\n return this._promise;\n }\n resolve(value) {\n var _a17;\n this.status = { type: \"resolved\", value };\n if (this._promise) {\n (_a17 = this._resolve) == null ? void 0 : _a17.call(this, value);\n }\n }\n reject(error) {\n var _a17;\n this.status = { type: \"rejected\", error };\n if (this._promise) {\n (_a17 = this._reject) == null ? void 0 : _a17.call(this, error);\n }\n }\n};\n\n// src/util/now.ts\nfunction now() {\n var _a17, _b;\n return (_b = (_a17 = globalThis == null ? void 0 : globalThis.performance) == null ? void 0 : _a17.now()) != null ? _b : Date.now();\n}\n\n// src/generate-text/run-tools-transformation.ts\nimport {\n executeTool as executeTool2,\n generateId,\n getErrorMessage as getErrorMessage6\n} from \"@ai-sdk/provider-utils\";\nfunction runToolsTransformation({\n tools,\n generatorStream,\n tracer,\n telemetry,\n system,\n messages,\n abortSignal,\n repairToolCall,\n experimental_context\n}) {\n let toolResultsStreamController = null;\n const toolResultsStream = new ReadableStream({\n start(controller) {\n toolResultsStreamController = controller;\n }\n });\n const outstandingToolResults = /* @__PURE__ */ new Set();\n const toolInputs = /* @__PURE__ */ new Map();\n let canClose = false;\n let finishChunk = void 0;\n function attemptClose() {\n if (canClose && outstandingToolResults.size === 0) {\n if (finishChunk != null) {\n toolResultsStreamController.enqueue(finishChunk);\n }\n toolResultsStreamController.close();\n }\n }\n const forwardStream = new TransformStream({\n async transform(chunk, controller) {\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"stream-start\":\n case \"text-start\":\n case \"text-delta\":\n case \"text-end\":\n case \"reasoning-start\":\n case \"reasoning-delta\":\n case \"reasoning-end\":\n case \"tool-input-start\":\n case \"tool-input-delta\":\n case \"tool-input-end\":\n case \"source\":\n case \"response-metadata\":\n case \"error\":\n case \"raw\": {\n controller.enqueue(chunk);\n break;\n }\n case \"file\": {\n controller.enqueue({\n type: \"file\",\n file: new DefaultGeneratedFileWithType({\n data: chunk.data,\n mediaType: chunk.mediaType\n })\n });\n break;\n }\n case \"finish\": {\n finishChunk = {\n type: \"finish\",\n finishReason: chunk.finishReason,\n usage: chunk.usage,\n providerMetadata: chunk.providerMetadata\n };\n break;\n }\n case \"tool-call\": {\n try {\n const toolCall = await parseToolCall({\n toolCall: chunk,\n tools,\n repairToolCall,\n system,\n messages\n });\n controller.enqueue(toolCall);\n if (toolCall.invalid) {\n toolResultsStreamController.enqueue({\n type: \"tool-error\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.input,\n error: getErrorMessage6(toolCall.error),\n dynamic: true\n });\n break;\n }\n const tool3 = tools[toolCall.toolName];\n toolInputs.set(toolCall.toolCallId, toolCall.input);\n if (tool3.onInputAvailable != null) {\n await tool3.onInputAvailable({\n input: toolCall.input,\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context\n });\n }\n if (tool3.execute != null && toolCall.providerExecuted !== true) {\n const toolExecutionId = generateId();\n outstandingToolResults.add(toolExecutionId);\n recordSpan({\n name: \"ai.toolCall\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.toolCall\",\n telemetry\n }),\n \"ai.toolCall.name\": toolCall.toolName,\n \"ai.toolCall.id\": toolCall.toolCallId,\n \"ai.toolCall.args\": {\n output: () => JSON.stringify(toolCall.input)\n }\n }\n }),\n tracer,\n fn: async (span) => {\n let output;\n try {\n const stream = executeTool2({\n execute: tool3.execute.bind(tool3),\n input: toolCall.input,\n options: {\n toolCallId: toolCall.toolCallId,\n messages,\n abortSignal,\n experimental_context\n }\n });\n for await (const part of stream) {\n toolResultsStreamController.enqueue({\n ...toolCall,\n type: \"tool-result\",\n output: part.output,\n ...part.type === \"preliminary\" && {\n preliminary: true\n }\n });\n if (part.type === \"final\") {\n output = part.output;\n }\n }\n } catch (error) {\n recordErrorOnSpan(span, error);\n toolResultsStreamController.enqueue({\n ...toolCall,\n type: \"tool-error\",\n error\n });\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n return;\n }\n outstandingToolResults.delete(toolExecutionId);\n attemptClose();\n try {\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.toolCall.result\": {\n output: () => JSON.stringify(output)\n }\n }\n })\n );\n } catch (ignored) {\n }\n }\n });\n }\n } catch (error) {\n toolResultsStreamController.enqueue({ type: \"error\", error });\n }\n break;\n }\n case \"tool-result\": {\n const toolName = chunk.toolName;\n if (chunk.isError) {\n toolResultsStreamController.enqueue({\n type: \"tool-error\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n providerExecuted: chunk.providerExecuted,\n error: chunk.result\n });\n } else {\n controller.enqueue({\n type: \"tool-result\",\n toolCallId: chunk.toolCallId,\n toolName,\n input: toolInputs.get(chunk.toolCallId),\n output: chunk.result,\n providerExecuted: chunk.providerExecuted\n });\n }\n break;\n }\n default: {\n const _exhaustiveCheck = chunkType;\n throw new Error(`Unhandled chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n flush() {\n canClose = true;\n attemptClose();\n }\n });\n return new ReadableStream({\n async start(controller) {\n return Promise.all([\n generatorStream.pipeThrough(forwardStream).pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n }\n })\n ),\n toolResultsStream.pipeTo(\n new WritableStream({\n write(chunk) {\n controller.enqueue(chunk);\n },\n close() {\n controller.close();\n }\n })\n )\n ]);\n }\n });\n}\n\n// src/generate-text/stream-text.ts\nvar originalGenerateId2 = createIdGenerator2({\n prefix: \"aitxt\",\n size: 24\n});\nfunction streamText({\n model,\n tools,\n toolChoice,\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n stopWhen = stepCountIs(1),\n experimental_output: output,\n experimental_telemetry: telemetry,\n prepareStep,\n providerOptions,\n experimental_activeTools,\n activeTools = experimental_activeTools,\n experimental_repairToolCall: repairToolCall,\n experimental_transform: transform,\n experimental_download: download2,\n includeRawChunks = false,\n onChunk,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n _internal: {\n now: now2 = now,\n generateId: generateId3 = originalGenerateId2,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n ...settings\n}) {\n return new DefaultStreamTextResult({\n model: resolveLanguageModel(model),\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms: asArray(transform),\n activeTools,\n repairToolCall,\n stopConditions: asArray(stopWhen),\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n now: now2,\n currentDate,\n generateId: generateId3,\n experimental_context,\n download: download2\n });\n}\nfunction createOutputTransformStream(output) {\n if (!output) {\n return new TransformStream({\n transform(chunk, controller) {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n }\n });\n }\n let firstTextChunkId = void 0;\n let text2 = \"\";\n let textChunk = \"\";\n let lastPublishedJson = \"\";\n function publishTextChunk({\n controller,\n partialOutput = void 0\n }) {\n controller.enqueue({\n part: {\n type: \"text-delta\",\n id: firstTextChunkId,\n text: textChunk\n },\n partialOutput\n });\n textChunk = \"\";\n }\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type === \"finish-step\" && textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n if (chunk.type !== \"text-delta\" && chunk.type !== \"text-start\" && chunk.type !== \"text-end\") {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (firstTextChunkId == null) {\n firstTextChunkId = chunk.id;\n } else if (chunk.id !== firstTextChunkId) {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (chunk.type === \"text-start\") {\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n if (chunk.type === \"text-end\") {\n if (textChunk.length > 0) {\n publishTextChunk({ controller });\n }\n controller.enqueue({ part: chunk, partialOutput: void 0 });\n return;\n }\n text2 += chunk.text;\n textChunk += chunk.text;\n const result = await output.parsePartial({ text: text2 });\n if (result != null) {\n const currentJson = JSON.stringify(result.partial);\n if (currentJson !== lastPublishedJson) {\n publishTextChunk({ controller, partialOutput: result.partial });\n lastPublishedJson = currentJson;\n }\n }\n }\n });\n}\nvar DefaultStreamTextResult = class {\n constructor({\n model,\n telemetry,\n headers,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n system,\n prompt,\n messages,\n tools,\n toolChoice,\n transforms,\n activeTools,\n repairToolCall,\n stopConditions,\n output,\n providerOptions,\n prepareStep,\n includeRawChunks,\n now: now2,\n currentDate,\n generateId: generateId3,\n onChunk,\n onError,\n onFinish,\n onAbort,\n onStepFinish,\n experimental_context,\n download: download2\n }) {\n this._totalUsage = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n this._steps = new DelayedPromise();\n this.output = output;\n this.includeRawChunks = includeRawChunks;\n this.tools = tools;\n let stepFinish;\n let recordedContent = [];\n const recordedResponseMessages = [];\n let recordedFinishReason = void 0;\n let recordedTotalUsage = void 0;\n let recordedRequest = {};\n let recordedWarnings = [];\n const recordedSteps = [];\n let rootSpan;\n let activeTextContent = {};\n let activeReasoningContent = {};\n const eventProcessor = new TransformStream({\n async transform(chunk, controller) {\n var _a17, _b, _c;\n controller.enqueue(chunk);\n const { part } = chunk;\n if (part.type === \"text-delta\" || part.type === \"reasoning-delta\" || part.type === \"source\" || part.type === \"tool-call\" || part.type === \"tool-result\" || part.type === \"tool-input-start\" || part.type === \"tool-input-delta\" || part.type === \"raw\") {\n await (onChunk == null ? void 0 : onChunk({ chunk: part }));\n }\n if (part.type === \"error\") {\n await onError({ error: wrapGatewayError(part.error) });\n }\n if (part.type === \"text-start\") {\n activeTextContent[part.id] = {\n type: \"text\",\n text: \"\",\n providerMetadata: part.providerMetadata\n };\n recordedContent.push(activeTextContent[part.id]);\n }\n if (part.type === \"text-delta\") {\n const activeText = activeTextContent[part.id];\n if (activeText == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `text part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeText.text += part.text;\n activeText.providerMetadata = (_a17 = part.providerMetadata) != null ? _a17 : activeText.providerMetadata;\n }\n if (part.type === \"text-end\") {\n delete activeTextContent[part.id];\n }\n if (part.type === \"reasoning-start\") {\n activeReasoningContent[part.id] = {\n type: \"reasoning\",\n text: \"\",\n providerMetadata: part.providerMetadata\n };\n recordedContent.push(activeReasoningContent[part.id]);\n }\n if (part.type === \"reasoning-delta\") {\n const activeReasoning = activeReasoningContent[part.id];\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `reasoning part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeReasoning.text += part.text;\n activeReasoning.providerMetadata = (_b = part.providerMetadata) != null ? _b : activeReasoning.providerMetadata;\n }\n if (part.type === \"reasoning-end\") {\n const activeReasoning = activeReasoningContent[part.id];\n if (activeReasoning == null) {\n controller.enqueue({\n part: {\n type: \"error\",\n error: `reasoning part ${part.id} not found`\n },\n partialOutput: void 0\n });\n return;\n }\n activeReasoning.providerMetadata = (_c = part.providerMetadata) != null ? _c : activeReasoning.providerMetadata;\n delete activeReasoningContent[part.id];\n }\n if (part.type === \"file\") {\n recordedContent.push({ type: \"file\", file: part.file });\n }\n if (part.type === \"source\") {\n recordedContent.push(part);\n }\n if (part.type === \"tool-call\") {\n recordedContent.push(part);\n }\n if (part.type === \"tool-result\" && !part.preliminary) {\n recordedContent.push(part);\n }\n if (part.type === \"tool-error\") {\n recordedContent.push(part);\n }\n if (part.type === \"start-step\") {\n recordedRequest = part.request;\n recordedWarnings = part.warnings;\n }\n if (part.type === \"finish-step\") {\n const stepMessages = toResponseMessages({\n content: recordedContent,\n tools\n });\n const currentStepResult = new DefaultStepResult({\n content: recordedContent,\n finishReason: part.finishReason,\n usage: part.usage,\n warnings: recordedWarnings,\n request: recordedRequest,\n response: {\n ...part.response,\n messages: [...recordedResponseMessages, ...stepMessages]\n },\n providerMetadata: part.providerMetadata\n });\n await (onStepFinish == null ? void 0 : onStepFinish(currentStepResult));\n logWarnings(recordedWarnings);\n recordedSteps.push(currentStepResult);\n recordedContent = [];\n activeReasoningContent = {};\n activeTextContent = {};\n recordedResponseMessages.push(...stepMessages);\n stepFinish.resolve();\n }\n if (part.type === \"finish\") {\n recordedTotalUsage = part.totalUsage;\n recordedFinishReason = part.finishReason;\n }\n },\n async flush(controller) {\n try {\n if (recordedSteps.length === 0) {\n const error = new NoOutputGeneratedError({\n message: \"No output generated. Check the stream for errors.\"\n });\n self._finishReason.reject(error);\n self._totalUsage.reject(error);\n self._steps.reject(error);\n return;\n }\n const finishReason = recordedFinishReason != null ? recordedFinishReason : \"unknown\";\n const totalUsage = recordedTotalUsage != null ? recordedTotalUsage : {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n self._finishReason.resolve(finishReason);\n self._totalUsage.resolve(totalUsage);\n self._steps.resolve(recordedSteps);\n const finalStep = recordedSteps[recordedSteps.length - 1];\n await (onFinish == null ? void 0 : onFinish({\n finishReason,\n totalUsage,\n usage: finalStep.usage,\n content: finalStep.content,\n text: finalStep.text,\n reasoningText: finalStep.reasoningText,\n reasoning: finalStep.reasoning,\n files: finalStep.files,\n sources: finalStep.sources,\n toolCalls: finalStep.toolCalls,\n staticToolCalls: finalStep.staticToolCalls,\n dynamicToolCalls: finalStep.dynamicToolCalls,\n toolResults: finalStep.toolResults,\n staticToolResults: finalStep.staticToolResults,\n dynamicToolResults: finalStep.dynamicToolResults,\n request: finalStep.request,\n response: finalStep.response,\n warnings: finalStep.warnings,\n providerMetadata: finalStep.providerMetadata,\n steps: recordedSteps\n }));\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.text\": { output: () => finalStep.text },\n \"ai.response.toolCalls\": {\n output: () => {\n var _a17;\n return ((_a17 = finalStep.toolCalls) == null ? void 0 : _a17.length) ? JSON.stringify(finalStep.toolCalls) : void 0;\n }\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n finalStep.providerMetadata\n ),\n \"ai.usage.inputTokens\": totalUsage.inputTokens,\n \"ai.usage.outputTokens\": totalUsage.outputTokens,\n \"ai.usage.totalTokens\": totalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": totalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": totalUsage.cachedInputTokens\n }\n })\n );\n } catch (error) {\n controller.error(error);\n } finally {\n rootSpan.end();\n }\n }\n });\n const stitchableStream = createStitchableStream();\n this.addStream = stitchableStream.addStream;\n this.closeStream = stitchableStream.close;\n const reader = stitchableStream.stream.getReader();\n let stream = new ReadableStream({\n async start(controller) {\n controller.enqueue({ type: \"start\" });\n },\n async pull(controller) {\n function abort() {\n onAbort == null ? void 0 : onAbort({ steps: recordedSteps });\n controller.enqueue({ type: \"abort\" });\n controller.close();\n }\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n return;\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n abort();\n return;\n }\n controller.enqueue(value);\n } catch (error) {\n if (isAbortError2(error) && (abortSignal == null ? void 0 : abortSignal.aborted)) {\n abort();\n } else {\n controller.error(error);\n }\n }\n },\n cancel(reason) {\n return stitchableStream.stream.cancel(reason);\n }\n });\n for (const transform of transforms) {\n stream = stream.pipeThrough(\n transform({\n tools,\n stopStream() {\n stitchableStream.terminate();\n }\n })\n );\n }\n this.baseStream = stream.pipeThrough(createOutputTransformStream(output)).pipeThrough(eventProcessor);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const tracer = getTracer(telemetry);\n const callSettings = prepareCallSettings(settings);\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries }\n });\n const self = this;\n recordSpan({\n name: \"ai.streamText\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.streamText\", telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n }\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (rootSpanArg) => {\n rootSpan = rootSpanArg;\n async function streamStep({\n currentStep,\n responseMessages,\n usage\n }) {\n var _a17, _b, _c, _d, _e;\n const includeRawChunks2 = self.includeRawChunks;\n stepFinish = new DelayedPromise();\n const initialPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const stepInputMessages = [\n ...initialPrompt.messages,\n ...responseMessages\n ];\n const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({\n model,\n steps: recordedSteps,\n stepNumber: recordedSteps.length,\n messages: stepInputMessages\n }));\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: {\n system: (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.system) != null ? _a17 : initialPrompt.system,\n messages: (_b = prepareStepResult == null ? void 0 : prepareStepResult.messages) != null ? _b : stepInputMessages\n },\n supportedUrls: await model.supportedUrls,\n download: download2\n });\n const stepModel = resolveLanguageModel(\n (_c = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _c : model\n );\n const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({\n tools,\n toolChoice: (_d = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _d : toolChoice,\n activeTools: (_e = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _e : activeTools\n });\n const {\n result: { stream: stream2, response, request },\n doStreamSpan,\n startTimestampMs\n } = await retry(\n () => recordSpan({\n name: \"ai.streamText.doStream\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamText.doStream\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // model:\n \"ai.model.provider\": stepModel.provider,\n \"ai.model.id\": stepModel.modelId,\n // prompt:\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n \"ai.prompt.tools\": {\n // convert the language model level tools:\n input: () => stepTools == null ? void 0 : stepTools.map((tool3) => JSON.stringify(tool3))\n },\n \"ai.prompt.toolChoice\": {\n input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": stepModel.provider,\n \"gen_ai.request.model\": stepModel.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.stop_sequences\": callSettings.stopSequences,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (doStreamSpan2) => {\n return {\n startTimestampMs: now2(),\n // get before the call\n doStreamSpan: doStreamSpan2,\n result: await stepModel.doStream({\n ...callSettings,\n tools: stepTools,\n toolChoice: stepToolChoice,\n responseFormat: output == null ? void 0 : output.responseFormat,\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: includeRawChunks2\n })\n };\n }\n })\n );\n const streamWithToolResults = runToolsTransformation({\n tools,\n generatorStream: stream2,\n tracer,\n telemetry,\n system,\n messages: stepInputMessages,\n repairToolCall,\n abortSignal,\n experimental_context\n });\n const stepRequest = request != null ? request : {};\n const stepToolCalls = [];\n const stepToolOutputs = [];\n let warnings;\n const activeToolCallToolNames = {};\n let stepFinishReason = \"unknown\";\n let stepUsage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n let stepProviderMetadata;\n let stepFirstChunk = true;\n let stepResponse = {\n id: generateId3(),\n timestamp: currentDate(),\n modelId: model.modelId\n };\n let activeText = \"\";\n self.addStream(\n streamWithToolResults.pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a18, _b2, _c2, _d2;\n if (chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (stepFirstChunk) {\n const msToFirstChunk = now2() - startTimestampMs;\n stepFirstChunk = false;\n doStreamSpan.addEvent(\"ai.stream.firstChunk\", {\n \"ai.response.msToFirstChunk\": msToFirstChunk\n });\n doStreamSpan.setAttributes({\n \"ai.response.msToFirstChunk\": msToFirstChunk\n });\n controller.enqueue({\n type: \"start-step\",\n request: stepRequest,\n warnings: warnings != null ? warnings : []\n });\n }\n const chunkType = chunk.type;\n switch (chunkType) {\n case \"text-start\":\n case \"text-end\": {\n controller.enqueue(chunk);\n break;\n }\n case \"text-delta\": {\n if (chunk.delta.length > 0) {\n controller.enqueue({\n type: \"text-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n activeText += chunk.delta;\n }\n break;\n }\n case \"reasoning-start\":\n case \"reasoning-end\": {\n controller.enqueue(chunk);\n break;\n }\n case \"reasoning-delta\": {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: chunk.id,\n text: chunk.delta,\n providerMetadata: chunk.providerMetadata\n });\n break;\n }\n case \"tool-call\": {\n controller.enqueue(chunk);\n stepToolCalls.push(chunk);\n break;\n }\n case \"tool-result\": {\n controller.enqueue(chunk);\n if (!chunk.preliminary) {\n stepToolOutputs.push(chunk);\n }\n break;\n }\n case \"tool-error\": {\n controller.enqueue(chunk);\n stepToolOutputs.push(chunk);\n break;\n }\n case \"response-metadata\": {\n stepResponse = {\n id: (_a18 = chunk.id) != null ? _a18 : stepResponse.id,\n timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,\n modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId\n };\n break;\n }\n case \"finish\": {\n stepUsage = chunk.usage;\n stepFinishReason = chunk.finishReason;\n stepProviderMetadata = chunk.providerMetadata;\n const msToFinish = now2() - startTimestampMs;\n doStreamSpan.addEvent(\"ai.stream.finish\");\n doStreamSpan.setAttributes({\n \"ai.response.msToFinish\": msToFinish,\n \"ai.response.avgOutputTokensPerSecond\": 1e3 * ((_d2 = stepUsage.outputTokens) != null ? _d2 : 0) / msToFinish\n });\n break;\n }\n case \"file\": {\n controller.enqueue(chunk);\n break;\n }\n case \"source\": {\n controller.enqueue(chunk);\n break;\n }\n case \"tool-input-start\": {\n activeToolCallToolNames[chunk.id] = chunk.toolName;\n const tool3 = tools == null ? void 0 : tools[chunk.toolName];\n if ((tool3 == null ? void 0 : tool3.onInputStart) != null) {\n await tool3.onInputStart({\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n controller.enqueue({\n ...chunk,\n dynamic: (tool3 == null ? void 0 : tool3.type) === \"dynamic\"\n });\n break;\n }\n case \"tool-input-end\": {\n delete activeToolCallToolNames[chunk.id];\n controller.enqueue(chunk);\n break;\n }\n case \"tool-input-delta\": {\n const toolName = activeToolCallToolNames[chunk.id];\n const tool3 = tools == null ? void 0 : tools[toolName];\n if ((tool3 == null ? void 0 : tool3.onInputDelta) != null) {\n await tool3.onInputDelta({\n inputTextDelta: chunk.delta,\n toolCallId: chunk.id,\n messages: stepInputMessages,\n abortSignal,\n experimental_context\n });\n }\n controller.enqueue(chunk);\n break;\n }\n case \"error\": {\n controller.enqueue(chunk);\n stepFinishReason = \"error\";\n break;\n }\n case \"raw\": {\n if (includeRawChunks2) {\n controller.enqueue(chunk);\n }\n break;\n }\n default: {\n const exhaustiveCheck = chunkType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n },\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n const stepToolCallsJson = stepToolCalls.length > 0 ? JSON.stringify(stepToolCalls) : void 0;\n try {\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": stepFinishReason,\n \"ai.response.text\": {\n output: () => activeText\n },\n \"ai.response.toolCalls\": {\n output: () => stepToolCallsJson\n },\n \"ai.response.id\": stepResponse.id,\n \"ai.response.model\": stepResponse.modelId,\n \"ai.response.timestamp\": stepResponse.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(stepProviderMetadata),\n \"ai.usage.inputTokens\": stepUsage.inputTokens,\n \"ai.usage.outputTokens\": stepUsage.outputTokens,\n \"ai.usage.totalTokens\": stepUsage.totalTokens,\n \"ai.usage.reasoningTokens\": stepUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": stepUsage.cachedInputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [stepFinishReason],\n \"gen_ai.response.id\": stepResponse.id,\n \"gen_ai.response.model\": stepResponse.modelId,\n \"gen_ai.usage.input_tokens\": stepUsage.inputTokens,\n \"gen_ai.usage.output_tokens\": stepUsage.outputTokens\n }\n })\n );\n } catch (error) {\n } finally {\n doStreamSpan.end();\n }\n controller.enqueue({\n type: \"finish-step\",\n finishReason: stepFinishReason,\n usage: stepUsage,\n providerMetadata: stepProviderMetadata,\n response: {\n ...stepResponse,\n headers: response == null ? void 0 : response.headers\n }\n });\n const combinedUsage = addLanguageModelUsage(usage, stepUsage);\n await stepFinish.promise;\n const clientToolCalls = stepToolCalls.filter(\n (toolCall) => toolCall.providerExecuted !== true\n );\n const clientToolOutputs = stepToolOutputs.filter(\n (toolOutput) => toolOutput.providerExecuted !== true\n );\n if (clientToolCalls.length > 0 && // all current tool calls have outputs (incl. execution errors):\n clientToolOutputs.length === clientToolCalls.length && // continue until a stop condition is met:\n !await isStopConditionMet({\n stopConditions,\n steps: recordedSteps\n })) {\n responseMessages.push(\n ...toResponseMessages({\n content: (\n // use transformed content to create the messages for the next step:\n recordedSteps[recordedSteps.length - 1].content\n ),\n tools\n })\n );\n try {\n await streamStep({\n currentStep: currentStep + 1,\n responseMessages,\n usage: combinedUsage\n });\n } catch (error) {\n controller.enqueue({\n type: \"error\",\n error\n });\n self.closeStream();\n }\n } else {\n controller.enqueue({\n type: \"finish\",\n finishReason: stepFinishReason,\n totalUsage: combinedUsage\n });\n self.closeStream();\n }\n }\n })\n )\n );\n }\n await streamStep({\n currentStep: 0,\n responseMessages: [],\n usage: {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n }\n });\n }\n }).catch((error) => {\n self.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"error\", error });\n controller.close();\n }\n })\n );\n self.closeStream();\n });\n }\n get steps() {\n this.consumeStream();\n return this._steps.promise;\n }\n get finalStep() {\n return this.steps.then((steps) => steps[steps.length - 1]);\n }\n get content() {\n return this.finalStep.then((step) => step.content);\n }\n get warnings() {\n return this.finalStep.then((step) => step.warnings);\n }\n get providerMetadata() {\n return this.finalStep.then((step) => step.providerMetadata);\n }\n get text() {\n return this.finalStep.then((step) => step.text);\n }\n get reasoningText() {\n return this.finalStep.then((step) => step.reasoningText);\n }\n get reasoning() {\n return this.finalStep.then((step) => step.reasoning);\n }\n get sources() {\n return this.finalStep.then((step) => step.sources);\n }\n get files() {\n return this.finalStep.then((step) => step.files);\n }\n get toolCalls() {\n return this.finalStep.then((step) => step.toolCalls);\n }\n get staticToolCalls() {\n return this.finalStep.then((step) => step.staticToolCalls);\n }\n get dynamicToolCalls() {\n return this.finalStep.then((step) => step.dynamicToolCalls);\n }\n get toolResults() {\n return this.finalStep.then((step) => step.toolResults);\n }\n get staticToolResults() {\n return this.finalStep.then((step) => step.staticToolResults);\n }\n get dynamicToolResults() {\n return this.finalStep.then((step) => step.dynamicToolResults);\n }\n get usage() {\n return this.finalStep.then((step) => step.usage);\n }\n get request() {\n return this.finalStep.then((step) => step.request);\n }\n get response() {\n return this.finalStep.then((step) => step.response);\n }\n get totalUsage() {\n this.consumeStream();\n return this._totalUsage.promise;\n }\n get finishReason() {\n this.consumeStream();\n return this._finishReason.promise;\n }\n /**\n Split out a new stream from the original stream.\n The original stream is replaced to allow for further splitting,\n since we do not know how many times the stream will be split.\n \n Note: this leads to buffering the stream content on the server.\n However, the LLM results are expected to be small enough to not cause issues.\n */\n teeStream() {\n const [stream1, stream2] = this.baseStream.tee();\n this.baseStream = stream2;\n return stream1;\n }\n get textStream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n if (part.type === \"text-delta\") {\n controller.enqueue(part.text);\n }\n }\n })\n )\n );\n }\n get fullStream() {\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ part }, controller) {\n controller.enqueue(part);\n }\n })\n )\n );\n }\n async consumeStream(options) {\n var _a17;\n try {\n await consumeStream({\n stream: this.fullStream,\n onError: options == null ? void 0 : options.onError\n });\n } catch (error) {\n (_a17 = options == null ? void 0 : options.onError) == null ? void 0 : _a17.call(options, error);\n }\n }\n get experimental_partialOutputStream() {\n if (this.output == null) {\n throw new NoOutputSpecifiedError();\n }\n return createAsyncIterableStream(\n this.teeStream().pipeThrough(\n new TransformStream({\n transform({ partialOutput }, controller) {\n if (partialOutput != null) {\n controller.enqueue(partialOutput);\n }\n }\n })\n )\n );\n }\n toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning = true,\n sendSources = false,\n sendStart = true,\n sendFinish = true,\n onError = getErrorMessage7\n } = {}) {\n const responseMessageId = generateMessageId != null ? getResponseUIMessageId({\n originalMessages,\n responseMessageId: generateMessageId\n }) : void 0;\n const toolNamesByCallId = {};\n const isDynamic = (toolCallId) => {\n var _a17, _b;\n const toolName = toolNamesByCallId[toolCallId];\n const dynamic = ((_b = (_a17 = this.tools) == null ? void 0 : _a17[toolName]) == null ? void 0 : _b.type) === \"dynamic\";\n return dynamic ? true : void 0;\n };\n const baseStream = this.fullStream.pipeThrough(\n new TransformStream({\n transform: async (part, controller) => {\n const messageMetadataValue = messageMetadata == null ? void 0 : messageMetadata({ part });\n const partType = part.type;\n switch (partType) {\n case \"text-start\": {\n controller.enqueue({\n type: \"text-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"text-delta\": {\n controller.enqueue({\n type: \"text-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"text-end\": {\n controller.enqueue({\n type: \"text-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"reasoning-start\": {\n controller.enqueue({\n type: \"reasoning-start\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"reasoning-delta\": {\n if (sendReasoning) {\n controller.enqueue({\n type: \"reasoning-delta\",\n id: part.id,\n delta: part.text,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n break;\n }\n case \"reasoning-end\": {\n controller.enqueue({\n type: \"reasoning-end\",\n id: part.id,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n break;\n }\n case \"file\": {\n controller.enqueue({\n type: \"file\",\n mediaType: part.file.mediaType,\n url: `data:${part.file.mediaType};base64,${part.file.base64}`\n });\n break;\n }\n case \"source\": {\n if (sendSources && part.sourceType === \"url\") {\n controller.enqueue({\n type: \"source-url\",\n sourceId: part.id,\n url: part.url,\n title: part.title,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n if (sendSources && part.sourceType === \"document\") {\n controller.enqueue({\n type: \"source-document\",\n sourceId: part.id,\n mediaType: part.mediaType,\n title: part.title,\n filename: part.filename,\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {}\n });\n }\n break;\n }\n case \"tool-input-start\": {\n toolNamesByCallId[part.id] = part.toolName;\n const dynamic = isDynamic(part.id);\n controller.enqueue({\n type: \"tool-input-start\",\n toolCallId: part.id,\n toolName: part.toolName,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"tool-input-delta\": {\n controller.enqueue({\n type: \"tool-input-delta\",\n toolCallId: part.id,\n inputTextDelta: part.delta\n });\n break;\n }\n case \"tool-call\": {\n toolNamesByCallId[part.toolCallId] = part.toolName;\n const dynamic = isDynamic(part.toolCallId);\n if (part.invalid) {\n controller.enqueue({\n type: \"tool-input-error\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...dynamic != null ? { dynamic } : {},\n errorText: onError(part.error)\n });\n } else {\n controller.enqueue({\n type: \"tool-input-available\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n input: part.input,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n }\n break;\n }\n case \"tool-result\": {\n const dynamic = isDynamic(part.toolCallId);\n controller.enqueue({\n type: \"tool-output-available\",\n toolCallId: part.toolCallId,\n output: part.output,\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...part.preliminary != null ? { preliminary: part.preliminary } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"tool-error\": {\n const dynamic = isDynamic(part.toolCallId);\n controller.enqueue({\n type: \"tool-output-error\",\n toolCallId: part.toolCallId,\n errorText: onError(part.error),\n ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},\n ...dynamic != null ? { dynamic } : {}\n });\n break;\n }\n case \"error\": {\n controller.enqueue({\n type: \"error\",\n errorText: onError(part.error)\n });\n break;\n }\n case \"start-step\": {\n controller.enqueue({ type: \"start-step\" });\n break;\n }\n case \"finish-step\": {\n controller.enqueue({ type: \"finish-step\" });\n break;\n }\n case \"start\": {\n if (sendStart) {\n controller.enqueue({\n type: \"start\",\n ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {},\n ...responseMessageId != null ? { messageId: responseMessageId } : {}\n });\n }\n break;\n }\n case \"finish\": {\n if (sendFinish) {\n controller.enqueue({\n type: \"finish\",\n ...messageMetadataValue != null ? { messageMetadata: messageMetadataValue } : {}\n });\n }\n break;\n }\n case \"abort\": {\n controller.enqueue(part);\n break;\n }\n case \"tool-input-end\": {\n break;\n }\n case \"raw\": {\n break;\n }\n default: {\n const exhaustiveCheck = partType;\n throw new Error(`Unknown chunk type: ${exhaustiveCheck}`);\n }\n }\n if (messageMetadataValue != null && partType !== \"start\" && partType !== \"finish\") {\n controller.enqueue({\n type: \"message-metadata\",\n messageMetadata: messageMetadataValue\n });\n }\n }\n })\n );\n return createAsyncIterableStream(\n handleUIMessageStreamFinish({\n stream: baseStream,\n messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),\n originalMessages,\n onFinish,\n onError\n })\n );\n }\n pipeUIMessageStreamToResponse(response, {\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n } = {}) {\n pipeUIMessageStreamToResponse({\n response,\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError\n }),\n ...init\n });\n }\n pipeTextStreamToResponse(response, init) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init\n });\n }\n toUIMessageStreamResponse({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError,\n ...init\n } = {}) {\n return createUIMessageStreamResponse({\n stream: this.toUIMessageStream({\n originalMessages,\n generateMessageId,\n onFinish,\n messageMetadata,\n sendReasoning,\n sendSources,\n sendFinish,\n sendStart,\n onError\n }),\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init\n });\n }\n};\n\n// src/ui/convert-to-model-messages.ts\nfunction convertToModelMessages(messages, options) {\n const modelMessages = [];\n if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {\n messages = messages.map((message) => ({\n ...message,\n parts: message.parts.filter(\n (part) => !isToolOrDynamicToolUIPart(part) || part.state !== \"input-streaming\" && part.state !== \"input-available\"\n )\n }));\n }\n for (const message of messages) {\n switch (message.role) {\n case \"system\": {\n const textParts = message.parts.filter((part) => part.type === \"text\");\n const providerMetadata = textParts.reduce((acc, part) => {\n if (part.providerMetadata != null) {\n return { ...acc, ...part.providerMetadata };\n }\n return acc;\n }, {});\n modelMessages.push({\n role: \"system\",\n content: textParts.map((part) => part.text).join(\"\"),\n ...Object.keys(providerMetadata).length > 0 ? { providerOptions: providerMetadata } : {}\n });\n break;\n }\n case \"user\": {\n modelMessages.push({\n role: \"user\",\n content: message.parts.filter(\n (part) => part.type === \"text\" || part.type === \"file\"\n ).map((part) => {\n switch (part.type) {\n case \"text\":\n return {\n type: \"text\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n case \"file\":\n return {\n type: \"file\",\n mediaType: part.mediaType,\n filename: part.filename,\n data: part.url,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n };\n default:\n return part;\n }\n })\n });\n break;\n }\n case \"assistant\": {\n if (message.parts != null) {\n let processBlock2 = function() {\n var _a17, _b;\n if (block.length === 0) {\n return;\n }\n const content = [];\n for (const part of block) {\n if (part.type === \"text\") {\n content.push({\n type: \"text\",\n text: part.text,\n ...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}\n });\n } else if (part.type === \"file\") {\n content.push({\n type: \"file\",\n mediaType: part.mediaType,\n filename: part.filename,\n data: part.url\n });\n } else if (part.type === \"reasoning\") {\n content.push({\n type: \"reasoning\",\n text: part.text,\n providerOptions: part.providerMetadata\n });\n } else if (part.type === \"dynamic-tool\") {\n const toolName = part.toolName;\n if (part.state !== \"input-streaming\") {\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName,\n input: part.input,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n }\n } else if (isToolUIPart(part)) {\n const toolName = getToolName(part);\n if (part.state !== \"input-streaming\") {\n content.push({\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName,\n input: part.state === \"output-error\" ? (_a17 = part.input) != null ? _a17 : part.rawInput : part.input,\n providerExecuted: part.providerExecuted,\n ...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}\n });\n if (part.providerExecuted === true && (part.state === \"output-available\" || part.state === \"output-error\")) {\n content.push({\n type: \"tool-result\",\n toolCallId: part.toolCallId,\n toolName,\n output: createToolModelOutput({\n output: part.state === \"output-error\" ? part.errorText : part.output,\n tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],\n errorMode: part.state === \"output-error\" ? \"json\" : \"none\"\n })\n });\n }\n }\n } else {\n const _exhaustiveCheck = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n modelMessages.push({\n role: \"assistant\",\n content\n });\n const toolParts = block.filter(\n (part) => isToolUIPart(part) && part.providerExecuted !== true || part.type === \"dynamic-tool\"\n );\n if (toolParts.length > 0) {\n modelMessages.push({\n role: \"tool\",\n content: toolParts.map((toolPart) => {\n var _a18;\n switch (toolPart.state) {\n case \"output-error\":\n case \"output-available\": {\n const toolName = toolPart.type === \"dynamic-tool\" ? toolPart.toolName : getToolName(toolPart);\n return {\n type: \"tool-result\",\n toolCallId: toolPart.toolCallId,\n toolName,\n output: createToolModelOutput({\n output: toolPart.state === \"output-error\" ? toolPart.errorText : toolPart.output,\n tool: (_a18 = options == null ? void 0 : options.tools) == null ? void 0 : _a18[toolName],\n errorMode: toolPart.state === \"output-error\" ? \"text\" : \"none\"\n })\n };\n }\n default: {\n return null;\n }\n }\n }).filter(\n (output) => output != null\n )\n });\n }\n block = [];\n };\n var processBlock = processBlock2;\n let block = [];\n for (const part of message.parts) {\n if (part.type === \"text\" || part.type === \"reasoning\" || part.type === \"file\" || part.type === \"dynamic-tool\" || isToolUIPart(part)) {\n block.push(part);\n } else if (part.type === \"step-start\") {\n processBlock2();\n }\n }\n processBlock2();\n break;\n }\n break;\n }\n default: {\n const _exhaustiveCheck = message.role;\n throw new MessageConversionError({\n originalMessage: message,\n message: `Unsupported role: ${_exhaustiveCheck}`\n });\n }\n }\n }\n return modelMessages;\n}\nvar convertToCoreMessages = convertToModelMessages;\n\n// src/agent/agent.ts\nvar Agent = class {\n constructor(settings) {\n this.settings = settings;\n }\n get tools() {\n return this.settings.tools;\n }\n async generate(options) {\n return generateText({ ...this.settings, ...options });\n }\n stream(options) {\n return streamText({ ...this.settings, ...options });\n }\n /**\n * Creates a response object that streams UI messages to the client.\n */\n respond(options) {\n return this.stream({\n prompt: convertToModelMessages(options.messages)\n }).toUIMessageStreamResponse();\n }\n};\n\n// src/embed/embed.ts\nimport { withUserAgentSuffix as withUserAgentSuffix3 } from \"@ai-sdk/provider-utils\";\nasync function embed({\n model: modelArg,\n value,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_telemetry: telemetry\n}) {\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix3(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries }\n });\n const tracer = getTracer(telemetry);\n return recordSpan({\n name: \"ai.embed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.embed\", telemetry }),\n ...baseTelemetryAttributes,\n \"ai.value\": { input: () => JSON.stringify(value) }\n }\n }),\n tracer,\n fn: async (span) => {\n const { embedding, usage, response, providerMetadata } = await retry(\n () => (\n // nested spans to align with the embedMany telemetry data:\n recordSpan({\n name: \"ai.embed.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embed.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": { input: () => [JSON.stringify(value)] }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a17;\n const modelResponse = await model.doEmbed({\n values: [value],\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embedding2 = modelResponse.embeddings[0];\n const usage2 = (_a17 = modelResponse.usage) != null ? _a17 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => modelResponse.embeddings.map(\n (embedding3) => JSON.stringify(embedding3)\n )\n },\n \"ai.usage.tokens\": usage2.tokens\n }\n })\n );\n return {\n embedding: embedding2,\n usage: usage2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n })\n )\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embedding\": { output: () => JSON.stringify(embedding) },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return new DefaultEmbedResult({\n value,\n embedding,\n usage,\n providerMetadata,\n response\n });\n }\n });\n}\nvar DefaultEmbedResult = class {\n constructor(options) {\n this.value = options.value;\n this.embedding = options.embedding;\n this.usage = options.usage;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n }\n};\n\n// src/embed/embed-many.ts\nimport { withUserAgentSuffix as withUserAgentSuffix4 } from \"@ai-sdk/provider-utils\";\n\n// src/util/split-array.ts\nfunction splitArray(array, chunkSize) {\n if (chunkSize <= 0) {\n throw new Error(\"chunkSize must be greater than 0\");\n }\n const result = [];\n for (let i = 0; i < array.length; i += chunkSize) {\n result.push(array.slice(i, i + chunkSize));\n }\n return result;\n}\n\n// src/embed/embed-many.ts\nasync function embedMany({\n model: modelArg,\n values,\n maxParallelCalls = Infinity,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n providerOptions,\n experimental_telemetry: telemetry\n}) {\n const model = resolveEmbeddingModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix4(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { maxRetries }\n });\n const tracer = getTracer(telemetry);\n return recordSpan({\n name: \"ai.embedMany\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({ operationId: \"ai.embedMany\", telemetry }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => values.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (span) => {\n var _a17;\n const [maxEmbeddingsPerCall, supportsParallelCalls] = await Promise.all([\n model.maxEmbeddingsPerCall,\n model.supportsParallelCalls\n ]);\n if (maxEmbeddingsPerCall == null || maxEmbeddingsPerCall === Infinity) {\n const { embeddings: embeddings2, usage, response, providerMetadata: providerMetadata2 } = await retry(\n () => {\n return recordSpan({\n name: \"ai.embedMany.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embedMany.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => values.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a18;\n const modelResponse = await model.doEmbed({\n values,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings3 = modelResponse.embeddings;\n const usage2 = (_a18 = modelResponse.usage) != null ? _a18 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings3.map(\n (embedding) => JSON.stringify(embedding)\n )\n },\n \"ai.usage.tokens\": usage2.tokens\n }\n })\n );\n return {\n embeddings: embeddings3,\n usage: usage2,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n });\n }\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings2.map((embedding) => JSON.stringify(embedding))\n },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return new DefaultEmbedManyResult({\n values,\n embeddings: embeddings2,\n usage,\n providerMetadata: providerMetadata2,\n responses: [response]\n });\n }\n const valueChunks = splitArray(values, maxEmbeddingsPerCall);\n const embeddings = [];\n const responses = [];\n let tokens = 0;\n let providerMetadata;\n const parallelChunks = splitArray(\n valueChunks,\n supportsParallelCalls ? maxParallelCalls : 1\n );\n for (const parallelChunk of parallelChunks) {\n const results = await Promise.all(\n parallelChunk.map((chunk) => {\n return retry(() => {\n return recordSpan({\n name: \"ai.embedMany.doEmbed\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.embedMany.doEmbed\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.values\": {\n input: () => chunk.map((value) => JSON.stringify(value))\n }\n }\n }),\n tracer,\n fn: async (doEmbedSpan) => {\n var _a18;\n const modelResponse = await model.doEmbed({\n values: chunk,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n });\n const embeddings2 = modelResponse.embeddings;\n const usage = (_a18 = modelResponse.usage) != null ? _a18 : { tokens: NaN };\n doEmbedSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings2.map(\n (embedding) => JSON.stringify(embedding)\n )\n },\n \"ai.usage.tokens\": usage.tokens\n }\n })\n );\n return {\n embeddings: embeddings2,\n usage,\n providerMetadata: modelResponse.providerMetadata,\n response: modelResponse.response\n };\n }\n });\n });\n })\n );\n for (const result of results) {\n embeddings.push(...result.embeddings);\n responses.push(result.response);\n tokens += result.usage.tokens;\n if (result.providerMetadata) {\n if (!providerMetadata) {\n providerMetadata = { ...result.providerMetadata };\n } else {\n for (const [providerName, metadata] of Object.entries(\n result.providerMetadata\n )) {\n providerMetadata[providerName] = {\n ...(_a17 = providerMetadata[providerName]) != null ? _a17 : {},\n ...metadata\n };\n }\n }\n }\n }\n }\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.embeddings\": {\n output: () => embeddings.map((embedding) => JSON.stringify(embedding))\n },\n \"ai.usage.tokens\": tokens\n }\n })\n );\n return new DefaultEmbedManyResult({\n values,\n embeddings,\n usage: { tokens },\n providerMetadata,\n responses\n });\n }\n });\n}\nvar DefaultEmbedManyResult = class {\n constructor(options) {\n this.values = options.values;\n this.embeddings = options.embeddings;\n this.usage = options.usage;\n this.providerMetadata = options.providerMetadata;\n this.responses = options.responses;\n }\n};\n\n// src/generate-image/generate-image.ts\nimport { withUserAgentSuffix as withUserAgentSuffix5 } from \"@ai-sdk/provider-utils\";\nasync function generateImage({\n model,\n prompt,\n n = 1,\n maxImagesPerCall,\n size,\n aspectRatio,\n seed,\n providerOptions,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a17, _b;\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const headersWithUserAgent = withUserAgentSuffix5(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const maxImagesPerCallWithDefault = (_a17 = maxImagesPerCall != null ? maxImagesPerCall : await invokeModelMaxImagesPerCall(model)) != null ? _a17 : 1;\n const callCount = Math.ceil(n / maxImagesPerCallWithDefault);\n const callImageCounts = Array.from({ length: callCount }, (_, i) => {\n if (i < callCount - 1) {\n return maxImagesPerCallWithDefault;\n }\n const remainder = n % maxImagesPerCallWithDefault;\n return remainder === 0 ? maxImagesPerCallWithDefault : remainder;\n });\n const results = await Promise.all(\n callImageCounts.map(\n async (callImageCount) => retry(\n () => model.doGenerate({\n prompt,\n n: callImageCount,\n abortSignal,\n headers: headersWithUserAgent,\n size,\n aspectRatio,\n seed,\n providerOptions: providerOptions != null ? providerOptions : {}\n })\n )\n )\n );\n const images = [];\n const warnings = [];\n const responses = [];\n const providerMetadata = {};\n for (const result of results) {\n images.push(\n ...result.images.map(\n (image) => {\n var _a18;\n return new DefaultGeneratedFile({\n data: image,\n mediaType: (_a18 = detectMediaType({\n data: image,\n signatures: imageMediaTypeSignatures\n })) != null ? _a18 : \"image/png\"\n });\n }\n )\n );\n warnings.push(...result.warnings);\n if (result.providerMetadata) {\n for (const [providerName, metadata] of Object.entries(result.providerMetadata)) {\n (_b = providerMetadata[providerName]) != null ? _b : providerMetadata[providerName] = { images: [] };\n providerMetadata[providerName].images.push(\n ...result.providerMetadata[providerName].images\n );\n }\n }\n responses.push(result.response);\n }\n logWarnings(warnings);\n if (!images.length) {\n throw new NoImageGeneratedError({ responses });\n }\n return new DefaultGenerateImageResult({\n images,\n warnings,\n responses,\n providerMetadata\n });\n}\nvar DefaultGenerateImageResult = class {\n constructor(options) {\n this.images = options.images;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = options.providerMetadata;\n }\n get image() {\n return this.images[0];\n }\n};\nasync function invokeModelMaxImagesPerCall(model) {\n const isFunction = model.maxImagesPerCall instanceof Function;\n if (!isFunction) {\n return model.maxImagesPerCall;\n }\n return model.maxImagesPerCall({\n modelId: model.modelId\n });\n}\n\n// src/generate-object/generate-object.ts\nimport {\n createIdGenerator as createIdGenerator3,\n withUserAgentSuffix as withUserAgentSuffix6\n} from \"@ai-sdk/provider-utils\";\n\n// src/generate-text/extract-reasoning-content.ts\nfunction extractReasoningContent(content) {\n const parts = content.filter(\n (content2) => content2.type === \"reasoning\"\n );\n return parts.length === 0 ? void 0 : parts.map((content2) => content2.text).join(\"\\n\");\n}\n\n// src/generate-object/output-strategy.ts\nimport {\n isJSONArray,\n isJSONObject,\n TypeValidationError as TypeValidationError2,\n UnsupportedFunctionalityError as UnsupportedFunctionalityError2\n} from \"@ai-sdk/provider\";\nimport {\n asSchema as asSchema3,\n safeValidateTypes as safeValidateTypes3\n} from \"@ai-sdk/provider-utils\";\nvar noSchemaOutputStrategy = {\n type: \"no-schema\",\n jsonSchema: void 0,\n async validatePartialResult({ value, textDelta }) {\n return { success: true, value: { partial: value, textDelta } };\n },\n async validateFinalResult(value, context) {\n return value === void 0 ? {\n success: false,\n error: new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n text: context.text,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n })\n } : { success: true, value };\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in no-schema mode\"\n });\n }\n};\nvar objectOutputStrategy = (schema) => ({\n type: \"object\",\n jsonSchema: schema.jsonSchema,\n async validatePartialResult({ value, textDelta }) {\n return {\n success: true,\n value: {\n // Note: currently no validation of partial results:\n partial: value,\n textDelta\n }\n };\n },\n async validateFinalResult(value) {\n return safeValidateTypes3({ value, schema });\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in object mode\"\n });\n }\n});\nvar arrayOutputStrategy = (schema) => {\n const { $schema, ...itemSchema } = schema.jsonSchema;\n return {\n type: \"enum\",\n // wrap in object that contains array of elements, since most LLMs will not\n // be able to generate an array directly:\n // possible future optimization: use arrays directly when model supports grammar-guided generation\n jsonSchema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n elements: { type: \"array\", items: itemSchema }\n },\n required: [\"elements\"],\n additionalProperties: false\n },\n async validatePartialResult({\n value,\n latestObject,\n isFirstDelta,\n isFinalDelta\n }) {\n var _a17;\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be an object that contains an array of elements\"\n })\n };\n }\n const inputArray = value.elements;\n const resultArray = [];\n for (let i = 0; i < inputArray.length; i++) {\n const element = inputArray[i];\n const result = await safeValidateTypes3({ value: element, schema });\n if (i === inputArray.length - 1 && !isFinalDelta) {\n continue;\n }\n if (!result.success) {\n return result;\n }\n resultArray.push(result.value);\n }\n const publishedElementCount = (_a17 = latestObject == null ? void 0 : latestObject.length) != null ? _a17 : 0;\n let textDelta = \"\";\n if (isFirstDelta) {\n textDelta += \"[\";\n }\n if (publishedElementCount > 0) {\n textDelta += \",\";\n }\n textDelta += resultArray.slice(publishedElementCount).map((element) => JSON.stringify(element)).join(\",\");\n if (isFinalDelta) {\n textDelta += \"]\";\n }\n return {\n success: true,\n value: {\n partial: resultArray,\n textDelta\n }\n };\n },\n async validateFinalResult(value) {\n if (!isJSONObject(value) || !isJSONArray(value.elements)) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be an object that contains an array of elements\"\n })\n };\n }\n const inputArray = value.elements;\n for (const element of inputArray) {\n const result = await safeValidateTypes3({ value: element, schema });\n if (!result.success) {\n return result;\n }\n }\n return { success: true, value: inputArray };\n },\n createElementStream(originalStream) {\n let publishedElements = 0;\n return createAsyncIterableStream(\n originalStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"object\": {\n const array = chunk.object;\n for (; publishedElements < array.length; publishedElements++) {\n controller.enqueue(array[publishedElements]);\n }\n break;\n }\n case \"text-delta\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(\n `Unsupported chunk type: ${_exhaustiveCheck}`\n );\n }\n }\n }\n })\n )\n );\n }\n };\n};\nvar enumOutputStrategy = (enumValues) => {\n return {\n type: \"enum\",\n // wrap in object that contains result, since most LLMs will not\n // be able to generate an enum value directly:\n // possible future optimization: use enums directly when model supports top-level enums\n jsonSchema: {\n $schema: \"http://json-schema.org/draft-07/schema#\",\n type: \"object\",\n properties: {\n result: { type: \"string\", enum: enumValues }\n },\n required: [\"result\"],\n additionalProperties: false\n },\n async validateFinalResult(value) {\n if (!isJSONObject(value) || typeof value.result !== \"string\") {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: 'value must be an object that contains a string in the \"result\" property.'\n })\n };\n }\n const result = value.result;\n return enumValues.includes(result) ? { success: true, value: result } : {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be a string in the enum\"\n })\n };\n },\n async validatePartialResult({ value, textDelta }) {\n if (!isJSONObject(value) || typeof value.result !== \"string\") {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: 'value must be an object that contains a string in the \"result\" property.'\n })\n };\n }\n const result = value.result;\n const possibleEnumValues = enumValues.filter(\n (enumValue) => enumValue.startsWith(result)\n );\n if (value.result.length === 0 || possibleEnumValues.length === 0) {\n return {\n success: false,\n error: new TypeValidationError2({\n value,\n cause: \"value must be a string in the enum\"\n })\n };\n }\n return {\n success: true,\n value: {\n partial: possibleEnumValues.length > 1 ? result : possibleEnumValues[0],\n textDelta\n }\n };\n },\n createElementStream() {\n throw new UnsupportedFunctionalityError2({\n functionality: \"element streams in enum mode\"\n });\n }\n };\n};\nfunction getOutputStrategy({\n output,\n schema,\n enumValues\n}) {\n switch (output) {\n case \"object\":\n return objectOutputStrategy(asSchema3(schema));\n case \"array\":\n return arrayOutputStrategy(asSchema3(schema));\n case \"enum\":\n return enumOutputStrategy(enumValues);\n case \"no-schema\":\n return noSchemaOutputStrategy;\n default: {\n const _exhaustiveCheck = output;\n throw new Error(`Unsupported output: ${_exhaustiveCheck}`);\n }\n }\n}\n\n// src/generate-object/parse-and-validate-object-result.ts\nimport { JSONParseError as JSONParseError2, TypeValidationError as TypeValidationError3 } from \"@ai-sdk/provider\";\nimport { safeParseJSON as safeParseJSON3 } from \"@ai-sdk/provider-utils\";\nasync function parseAndValidateObjectResult(result, outputStrategy, context) {\n const parseResult = await safeParseJSON3({ text: result });\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: could not parse the response.\",\n cause: parseResult.error,\n text: result,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validationResult = await outputStrategy.validateFinalResult(\n parseResult.value,\n {\n text: result,\n response: context.response,\n usage: context.usage\n }\n );\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: validationResult.error,\n text: result,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return validationResult.value;\n}\nasync function parseAndValidateObjectResultWithRepair(result, outputStrategy, repairText, context) {\n try {\n return await parseAndValidateObjectResult(result, outputStrategy, context);\n } catch (error) {\n if (repairText != null && NoObjectGeneratedError.isInstance(error) && (JSONParseError2.isInstance(error.cause) || TypeValidationError3.isInstance(error.cause))) {\n const repairedText = await repairText({\n text: result,\n error: error.cause\n });\n if (repairedText === null) {\n throw error;\n }\n return await parseAndValidateObjectResult(\n repairedText,\n outputStrategy,\n context\n );\n }\n throw error;\n }\n}\n\n// src/generate-object/validate-object-generation-input.ts\nfunction validateObjectGenerationInput({\n output,\n schema,\n schemaName,\n schemaDescription,\n enumValues\n}) {\n if (output != null && output !== \"object\" && output !== \"array\" && output !== \"enum\" && output !== \"no-schema\") {\n throw new InvalidArgumentError({\n parameter: \"output\",\n value: output,\n message: \"Invalid output type.\"\n });\n }\n if (output === \"no-schema\") {\n if (schema != null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is not supported for no-schema output.\"\n });\n }\n if (schemaDescription != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaDescription\",\n value: schemaDescription,\n message: \"Schema description is not supported for no-schema output.\"\n });\n }\n if (schemaName != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaName\",\n value: schemaName,\n message: \"Schema name is not supported for no-schema output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for no-schema output.\"\n });\n }\n }\n if (output === \"object\") {\n if (schema == null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is required for object output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for object output.\"\n });\n }\n }\n if (output === \"array\") {\n if (schema == null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Element schema is required for array output.\"\n });\n }\n if (enumValues != null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are not supported for array output.\"\n });\n }\n }\n if (output === \"enum\") {\n if (schema != null) {\n throw new InvalidArgumentError({\n parameter: \"schema\",\n value: schema,\n message: \"Schema is not supported for enum output.\"\n });\n }\n if (schemaDescription != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaDescription\",\n value: schemaDescription,\n message: \"Schema description is not supported for enum output.\"\n });\n }\n if (schemaName != null) {\n throw new InvalidArgumentError({\n parameter: \"schemaName\",\n value: schemaName,\n message: \"Schema name is not supported for enum output.\"\n });\n }\n if (enumValues == null) {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value: enumValues,\n message: \"Enum values are required for enum output.\"\n });\n }\n for (const value of enumValues) {\n if (typeof value !== \"string\") {\n throw new InvalidArgumentError({\n parameter: \"enumValues\",\n value,\n message: \"Enum values must be strings.\"\n });\n }\n }\n }\n}\n\n// src/generate-object/generate-object.ts\nvar originalGenerateId3 = createIdGenerator3({ prefix: \"aiobj\", size: 24 });\nasync function generateObject(options) {\n const {\n model: modelArg,\n output = \"object\",\n system,\n prompt,\n messages,\n maxRetries: maxRetriesArg,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download2,\n providerOptions,\n _internal: {\n generateId: generateId3 = originalGenerateId3,\n currentDate = () => /* @__PURE__ */ new Date()\n } = {},\n ...settings\n } = options;\n const model = resolveLanguageModel(modelArg);\n const enumValues = \"enum\" in options ? options.enum : void 0;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName\n } = \"schema\" in options ? options : {};\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues\n });\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues\n });\n const callSettings = prepareCallSettings(settings);\n const headersWithUserAgent = withUserAgentSuffix6(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers: headersWithUserAgent,\n settings: { ...callSettings, maxRetries }\n });\n const tracer = getTracer(telemetry);\n try {\n return await recordSpan({\n name: \"ai.generateObject\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateObject\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n },\n \"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n \"ai.schema.name\": schemaName,\n \"ai.schema.description\": schemaDescription,\n \"ai.settings.output\": outputStrategy.type\n }\n }),\n tracer,\n fn: async (span) => {\n var _a17;\n let result;\n let finishReason;\n let usage;\n let warnings;\n let response;\n let request;\n let resultProviderMetadata;\n let reasoning;\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const promptMessages = await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2\n });\n const generateResult = await retry(\n () => recordSpan({\n name: \"ai.generateObject.doGenerate\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.generateObject.doGenerate\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(promptMessages)\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": model.provider,\n \"gen_ai.request.model\": model.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n fn: async (span2) => {\n var _a18, _b, _c, _d, _e, _f, _g, _h;\n const result2 = await model.doGenerate({\n responseFormat: {\n type: \"json\",\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareCallSettings(settings),\n prompt: promptMessages,\n providerOptions,\n abortSignal,\n headers: headersWithUserAgent\n });\n const responseData = {\n id: (_b = (_a18 = result2.response) == null ? void 0 : _a18.id) != null ? _b : generateId3(),\n timestamp: (_d = (_c = result2.response) == null ? void 0 : _c.timestamp) != null ? _d : currentDate(),\n modelId: (_f = (_e = result2.response) == null ? void 0 : _e.modelId) != null ? _f : model.modelId,\n headers: (_g = result2.response) == null ? void 0 : _g.headers,\n body: (_h = result2.response) == null ? void 0 : _h.body\n };\n const text2 = extractTextContent(result2.content);\n const reasoning2 = extractReasoningContent(result2.content);\n if (text2 === void 0) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: the model did not return a response.\",\n response: responseData,\n usage: result2.usage,\n finishReason: result2.finishReason\n });\n }\n span2.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": result2.finishReason,\n \"ai.response.object\": { output: () => text2 },\n \"ai.response.id\": responseData.id,\n \"ai.response.model\": responseData.modelId,\n \"ai.response.timestamp\": responseData.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(\n result2.providerMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": result2.usage.inputTokens,\n \"ai.usage.completionTokens\": result2.usage.outputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [result2.finishReason],\n \"gen_ai.response.id\": responseData.id,\n \"gen_ai.response.model\": responseData.modelId,\n \"gen_ai.usage.input_tokens\": result2.usage.inputTokens,\n \"gen_ai.usage.output_tokens\": result2.usage.outputTokens\n }\n })\n );\n return {\n ...result2,\n objectText: text2,\n reasoning: reasoning2,\n responseData\n };\n }\n })\n );\n result = generateResult.objectText;\n finishReason = generateResult.finishReason;\n usage = generateResult.usage;\n warnings = generateResult.warnings;\n resultProviderMetadata = generateResult.providerMetadata;\n request = (_a17 = generateResult.request) != null ? _a17 : {};\n response = generateResult.responseData;\n reasoning = generateResult.reasoning;\n logWarnings(warnings);\n const object2 = await parseAndValidateObjectResultWithRepair(\n result,\n outputStrategy,\n repairText,\n {\n response,\n usage,\n finishReason\n }\n );\n span.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.providerMetadata\": JSON.stringify(\n resultProviderMetadata\n ),\n // TODO rename telemetry attributes to inputTokens and outputTokens\n \"ai.usage.promptTokens\": usage.inputTokens,\n \"ai.usage.completionTokens\": usage.outputTokens\n }\n })\n );\n return new DefaultGenerateObjectResult({\n object: object2,\n reasoning,\n finishReason,\n usage,\n warnings,\n request,\n response,\n providerMetadata: resultProviderMetadata\n });\n }\n });\n } catch (error) {\n throw wrapGatewayError(error);\n }\n}\nvar DefaultGenerateObjectResult = class {\n constructor(options) {\n this.object = options.object;\n this.finishReason = options.finishReason;\n this.usage = options.usage;\n this.warnings = options.warnings;\n this.providerMetadata = options.providerMetadata;\n this.response = options.response;\n this.request = options.request;\n this.reasoning = options.reasoning;\n }\n toJsonResponse(init) {\n var _a17;\n return new Response(JSON.stringify(this.object), {\n status: (_a17 = init == null ? void 0 : init.status) != null ? _a17 : 200,\n headers: prepareHeaders(init == null ? void 0 : init.headers, {\n \"content-type\": \"application/json; charset=utf-8\"\n })\n });\n }\n};\n\n// src/generate-object/stream-object.ts\nimport {\n createIdGenerator as createIdGenerator4\n} from \"@ai-sdk/provider-utils\";\n\n// src/util/cosine-similarity.ts\nfunction cosineSimilarity(vector1, vector2) {\n if (vector1.length !== vector2.length) {\n throw new InvalidArgumentError({\n parameter: \"vector1,vector2\",\n value: { vector1Length: vector1.length, vector2Length: vector2.length },\n message: `Vectors must have the same length`\n });\n }\n const n = vector1.length;\n if (n === 0) {\n return 0;\n }\n let magnitudeSquared1 = 0;\n let magnitudeSquared2 = 0;\n let dotProduct = 0;\n for (let i = 0; i < n; i++) {\n const value1 = vector1[i];\n const value2 = vector2[i];\n magnitudeSquared1 += value1 * value1;\n magnitudeSquared2 += value2 * value2;\n dotProduct += value1 * value2;\n }\n return magnitudeSquared1 === 0 || magnitudeSquared2 === 0 ? 0 : dotProduct / (Math.sqrt(magnitudeSquared1) * Math.sqrt(magnitudeSquared2));\n}\n\n// src/util/data-url.ts\nfunction getTextFromDataUrl(dataUrl) {\n const [header, base64Content] = dataUrl.split(\",\");\n const mediaType = header.split(\";\")[0].split(\":\")[1];\n if (mediaType == null || base64Content == null) {\n throw new Error(\"Invalid data URL format\");\n }\n try {\n return window.atob(base64Content);\n } catch (error) {\n throw new Error(`Error decoding data URL`);\n }\n}\n\n// src/util/is-deep-equal-data.ts\nfunction isDeepEqualData(obj1, obj2) {\n if (obj1 === obj2)\n return true;\n if (obj1 == null || obj2 == null)\n return false;\n if (typeof obj1 !== \"object\" && typeof obj2 !== \"object\")\n return obj1 === obj2;\n if (obj1.constructor !== obj2.constructor)\n return false;\n if (obj1 instanceof Date && obj2 instanceof Date) {\n return obj1.getTime() === obj2.getTime();\n }\n if (Array.isArray(obj1)) {\n if (obj1.length !== obj2.length)\n return false;\n for (let i = 0; i < obj1.length; i++) {\n if (!isDeepEqualData(obj1[i], obj2[i]))\n return false;\n }\n return true;\n }\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length)\n return false;\n for (const key of keys1) {\n if (!keys2.includes(key))\n return false;\n if (!isDeepEqualData(obj1[key], obj2[key]))\n return false;\n }\n return true;\n}\n\n// src/util/serial-job-executor.ts\nvar SerialJobExecutor = class {\n constructor() {\n this.queue = [];\n this.isProcessing = false;\n }\n async processQueue() {\n if (this.isProcessing) {\n return;\n }\n this.isProcessing = true;\n while (this.queue.length > 0) {\n await this.queue[0]();\n this.queue.shift();\n }\n this.isProcessing = false;\n }\n async run(job) {\n return new Promise((resolve2, reject) => {\n this.queue.push(async () => {\n try {\n await job();\n resolve2();\n } catch (error) {\n reject(error);\n }\n });\n void this.processQueue();\n });\n }\n};\n\n// src/util/simulate-readable-stream.ts\nimport { delay as delayFunction } from \"@ai-sdk/provider-utils\";\nfunction simulateReadableStream({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal\n}) {\n var _a17;\n const delay2 = (_a17 = _internal == null ? void 0 : _internal.delay) != null ? _a17 : delayFunction;\n let index = 0;\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay2(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n }\n });\n}\n\n// src/generate-object/stream-object.ts\nvar originalGenerateId4 = createIdGenerator4({ prefix: \"aiobj\", size: 24 });\nfunction streamObject(options) {\n const {\n model,\n output = \"object\",\n system,\n prompt,\n messages,\n maxRetries,\n abortSignal,\n headers,\n experimental_repairText: repairText,\n experimental_telemetry: telemetry,\n experimental_download: download2,\n providerOptions,\n onError = ({ error }) => {\n console.error(error);\n },\n onFinish,\n _internal: {\n generateId: generateId3 = originalGenerateId4,\n currentDate = () => /* @__PURE__ */ new Date(),\n now: now2 = now\n } = {},\n ...settings\n } = options;\n const enumValues = \"enum\" in options && options.enum ? options.enum : void 0;\n const {\n schema: inputSchema,\n schemaDescription,\n schemaName\n } = \"schema\" in options ? options : {};\n validateObjectGenerationInput({\n output,\n schema: inputSchema,\n schemaName,\n schemaDescription,\n enumValues\n });\n const outputStrategy = getOutputStrategy({\n output,\n schema: inputSchema,\n enumValues\n });\n return new DefaultStreamObjectResult({\n model,\n telemetry,\n headers,\n settings,\n maxRetries,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download: download2,\n generateId: generateId3,\n currentDate,\n now: now2\n });\n}\nvar DefaultStreamObjectResult = class {\n constructor({\n model: modelArg,\n headers,\n telemetry,\n settings,\n maxRetries: maxRetriesArg,\n abortSignal,\n outputStrategy,\n system,\n prompt,\n messages,\n schemaName,\n schemaDescription,\n providerOptions,\n repairText,\n onError,\n onFinish,\n download: download2,\n generateId: generateId3,\n currentDate,\n now: now2\n }) {\n this._object = new DelayedPromise();\n this._usage = new DelayedPromise();\n this._providerMetadata = new DelayedPromise();\n this._warnings = new DelayedPromise();\n this._request = new DelayedPromise();\n this._response = new DelayedPromise();\n this._finishReason = new DelayedPromise();\n const model = resolveLanguageModel(modelArg);\n const { maxRetries, retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const callSettings = prepareCallSettings(settings);\n const baseTelemetryAttributes = getBaseTelemetryAttributes({\n model,\n telemetry,\n headers,\n settings: { ...callSettings, maxRetries }\n });\n const tracer = getTracer(telemetry);\n const self = this;\n const stitchableStream = createStitchableStream();\n const eventProcessor = new TransformStream({\n transform(chunk, controller) {\n controller.enqueue(chunk);\n if (chunk.type === \"error\") {\n onError({ error: wrapGatewayError(chunk.error) });\n }\n }\n });\n this.baseStream = stitchableStream.stream.pipeThrough(eventProcessor);\n recordSpan({\n name: \"ai.streamObject\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamObject\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n // specific settings that only make sense on the outer level:\n \"ai.prompt\": {\n input: () => JSON.stringify({ system, prompt, messages })\n },\n \"ai.schema\": outputStrategy.jsonSchema != null ? { input: () => JSON.stringify(outputStrategy.jsonSchema) } : void 0,\n \"ai.schema.name\": schemaName,\n \"ai.schema.description\": schemaDescription,\n \"ai.settings.output\": outputStrategy.type\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (rootSpan) => {\n const standardizedPrompt = await standardizePrompt({\n system,\n prompt,\n messages\n });\n const callOptions = {\n responseFormat: {\n type: \"json\",\n schema: outputStrategy.jsonSchema,\n name: schemaName,\n description: schemaDescription\n },\n ...prepareCallSettings(settings),\n prompt: await convertToLanguageModelPrompt({\n prompt: standardizedPrompt,\n supportedUrls: await model.supportedUrls,\n download: download2\n }),\n providerOptions,\n abortSignal,\n headers,\n includeRawChunks: false\n };\n const transformer = {\n transform: (chunk, controller) => {\n switch (chunk.type) {\n case \"text-delta\":\n controller.enqueue(chunk.delta);\n break;\n case \"response-metadata\":\n case \"finish\":\n case \"error\":\n case \"stream-start\":\n controller.enqueue(chunk);\n break;\n }\n }\n };\n const {\n result: { stream, response, request },\n doStreamSpan,\n startTimestampMs\n } = await retry(\n () => recordSpan({\n name: \"ai.streamObject.doStream\",\n attributes: selectTelemetryAttributes({\n telemetry,\n attributes: {\n ...assembleOperationName({\n operationId: \"ai.streamObject.doStream\",\n telemetry\n }),\n ...baseTelemetryAttributes,\n \"ai.prompt.messages\": {\n input: () => stringifyForTelemetry(callOptions.prompt)\n },\n // standardized gen-ai llm span attributes:\n \"gen_ai.system\": model.provider,\n \"gen_ai.request.model\": model.modelId,\n \"gen_ai.request.frequency_penalty\": callSettings.frequencyPenalty,\n \"gen_ai.request.max_tokens\": callSettings.maxOutputTokens,\n \"gen_ai.request.presence_penalty\": callSettings.presencePenalty,\n \"gen_ai.request.temperature\": callSettings.temperature,\n \"gen_ai.request.top_k\": callSettings.topK,\n \"gen_ai.request.top_p\": callSettings.topP\n }\n }),\n tracer,\n endWhenDone: false,\n fn: async (doStreamSpan2) => ({\n startTimestampMs: now2(),\n doStreamSpan: doStreamSpan2,\n result: await model.doStream(callOptions)\n })\n })\n );\n self._request.resolve(request != null ? request : {});\n let warnings;\n let usage = {\n inputTokens: void 0,\n outputTokens: void 0,\n totalTokens: void 0\n };\n let finishReason;\n let providerMetadata;\n let object2;\n let error;\n let accumulatedText = \"\";\n let textDelta = \"\";\n let fullResponse = {\n id: generateId3(),\n timestamp: currentDate(),\n modelId: model.modelId\n };\n let latestObjectJson = void 0;\n let latestObject = void 0;\n let isFirstChunk = true;\n let isFirstDelta = true;\n const transformedStream = stream.pipeThrough(new TransformStream(transformer)).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n var _a17, _b, _c;\n if (typeof chunk === \"object\" && chunk.type === \"stream-start\") {\n warnings = chunk.warnings;\n return;\n }\n if (isFirstChunk) {\n const msToFirstChunk = now2() - startTimestampMs;\n isFirstChunk = false;\n doStreamSpan.addEvent(\"ai.stream.firstChunk\", {\n \"ai.stream.msToFirstChunk\": msToFirstChunk\n });\n doStreamSpan.setAttributes({\n \"ai.stream.msToFirstChunk\": msToFirstChunk\n });\n }\n if (typeof chunk === \"string\") {\n accumulatedText += chunk;\n textDelta += chunk;\n const { value: currentObjectJson, state: parseState } = await parsePartialJson(accumulatedText);\n if (currentObjectJson !== void 0 && !isDeepEqualData(latestObjectJson, currentObjectJson)) {\n const validationResult = await outputStrategy.validatePartialResult({\n value: currentObjectJson,\n textDelta,\n latestObject,\n isFirstDelta,\n isFinalDelta: parseState === \"successful-parse\"\n });\n if (validationResult.success && !isDeepEqualData(\n latestObject,\n validationResult.value.partial\n )) {\n latestObjectJson = currentObjectJson;\n latestObject = validationResult.value.partial;\n controller.enqueue({\n type: \"object\",\n object: latestObject\n });\n controller.enqueue({\n type: \"text-delta\",\n textDelta: validationResult.value.textDelta\n });\n textDelta = \"\";\n isFirstDelta = false;\n }\n }\n return;\n }\n switch (chunk.type) {\n case \"response-metadata\": {\n fullResponse = {\n id: (_a17 = chunk.id) != null ? _a17 : fullResponse.id,\n timestamp: (_b = chunk.timestamp) != null ? _b : fullResponse.timestamp,\n modelId: (_c = chunk.modelId) != null ? _c : fullResponse.modelId\n };\n break;\n }\n case \"finish\": {\n if (textDelta !== \"\") {\n controller.enqueue({ type: \"text-delta\", textDelta });\n }\n finishReason = chunk.finishReason;\n usage = chunk.usage;\n providerMetadata = chunk.providerMetadata;\n controller.enqueue({\n ...chunk,\n usage,\n response: fullResponse\n });\n logWarnings(warnings != null ? warnings : []);\n self._usage.resolve(usage);\n self._providerMetadata.resolve(providerMetadata);\n self._warnings.resolve(warnings);\n self._response.resolve({\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n });\n self._finishReason.resolve(finishReason != null ? finishReason : \"unknown\");\n try {\n object2 = await parseAndValidateObjectResultWithRepair(\n accumulatedText,\n outputStrategy,\n repairText,\n {\n response: fullResponse,\n usage,\n finishReason\n }\n );\n self._object.resolve(object2);\n } catch (e) {\n error = e;\n self._object.reject(e);\n }\n break;\n }\n default: {\n controller.enqueue(chunk);\n break;\n }\n }\n },\n // invoke onFinish callback and resolve toolResults promise when the stream is about to close:\n async flush(controller) {\n try {\n const finalUsage = usage != null ? usage : {\n promptTokens: NaN,\n completionTokens: NaN,\n totalTokens: NaN\n };\n doStreamSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.response.finishReason\": finishReason,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.id\": fullResponse.id,\n \"ai.response.model\": fullResponse.modelId,\n \"ai.response.timestamp\": fullResponse.timestamp.toISOString(),\n \"ai.response.providerMetadata\": JSON.stringify(providerMetadata),\n \"ai.usage.inputTokens\": finalUsage.inputTokens,\n \"ai.usage.outputTokens\": finalUsage.outputTokens,\n \"ai.usage.totalTokens\": finalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": finalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": finalUsage.cachedInputTokens,\n // standardized gen-ai llm span attributes:\n \"gen_ai.response.finish_reasons\": [finishReason],\n \"gen_ai.response.id\": fullResponse.id,\n \"gen_ai.response.model\": fullResponse.modelId,\n \"gen_ai.usage.input_tokens\": finalUsage.inputTokens,\n \"gen_ai.usage.output_tokens\": finalUsage.outputTokens\n }\n })\n );\n doStreamSpan.end();\n rootSpan.setAttributes(\n selectTelemetryAttributes({\n telemetry,\n attributes: {\n \"ai.usage.inputTokens\": finalUsage.inputTokens,\n \"ai.usage.outputTokens\": finalUsage.outputTokens,\n \"ai.usage.totalTokens\": finalUsage.totalTokens,\n \"ai.usage.reasoningTokens\": finalUsage.reasoningTokens,\n \"ai.usage.cachedInputTokens\": finalUsage.cachedInputTokens,\n \"ai.response.object\": {\n output: () => JSON.stringify(object2)\n },\n \"ai.response.providerMetadata\": JSON.stringify(providerMetadata)\n }\n })\n );\n await (onFinish == null ? void 0 : onFinish({\n usage: finalUsage,\n object: object2,\n error,\n response: {\n ...fullResponse,\n headers: response == null ? void 0 : response.headers\n },\n warnings,\n providerMetadata\n }));\n } catch (error2) {\n controller.enqueue({ type: \"error\", error: error2 });\n } finally {\n rootSpan.end();\n }\n }\n })\n );\n stitchableStream.addStream(transformedStream);\n }\n }).catch((error) => {\n stitchableStream.addStream(\n new ReadableStream({\n start(controller) {\n controller.enqueue({ type: \"error\", error });\n controller.close();\n }\n })\n );\n }).finally(() => {\n stitchableStream.close();\n });\n this.outputStrategy = outputStrategy;\n }\n get object() {\n return this._object.promise;\n }\n get usage() {\n return this._usage.promise;\n }\n get providerMetadata() {\n return this._providerMetadata.promise;\n }\n get warnings() {\n return this._warnings.promise;\n }\n get request() {\n return this._request.promise;\n }\n get response() {\n return this._response.promise;\n }\n get finishReason() {\n return this._finishReason.promise;\n }\n get partialObjectStream() {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"object\":\n controller.enqueue(chunk.object);\n break;\n case \"text-delta\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n }\n })\n )\n );\n }\n get elementStream() {\n return this.outputStrategy.createElementStream(this.baseStream);\n }\n get textStream() {\n return createAsyncIterableStream(\n this.baseStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n switch (chunk.type) {\n case \"text-delta\":\n controller.enqueue(chunk.textDelta);\n break;\n case \"object\":\n case \"finish\":\n case \"error\":\n break;\n default: {\n const _exhaustiveCheck = chunk;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n }\n })\n )\n );\n }\n get fullStream() {\n return createAsyncIterableStream(this.baseStream);\n }\n pipeTextStreamToResponse(response, init) {\n pipeTextStreamToResponse({\n response,\n textStream: this.textStream,\n ...init\n });\n }\n toTextStreamResponse(init) {\n return createTextStreamResponse({\n textStream: this.textStream,\n ...init\n });\n }\n};\n\n// src/generate-speech/generate-speech.ts\nimport { withUserAgentSuffix as withUserAgentSuffix7 } from \"@ai-sdk/provider-utils\";\n\n// src/error/no-speech-generated-error.ts\nimport { AISDKError as AISDKError20 } from \"@ai-sdk/provider\";\nvar NoSpeechGeneratedError = class extends AISDKError20 {\n constructor(options) {\n super({\n name: \"AI_NoSpeechGeneratedError\",\n message: \"No speech audio generated.\"\n });\n this.responses = options.responses;\n }\n};\n\n// src/generate-speech/generated-audio-file.ts\nvar DefaultGeneratedAudioFile = class extends DefaultGeneratedFile {\n constructor({\n data,\n mediaType\n }) {\n super({ data, mediaType });\n let format = \"mp3\";\n if (mediaType) {\n const mediaTypeParts = mediaType.split(\"/\");\n if (mediaTypeParts.length === 2) {\n if (mediaType !== \"audio/mpeg\") {\n format = mediaTypeParts[1];\n }\n }\n }\n if (!format) {\n throw new Error(\n \"Audio format must be provided or determinable from media type\"\n );\n }\n this.format = format;\n }\n};\n\n// src/generate-speech/generate-speech.ts\nasync function generateSpeech({\n model,\n text: text2,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n var _a17;\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const headersWithUserAgent = withUserAgentSuffix7(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const result = await retry(\n () => model.doGenerate({\n text: text2,\n voice,\n outputFormat,\n instructions,\n speed,\n language,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions\n })\n );\n if (!result.audio || result.audio.length === 0) {\n throw new NoSpeechGeneratedError({ responses: [result.response] });\n }\n logWarnings(result.warnings);\n return new DefaultSpeechResult({\n audio: new DefaultGeneratedAudioFile({\n data: result.audio,\n mediaType: (_a17 = detectMediaType({\n data: result.audio,\n signatures: audioMediaTypeSignatures\n })) != null ? _a17 : \"audio/mp3\"\n }),\n warnings: result.warnings,\n responses: [result.response],\n providerMetadata: result.providerMetadata\n });\n}\nvar DefaultSpeechResult = class {\n constructor(options) {\n var _a17;\n this.audio = options.audio;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};\n }\n};\n\n// src/generate-text/output.ts\nvar output_exports = {};\n__export(output_exports, {\n object: () => object,\n text: () => text\n});\nimport {\n asSchema as asSchema4,\n safeParseJSON as safeParseJSON4,\n safeValidateTypes as safeValidateTypes4\n} from \"@ai-sdk/provider-utils\";\nvar text = () => ({\n type: \"text\",\n responseFormat: { type: \"text\" },\n async parsePartial({ text: text2 }) {\n return { partial: text2 };\n },\n async parseOutput({ text: text2 }) {\n return text2;\n }\n});\nvar object = ({\n schema: inputSchema\n}) => {\n const schema = asSchema4(inputSchema);\n return {\n type: \"object\",\n responseFormat: {\n type: \"json\",\n schema: schema.jsonSchema\n },\n async parsePartial({ text: text2 }) {\n const result = await parsePartialJson(text2);\n switch (result.state) {\n case \"failed-parse\":\n case \"undefined-input\":\n return void 0;\n case \"repaired-parse\":\n case \"successful-parse\":\n return {\n // Note: currently no validation of partial results:\n partial: result.value\n };\n default: {\n const _exhaustiveCheck = result.state;\n throw new Error(`Unsupported parse state: ${_exhaustiveCheck}`);\n }\n }\n },\n async parseOutput({ text: text2 }, context) {\n const parseResult = await safeParseJSON4({ text: text2 });\n if (!parseResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: could not parse the response.\",\n cause: parseResult.error,\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n const validationResult = await safeValidateTypes4({\n value: parseResult.value,\n schema\n });\n if (!validationResult.success) {\n throw new NoObjectGeneratedError({\n message: \"No object generated: response did not match schema.\",\n cause: validationResult.error,\n text: text2,\n response: context.response,\n usage: context.usage,\n finishReason: context.finishReason\n });\n }\n return validationResult.value;\n }\n };\n};\n\n// src/generate-text/smooth-stream.ts\nimport { delay as originalDelay } from \"@ai-sdk/provider-utils\";\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nvar CHUNKING_REGEXPS = {\n word: /\\S+\\s+/m,\n line: /\\n+/m\n};\nfunction smoothStream({\n delayInMs = 10,\n chunking = \"word\",\n _internal: { delay: delay2 = originalDelay } = {}\n} = {}) {\n let detectChunk;\n if (typeof chunking === \"function\") {\n detectChunk = (buffer) => {\n const match = chunking(buffer);\n if (match == null) {\n return null;\n }\n if (!match.length) {\n throw new Error(`Chunking function must return a non-empty string.`);\n }\n if (!buffer.startsWith(match)) {\n throw new Error(\n `Chunking function must return a match that is a prefix of the buffer. Received: \"${match}\" expected to start with \"${buffer}\"`\n );\n }\n return match;\n };\n } else {\n const chunkingRegex = typeof chunking === \"string\" ? CHUNKING_REGEXPS[chunking] : chunking;\n if (chunkingRegex == null) {\n throw new InvalidArgumentError2({\n argument: \"chunking\",\n message: `Chunking must be \"word\" or \"line\" or a RegExp. Received: ${chunking}`\n });\n }\n detectChunk = (buffer) => {\n const match = chunkingRegex.exec(buffer);\n if (!match) {\n return null;\n }\n return buffer.slice(0, match.index) + (match == null ? void 0 : match[0]);\n };\n }\n return () => {\n let buffer = \"\";\n let id = \"\";\n return new TransformStream({\n async transform(chunk, controller) {\n if (chunk.type !== \"text-delta\") {\n if (buffer.length > 0) {\n controller.enqueue({ type: \"text-delta\", text: buffer, id });\n buffer = \"\";\n }\n controller.enqueue(chunk);\n return;\n }\n if (chunk.id !== id && buffer.length > 0) {\n controller.enqueue({ type: \"text-delta\", text: buffer, id });\n buffer = \"\";\n }\n buffer += chunk.text;\n id = chunk.id;\n let match;\n while ((match = detectChunk(buffer)) != null) {\n controller.enqueue({ type: \"text-delta\", text: match, id });\n buffer = buffer.slice(match.length);\n await delay2(delayInMs);\n }\n }\n });\n };\n}\n\n// src/middleware/default-settings-middleware.ts\nfunction defaultSettingsMiddleware({\n settings\n}) {\n return {\n middlewareVersion: \"v2\",\n transformParams: async ({ params }) => {\n return mergeObjects(settings, params);\n }\n };\n}\n\n// src/util/get-potential-start-index.ts\nfunction getPotentialStartIndex(text2, searchedText) {\n if (searchedText.length === 0) {\n return null;\n }\n const directIndex = text2.indexOf(searchedText);\n if (directIndex !== -1) {\n return directIndex;\n }\n for (let i = text2.length - 1; i >= 0; i--) {\n const suffix = text2.substring(i);\n if (searchedText.startsWith(suffix)) {\n return i;\n }\n }\n return null;\n}\n\n// src/middleware/extract-reasoning-middleware.ts\nfunction extractReasoningMiddleware({\n tagName,\n separator = \"\\n\",\n startWithReasoning = false\n}) {\n const openingTag = `<${tagName}>`;\n const closingTag = `</${tagName}>`;\n return {\n middlewareVersion: \"v2\",\n wrapGenerate: async ({ doGenerate }) => {\n const { content, ...rest } = await doGenerate();\n const transformedContent = [];\n for (const part of content) {\n if (part.type !== \"text\") {\n transformedContent.push(part);\n continue;\n }\n const text2 = startWithReasoning ? openingTag + part.text : part.text;\n const regexp = new RegExp(`${openingTag}(.*?)${closingTag}`, \"gs\");\n const matches = Array.from(text2.matchAll(regexp));\n if (!matches.length) {\n transformedContent.push(part);\n continue;\n }\n const reasoningText = matches.map((match) => match[1]).join(separator);\n let textWithoutReasoning = text2;\n for (let i = matches.length - 1; i >= 0; i--) {\n const match = matches[i];\n const beforeMatch = textWithoutReasoning.slice(0, match.index);\n const afterMatch = textWithoutReasoning.slice(\n match.index + match[0].length\n );\n textWithoutReasoning = beforeMatch + (beforeMatch.length > 0 && afterMatch.length > 0 ? separator : \"\") + afterMatch;\n }\n transformedContent.push({\n type: \"reasoning\",\n text: reasoningText\n });\n transformedContent.push({\n type: \"text\",\n text: textWithoutReasoning\n });\n }\n return { content: transformedContent, ...rest };\n },\n wrapStream: async ({ doStream }) => {\n const { stream, ...rest } = await doStream();\n const reasoningExtractions = {};\n let delayedTextStart;\n return {\n stream: stream.pipeThrough(\n new TransformStream({\n transform: (chunk, controller) => {\n if (chunk.type === \"text-start\") {\n delayedTextStart = chunk;\n return;\n }\n if (chunk.type === \"text-end\" && delayedTextStart) {\n controller.enqueue(delayedTextStart);\n delayedTextStart = void 0;\n }\n if (chunk.type !== \"text-delta\") {\n controller.enqueue(chunk);\n return;\n }\n if (reasoningExtractions[chunk.id] == null) {\n reasoningExtractions[chunk.id] = {\n isFirstReasoning: true,\n isFirstText: true,\n afterSwitch: false,\n isReasoning: startWithReasoning,\n buffer: \"\",\n idCounter: 0,\n textId: chunk.id\n };\n }\n const activeExtraction = reasoningExtractions[chunk.id];\n activeExtraction.buffer += chunk.delta;\n function publish(text2) {\n if (text2.length > 0) {\n const prefix = activeExtraction.afterSwitch && (activeExtraction.isReasoning ? !activeExtraction.isFirstReasoning : !activeExtraction.isFirstText) ? separator : \"\";\n if (activeExtraction.isReasoning && (activeExtraction.afterSwitch || activeExtraction.isFirstReasoning)) {\n controller.enqueue({\n type: \"reasoning-start\",\n id: `reasoning-${activeExtraction.idCounter}`\n });\n }\n if (activeExtraction.isReasoning) {\n controller.enqueue({\n type: \"reasoning-delta\",\n delta: prefix + text2,\n id: `reasoning-${activeExtraction.idCounter}`\n });\n } else {\n if (delayedTextStart) {\n controller.enqueue(delayedTextStart);\n delayedTextStart = void 0;\n }\n controller.enqueue({\n type: \"text-delta\",\n delta: prefix + text2,\n id: activeExtraction.textId\n });\n }\n activeExtraction.afterSwitch = false;\n if (activeExtraction.isReasoning) {\n activeExtraction.isFirstReasoning = false;\n } else {\n activeExtraction.isFirstText = false;\n }\n }\n }\n do {\n const nextTag = activeExtraction.isReasoning ? closingTag : openingTag;\n const startIndex = getPotentialStartIndex(\n activeExtraction.buffer,\n nextTag\n );\n if (startIndex == null) {\n publish(activeExtraction.buffer);\n activeExtraction.buffer = \"\";\n break;\n }\n publish(activeExtraction.buffer.slice(0, startIndex));\n const foundFullMatch = startIndex + nextTag.length <= activeExtraction.buffer.length;\n if (foundFullMatch) {\n activeExtraction.buffer = activeExtraction.buffer.slice(\n startIndex + nextTag.length\n );\n if (activeExtraction.isReasoning) {\n controller.enqueue({\n type: \"reasoning-end\",\n id: `reasoning-${activeExtraction.idCounter++}`\n });\n }\n activeExtraction.isReasoning = !activeExtraction.isReasoning;\n activeExtraction.afterSwitch = true;\n } else {\n activeExtraction.buffer = activeExtraction.buffer.slice(startIndex);\n break;\n }\n } while (true);\n }\n })\n ),\n ...rest\n };\n }\n };\n}\n\n// src/middleware/simulate-streaming-middleware.ts\nfunction simulateStreamingMiddleware() {\n return {\n middlewareVersion: \"v2\",\n wrapStream: async ({ doGenerate }) => {\n const result = await doGenerate();\n let id = 0;\n const simulatedStream = new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: \"stream-start\",\n warnings: result.warnings\n });\n controller.enqueue({ type: \"response-metadata\", ...result.response });\n for (const part of result.content) {\n switch (part.type) {\n case \"text\": {\n if (part.text.length > 0) {\n controller.enqueue({ type: \"text-start\", id: String(id) });\n controller.enqueue({\n type: \"text-delta\",\n id: String(id),\n delta: part.text\n });\n controller.enqueue({ type: \"text-end\", id: String(id) });\n id++;\n }\n break;\n }\n case \"reasoning\": {\n controller.enqueue({\n type: \"reasoning-start\",\n id: String(id),\n providerMetadata: part.providerMetadata\n });\n controller.enqueue({\n type: \"reasoning-delta\",\n id: String(id),\n delta: part.text\n });\n controller.enqueue({ type: \"reasoning-end\", id: String(id) });\n id++;\n break;\n }\n default: {\n controller.enqueue(part);\n break;\n }\n }\n }\n controller.enqueue({\n type: \"finish\",\n finishReason: result.finishReason,\n usage: result.usage,\n providerMetadata: result.providerMetadata\n });\n controller.close();\n }\n });\n return {\n stream: simulatedStream,\n request: result.request,\n response: result.response\n };\n }\n };\n}\n\n// src/middleware/wrap-language-model.ts\nvar wrapLanguageModel = ({\n model,\n middleware: middlewareArg,\n modelId,\n providerId\n}) => {\n return asArray(middlewareArg).reverse().reduce((wrappedModel, middleware) => {\n return doWrap({ model: wrappedModel, middleware, modelId, providerId });\n }, model);\n};\nvar doWrap = ({\n model,\n middleware: {\n transformParams,\n wrapGenerate,\n wrapStream,\n overrideProvider,\n overrideModelId,\n overrideSupportedUrls\n },\n modelId,\n providerId\n}) => {\n var _a17, _b, _c;\n async function doTransform({\n params,\n type\n }) {\n return transformParams ? await transformParams({ params, type, model }) : params;\n }\n return {\n specificationVersion: \"v2\",\n provider: (_a17 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a17 : model.provider,\n modelId: (_b = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b : model.modelId,\n supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,\n async doGenerate(params) {\n const transformedParams = await doTransform({ params, type: \"generate\" });\n const doGenerate = async () => model.doGenerate(transformedParams);\n const doStream = async () => model.doStream(transformedParams);\n return wrapGenerate ? wrapGenerate({\n doGenerate,\n doStream,\n params: transformedParams,\n model\n }) : doGenerate();\n },\n async doStream(params) {\n const transformedParams = await doTransform({ params, type: \"stream\" });\n const doGenerate = async () => model.doGenerate(transformedParams);\n const doStream = async () => model.doStream(transformedParams);\n return wrapStream ? wrapStream({ doGenerate, doStream, params: transformedParams, model }) : doStream();\n }\n };\n};\n\n// src/middleware/wrap-provider.ts\nfunction wrapProvider({\n provider,\n languageModelMiddleware\n}) {\n const wrappedProvider = {\n languageModel(modelId) {\n let model = provider.languageModel(modelId);\n model = wrapLanguageModel({\n model,\n middleware: languageModelMiddleware\n });\n return model;\n },\n textEmbeddingModel: provider.textEmbeddingModel,\n imageModel: provider.imageModel,\n transcriptionModel: provider.transcriptionModel,\n speechModel: provider.speechModel\n };\n return wrappedProvider;\n}\n\n// src/registry/custom-provider.ts\nimport {\n NoSuchModelError as NoSuchModelError2\n} from \"@ai-sdk/provider\";\nfunction customProvider({\n languageModels,\n textEmbeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n fallbackProvider\n}) {\n return {\n languageModel(modelId) {\n if (languageModels != null && modelId in languageModels) {\n return languageModels[modelId];\n }\n if (fallbackProvider) {\n return fallbackProvider.languageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"languageModel\" });\n },\n textEmbeddingModel(modelId) {\n if (textEmbeddingModels != null && modelId in textEmbeddingModels) {\n return textEmbeddingModels[modelId];\n }\n if (fallbackProvider) {\n return fallbackProvider.textEmbeddingModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"textEmbeddingModel\" });\n },\n imageModel(modelId) {\n if (imageModels != null && modelId in imageModels) {\n return imageModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.imageModel) {\n return fallbackProvider.imageModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"imageModel\" });\n },\n transcriptionModel(modelId) {\n if (transcriptionModels != null && modelId in transcriptionModels) {\n return transcriptionModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.transcriptionModel) {\n return fallbackProvider.transcriptionModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"transcriptionModel\" });\n },\n speechModel(modelId) {\n if (speechModels != null && modelId in speechModels) {\n return speechModels[modelId];\n }\n if (fallbackProvider == null ? void 0 : fallbackProvider.speechModel) {\n return fallbackProvider.speechModel(modelId);\n }\n throw new NoSuchModelError2({ modelId, modelType: \"speechModel\" });\n }\n };\n}\nvar experimental_customProvider = customProvider;\n\n// src/registry/no-such-provider-error.ts\nimport { AISDKError as AISDKError21, NoSuchModelError as NoSuchModelError3 } from \"@ai-sdk/provider\";\nvar name16 = \"AI_NoSuchProviderError\";\nvar marker16 = `vercel.ai.error.${name16}`;\nvar symbol16 = Symbol.for(marker16);\nvar _a16;\nvar NoSuchProviderError = class extends NoSuchModelError3 {\n constructor({\n modelId,\n modelType,\n providerId,\n availableProviders,\n message = `No such provider: ${providerId} (available providers: ${availableProviders.join()})`\n }) {\n super({ errorName: name16, modelId, modelType, message });\n this[_a16] = true;\n this.providerId = providerId;\n this.availableProviders = availableProviders;\n }\n static isInstance(error) {\n return AISDKError21.hasMarker(error, marker16);\n }\n};\n_a16 = symbol16;\n\n// src/registry/provider-registry.ts\nimport {\n NoSuchModelError as NoSuchModelError4\n} from \"@ai-sdk/provider\";\nfunction createProviderRegistry(providers, {\n separator = \":\",\n languageModelMiddleware\n} = {}) {\n const registry = new DefaultProviderRegistry({\n separator,\n languageModelMiddleware\n });\n for (const [id, provider] of Object.entries(providers)) {\n registry.registerProvider({ id, provider });\n }\n return registry;\n}\nvar experimental_createProviderRegistry = createProviderRegistry;\nvar DefaultProviderRegistry = class {\n constructor({\n separator,\n languageModelMiddleware\n }) {\n this.providers = {};\n this.separator = separator;\n this.languageModelMiddleware = languageModelMiddleware;\n }\n registerProvider({\n id,\n provider\n }) {\n this.providers[id] = provider;\n }\n getProvider(id, modelType) {\n const provider = this.providers[id];\n if (provider == null) {\n throw new NoSuchProviderError({\n modelId: id,\n modelType,\n providerId: id,\n availableProviders: Object.keys(this.providers)\n });\n }\n return provider;\n }\n splitId(id, modelType) {\n const index = id.indexOf(this.separator);\n if (index === -1) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType,\n message: `Invalid ${modelType} id for registry: ${id} (must be in the format \"providerId${this.separator}modelId\")`\n });\n }\n return [id.slice(0, index), id.slice(index + this.separator.length)];\n }\n languageModel(id) {\n var _a17, _b;\n const [providerId, modelId] = this.splitId(id, \"languageModel\");\n let model = (_b = (_a17 = this.getProvider(providerId, \"languageModel\")).languageModel) == null ? void 0 : _b.call(\n _a17,\n modelId\n );\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"languageModel\" });\n }\n if (this.languageModelMiddleware != null) {\n model = wrapLanguageModel({\n model,\n middleware: this.languageModelMiddleware\n });\n }\n return model;\n }\n textEmbeddingModel(id) {\n var _a17;\n const [providerId, modelId] = this.splitId(id, \"textEmbeddingModel\");\n const provider = this.getProvider(providerId, \"textEmbeddingModel\");\n const model = (_a17 = provider.textEmbeddingModel) == null ? void 0 : _a17.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"textEmbeddingModel\"\n });\n }\n return model;\n }\n imageModel(id) {\n var _a17;\n const [providerId, modelId] = this.splitId(id, \"imageModel\");\n const provider = this.getProvider(providerId, \"imageModel\");\n const model = (_a17 = provider.imageModel) == null ? void 0 : _a17.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"imageModel\" });\n }\n return model;\n }\n transcriptionModel(id) {\n var _a17;\n const [providerId, modelId] = this.splitId(id, \"transcriptionModel\");\n const provider = this.getProvider(providerId, \"transcriptionModel\");\n const model = (_a17 = provider.transcriptionModel) == null ? void 0 : _a17.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({\n modelId: id,\n modelType: \"transcriptionModel\"\n });\n }\n return model;\n }\n speechModel(id) {\n var _a17;\n const [providerId, modelId] = this.splitId(id, \"speechModel\");\n const provider = this.getProvider(providerId, \"speechModel\");\n const model = (_a17 = provider.speechModel) == null ? void 0 : _a17.call(provider, modelId);\n if (model == null) {\n throw new NoSuchModelError4({ modelId: id, modelType: \"speechModel\" });\n }\n return model;\n }\n};\n\n// src/tool/mcp/mcp-client.ts\nimport {\n dynamicTool,\n jsonSchema,\n tool\n} from \"@ai-sdk/provider-utils\";\n\n// src/tool/mcp/mcp-sse-transport.ts\nimport {\n EventSourceParserStream,\n withUserAgentSuffix as withUserAgentSuffix8,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent2\n} from \"@ai-sdk/provider-utils\";\n\n// src/tool/mcp/json-rpc-message.ts\nimport { z as z9 } from \"zod/v4\";\n\n// src/tool/mcp/types.ts\nimport { z as z8 } from \"zod/v4\";\nvar LATEST_PROTOCOL_VERSION = \"2025-06-18\";\nvar SUPPORTED_PROTOCOL_VERSIONS = [\n LATEST_PROTOCOL_VERSION,\n \"2025-03-26\",\n \"2024-11-05\"\n];\nvar ClientOrServerImplementationSchema = z8.looseObject({\n name: z8.string(),\n version: z8.string()\n});\nvar BaseParamsSchema = z8.looseObject({\n _meta: z8.optional(z8.object({}).loose())\n});\nvar ResultSchema = BaseParamsSchema;\nvar RequestSchema = z8.object({\n method: z8.string(),\n params: z8.optional(BaseParamsSchema)\n});\nvar ServerCapabilitiesSchema = z8.looseObject({\n experimental: z8.optional(z8.object({}).loose()),\n logging: z8.optional(z8.object({}).loose()),\n prompts: z8.optional(\n z8.looseObject({\n listChanged: z8.optional(z8.boolean())\n })\n ),\n resources: z8.optional(\n z8.looseObject({\n subscribe: z8.optional(z8.boolean()),\n listChanged: z8.optional(z8.boolean())\n })\n ),\n tools: z8.optional(\n z8.looseObject({\n listChanged: z8.optional(z8.boolean())\n })\n )\n});\nvar InitializeResultSchema = ResultSchema.extend({\n protocolVersion: z8.string(),\n capabilities: ServerCapabilitiesSchema,\n serverInfo: ClientOrServerImplementationSchema,\n instructions: z8.optional(z8.string())\n});\nvar PaginatedResultSchema = ResultSchema.extend({\n nextCursor: z8.optional(z8.string())\n});\nvar ToolSchema = z8.object({\n name: z8.string(),\n description: z8.optional(z8.string()),\n inputSchema: z8.object({\n type: z8.literal(\"object\"),\n properties: z8.optional(z8.object({}).loose())\n }).loose()\n}).loose();\nvar ListToolsResultSchema = PaginatedResultSchema.extend({\n tools: z8.array(ToolSchema)\n});\nvar TextContentSchema = z8.object({\n type: z8.literal(\"text\"),\n text: z8.string()\n}).loose();\nvar ImageContentSchema = z8.object({\n type: z8.literal(\"image\"),\n data: z8.base64(),\n mimeType: z8.string()\n}).loose();\nvar ResourceContentsSchema = z8.object({\n /**\n * The URI of this resource.\n */\n uri: z8.string(),\n /**\n * The MIME type of this resource, if known.\n */\n mimeType: z8.optional(z8.string())\n}).loose();\nvar TextResourceContentsSchema = ResourceContentsSchema.extend({\n text: z8.string()\n});\nvar BlobResourceContentsSchema = ResourceContentsSchema.extend({\n blob: z8.base64()\n});\nvar EmbeddedResourceSchema = z8.object({\n type: z8.literal(\"resource\"),\n resource: z8.union([TextResourceContentsSchema, BlobResourceContentsSchema])\n}).loose();\nvar CallToolResultSchema = ResultSchema.extend({\n content: z8.array(\n z8.union([TextContentSchema, ImageContentSchema, EmbeddedResourceSchema])\n ),\n isError: z8.boolean().default(false).optional()\n}).or(\n ResultSchema.extend({\n toolResult: z8.unknown()\n })\n);\n\n// src/tool/mcp/json-rpc-message.ts\nvar JSONRPC_VERSION = \"2.0\";\nvar JSONRPCRequestSchema = z9.object({\n jsonrpc: z9.literal(JSONRPC_VERSION),\n id: z9.union([z9.string(), z9.number().int()])\n}).merge(RequestSchema).strict();\nvar JSONRPCResponseSchema = z9.object({\n jsonrpc: z9.literal(JSONRPC_VERSION),\n id: z9.union([z9.string(), z9.number().int()]),\n result: ResultSchema\n}).strict();\nvar JSONRPCErrorSchema = z9.object({\n jsonrpc: z9.literal(JSONRPC_VERSION),\n id: z9.union([z9.string(), z9.number().int()]),\n error: z9.object({\n code: z9.number().int(),\n message: z9.string(),\n data: z9.optional(z9.unknown())\n })\n}).strict();\nvar JSONRPCNotificationSchema = z9.object({\n jsonrpc: z9.literal(JSONRPC_VERSION)\n}).merge(\n z9.object({\n method: z9.string(),\n params: z9.optional(BaseParamsSchema)\n })\n).strict();\nvar JSONRPCMessageSchema = z9.union([\n JSONRPCRequestSchema,\n JSONRPCNotificationSchema,\n JSONRPCResponseSchema,\n JSONRPCErrorSchema\n]);\n\n// src/tool/mcp/mcp-sse-transport.ts\nvar SseMCPTransport = class {\n constructor({\n url,\n headers\n }) {\n this.connected = false;\n this.url = new URL(url);\n this.headers = headers;\n }\n async start() {\n return new Promise((resolve2, reject) => {\n if (this.connected) {\n return resolve2();\n }\n this.abortController = new AbortController();\n const establishConnection = async () => {\n var _a17, _b, _c;\n try {\n const headers = withUserAgentSuffix8(\n {\n ...this.headers,\n Accept: \"text/event-stream\"\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent2()\n );\n const response = await fetch(this.url.href, {\n headers,\n signal: (_a17 = this.abortController) == null ? void 0 : _a17.signal\n });\n if (!response.ok || !response.body) {\n const error = new MCPClientError({\n message: `MCP SSE Transport Error: ${response.status} ${response.statusText}`\n });\n (_b = this.onerror) == null ? void 0 : _b.call(this, error);\n return reject(error);\n }\n const stream = response.body.pipeThrough(new TextDecoderStream()).pipeThrough(new EventSourceParserStream());\n const reader = stream.getReader();\n const processEvents = async () => {\n var _a18, _b2, _c2;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n if (this.connected) {\n this.connected = false;\n throw new MCPClientError({\n message: \"MCP SSE Transport Error: Connection closed unexpectedly\"\n });\n }\n return;\n }\n const { event, data } = value;\n if (event === \"endpoint\") {\n this.endpoint = new URL(data, this.url);\n if (this.endpoint.origin !== this.url.origin) {\n throw new MCPClientError({\n message: `MCP SSE Transport Error: Endpoint origin does not match connection origin: ${this.endpoint.origin}`\n });\n }\n this.connected = true;\n resolve2();\n } else if (event === \"message\") {\n try {\n const message = JSONRPCMessageSchema.parse(\n JSON.parse(data)\n );\n (_a18 = this.onmessage) == null ? void 0 : _a18.call(this, message);\n } catch (error) {\n const e = new MCPClientError({\n message: \"MCP SSE Transport Error: Failed to parse message\",\n cause: error\n });\n (_b2 = this.onerror) == null ? void 0 : _b2.call(this, e);\n }\n }\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n (_c2 = this.onerror) == null ? void 0 : _c2.call(this, error);\n reject(error);\n }\n };\n this.sseConnection = {\n close: () => reader.cancel()\n };\n processEvents();\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n (_c = this.onerror) == null ? void 0 : _c.call(this, error);\n reject(error);\n }\n };\n establishConnection();\n });\n }\n async close() {\n var _a17, _b, _c;\n this.connected = false;\n (_a17 = this.sseConnection) == null ? void 0 : _a17.close();\n (_b = this.abortController) == null ? void 0 : _b.abort();\n (_c = this.onclose) == null ? void 0 : _c.call(this);\n }\n async send(message) {\n var _a17, _b, _c;\n if (!this.endpoint || !this.connected) {\n throw new MCPClientError({\n message: \"MCP SSE Transport Error: Not connected\"\n });\n }\n try {\n const headers = withUserAgentSuffix8(\n {\n ...this.headers,\n \"Content-Type\": \"application/json\"\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent2()\n );\n const init = {\n method: \"POST\",\n headers,\n body: JSON.stringify(message),\n signal: (_a17 = this.abortController) == null ? void 0 : _a17.signal\n };\n const response = await fetch(this.endpoint, init);\n if (!response.ok) {\n const text2 = await response.text().catch(() => null);\n const error = new MCPClientError({\n message: `MCP SSE Transport Error: POSTing to endpoint (HTTP ${response.status}): ${text2}`\n });\n (_b = this.onerror) == null ? void 0 : _b.call(this, error);\n return;\n }\n } catch (error) {\n (_c = this.onerror) == null ? void 0 : _c.call(this, error);\n return;\n }\n }\n};\n\n// src/tool/mcp/mcp-transport.ts\nfunction createMcpTransport(config) {\n if (config.type !== \"sse\") {\n throw new MCPClientError({\n message: \"Unsupported or invalid transport configuration. If you are using a custom transport, make sure it implements the MCPTransport interface.\"\n });\n }\n return new SseMCPTransport(config);\n}\nfunction isCustomMcpTransport(transport) {\n return \"start\" in transport && typeof transport.start === \"function\" && \"send\" in transport && typeof transport.send === \"function\" && \"close\" in transport && typeof transport.close === \"function\";\n}\n\n// src/tool/mcp/mcp-client.ts\nvar CLIENT_VERSION = \"1.0.0\";\nasync function createMCPClient(config) {\n const client = new DefaultMCPClient(config);\n await client.init();\n return client;\n}\nvar DefaultMCPClient = class {\n constructor({\n transport: transportConfig,\n name: name17 = \"ai-sdk-mcp-client\",\n onUncaughtError\n }) {\n this.requestMessageId = 0;\n this.responseHandlers = /* @__PURE__ */ new Map();\n this.serverCapabilities = {};\n this.isClosed = true;\n this.onUncaughtError = onUncaughtError;\n if (isCustomMcpTransport(transportConfig)) {\n this.transport = transportConfig;\n } else {\n this.transport = createMcpTransport(transportConfig);\n }\n this.transport.onclose = () => this.onClose();\n this.transport.onerror = (error) => this.onError(error);\n this.transport.onmessage = (message) => {\n if (\"method\" in message) {\n this.onError(\n new MCPClientError({\n message: \"Unsupported message type\"\n })\n );\n return;\n }\n this.onResponse(message);\n };\n this.clientInfo = {\n name: name17,\n version: CLIENT_VERSION\n };\n }\n async init() {\n try {\n await this.transport.start();\n this.isClosed = false;\n const result = await this.request({\n request: {\n method: \"initialize\",\n params: {\n protocolVersion: LATEST_PROTOCOL_VERSION,\n capabilities: {},\n clientInfo: this.clientInfo\n }\n },\n resultSchema: InitializeResultSchema\n });\n if (result === void 0) {\n throw new MCPClientError({\n message: \"Server sent invalid initialize result\"\n });\n }\n if (!SUPPORTED_PROTOCOL_VERSIONS.includes(result.protocolVersion)) {\n throw new MCPClientError({\n message: `Server's protocol version is not supported: ${result.protocolVersion}`\n });\n }\n this.serverCapabilities = result.capabilities;\n await this.notification({\n method: \"notifications/initialized\"\n });\n return this;\n } catch (error) {\n await this.close();\n throw error;\n }\n }\n async close() {\n var _a17;\n if (this.isClosed)\n return;\n await ((_a17 = this.transport) == null ? void 0 : _a17.close());\n this.onClose();\n }\n assertCapability(method) {\n switch (method) {\n case \"initialize\":\n break;\n case \"tools/list\":\n case \"tools/call\":\n if (!this.serverCapabilities.tools) {\n throw new MCPClientError({\n message: `Server does not support tools`\n });\n }\n break;\n default:\n throw new MCPClientError({\n message: `Unsupported method: ${method}`\n });\n }\n }\n async request({\n request,\n resultSchema,\n options\n }) {\n return new Promise((resolve2, reject) => {\n if (this.isClosed) {\n return reject(\n new MCPClientError({\n message: \"Attempted to send a request from a closed client\"\n })\n );\n }\n this.assertCapability(request.method);\n const signal = options == null ? void 0 : options.signal;\n signal == null ? void 0 : signal.throwIfAborted();\n const messageId = this.requestMessageId++;\n const jsonrpcRequest = {\n ...request,\n jsonrpc: \"2.0\",\n id: messageId\n };\n const cleanup = () => {\n this.responseHandlers.delete(messageId);\n };\n this.responseHandlers.set(messageId, (response) => {\n if (signal == null ? void 0 : signal.aborted) {\n return reject(\n new MCPClientError({\n message: \"Request was aborted\",\n cause: signal.reason\n })\n );\n }\n if (response instanceof Error) {\n return reject(response);\n }\n try {\n const result = resultSchema.parse(response.result);\n resolve2(result);\n } catch (error) {\n const parseError = new MCPClientError({\n message: \"Failed to parse server response\",\n cause: error\n });\n reject(parseError);\n }\n });\n this.transport.send(jsonrpcRequest).catch((error) => {\n cleanup();\n reject(error);\n });\n });\n }\n async listTools({\n params,\n options\n } = {}) {\n try {\n return this.request({\n request: { method: \"tools/list\", params },\n resultSchema: ListToolsResultSchema,\n options\n });\n } catch (error) {\n throw error;\n }\n }\n async callTool({\n name: name17,\n args,\n options\n }) {\n try {\n return this.request({\n request: { method: \"tools/call\", params: { name: name17, arguments: args } },\n resultSchema: CallToolResultSchema,\n options: {\n signal: options == null ? void 0 : options.abortSignal\n }\n });\n } catch (error) {\n throw error;\n }\n }\n async notification(notification) {\n const jsonrpcNotification = {\n ...notification,\n jsonrpc: \"2.0\"\n };\n await this.transport.send(jsonrpcNotification);\n }\n /**\n * Returns a set of AI SDK tools from the MCP server\n * @returns A record of tool names to their implementations\n */\n async tools({\n schemas = \"automatic\"\n } = {}) {\n var _a17;\n const tools = {};\n try {\n const listToolsResult = await this.listTools();\n for (const { name: name17, description, inputSchema } of listToolsResult.tools) {\n if (schemas !== \"automatic\" && !(name17 in schemas)) {\n continue;\n }\n const self = this;\n const execute = async (args, options) => {\n var _a18;\n (_a18 = options == null ? void 0 : options.abortSignal) == null ? void 0 : _a18.throwIfAborted();\n return self.callTool({ name: name17, args, options });\n };\n const toolWithExecute = schemas === \"automatic\" ? dynamicTool({\n description,\n inputSchema: jsonSchema({\n ...inputSchema,\n properties: (_a17 = inputSchema.properties) != null ? _a17 : {},\n additionalProperties: false\n }),\n execute\n }) : tool({\n description,\n inputSchema: schemas[name17].inputSchema,\n execute\n });\n tools[name17] = toolWithExecute;\n }\n return tools;\n } catch (error) {\n throw error;\n }\n }\n onClose() {\n if (this.isClosed)\n return;\n this.isClosed = true;\n const error = new MCPClientError({\n message: \"Connection closed\"\n });\n for (const handler of this.responseHandlers.values()) {\n handler(error);\n }\n this.responseHandlers.clear();\n }\n onError(error) {\n if (this.onUncaughtError) {\n this.onUncaughtError(error);\n }\n }\n onResponse(response) {\n const messageId = Number(response.id);\n const handler = this.responseHandlers.get(messageId);\n if (handler === void 0) {\n throw new MCPClientError({\n message: `Protocol error: Received a response for an unknown message ID: ${JSON.stringify(\n response\n )}`\n });\n }\n this.responseHandlers.delete(messageId);\n handler(\n \"result\" in response ? response : new MCPClientError({\n message: response.error.message,\n cause: response.error\n })\n );\n }\n};\n\n// src/transcribe/transcribe.ts\nimport { withUserAgentSuffix as withUserAgentSuffix9 } from \"@ai-sdk/provider-utils\";\n\n// src/error/no-transcript-generated-error.ts\nimport { AISDKError as AISDKError22 } from \"@ai-sdk/provider\";\nvar NoTranscriptGeneratedError = class extends AISDKError22 {\n constructor(options) {\n super({\n name: \"AI_NoTranscriptGeneratedError\",\n message: \"No transcript generated.\"\n });\n this.responses = options.responses;\n }\n};\n\n// src/transcribe/transcribe.ts\nasync function transcribe({\n model,\n audio,\n providerOptions = {},\n maxRetries: maxRetriesArg,\n abortSignal,\n headers\n}) {\n if (model.specificationVersion !== \"v2\") {\n throw new UnsupportedModelVersionError({\n version: model.specificationVersion,\n provider: model.provider,\n modelId: model.modelId\n });\n }\n const { retry } = prepareRetries({\n maxRetries: maxRetriesArg,\n abortSignal\n });\n const headersWithUserAgent = withUserAgentSuffix9(\n headers != null ? headers : {},\n `ai/${VERSION}`\n );\n const audioData = audio instanceof URL ? (await download({ url: audio })).data : convertDataContentToUint8Array(audio);\n const result = await retry(\n () => {\n var _a17;\n return model.doGenerate({\n audio: audioData,\n abortSignal,\n headers: headersWithUserAgent,\n providerOptions,\n mediaType: (_a17 = detectMediaType({\n data: audioData,\n signatures: audioMediaTypeSignatures\n })) != null ? _a17 : \"audio/wav\"\n });\n }\n );\n logWarnings(result.warnings);\n if (!result.text) {\n throw new NoTranscriptGeneratedError({ responses: [result.response] });\n }\n return new DefaultTranscriptionResult({\n text: result.text,\n segments: result.segments,\n language: result.language,\n durationInSeconds: result.durationInSeconds,\n warnings: result.warnings,\n responses: [result.response],\n providerMetadata: result.providerMetadata\n });\n}\nvar DefaultTranscriptionResult = class {\n constructor(options) {\n var _a17;\n this.text = options.text;\n this.segments = options.segments;\n this.language = options.language;\n this.durationInSeconds = options.durationInSeconds;\n this.warnings = options.warnings;\n this.responses = options.responses;\n this.providerMetadata = (_a17 = options.providerMetadata) != null ? _a17 : {};\n }\n};\n\n// src/ui/call-completion-api.ts\nimport {\n parseJsonEventStream,\n withUserAgentSuffix as withUserAgentSuffix10,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent3\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui/process-text-stream.ts\nasync function processTextStream({\n stream,\n onTextPart\n}) {\n const reader = stream.pipeThrough(new TextDecoderStream()).getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n await onTextPart(value);\n }\n}\n\n// src/ui/call-completion-api.ts\nvar getOriginalFetch = () => fetch;\nasync function callCompletionApi({\n api,\n prompt,\n credentials,\n headers,\n body,\n streamProtocol = \"data\",\n setCompletion,\n setLoading,\n setError,\n setAbortController,\n onFinish,\n onError,\n fetch: fetch2 = getOriginalFetch()\n}) {\n var _a17;\n try {\n setLoading(true);\n setError(void 0);\n const abortController = new AbortController();\n setAbortController(abortController);\n setCompletion(\"\");\n const response = await fetch2(api, {\n method: \"POST\",\n body: JSON.stringify({\n prompt,\n ...body\n }),\n credentials,\n headers: withUserAgentSuffix10(\n {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent3()\n ),\n signal: abortController.signal\n }).catch((err) => {\n throw err;\n });\n if (!response.ok) {\n throw new Error(\n (_a17 = await response.text()) != null ? _a17 : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n let result = \"\";\n switch (streamProtocol) {\n case \"text\": {\n await processTextStream({\n stream: response.body,\n onTextPart: (chunk) => {\n result += chunk;\n setCompletion(result);\n }\n });\n break;\n }\n case \"data\": {\n await consumeStream({\n stream: parseJsonEventStream({\n stream: response.body,\n schema: uiMessageChunkSchema\n }).pipeThrough(\n new TransformStream({\n async transform(part) {\n if (!part.success) {\n throw part.error;\n }\n const streamPart = part.value;\n if (streamPart.type === \"text-delta\") {\n result += streamPart.delta;\n setCompletion(result);\n } else if (streamPart.type === \"error\") {\n throw new Error(streamPart.errorText);\n }\n }\n })\n ),\n onError: (error) => {\n throw error;\n }\n });\n break;\n }\n default: {\n const exhaustiveCheck = streamProtocol;\n throw new Error(`Unknown stream protocol: ${exhaustiveCheck}`);\n }\n }\n if (onFinish) {\n onFinish(prompt, result);\n }\n setAbortController(null);\n return result;\n } catch (err) {\n if (err.name === \"AbortError\") {\n setAbortController(null);\n return null;\n }\n if (err instanceof Error) {\n if (onError) {\n onError(err);\n }\n }\n setError(err);\n } finally {\n setLoading(false);\n }\n}\n\n// src/ui/chat.ts\nimport {\n generateId as generateIdFunc\n} from \"@ai-sdk/provider-utils\";\n\n// src/ui/convert-file-list-to-file-ui-parts.ts\nasync function convertFileListToFileUIParts(files) {\n if (files == null) {\n return [];\n }\n if (!globalThis.FileList || !(files instanceof globalThis.FileList)) {\n throw new Error(\"FileList is not supported in the current environment\");\n }\n return Promise.all(\n Array.from(files).map(async (file) => {\n const { name: name17, type } = file;\n const dataUrl = await new Promise((resolve2, reject) => {\n const reader = new FileReader();\n reader.onload = (readerEvent) => {\n var _a17;\n resolve2((_a17 = readerEvent.target) == null ? void 0 : _a17.result);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(file);\n });\n return {\n type: \"file\",\n mediaType: type,\n filename: name17,\n url: dataUrl\n };\n })\n );\n}\n\n// src/ui/default-chat-transport.ts\nimport { parseJsonEventStream as parseJsonEventStream2 } from \"@ai-sdk/provider-utils\";\n\n// src/ui/http-chat-transport.ts\nimport {\n resolve,\n withUserAgentSuffix as withUserAgentSuffix11,\n getRuntimeEnvironmentUserAgent as getRuntimeEnvironmentUserAgent4\n} from \"@ai-sdk/provider-utils\";\nvar HttpChatTransport = class {\n constructor({\n api = \"/api/chat\",\n credentials,\n headers,\n body,\n fetch: fetch2,\n prepareSendMessagesRequest,\n prepareReconnectToStreamRequest\n }) {\n this.api = api;\n this.credentials = credentials;\n this.headers = headers;\n this.body = body;\n this.fetch = fetch2;\n this.prepareSendMessagesRequest = prepareSendMessagesRequest;\n this.prepareReconnectToStreamRequest = prepareReconnectToStreamRequest;\n }\n async sendMessages({\n abortSignal,\n ...options\n }) {\n var _a17, _b, _c, _d, _e;\n const resolvedBody = await resolve(this.body);\n const resolvedHeaders = await resolve(this.headers);\n const resolvedCredentials = await resolve(this.credentials);\n const preparedRequest = await ((_a17 = this.prepareSendMessagesRequest) == null ? void 0 : _a17.call(this, {\n api: this.api,\n id: options.chatId,\n messages: options.messages,\n body: { ...resolvedBody, ...options.body },\n headers: { ...resolvedHeaders, ...options.headers },\n credentials: resolvedCredentials,\n requestMetadata: options.metadata,\n trigger: options.trigger,\n messageId: options.messageId\n }));\n const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : this.api;\n const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? preparedRequest.headers : { ...resolvedHeaders, ...options.headers };\n const body = (preparedRequest == null ? void 0 : preparedRequest.body) !== void 0 ? preparedRequest.body : {\n ...resolvedBody,\n ...options.body,\n id: options.chatId,\n messages: options.messages,\n trigger: options.trigger,\n messageId: options.messageId\n };\n const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;\n const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;\n const response = await fetch2(api, {\n method: \"POST\",\n headers: withUserAgentSuffix11(\n {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent4()\n ),\n body: JSON.stringify(body),\n credentials,\n signal: abortSignal\n });\n if (!response.ok) {\n throw new Error(\n (_e = await response.text()) != null ? _e : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n return this.processResponseStream(response.body);\n }\n async reconnectToStream(options) {\n var _a17, _b, _c, _d, _e;\n const resolvedBody = await resolve(this.body);\n const resolvedHeaders = await resolve(this.headers);\n const resolvedCredentials = await resolve(this.credentials);\n const preparedRequest = await ((_a17 = this.prepareReconnectToStreamRequest) == null ? void 0 : _a17.call(this, {\n api: this.api,\n id: options.chatId,\n body: { ...resolvedBody, ...options.body },\n headers: { ...resolvedHeaders, ...options.headers },\n credentials: resolvedCredentials,\n requestMetadata: options.metadata\n }));\n const api = (_b = preparedRequest == null ? void 0 : preparedRequest.api) != null ? _b : `${this.api}/${options.chatId}/stream`;\n const headers = (preparedRequest == null ? void 0 : preparedRequest.headers) !== void 0 ? preparedRequest.headers : { ...resolvedHeaders, ...options.headers };\n const credentials = (_c = preparedRequest == null ? void 0 : preparedRequest.credentials) != null ? _c : resolvedCredentials;\n const fetch2 = (_d = this.fetch) != null ? _d : globalThis.fetch;\n const response = await fetch2(api, {\n method: \"GET\",\n headers: withUserAgentSuffix11(\n headers,\n `ai-sdk/${VERSION}`,\n getRuntimeEnvironmentUserAgent4()\n ),\n credentials\n });\n if (response.status === 204) {\n return null;\n }\n if (!response.ok) {\n throw new Error(\n (_e = await response.text()) != null ? _e : \"Failed to fetch the chat response.\"\n );\n }\n if (!response.body) {\n throw new Error(\"The response body is empty.\");\n }\n return this.processResponseStream(response.body);\n }\n};\n\n// src/ui/default-chat-transport.ts\nvar DefaultChatTransport = class extends HttpChatTransport {\n constructor(options = {}) {\n super(options);\n }\n processResponseStream(stream) {\n return parseJsonEventStream2({\n stream,\n schema: uiMessageChunkSchema\n }).pipeThrough(\n new TransformStream({\n async transform(chunk, controller) {\n if (!chunk.success) {\n throw chunk.error;\n }\n controller.enqueue(chunk.value);\n }\n })\n );\n }\n};\n\n// src/ui/chat.ts\nvar AbstractChat = class {\n constructor({\n generateId: generateId3 = generateIdFunc,\n id = generateId3(),\n transport = new DefaultChatTransport(),\n messageMetadataSchema,\n dataPartSchemas,\n state,\n onError,\n onToolCall,\n onFinish,\n onData,\n sendAutomaticallyWhen\n }) {\n this.activeResponse = void 0;\n this.jobExecutor = new SerialJobExecutor();\n /**\n * Appends or replaces a user message to the chat list. This triggers the API call to fetch\n * the assistant's response.\n *\n * If a messageId is provided, the message will be replaced.\n */\n this.sendMessage = async (message, options) => {\n var _a17, _b, _c, _d;\n if (message == null) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_a17 = this.lastMessage) == null ? void 0 : _a17.id,\n ...options\n });\n return;\n }\n let uiMessage;\n if (\"text\" in message || \"files\" in message) {\n const fileParts = Array.isArray(message.files) ? message.files : await convertFileListToFileUIParts(message.files);\n uiMessage = {\n parts: [\n ...fileParts,\n ...\"text\" in message && message.text != null ? [{ type: \"text\", text: message.text }] : []\n ]\n };\n } else {\n uiMessage = message;\n }\n if (message.messageId != null) {\n const messageIndex = this.state.messages.findIndex(\n (m) => m.id === message.messageId\n );\n if (messageIndex === -1) {\n throw new Error(`message with id ${message.messageId} not found`);\n }\n if (this.state.messages[messageIndex].role !== \"user\") {\n throw new Error(\n `message with id ${message.messageId} is not a user message`\n );\n }\n this.state.messages = this.state.messages.slice(0, messageIndex + 1);\n this.state.replaceMessage(messageIndex, {\n ...uiMessage,\n id: message.messageId,\n role: (_b = uiMessage.role) != null ? _b : \"user\",\n metadata: message.metadata\n });\n } else {\n this.state.pushMessage({\n ...uiMessage,\n id: (_c = uiMessage.id) != null ? _c : this.generateId(),\n role: (_d = uiMessage.role) != null ? _d : \"user\",\n metadata: message.metadata\n });\n }\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: message.messageId,\n ...options\n });\n };\n /**\n * Regenerate the assistant message with the provided message id.\n * If no message id is provided, the last assistant message will be regenerated.\n */\n this.regenerate = async ({\n messageId,\n ...options\n } = {}) => {\n const messageIndex = messageId == null ? this.state.messages.length - 1 : this.state.messages.findIndex((message) => message.id === messageId);\n if (messageIndex === -1) {\n throw new Error(`message ${messageId} not found`);\n }\n this.state.messages = this.state.messages.slice(\n 0,\n // if the message is a user message, we need to include it in the request:\n this.messages[messageIndex].role === \"assistant\" ? messageIndex : messageIndex + 1\n );\n await this.makeRequest({\n trigger: \"regenerate-message\",\n messageId,\n ...options\n });\n };\n /**\n * Attempt to resume an ongoing streaming response.\n */\n this.resumeStream = async (options = {}) => {\n await this.makeRequest({ trigger: \"resume-stream\", ...options });\n };\n /**\n * Clear the error state and set the status to ready if the chat is in an error state.\n */\n this.clearError = () => {\n if (this.status === \"error\") {\n this.state.error = void 0;\n this.setStatus({ status: \"ready\" });\n }\n };\n this.addToolResult = async ({\n tool: tool3,\n toolCallId,\n output\n }) => this.jobExecutor.run(async () => {\n var _a17, _b;\n const messages = this.state.messages;\n const lastMessage = messages[messages.length - 1];\n this.state.replaceMessage(messages.length - 1, {\n ...lastMessage,\n parts: lastMessage.parts.map(\n (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? { ...part, state: \"output-available\", output } : part\n )\n });\n if (this.activeResponse) {\n this.activeResponse.state.message.parts = this.activeResponse.state.message.parts.map(\n (part) => isToolOrDynamicToolUIPart(part) && part.toolCallId === toolCallId ? {\n ...part,\n state: \"output-available\",\n output,\n errorText: void 0\n } : part\n );\n }\n if (this.status !== \"streaming\" && this.status !== \"submitted\" && ((_a17 = this.sendAutomaticallyWhen) == null ? void 0 : _a17.call(this, { messages: this.state.messages }))) {\n this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_b = this.lastMessage) == null ? void 0 : _b.id\n });\n }\n });\n /**\n * Abort the current request immediately, keep the generated tokens if any.\n */\n this.stop = async () => {\n var _a17;\n if (this.status !== \"streaming\" && this.status !== \"submitted\")\n return;\n if ((_a17 = this.activeResponse) == null ? void 0 : _a17.abortController) {\n this.activeResponse.abortController.abort();\n }\n };\n this.id = id;\n this.transport = transport;\n this.generateId = generateId3;\n this.messageMetadataSchema = messageMetadataSchema;\n this.dataPartSchemas = dataPartSchemas;\n this.state = state;\n this.onError = onError;\n this.onToolCall = onToolCall;\n this.onFinish = onFinish;\n this.onData = onData;\n this.sendAutomaticallyWhen = sendAutomaticallyWhen;\n }\n /**\n * Hook status:\n *\n * - `submitted`: The message has been sent to the API and we're awaiting the start of the response stream.\n * - `streaming`: The response is actively streaming in from the API, receiving chunks of data.\n * - `ready`: The full response has been received and processed; a new user message can be submitted.\n * - `error`: An error occurred during the API request, preventing successful completion.\n */\n get status() {\n return this.state.status;\n }\n setStatus({\n status,\n error\n }) {\n if (this.status === status)\n return;\n this.state.status = status;\n this.state.error = error;\n }\n get error() {\n return this.state.error;\n }\n get messages() {\n return this.state.messages;\n }\n get lastMessage() {\n return this.state.messages[this.state.messages.length - 1];\n }\n set messages(messages) {\n this.state.messages = messages;\n }\n async makeRequest({\n trigger,\n metadata,\n headers,\n body,\n messageId\n }) {\n var _a17, _b, _c;\n this.setStatus({ status: \"submitted\", error: void 0 });\n const lastMessage = this.lastMessage;\n let isAbort = false;\n let isDisconnect = false;\n let isError = false;\n try {\n const activeResponse = {\n state: createStreamingUIMessageState({\n lastMessage: this.state.snapshot(lastMessage),\n messageId: this.generateId()\n }),\n abortController: new AbortController()\n };\n activeResponse.abortController.signal.addEventListener(\"abort\", () => {\n isAbort = true;\n });\n this.activeResponse = activeResponse;\n let stream;\n if (trigger === \"resume-stream\") {\n const reconnect = await this.transport.reconnectToStream({\n chatId: this.id,\n metadata,\n headers,\n body\n });\n if (reconnect == null) {\n this.setStatus({ status: \"ready\" });\n return;\n }\n stream = reconnect;\n } else {\n stream = await this.transport.sendMessages({\n chatId: this.id,\n messages: this.state.messages,\n abortSignal: activeResponse.abortController.signal,\n metadata,\n headers,\n body,\n trigger,\n messageId\n });\n }\n const runUpdateMessageJob = (job) => (\n // serialize the job execution to avoid race conditions:\n this.jobExecutor.run(\n () => job({\n state: activeResponse.state,\n write: () => {\n var _a18;\n this.setStatus({ status: \"streaming\" });\n const replaceLastMessage = activeResponse.state.message.id === ((_a18 = this.lastMessage) == null ? void 0 : _a18.id);\n if (replaceLastMessage) {\n this.state.replaceMessage(\n this.state.messages.length - 1,\n activeResponse.state.message\n );\n } else {\n this.state.pushMessage(activeResponse.state.message);\n }\n }\n })\n )\n );\n await consumeStream({\n stream: processUIMessageStream({\n stream,\n onToolCall: this.onToolCall,\n onData: this.onData,\n messageMetadataSchema: this.messageMetadataSchema,\n dataPartSchemas: this.dataPartSchemas,\n runUpdateMessageJob,\n onError: (error) => {\n throw error;\n }\n }),\n onError: (error) => {\n throw error;\n }\n });\n this.setStatus({ status: \"ready\" });\n } catch (err) {\n if (isAbort || err.name === \"AbortError\") {\n isAbort = true;\n this.setStatus({ status: \"ready\" });\n return null;\n }\n isError = true;\n if (err instanceof TypeError && (err.message.toLowerCase().includes(\"fetch\") || err.message.toLowerCase().includes(\"network\"))) {\n isDisconnect = true;\n }\n if (this.onError && err instanceof Error) {\n this.onError(err);\n }\n this.setStatus({ status: \"error\", error: err });\n } finally {\n try {\n (_a17 = this.onFinish) == null ? void 0 : _a17.call(this, {\n message: this.activeResponse.state.message,\n messages: this.state.messages,\n isAbort,\n isDisconnect,\n isError\n });\n } catch (err) {\n console.error(err);\n }\n this.activeResponse = void 0;\n }\n if ((_b = this.sendAutomaticallyWhen) == null ? void 0 : _b.call(this, { messages: this.state.messages })) {\n await this.makeRequest({\n trigger: \"submit-message\",\n messageId: (_c = this.lastMessage) == null ? void 0 : _c.id,\n metadata,\n headers,\n body\n });\n }\n }\n};\n\n// src/ui/last-assistant-message-is-complete-with-tool-calls.ts\nfunction lastAssistantMessageIsCompleteWithToolCalls({\n messages\n}) {\n const message = messages[messages.length - 1];\n if (!message) {\n return false;\n }\n if (message.role !== \"assistant\") {\n return false;\n }\n const lastStepStartIndex = message.parts.reduce((lastIndex, part, index) => {\n return part.type === \"step-start\" ? index : lastIndex;\n }, -1);\n const lastStepToolInvocations = message.parts.slice(lastStepStartIndex + 1).filter(isToolOrDynamicToolUIPart);\n return lastStepToolInvocations.length > 0 && lastStepToolInvocations.every((part) => part.state === \"output-available\");\n}\n\n// src/ui/transform-text-to-ui-message-stream.ts\nfunction transformTextToUiMessageStream({\n stream\n}) {\n return stream.pipeThrough(\n new TransformStream({\n start(controller) {\n controller.enqueue({ type: \"start\" });\n controller.enqueue({ type: \"start-step\" });\n controller.enqueue({ type: \"text-start\", id: \"text-1\" });\n },\n async transform(part, controller) {\n controller.enqueue({ type: \"text-delta\", id: \"text-1\", delta: part });\n },\n async flush(controller) {\n controller.enqueue({ type: \"text-end\", id: \"text-1\" });\n controller.enqueue({ type: \"finish-step\" });\n controller.enqueue({ type: \"finish\" });\n }\n })\n );\n}\n\n// src/ui/text-stream-chat-transport.ts\nvar TextStreamChatTransport = class extends HttpChatTransport {\n constructor(options = {}) {\n super(options);\n }\n processResponseStream(stream) {\n return transformTextToUiMessageStream({\n stream: stream.pipeThrough(new TextDecoderStream())\n });\n }\n};\n\n// src/ui/validate-ui-messages.ts\nimport { TypeValidationError as TypeValidationError4 } from \"@ai-sdk/provider\";\nimport {\n validateTypes as validateTypes2\n} from \"@ai-sdk/provider-utils\";\nimport { z as z10 } from \"zod/v4\";\nvar textUIPartSchema = z10.object({\n type: z10.literal(\"text\"),\n text: z10.string(),\n state: z10.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n});\nvar reasoningUIPartSchema = z10.object({\n type: z10.literal(\"reasoning\"),\n text: z10.string(),\n state: z10.enum([\"streaming\", \"done\"]).optional(),\n providerMetadata: providerMetadataSchema.optional()\n});\nvar sourceUrlUIPartSchema = z10.object({\n type: z10.literal(\"source-url\"),\n sourceId: z10.string(),\n url: z10.string(),\n title: z10.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n});\nvar sourceDocumentUIPartSchema = z10.object({\n type: z10.literal(\"source-document\"),\n sourceId: z10.string(),\n mediaType: z10.string(),\n title: z10.string(),\n filename: z10.string().optional(),\n providerMetadata: providerMetadataSchema.optional()\n});\nvar fileUIPartSchema = z10.object({\n type: z10.literal(\"file\"),\n mediaType: z10.string(),\n filename: z10.string().optional(),\n url: z10.string(),\n providerMetadata: providerMetadataSchema.optional()\n});\nvar stepStartUIPartSchema = z10.object({\n type: z10.literal(\"step-start\")\n});\nvar dataUIPartSchema = z10.object({\n type: z10.string().startsWith(\"data-\"),\n id: z10.string().optional(),\n data: z10.unknown()\n});\nvar dynamicToolUIPartSchemas = [\n z10.object({\n type: z10.literal(\"dynamic-tool\"),\n toolName: z10.string(),\n toolCallId: z10.string(),\n state: z10.literal(\"input-streaming\"),\n input: z10.unknown().optional(),\n output: z10.never().optional(),\n errorText: z10.never().optional()\n }),\n z10.object({\n type: z10.literal(\"dynamic-tool\"),\n toolName: z10.string(),\n toolCallId: z10.string(),\n state: z10.literal(\"input-available\"),\n input: z10.unknown(),\n output: z10.never().optional(),\n errorText: z10.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional()\n }),\n z10.object({\n type: z10.literal(\"dynamic-tool\"),\n toolName: z10.string(),\n toolCallId: z10.string(),\n state: z10.literal(\"output-available\"),\n input: z10.unknown(),\n output: z10.unknown(),\n errorText: z10.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z10.boolean().optional()\n }),\n z10.object({\n type: z10.literal(\"dynamic-tool\"),\n toolName: z10.string(),\n toolCallId: z10.string(),\n state: z10.literal(\"output-error\"),\n input: z10.unknown(),\n output: z10.never().optional(),\n errorText: z10.string(),\n callProviderMetadata: providerMetadataSchema.optional()\n })\n];\nvar toolUIPartSchemas = [\n z10.object({\n type: z10.string().startsWith(\"tool-\"),\n toolCallId: z10.string(),\n state: z10.literal(\"input-streaming\"),\n providerExecuted: z10.boolean().optional(),\n input: z10.unknown().optional(),\n output: z10.never().optional(),\n errorText: z10.never().optional()\n }),\n z10.object({\n type: z10.string().startsWith(\"tool-\"),\n toolCallId: z10.string(),\n state: z10.literal(\"input-available\"),\n providerExecuted: z10.boolean().optional(),\n input: z10.unknown(),\n output: z10.never().optional(),\n errorText: z10.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional()\n }),\n z10.object({\n type: z10.string().startsWith(\"tool-\"),\n toolCallId: z10.string(),\n state: z10.literal(\"output-available\"),\n providerExecuted: z10.boolean().optional(),\n input: z10.unknown(),\n output: z10.unknown(),\n errorText: z10.never().optional(),\n callProviderMetadata: providerMetadataSchema.optional(),\n preliminary: z10.boolean().optional()\n }),\n z10.object({\n type: z10.string().startsWith(\"tool-\"),\n toolCallId: z10.string(),\n state: z10.literal(\"output-error\"),\n providerExecuted: z10.boolean().optional(),\n input: z10.unknown(),\n output: z10.never().optional(),\n errorText: z10.string(),\n callProviderMetadata: providerMetadataSchema.optional()\n })\n];\nvar uiMessageSchema = z10.object({\n id: z10.string(),\n role: z10.enum([\"system\", \"user\", \"assistant\"]),\n metadata: z10.unknown().optional(),\n parts: z10.array(\n z10.union([\n textUIPartSchema,\n reasoningUIPartSchema,\n sourceUrlUIPartSchema,\n sourceDocumentUIPartSchema,\n fileUIPartSchema,\n stepStartUIPartSchema,\n dataUIPartSchema,\n ...dynamicToolUIPartSchemas,\n ...toolUIPartSchemas\n ])\n )\n});\nasync function safeValidateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n}) {\n try {\n if (messages == null) {\n return {\n success: false,\n error: new InvalidArgumentError({\n parameter: \"messages\",\n value: messages,\n message: \"messages parameter must be provided\"\n })\n };\n }\n const validatedMessages = await validateTypes2({\n value: messages,\n schema: z10.array(uiMessageSchema)\n });\n if (metadataSchema) {\n for (const message of validatedMessages) {\n await validateTypes2({\n value: message.metadata,\n schema: metadataSchema\n });\n }\n }\n if (dataSchemas) {\n for (const message of validatedMessages) {\n const dataParts = message.parts.filter(\n (part) => part.type.startsWith(\"data-\")\n );\n for (const dataPart of dataParts) {\n const dataName = dataPart.type.slice(5);\n const dataSchema = dataSchemas[dataName];\n if (!dataSchema) {\n return {\n success: false,\n error: new TypeValidationError4({\n value: dataPart.data,\n cause: `No data schema found for data part ${dataName}`\n })\n };\n }\n await validateTypes2({\n value: dataPart.data,\n schema: dataSchema\n });\n }\n }\n }\n if (tools) {\n for (const message of validatedMessages) {\n const toolParts = message.parts.filter(\n (part) => part.type.startsWith(\"tool-\")\n );\n for (const toolPart of toolParts) {\n const toolName = toolPart.type.slice(5);\n const tool3 = tools[toolName];\n if (!tool3) {\n return {\n success: false,\n error: new TypeValidationError4({\n value: toolPart.input,\n cause: `No tool schema found for tool part ${toolName}`\n })\n };\n }\n if (toolPart.state === \"input-available\" || toolPart.state === \"output-available\" || toolPart.state === \"output-error\") {\n await validateTypes2({\n value: toolPart.input,\n schema: tool3.inputSchema\n });\n }\n if (toolPart.state === \"output-available\" && tool3.outputSchema) {\n await validateTypes2({\n value: toolPart.output,\n schema: tool3.outputSchema\n });\n }\n }\n }\n }\n return {\n success: true,\n data: validatedMessages\n };\n } catch (error) {\n const err = error;\n return {\n success: false,\n error: err\n };\n }\n}\nasync function validateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n}) {\n const response = await safeValidateUIMessages({\n messages,\n metadataSchema,\n dataSchemas,\n tools\n });\n if (!response.success)\n throw response.error;\n return response.data;\n}\n\n// src/ui-message-stream/create-ui-message-stream.ts\nimport {\n generateId as generateIdFunc2,\n getErrorMessage as getErrorMessage8\n} from \"@ai-sdk/provider-utils\";\nfunction createUIMessageStream({\n execute,\n onError = getErrorMessage8,\n originalMessages,\n onFinish,\n generateId: generateId3 = generateIdFunc2\n}) {\n let controller;\n const ongoingStreamPromises = [];\n const stream = new ReadableStream({\n start(controllerArg) {\n controller = controllerArg;\n }\n });\n function safeEnqueue(data) {\n try {\n controller.enqueue(data);\n } catch (error) {\n }\n }\n try {\n const result = execute({\n writer: {\n write(part) {\n safeEnqueue(part);\n },\n merge(streamArg) {\n ongoingStreamPromises.push(\n (async () => {\n const reader = streamArg.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done)\n break;\n safeEnqueue(value);\n }\n })().catch((error) => {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n })\n );\n },\n onError\n }\n });\n if (result) {\n ongoingStreamPromises.push(\n result.catch((error) => {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n })\n );\n }\n } catch (error) {\n safeEnqueue({\n type: \"error\",\n errorText: onError(error)\n });\n }\n const waitForStreams = new Promise(async (resolve2) => {\n while (ongoingStreamPromises.length > 0) {\n await ongoingStreamPromises.shift();\n }\n resolve2();\n });\n waitForStreams.finally(() => {\n try {\n controller.close();\n } catch (error) {\n }\n });\n return handleUIMessageStreamFinish({\n stream,\n messageId: generateId3(),\n originalMessages,\n onFinish,\n onError\n });\n}\n\n// src/ui-message-stream/read-ui-message-stream.ts\nfunction readUIMessageStream({\n message,\n stream,\n onError,\n terminateOnError = false\n}) {\n var _a17;\n let controller;\n let hasErrored = false;\n const outputStream = new ReadableStream({\n start(controllerParam) {\n controller = controllerParam;\n }\n });\n const state = createStreamingUIMessageState({\n messageId: (_a17 = message == null ? void 0 : message.id) != null ? _a17 : \"\",\n lastMessage: message\n });\n const handleError = (error) => {\n onError == null ? void 0 : onError(error);\n if (!hasErrored && terminateOnError) {\n hasErrored = true;\n controller == null ? void 0 : controller.error(error);\n }\n };\n consumeStream({\n stream: processUIMessageStream({\n stream,\n runUpdateMessageJob(job) {\n return job({\n state,\n write: () => {\n controller == null ? void 0 : controller.enqueue(structuredClone(state.message));\n }\n });\n },\n onError: handleError\n }),\n onError: handleError\n }).finally(() => {\n if (!hasErrored) {\n controller == null ? void 0 : controller.close();\n }\n });\n return createAsyncIterableStream(outputStream);\n}\nexport {\n AISDKError17 as AISDKError,\n APICallError,\n AbstractChat,\n DefaultChatTransport,\n DownloadError,\n EmptyResponseBodyError,\n Agent as Experimental_Agent,\n HttpChatTransport,\n InvalidArgumentError,\n InvalidDataContentError,\n InvalidMessageRoleError,\n InvalidPromptError,\n InvalidResponseDataError,\n InvalidStreamPartError,\n InvalidToolInputError,\n JSONParseError,\n JsonToSseTransformStream,\n LoadAPIKeyError,\n MCPClientError,\n MessageConversionError,\n NoContentGeneratedError,\n NoImageGeneratedError,\n NoObjectGeneratedError,\n NoOutputGeneratedError,\n NoOutputSpecifiedError,\n NoSuchModelError,\n NoSuchProviderError,\n NoSuchToolError,\n output_exports as Output,\n RetryError,\n SerialJobExecutor,\n TextStreamChatTransport,\n TooManyEmbeddingValuesForCallError,\n ToolCallRepairError,\n TypeValidationError,\n UI_MESSAGE_STREAM_HEADERS,\n UnsupportedFunctionalityError,\n UnsupportedModelVersionError,\n asSchema5 as asSchema,\n assistantModelMessageSchema,\n callCompletionApi,\n consumeStream,\n convertFileListToFileUIParts,\n convertToCoreMessages,\n convertToModelMessages,\n coreAssistantMessageSchema,\n coreMessageSchema,\n coreSystemMessageSchema,\n coreToolMessageSchema,\n coreUserMessageSchema,\n cosineSimilarity,\n createGateway,\n createIdGenerator5 as createIdGenerator,\n createProviderRegistry,\n createTextStreamResponse,\n createUIMessageStream,\n createUIMessageStreamResponse,\n customProvider,\n defaultSettingsMiddleware,\n dynamicTool2 as dynamicTool,\n embed,\n embedMany,\n createMCPClient as experimental_createMCPClient,\n experimental_createProviderRegistry,\n experimental_customProvider,\n generateImage as experimental_generateImage,\n generateSpeech as experimental_generateSpeech,\n transcribe as experimental_transcribe,\n extractReasoningMiddleware,\n gateway2 as gateway,\n generateId2 as generateId,\n generateObject,\n generateText,\n getTextFromDataUrl,\n getToolName,\n getToolOrDynamicToolName,\n hasToolCall,\n isDeepEqualData,\n isToolOrDynamicToolUIPart,\n isToolUIPart,\n jsonSchema2 as jsonSchema,\n lastAssistantMessageIsCompleteWithToolCalls,\n modelMessageSchema,\n parsePartialJson,\n pipeTextStreamToResponse,\n pipeUIMessageStreamToResponse,\n readUIMessageStream,\n safeValidateUIMessages,\n simulateReadableStream,\n simulateStreamingMiddleware,\n smoothStream,\n stepCountIs,\n streamObject,\n streamText,\n systemModelMessageSchema,\n tool2 as tool,\n toolModelMessageSchema,\n userModelMessageSchema,\n validateUIMessages,\n wrapLanguageModel,\n wrapProvider,\n zodSchema\n};\n//# sourceMappingURL=index.mjs.map","function throttle(function_, wait) {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError(`Expected the first argument to be a \\`function\\`, got \\`${typeof function_}\\`.`);\n\t}\n\n\t// TODO: Add `wait` validation too in the next major version.\n\n\tlet timeoutId;\n\tlet lastCallTime = 0;\n\n\treturn function throttled(...arguments_) { // eslint-disable-line func-names\n\t\tclearTimeout(timeoutId);\n\n\t\tconst now = Date.now();\n\t\tconst timeSinceLastCall = now - lastCallTime;\n\t\tconst delayForNextCall = wait - timeSinceLastCall;\n\n\t\tif (delayForNextCall <= 0) {\n\t\t\tlastCallTime = now;\n\t\t\tfunction_.apply(this, arguments_);\n\t\t} else {\n\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\tlastCallTime = Date.now();\n\t\t\t\tfunction_.apply(this, arguments_);\n\t\t\t}, delayForNextCall);\n\t\t}\n\t};\n}\n\nmodule.exports = throttle;\n","var __accessCheck = (obj, member, msg) => {\n if (!member.has(obj))\n throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n __accessCheck(obj, member, \"read from private field\");\n return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n if (member.has(obj))\n throw TypeError(\"Cannot add the same private member more than once\");\n member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n __accessCheck(obj, member, \"write to private field\");\n setter ? setter.call(obj, value) : member.set(obj, value);\n return value;\n};\n\n// src/use-chat.ts\nimport { useCallback, useEffect, useRef, useSyncExternalStore } from \"react\";\n\n// src/chat.react.ts\nimport { AbstractChat } from \"ai\";\n\n// src/throttle.ts\nimport throttleFunction from \"throttleit\";\nfunction throttle(fn, waitMs) {\n return waitMs != null ? throttleFunction(fn, waitMs) : fn;\n}\n\n// src/chat.react.ts\nvar _messages, _status, _error, _messagesCallbacks, _statusCallbacks, _errorCallbacks, _callMessagesCallbacks, _callStatusCallbacks, _callErrorCallbacks;\nvar ReactChatState = class {\n constructor(initialMessages = []) {\n __privateAdd(this, _messages, void 0);\n __privateAdd(this, _status, \"ready\");\n __privateAdd(this, _error, void 0);\n __privateAdd(this, _messagesCallbacks, /* @__PURE__ */ new Set());\n __privateAdd(this, _statusCallbacks, /* @__PURE__ */ new Set());\n __privateAdd(this, _errorCallbacks, /* @__PURE__ */ new Set());\n this.pushMessage = (message) => {\n __privateSet(this, _messages, __privateGet(this, _messages).concat(message));\n __privateGet(this, _callMessagesCallbacks).call(this);\n };\n this.popMessage = () => {\n __privateSet(this, _messages, __privateGet(this, _messages).slice(0, -1));\n __privateGet(this, _callMessagesCallbacks).call(this);\n };\n this.replaceMessage = (index, message) => {\n __privateSet(this, _messages, [\n ...__privateGet(this, _messages).slice(0, index),\n // We deep clone the message here to ensure the new React Compiler (currently in RC) detects deeply nested parts/metadata changes:\n this.snapshot(message),\n ...__privateGet(this, _messages).slice(index + 1)\n ]);\n __privateGet(this, _callMessagesCallbacks).call(this);\n };\n this.snapshot = (value) => structuredClone(value);\n this[\"~registerMessagesCallback\"] = (onChange, throttleWaitMs) => {\n const callback = throttleWaitMs ? throttle(onChange, throttleWaitMs) : onChange;\n __privateGet(this, _messagesCallbacks).add(callback);\n return () => {\n __privateGet(this, _messagesCallbacks).delete(callback);\n };\n };\n this[\"~registerStatusCallback\"] = (onChange) => {\n __privateGet(this, _statusCallbacks).add(onChange);\n return () => {\n __privateGet(this, _statusCallbacks).delete(onChange);\n };\n };\n this[\"~registerErrorCallback\"] = (onChange) => {\n __privateGet(this, _errorCallbacks).add(onChange);\n return () => {\n __privateGet(this, _errorCallbacks).delete(onChange);\n };\n };\n __privateAdd(this, _callMessagesCallbacks, () => {\n __privateGet(this, _messagesCallbacks).forEach((callback) => callback());\n });\n __privateAdd(this, _callStatusCallbacks, () => {\n __privateGet(this, _statusCallbacks).forEach((callback) => callback());\n });\n __privateAdd(this, _callErrorCallbacks, () => {\n __privateGet(this, _errorCallbacks).forEach((callback) => callback());\n });\n __privateSet(this, _messages, initialMessages);\n }\n get status() {\n return __privateGet(this, _status);\n }\n set status(newStatus) {\n __privateSet(this, _status, newStatus);\n __privateGet(this, _callStatusCallbacks).call(this);\n }\n get error() {\n return __privateGet(this, _error);\n }\n set error(newError) {\n __privateSet(this, _error, newError);\n __privateGet(this, _callErrorCallbacks).call(this);\n }\n get messages() {\n return __privateGet(this, _messages);\n }\n set messages(newMessages) {\n __privateSet(this, _messages, [...newMessages]);\n __privateGet(this, _callMessagesCallbacks).call(this);\n }\n};\n_messages = new WeakMap();\n_status = new WeakMap();\n_error = new WeakMap();\n_messagesCallbacks = new WeakMap();\n_statusCallbacks = new WeakMap();\n_errorCallbacks = new WeakMap();\n_callMessagesCallbacks = new WeakMap();\n_callStatusCallbacks = new WeakMap();\n_callErrorCallbacks = new WeakMap();\nvar _state;\nvar Chat = class extends AbstractChat {\n constructor({ messages, ...init }) {\n const state = new ReactChatState(messages);\n super({ ...init, state });\n __privateAdd(this, _state, void 0);\n this[\"~registerMessagesCallback\"] = (onChange, throttleWaitMs) => __privateGet(this, _state)[\"~registerMessagesCallback\"](onChange, throttleWaitMs);\n this[\"~registerStatusCallback\"] = (onChange) => __privateGet(this, _state)[\"~registerStatusCallback\"](onChange);\n this[\"~registerErrorCallback\"] = (onChange) => __privateGet(this, _state)[\"~registerErrorCallback\"](onChange);\n __privateSet(this, _state, state);\n }\n};\n_state = new WeakMap();\n\n// src/use-chat.ts\nfunction useChat({\n experimental_throttle: throttleWaitMs,\n resume = false,\n ...options\n} = {}) {\n const chatRef = useRef(\n \"chat\" in options ? options.chat : new Chat(options)\n );\n const shouldRecreateChat = \"chat\" in options && options.chat !== chatRef.current || \"id\" in options && chatRef.current.id !== options.id;\n if (shouldRecreateChat) {\n chatRef.current = \"chat\" in options ? options.chat : new Chat(options);\n }\n const optionsId = \"id\" in options ? options.id : null;\n const subscribeToMessages = useCallback(\n (update) => chatRef.current[\"~registerMessagesCallback\"](update, throttleWaitMs),\n // optionsId is required to trigger re-subscription when the chat ID changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [throttleWaitMs, optionsId]\n );\n const messages = useSyncExternalStore(\n subscribeToMessages,\n () => chatRef.current.messages,\n () => chatRef.current.messages\n );\n const status = useSyncExternalStore(\n chatRef.current[\"~registerStatusCallback\"],\n () => chatRef.current.status,\n () => chatRef.current.status\n );\n const error = useSyncExternalStore(\n chatRef.current[\"~registerErrorCallback\"],\n () => chatRef.current.error,\n () => chatRef.current.error\n );\n const setMessages = useCallback(\n (messagesParam) => {\n if (typeof messagesParam === \"function\") {\n messagesParam = messagesParam(chatRef.current.messages);\n }\n chatRef.current.messages = messagesParam;\n },\n [chatRef]\n );\n useEffect(() => {\n if (resume) {\n chatRef.current.resumeStream();\n }\n }, [resume, chatRef]);\n return {\n id: chatRef.current.id,\n messages,\n setMessages,\n sendMessage: chatRef.current.sendMessage,\n regenerate: chatRef.current.regenerate,\n clearError: chatRef.current.clearError,\n stop: chatRef.current.stop,\n error,\n resumeStream: chatRef.current.resumeStream,\n status,\n addToolResult: chatRef.current.addToolResult\n };\n}\n\n// src/use-completion.ts\nimport {\n callCompletionApi\n} from \"ai\";\nimport { useCallback as useCallback2, useEffect as useEffect2, useId, useRef as useRef2, useState } from \"react\";\nimport useSWR from \"swr\";\nfunction useCompletion({\n api = \"/api/completion\",\n id,\n initialCompletion = \"\",\n initialInput = \"\",\n credentials,\n headers,\n body,\n streamProtocol = \"data\",\n fetch: fetch2,\n onFinish,\n onError,\n experimental_throttle: throttleWaitMs\n} = {}) {\n const hookId = useId();\n const completionId = id || hookId;\n const { data, mutate } = useSWR([api, completionId], null, {\n fallbackData: initialCompletion\n });\n const { data: isLoading = false, mutate: mutateLoading } = useSWR(\n [completionId, \"loading\"],\n null\n );\n const [error, setError] = useState(void 0);\n const completion = data;\n const [abortController, setAbortController] = useState(null);\n const extraMetadataRef = useRef2({\n credentials,\n headers,\n body\n });\n useEffect2(() => {\n extraMetadataRef.current = {\n credentials,\n headers,\n body\n };\n }, [credentials, headers, body]);\n const triggerRequest = useCallback2(\n async (prompt, options) => callCompletionApi({\n api,\n prompt,\n credentials: extraMetadataRef.current.credentials,\n headers: { ...extraMetadataRef.current.headers, ...options == null ? void 0 : options.headers },\n body: {\n ...extraMetadataRef.current.body,\n ...options == null ? void 0 : options.body\n },\n streamProtocol,\n fetch: fetch2,\n // throttle streamed ui updates:\n setCompletion: throttle(\n (completion2) => mutate(completion2, false),\n throttleWaitMs\n ),\n setLoading: mutateLoading,\n setError,\n setAbortController,\n onFinish,\n onError\n }),\n [\n mutate,\n mutateLoading,\n api,\n extraMetadataRef,\n setAbortController,\n onFinish,\n onError,\n setError,\n streamProtocol,\n fetch2,\n throttleWaitMs\n ]\n );\n const stop = useCallback2(() => {\n if (abortController) {\n abortController.abort();\n setAbortController(null);\n }\n }, [abortController]);\n const setCompletion = useCallback2(\n (completion2) => {\n mutate(completion2, false);\n },\n [mutate]\n );\n const complete = useCallback2(\n async (prompt, options) => {\n return triggerRequest(prompt, options);\n },\n [triggerRequest]\n );\n const [input, setInput] = useState(initialInput);\n const handleSubmit = useCallback2(\n (event) => {\n var _a;\n (_a = event == null ? void 0 : event.preventDefault) == null ? void 0 : _a.call(event);\n return input ? complete(input) : void 0;\n },\n [input, complete]\n );\n const handleInputChange = useCallback2(\n (e) => {\n setInput(e.target.value);\n },\n [setInput]\n );\n return {\n completion,\n complete,\n error,\n setCompletion,\n stop,\n input,\n setInput,\n handleInputChange,\n handleSubmit,\n isLoading\n };\n}\n\n// src/use-object.ts\nimport {\n isAbortError,\n safeValidateTypes\n} from \"@ai-sdk/provider-utils\";\nimport {\n asSchema,\n isDeepEqualData,\n parsePartialJson\n} from \"ai\";\nimport { useCallback as useCallback3, useId as useId2, useRef as useRef3, useState as useState2 } from \"react\";\nimport useSWR2 from \"swr\";\nvar getOriginalFetch = () => fetch;\nfunction useObject({\n api,\n id,\n schema,\n // required, in the future we will use it for validation\n initialValue,\n fetch: fetch2,\n onError,\n onFinish,\n headers,\n credentials\n}) {\n const hookId = useId2();\n const completionId = id != null ? id : hookId;\n const { data, mutate } = useSWR2(\n [api, completionId],\n null,\n { fallbackData: initialValue }\n );\n const [error, setError] = useState2(void 0);\n const [isLoading, setIsLoading] = useState2(false);\n const abortControllerRef = useRef3(null);\n const stop = useCallback3(() => {\n var _a;\n try {\n (_a = abortControllerRef.current) == null ? void 0 : _a.abort();\n } catch (ignored) {\n } finally {\n setIsLoading(false);\n abortControllerRef.current = null;\n }\n }, []);\n const submit = async (input) => {\n var _a;\n try {\n clearObject();\n setIsLoading(true);\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n const actualFetch = fetch2 != null ? fetch2 : getOriginalFetch();\n const response = await actualFetch(api, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n credentials,\n signal: abortController.signal,\n body: JSON.stringify(input)\n });\n if (!response.ok) {\n throw new Error(\n (_a = await response.text()) != null ? _a : \"Failed to fetch the response.\"\n );\n }\n if (response.body == null) {\n throw new Error(\"The response body is empty.\");\n }\n let accumulatedText = \"\";\n let latestObject = void 0;\n await response.body.pipeThrough(new TextDecoderStream()).pipeTo(\n new WritableStream({\n async write(chunk) {\n accumulatedText += chunk;\n const { value } = await parsePartialJson(accumulatedText);\n const currentObject = value;\n if (!isDeepEqualData(latestObject, currentObject)) {\n latestObject = currentObject;\n mutate(currentObject);\n }\n },\n async close() {\n setIsLoading(false);\n abortControllerRef.current = null;\n if (onFinish != null) {\n const validationResult = await safeValidateTypes({\n value: latestObject,\n schema: asSchema(schema)\n });\n onFinish(\n validationResult.success ? { object: validationResult.value, error: void 0 } : { object: void 0, error: validationResult.error }\n );\n }\n }\n })\n );\n } catch (error2) {\n if (isAbortError(error2)) {\n return;\n }\n if (onError && error2 instanceof Error) {\n onError(error2);\n }\n setIsLoading(false);\n setError(error2 instanceof Error ? error2 : new Error(String(error2)));\n }\n };\n const clear = () => {\n stop();\n clearObject();\n };\n const clearObject = () => {\n setError(void 0);\n setIsLoading(false);\n mutate(void 0);\n };\n return {\n submit,\n object: data,\n error,\n isLoading,\n stop,\n clear\n };\n}\nvar experimental_useObject = useObject;\nexport {\n Chat,\n experimental_useObject,\n useChat,\n useCompletion\n};\n//# sourceMappingURL=index.mjs.map","export function debounce(fn, time) {\n var timerId = undefined;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(function () {\n return fn.apply(void 0, args);\n }, time);\n };\n}","export function flatten(values) {\n return values.reduce(function (a, b) {\n return a.concat(b);\n }, []);\n}","var autocompleteId = 0;\nexport function generateAutocompleteId() {\n return \"autocomplete-\".concat(autocompleteId++);\n}","export function getItemsCount(state) {\n if (state.collections.length === 0) {\n return 0;\n }\n return state.collections.reduce(function (sum, collection) {\n return sum + collection.items.length;\n }, 0);\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n if (!(key in second)) {\n return false;\n }\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n return true;\n}","export var noop = function noop() {};","export var version = '1.19.2';","import { version } from './version';\nexport var userAgents = [{\n segment: 'autocomplete-core',\n version: version\n}];","export function createClickedEvent(_ref) {\n var item = _ref.item,\n _ref$items = _ref.items,\n items = _ref$items === void 0 ? [] : _ref$items;\n return {\n index: item.__autocomplete_indexName,\n items: [item],\n positions: [1 + items.findIndex(function (x) {\n return x.objectID === item.objectID;\n })],\n queryID: item.__autocomplete_queryID,\n algoliaSource: ['autocomplete']\n };\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/**\n * Determines if a given insights `client` supports the optional call to `init`\n * and the ability to set credentials via extra parameters when sending events.\n */\nexport function isModernInsightsClient(client) {\n var _split$map = (client.version || '').split('.').map(Number),\n _split$map2 = _slicedToArray(_split$map, 2),\n major = _split$map2[0],\n minor = _split$map2[1];\n\n /* eslint-disable @typescript-eslint/camelcase */\n var v3 = major >= 3;\n var v2_4 = major === 2 && minor >= 4;\n var v1_10 = major === 1 && minor >= 10;\n return v3 || v2_4 || v1_10;\n /* eslint-enable @typescript-eslint/camelcase */\n}","var _excluded = [\"items\"],\n _excluded2 = [\"items\"];\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { isModernInsightsClient } from './isModernInsightsClient';\nfunction chunk(item) {\n var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n var chunks = [];\n for (var i = 0; i < item.objectIDs.length; i += chunkSize) {\n chunks.push(_objectSpread(_objectSpread({}, item), {}, {\n objectIDs: item.objectIDs.slice(i, i + chunkSize)\n }));\n }\n return chunks;\n}\nfunction mapToInsightsParamsApi(params) {\n return params.map(function (_ref) {\n var items = _ref.items,\n param = _objectWithoutProperties(_ref, _excluded);\n return _objectSpread(_objectSpread({}, param), {}, {\n objectIDs: (items === null || items === void 0 ? void 0 : items.map(function (_ref2) {\n var objectID = _ref2.objectID;\n return objectID;\n })) || param.objectIDs\n });\n });\n}\nexport function createSearchInsightsApi(searchInsights) {\n var canSendHeaders = isModernInsightsClient(searchInsights);\n function sendToInsights(method, payloads, items) {\n if (canSendHeaders && typeof items !== 'undefined') {\n var _items$0$__autocomple = items[0].__autocomplete_algoliaCredentials,\n appId = _items$0$__autocomple.appId,\n apiKey = _items$0$__autocomple.apiKey;\n var headers = {\n 'X-Algolia-Application-Id': appId,\n 'X-Algolia-API-Key': apiKey\n };\n searchInsights.apply(void 0, [method].concat(_toConsumableArray(payloads), [{\n headers: headers\n }]));\n } else {\n searchInsights.apply(void 0, [method].concat(_toConsumableArray(payloads)));\n }\n }\n return {\n /**\n * Initializes Insights with Algolia credentials.\n */\n init: function init(appId, apiKey) {\n searchInsights('init', {\n appId: appId,\n apiKey: apiKey\n });\n },\n /**\n * Sets the authenticated user token to attach to events.\n * Unsets the authenticated token by passing `undefined`.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/set-authenticated-user-token/\n */\n setAuthenticatedUserToken: function setAuthenticatedUserToken(authenticatedUserToken) {\n searchInsights('setAuthenticatedUserToken', authenticatedUserToken);\n },\n /**\n * Sets the user token to attach to events.\n */\n setUserToken: function setUserToken(userToken) {\n searchInsights('setUserToken', userToken);\n },\n /**\n * Sends click events to capture a query and its clicked items and positions.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids-after-search/\n */\n clickedObjectIDsAfterSearch: function clickedObjectIDsAfterSearch() {\n for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {\n params[_key] = arguments[_key];\n }\n if (params.length > 0) {\n sendToInsights('clickedObjectIDsAfterSearch', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends click events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-object-ids/\n */\n clickedObjectIDs: function clickedObjectIDs() {\n for (var _len2 = arguments.length, params = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n params[_key2] = arguments[_key2];\n }\n if (params.length > 0) {\n sendToInsights('clickedObjectIDs', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends click events to capture the filters a user clicks on.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/clicked-filters/\n */\n clickedFilters: function clickedFilters() {\n for (var _len3 = arguments.length, params = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n params[_key3] = arguments[_key3];\n }\n if (params.length > 0) {\n searchInsights.apply(void 0, ['clickedFilters'].concat(params));\n }\n },\n /**\n * Sends conversion events to capture a query and its clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids-after-search/\n */\n convertedObjectIDsAfterSearch: function convertedObjectIDsAfterSearch() {\n for (var _len4 = arguments.length, params = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n params[_key4] = arguments[_key4];\n }\n if (params.length > 0) {\n sendToInsights('convertedObjectIDsAfterSearch', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends conversion events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-object-ids/\n */\n convertedObjectIDs: function convertedObjectIDs() {\n for (var _len5 = arguments.length, params = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n params[_key5] = arguments[_key5];\n }\n if (params.length > 0) {\n sendToInsights('convertedObjectIDs', mapToInsightsParamsApi(params), params[0].items);\n }\n },\n /**\n * Sends conversion events to capture the filters a user uses when converting.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/converted-filters/\n */\n convertedFilters: function convertedFilters() {\n for (var _len6 = arguments.length, params = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n params[_key6] = arguments[_key6];\n }\n if (params.length > 0) {\n searchInsights.apply(void 0, ['convertedFilters'].concat(params));\n }\n },\n /**\n * Sends view events to capture clicked items.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-object-ids/\n */\n viewedObjectIDs: function viewedObjectIDs() {\n for (var _len7 = arguments.length, params = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n params[_key7] = arguments[_key7];\n }\n if (params.length > 0) {\n params.reduce(function (acc, _ref3) {\n var items = _ref3.items,\n param = _objectWithoutProperties(_ref3, _excluded2);\n return [].concat(_toConsumableArray(acc), _toConsumableArray(chunk(_objectSpread(_objectSpread({}, param), {}, {\n objectIDs: (items === null || items === void 0 ? void 0 : items.map(function (_ref4) {\n var objectID = _ref4.objectID;\n return objectID;\n })) || param.objectIDs\n })).map(function (payload) {\n return {\n items: items,\n payload: payload\n };\n })));\n }, []).forEach(function (_ref5) {\n var items = _ref5.items,\n payload = _ref5.payload;\n return sendToInsights('viewedObjectIDs', [payload], items);\n });\n }\n },\n /**\n * Sends view events to capture the filters a user uses when viewing.\n *\n * @link https://www.algolia.com/doc/api-reference/api-methods/viewed-filters/\n */\n viewedFilters: function viewedFilters() {\n for (var _len8 = arguments.length, params = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n params[_key8] = arguments[_key8];\n }\n if (params.length > 0) {\n searchInsights.apply(void 0, ['viewedFilters'].concat(params));\n }\n }\n };\n}","export function createViewedEvents(_ref) {\n var items = _ref.items;\n var itemsByIndexName = items.reduce(function (acc, current) {\n var _acc$current$__autoco;\n acc[current.__autocomplete_indexName] = ((_acc$current$__autoco = acc[current.__autocomplete_indexName]) !== null && _acc$current$__autoco !== void 0 ? _acc$current$__autoco : []).concat(current);\n return acc;\n }, {});\n return Object.keys(itemsByIndexName).map(function (indexName) {\n var items = itemsByIndexName[indexName];\n return {\n index: indexName,\n items: items,\n algoliaSource: ['autocomplete']\n };\n });\n}","export function isAlgoliaInsightsHit(hit) {\n return hit.objectID && hit.__autocomplete_indexName && hit.__autocomplete_queryID;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { createRef, debounce, isEqual, noop, safelyRunOnBrowser } from '@algolia/autocomplete-shared';\nimport { createClickedEvent } from './createClickedEvent';\nimport { createSearchInsightsApi } from './createSearchInsightsApi';\nimport { createViewedEvents } from './createViewedEvents';\nimport { isAlgoliaInsightsHit } from './isAlgoliaInsightsHit';\nvar VIEW_EVENT_DELAY = 400;\nvar ALGOLIA_INSIGHTS_VERSION = '2.15.0';\nvar ALGOLIA_INSIGHTS_SRC = \"https://cdn.jsdelivr.net/npm/search-insights@\".concat(ALGOLIA_INSIGHTS_VERSION, \"/dist/search-insights.min.js\");\nvar sendViewedObjectIDs = debounce(function (_ref) {\n var onItemsChange = _ref.onItemsChange,\n items = _ref.items,\n insights = _ref.insights,\n state = _ref.state;\n onItemsChange({\n insights: insights,\n insightsEvents: createViewedEvents({\n items: items\n }).map(function (event) {\n return _objectSpread({\n eventName: 'Items Viewed'\n }, event);\n }),\n state: state\n });\n}, VIEW_EVENT_DELAY);\nexport function createAlgoliaInsightsPlugin(options) {\n var _getOptions = getOptions(options),\n providedInsightsClient = _getOptions.insightsClient,\n insightsInitParams = _getOptions.insightsInitParams,\n onItemsChange = _getOptions.onItemsChange,\n onSelectEvent = _getOptions.onSelect,\n onActiveEvent = _getOptions.onActive,\n __autocomplete_clickAnalytics = _getOptions.__autocomplete_clickAnalytics;\n var insightsClient = providedInsightsClient;\n if (!providedInsightsClient) {\n safelyRunOnBrowser(function (_ref2) {\n var window = _ref2.window;\n var pointer = window.AlgoliaAnalyticsObject || 'aa';\n if (typeof pointer === 'string') {\n insightsClient = window[pointer];\n }\n if (!insightsClient) {\n window.AlgoliaAnalyticsObject = pointer;\n if (!window[pointer]) {\n window[pointer] = function () {\n if (!window[pointer].queue) {\n window[pointer].queue = [];\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n window[pointer].queue.push(args);\n };\n }\n window[pointer].version = ALGOLIA_INSIGHTS_VERSION;\n insightsClient = window[pointer];\n loadInsights(window);\n }\n });\n }\n\n // We return an empty plugin if `insightsClient` is still undefined at\n // this stage, which can happen in server environments.\n if (!insightsClient) {\n return {};\n }\n if (insightsInitParams) {\n insightsClient('init', _objectSpread({\n partial: true\n }, insightsInitParams));\n }\n var insights = createSearchInsightsApi(insightsClient);\n var previousItems = createRef([]);\n var debouncedOnStateChange = debounce(function (_ref3) {\n var state = _ref3.state;\n if (!state.isOpen) {\n return;\n }\n var items = state.collections.reduce(function (acc, current) {\n return [].concat(_toConsumableArray(acc), _toConsumableArray(current.items));\n }, []).filter(isAlgoliaInsightsHit);\n if (!isEqual(previousItems.current.map(function (x) {\n return x.objectID;\n }), items.map(function (x) {\n return x.objectID;\n }))) {\n previousItems.current = items;\n if (items.length > 0) {\n sendViewedObjectIDs({\n onItemsChange: onItemsChange,\n items: items,\n insights: insights,\n state: state\n });\n }\n }\n }, 0);\n return {\n name: 'aa.algoliaInsightsPlugin',\n subscribe: function subscribe(_ref4) {\n var setContext = _ref4.setContext,\n onSelect = _ref4.onSelect,\n onActive = _ref4.onActive;\n function setInsightsContext(userToken) {\n setContext({\n algoliaInsightsPlugin: {\n __algoliaSearchParameters: _objectSpread(_objectSpread({}, __autocomplete_clickAnalytics ? {\n clickAnalytics: true\n } : {}), userToken ? {\n userToken: normalizeUserToken(userToken)\n } : {}),\n insights: insights\n }\n });\n }\n insightsClient('addAlgoliaAgent', 'insights-plugin');\n setInsightsContext();\n\n // Handles user token changes\n insightsClient('onUserTokenChange', function (userToken) {\n setInsightsContext(userToken);\n });\n insightsClient('getUserToken', null, function (_error, userToken) {\n setInsightsContext(userToken);\n });\n onSelect(function (_ref5) {\n var item = _ref5.item,\n state = _ref5.state,\n event = _ref5.event,\n source = _ref5.source;\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n onSelectEvent({\n state: state,\n event: event,\n insights: insights,\n item: item,\n insightsEvents: [_objectSpread({\n eventName: 'Item Selected'\n }, createClickedEvent({\n item: item,\n items: source.getItems().filter(isAlgoliaInsightsHit)\n }))]\n });\n });\n onActive(function (_ref6) {\n var item = _ref6.item,\n source = _ref6.source,\n state = _ref6.state,\n event = _ref6.event;\n if (!isAlgoliaInsightsHit(item)) {\n return;\n }\n onActiveEvent({\n state: state,\n event: event,\n insights: insights,\n item: item,\n insightsEvents: [_objectSpread({\n eventName: 'Item Active'\n }, createClickedEvent({\n item: item,\n items: source.getItems().filter(isAlgoliaInsightsHit)\n }))]\n });\n });\n },\n onStateChange: function onStateChange(_ref7) {\n var state = _ref7.state;\n debouncedOnStateChange({\n state: state\n });\n },\n __autocomplete_pluginOptions: options\n };\n}\nfunction getAlgoliaSources() {\n var _context$algoliaInsig;\n var algoliaSourceBase = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 ? arguments[1] : undefined;\n return [].concat(_toConsumableArray(algoliaSourceBase), ['autocomplete-internal'], _toConsumableArray((_context$algoliaInsig = context.algoliaInsightsPlugin) !== null && _context$algoliaInsig !== void 0 && _context$algoliaInsig.__automaticInsights ? ['autocomplete-automatic'] : []));\n}\nfunction getOptions(options) {\n return _objectSpread({\n onItemsChange: function onItemsChange(_ref8) {\n var insights = _ref8.insights,\n insightsEvents = _ref8.insightsEvents,\n state = _ref8.state;\n insights.viewedObjectIDs.apply(insights, _toConsumableArray(insightsEvents.map(function (event) {\n return _objectSpread(_objectSpread({}, event), {}, {\n algoliaSource: getAlgoliaSources(event.algoliaSource, state.context)\n });\n })));\n },\n onSelect: function onSelect(_ref9) {\n var insights = _ref9.insights,\n insightsEvents = _ref9.insightsEvents,\n state = _ref9.state;\n insights.clickedObjectIDsAfterSearch.apply(insights, _toConsumableArray(insightsEvents.map(function (event) {\n return _objectSpread(_objectSpread({}, event), {}, {\n algoliaSource: getAlgoliaSources(event.algoliaSource, state.context)\n });\n })));\n },\n onActive: noop,\n __autocomplete_clickAnalytics: true\n }, options);\n}\nfunction loadInsights(environment) {\n var errorMessage = \"[Autocomplete]: Could not load search-insights.js. Please load it manually following https://alg.li/insights-autocomplete\";\n try {\n var script = environment.document.createElement('script');\n script.async = true;\n script.src = ALGOLIA_INSIGHTS_SRC;\n script.onerror = function () {\n // eslint-disable-next-line no-console\n console.error(errorMessage);\n };\n document.body.appendChild(script);\n } catch (cause) {\n // eslint-disable-next-line no-console\n console.error(errorMessage);\n }\n}\n\n/**\n * While `search-insights` supports both string and number user tokens,\n * the Search API only accepts strings. This function normalizes the user token.\n */\nfunction normalizeUserToken(userToken) {\n return typeof userToken === 'number' ? userToken.toString() : userToken;\n}","/**\n * Safely runs code meant for browser environments only.\n */\nexport function safelyRunOnBrowser(callback) {\n if (typeof window !== 'undefined') {\n return callback({\n window: window\n });\n }\n return undefined;\n}","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","function createInternalCancelablePromise(promise, initialState) {\n var state = initialState;\n return {\n then: function then(onfulfilled, onrejected) {\n return createInternalCancelablePromise(promise.then(createCallback(onfulfilled, state, promise), createCallback(onrejected, state, promise)), state);\n },\n catch: function _catch(onrejected) {\n return createInternalCancelablePromise(promise.catch(createCallback(onrejected, state, promise)), state);\n },\n finally: function _finally(onfinally) {\n if (onfinally) {\n state.onCancelList.push(onfinally);\n }\n return createInternalCancelablePromise(promise.finally(createCallback(onfinally && function () {\n state.onCancelList = [];\n return onfinally();\n }, state, promise)), state);\n },\n cancel: function cancel() {\n state.isCanceled = true;\n var callbacks = state.onCancelList;\n state.onCancelList = [];\n callbacks.forEach(function (callback) {\n callback();\n });\n },\n isCanceled: function isCanceled() {\n return state.isCanceled === true;\n }\n };\n}\nexport function createCancelablePromise(executor) {\n return createInternalCancelablePromise(new Promise(function (resolve, reject) {\n return executor(resolve, reject);\n }), {\n isCanceled: false,\n onCancelList: []\n });\n}\ncreateCancelablePromise.resolve = function (value) {\n return cancelable(Promise.resolve(value));\n};\ncreateCancelablePromise.reject = function (reason) {\n return cancelable(Promise.reject(reason));\n};\nexport function cancelable(promise) {\n return createInternalCancelablePromise(promise, {\n isCanceled: false,\n onCancelList: []\n });\n}\nfunction createCallback(onResult, state, fallback) {\n if (!onResult) {\n return fallback;\n }\n return function callback(arg) {\n if (state.isCanceled) {\n return arg;\n }\n return onResult(arg);\n };\n}","// Ensures multiple callers sync to the same promise.\nvar _hasWaitPromiseResolved = true;\nvar _waitPromise;\nexport function createCancelablePromiseList() {\n var list = [];\n return {\n add: function add(cancelablePromise) {\n list.push(cancelablePromise);\n return cancelablePromise.finally(function () {\n list = list.filter(function (item) {\n return item !== cancelablePromise;\n });\n });\n },\n cancelAll: function cancelAll() {\n list.forEach(function (promise) {\n return promise.cancel();\n });\n },\n isEmpty: function isEmpty() {\n return list.length === 0;\n },\n wait: function wait(timeout) {\n // Reuse promise if already exists. Keeps multiple callers subscribed to the same promise.\n if (!_hasWaitPromiseResolved) {\n return _waitPromise;\n }\n\n // Creates a promise which either resolves after all pending requests complete\n // or the timeout is reached (if provided). Whichever comes first.\n _hasWaitPromiseResolved = false;\n _waitPromise = !timeout ? Promise.all(list) : Promise.race([Promise.all(list), new Promise(function (resolve) {\n return setTimeout(resolve, timeout);\n })]);\n return _waitPromise.then(function () {\n _hasWaitPromiseResolved = true;\n });\n }\n };\n}","/**\n * Returns the next active item ID from the current state.\n *\n * We allow circular keyboard navigation from the base index.\n * The base index can either be `null` (nothing is highlighted) or `0`\n * (the first item is highlighted).\n * The base index is allowed to get assigned `null` only if\n * `props.defaultActiveItemId` is `null`. This pattern allows to \"stop\"\n * by the actual query before navigating to other suggestions as seen on\n * Google or Amazon.\n *\n * @param moveAmount The offset to increment (or decrement) the last index\n * @param baseIndex The current index to compute the next index from\n * @param itemCount The number of items\n * @param defaultActiveItemId The default active index to fallback to\n */\nexport function getNextActiveItemId(moveAmount, baseIndex, itemCount, defaultActiveItemId) {\n if (!itemCount) {\n return null;\n }\n if (moveAmount < 0 && (baseIndex === null || defaultActiveItemId !== null && baseIndex === 0)) {\n return itemCount + moveAmount;\n }\n var numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;\n if (numericIndex <= -1 || numericIndex >= itemCount) {\n return defaultActiveItemId === null ? null : 0;\n }\n return numericIndex;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nimport { invariant, decycle, noop } from '@algolia/autocomplete-shared';\nexport function getNormalizedSources(getSources, params) {\n var seenSourceIds = [];\n return Promise.resolve(getSources(params)).then(function (sources) {\n invariant(Array.isArray(sources), function () {\n return \"The `getSources` function must return an array of sources but returned type \".concat(JSON.stringify(_typeof(sources)), \":\\n\\n\").concat(JSON.stringify(decycle(sources), null, 2));\n });\n return Promise.all(sources\n // We allow `undefined` and `false` sources to allow users to use\n // `Boolean(query) && source` (=> `false`).\n // We need to remove these values at this point.\n .filter(function (maybeSource) {\n return Boolean(maybeSource);\n }).map(function (source) {\n invariant(typeof source.sourceId === 'string', 'A source must provide a `sourceId` string.');\n if (seenSourceIds.includes(source.sourceId)) {\n throw new Error(\"[Autocomplete] The `sourceId` \".concat(JSON.stringify(source.sourceId), \" is not unique.\"));\n }\n seenSourceIds.push(source.sourceId);\n var defaultSource = {\n getItemInputValue: function getItemInputValue(_ref) {\n var state = _ref.state;\n return state.query;\n },\n getItemUrl: function getItemUrl() {\n return undefined;\n },\n onSelect: function onSelect(_ref2) {\n var setIsOpen = _ref2.setIsOpen;\n setIsOpen(false);\n },\n onActive: noop,\n onResolve: noop\n };\n Object.keys(defaultSource).forEach(function (key) {\n defaultSource[key].__default = true;\n });\n var normalizedSource = _objectSpread(_objectSpread({}, defaultSource), source);\n return Promise.resolve(normalizedSource);\n }));\n });\n}","function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n/**\n * If a plugin is configured to await a submit event, this returns a promise\n * for either the max timeout value found or until it completes.\n * Otherwise, return undefined.\n */\nexport var getPluginSubmitPromise = function getPluginSubmitPromise(plugins, pendingRequests) {\n var waitUntilComplete = false;\n var timeouts = [];\n var _iterator = _createForOfIteratorHelper(plugins),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _plugin$__autocomplet, _plugin$__autocomplet2, _plugin$__autocomplet3;\n var plugin = _step.value;\n var value = (_plugin$__autocomplet = plugin.__autocomplete_pluginOptions) === null || _plugin$__autocomplet === void 0 ? void 0 : (_plugin$__autocomplet2 = (_plugin$__autocomplet3 = _plugin$__autocomplet).awaitSubmit) === null || _plugin$__autocomplet2 === void 0 ? void 0 : _plugin$__autocomplet2.call(_plugin$__autocomplet3);\n if (typeof value === 'number') {\n timeouts.push(value);\n } else if (value === true) {\n waitUntilComplete = true;\n break; // break loop as bool overrides num array below\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (waitUntilComplete) {\n return pendingRequests.wait();\n } else if (timeouts.length > 0) {\n return pendingRequests.wait(Math.max.apply(Math, timeouts));\n }\n return undefined;\n};","// We don't have access to the autocomplete source when we call `onKeyDown`\n// or `onClick` because those are native browser events.\n// However, we can get the source from the suggestion index.\nfunction getCollectionFromActiveItemId(state) {\n // Given 3 sources with respectively 1, 2 and 3 suggestions: [1, 2, 3]\n // We want to get the accumulated counts:\n // [1, 1 + 2, 1 + 2 + 3] = [1, 3, 3 + 3] = [1, 3, 6]\n var accumulatedCollectionsCount = state.collections.map(function (collections) {\n return collections.items.length;\n }).reduce(function (acc, collectionsCount, index) {\n var previousValue = acc[index - 1] || 0;\n var nextValue = previousValue + collectionsCount;\n acc.push(nextValue);\n return acc;\n }, []);\n\n // Based on the accumulated counts, we can infer the index of the suggestion.\n var collectionIndex = accumulatedCollectionsCount.reduce(function (acc, current) {\n if (current <= state.activeItemId) {\n return acc + 1;\n }\n return acc;\n }, 0);\n return state.collections[collectionIndex];\n}\n\n/**\n * Gets the highlighted index relative to a suggestion object (not the absolute\n * highlighted index).\n *\n * Example:\n * [['a', 'b'], ['c', 'd', 'e'], ['f']]\n * ↑\n * (absolute: 3, relative: 1)\n */\nfunction getRelativeActiveItemId(_ref) {\n var state = _ref.state,\n collection = _ref.collection;\n var isOffsetFound = false;\n var counter = 0;\n var previousItemsOffset = 0;\n while (isOffsetFound === false) {\n var currentCollection = state.collections[counter];\n if (currentCollection === collection) {\n isOffsetFound = true;\n break;\n }\n previousItemsOffset += currentCollection.items.length;\n counter++;\n }\n return state.activeItemId - previousItemsOffset;\n}\nexport function getActiveItem(state) {\n var collection = getCollectionFromActiveItemId(state);\n if (!collection) {\n return null;\n }\n var item = collection.items[getRelativeActiveItemId({\n state: state,\n collection: collection\n })];\n var source = collection.source;\n var itemInputValue = source.getItemInputValue({\n item: item,\n state: state\n });\n var itemUrl = source.getItemUrl({\n item: item,\n state: state\n });\n return {\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n source: source\n };\n}","/**\n * Returns a full element id for an autocomplete element.\n *\n * @param autocompleteInstanceId The id of the autocomplete instance\n * @param elementId The specific element id\n * @param source The source of the element, when it needs to be scoped\n */\nexport function getAutocompleteElementId(autocompleteInstanceId, elementId, source) {\n return [autocompleteInstanceId, source === null || source === void 0 ? void 0 : source.sourceId, elementId].filter(Boolean).join('-').replace(/\\s/g, '');\n}","var regex = /((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;\nexport function isSamsung(userAgent) {\n return Boolean(userAgent && userAgent.match(regex));\n}","export function getNativeEvent(event) {\n return event.nativeEvent || event;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { createCancelablePromiseList } from './utils';\nexport function createStore(reducer, props, onStoreStateChange) {\n var state = props.initialState;\n return {\n getState: function getState() {\n return state;\n },\n dispatch: function dispatch(action, payload) {\n var prevState = _objectSpread({}, state);\n state = reducer(state, {\n type: action,\n props: props,\n payload: payload\n });\n onStoreStateChange({\n state: state,\n prevState: prevState\n });\n },\n pendingRequests: createCancelablePromiseList()\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { flatten } from '@algolia/autocomplete-shared';\nexport function getAutocompleteSetters(_ref) {\n var store = _ref.store;\n var setActiveItemId = function setActiveItemId(value) {\n store.dispatch('setActiveItemId', value);\n };\n var setQuery = function setQuery(value) {\n store.dispatch('setQuery', value);\n };\n var setCollections = function setCollections(rawValue) {\n var baseItemId = 0;\n var value = rawValue.map(function (collection) {\n return _objectSpread(_objectSpread({}, collection), {}, {\n // We flatten the stored items to support calling `getAlgoliaResults`\n // from the source itself.\n items: flatten(collection.items).map(function (item) {\n return _objectSpread(_objectSpread({}, item), {}, {\n __autocomplete_id: baseItemId++\n });\n })\n });\n });\n store.dispatch('setCollections', value);\n };\n var setIsOpen = function setIsOpen(value) {\n store.dispatch('setIsOpen', value);\n };\n var setStatus = function setStatus(value) {\n store.dispatch('setStatus', value);\n };\n var setContext = function setContext(value) {\n store.dispatch('setContext', value);\n };\n return {\n setActiveItemId: setActiveItemId,\n setQuery: setQuery,\n setCollections: setCollections,\n setIsOpen: setIsOpen,\n setStatus: setStatus,\n setContext: setContext\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { getItemsCount, generateAutocompleteId, flatten } from '@algolia/autocomplete-shared';\nimport { getNormalizedSources } from './utils';\nexport function getDefaultProps(props, pluginSubscribers) {\n var _props$id;\n /* eslint-disable no-restricted-globals */\n var environment = typeof window !== 'undefined' ? window : {};\n /* eslint-enable no-restricted-globals */\n var plugins = props.plugins || [];\n return _objectSpread(_objectSpread({\n debug: false,\n openOnFocus: false,\n enterKeyHint: undefined,\n ignoreCompositionEvents: false,\n placeholder: '',\n autoFocus: false,\n defaultActiveItemId: null,\n stallThreshold: 300,\n insights: undefined,\n environment: environment,\n shouldPanelOpen: function shouldPanelOpen(_ref) {\n var state = _ref.state;\n return getItemsCount(state) > 0;\n },\n reshape: function reshape(_ref2) {\n var sources = _ref2.sources;\n return sources;\n }\n }, props), {}, {\n // Since `generateAutocompleteId` triggers a side effect (it increments\n // an internal counter), we don't want to execute it if unnecessary.\n id: (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : generateAutocompleteId(),\n plugins: plugins,\n // The following props need to be deeply defaulted.\n initialState: _objectSpread({\n activeItemId: null,\n query: '',\n completion: null,\n collections: [],\n isOpen: false,\n status: 'idle',\n context: {}\n }, props.initialState),\n onStateChange: function onStateChange(params) {\n var _props$onStateChange;\n (_props$onStateChange = props.onStateChange) === null || _props$onStateChange === void 0 ? void 0 : _props$onStateChange.call(props, params);\n plugins.forEach(function (x) {\n var _x$onStateChange;\n return (_x$onStateChange = x.onStateChange) === null || _x$onStateChange === void 0 ? void 0 : _x$onStateChange.call(x, params);\n });\n },\n onSubmit: function onSubmit(params) {\n var _props$onSubmit;\n (_props$onSubmit = props.onSubmit) === null || _props$onSubmit === void 0 ? void 0 : _props$onSubmit.call(props, params);\n plugins.forEach(function (x) {\n var _x$onSubmit;\n return (_x$onSubmit = x.onSubmit) === null || _x$onSubmit === void 0 ? void 0 : _x$onSubmit.call(x, params);\n });\n },\n onReset: function onReset(params) {\n var _props$onReset;\n (_props$onReset = props.onReset) === null || _props$onReset === void 0 ? void 0 : _props$onReset.call(props, params);\n plugins.forEach(function (x) {\n var _x$onReset;\n return (_x$onReset = x.onReset) === null || _x$onReset === void 0 ? void 0 : _x$onReset.call(x, params);\n });\n },\n getSources: function getSources(params) {\n return Promise.all([].concat(_toConsumableArray(plugins.map(function (plugin) {\n return plugin.getSources;\n })), [props.getSources]).filter(Boolean).map(function (getSources) {\n return getNormalizedSources(getSources, params);\n })).then(function (nested) {\n return flatten(nested);\n }).then(function (sources) {\n return sources.map(function (source) {\n return _objectSpread(_objectSpread({}, source), {}, {\n onSelect: function onSelect(params) {\n source.onSelect(params);\n pluginSubscribers.forEach(function (x) {\n var _x$onSelect;\n return (_x$onSelect = x.onSelect) === null || _x$onSelect === void 0 ? void 0 : _x$onSelect.call(x, params);\n });\n },\n onActive: function onActive(params) {\n source.onActive(params);\n pluginSubscribers.forEach(function (x) {\n var _x$onActive;\n return (_x$onActive = x.onActive) === null || _x$onActive === void 0 ? void 0 : _x$onActive.call(x, params);\n });\n },\n onResolve: function onResolve(params) {\n source.onResolve(params);\n pluginSubscribers.forEach(function (x) {\n var _x$onResolve;\n return (_x$onResolve = x.onResolve) === null || _x$onResolve === void 0 ? void 0 : _x$onResolve.call(x, params);\n });\n }\n });\n });\n });\n },\n navigator: _objectSpread({\n navigate: function navigate(_ref3) {\n var itemUrl = _ref3.itemUrl;\n environment.location.assign(itemUrl);\n },\n navigateNewTab: function navigateNewTab(_ref4) {\n var itemUrl = _ref4.itemUrl;\n var windowReference = environment.open(itemUrl, '_blank', 'noopener');\n windowReference === null || windowReference === void 0 ? void 0 : windowReference.focus();\n },\n navigateNewWindow: function navigateNewWindow(_ref5) {\n var itemUrl = _ref5.itemUrl;\n environment.open(itemUrl, '_blank', 'noopener');\n }\n }, props.navigator)\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { flatten } from '@algolia/autocomplete-shared';\nexport function reshape(_ref) {\n var collections = _ref.collections,\n props = _ref.props,\n state = _ref.state;\n // Sources are grouped by `sourceId` to conveniently pick them via destructuring.\n // Example: `const { recentSearchesPlugin } = sourcesBySourceId`\n var originalSourcesBySourceId = collections.reduce(function (acc, collection) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, collection.source.sourceId, _objectSpread(_objectSpread({}, collection.source), {}, {\n getItems: function getItems() {\n // We provide the resolved items from the collection to the `reshape` prop.\n return flatten(collection.items);\n }\n })));\n }, {});\n var _props$plugins$reduce = props.plugins.reduce(function (acc, plugin) {\n if (plugin.reshape) {\n return plugin.reshape(acc);\n }\n return acc;\n }, {\n sourcesBySourceId: originalSourcesBySourceId,\n state: state\n }),\n sourcesBySourceId = _props$plugins$reduce.sourcesBySourceId;\n var reshapeSources = props.reshape({\n sourcesBySourceId: sourcesBySourceId,\n sources: Object.values(sourcesBySourceId),\n state: state\n });\n\n // We reconstruct the collections with the items modified by the `reshape` prop.\n return flatten(reshapeSources).filter(Boolean).map(function (source) {\n return {\n source: source,\n items: source.getItems()\n };\n });\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nimport { decycle, flatten, invariant } from '@algolia/autocomplete-shared';\nimport { mapToAlgoliaResponse } from './utils';\nfunction isDescription(item) {\n return Boolean(item.execute);\n}\nfunction isRequesterDescription(description) {\n return Boolean(description === null || description === void 0 ? void 0 : description.execute);\n}\nexport function preResolve(itemsOrDescription, sourceId, state) {\n if (isRequesterDescription(itemsOrDescription)) {\n var contextParameters = itemsOrDescription.requesterId === 'algolia' ? Object.assign.apply(Object, [{}].concat(_toConsumableArray(Object.keys(state.context).map(function (key) {\n var _state$context$key;\n return (_state$context$key = state.context[key]) === null || _state$context$key === void 0 ? void 0 : _state$context$key.__algoliaSearchParameters;\n })))) : {};\n return _objectSpread(_objectSpread({}, itemsOrDescription), {}, {\n requests: itemsOrDescription.queries.map(function (query) {\n return {\n query: itemsOrDescription.requesterId === 'algolia' ? _objectSpread(_objectSpread({}, query), {}, {\n params: _objectSpread(_objectSpread({}, contextParameters), query.params)\n }) : query,\n sourceId: sourceId,\n transformResponse: itemsOrDescription.transformResponse\n };\n })\n });\n }\n return {\n items: itemsOrDescription,\n sourceId: sourceId\n };\n}\nexport function resolve(items) {\n var packed = items.reduce(function (acc, current) {\n if (!isDescription(current)) {\n acc.push(current);\n return acc;\n }\n var searchClient = current.searchClient,\n execute = current.execute,\n requesterId = current.requesterId,\n requests = current.requests;\n var container = acc.find(function (item) {\n return isDescription(current) && isDescription(item) && item.searchClient === searchClient && Boolean(requesterId) && item.requesterId === requesterId;\n });\n if (container) {\n var _container$items;\n (_container$items = container.items).push.apply(_container$items, _toConsumableArray(requests));\n } else {\n var request = {\n execute: execute,\n requesterId: requesterId,\n items: requests,\n searchClient: searchClient\n };\n acc.push(request);\n }\n return acc;\n }, []);\n var values = packed.map(function (maybeDescription) {\n if (!isDescription(maybeDescription)) {\n return Promise.resolve(maybeDescription);\n }\n var _ref = maybeDescription,\n execute = _ref.execute,\n items = _ref.items,\n searchClient = _ref.searchClient;\n return execute({\n searchClient: searchClient,\n requests: items\n });\n });\n return Promise.all(values).then(function (responses) {\n return flatten(responses);\n });\n}\nexport function postResolve(responses, sources, store) {\n return sources.map(function (source) {\n var matches = responses.filter(function (response) {\n return response.sourceId === source.sourceId;\n });\n var results = matches.map(function (_ref2) {\n var items = _ref2.items;\n return items;\n });\n var transform = matches[0].transformResponse;\n var items = transform ? transform(mapToAlgoliaResponse(results)) : results;\n source.onResolve({\n source: source,\n results: results,\n items: items,\n state: store.getState()\n });\n invariant(Array.isArray(items), function () {\n return \"The `getItems` function from source \\\"\".concat(source.sourceId, \"\\\" must return an array of items but returned type \").concat(JSON.stringify(_typeof(items)), \":\\n\\n\").concat(JSON.stringify(decycle(items), null, 2), \".\\n\\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems\");\n });\n invariant(items.every(Boolean), \"The `getItems` function from source \\\"\".concat(source.sourceId, \"\\\" must return an array of items but returned \").concat(JSON.stringify(undefined), \".\\n\\nDid you forget to return items?\\n\\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems\"));\n return {\n source: source,\n items: items\n };\n });\n}","export function mapToAlgoliaResponse(rawResults) {\n return {\n results: rawResults,\n hits: rawResults.map(function (result) {\n return result.hits;\n }).filter(Boolean),\n facetHits: rawResults.map(function (result) {\n var _facetHits;\n return (_facetHits = result.facetHits) === null || _facetHits === void 0 ? void 0 : _facetHits.map(function (facetHit) {\n // Bring support for the highlighting components.\n return {\n label: facetHit.value,\n count: facetHit.count,\n _highlightResult: {\n label: {\n value: facetHit.highlighted\n }\n }\n };\n });\n }).filter(Boolean)\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"event\", \"nextState\", \"props\", \"query\", \"refresh\", \"store\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { reshape } from './reshape';\nimport { preResolve, resolve, postResolve } from './resolve';\nimport { cancelable, createConcurrentSafePromise, getActiveItem } from './utils';\nvar lastStalledId = null;\nvar runConcurrentSafePromise = createConcurrentSafePromise();\nexport function onInput(_ref) {\n var event = _ref.event,\n _ref$nextState = _ref.nextState,\n nextState = _ref$nextState === void 0 ? {} : _ref$nextState,\n props = _ref.props,\n query = _ref.query,\n refresh = _ref.refresh,\n store = _ref.store,\n setters = _objectWithoutProperties(_ref, _excluded);\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n var setCollections = setters.setCollections,\n setIsOpen = setters.setIsOpen,\n setQuery = setters.setQuery,\n setActiveItemId = setters.setActiveItemId,\n setStatus = setters.setStatus,\n setContext = setters.setContext;\n setQuery(query);\n setActiveItemId(props.defaultActiveItemId);\n if (!query && props.openOnFocus === false) {\n var _nextState$isOpen;\n var collections = store.getState().collections.map(function (collection) {\n return _objectSpread(_objectSpread({}, collection), {}, {\n items: []\n });\n });\n setStatus('idle');\n setCollections(collections);\n setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({\n state: store.getState()\n }));\n\n // We make sure to update the latest resolved value of the tracked\n // promises to keep late resolving promises from \"cancelling\" the state\n // updates performed in this code path.\n // We chain with a void promise to respect `onInput`'s expected return type.\n var _request = cancelable(runConcurrentSafePromise(collections).then(function () {\n return Promise.resolve();\n }));\n return store.pendingRequests.add(_request);\n }\n setStatus('loading');\n lastStalledId = props.environment.setTimeout(function () {\n setStatus('stalled');\n }, props.stallThreshold);\n\n // We track the entire promise chain triggered by `onInput` before mutating\n // the Autocomplete state to make sure that any state manipulation is based on\n // fresh data regardless of when promises individually resolve.\n // We don't track nested promises and only rely on the full chain resolution,\n // meaning we should only ever manipulate the state once this concurrent-safe\n // promise is resolved.\n var request = cancelable(runConcurrentSafePromise(props.getSources(_objectSpread({\n query: query,\n refresh: refresh,\n state: store.getState()\n }, setters)).then(function (sources) {\n return Promise.all(sources.map(function (source) {\n return Promise.resolve(source.getItems(_objectSpread({\n query: query,\n refresh: refresh,\n state: store.getState()\n }, setters))).then(function (itemsOrDescription) {\n return preResolve(itemsOrDescription, source.sourceId, store.getState());\n });\n })).then(resolve).then(function (responses) {\n var __automaticInsights = responses.some(function (_ref2) {\n var items = _ref2.items;\n return isSearchResponseWithAutomaticInsightsFlag(items);\n });\n\n // No need to pollute the context if `__automaticInsights=false`\n if (__automaticInsights) {\n var _store$getState$conte;\n setContext({\n algoliaInsightsPlugin: _objectSpread(_objectSpread({}, ((_store$getState$conte = store.getState().context) === null || _store$getState$conte === void 0 ? void 0 : _store$getState$conte.algoliaInsightsPlugin) || {}), {}, {\n __automaticInsights: __automaticInsights\n })\n });\n }\n return postResolve(responses, sources, store);\n }).then(function (collections) {\n return reshape({\n collections: collections,\n props: props,\n state: store.getState()\n });\n });\n }))).then(function (collections) {\n var _nextState$isOpen2;\n // Parameters passed to `onInput` could be stale when the following code\n // executes, because `onInput` calls may not resolve in order.\n // If it becomes a problem we'll need to save the last passed parameters.\n // See: https://codesandbox.io/s/agitated-cookies-y290z\n\n setStatus('idle');\n setCollections(collections);\n var isPanelOpen = props.shouldPanelOpen({\n state: store.getState()\n });\n setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);\n var highlightedItem = getActiveItem(store.getState());\n if (store.getState().activeItemId !== null && highlightedItem) {\n var item = highlightedItem.item,\n itemInputValue = highlightedItem.itemInputValue,\n itemUrl = highlightedItem.itemUrl,\n source = highlightedItem.source;\n source.onActive(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n }\n }).finally(function () {\n setStatus('idle');\n if (lastStalledId) {\n props.environment.clearTimeout(lastStalledId);\n }\n });\n return store.pendingRequests.add(request);\n}\nfunction isSearchResponseWithAutomaticInsightsFlag(items) {\n return !Array.isArray(items) && Boolean(items === null || items === void 0 ? void 0 : items._automaticInsights);\n}","/**\n * Creates a runner that executes promises in a concurrent-safe way.\n *\n * This is useful to prevent older promises to resolve after a newer promise,\n * otherwise resulting in stale resolved values.\n */\nexport function createConcurrentSafePromise() {\n var basePromiseId = -1;\n var latestResolvedId = -1;\n var latestResolvedValue = undefined;\n return function runConcurrentSafePromise(promise) {\n basePromiseId++;\n var currentPromiseId = basePromiseId;\n return Promise.resolve(promise).then(function (x) {\n // The promise might take too long to resolve and get outdated. This would\n // result in resolving stale values.\n // When this happens, we ignore the promise value and return the one\n // coming from the latest resolved value.\n //\n // +----------------------------------+\n // | 100ms |\n // | run(1) +---> R1 |\n // | 300ms |\n // | run(2) +-------------> R2 (SKIP) |\n // | 200ms |\n // | run(3) +--------> R3 |\n // +----------------------------------+\n if (latestResolvedValue && currentPromiseId < latestResolvedId) {\n return latestResolvedValue;\n }\n latestResolvedId = currentPromiseId;\n latestResolvedValue = x;\n return x;\n });\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"event\", \"props\", \"refresh\", \"store\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { onInput } from './onInput';\nimport { getPluginSubmitPromise, getActiveItem, getAutocompleteElementId } from './utils';\nexport function onKeyDown(_ref) {\n var event = _ref.event,\n props = _ref.props,\n refresh = _ref.refresh,\n store = _ref.store,\n setters = _objectWithoutProperties(_ref, _excluded);\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n // eslint-disable-next-line no-inner-declarations\n var triggerScrollIntoView = function triggerScrollIntoView() {\n var highlightedItem = getActiveItem(store.getState());\n var nodeItem = props.environment.document.getElementById(getAutocompleteElementId(props.id, \"item-\".concat(store.getState().activeItemId), highlightedItem === null || highlightedItem === void 0 ? void 0 : highlightedItem.source));\n if (nodeItem) {\n if (nodeItem.scrollIntoViewIfNeeded) {\n nodeItem.scrollIntoViewIfNeeded(false);\n } else {\n nodeItem.scrollIntoView(false);\n }\n }\n }; // eslint-disable-next-line no-inner-declarations\n var triggerOnActive = function triggerOnActive() {\n var highlightedItem = getActiveItem(store.getState());\n if (store.getState().activeItemId !== null && highlightedItem) {\n var item = highlightedItem.item,\n itemInputValue = highlightedItem.itemInputValue,\n itemUrl = highlightedItem.itemUrl,\n source = highlightedItem.source;\n source.onActive(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n }\n }; // Default browser behavior changes the caret placement on ArrowUp and\n // ArrowDown.\n event.preventDefault();\n\n // When re-opening the panel, we need to split the logic to keep the actions\n // synchronized as `onInput` returns a promise.\n if (store.getState().isOpen === false && (props.openOnFocus || Boolean(store.getState().query))) {\n onInput(_objectSpread({\n event: event,\n props: props,\n query: store.getState().query,\n refresh: refresh,\n store: store\n }, setters)).then(function () {\n store.dispatch(event.key, {\n nextActiveItemId: props.defaultActiveItemId\n });\n triggerOnActive();\n // Since we rely on the DOM, we need to wait for all the micro tasks to\n // finish (which include re-opening the panel) to make sure all the\n // elements are available.\n setTimeout(triggerScrollIntoView, 0);\n });\n } else {\n store.dispatch(event.key, {});\n triggerOnActive();\n triggerScrollIntoView();\n }\n } else if (event.key === 'Escape') {\n // This prevents the default browser behavior on `input[type=\"search\"]`\n // from removing the query right away because we first want to close the\n // panel.\n event.preventDefault();\n store.dispatch(event.key, null);\n\n // Hitting the `Escape` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Tab') {\n store.dispatch('blur', null);\n\n // Hitting the `Tab` key signals the end of a user interaction with the\n // autocomplete. At this point, we should ignore any requests that are still\n // pending and could reopen the panel once they resolve, because that would\n // result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n } else if (event.key === 'Enter') {\n // No active item, so we let the browser handle the native `onSubmit` form\n // event.\n if (store.getState().activeItemId === null || store.getState().collections.every(function (collection) {\n return collection.items.length === 0;\n })) {\n var waitForSubmit = getPluginSubmitPromise(props.plugins, store.pendingRequests);\n if (waitForSubmit !== undefined) {\n waitForSubmit.then(store.pendingRequests.cancelAll); // Cancel the rest if timeout number is provided\n } else if (!props.debug) {\n // If requests are still pending when the panel closes, they could reopen\n // the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n store.pendingRequests.cancelAll();\n }\n return;\n }\n\n // This prevents the `onSubmit` event to be sent because an item is\n // highlighted.\n event.preventDefault();\n var _ref2 = getActiveItem(store.getState()),\n item = _ref2.item,\n itemInputValue = _ref2.itemInputValue,\n itemUrl = _ref2.itemUrl,\n source = _ref2.source;\n if (event.metaKey || event.ctrlKey) {\n if (itemUrl !== undefined) {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n props.navigator.navigateNewTab({\n itemUrl: itemUrl,\n item: item,\n state: store.getState()\n });\n }\n } else if (event.shiftKey) {\n if (itemUrl !== undefined) {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n props.navigator.navigateNewWindow({\n itemUrl: itemUrl,\n item: item,\n state: store.getState()\n });\n }\n } else if (event.altKey) {\n // Keep native browser behavior\n } else {\n if (itemUrl !== undefined) {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n props.navigator.navigate({\n itemUrl: itemUrl,\n item: item,\n state: store.getState()\n });\n return;\n }\n onInput(_objectSpread({\n event: event,\n nextState: {\n isOpen: false\n },\n props: props,\n query: itemInputValue,\n refresh: refresh,\n store: store\n }, setters)).then(function () {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n });\n }\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nvar _excluded = [\"props\", \"refresh\", \"store\"],\n _excluded2 = [\"inputElement\", \"formElement\", \"panelElement\"],\n _excluded3 = [\"inputElement\"],\n _excluded4 = [\"inputElement\", \"maxLength\"],\n _excluded5 = [\"source\"],\n _excluded6 = [\"item\", \"source\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport { noop } from '@algolia/autocomplete-shared';\nimport { onInput } from './onInput';\nimport { onKeyDown as _onKeyDown } from './onKeyDown';\nimport { getPluginSubmitPromise, getActiveItem, getAutocompleteElementId, isOrContainsNode, isSamsung, getNativeEvent } from './utils';\nexport function getPropGetters(_ref) {\n var props = _ref.props,\n refresh = _ref.refresh,\n store = _ref.store,\n setters = _objectWithoutProperties(_ref, _excluded);\n var getEnvironmentProps = function getEnvironmentProps(providedProps) {\n var inputElement = providedProps.inputElement,\n formElement = providedProps.formElement,\n panelElement = providedProps.panelElement,\n rest = _objectWithoutProperties(providedProps, _excluded2);\n function onMouseDownOrTouchStart(event) {\n // The `onTouchStart`/`onMouseDown` events shouldn't trigger the `blur`\n // handler when it's not an interaction with Autocomplete.\n // We detect it with the following heuristics:\n // - the panel is closed AND there are no pending requests\n // (no interaction with the autocomplete, no future state updates)\n // - OR the touched target is the input element (should open the panel)\n var isAutocompleteInteraction = store.getState().isOpen || !store.pendingRequests.isEmpty();\n if (!isAutocompleteInteraction || event.target === inputElement) {\n return;\n }\n\n // @TODO: support cases where there are multiple Autocomplete instances.\n // Right now, a second instance makes this computation return false.\n var isTargetWithinAutocomplete = [formElement, panelElement].some(function (contextNode) {\n return isOrContainsNode(contextNode, event.target);\n });\n if (isTargetWithinAutocomplete === false) {\n store.dispatch('blur', null);\n\n // If requests are still pending when the user closes the panel, they\n // could reopen the panel once they resolve.\n // We want to prevent any subsequent query from reopening the panel\n // because it would result in an unsolicited UI behavior.\n if (!props.debug) {\n store.pendingRequests.cancelAll();\n }\n }\n }\n return _objectSpread({\n // We do not rely on the native `blur` event of the input to close the\n // panel, but rather on a custom `touchstart`/`mousedown` event outside\n // of the autocomplete elements.\n // This ensures we don't mistakenly interpret interactions within the\n // autocomplete (but outside of the input) as a signal to close the panel.\n // For example, clicking reset button causes an input blur, but if\n // `openOnFocus=true`, it shouldn't close the panel.\n // On touch devices, scrolling results (`touchmove`) causes an input blur\n // but shouldn't close the panel.\n onTouchStart: onMouseDownOrTouchStart,\n onMouseDown: onMouseDownOrTouchStart,\n // When scrolling on touch devices (mobiles, tablets, etc.), we want to\n // mimic the native platform behavior where the input is blurred to\n // hide the virtual keyboard. This gives more vertical space to\n // discover all the suggestions showing up in the panel.\n onTouchMove: function onTouchMove(event) {\n if (store.getState().isOpen === false || inputElement !== props.environment.document.activeElement || event.target === inputElement) {\n return;\n }\n inputElement.blur();\n }\n }, rest);\n };\n var getRootProps = function getRootProps(rest) {\n return _objectSpread({\n role: 'combobox',\n 'aria-expanded': store.getState().isOpen,\n 'aria-haspopup': 'listbox',\n 'aria-controls': store.getState().isOpen ? store.getState().collections.map(function (_ref2) {\n var source = _ref2.source;\n return getAutocompleteElementId(props.id, 'list', source);\n }).join(' ') : undefined,\n 'aria-labelledby': getAutocompleteElementId(props.id, 'label')\n }, rest);\n };\n var getFormProps = function getFormProps(providedProps) {\n var inputElement = providedProps.inputElement,\n rest = _objectWithoutProperties(providedProps, _excluded3);\n var handleSubmit = function handleSubmit(event) {\n var _providedProps$inputE;\n props.onSubmit(_objectSpread({\n event: event,\n refresh: refresh,\n state: store.getState()\n }, setters));\n store.dispatch('submit', null);\n (_providedProps$inputE = providedProps.inputElement) === null || _providedProps$inputE === void 0 ? void 0 : _providedProps$inputE.blur();\n };\n return _objectSpread({\n action: '',\n noValidate: true,\n role: 'search',\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n var waitForSubmit = getPluginSubmitPromise(props.plugins, store.pendingRequests);\n if (waitForSubmit !== undefined) {\n waitForSubmit.then(function () {\n return handleSubmit(event);\n });\n } else {\n handleSubmit(event);\n }\n },\n onReset: function onReset(event) {\n var _providedProps$inputE2;\n event.preventDefault();\n props.onReset(_objectSpread({\n event: event,\n refresh: refresh,\n state: store.getState()\n }, setters));\n store.dispatch('reset', null);\n (_providedProps$inputE2 = providedProps.inputElement) === null || _providedProps$inputE2 === void 0 ? void 0 : _providedProps$inputE2.focus();\n }\n }, rest);\n };\n var getInputProps = function getInputProps(providedProps) {\n var _props$environment$na;\n function onFocus(event) {\n // We want to trigger a query when `openOnFocus` is true\n // because the panel should open with the current query.\n if (props.openOnFocus || Boolean(store.getState().query)) {\n onInput(_objectSpread({\n event: event,\n props: props,\n query: store.getState().completion || store.getState().query,\n refresh: refresh,\n store: store\n }, setters));\n }\n store.dispatch('focus', null);\n }\n var _ref3 = providedProps || {},\n inputElement = _ref3.inputElement,\n _ref3$maxLength = _ref3.maxLength,\n maxLength = _ref3$maxLength === void 0 ? 512 : _ref3$maxLength,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n var activeItem = getActiveItem(store.getState());\n var userAgent = ((_props$environment$na = props.environment.navigator) === null || _props$environment$na === void 0 ? void 0 : _props$environment$na.userAgent) || '';\n var shouldFallbackKeyHint = isSamsung(userAgent);\n var enterKeyHint = props.enterKeyHint || (activeItem !== null && activeItem !== void 0 && activeItem.itemUrl && !shouldFallbackKeyHint ? 'go' : 'search');\n return _objectSpread({\n 'aria-autocomplete': 'both',\n 'aria-activedescendant': store.getState().isOpen && store.getState().activeItemId !== null ? getAutocompleteElementId(props.id, \"item-\".concat(store.getState().activeItemId), activeItem === null || activeItem === void 0 ? void 0 : activeItem.source) : undefined,\n 'aria-controls': store.getState().isOpen ? store.getState().collections.filter(function (collection) {\n return collection.items.length > 0;\n }).map(function (_ref4) {\n var source = _ref4.source;\n return getAutocompleteElementId(props.id, 'list', source);\n }).join(' ') : undefined,\n 'aria-labelledby': getAutocompleteElementId(props.id, 'label'),\n value: store.getState().completion || store.getState().query,\n id: getAutocompleteElementId(props.id, 'input'),\n autoComplete: 'off',\n autoCorrect: 'off',\n autoCapitalize: 'off',\n enterKeyHint: enterKeyHint,\n spellCheck: 'false',\n autoFocus: props.autoFocus,\n placeholder: props.placeholder,\n maxLength: maxLength,\n type: 'search',\n onChange: function onChange(event) {\n var value = event.currentTarget.value;\n if (props.ignoreCompositionEvents && getNativeEvent(event).isComposing) {\n setters.setQuery(value);\n return;\n }\n onInput(_objectSpread({\n event: event,\n props: props,\n query: value.slice(0, maxLength),\n refresh: refresh,\n store: store\n }, setters));\n },\n onCompositionEnd: function onCompositionEnd(event) {\n onInput(_objectSpread({\n event: event,\n props: props,\n query: event.currentTarget.value.slice(0, maxLength),\n refresh: refresh,\n store: store\n }, setters));\n },\n onKeyDown: function onKeyDown(event) {\n if (getNativeEvent(event).isComposing) {\n return;\n }\n _onKeyDown(_objectSpread({\n event: event,\n props: props,\n refresh: refresh,\n store: store\n }, setters));\n },\n onFocus: onFocus,\n // We don't rely on the `blur` event.\n // See explanation in `onTouchStart`/`onMouseDown`.\n // @MAJOR See if we need to keep this handler.\n onBlur: noop,\n onClick: function onClick(event) {\n // When the panel is closed and you click on the input while\n // the input is focused, the `onFocus` event is not triggered\n // (default browser behavior).\n // In an autocomplete context, it makes sense to open the panel in this\n // case.\n // We mimic this event by catching the `onClick` event which\n // triggers the `onFocus` for the panel to open.\n if (providedProps.inputElement === props.environment.document.activeElement && !store.getState().isOpen) {\n onFocus(event);\n }\n }\n }, rest);\n };\n var getLabelProps = function getLabelProps(rest) {\n return _objectSpread({\n htmlFor: getAutocompleteElementId(props.id, 'input'),\n id: getAutocompleteElementId(props.id, 'label')\n }, rest);\n };\n var getListProps = function getListProps(providedProps) {\n var _ref5 = providedProps || {},\n source = _ref5.source,\n rest = _objectWithoutProperties(_ref5, _excluded5);\n return _objectSpread({\n role: 'listbox',\n 'aria-labelledby': getAutocompleteElementId(props.id, 'label'),\n id: getAutocompleteElementId(props.id, 'list', source)\n }, rest);\n };\n var getPanelProps = function getPanelProps(rest) {\n return _objectSpread({\n onMouseDown: function onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the panel so\n // that the blur event is not triggered, otherwise it closes the\n // panel.\n event.preventDefault();\n },\n onMouseLeave: function onMouseLeave() {\n store.dispatch('mouseleave', null);\n }\n }, rest);\n };\n var getItemProps = function getItemProps(providedProps) {\n var item = providedProps.item,\n source = providedProps.source,\n rest = _objectWithoutProperties(providedProps, _excluded6);\n return _objectSpread({\n id: getAutocompleteElementId(props.id, \"item-\".concat(item.__autocomplete_id), source),\n role: 'option',\n 'aria-selected': store.getState().activeItemId === item.__autocomplete_id,\n onMouseMove: function onMouseMove(event) {\n if (item.__autocomplete_id === store.getState().activeItemId) {\n return;\n }\n store.dispatch('mousemove', item.__autocomplete_id);\n var activeItem = getActiveItem(store.getState());\n if (store.getState().activeItemId !== null && activeItem) {\n var _item = activeItem.item,\n itemInputValue = activeItem.itemInputValue,\n itemUrl = activeItem.itemUrl,\n _source = activeItem.source;\n _source.onActive(_objectSpread({\n event: event,\n item: _item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: _source,\n state: store.getState()\n }, setters));\n }\n },\n onMouseDown: function onMouseDown(event) {\n // Prevents the `activeElement` from being changed to the item so it\n // can remain with the current `activeElement`.\n event.preventDefault();\n },\n onClick: function onClick(event) {\n var itemInputValue = source.getItemInputValue({\n item: item,\n state: store.getState()\n });\n var itemUrl = source.getItemUrl({\n item: item,\n state: store.getState()\n });\n\n // If `getItemUrl` is provided, it means that the suggestion\n // is a link, not plain text that aims at updating the query.\n // We can therefore skip the state change because it will update\n // the `activeItemId`, resulting in a UI flash, especially\n // noticeable on mobile.\n var runPreCommand = itemUrl ? Promise.resolve() : onInput(_objectSpread({\n event: event,\n nextState: {\n isOpen: false\n },\n props: props,\n query: itemInputValue,\n refresh: refresh,\n store: store\n }, setters));\n runPreCommand.then(function () {\n source.onSelect(_objectSpread({\n event: event,\n item: item,\n itemInputValue: itemInputValue,\n itemUrl: itemUrl,\n refresh: refresh,\n source: source,\n state: store.getState()\n }, setters));\n });\n }\n }, rest);\n };\n return {\n getEnvironmentProps: getEnvironmentProps,\n getRootProps: getRootProps,\n getFormProps: getFormProps,\n getLabelProps: getLabelProps,\n getInputProps: getInputProps,\n getPanelProps: getPanelProps,\n getListProps: getListProps,\n getItemProps: getItemProps\n };\n}","export function isOrContainsNode(parent, child) {\n return parent === child || parent.contains(child);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { userAgents } from '@algolia/autocomplete-shared';\nexport function getMetadata(_ref) {\n var _, _options$__autocomple, _options$__autocomple2, _options$__autocomple3;\n var plugins = _ref.plugins,\n options = _ref.options;\n var optionsKey = (_ = (((_options$__autocomple = options.__autocomplete_metadata) === null || _options$__autocomple === void 0 ? void 0 : _options$__autocomple.userAgents) || [])[0]) === null || _ === void 0 ? void 0 : _.segment;\n var extraOptions = optionsKey ? _defineProperty({}, optionsKey, Object.keys(((_options$__autocomple2 = options.__autocomplete_metadata) === null || _options$__autocomple2 === void 0 ? void 0 : _options$__autocomple2.options) || {})) : {};\n return {\n plugins: plugins.map(function (plugin) {\n return {\n name: plugin.name,\n options: Object.keys(plugin.__autocomplete_pluginOptions || [])\n };\n }),\n options: _objectSpread({\n 'autocomplete-core': Object.keys(options)\n }, extraOptions),\n ua: userAgents.concat(((_options$__autocomple3 = options.__autocomplete_metadata) === null || _options$__autocomple3 === void 0 ? void 0 : _options$__autocomple3.userAgents) || [])\n };\n}\nexport function injectMetadata(_ref3) {\n var _environment$navigato, _environment$navigato2;\n var metadata = _ref3.metadata,\n environment = _ref3.environment;\n var isMetadataEnabled = (_environment$navigato = environment.navigator) === null || _environment$navigato === void 0 ? void 0 : (_environment$navigato2 = _environment$navigato.userAgent) === null || _environment$navigato2 === void 0 ? void 0 : _environment$navigato2.includes('Algolia Crawler');\n if (isMetadataEnabled) {\n var metadataContainer = environment.document.createElement('meta');\n var headRef = environment.document.querySelector('head');\n metadataContainer.name = 'algolia:metadata';\n setTimeout(function () {\n metadataContainer.content = JSON.stringify(metadata);\n headRef.appendChild(metadataContainer);\n }, 0);\n }\n}","import { getActiveItem } from './utils';\nexport function getCompletion(_ref) {\n var _getActiveItem;\n var state = _ref.state;\n if (state.isOpen === false || state.activeItemId === null) {\n return null;\n }\n return ((_getActiveItem = getActiveItem(state)) === null || _getActiveItem === void 0 ? void 0 : _getActiveItem.itemInputValue) || null;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { getItemsCount, invariant } from '@algolia/autocomplete-shared';\nimport { getCompletion } from './getCompletion';\nimport { getNextActiveItemId } from './utils';\nexport var stateReducer = function stateReducer(state, action) {\n switch (action.type) {\n case 'setActiveItemId':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.payload\n });\n }\n case 'setQuery':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n query: action.payload,\n completion: null\n });\n }\n case 'setCollections':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n collections: action.payload\n });\n }\n case 'setIsOpen':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n isOpen: action.payload\n });\n }\n case 'setStatus':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n status: action.payload\n });\n }\n case 'setContext':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n context: _objectSpread(_objectSpread({}, state.context), action.payload)\n });\n }\n case 'ArrowDown':\n {\n var nextState = _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.payload.hasOwnProperty('nextActiveItemId') ? action.payload.nextActiveItemId : getNextActiveItemId(1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)\n });\n return _objectSpread(_objectSpread({}, nextState), {}, {\n completion: getCompletion({\n state: nextState\n })\n });\n }\n case 'ArrowUp':\n {\n var _nextState = _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: getNextActiveItemId(-1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)\n });\n return _objectSpread(_objectSpread({}, _nextState), {}, {\n completion: getCompletion({\n state: _nextState\n })\n });\n }\n case 'Escape':\n {\n if (state.isOpen) {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: null,\n isOpen: false,\n completion: null\n });\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: null,\n query: '',\n status: 'idle',\n collections: []\n });\n }\n case 'submit':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: null,\n isOpen: false,\n status: 'idle'\n });\n }\n case 'reset':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId:\n // Since we open the panel on reset when openOnFocus=true\n // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)\n\n // Since we close the panel when openOnFocus=false\n // we lose track of the highlighted index. (Query-suggestions use-case)\n action.props.openOnFocus === true ? action.props.defaultActiveItemId : null,\n status: 'idle',\n completion: null,\n query: ''\n });\n }\n case 'focus':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.props.defaultActiveItemId,\n isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({\n state: state\n })\n });\n }\n case 'blur':\n {\n if (action.props.debug) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n isOpen: false,\n activeItemId: null\n });\n }\n case 'mousemove':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.payload\n });\n }\n case 'mouseleave':\n {\n return _objectSpread(_objectSpread({}, state), {}, {\n activeItemId: action.props.defaultActiveItemId\n });\n }\n default:\n invariant(false, \"The reducer action \".concat(JSON.stringify(action.type), \" is not supported.\"));\n return state;\n }\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { createAlgoliaInsightsPlugin } from '@algolia/autocomplete-plugin-algolia-insights';\nimport { checkOptions } from './checkOptions';\nimport { createStore } from './createStore';\nimport { getAutocompleteSetters } from './getAutocompleteSetters';\nimport { getDefaultProps } from './getDefaultProps';\nimport { getPropGetters } from './getPropGetters';\nimport { getMetadata, injectMetadata } from './metadata';\nimport { onInput } from './onInput';\nimport { stateReducer } from './stateReducer';\nexport function createAutocomplete(options) {\n checkOptions(options);\n var subscribers = [];\n var props = getDefaultProps(options, subscribers);\n var store = createStore(stateReducer, props, onStoreStateChange);\n var setters = getAutocompleteSetters({\n store: store\n });\n var propGetters = getPropGetters(_objectSpread({\n props: props,\n refresh: refresh,\n store: store,\n navigator: props.navigator\n }, setters));\n function onStoreStateChange(_ref) {\n var _state$context, _state$context$algoli;\n var prevState = _ref.prevState,\n state = _ref.state;\n props.onStateChange(_objectSpread({\n prevState: prevState,\n state: state,\n refresh: refresh,\n navigator: props.navigator\n }, setters));\n if (!isAlgoliaInsightsPluginEnabled() && (_state$context = state.context) !== null && _state$context !== void 0 && (_state$context$algoli = _state$context.algoliaInsightsPlugin) !== null && _state$context$algoli !== void 0 && _state$context$algoli.__automaticInsights && props.insights !== false) {\n var plugin = createAlgoliaInsightsPlugin({\n __autocomplete_clickAnalytics: false\n });\n props.plugins.push(plugin);\n subscribePlugins([plugin]);\n }\n }\n function refresh() {\n return onInput(_objectSpread({\n event: new Event('input'),\n nextState: {\n isOpen: store.getState().isOpen\n },\n props: props,\n navigator: props.navigator,\n query: store.getState().query,\n refresh: refresh,\n store: store\n }, setters));\n }\n function subscribePlugins(plugins) {\n plugins.forEach(function (plugin) {\n var _plugin$subscribe;\n return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, _objectSpread(_objectSpread({}, setters), {}, {\n navigator: props.navigator,\n refresh: refresh,\n onSelect: function onSelect(fn) {\n subscribers.push({\n onSelect: fn\n });\n },\n onActive: function onActive(fn) {\n subscribers.push({\n onActive: fn\n });\n },\n onResolve: function onResolve(fn) {\n subscribers.push({\n onResolve: fn\n });\n }\n }));\n });\n }\n function isAlgoliaInsightsPluginEnabled() {\n return props.plugins.some(function (plugin) {\n return plugin.name === 'aa.algoliaInsightsPlugin';\n });\n }\n if (props.insights && !isAlgoliaInsightsPluginEnabled()) {\n var insightsParams = typeof props.insights === 'boolean' ? {} : props.insights;\n props.plugins.push(createAlgoliaInsightsPlugin(insightsParams));\n }\n subscribePlugins(props.plugins);\n injectMetadata({\n metadata: getMetadata({\n plugins: props.plugins,\n options: options\n }),\n environment: props.environment\n });\n return _objectSpread(_objectSpread({\n refresh: refresh,\n navigator: props.navigator\n }, propGetters), setters);\n}","export const MAX_QUERY_SIZE = 512;\nexport const ASK_AI_API_URL = 'https://askai.algolia.com/chat';\nexport const USE_ASK_AI_TOKEN = true;\n","import { ASK_AI_API_URL, USE_ASK_AI_TOKEN } from './constants';\n\n// ... existing imports ...\nconst TOKEN_KEY = 'askai_token';\n\ntype TokenPayload = { exp: number };\n\nconst decode = (token: string): TokenPayload => {\n const [b64] = token.split('.');\n return JSON.parse(atob(b64));\n};\n\nconst isExpired = (token?: string | null): boolean => {\n if (!token) return true;\n try {\n const { exp } = decode(token);\n // refresh 30 s before the backend rejects it\n return Date.now() / 1000 > exp - 30;\n } catch {\n return true;\n }\n};\n\nlet inflight: Promise<string> | null = null;\n\n// call /token once, cache the promise while it’s running\n// eslint-disable-next-line require-await\nexport const getValidToken = async ({ assistantId }: { assistantId: string }): Promise<string> => {\n const cached = sessionStorage.getItem(TOKEN_KEY);\n if (!isExpired(cached)) return cached!;\n\n if (!inflight) {\n inflight = fetch(`${ASK_AI_API_URL}/token`, {\n method: 'POST',\n headers: {\n 'x-algolia-assistant-id': assistantId,\n 'content-type': 'application/json',\n },\n })\n .then((r) => r.json())\n .then(({ token }) => {\n sessionStorage.setItem(TOKEN_KEY, token);\n return token;\n })\n .finally(() => (inflight = null));\n }\n\n return inflight;\n};\n\nexport const postFeedback = async ({\n assistantId,\n thumbs,\n messageId,\n appId,\n}: {\n assistantId: string;\n thumbs: 0 | 1;\n messageId: string;\n appId: string;\n}): Promise<Response> => {\n const headers = new Headers();\n headers.set('x-algolia-assistant-id', assistantId);\n headers.set('content-type', 'application/json');\n\n if (USE_ASK_AI_TOKEN) {\n const token = await getValidToken({ assistantId });\n headers.set('authorization', `TOKEN ${token}`);\n }\n\n return fetch(`${ASK_AI_API_URL}/feedback`, {\n method: 'POST',\n body: JSON.stringify({\n appId,\n messageId,\n thumbs,\n }),\n headers,\n });\n};\n","import React, { type JSX } from 'react';\n\ntype AlgoliaLogoTranslations = Partial<{\n poweredByText: string;\n}>;\n\ntype AlgoliaLogoProps = {\n translations?: AlgoliaLogoTranslations;\n};\n\nexport function AlgoliaLogo({ translations = {} }: AlgoliaLogoProps): JSX.Element {\n const { poweredByText = 'Powered by' } = translations;\n\n return (\n <a\n href={`https://www.algolia.com/ref/docsearch/?utm_source=${window.location.hostname}&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span className=\"DocSearch-Label\">{poweredByText}</span>\n <svg\n width=\"80\"\n height=\"24\"\n aria-label=\"Algolia\"\n role=\"img\"\n id=\"Layer_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 2196.2 500\"\n >\n <defs>\n <style>{'.cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}'}</style>\n </defs>\n <path\n className=\"cls-2\"\n d=\"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z\"\n />\n <rect className=\"cls-1\" x=\"1845.88\" y=\"104.73\" width=\"62.58\" height=\"277.9\" rx=\"5.9\" ry=\"5.9\" />\n <path\n className=\"cls-2\"\n d=\"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z\"\n />\n <path\n className=\"cls-2\"\n d=\"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z\"\n />\n <path\n className=\"cls-2\"\n d=\"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z\"\n />\n <path\n className=\"cls-2\"\n d=\"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z\"\n />\n <path\n className=\"cls-2\"\n d=\"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z\"\n />\n <path\n className=\"cls-2\"\n d=\"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z\"\n />\n <path\n className=\"cls-1\"\n d=\"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z\"\n />\n </svg>\n </a>\n );\n}\n","import React, { type JSX } from 'react';\n\nimport { AlgoliaLogo } from './AlgoliaLogo';\n\nexport type FooterTranslations = Partial<{\n selectText: string;\n submitQuestionText: string;\n selectKeyAriaLabel: string;\n navigateText: string;\n navigateUpKeyAriaLabel: string;\n navigateDownKeyAriaLabel: string;\n closeText: string;\n backToSearchText: string;\n closeKeyAriaLabel: string;\n poweredByText: string;\n}>;\n\ntype FooterProps = Partial<{\n translations: FooterTranslations;\n isAskAiActive: boolean;\n}>;\n\ninterface CommandIconProps {\n children: React.ReactNode;\n ariaLabel: string;\n}\n\nfunction CommandIcon(props: CommandIconProps): JSX.Element {\n return (\n <svg width=\"20\" height=\"20\" aria-label={props.ariaLabel} viewBox=\"0 0 24 24\" role=\"img\">\n <g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"1.4\">\n {props.children}\n </g>\n </svg>\n );\n}\n\nexport function Footer({ translations = {}, isAskAiActive = false }: FooterProps): JSX.Element {\n const {\n selectText = 'Select',\n selectKeyAriaLabel = 'Enter key',\n submitQuestionText = 'Submit question',\n navigateText = 'Navigate',\n navigateUpKeyAriaLabel = 'Arrow up',\n navigateDownKeyAriaLabel = 'Arrow down',\n closeText = 'Close',\n backToSearchText = 'Back to search',\n closeKeyAriaLabel = 'Escape key',\n poweredByText = 'Powered by',\n } = translations;\n\n return (\n <>\n <div className=\"DocSearch-Logo\">\n <AlgoliaLogo translations={{ poweredByText }} />\n </div>\n <ul className=\"DocSearch-Commands\">\n <li>\n <kbd className=\"DocSearch-Commands-Key\">\n <CommandIcon ariaLabel={navigateDownKeyAriaLabel}>\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </CommandIcon>\n </kbd>\n <kbd className=\"DocSearch-Commands-Key\">\n <CommandIcon ariaLabel={navigateUpKeyAriaLabel}>\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </CommandIcon>\n </kbd>\n <span className=\"DocSearch-Label\">{navigateText}</span>\n </li>\n <li>\n <kbd className=\"DocSearch-Commands-Key\">\n <CommandIcon ariaLabel={selectKeyAriaLabel}>\n <polyline points=\"9 10 4 15 9 20\" />\n <path d=\"M20 4v7a4 4 0 0 1-4 4H4\" />\n </CommandIcon>\n </kbd>\n <span className=\"DocSearch-Label\">{isAskAiActive ? submitQuestionText : selectText}</span>\n </li>\n <li>\n <kbd className=\"DocSearch-Commands-Key\">\n <span className=\"DocSearch-Escape-Key\">ESC</span>\n </kbd>\n <span className=\"DocSearch-Label\" aria-label={closeKeyAriaLabel}>\n {isAskAiActive ? backToSearchText : closeText}\n </span>\n </li>\n </ul>\n </>\n );\n}\n","import React, { type JSX } from 'react';\n\nimport type { InternalDocSearchHit, StoredDocSearchHit } from './types';\n\ninterface HitProps {\n hit: InternalDocSearchHit | StoredDocSearchHit;\n children: React.ReactNode;\n}\n\nexport function Hit({ hit, children }: HitProps): JSX.Element {\n return <a href={hit.url}>{children}</a>;\n}\n","import React, { type JSX } from 'react';\n\nexport function LoadingIcon({ className }: { className?: string }): JSX.Element {\n return (\n <svg viewBox=\"0 0 38 38\" className={className} stroke=\"currentColor\" strokeOpacity=\".5\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(1 1)\" strokeWidth=\"2\">\n <circle strokeOpacity=\".3\" cx=\"18\" cy=\"18\" r=\"18\" />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function SparklesIcon(): JSX.Element {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"DocSearch-Hit-icon-sparkles\"\n >\n <path d=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\" />\n <path d=\"M20 3v4\" />\n <path d=\"M22 5h-4\" />\n <path d=\"M4 17v2\" />\n <path d=\"M5 18H3\" />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function RecentIcon(): JSX.Element {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n <g stroke=\"currentColor\" fill=\"none\" fillRule=\"evenodd\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0\" />\n <path d=\"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13\" />\n </g>\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function CloseIcon(): JSX.Element {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n <path\n d=\"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z\"\n stroke=\"currentColor\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\ninterface SearchIconProps {\n size?: number;\n color?: string;\n}\n\nexport function SearchIcon({ size = 20, color = 'currentColor' }: SearchIconProps): JSX.Element {\n return (\n <svg width={size} height={size} className=\"DocSearch-Search-Icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" stroke={color} fill=\"none\" strokeWidth=\"1.4\" />\n <path d=\"m21 21-4.3-4.3\" stroke={color} fill=\"none\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function AlertIcon(): JSX.Element {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n fillRule=\"evenodd\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n className=\"lucide lucide-triangle-alert-icon lucide-triangle-alert\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function SelectIcon(): JSX.Element {\n return (\n <svg className=\"DocSearch-Hit-Select-Icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n <g stroke=\"currentColor\" fill=\"none\" fillRule=\"evenodd\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 3v4c0 2-2 4-4 4H2\" />\n <path d=\"M8 17l-6-6 6-6\" />\n </g>\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nconst LvlIcon: React.FC = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n <path d=\"M10 9H8\" />\n <path d=\"M16 13H8\" />\n <path d=\"M16 17H8\" />\n </svg>\n );\n};\n\nexport function SourceIcon(props: { type: string }): JSX.Element {\n switch (props.type) {\n case 'lvl1':\n return <LvlIcon />;\n case 'content':\n return <ContentIcon />;\n default:\n return <AnchorIcon />;\n }\n}\n\nfunction AnchorIcon(): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"4\" x2=\"20\" y1=\"9\" y2=\"9\" />\n <line x1=\"4\" x2=\"20\" y1=\"15\" y2=\"15\" />\n <line x1=\"10\" x2=\"8\" y1=\"3\" y2=\"21\" />\n <line x1=\"16\" x2=\"14\" y1=\"3\" y2=\"21\" />\n </svg>\n );\n}\n\nfunction ContentIcon(): JSX.Element {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n <path\n d=\"M17 5H3h14zm0 5H3h14zm0 5H3h14z\"\n stroke=\"currentColor\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function StarIcon(): JSX.Element {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\">\n <path\n d=\"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z\"\n stroke=\"currentColor\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function StopIcon(): JSX.Element {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.99984 1.29102C4.74264 1.29102 1.2915 4.74215 1.2915 8.99935C1.2915 13.2565 4.74264 16.7077 8.99984 16.7077C13.257 16.7077 16.7082 13.2565 16.7082 8.99935C16.7082 4.74215 13.257 1.29102 8.99984 1.29102ZM0.0415039 8.99935C0.0415039 4.0518 4.05229 0.0410156 8.99984 0.0410156C13.9474 0.0410156 17.9582 4.0518 17.9582 8.99935C17.9582 13.9469 13.9474 17.9577 8.99984 17.9577C4.05229 17.9577 0.0415039 13.9469 0.0415039 8.99935ZM5.87484 6.49935C5.87484 6.15417 6.15466 5.87435 6.49984 5.87435H11.4998C11.845 5.87435 12.1248 6.15417 12.1248 6.49935V11.4993C12.1248 11.8445 11.845 12.1243 11.4998 12.1243H6.49984C6.15466 12.1243 5.87484 11.8445 5.87484 11.4993V6.49935ZM7.12484 7.12435V10.8743H10.8748V7.12435H7.12484Z\"\n fill=\"currentcolor\"\n />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function ErrorIcon(): JSX.Element {\n return (\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n fillRule=\"evenodd\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0\"></path>\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function NoResultsIcon(): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"64\"\n height=\"64\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#5a5e9a\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m13.5 8.5-5 5\" />\n <path d=\"m8.5 8.5 5 5\" />\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function MoreVerticalIcon(): JSX.Element {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={4} height={16} viewBox=\"0 0 4 16\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.99984 1.95898C1.88478 1.95898 1.7915 2.05226 1.7915 2.16732C1.7915 2.28238 1.88478 2.37565 1.99984 2.37565C2.1149 2.37565 2.20817 2.28238 2.20817 2.16732C2.20817 2.05226 2.1149 1.95898 1.99984 1.95898ZM0.541504 2.16732C0.541504 1.3619 1.19442 0.708984 1.99984 0.708984C2.80525 0.708984 3.45817 1.3619 3.45817 2.16732C3.45817 2.97273 2.80525 3.62565 1.99984 3.62565C1.19442 3.62565 0.541504 2.97273 0.541504 2.16732ZM1.99984 7.79232C1.88478 7.79232 1.7915 7.88559 1.7915 8.00065C1.7915 8.11571 1.88478 8.20898 1.99984 8.20898C2.1149 8.20898 2.20817 8.11571 2.20817 8.00065C2.20817 7.88559 2.1149 7.79232 1.99984 7.79232ZM0.541504 8.00065C0.541504 7.19524 1.19442 6.54232 1.99984 6.54232C2.80525 6.54232 3.45817 7.19524 3.45817 8.00065C3.45817 8.80607 2.80525 9.45898 1.99984 9.45898C1.19442 9.45898 0.541504 8.80607 0.541504 8.00065ZM1.99984 13.6257C1.88478 13.6257 1.7915 13.7189 1.7915 13.834C1.7915 13.949 1.88478 14.0423 1.99984 14.0423C2.1149 14.0423 2.20817 13.949 2.20817 13.834C2.20817 13.7189 2.1149 13.6257 1.99984 13.6257ZM0.541504 13.834C0.541504 13.0286 1.19442 12.3757 1.99984 12.3757C2.80525 12.3757 3.45817 13.0286 3.45817 13.834C3.45817 14.6394 2.80525 15.2923 1.99984 15.2923C1.19442 15.2923 0.541504 14.6394 0.541504 13.834Z\"\n fill=\"currentcolor\"\n />\n </svg>\n );\n}\n","import React, { type JSX } from 'react';\n\nexport function ConversationHistoryIcon(): JSX.Element {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\n <path\n d=\"M9 0.875C10.6068 0.875 12.1776 1.35149 13.5137 2.24414C14.8498 3.13693 15.8919 4.40598 16.5068 5.89062C17.1218 7.37522 17.2822 9.00892 16.9688 10.585C16.6552 12.1611 15.8814 13.6088 14.7451 14.7451C13.6088 15.8814 12.1611 16.6552 10.585 16.9688C9.00892 17.2822 7.37523 17.1218 5.89062 16.5068C4.40598 15.8919 3.13693 14.8498 2.24414 13.5137C1.35149 12.1776 0.875 10.6068 0.875 9C0.875 8.65482 1.15482 8.375 1.5 8.375C1.84518 8.375 2.125 8.65482 2.125 9C2.125 10.3596 2.52792 11.6888 3.2832 12.8193C4.03864 13.9499 5.1129 14.8312 6.36914 15.3516C7.62523 15.8718 9.00736 16.0083 10.3408 15.7432C11.6744 15.4779 12.8998 14.8228 13.8613 13.8613C14.8228 12.8998 15.4779 11.6744 15.7432 10.3408C16.0083 9.00736 15.8718 7.62523 15.3516 6.36914C14.8312 5.1129 13.9499 4.03864 12.8193 3.2832C11.6888 2.52792 10.3596 2.125 9 2.125C7.06829 2.125 5.21604 2.89096 3.82129 4.22949L3.00879 5.04199H5.66699C6.01202 5.04217 6.29199 5.32192 6.29199 5.66699C6.29182 6.01191 6.01191 6.29182 5.66699 6.29199H1.5C1.45939 6.29199 1.41889 6.28716 1.37891 6.2793C1.36148 6.27587 1.345 6.26949 1.32812 6.26465C1.267 6.24714 1.20782 6.22205 1.15332 6.18555C1.08536 6.14005 1.02604 6.08256 0.980469 6.01465C0.970244 5.99942 0.962841 5.98268 0.954102 5.9668C0.904937 5.87756 0.875056 5.77606 0.875 5.66699V1.5C0.875 1.15482 1.15482 0.875002 1.5 0.875C1.84518 0.875 2.125 1.15482 2.125 1.5V4.15723L2.94141 3.3418L2.9502 3.33301C4.57158 1.77433 6.73388 0.875 9 0.875ZM9.33301 4.20801C9.67808 4.20801 9.95783 4.48798 9.95801 4.83301V9.44727L12.9463 10.9414C13.2548 11.0958 13.3798 11.4707 13.2256 11.7793C13.0712 12.088 12.6955 12.213 12.3867 12.0586L9.05371 10.3926C8.84198 10.2867 8.70801 10.0697 8.70801 9.83301V4.83301C8.70818 4.48809 8.98809 4.20819 9.33301 4.20801Z\"\n fill=\"currentcolor\"\n />\n </svg>\n );\n}\n","import type { JSX } from 'react';\nimport React from 'react';\n\nexport function NewConversationIcon(): JSX.Element {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"19\" height=\"19\" viewBox=\"0 0 19 19\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M0.712717 3.38039C1.14249 2.95062 1.72538 2.70917 2.33317 2.70917H8.1665C8.51168 2.70917 8.7915 2.989 8.7915 3.33417C8.7915 3.67935 8.51168 3.95917 8.1665 3.95917H2.33317C2.0569 3.95917 1.79195 4.06892 1.5966 4.26427C1.40125 4.45962 1.2915 4.72457 1.2915 5.00084V16.6675C1.2915 16.9438 1.40125 17.2087 1.5966 17.4041C1.79195 17.5994 2.0569 17.7092 2.33317 17.7092H13.9998C14.2761 17.7092 14.5411 17.5994 14.7364 17.4041C14.9318 17.2087 15.0415 16.9438 15.0415 16.6675V10.8342C15.0415 10.489 15.3213 10.2092 15.6665 10.2092C16.0117 10.2092 16.2915 10.489 16.2915 10.8342V16.6675C16.2915 17.2753 16.0501 17.8582 15.6203 18.288C15.1905 18.7177 14.6076 18.9592 13.9998 18.9592H2.33317C1.72538 18.9592 1.14249 18.7177 0.712717 18.288C0.282947 17.8582 0.0415039 17.2753 0.0415039 16.6675V5.00084C0.0415039 4.39305 0.282947 3.81016 0.712717 3.38039Z\"\n fill=\"currentcolor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M15.6665 2.19141C15.3634 2.19141 15.0728 2.3118 14.8584 2.52611L7.06419 10.3204L6.52548 12.4752L8.68031 11.9365L16.4746 4.14223C16.6889 3.92792 16.8093 3.63725 16.8093 3.33417C16.8093 3.03109 16.6889 2.74043 16.4746 2.52611C16.2603 2.3118 15.9696 2.19141 15.6665 2.19141ZM13.9746 1.64223C14.4233 1.1935 15.0319 0.941406 15.6665 0.941406C16.3011 0.941406 16.9097 1.1935 17.3584 1.64223C17.8072 2.09096 18.0593 2.69957 18.0593 3.33417C18.0593 3.96877 17.8072 4.57738 17.3584 5.02611L9.44178 12.9428C9.36168 13.0229 9.26132 13.0797 9.15142 13.1072L5.81809 13.9405C5.6051 13.9938 5.3798 13.9314 5.22456 13.7761C5.06932 13.6209 5.00692 13.3956 5.06016 13.1826L5.8935 9.84925C5.92097 9.73936 5.9778 9.639 6.0579 9.5589L13.9746 1.64223Z\"\n fill=\"currentcolor\"\n />\n </svg>\n );\n}\n","import React, { type JSX, Fragment } from 'react';\n\nimport type { AskAiScreenTranslations } from './AskAiScreen';\nimport { SearchIcon } from './icons';\n\ninterface AggregatedSearchBlockProps {\n queries: string[];\n translations: AskAiScreenTranslations;\n onSearchQueryClick: (query: string) => void;\n}\n\n// allow translators to return either simple string parts or a fully custom node\nexport interface AggregatedToolCallParts {\n before?: string;\n separator?: string;\n lastSeparator?: string;\n after?: string;\n}\n\n// default english implementation (\"Searched for \\\"A\\\", \\\"B\\\" and \\\"C\\\"\")\nconst defaultAggregatedToolCallParts: AggregatedToolCallParts = {\n before: 'Searched for ',\n separator: ', ',\n lastSeparator: ' and ',\n after: '',\n};\n\nexport function AggregatedSearchBlock({\n queries,\n translations,\n onSearchQueryClick,\n}: AggregatedSearchBlockProps): JSX.Element | null {\n // no queries? no render\n if (queries.length === 0) return null;\n\n // if the translator provides a fully custom node, render it and bail out.\n if (typeof translations.aggregatedToolCallNode === 'function') {\n return <>{translations.aggregatedToolCallNode(queries, onSearchQueryClick)}</>;\n }\n\n // otherwise fall back to the classic english-pattern renderer.\n const parts = translations.aggregatedToolCallText\n ? translations.aggregatedToolCallText(queries)\n : defaultAggregatedToolCallParts;\n\n const { before = '', separator = ', ', lastSeparator = ' and ', after = '' } = parts || {};\n\n return (\n <div className=\"DocSearch-AskAiScreen-MessageContent-Tool Tool--AggregatedResult\">\n <SearchIcon size={18} />\n <span>\n {before && <span>{before}</span>}\n {queries.map((q, idx) => (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={q + idx}>\n <span\n role=\"button\"\n tabIndex={0}\n className=\"DocSearch-AskAiScreen-MessageContent-Tool-Query\"\n onKeyDown={(e) => {\n if (e.key === 'enter' || e.key === ' ') {\n e.preventDefault();\n onSearchQueryClick(q);\n }\n }}\n onClick={() => onSearchQueryClick(q)}\n >\n &quot;{q}&quot;\n </span>\n {idx < queries.length - 2 && separator}\n {idx === queries.length - 2 && lastSeparator}\n </Fragment>\n ))}\n {after && <span>{after}</span>}\n </span>\n </div>\n );\n}\n","/**\n * marked v16.3.0 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O=L();function G(l){O=l}var E={exec:()=>null};function h(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ xX]\\] +/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,C=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,j=/(?:[*+-]|\\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ie=h(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Te=h(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),F=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,ye=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=h(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,j).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),oe=h(F).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",oe).getRegex(),K={blockquote:$e,code:be,def:ye,fences:Re,heading:Oe,hr:C,html:Se,lheading:ie,list:Pe,newline:xe,paragraph:oe,table:E,text:we},re=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...K,lheading:Te,table:re,paragraph:h(F).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...K,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:E,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(F).replace(\"hr\",C).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ie).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ae=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,le=/[^\\s\\p{P}\\p{S}]/u,Ee=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),ue=/(?!~)[\\p{P}\\p{S}]/u,Ce=/(?!~)[\\s\\p{P}\\p{S}]/u,Ie=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=/\\[[^\\[\\]]*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<(?! )[^<>]*?>/g,pe=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=h(pe,\"u\").replace(/punct/g,D).getRegex(),ve=h(pe,\"u\").replace(/punct/g,ue).getRegex(),ce=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=h(ce,\"gu\").replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),He=h(ce,\"gu\").replace(/notPunctSpace/g,Ie).replace(/punctSpace/g,Ce).replace(/punct/g,ue).getRegex(),Ze=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ge=h(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=h(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[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])?)+(?![-_])/).getRegex(),je=h(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=h(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",je).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`[^`]*`|[^\\[\\]\\\\`])*?/,Qe=h(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),he=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),de=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),Ue=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",he).replace(\"nolink\",de).getRegex(),X={_backpedal:E,anyPunctuation:Ge,autolink:Ne,blockSkip:Be,br:ae,code:ze,del:E,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ze,escape:Me,link:Qe,nolink:de,punctuation:Ee,reflink:he,reflinkSearch:Ue,tag:Fe,text:Ae,url:E},Ke={...X,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:He,emStrongLDelim:ve,url:h(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\"i\").replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/},We={...N,br:h(ae).replace(\"{2,}\",\"*\").getRegex(),text:h(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},I={normal:K,gfm:_e,pedantic:Le},M={normal:X,gfm:N,breaks:We,pedantic:Ke};var Xe={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ke=l=>Xe[l];function w(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ke);return l}function J(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function V(l,e){let t=l.replace(m.findPipe,(i,s,o)=>{let a=!1,u=s;for(;--u>=0&&o[u]===\"\\\\\";)a=!a;return a?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(l,e,t){let n=l.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=l.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return l.slice(0,n-r)}function ge(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function fe(l,e,t,n,r){let i=e.href,s=e.title||null,o=l[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let a={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,a}function Je(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[o]=s;return o.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||O}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let o=!1,a=[],u;for(u=0;u<n.length;u++)if(this.rules.other.blockquoteStart.test(n[u]))a.push(n[u]),o=!0;else if(!o)a.push(n[u]);else break;n=n.slice(u);let p=a.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=f,n.length===0)break;let k=s.at(-1);if(k?.type===\"code\")break;if(k?.type===\"blockquote\"){let x=k,g=x.raw+`\n`+n.join(`\n`),T=this.blockquote(g);s[s.length-1]=T,r=r.substring(0,r.length-x.raw.length)+T.raw,i=i.substring(0,i.length-x.text.length)+T.text;break}else if(k?.type===\"list\"){let x=k,g=x.raw+`\n`+n.join(`\n`),T=this.list(g);s[s.length-1]=T,r=r.substring(0,r.length-k.raw.length)+T.raw,i=i.substring(0,i.length-x.raw.length)+T.raw,n=g.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),o=!1;for(;e;){let u=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let f=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,H=>\" \".repeat(3*H.length)),k=e.split(`\n`,1)[0],x=!f.trim(),g=0;if(this.options.pedantic?(g=2,c=f.trimStart()):x?g=t[1].length+1:(g=t[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,c=f.slice(g),g+=t[1].length),x&&this.rules.other.blankLine.test(k)&&(p+=k+`\n`,e=e.substring(k.length+1),u=!0),!u){let H=this.rules.other.nextBulletRegex(g),ee=this.rules.other.hrRegex(g),te=this.rules.other.fencesBeginRegex(g),ne=this.rules.other.headingBeginRegex(g),me=this.rules.other.htmlBeginRegex(g);for(;e;){let Z=e.split(`\n`,1)[0],A;if(k=Z,this.options.pedantic?(k=k.replace(this.rules.other.listReplaceNesting,\" \"),A=k):A=k.replace(this.rules.other.tabCharGlobal,\" \"),te.test(k)||ne.test(k)||me.test(k)||H.test(k)||ee.test(k))break;if(A.search(this.rules.other.nonSpaceChar)>=g||!k.trim())c+=`\n`+A.slice(g);else{if(x||f.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||te.test(f)||ne.test(f)||ee.test(f))break;c+=`\n`+k}!x&&!k.trim()&&(x=!0),p+=Z+`\n`,e=e.substring(Z.length+1),f=A.slice(g)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(o=!0));let T=null,Y;this.options.gfm&&(T=this.rules.other.listIsTask.exec(c),T&&(Y=T[0]!==\"[ ] \",c=c.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:p,task:!!T,checked:Y,loose:!1,text:c,tokens:[]}),i.raw+=p}let a=i.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;u<i.items.length;u++)if(this.lexer.state.top=!1,i.items[u].tokens=this.lexer.blockTokens(i.items[u].text,[]),!i.loose){let p=i.items[u].tokens.filter(f=>f.type===\"space\"),c=p.length>0&&p.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=c}if(i.loose)for(let u=0;u<i.items.length;u++)i.items[u].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let o of r)this.rules.other.tableAlignRight.test(o)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(o)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(o)?s.align.push(\"left\"):s.align.push(null);for(let o=0;o<n.length;o++)s.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:s.align[o]});for(let o of i)s.rows.push(V(o,s.header.length).map((a,u)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:s.align[u]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=ge(t[2],\"()\");if(s===-2)return;if(s>-1){let a=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,a).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,o,a,u=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(a=[...o].length,r[3]||r[4]){u+=a;continue}else if((r[5]||r[6])&&s%3&&!((s+a)%3)){p+=a;continue}if(u-=a,u>0)continue;a=Math.min(a,a+u+p);let f=[...r[0]][0].length,k=e.slice(0,s+r.index+f+a);if(Math.min(s,a)%2){let g=k.slice(1,-1);return{type:\"em\",raw:k,text:g,tokens:this.lexer.inlineTokens(g)}}let x=k.slice(2,-2);return{type:\"strong\",raw:k,text:x,tokens:this.lexer.inlineTokens(x)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var b=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||O,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:I.normal,inline:M.normal};this.options.pedantic?(t.block=I.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=I.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:I,inline:M}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(u=>{a=u.call({lexer:this},o),typeof a==\"number\"&&a>=0&&(s=Math.min(s,a))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,s=\"\";for(;e;){i||(s=\"\"),i=!1;let o;if(this.options.extensions?.inline?.some(u=>(o=u.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let u=t.at(-1);o.type===\"text\"&&u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,s)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let a=e;if(this.options.extensions?.startInline){let u=1/0,p=e.slice(1),c;this.options.extensions.startInline.forEach(f=>{c=f.call({lexer:this},p),typeof c==\"number\"&&c>=0&&(u=Math.min(u,c))}),u<1/0&&u>=0&&(a=e.substring(0,u+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(s=o.raw.slice(-1)),i=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(e){let u=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}};var P=class{options;parser;constructor(e){this.options=e||O}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let o=0;o<e.items.length;o++){let a=e.items[o];r+=this.listitem(a)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let o=0;o<s.length;o++)n+=this.tablecell(s[o]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var $=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var R=class l{options;renderer;textRenderer;constructor(e){this.options=e||O,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new $}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=i,a=this.options.extensions.renderers[o.type].call({parser:this},o);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(o.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"def\":{n+=this.renderer.def(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let o=s,a=this.renderer.text(o);for(;r+1<e.length&&e[r+1].type===\"text\";)o=e[++r],a+=`\n`+this.renderer.text(o);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:a,text:a,tokens:[{type:\"text\",raw:a,text:a,escaped:!0}]}):n+=a;continue}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=this.options.extensions.renderers[i.type].call({parser:this},i);if(o!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}};var S=class{options;block;constructor(e){this.options=e||O}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?b.lex:b.lexInline}provideParser(){return this.block?R.parse:R.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=R;Renderer=P;TextRenderer=$;Lexer=b;Tokenizer=y;Hooks=S;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let o of s)n=n.concat(this.walkTokens(o.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let o=i[s].flat(1/0);n=n.concat(this.walkTokens(o,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...o){let a=i.renderer.apply(this,o);return a===!1&&(a=s.apply(this,o)),a}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let o=s,a=n.renderer[o],u=i[o];i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let o=s,a=n.tokenizer[o],u=i[o];i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new S;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let o=s,a=n.hooks[o],u=i[o];S.passThroughHooks.has(s)?i[o]=p=>{if(this.defaults.async&&S.passThroughHooksRespectAsync.has(s))return Promise.resolve(a.call(i,p)).then(f=>u.call(i,f));let c=a.call(i,p);return u.call(i,c)}:i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(o){let a=[];return a.push(s.call(this,o)),i&&(a=a.concat(i.call(this,o))),a}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return b.lex(e,t??this.defaults)}parser(e,t){return R.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return o(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return o(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return o(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let a=s.hooks?s.hooks.provideLexer():e?b.lex:b.lexInline,u=s.hooks?s.hooks.provideParser():e?R.parse:R.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(p=>a(p,s)).then(p=>s.hooks?s.hooks.processAllTokens(p):p).then(p=>s.walkTokens?Promise.all(this.walkTokens(p,s.walkTokens)).then(()=>p):p).then(p=>u(p,s)).then(p=>s.hooks?s.hooks.postprocess(p):p).catch(o);try{s.hooks&&(n=s.hooks.preprocess(n));let p=a(n,s);s.hooks&&(p=s.hooks.processAllTokens(p)),s.walkTokens&&this.walkTokens(p,s.walkTokens);let c=u(p,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(p){return o(p)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(l,e){return _.parse(l,e)}d.options=d.setOptions=function(l){return _.setOptions(l),d.defaults=_.defaults,G(d.defaults),d};d.getDefaults=L;d.defaults=O;d.use=function(...l){return _.use(...l),d.defaults=_.defaults,G(d.defaults),d};d.walkTokens=function(l,e){return _.walkTokens(l,e)};d.parseInline=_.parseInline;d.Parser=R;d.parser=R.parse;d.Renderer=P;d.TextRenderer=$;d.Lexer=b;d.lexer=b.lex;d.Tokenizer=y;d.Hooks=S;d.parse=d;var Dt=d.options,Ht=d.setOptions,Zt=d.use,Gt=d.walkTokens,Nt=d.parseInline,jt=d,Ft=R.parse,Qt=b.lex;export{S as Hooks,b as Lexer,B as Marked,R as Parser,P as Renderer,$ as TextRenderer,y as Tokenizer,O as defaults,L as getDefaults,Qt as lexer,d as marked,Dt as options,jt as parse,Nt as parseInline,Ft as parser,Ht as setOptions,Zt as use,Gt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","import { marked, type Tokens } from 'marked';\nimport React, { memo, useMemo, useEffect, useRef } from 'react';\n\n// escape html special chars for safe insertion into pre/code blocks\nfunction escapeHtml(html: string): string {\n return html\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n}\n\nconst renderer = new marked.Renderer();\n\nrenderer.code = ({ text, lang = '', escaped }: Tokens.Code): string => {\n const languageClass = lang ? `language-${lang}` : '';\n const safeCode = escaped ? text : escapeHtml(text);\n const encodedCode = encodeURIComponent(text);\n\n // svg icons (copy & check)\n const copyIconSvg = `<svg class=\"DocSearch-CodeSnippet-CopyIcon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" /><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" /></svg>`;\n\n const checkIconSvg = `<svg class=\"DocSearch-CodeSnippet-CheckIcon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6 9 17l-5-5\" /></svg>`;\n\n return `\n <div class=\"DocSearch-CodeSnippet\">\n <button class=\"DocSearch-CodeSnippet-CopyButton\" data-code=\"${encodedCode}\" aria-label=\"copy code\">${copyIconSvg}${checkIconSvg}<span class=\"DocSearch-CodeSnippet-CopyButton-Label\"></span></button>\n <pre><code class=\"${languageClass}\">${safeCode}</code></pre>\n </div>\n `;\n};\n\n// ensure all markdown links open in a new tab with rel noopener for security\nrenderer.link = ({ href, title, text }: Tokens.Link): string => {\n const titleAttr = title ? ` title=\"${escapeHtml(title)}\"` : '';\n const hrefAttr = href ? escapeHtml(href) : '';\n const textEscaped = escapeHtml(text);\n return `<a href=\"${hrefAttr}\"${titleAttr} target=\"_blank\" rel=\"noopener noreferrer\">${textEscaped}</a>`;\n};\n\nexport const MemoizedMarkdown = memo(\n ({\n content,\n copyButtonText,\n copyButtonCopiedText,\n isStreaming,\n }: {\n content: string;\n copyButtonText: string;\n copyButtonCopiedText: string;\n isStreaming: boolean;\n }) => {\n const html = useMemo(\n () =>\n marked.parse(content, {\n gfm: true,\n breaks: true,\n renderer,\n }),\n [content],\n );\n\n // container ref to scope dom queries and events\n const containerRef = useRef<HTMLDivElement>(null);\n\n // setup copy buttons whenever content or translations change\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const buttons = Array.from(container.querySelectorAll<HTMLButtonElement>('.DocSearch-CodeSnippet-CopyButton'));\n\n buttons.forEach((btn) => {\n const label = btn.querySelector<HTMLElement>('.DocSearch-CodeSnippet-CopyButton-Label');\n if (label) label.textContent = copyButtonText;\n\n // ensure icons initial visibility\n btn.classList.remove('DocSearch-CodeSnippet-CopyButton--copied');\n });\n\n function handleClick(event: MouseEvent): void {\n const targetEl = event.target as HTMLElement;\n const btn = targetEl.closest<HTMLButtonElement>('.DocSearch-CodeSnippet-CopyButton');\n if (!btn) return;\n\n const encoded = btn.getAttribute('data-code') ?? '';\n navigator.clipboard.writeText(decodeURIComponent(encoded)).catch(() => {\n /* noop */\n });\n\n const label = btn.querySelector<HTMLElement>('.DocSearch-CodeSnippet-CopyButton-Label');\n if (!label) return;\n\n btn.classList.add('DocSearch-CodeSnippet-CopyButton--copied');\n const original = copyButtonText;\n label.textContent = copyButtonCopiedText;\n\n setTimeout(() => {\n btn.classList.remove('DocSearch-CodeSnippet-CopyButton--copied');\n label.textContent = original;\n }, 1500);\n }\n\n container.addEventListener('click', handleClick);\n\n // eslint-disable-next-line consistent-return\n return (): void => {\n container.removeEventListener('click', handleClick);\n };\n }, [html, copyButtonText, copyButtonCopiedText]);\n\n return (\n <div\n ref={containerRef}\n className={`DocSearch-Markdown-Content ${isStreaming ? 'DocSearch-Markdown-Content--streaming' : ''}`}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n },\n);\nMemoizedMarkdown.displayName = 'MemoizedMarkdown';\n","import type { TextUIPart } from 'ai';\n\nimport type { StoredAskAiState } from '../types';\nimport type { AIMessage } from '../types/AskiAi';\n\ntype ExtractedLink = {\n url: string;\n title?: string;\n};\n\n// utility to extract links (markdown and bare urls) from a string\nexport function extractLinksFromMessage(message: AIMessage | null): ExtractedLink[] {\n const links: ExtractedLink[] = [];\n // Used to dedupe multiple urls\n const seen = new Set<string>();\n\n if (!message) {\n return [];\n }\n\n message.parts.forEach((part) => {\n if (part.type !== 'text') {\n return;\n }\n\n if (part.text.length === 0) {\n return;\n }\n\n const markdownLinkRegex = /\\[([^\\]]*)\\]\\(([^)]+)\\)/g;\n const plainLinkRegex = /(?<!\\]\\()https?:\\/\\/[^\\s<>\"{}|\\\\^`[\\]]+/g;\n\n // Strip out all code blocks e.g. ```\n const textWithoutCodeBlocks = part.text.replace(/```[\\s\\S]*?```/g, '');\n\n // Strip out all inline code blocks e.g. `\n const cleanText = textWithoutCodeBlocks.replace(/`[^`]*`/g, '');\n\n // Get all markdown based links e.g. []()\n const markdownMatches = cleanText.matchAll(markdownLinkRegex);\n\n // Parses the title and url from the found links\n for (const match of markdownMatches) {\n const title = match[1].trim();\n const url = match[2];\n\n if (!seen.has(url)) {\n seen.add(url);\n links.push({ url, title: title || undefined });\n }\n }\n\n // Get all \"plain\" links e.g. https://algolia.com/doc\n const plainUrls = cleanText.matchAll(plainLinkRegex);\n\n for (const match of plainUrls) {\n // Strip any extra punctuation\n const cleanUrl = match[0].replace(/[.,;:!?]+$/, '');\n\n if (!seen.has(cleanUrl)) {\n seen.add(cleanUrl);\n links.push({ url: cleanUrl });\n }\n }\n });\n\n return links;\n}\n\nexport const buildDummyAskAiHit = (query: string, messages: AIMessage[]): StoredAskAiState => {\n const textPart = messages[0].parts.find((part) => part.type === 'text');\n\n return {\n query,\n objectID: textPart?.text ?? '',\n messages,\n type: 'askAI',\n anchor: 'stored',\n // dummy content to make it a valid hit\n // this is useful to show it among other hits\n content: null,\n hierarchy: {\n lvl0: 'askAI',\n lvl1: textPart?.text ?? '', // use first message as hit name\n lvl2: null,\n lvl3: null,\n lvl4: null,\n lvl5: null,\n lvl6: null,\n },\n url: '',\n url_without_anchor: '',\n };\n};\n\nexport const getMessageContent = (message: AIMessage | null): TextUIPart | undefined =>\n message?.parts.find((part) => part.type === 'text');\n","import type { UseChatHelpers } from '@ai-sdk/react';\nimport React, { type JSX, useMemo, useState, useEffect } from 'react';\n\nimport { AggregatedSearchBlock } from './AggregatedSearchBlock';\nimport { AlertIcon, LoadingIcon, SearchIcon } from './icons';\nimport { MemoizedMarkdown } from './MemoizedMarkdown';\nimport type { ScreenStateProps } from './ScreenState';\nimport type { StoredSearchPlugin } from './stored-searches';\nimport type { InternalDocSearchHit, StoredAskAiState } from './types';\nimport type { AIMessage } from './types/AskiAi';\nimport { extractLinksFromMessage, getMessageContent } from './utils/ai';\nimport { groupConsecutiveToolResults } from './utils/groupConsecutiveToolResults';\n\nexport type AskAiScreenTranslations = Partial<{\n // Misc texts\n disclaimerText: string;\n relatedSourcesText: string;\n thinkingText: string;\n copyButtonText: string;\n copyButtonCopiedText: string;\n // Feedback buttons\n copyButtonTitle: string;\n likeButtonTitle: string;\n dislikeButtonTitle: string;\n thanksForFeedbackText: string;\n // Tool call texts\n preToolCallText: string;\n duringToolCallText: string;\n afterToolCallText: string;\n /**\n * Build the full jsx element for the aggregated search block.\n * If provided, completely overrides the default english renderer.\n */\n aggregatedToolCallNode?: (queries: string[], onSearchQueryClick: (query: string) => void) => React.ReactNode;\n\n /**\n * Generate the list connective parts only (backwards compatibility).\n * Receives full list of queries and should return translation parts for before/after/separators.\n * Example: (qs) => ({ before: 'searched for ', separator: ', ', lastSeparator: ' and ', after: '' }).\n */\n aggregatedToolCallText?: (queries: string[]) => {\n before?: string;\n separator?: string;\n lastSeparator?: string;\n after?: string;\n };\n /**\n * Message that's shown when user has stopped the streaming of a message.\n */\n stoppedStreamingText: string;\n}>;\n\ntype AskAiScreenProps = Omit<ScreenStateProps<InternalDocSearchHit>, 'translations'> & {\n messages: AIMessage[];\n status: UseChatHelpers<AIMessage>['status'];\n askAiStreamError: Error | null;\n askAiFetchError: Error | undefined;\n translations?: AskAiScreenTranslations;\n};\n\ninterface AskAiScreenHeaderProps {\n disclaimerText: string;\n}\n\ninterface Exchange {\n id: string;\n userMessage: AIMessage;\n assistantMessage: AIMessage | null;\n}\n\nfunction AskAiScreenHeader({ disclaimerText }: AskAiScreenHeaderProps): JSX.Element {\n return <p className=\"DocSearch-AskAiScreen-Disclaimer\">{disclaimerText}</p>;\n}\n\ninterface AskAiExchangeCardProps {\n exchange: Exchange;\n askAiStreamError: Error | null;\n isLastExchange: boolean;\n loadingStatus: UseChatHelpers<AIMessage>['status'];\n onSearchQueryClick: (query: string) => void;\n translations: AskAiScreenTranslations;\n conversations: StoredSearchPlugin<StoredAskAiState>;\n onFeedback?: (messageId: string, thumbs: 0 | 1) => Promise<void>;\n}\n\nfunction AskAiExchangeCard({\n exchange,\n askAiStreamError,\n isLastExchange,\n loadingStatus,\n onSearchQueryClick,\n translations,\n conversations,\n onFeedback,\n}: AskAiExchangeCardProps): JSX.Element {\n const { userMessage, assistantMessage } = exchange;\n\n const { stoppedStreamingText = 'You stopped this response' } = translations;\n\n const assistantContent = useMemo(() => getMessageContent(assistantMessage), [assistantMessage]);\n const userContent = useMemo(() => getMessageContent(userMessage), [userMessage]);\n\n const urlsToDisplay = React.useMemo(() => extractLinksFromMessage(assistantMessage), [assistantMessage]);\n\n const displayParts = React.useMemo(() => {\n return groupConsecutiveToolResults(assistantMessage?.parts || []);\n }, [assistantMessage]);\n\n const wasStopped = userMessage.metadata?.stopped || assistantMessage?.metadata?.stopped;\n\n const showActions =\n !wasStopped && (!isLastExchange || (isLastExchange && loadingStatus === 'ready' && Boolean(assistantMessage)));\n\n const isThinking =\n ['submitted', 'streaming'].includes(loadingStatus) &&\n isLastExchange &&\n !displayParts.some((part) => part.type !== 'step-start');\n\n return (\n <div className=\"DocSearch-AskAiScreen-Response-Container\">\n <div className=\"DocSearch-AskAiScreen-Response\">\n <div className=\"DocSearch-AskAiScreen-Message DocSearch-AskAiScreen-Message--user\">\n <p className=\"DocSearch-AskAiScreen-Query\">{userContent?.text ?? ''}</p>\n </div>\n <div className=\"DocSearch-AskAiScreen-Message DocSearch-AskAiScreen-Message--assistant\">\n <div className=\"DocSearch-AskAiScreen-MessageContent\">\n {loadingStatus === 'error' && askAiStreamError && isLastExchange && (\n <div className=\"DocSearch-AskAiScreen-MessageContent DocSearch-AskAiScreen-Error\">\n <AlertIcon />\n <MemoizedMarkdown\n content={askAiStreamError.message}\n copyButtonText=\"\"\n copyButtonCopiedText=\"\"\n isStreaming={false}\n />\n </div>\n )}\n {isThinking && (\n <div className=\"DocSearch-AskAiScreen-MessageContent-Reasoning\">\n <span className=\"shimmer\">{translations.thinkingText || 'Thinking...'}</span>\n </div>\n )}\n {displayParts.map((part, idx) => {\n const index = idx;\n\n if (typeof part === 'string') {\n return (\n <MemoizedMarkdown\n key={index}\n content={part}\n copyButtonText={translations.copyButtonText || 'Copy'}\n copyButtonCopiedText={translations.copyButtonCopiedText || 'Copied!'}\n isStreaming={loadingStatus === 'streaming'}\n />\n );\n }\n\n if (part.type === 'aggregated-tool-call') {\n return (\n <AggregatedSearchBlock\n key={index}\n queries={part.queries}\n translations={translations}\n onSearchQueryClick={onSearchQueryClick}\n />\n );\n }\n\n if (part.type === 'reasoning' && part.state === 'streaming') {\n return (\n <div key={index} className=\"DocSearch-AskAiScreen-MessageContent-Reasoning shimmer\">\n <LoadingIcon className=\"DocSearch-AskAiScreen-SmallerLoadingIcon\" />\n <span className=\"shimmer\">Reasoning...</span>\n </div>\n );\n }\n\n if (part.type === 'text') {\n return (\n <MemoizedMarkdown\n key={index}\n content={part.text}\n copyButtonText={translations.copyButtonText || 'Copy'}\n copyButtonCopiedText={translations.copyButtonCopiedText || 'Copied!'}\n isStreaming={part.state === 'streaming'}\n />\n );\n }\n if (part.type === 'tool-searchIndex') {\n switch (part.state) {\n case 'input-streaming':\n return (\n <div key={index} className=\"DocSearch-AskAiScreen-MessageContent-Tool Tool--PartialCall shimmer\">\n <LoadingIcon className=\"DocSearch-AskAiScreen-SmallerLoadingIcon\" />\n <span>{translations.preToolCallText || 'Searching...'}</span>\n </div>\n );\n case 'input-available':\n return (\n <div key={index} className=\"DocSearch-AskAiScreen-MessageContent-Tool Tool--Call shimmer\">\n <LoadingIcon className=\"DocSearch-AskAiScreen-SmallerLoadingIcon\" />\n <span>\n {`${translations.duringToolCallText || 'Searching for '} \"${part.input.query || ''}\" ...`}\n </span>\n </div>\n );\n case 'output-available':\n return (\n <div key={index} className=\"DocSearch-AskAiScreen-MessageContent-Tool Tool--Result\">\n <SearchIcon />\n <span>\n {`${translations.afterToolCallText || 'Searched for'}`}{' '}\n <span\n role=\"button\"\n tabIndex={0}\n className=\"DocSearch-AskAiScreen-MessageContent-Tool-Query\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSearchQueryClick(part.output.query || '');\n }\n }}\n onClick={() => onSearchQueryClick(part.output.query || '')}\n >\n {' '}\n &quot;{part.output.query || ''}&quot;\n </span>{' '}\n found {part.output.hits?.length || 0} results\n </span>\n </div>\n );\n default:\n break;\n }\n }\n // fallback for unknown part type\n return null;\n })}\n </div>\n\n {wasStopped && <p className=\"DocSearck-AskAiScreen-MessageContent-Stopped\">{stoppedStreamingText}</p>}\n </div>\n <div className=\"DocSearch-AskAiScreen-Answer-Footer\">\n <AskAiScreenFooterActions\n id={userMessage?.id || exchange.id}\n showActions={showActions}\n latestAssistantMessageContent={assistantContent?.text || null}\n translations={translations}\n conversations={conversations}\n onFeedback={onFeedback}\n />\n </div>\n </div>\n\n {/* Sources for this exchange */}\n {urlsToDisplay.length > 0 ? (\n <AskAiSourcesPanel urlsToDisplay={urlsToDisplay} relatedSourcesText={translations.relatedSourcesText} />\n ) : null}\n </div>\n );\n}\n\ninterface AskAiScreenFooterActionsProps {\n id: string;\n showActions: boolean;\n latestAssistantMessageContent: string | null;\n translations: AskAiScreenTranslations;\n conversations: StoredSearchPlugin<StoredAskAiState>;\n onFeedback?: (messageId: string, thumbs: 0 | 1) => Promise<void>;\n}\n\nfunction AskAiScreenFooterActions({\n id,\n showActions,\n latestAssistantMessageContent,\n translations,\n conversations,\n onFeedback,\n}: AskAiScreenFooterActionsProps): JSX.Element | null {\n // local state for feedback, initialised from stored conversations\n const initialFeedback = React.useMemo(() => {\n const message = conversations.getOne?.(id);\n return message?.feedback ?? null;\n }, [conversations, id]);\n\n const [feedback, setFeedback] = React.useState<'dislike' | 'like' | null>(initialFeedback);\n const [saving, setSaving] = React.useState(false);\n const [savingError, setSavingError] = React.useState<Error | null>(null);\n\n const handleFeedback = async (value: 'dislike' | 'like'): Promise<void> => {\n if (saving) return;\n setSavingError(null);\n setSaving(true);\n try {\n await onFeedback?.(id, value === 'like' ? 1 : 0);\n setFeedback(value);\n } catch (error) {\n setSavingError(error as Error);\n } finally {\n setSaving(false);\n }\n };\n\n const {\n likeButtonTitle = 'Like',\n dislikeButtonTitle = 'Dislike',\n thanksForFeedbackText = 'Thanks for your feedback!',\n } = translations;\n\n if (!showActions || !latestAssistantMessageContent) {\n return null;\n }\n\n return (\n <div className=\"DocSearch-AskAiScreen-Actions\">\n {feedback === null ? (\n <>\n {saving ? (\n <LoadingIcon className=\"DocSearch-AskAiScreen-SmallerLoadingIcon\" />\n ) : (\n <>\n <LikeButton title={likeButtonTitle} onClick={() => handleFeedback('like')} />\n <DislikeButton title={dislikeButtonTitle} onClick={() => handleFeedback('dislike')} />\n </>\n )}\n {savingError && (\n <p className=\"DocSearch-AskAiScreen-FeedbackText\">{savingError.message || 'An error occured'}</p>\n )}\n </>\n ) : (\n <p className=\"DocSearch-AskAiScreen-FeedbackText DocSearch-AskAiScreen-FeedbackText--visible\">\n {thanksForFeedbackText}\n </p>\n )}\n <CopyButton\n translations={translations}\n onClick={() => navigator.clipboard.writeText(latestAssistantMessageContent)}\n />\n </div>\n );\n}\n\ninterface AskAiSourcesPanelProps {\n urlsToDisplay: Array<{ url: string; title?: string }>;\n relatedSourcesText?: string;\n}\n\nfunction AskAiSourcesPanel({ urlsToDisplay, relatedSourcesText }: AskAiSourcesPanelProps): JSX.Element {\n return (\n <div className=\"DocSearch-AskAiScreen-RelatedSources\">\n <p className=\"DocSearch-AskAiScreen-RelatedSources-Title\">{relatedSourcesText || 'Related sources'}</p>\n <div className=\"DocSearch-AskAiScreen-RelatedSources-List\">\n {urlsToDisplay.length > 0 &&\n urlsToDisplay.map((link) => (\n <a\n key={link.url}\n href={link.url}\n className=\"DocSearch-AskAiScreen-RelatedSources-Item-Link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <RelatedSourceIcon />\n <span>{link.title || link.url}</span>\n </a>\n ))}\n </div>\n </div>\n );\n}\n\nexport function AskAiScreen({ translations = {}, ...props }: AskAiScreenProps): JSX.Element | null {\n const { disclaimerText = 'Answers are generated with AI which can make mistakes. Verify responses.' } = translations;\n\n const { messages } = props;\n\n // Group messages into exchanges (user + assistant pairs)\n const exchanges: Exchange[] = useMemo(() => {\n const grouped: Exchange[] = [];\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].role === 'user') {\n const userMessage = messages[i];\n const assistantMessage = messages[i + 1]?.role === 'assistant' ? messages[i + 1] : null;\n grouped.push({ id: userMessage.id, userMessage, assistantMessage });\n if (assistantMessage) {\n i++;\n }\n }\n }\n return grouped;\n }, [messages]);\n\n const handleSearchQueryClick = (query: string): void => {\n props.onAskAiToggle(false);\n props.setQuery(query);\n };\n\n return (\n <div className=\"DocSearch-AskAiScreen DocSearch-AskAiScreen-Container\">\n <AskAiScreenHeader disclaimerText={disclaimerText} />\n <div className=\"DocSearch-AskAiScreen-Body\">\n <div className=\"DocSearch-AskAiScreen-ExchangesList\">\n {exchanges\n .slice()\n .reverse()\n .map((exchange, index) => (\n <AskAiExchangeCard\n key={exchange.id}\n exchange={exchange}\n askAiStreamError={props.askAiStreamError}\n isLastExchange={index === 0}\n loadingStatus={props.status}\n translations={translations}\n conversations={props.conversations}\n onSearchQueryClick={handleSearchQueryClick}\n onFeedback={props.onFeedback}\n />\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nfunction RelatedSourceIcon(): JSX.Element {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"4\" x2=\"20\" y1=\"9\" y2=\"9\" />\n <line x1=\"4\" x2=\"20\" y1=\"15\" y2=\"15\" />\n <line x1=\"10\" x2=\"8\" y1=\"3\" y2=\"21\" />\n <line x1=\"16\" x2=\"14\" y1=\"3\" y2=\"21\" />\n </svg>\n );\n}\n\nfunction CopyButton({\n onClick,\n translations,\n}: {\n onClick: () => void;\n translations: AskAiScreenTranslations;\n}): JSX.Element {\n const { copyButtonTitle = 'Copy', copyButtonCopiedText = 'Copied!' } = translations;\n\n const [isCopied, setIsCopied] = useState(false);\n\n useEffect(() => {\n if (isCopied) {\n const timer = setTimeout(() => {\n setIsCopied(false);\n }, 1500); // reset after 1.5 seconds\n return (): void => clearTimeout(timer);\n }\n return undefined;\n }, [isCopied]);\n\n const handleClick = (): void => {\n onClick();\n setIsCopied(true);\n };\n\n return (\n <button\n type=\"button\"\n className={`DocSearch-AskAiScreen-ActionButton DocSearch-AskAiScreen-CopyButton ${\n isCopied ? 'DocSearch-AskAiScreen-CopyButton--copied' : ''\n }`}\n disabled={isCopied} // disable button briefly after copy\n title={isCopied ? copyButtonCopiedText : copyButtonTitle}\n onClick={handleClick}\n >\n {isCopied ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-check-icon lucide-check\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-copy-icon lucide-copy\"\n >\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\" />\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\" />\n </svg>\n )}\n </button>\n );\n}\n\nfunction LikeButton({ title, onClick }: { title: string; onClick: () => void }): JSX.Element {\n // @todo: implement like button\n return (\n <button\n type=\"button\"\n className=\"DocSearch-AskAiScreen-ActionButton DocSearch-AskAiScreen-LikeButton\"\n title={title}\n onClick={onClick}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-thumbs-up-icon lucide-thumbs-up\"\n >\n <path d=\"M7 10v12\" />\n <path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n </svg>\n </button>\n );\n}\n\nfunction DislikeButton({ title, onClick }: { title: string; onClick: () => void }): JSX.Element {\n // @todo: implement dislike button\n return (\n <button\n type=\"button\"\n className=\"DocSearch-AskAiScreen-ActionButton DocSearch-AskAiScreen-DislikeButton\"\n title={title}\n onClick={onClick}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"lucide lucide-thumbs-down-icon lucide-thumbs-down\"\n >\n <path d=\"M17 14V2\" />\n <path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n </svg>\n </button>\n );\n}\n","import type { AIMessagePart } from '../types/AskiAi';\n\nexport interface AggregatedToolCallPart {\n type: 'aggregated-tool-call';\n queries: string[];\n}\n\n/**\n * Groups consecutive `searchIndex` tool invocation result parts together.\n * Empty or falsy queries are ignored.\n */\nexport function groupConsecutiveToolResults(parts: AIMessagePart[]): Array<AggregatedToolCallPart | AIMessagePart> {\n const aggregatedParts: Array<AggregatedToolCallPart | AIMessagePart> = [];\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n\n if (part.type === 'tool-searchIndex' && part.state === 'output-available') {\n // build list of consecutive result queries\n const queries: string[] = [];\n let j = i;\n while (j < parts.length) {\n const candidate = parts[j];\n if (candidate.type === 'tool-searchIndex' && candidate.state === 'output-available') {\n const q = (candidate.output?.query ?? '').trim();\n\n // eslint-disable-next-line max-depth\n if (q && q.length > 0) {\n queries.push(q);\n }\n j++;\n } else {\n break;\n }\n }\n\n if (queries.length > 1) {\n aggregatedParts.push({ type: 'aggregated-tool-call', queries });\n } else if (queries.length === 1) {\n // only one valid query, push the original part so rendering remains unchanged\n aggregatedParts.push(part);\n }\n\n i = j - 1; // skip processed items\n } else {\n aggregatedParts.push(part);\n }\n }\n\n return aggregatedParts;\n}\n","import { type JSX, createElement } from 'react';\n\nimport type { StoredDocSearchHit } from './types';\n\nfunction getPropertyByPath(object: Record<string, any>, path: string): any {\n const parts = path.split('.');\n\n return parts.reduce((prev, current) => {\n if (prev?.[current]) return prev[current];\n return null;\n }, object);\n}\n\ninterface SnippetProps<TItem> {\n hit: TItem;\n attribute: string;\n tagName?: string;\n [prop: string]: unknown;\n}\n\nexport function Snippet<TItem extends StoredDocSearchHit>({\n hit,\n attribute,\n tagName = 'span',\n ...rest\n}: SnippetProps<TItem>): JSX.Element {\n return createElement(tagName, {\n ...rest,\n dangerouslySetInnerHTML: {\n __html: getPropertyByPath(hit, `_snippetResult.${attribute}.value`) || getPropertyByPath(hit, attribute),\n },\n });\n}\n","import type { AutocompleteApi, AutocompleteState, BaseItem } from '@algolia/autocomplete-core';\nimport React, { type JSX } from 'react';\n\nimport type { DocSearchProps } from './DocSearch';\nimport { SparklesIcon } from './icons/SparklesIcon';\nimport { Snippet } from './Snippet';\nimport type { InternalDocSearchHit, StoredDocSearchHit } from './types';\n\nexport type ResultsTranslations = Partial<{\n askAiPlaceholder: string;\n noResultsAskAiPlaceholder: string;\n}>;\ninterface ResultsProps<TItem extends BaseItem>\n extends AutocompleteApi<TItem, React.FormEvent, React.MouseEvent, React.KeyboardEvent> {\n title: string;\n translations?: ResultsTranslations;\n collection: AutocompleteState<TItem>['collections'][0];\n renderIcon: (props: { item: TItem; index: number }) => React.ReactNode;\n renderAction: (props: { item: TItem }) => React.ReactNode;\n onItemClick: (item: TItem, event: KeyboardEvent | MouseEvent) => void;\n hitComponent: DocSearchProps['hitComponent'];\n state: AutocompleteState<TItem>;\n}\n\nexport function Results<TItem extends StoredDocSearchHit>(props: ResultsProps<TItem>): JSX.Element | null {\n // The collection title, decoded to handle encoded HTML entities\n const decodedTitle = React.useMemo(() => {\n return props.title\n .replace(/&amp;/g, '&')\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&#039;/g, \"'\");\n }, [props.title]);\n\n if (!props.collection || props.collection.items.length === 0) {\n return null;\n }\n\n if (props.collection.source.sourceId === 'askAI') {\n return (\n <section className=\"DocSearch-AskAi-Section\">\n <ul {...props.getListProps({ source: props.collection.source })}>\n <AskAiButton item={props.collection.items[0]} translations={props.translations} {...props} />\n </ul>\n </section>\n );\n }\n\n if (props.collection.source.sourceId === 'recentConversations') {\n return (\n <section className=\"DocSearch-Hits\">\n <div className=\"DocSearch-Hit-source\">{decodedTitle}</div>\n <ul {...props.getListProps({ source: props.collection.source })}>\n {props.collection.items.map((item, index) => {\n return <Result key={[props.title, item.objectID].join(':')} item={item} index={index} {...props} />;\n })}\n </ul>\n </section>\n );\n }\n\n return (\n <section className=\"DocSearch-Hits\">\n <div className=\"DocSearch-Hit-source\">{decodedTitle}</div>\n\n <ul {...props.getListProps({ source: props.collection.source })}>\n {props.collection.items.map((item, index) => {\n return <Result key={[props.title, item.objectID].join(':')} item={item} index={index} {...props} />;\n })}\n </ul>\n </section>\n );\n}\n\ninterface ResultProps<TItem extends BaseItem> extends ResultsProps<TItem> {\n item: TItem;\n index: number;\n}\n\nfunction Result<TItem extends StoredDocSearchHit>({\n item,\n index,\n renderIcon,\n renderAction,\n getItemProps,\n onItemClick,\n collection,\n hitComponent,\n}: ResultProps<TItem>): JSX.Element {\n const Hit = hitComponent!;\n return (\n <li\n className={[\n 'DocSearch-Hit',\n (item as unknown as InternalDocSearchHit).__docsearch_parent && 'DocSearch-Hit--Child',\n ]\n .filter(Boolean)\n .join(' ')}\n {...getItemProps({\n item,\n source: collection.source,\n onClick(event) {\n onItemClick(item, event);\n },\n })}\n >\n <Hit hit={item}>\n <div className=\"DocSearch-Hit-Container\">\n {renderIcon({ item, index })}\n\n {item.hierarchy[item.type] && item.type === 'lvl1' && (\n <div className=\"DocSearch-Hit-content-wrapper\">\n <Snippet className=\"DocSearch-Hit-title\" hit={item} attribute=\"hierarchy.lvl1\" />\n {item.content && <Snippet className=\"DocSearch-Hit-path\" hit={item} attribute=\"content\" />}\n </div>\n )}\n\n {item.type === 'askAI' && (\n <div className=\"DocSearch-Hit-content-wrapper\">\n <Snippet className=\"DocSearch-Hit-title\" hit={item} attribute=\"hierarchy.lvl1\" />\n </div>\n )}\n\n {item.hierarchy[item.type] &&\n (item.type === 'lvl2' ||\n item.type === 'lvl3' ||\n item.type === 'lvl4' ||\n item.type === 'lvl5' ||\n item.type === 'lvl6') && (\n <div className=\"DocSearch-Hit-content-wrapper\">\n <Snippet className=\"DocSearch-Hit-title\" hit={item} attribute={`hierarchy.${item.type}`} />\n <Snippet className=\"DocSearch-Hit-path\" hit={item} attribute=\"hierarchy.lvl1\" />\n </div>\n )}\n\n {item.type === 'content' && (\n <div className=\"DocSearch-Hit-content-wrapper\">\n <Snippet className=\"DocSearch-Hit-title\" hit={item} attribute=\"content\" />\n <Snippet className=\"DocSearch-Hit-path\" hit={item} attribute=\"hierarchy.lvl1\" />\n </div>\n )}\n\n {renderAction({ item })}\n </div>\n </Hit>\n </li>\n );\n}\n\ninterface AskAiButtonProps<TItem extends BaseItem> extends ResultsProps<TItem> {\n item: TItem;\n translations?: ResultsTranslations;\n state: AutocompleteState<TItem>;\n}\n\nfunction AskAiButton<TItem extends StoredDocSearchHit>({\n item,\n getItemProps,\n onItemClick,\n translations,\n collection,\n ...props\n}: AskAiButtonProps<TItem>): JSX.Element {\n const { askAiPlaceholder = 'Ask AI: ', noResultsAskAiPlaceholder = \"Didn't find it in the docs? Ask AI to help: \" } =\n translations || {};\n const noKeywordResults = props.state.collections.length === 1;\n\n const placeholder = noKeywordResults ? noResultsAskAiPlaceholder : askAiPlaceholder;\n\n return (\n <li\n className=\"DocSearch-Hit\"\n {...getItemProps({\n item,\n source: collection.source,\n onClick(event) {\n onItemClick(item, event);\n },\n })}\n >\n <div className=\"DocSearch-Hit--AskAI\">\n <div className=\"DocSearch-Hit-AskAIButton DocSearch-Hit-Container\">\n <div className=\" DocSearch-Hit-AskAIButton-icon DocSearch-Hit-icon\">\n <SparklesIcon />\n </div>\n <div className=\"DocSearch-Hit-AskAIButton-title\">\n <span className=\"DocSearch-Hit-AskAIButton-title-highlight\">{placeholder}</span>\n <mark className=\"DocSearch-Hit-AskAIButton-title-query\">{item.query || ''}</mark>\n </div>\n </div>\n </div>\n </li>\n );\n}\n","import type { JSX } from 'react';\nimport React from 'react';\n\nimport { CloseIcon, SparklesIcon } from './icons';\nimport { Results } from './Results';\nimport type { ResultsScreenTranslations } from './ResultsScreen';\nimport type { ScreenStateProps } from './ScreenState';\nimport type { InternalDocSearchHit } from './types';\n\ntype ConversationHistoryScreenProps = Omit<ScreenStateProps<InternalDocSearchHit>, 'translations'> & {\n translations?: ResultsScreenTranslations;\n};\n\nexport function ConversationHistoryScreen({ onAskAiToggle, ...props }: ConversationHistoryScreenProps): JSX.Element {\n const collection = React.useMemo(() => props.state.collections[2], [props.state]);\n\n React.useEffect(() => {\n if (!collection || collection.items.length === 0) {\n onAskAiToggle(true);\n }\n }, [collection, onAskAiToggle]);\n\n return (\n <div className=\"DocSearch-Dropdown-Container DocSearch-Conversation-History\">\n <Results\n {...props}\n key={collection.source.sourceId}\n title=\"\"\n translations={props.translations}\n collection={collection}\n renderIcon={() => (\n <div className=\"DocSearch-Hit-icon\">\n <SparklesIcon />\n </div>\n )}\n renderAction={({ item }) => (\n <div className=\"DocSearch-Hit-action\">\n <button\n type=\"button\"\n className=\"DocSearch-Hit-action-button\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n props.conversations.remove(item);\n props.refresh();\n }}\n >\n <CloseIcon />\n </button>\n </div>\n )}\n />\n </div>\n );\n}\n","import React, { type JSX } from 'react';\n\nimport { ErrorIcon } from './icons';\n\nexport type ErrorScreenTranslations = Partial<{\n titleText: string;\n helpText: string;\n}>;\n\ntype ErrorScreenProps = {\n translations?: ErrorScreenTranslations;\n};\n\nexport function ErrorScreen({ translations = {} }: ErrorScreenProps): JSX.Element {\n const { titleText = 'Unable to fetch results', helpText = 'You might want to check your network connection.' } =\n translations;\n return (\n <div className=\"DocSearch-ErrorScreen\">\n <div className=\"DocSearch-Screen-Icon\">\n <ErrorIcon />\n </div>\n <p className=\"DocSearch-Title\">{titleText}</p>\n <p className=\"DocSearch-Help\">{helpText}</p>\n </div>\n );\n}\n","import type { Hit } from 'algoliasearch/lite';\nimport React, { type JSX } from 'react';\n\nexport type NewConversationTranslations = Partial<{\n newConversationTitle: string;\n newConversationDescription: string;\n}>;\n\ntype SuggestedQuestion = Hit<{ question: string }>;\n\ninterface NewConversationProps {\n suggestedQuestions?: SuggestedQuestion[];\n selectSuggestedQuestion: (query: string) => void;\n translations?: NewConversationTranslations;\n}\n\nexport function NewConversationScreen({\n translations = {},\n suggestedQuestions = [],\n selectSuggestedQuestion,\n}: NewConversationProps): JSX.Element {\n const {\n newConversationTitle = 'How can I help you today?',\n newConversationDescription = 'I search through your documentation to help you find setup guides, feature details and troubleshooting tips, fast.',\n } = translations;\n\n return (\n <div className=\"DocSearch-NewConversationScreen\">\n <h3 className=\"DocSearch-NewConversationScreen-Title\">{newConversationTitle}</h3>\n <p className=\"DocSearch-NewConversationScreen-Description\">{newConversationDescription}</p>\n\n <div className=\"DocSearch-NewConversationScreen-SuggestedQuestions\">\n {suggestedQuestions.map((question) => (\n <button\n key={question.objectID}\n type=\"button\"\n className=\"DocSearch-NewConversationScreen-SuggestedQuestion\"\n onClick={() => selectSuggestedQuestion(question.question)}\n >\n {question.question}\n </button>\n ))}\n </div>\n </div>\n );\n}\n","import React, { type JSX } from 'react';\n\nimport { NoResultsIcon, SearchIcon } from './icons';\nimport type { ScreenStateProps } from './ScreenState';\nimport type { InternalDocSearchHit } from './types';\n\nexport type NoResultsScreenTranslations = Partial<{\n noResultsText: string;\n suggestedQueryText: string;\n reportMissingResultsText: string;\n reportMissingResultsLinkText: string;\n}>;\n\ntype NoResultsScreenProps = Omit<ScreenStateProps<InternalDocSearchHit>, 'translations'> & {\n translations?: NoResultsScreenTranslations;\n};\n\nexport function NoResultsScreen({ translations = {}, ...props }: NoResultsScreenProps): JSX.Element {\n const {\n noResultsText = 'No results found for',\n suggestedQueryText = 'Try searching for',\n reportMissingResultsText = 'Believe this query should return results?',\n reportMissingResultsLinkText = 'Let us know.',\n } = translations;\n const searchSuggestions: string[] | undefined = props.state.context.searchSuggestions as string[];\n\n return (\n <div className={`DocSearch-NoResults ${props.canHandleAskAi ? 'DocSearch-NoResults--withAskAi' : ''}`}>\n <div className=\"DocSearch-Screen-Icon\">\n <NoResultsIcon />\n </div>\n <p className=\"DocSearch-Title\">\n {noResultsText} \"<strong>{props.state.query}</strong>\"\n </p>\n\n {searchSuggestions && searchSuggestions.length > 0 && (\n <div className=\"DocSearch-NoResults-Prefill-List\">\n <p className=\"DocSearch-Help\">{suggestedQueryText}:</p>\n <div className=\"DocSearch-NoResults-Prefill-List-Items\">\n {searchSuggestions.slice(0, 3).reduce<React.ReactNode[]>(\n (acc, search) => [\n ...acc,\n <p key={search}>\n <SearchIcon size={16} />\n <button\n className=\"DocSearch-Prefill\"\n key={search}\n type=\"button\"\n onClick={() => {\n props.setQuery(search.toLowerCase() + ' ');\n props.refresh();\n props.inputRef.current!.focus();\n }}\n >\n {search}\n </button>\n </p>,\n ],\n [],\n )}\n </div>\n </div>\n )}\n\n {props.getMissingResultsUrl && (\n <p className=\"DocSearch-Help\">\n {`${reportMissingResultsText} `}\n <a href={props.getMissingResultsUrl({ query: props.state.query })} target=\"_blank\" rel=\"noopener noreferrer\">\n {reportMissingResultsLinkText}\n </a>\n </p>\n )}\n </div>\n );\n}\n","export function groupBy<TValue extends Record<string, unknown>>(\n values: TValue[],\n predicate: (value: TValue) => string,\n maxResultsPerGroup?: number,\n): Record<string, TValue[]> {\n return values.reduce<Record<string, TValue[]>>((acc, item) => {\n const key = predicate(item);\n\n if (!acc.hasOwnProperty(key)) {\n acc[key] = [];\n }\n\n // We limit each section to show 5 hits maximum.\n // This acts as a frontend alternative to `distinct`.\n if (acc[key].length < (maxResultsPerGroup || 5)) {\n acc[key].push(item);\n }\n\n return acc;\n }, {});\n}\n","export function identity<TParam>(x: TParam): TParam {\n return x;\n}\n","/**\n * Detect when an event is modified with a special key to let the browser\n * trigger its default behavior.\n */\nexport function isModifierEvent<TEvent extends KeyboardEvent | MouseEvent>(event: TEvent): boolean {\n const isMiddleClick = (event as MouseEvent).button === 1;\n\n return isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n}\n","export function noop(..._args: any[]): void {}\n","import type { DocSearchHit, InternalDocSearchHit } from '../types';\n\nconst regexHighlightTags = /(<mark>|<\\/mark>)/g;\nconst regexHasHighlightTags = RegExp(regexHighlightTags.source);\n\nexport function removeHighlightTags(hit: DocSearchHit | InternalDocSearchHit): string {\n const internalDocSearchHit = hit as InternalDocSearchHit;\n\n if (!internalDocSearchHit.__docsearch_parent && !hit._highlightResult) {\n return hit.hierarchy.lvl0;\n }\n\n const lvl0 = internalDocSearchHit.__docsearch_parent\n ? internalDocSearchHit.__docsearch_parent?._highlightResult?.hierarchy?.lvl0\n : hit._highlightResult?.hierarchy?.lvl0;\n\n if (!lvl0) {\n return hit.hierarchy.lvl0;\n }\n\n return lvl0.value && regexHasHighlightTags.test(lvl0.value) ? lvl0.value.replace(regexHighlightTags, '') : lvl0.value;\n}\n","import React, { type JSX } from 'react';\n\nimport { SelectIcon, SourceIcon } from './icons';\nimport { Results } from './Results';\nimport type { ScreenStateProps } from './ScreenState';\nimport type { InternalDocSearchHit } from './types';\nimport { removeHighlightTags } from './utils';\n\nexport type ResultsScreenTranslations = Partial<{\n askAiPlaceholder: string;\n noResultsAskAiPlaceholder: string;\n}>;\n\ntype ResultsScreenProps = Omit<ScreenStateProps<InternalDocSearchHit>, 'translations'> & {\n translations?: ResultsScreenTranslations;\n};\n\nexport function ResultsScreen({ translations = {}, ...props }: ResultsScreenProps): JSX.Element {\n return (\n <div className=\"DocSearch-Dropdown-Container\">\n {props.state.collections.map((collection) => {\n if (collection.items.length === 0) {\n return null;\n }\n\n const title = removeHighlightTags(collection.items[0]);\n\n return (\n <Results\n {...props}\n key={collection.source.sourceId}\n translations={translations}\n title={title}\n collection={collection}\n renderIcon={({ item, index }) => (\n <>\n {item.__docsearch_parent && (\n <svg className=\"DocSearch-Hit-Tree\" viewBox=\"0 0 24 54\">\n <g\n stroke=\"currentColor\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n {item.__docsearch_parent !== collection.items[index + 1]?.__docsearch_parent ? (\n <path d=\"M8 6v21M20 27H8.3\" />\n ) : (\n <path d=\"M8 6v42M20 27H8.3\" />\n )}\n </g>\n </svg>\n )}\n\n <div className=\"DocSearch-Hit-icon\">\n <SourceIcon type={item.type} />\n </div>\n </>\n )}\n renderAction={() => (\n <div className=\"DocSearch-Hit-action\">\n <SelectIcon />\n </div>\n )}\n />\n );\n })}\n\n {props.resultsFooterComponent && (\n <section className=\"DocSearch-HitsFooter\">\n <props.resultsFooterComponent state={props.state} />\n </section>\n )}\n </div>\n );\n}\n","import React, { type JSX } from 'react';\n\nimport { RecentIcon, CloseIcon, StarIcon, SparklesIcon } from './icons';\nimport { Results } from './Results';\nimport type { ScreenStateProps } from './ScreenState';\nimport type { InternalDocSearchHit } from './types';\n\nexport type StartScreenTranslations = Partial<{\n recentSearchesTitle: string;\n noRecentSearchesText: string;\n saveRecentSearchButtonTitle: string;\n removeRecentSearchButtonTitle: string;\n favoriteSearchesTitle: string;\n removeFavoriteSearchButtonTitle: string;\n recentConversationsTitle: string;\n removeRecentConversationButtonTitle: string;\n}>;\n\ntype StartScreenProps = Omit<ScreenStateProps<InternalDocSearchHit>, 'translations'> & {\n hasCollections: boolean;\n translations?: StartScreenTranslations;\n};\n\nexport function StartScreen({ translations = {}, ...props }: StartScreenProps): JSX.Element | null {\n const {\n recentSearchesTitle = 'Recent',\n saveRecentSearchButtonTitle = 'Save this search',\n removeRecentSearchButtonTitle = 'Remove this search from history',\n favoriteSearchesTitle = 'Favorite',\n removeFavoriteSearchButtonTitle = 'Remove this search from favorites',\n recentConversationsTitle = 'Recent conversations',\n removeRecentConversationButtonTitle = 'Remove this conversation from history',\n } = translations;\n\n return (\n <div className=\"DocSearch-Dropdown-Container\">\n <Results\n {...props}\n title={recentSearchesTitle}\n collection={props.state.collections[0]}\n renderIcon={() => (\n <div className=\"DocSearch-Hit-icon\">\n <RecentIcon />\n </div>\n )}\n renderAction={({ item }) => (\n <>\n <div className=\"DocSearch-Hit-action\">\n <button\n className=\"DocSearch-Hit-action-button\"\n title={saveRecentSearchButtonTitle}\n type=\"submit\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n props.favoriteSearches.add(item);\n props.recentSearches.remove(item);\n props.refresh();\n }}\n >\n <StarIcon />\n </button>\n </div>\n <div className=\"DocSearch-Hit-action\">\n <button\n className=\"DocSearch-Hit-action-button\"\n title={removeRecentSearchButtonTitle}\n type=\"submit\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n props.recentSearches.remove(item);\n props.refresh();\n }}\n >\n <CloseIcon />\n </button>\n </div>\n </>\n )}\n />\n\n <Results\n {...props}\n title={favoriteSearchesTitle}\n collection={props.state.collections[1]}\n renderIcon={() => (\n <div className=\"DocSearch-Hit-icon\">\n <StarIcon />\n </div>\n )}\n renderAction={({ item }) => (\n <div className=\"DocSearch-Hit-action\">\n <button\n className=\"DocSearch-Hit-action-button\"\n title={removeFavoriteSearchButtonTitle}\n type=\"submit\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n props.favoriteSearches.remove(item);\n props.refresh();\n }}\n >\n <CloseIcon />\n </button>\n </div>\n )}\n />\n\n <Results\n {...props}\n title={recentConversationsTitle}\n collection={props.state.collections[2]}\n renderIcon={() => (\n <div className=\"DocSearch-Hit-icon\">\n <SparklesIcon />\n </div>\n )}\n renderAction={({ item }) => (\n <div className=\"DocSearch-Hit-action\">\n <button\n className=\"DocSearch-Hit-action-button\"\n title={removeRecentConversationButtonTitle}\n type=\"submit\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n props.conversations.remove(item);\n props.refresh();\n }}\n >\n <CloseIcon />\n </button>\n </div>\n )}\n />\n </div>\n );\n}\n","import type { UseChatHelpers } from '@ai-sdk/react';\nimport type { AutocompleteApi, AutocompleteState, BaseItem } from '@algolia/autocomplete-core';\nimport React from 'react';\n\nimport type { AskAiScreenTranslations } from './AskAiScreen';\nimport { AskAiScreen } from './AskAiScreen';\nimport { ConversationHistoryScreen } from './ConversationHistoryScreen';\nimport type { DocSearchProps } from './DocSearch';\nimport type { ErrorScreenTranslations } from './ErrorScreen';\nimport { ErrorScreen } from './ErrorScreen';\nimport type { NewConversationTranslations } from './NewConversationScreen';\nimport { NewConversationScreen } from './NewConversationScreen';\nimport type { NoResultsScreenTranslations } from './NoResultsScreen';\nimport { NoResultsScreen } from './NoResultsScreen';\nimport type { ResultsScreenTranslations } from './ResultsScreen';\nimport { ResultsScreen } from './ResultsScreen';\nimport type { StartScreenTranslations } from './StartScreen';\nimport { StartScreen } from './StartScreen';\nimport type { StoredSearchPlugin } from './stored-searches';\nimport type { InternalDocSearchHit, StoredAskAiState, StoredDocSearchHit } from './types';\nimport type { AIMessage, AskAiState } from './types/AskiAi';\n\nexport type ScreenStateTranslations = Partial<{\n errorScreen: ErrorScreenTranslations;\n startScreen: StartScreenTranslations;\n noResultsScreen: NoResultsScreenTranslations;\n resultsScreen: ResultsScreenTranslations;\n askAiScreen: AskAiScreenTranslations;\n newConversation: NewConversationTranslations;\n}>;\n\nexport interface ScreenStateProps<TItem extends BaseItem>\n extends AutocompleteApi<TItem, React.FormEvent, React.MouseEvent, React.KeyboardEvent> {\n state: AutocompleteState<TItem>;\n recentSearches: StoredSearchPlugin<StoredDocSearchHit>;\n favoriteSearches: StoredSearchPlugin<StoredDocSearchHit>;\n conversations: StoredSearchPlugin<StoredAskAiState>;\n onItemClick: (item: InternalDocSearchHit, event: KeyboardEvent | MouseEvent) => void;\n onAskAiToggle: (toggle: boolean) => void;\n isAskAiActive: boolean;\n canHandleAskAi: boolean;\n inputRef: React.MutableRefObject<HTMLInputElement | null>;\n hitComponent: DocSearchProps['hitComponent'];\n indexName: DocSearchProps['indexName'];\n messages: UseChatHelpers<AIMessage>['messages'];\n status: UseChatHelpers<AIMessage>['status'];\n askAiStreamError: Error | null;\n askAiFetchError: Error | undefined;\n disableUserPersonalization: boolean;\n resultsFooterComponent: DocSearchProps['resultsFooterComponent'];\n translations: ScreenStateTranslations;\n getMissingResultsUrl?: DocSearchProps['getMissingResultsUrl'];\n hasCollections: boolean;\n onFeedback?: (messageId: string, thumbs: 0 | 1) => Promise<void>;\n askAiState: AskAiState;\n selectAskAiQuestion: (toggle: boolean, query: string) => void;\n}\n\nexport const ScreenState = React.memo(\n ({ translations = {}, ...props }: ScreenStateProps<InternalDocSearchHit>) => {\n if (props.canHandleAskAi && props.isAskAiActive && props.askAiState === 'conversation-history') {\n return <ConversationHistoryScreen {...props} />;\n }\n\n if (props.canHandleAskAi && props.isAskAiActive && props.askAiState === 'new-conversation') {\n return (\n <NewConversationScreen\n translations={translations?.newConversation}\n selectSuggestedQuestion={(query: string) => {\n props.selectAskAiQuestion(true, query);\n }}\n />\n );\n }\n\n if (props.isAskAiActive && props.canHandleAskAi) {\n return (\n <AskAiScreen\n {...props}\n messages={props.messages}\n status={props.status}\n askAiStreamError={props.askAiStreamError}\n askAiFetchError={props.askAiFetchError}\n translations={translations?.askAiScreen}\n />\n );\n }\n\n if (props.state?.status === 'error') {\n return <ErrorScreen translations={translations?.errorScreen} />;\n }\n\n if (!props.state.query) {\n return <StartScreen {...props} hasCollections={props.hasCollections} translations={translations?.startScreen} />;\n }\n\n if (!props.hasCollections && !props.canHandleAskAi) {\n return <NoResultsScreen {...props} translations={translations?.noResultsScreen} />;\n }\n\n return (\n <>\n <ResultsScreen {...props} translations={translations?.resultsScreen} />\n {props.canHandleAskAi && props.state.collections.length === 1 && (\n // if there's one collection it is the ask ai action, show the no results screen\n <NoResultsScreen {...props} translations={translations?.noResultsScreen} />\n )}\n </>\n );\n },\n function areEqual(_prevProps, nextProps) {\n // We don't update the screen when Autocomplete is loading or stalled to\n // avoid UI flashes:\n // - Empty screen → Results screen\n // - NoResults screen → NoResults screen with another query\n return nextProps.state.status === 'loading' || nextProps.state.status === 'stalled';\n },\n);\n","import React, { type JSX } from 'react';\n\ninterface BackIconProps {\n size?: number;\n color?: string;\n}\n\nexport function BackIcon({ size = 20, color = 'currentColor' }: BackIconProps): JSX.Element {\n return (\n <svg\n width={size}\n height={size}\n className=\"DocSearch-Back-Icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m12 19-7-7 7-7\" />\n <path d=\"M19 12H5\" />\n </svg>\n );\n}\n","import type { PropsWithChildren, JSX, ButtonHTMLAttributes } from 'react';\nimport React from 'react';\n\nconst MenuContext = React.createContext({\n open: false,\n setOpen: (_open: boolean) => {},\n});\n\nexport function Menu({ children }: PropsWithChildren): JSX.Element {\n const [open, setOpen] = React.useState(false);\n const menuRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n function close(e): void {\n if (!menuRef.current?.contains(e.target)) {\n setOpen(false);\n }\n }\n\n if (open) {\n window.addEventListener('click', close);\n }\n\n return function removeListener(): void {\n window.removeEventListener('click', close);\n };\n }, [open]);\n\n return (\n <MenuContext.Provider value={{ open, setOpen }}>\n <div ref={menuRef} className=\"DocSearch-Menu\">\n {children}\n </div>\n </MenuContext.Provider>\n );\n}\n\ntype MenuTriggerProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction MenuTrigger({ children, className = '' }: PropsWithChildren<MenuTriggerProps>): JSX.Element {\n const { open, setOpen } = React.useContext(MenuContext);\n\n function toggleOpen(): void {\n setOpen(!open);\n }\n\n return (\n <button type=\"button\" className={`DocSearch-Menu-trigger ${className}`} onClick={() => toggleOpen()}>\n {children}\n </button>\n );\n}\n\nMenu.Trigger = MenuTrigger;\n\nfunction MenuContent({ children }: PropsWithChildren): JSX.Element {\n const { open } = React.useContext(MenuContext);\n\n return <div className={`DocSearch-Menu-content${open ? ' open' : ''}`}>{children}</div>;\n}\n\nMenu.Content = MenuContent;\n\ntype MenuItemProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nfunction MenuItem({ children, className = '', onClick, ...props }: PropsWithChildren<MenuItemProps>): JSX.Element {\n const { setOpen } = React.useContext(MenuContext);\n\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (e): void => {\n if (onClick) {\n onClick(e);\n setOpen(false);\n }\n };\n return (\n <button type=\"button\" className={`DocSearch-Menu-item ${className}`} onClick={handleClick} {...props}>\n {children}\n </button>\n );\n}\n\nMenu.Item = MenuItem;\n","import React from 'react';\nimport type { JSX } from 'react';\n\ntype ModalHeadingProps = {\n heading: string;\n shimmer?: boolean;\n};\n\nexport function ModalHeading({ heading, shimmer = false }: ModalHeadingProps): JSX.Element {\n return <span className={`DocSearch-Modal-heading${shimmer ? ' shimmer' : ''}`}>{heading}</span>;\n}\n","import type { UseChatHelpers } from '@ai-sdk/react';\nimport type { AutocompleteApi, AutocompleteState } from '@algolia/autocomplete-core';\nimport React, { type JSX, type RefObject } from 'react';\n\nimport { MAX_QUERY_SIZE } from './constants';\nimport {\n LoadingIcon,\n CloseIcon,\n SearchIcon,\n StopIcon,\n MoreVerticalIcon,\n NewConversationIcon,\n ConversationHistoryIcon,\n} from './icons';\nimport { BackIcon } from './icons/BackIcon';\nimport { Menu } from './Menu';\nimport { ModalHeading } from './ModalHeading';\nimport type { InternalDocSearchHit } from './types';\nimport type { AIMessage, AskAiState } from './types/AskiAi';\n\nexport type SearchBoxTranslations = Partial<{\n clearButtonTitle: string;\n clearButtonAriaLabel: string;\n closeButtonText: string;\n closeButtonAriaLabel: string;\n placeholderText: string;\n placeholderTextAskAi: string;\n placeholderTextAskAiStreaming: string;\n enterKeyHint: string;\n enterKeyHintAskAi: string;\n searchInputLabel: string;\n backToKeywordSearchButtonText: string;\n backToKeywordSearchButtonAriaLabel: string;\n newConversationPlaceholder: string;\n conversationHistoryTitle: string;\n startNewConversationText: string;\n viewConversationHistoryText: string;\n}>;\n\ninterface SearchBoxProps\n extends AutocompleteApi<InternalDocSearchHit, React.FormEvent, React.MouseEvent, React.KeyboardEvent> {\n state: AutocompleteState<InternalDocSearchHit>;\n autoFocus: boolean;\n inputRef: RefObject<HTMLInputElement | null>;\n onClose: () => void;\n onAskAiToggle: (toggle: boolean) => void;\n onAskAgain: (query: string) => void;\n onStopAskAiStreaming: () => Promise<void>;\n placeholder: string;\n isAskAiActive: boolean;\n askAiStatus: UseChatHelpers<AIMessage>['status'];\n isFromSelection: boolean;\n translations?: SearchBoxTranslations;\n askAiState: AskAiState;\n setAskAiState: (state: AskAiState) => void;\n onNewConversation: () => void;\n onViewConversationHistory: () => void;\n}\n\nexport function SearchBox({\n translations = {},\n askAiState,\n onAskAiToggle,\n setAskAiState,\n ...props\n}: SearchBoxProps): JSX.Element {\n const {\n clearButtonTitle = 'Clear',\n clearButtonAriaLabel = 'Clear the query',\n closeButtonText = 'Close',\n closeButtonAriaLabel = 'Close',\n searchInputLabel = 'Search',\n backToKeywordSearchButtonText = 'Back to keyword search',\n backToKeywordSearchButtonAriaLabel = 'Back to keyword search',\n placeholderTextAskAiStreaming = 'Answering...',\n newConversationPlaceholder = 'Ask a question',\n conversationHistoryTitle = 'My conversation history',\n startNewConversationText = 'Start a new conversation',\n viewConversationHistoryText = 'Conversation history',\n } = translations;\n const { onReset } = props.getFormProps({\n inputElement: props.inputRef.current,\n });\n\n React.useEffect(() => {\n if (props.autoFocus && props.inputRef.current) {\n props.inputRef.current.focus();\n }\n }, [props.autoFocus, props.inputRef]);\n\n React.useEffect(() => {\n if (props.isFromSelection && props.inputRef.current) {\n props.inputRef.current.select();\n }\n }, [props.isFromSelection, props.inputRef]);\n\n const hasRecentConversations = React.useMemo(() => {\n const askAiSource = props.state.collections[2];\n\n if (!askAiSource) {\n return false;\n }\n\n return askAiSource.items.length > 0;\n }, [props.state.collections]);\n\n const baseInputProps = props.getInputProps({\n inputElement: props.inputRef.current!,\n autoFocus: props.autoFocus,\n maxLength: MAX_QUERY_SIZE,\n });\n\n const blockedKeys = new Set(['ArrowUp', 'ArrowDown', 'Enter']);\n const origOnKeyDown = baseInputProps.onKeyDown;\n const origOnChange = baseInputProps.onChange;\n const isAskAiStreaming = props.askAiStatus === 'streaming' || props.askAiStatus === 'submitted';\n const isKeywordSearchLoading = props.state.status === 'stalled';\n const renderMoreOptions = props.isAskAiActive && askAiState !== 'conversation-history';\n let searchPlaceholder = props.placeholder;\n\n if (askAiState === 'new-conversation') {\n searchPlaceholder = newConversationPlaceholder;\n }\n\n let heading: string | null = null;\n\n if (isAskAiStreaming) {\n heading = placeholderTextAskAiStreaming;\n }\n\n if (askAiState === 'conversation-history') {\n heading = conversationHistoryTitle;\n }\n\n // when returning to another status than streaming or submitted, we focus on the input\n React.useEffect(() => {\n if (props.askAiStatus !== 'streaming' && props.askAiStatus !== 'submitted' && props.inputRef.current) {\n props.inputRef.current.focus();\n }\n }, [props.askAiStatus, props.inputRef]);\n\n /**\n * We need to block the default behavior of the input when Ask AI is active.\n * This is because the input is used to ask another question when the user presses enter.\n *\n * Learn more on default autocomplete behavior:\n * https://github.com/algolia/autocomplete/blob/next/packages/autocomplete-core/src/getDefaultProps.ts.\n */\n const inputProps = {\n ...baseInputProps,\n enterKeyHint: props.isAskAiActive ? ('enter' as const) : ('search' as const),\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>): void => {\n // block these up, down, enter listeners when Ask AI is active\n if (props.isAskAiActive && blockedKeys.has(e.key)) {\n // enter key asks another question\n if (e.key === 'Enter' && !isAskAiStreaming && props.state.query) {\n props.onAskAgain(props.state.query);\n }\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n origOnKeyDown?.(e);\n },\n onChange: (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (props.isAskAiActive) {\n props.setQuery(e.currentTarget.value);\n // block search when Ask AI is active\n // we don't want to trigger the search when the user types\n // we already know they are asking a question\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n origOnChange?.(e);\n },\n disabled: isAskAiStreaming,\n };\n\n const handleAskAiBackClick = React.useCallback((): void => {\n if (askAiState === 'conversation-history') {\n onAskAiToggle(true);\n setAskAiState('initial');\n return;\n }\n\n onAskAiToggle(false);\n }, [askAiState, onAskAiToggle, setAskAiState]);\n\n return (\n <>\n <form\n className=\"DocSearch-Form\"\n onSubmit={(event) => {\n event.preventDefault();\n }}\n onReset={onReset}\n >\n {props.isAskAiActive ? (\n <>\n <button\n type=\"button\"\n tabIndex={0}\n className=\"DocSearch-Action DocSearch-AskAi-Return\"\n title={backToKeywordSearchButtonText}\n aria-label={backToKeywordSearchButtonAriaLabel}\n onClick={handleAskAiBackClick}\n >\n <BackIcon />\n </button>\n </>\n ) : (\n <>\n {isKeywordSearchLoading && (\n <div className=\"DocSearch-LoadingIndicator\">\n <LoadingIcon />\n </div>\n )}\n {!isKeywordSearchLoading && (\n <label className=\"DocSearch-MagnifierLabel\" {...props.getLabelProps()}>\n <SearchIcon />\n <span className=\"DocSearch-VisuallyHiddenForAccessibility\">{searchInputLabel}</span>\n </label>\n )}\n </>\n )}\n\n {heading && <ModalHeading heading={heading} shimmer={isAskAiStreaming} />}\n\n <input\n className=\"DocSearch-Input\"\n ref={props.inputRef}\n {...inputProps}\n placeholder={searchPlaceholder}\n hidden={Boolean(heading)}\n />\n\n <div className=\"DocSearch-Actions\">\n <button\n className=\"DocSearch-Clear\"\n type=\"reset\"\n aria-label={clearButtonAriaLabel}\n hidden={!props.state.query}\n tabIndex={props.state.query ? 0 : -1}\n aria-hidden={!props.state.query ? 'true' : 'false'}\n >\n {clearButtonTitle}\n </button>\n\n {props.state.query && <div className=\"DocSearch-Divider\" />}\n\n {isAskAiStreaming && (\n <>\n <button\n type=\"button\"\n className=\"DocSearch-Action DocSearch-StopStreaming\"\n onClick={props.onStopAskAiStreaming}\n >\n <StopIcon />\n </button>\n\n <div className=\"DocSearch-Divider\" />\n </>\n )}\n\n {renderMoreOptions && (\n <>\n <Menu>\n <Menu.Trigger className=\"DocSearch-Action\">\n <MoreVerticalIcon />\n </Menu.Trigger>\n <Menu.Content>\n <Menu.Item onClick={props.onNewConversation}>\n <NewConversationIcon />\n {startNewConversationText}\n </Menu.Item>\n {hasRecentConversations && (\n <Menu.Item onClick={props.onViewConversationHistory}>\n <ConversationHistoryIcon />\n {viewConversationHistoryText}\n </Menu.Item>\n )}\n </Menu.Content>\n </Menu>\n\n <div className=\"DocSearch-Divider\" />\n </>\n )}\n\n <button\n type=\"button\"\n title={closeButtonText}\n className=\"DocSearch-Action DocSearch-Close\"\n aria-label={closeButtonAriaLabel}\n onClick={props.onClose}\n >\n <CloseIcon />\n </button>\n </div>\n </form>\n </>\n );\n}\n","/**\n * Estimates the size of localStorage usage in bytes.\n */\nexport function getLocalStorageSize(): number {\n if (typeof window === 'undefined' || !window.localStorage) {\n return 0;\n }\n\n let total = 0;\n for (const key in window.localStorage) {\n if (window.localStorage.hasOwnProperty(key)) {\n total += window.localStorage[key].length + key.length;\n }\n }\n return total;\n}\n\n/**\n * Attempts to free up localStorage space by removing DocSearch-related items\n * starting with the oldest/largest ones.\n */\nfunction cleanupDocSearchStorage(): void {\n if (typeof window === 'undefined' || !window.localStorage) {\n return;\n }\n\n const docSearchKeys: Array<{ key: string; size: number }> = [];\n\n // Find all DocSearch-related keys and their sizes\n for (const key in window.localStorage) {\n if (key.includes('__DOCSEARCH_')) {\n const value = window.localStorage[key];\n docSearchKeys.push({ key, size: value.length + key.length });\n }\n }\n\n // Sort by size (largest first) to remove the most impactful items\n docSearchKeys.sort((a, b) => b.size - a.size);\n\n // Remove up to half of the DocSearch items, starting with the largest\n const itemsToRemove = Math.ceil(docSearchKeys.length / 2);\n for (let i = 0; i < itemsToRemove && i < docSearchKeys.length; i++) {\n try {\n window.localStorage.removeItem(docSearchKeys[i].key);\n } catch {\n // Silently ignore cleanup errors to prevent crashes\n }\n }\n}\n\n/**\n * Safely sets an item in localStorage with quota exceeded error handling.\n *\n * @param key - The localStorage key.\n * @param value - The value to store (will be JSON.stringified).\n */\nfunction safeSetLocalStorageItem(key: string, value: any): void {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch (error) {\n // Handle quota exceeded error by clearing old data and retrying\n if (error instanceof DOMException && error.name === 'QuotaExceededError') {\n try {\n // First, try comprehensive cleanup of DocSearch storage\n cleanupDocSearchStorage();\n // Retry with original data\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {\n // If still failing, silently fail to prevent crashes\n }\n } else {\n // For other localStorage errors, silently fail to prevent crashes\n }\n }\n}\n\n/**\n * Proactively manages localStorage quota by cleaning up when usage is high\n * Should be called periodically to prevent quota exceeded errors.\n */\nexport function manageLocalStorageQuota(): void {\n if (typeof window === 'undefined' || !window.localStorage) {\n return;\n }\n\n const currentSize = getLocalStorageSize();\n // Typical localStorage limit is 5-10MB, start cleanup at 4MB to be safe\n const CLEANUP_THRESHOLD = 4 * 1024 * 1024; // 4MB\n\n if (currentSize > CLEANUP_THRESHOLD) {\n cleanupDocSearchStorage();\n }\n}\n\n/**\n * Checks if local storage is available and usable.\n */\nexport function isLocalStorageSupported(): boolean {\n // guard against ssr and browsers where localstorage is disabled\n if (typeof window === 'undefined' || !('localStorage' in window)) {\n return false;\n }\n\n const key = '__TEST_KEY__';\n try {\n window.localStorage.setItem(key, '');\n window.localStorage.removeItem(key);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Creates a simple storage interface for arrays using localstorage.\n * Provides basic getitem and setitem functionality.\n * Falls back to a no-op implementation if localstorage is not supported..\n *\n * @template titem The type of items to store.\n * @param key - The localstorage key to use.\n * @returns An object with setitem and getitem methods.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function createStorage<TItem>(key: string) {\n if (isLocalStorageSupported() === false) {\n return {\n setItem(): void {},\n getItem(): TItem[] {\n return [];\n },\n };\n }\n\n return {\n setItem(item: TItem[]): void {\n safeSetLocalStorageItem(key, item);\n },\n getItem(): TItem[] {\n const item = window.localStorage.getItem(key);\n if (item === null) return [];\n try {\n const parsed = JSON.parse(item);\n return Array.isArray(parsed) ? (parsed as TItem[]) : [];\n } catch {\n // clear corrupted data and return empty list\n window.localStorage.removeItem(key);\n return [];\n }\n },\n };\n}\n\n/**\n * Creates a simple storage interface for a single object using localstorage.\n * Provides basic getitem, setitem, and removeitem functionality.\n * Falls back to a no-op implementation if localstorage is not supported.\n *\n * @template titem The type of the object to store.\n * @param key - The localstorage key to use.\n * @returns An object with setitem, getitem, and removeitem methods.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function createObjectStorage<TItem>(key: string) {\n if (isLocalStorageSupported() === false) {\n return {\n setItem(_item: TItem | null): void {},\n getItem(): TItem | null {\n return null;\n },\n removeItem(): void {},\n };\n }\n\n return {\n setItem(item: TItem | null): void {\n if (item === null) {\n window.localStorage.removeItem(key);\n } else {\n safeSetLocalStorageItem(key, item);\n }\n },\n getItem(): TItem | null {\n const item = window.localStorage.getItem(key);\n try {\n return item ? (JSON.parse(item) as TItem) : null;\n } catch {\n // handle potential JSON parsing errors, e.g., corrupted data\n window.localStorage.removeItem(key); // clear corrupted data\n return null;\n }\n },\n removeItem(): void {\n window.localStorage.removeItem(key);\n },\n };\n}\n","import type { DocSearchHit, StoredAskAiState, StoredDocSearchHit, StoredAskAiMessage } from './types';\nimport { createStorage } from './utils/storage';\n\ntype CreateStoredSearchesOptions = {\n key: string;\n limit?: number;\n};\n\nexport type StoredSearchPlugin<TItem> = {\n add: (item: TItem) => void;\n remove: (item: TItem) => void;\n getAll: () => TItem[];\n addFeedback?: (messageId: string, feedback: 'dislike' | 'like') => void;\n getOne?: (messageId: string) => StoredAskAiMessage | undefined;\n getConversation?: (messageId: string) => TItem | undefined;\n};\n\nexport function createStoredSearches<TItem extends StoredDocSearchHit>({\n key,\n limit = 5,\n}: CreateStoredSearchesOptions): StoredSearchPlugin<TItem> {\n const storage = createStorage<TItem>(key);\n let items = storage.getItem().slice(0, limit);\n\n return {\n add(item: TItem): void {\n const { _highlightResult, _snippetResult, ...hit } = item as unknown as DocSearchHit;\n\n const isQueryAlreadySaved = items.findIndex((x) => x.objectID === hit.objectID);\n\n if (isQueryAlreadySaved > -1) {\n items.splice(isQueryAlreadySaved, 1);\n }\n\n items.unshift(hit as TItem);\n items = items.slice(0, limit);\n\n storage.setItem(items);\n },\n remove(item: TItem): void {\n items = items.filter((x) => x.objectID !== item.objectID);\n\n storage.setItem(items);\n },\n getAll(): TItem[] {\n return items;\n },\n };\n}\n\nexport function createStoredConversations<TItem extends StoredAskAiState>({\n key,\n limit = 5,\n}: CreateStoredSearchesOptions): StoredSearchPlugin<TItem> {\n const storage = createStorage<TItem>(key);\n let items = storage.getItem().slice(0, limit);\n\n return {\n add(item: TItem): void {\n const { objectID, query } = item;\n\n // check if this query is already saved\n const isQueryAlreadySaved = items.findIndex((x) => x.objectID === objectID || x.query === query);\n\n if (isQueryAlreadySaved > -1) {\n items[isQueryAlreadySaved] = item;\n } else {\n items.unshift(item);\n items = items.slice(0, limit);\n }\n\n storage.setItem(items);\n },\n /** Record feedback (like/dislike) for a given message id within stored conversations. */\n addFeedback(messageId: string, feedback: 'dislike' | 'like'): void {\n const conv = items.find((c) => c.messages?.some((m) => m.id === messageId));\n if (!conv || !conv.messages) return;\n\n const msg = conv.messages.find((m) => m.id === messageId);\n if (!msg) return;\n\n (msg as any).feedback = feedback;\n\n storage.setItem(items);\n },\n getOne(messageId: string): StoredAskAiMessage | undefined {\n const conv = items.find((c) => c.messages?.some((m) => m.id === messageId));\n return conv?.messages?.find((m) => m.id === messageId);\n },\n getAll(): TItem[] {\n return items;\n },\n remove(item: TItem): void {\n items = items.filter((x) => x.objectID !== item.objectID);\n\n storage.setItem(items);\n },\n getConversation(messageId: string): TItem | undefined {\n const conv = items.find((c) => c.messages?.some((m) => m.id === messageId));\n\n if (!conv || !conv.messages) return undefined;\n\n return conv;\n },\n };\n}\n","// src/cache/createBrowserLocalStorageCache.ts\nfunction createBrowserLocalStorageCache(options) {\n let storage;\n const namespaceKey = `algolia-client-js-${options.key}`;\n function getStorage() {\n if (storage === void 0) {\n storage = options.localStorage || window.localStorage;\n }\n return storage;\n }\n function getNamespace() {\n return JSON.parse(getStorage().getItem(namespaceKey) || \"{}\");\n }\n function setNamespace(namespace) {\n getStorage().setItem(namespaceKey, JSON.stringify(namespace));\n }\n function removeOutdatedCacheItems() {\n const timeToLive = options.timeToLive ? options.timeToLive * 1e3 : null;\n const namespace = getNamespace();\n const filteredNamespaceWithoutOldFormattedCacheItems = Object.fromEntries(\n Object.entries(namespace).filter(([, cacheItem]) => {\n return cacheItem.timestamp !== void 0;\n })\n );\n setNamespace(filteredNamespaceWithoutOldFormattedCacheItems);\n if (!timeToLive) {\n return;\n }\n const filteredNamespaceWithoutExpiredItems = Object.fromEntries(\n Object.entries(filteredNamespaceWithoutOldFormattedCacheItems).filter(([, cacheItem]) => {\n const currentTimestamp = (/* @__PURE__ */ new Date()).getTime();\n const isExpired = cacheItem.timestamp + timeToLive < currentTimestamp;\n return !isExpired;\n })\n );\n setNamespace(filteredNamespaceWithoutExpiredItems);\n }\n return {\n get(key, defaultValue, events = {\n miss: () => Promise.resolve()\n }) {\n return Promise.resolve().then(() => {\n removeOutdatedCacheItems();\n return getNamespace()[JSON.stringify(key)];\n }).then((value) => {\n return Promise.all([value ? value.value : defaultValue(), value !== void 0]);\n }).then(([value, exists]) => {\n return Promise.all([value, exists || events.miss(value)]);\n }).then(([value]) => value);\n },\n set(key, value) {\n return Promise.resolve().then(() => {\n const namespace = getNamespace();\n namespace[JSON.stringify(key)] = {\n timestamp: (/* @__PURE__ */ new Date()).getTime(),\n value\n };\n getStorage().setItem(namespaceKey, JSON.stringify(namespace));\n return value;\n });\n },\n delete(key) {\n return Promise.resolve().then(() => {\n const namespace = getNamespace();\n delete namespace[JSON.stringify(key)];\n getStorage().setItem(namespaceKey, JSON.stringify(namespace));\n });\n },\n clear() {\n return Promise.resolve().then(() => {\n getStorage().removeItem(namespaceKey);\n });\n }\n };\n}\n\n// src/cache/createNullCache.ts\nfunction createNullCache() {\n return {\n get(_key, defaultValue, events = {\n miss: () => Promise.resolve()\n }) {\n const value = defaultValue();\n return value.then((result) => Promise.all([result, events.miss(result)])).then(([result]) => result);\n },\n set(_key, value) {\n return Promise.resolve(value);\n },\n delete(_key) {\n return Promise.resolve();\n },\n clear() {\n return Promise.resolve();\n }\n };\n}\n\n// src/cache/createFallbackableCache.ts\nfunction createFallbackableCache(options) {\n const caches = [...options.caches];\n const current = caches.shift();\n if (current === void 0) {\n return createNullCache();\n }\n return {\n get(key, defaultValue, events = {\n miss: () => Promise.resolve()\n }) {\n return current.get(key, defaultValue, events).catch(() => {\n return createFallbackableCache({ caches }).get(key, defaultValue, events);\n });\n },\n set(key, value) {\n return current.set(key, value).catch(() => {\n return createFallbackableCache({ caches }).set(key, value);\n });\n },\n delete(key) {\n return current.delete(key).catch(() => {\n return createFallbackableCache({ caches }).delete(key);\n });\n },\n clear() {\n return current.clear().catch(() => {\n return createFallbackableCache({ caches }).clear();\n });\n }\n };\n}\n\n// src/cache/createMemoryCache.ts\nfunction createMemoryCache(options = { serializable: true }) {\n let cache = {};\n return {\n get(key, defaultValue, events = {\n miss: () => Promise.resolve()\n }) {\n const keyAsString = JSON.stringify(key);\n if (keyAsString in cache) {\n return Promise.resolve(options.serializable ? JSON.parse(cache[keyAsString]) : cache[keyAsString]);\n }\n const promise = defaultValue();\n return promise.then((value) => events.miss(value)).then(() => promise);\n },\n set(key, value) {\n cache[JSON.stringify(key)] = options.serializable ? JSON.stringify(value) : value;\n return Promise.resolve(value);\n },\n delete(key) {\n delete cache[JSON.stringify(key)];\n return Promise.resolve();\n },\n clear() {\n cache = {};\n return Promise.resolve();\n }\n };\n}\n\n// src/constants.ts\nvar DEFAULT_CONNECT_TIMEOUT_BROWSER = 1e3;\nvar DEFAULT_READ_TIMEOUT_BROWSER = 2e3;\nvar DEFAULT_WRITE_TIMEOUT_BROWSER = 3e4;\nvar DEFAULT_CONNECT_TIMEOUT_NODE = 2e3;\nvar DEFAULT_READ_TIMEOUT_NODE = 5e3;\nvar DEFAULT_WRITE_TIMEOUT_NODE = 3e4;\n\n// src/createAlgoliaAgent.ts\nfunction createAlgoliaAgent(version) {\n const algoliaAgent = {\n value: `Algolia for JavaScript (${version})`,\n add(options) {\n const addedAlgoliaAgent = `; ${options.segment}${options.version !== void 0 ? ` (${options.version})` : \"\"}`;\n if (algoliaAgent.value.indexOf(addedAlgoliaAgent) === -1) {\n algoliaAgent.value = `${algoliaAgent.value}${addedAlgoliaAgent}`;\n }\n return algoliaAgent;\n }\n };\n return algoliaAgent;\n}\n\n// src/createAuth.ts\nfunction createAuth(appId, apiKey, authMode = \"WithinHeaders\") {\n const credentials = {\n \"x-algolia-api-key\": apiKey,\n \"x-algolia-application-id\": appId\n };\n return {\n headers() {\n return authMode === \"WithinHeaders\" ? credentials : {};\n },\n queryParameters() {\n return authMode === \"WithinQueryParameters\" ? credentials : {};\n }\n };\n}\n\n// src/createIterablePromise.ts\nfunction createIterablePromise({\n func,\n validate,\n aggregator,\n error,\n timeout = () => 0\n}) {\n const retry = (previousResponse) => {\n return new Promise((resolve, reject) => {\n func(previousResponse).then(async (response) => {\n if (aggregator) {\n await aggregator(response);\n }\n if (await validate(response)) {\n return resolve(response);\n }\n if (error && await error.validate(response)) {\n return reject(new Error(await error.message(response)));\n }\n return setTimeout(\n () => {\n retry(response).then(resolve).catch(reject);\n },\n await timeout()\n );\n }).catch((err) => {\n reject(err);\n });\n });\n };\n return retry();\n}\n\n// src/getAlgoliaAgent.ts\nfunction getAlgoliaAgent({ algoliaAgents, client, version }) {\n const defaultAlgoliaAgent = createAlgoliaAgent(version).add({\n segment: client,\n version\n });\n algoliaAgents.forEach((algoliaAgent) => defaultAlgoliaAgent.add(algoliaAgent));\n return defaultAlgoliaAgent;\n}\n\n// src/logger/createNullLogger.ts\nfunction createNullLogger() {\n return {\n debug(_message, _args) {\n return Promise.resolve();\n },\n info(_message, _args) {\n return Promise.resolve();\n },\n error(_message, _args) {\n return Promise.resolve();\n }\n };\n}\n\n// src/transporter/createStatefulHost.ts\nvar EXPIRATION_DELAY = 2 * 60 * 1e3;\nfunction createStatefulHost(host, status = \"up\") {\n const lastUpdate = Date.now();\n function isUp() {\n return status === \"up\" || Date.now() - lastUpdate > EXPIRATION_DELAY;\n }\n function isTimedOut() {\n return status === \"timed out\" && Date.now() - lastUpdate <= EXPIRATION_DELAY;\n }\n return { ...host, status, lastUpdate, isUp, isTimedOut };\n}\n\n// src/transporter/errors.ts\nvar AlgoliaError = class extends Error {\n name = \"AlgoliaError\";\n constructor(message, name) {\n super(message);\n if (name) {\n this.name = name;\n }\n }\n};\nvar IndexNotFoundError = class extends AlgoliaError {\n constructor(indexName) {\n super(`${indexName} does not exist`, \"IndexNotFoundError\");\n }\n};\nvar IndicesInSameAppError = class extends AlgoliaError {\n constructor() {\n super(\"Indices are in the same application. Use operationIndex instead.\", \"IndicesInSameAppError\");\n }\n};\nvar IndexAlreadyExistsError = class extends AlgoliaError {\n constructor(indexName) {\n super(`${indexName} index already exists.`, \"IndexAlreadyExistsError\");\n }\n};\nvar ErrorWithStackTrace = class extends AlgoliaError {\n stackTrace;\n constructor(message, stackTrace, name) {\n super(message, name);\n this.stackTrace = stackTrace;\n }\n};\nvar RetryError = class extends ErrorWithStackTrace {\n constructor(stackTrace) {\n super(\n \"Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support\",\n stackTrace,\n \"RetryError\"\n );\n }\n};\nvar ApiError = class extends ErrorWithStackTrace {\n status;\n constructor(message, status, stackTrace, name = \"ApiError\") {\n super(message, stackTrace, name);\n this.status = status;\n }\n};\nvar DeserializationError = class extends AlgoliaError {\n response;\n constructor(message, response) {\n super(message, \"DeserializationError\");\n this.response = response;\n }\n};\nvar DetailedApiError = class extends ApiError {\n error;\n constructor(message, status, error, stackTrace) {\n super(message, status, stackTrace, \"DetailedApiError\");\n this.error = error;\n }\n};\n\n// src/transporter/helpers.ts\nfunction shuffle(array) {\n const shuffledArray = array;\n for (let c = array.length - 1; c > 0; c--) {\n const b = Math.floor(Math.random() * (c + 1));\n const a = array[c];\n shuffledArray[c] = array[b];\n shuffledArray[b] = a;\n }\n return shuffledArray;\n}\nfunction serializeUrl(host, path, queryParameters) {\n const queryParametersAsString = serializeQueryParameters(queryParameters);\n let url = `${host.protocol}://${host.url}${host.port ? `:${host.port}` : \"\"}/${path.charAt(0) === \"/\" ? path.substring(1) : path}`;\n if (queryParametersAsString.length) {\n url += `?${queryParametersAsString}`;\n }\n return url;\n}\nfunction serializeQueryParameters(parameters) {\n return Object.keys(parameters).filter((key) => parameters[key] !== void 0).sort().map(\n (key) => `${key}=${encodeURIComponent(\n Object.prototype.toString.call(parameters[key]) === \"[object Array]\" ? parameters[key].join(\",\") : parameters[key]\n ).replace(/\\+/g, \"%20\")}`\n ).join(\"&\");\n}\nfunction serializeData(request, requestOptions) {\n if (request.method === \"GET\" || request.data === void 0 && requestOptions.data === void 0) {\n return void 0;\n }\n const data = Array.isArray(request.data) ? request.data : { ...request.data, ...requestOptions.data };\n return JSON.stringify(data);\n}\nfunction serializeHeaders(baseHeaders, requestHeaders, requestOptionsHeaders) {\n const headers = {\n Accept: \"application/json\",\n ...baseHeaders,\n ...requestHeaders,\n ...requestOptionsHeaders\n };\n const serializedHeaders = {};\n Object.keys(headers).forEach((header) => {\n const value = headers[header];\n serializedHeaders[header.toLowerCase()] = value;\n });\n return serializedHeaders;\n}\nfunction deserializeSuccess(response) {\n try {\n return JSON.parse(response.content);\n } catch (e) {\n throw new DeserializationError(e.message, response);\n }\n}\nfunction deserializeFailure({ content, status }, stackFrame) {\n try {\n const parsed = JSON.parse(content);\n if (\"error\" in parsed) {\n return new DetailedApiError(parsed.message, status, parsed.error, stackFrame);\n }\n return new ApiError(parsed.message, status, stackFrame);\n } catch {\n }\n return new ApiError(content, status, stackFrame);\n}\n\n// src/transporter/responses.ts\nfunction isNetworkError({ isTimedOut, status }) {\n return !isTimedOut && ~~status === 0;\n}\nfunction isRetryable({ isTimedOut, status }) {\n return isTimedOut || isNetworkError({ isTimedOut, status }) || ~~(status / 100) !== 2 && ~~(status / 100) !== 4;\n}\nfunction isSuccess({ status }) {\n return ~~(status / 100) === 2;\n}\n\n// src/transporter/stackTrace.ts\nfunction stackTraceWithoutCredentials(stackTrace) {\n return stackTrace.map((stackFrame) => stackFrameWithoutCredentials(stackFrame));\n}\nfunction stackFrameWithoutCredentials(stackFrame) {\n const modifiedHeaders = stackFrame.request.headers[\"x-algolia-api-key\"] ? { \"x-algolia-api-key\": \"*****\" } : {};\n return {\n ...stackFrame,\n request: {\n ...stackFrame.request,\n headers: {\n ...stackFrame.request.headers,\n ...modifiedHeaders\n }\n }\n };\n}\n\n// src/transporter/createTransporter.ts\nfunction createTransporter({\n hosts,\n hostsCache,\n baseHeaders,\n logger,\n baseQueryParameters,\n algoliaAgent,\n timeouts,\n requester,\n requestsCache,\n responsesCache\n}) {\n async function createRetryableOptions(compatibleHosts) {\n const statefulHosts = await Promise.all(\n compatibleHosts.map((compatibleHost) => {\n return hostsCache.get(compatibleHost, () => {\n return Promise.resolve(createStatefulHost(compatibleHost));\n });\n })\n );\n const hostsUp = statefulHosts.filter((host) => host.isUp());\n const hostsTimedOut = statefulHosts.filter((host) => host.isTimedOut());\n const hostsAvailable = [...hostsUp, ...hostsTimedOut];\n const compatibleHostsAvailable = hostsAvailable.length > 0 ? hostsAvailable : compatibleHosts;\n return {\n hosts: compatibleHostsAvailable,\n getTimeout(timeoutsCount, baseTimeout) {\n const timeoutMultiplier = hostsTimedOut.length === 0 && timeoutsCount === 0 ? 1 : hostsTimedOut.length + 3 + timeoutsCount;\n return timeoutMultiplier * baseTimeout;\n }\n };\n }\n async function retryableRequest(request, requestOptions, isRead = true) {\n const stackTrace = [];\n const data = serializeData(request, requestOptions);\n const headers = serializeHeaders(baseHeaders, request.headers, requestOptions.headers);\n const dataQueryParameters = request.method === \"GET\" ? {\n ...request.data,\n ...requestOptions.data\n } : {};\n const queryParameters = {\n ...baseQueryParameters,\n ...request.queryParameters,\n ...dataQueryParameters\n };\n if (algoliaAgent.value) {\n queryParameters[\"x-algolia-agent\"] = algoliaAgent.value;\n }\n if (requestOptions && requestOptions.queryParameters) {\n for (const key of Object.keys(requestOptions.queryParameters)) {\n if (!requestOptions.queryParameters[key] || Object.prototype.toString.call(requestOptions.queryParameters[key]) === \"[object Object]\") {\n queryParameters[key] = requestOptions.queryParameters[key];\n } else {\n queryParameters[key] = requestOptions.queryParameters[key].toString();\n }\n }\n }\n let timeoutsCount = 0;\n const retry = async (retryableHosts, getTimeout) => {\n const host = retryableHosts.pop();\n if (host === void 0) {\n throw new RetryError(stackTraceWithoutCredentials(stackTrace));\n }\n const timeout = { ...timeouts, ...requestOptions.timeouts };\n const payload = {\n data,\n headers,\n method: request.method,\n url: serializeUrl(host, request.path, queryParameters),\n connectTimeout: getTimeout(timeoutsCount, timeout.connect),\n responseTimeout: getTimeout(timeoutsCount, isRead ? timeout.read : timeout.write)\n };\n const pushToStackTrace = (response2) => {\n const stackFrame = {\n request: payload,\n response: response2,\n host,\n triesLeft: retryableHosts.length\n };\n stackTrace.push(stackFrame);\n return stackFrame;\n };\n const response = await requester.send(payload);\n if (isRetryable(response)) {\n const stackFrame = pushToStackTrace(response);\n if (response.isTimedOut) {\n timeoutsCount++;\n }\n logger.info(\"Retryable failure\", stackFrameWithoutCredentials(stackFrame));\n await hostsCache.set(host, createStatefulHost(host, response.isTimedOut ? \"timed out\" : \"down\"));\n return retry(retryableHosts, getTimeout);\n }\n if (isSuccess(response)) {\n return deserializeSuccess(response);\n }\n pushToStackTrace(response);\n throw deserializeFailure(response, stackTrace);\n };\n const compatibleHosts = hosts.filter(\n (host) => host.accept === \"readWrite\" || (isRead ? host.accept === \"read\" : host.accept === \"write\")\n );\n const options = await createRetryableOptions(compatibleHosts);\n return retry([...options.hosts].reverse(), options.getTimeout);\n }\n function createRequest(request, requestOptions = {}) {\n const isRead = request.useReadTransporter || request.method === \"GET\";\n if (!isRead) {\n return retryableRequest(request, requestOptions, isRead);\n }\n const createRetryableRequest = () => {\n return retryableRequest(request, requestOptions);\n };\n const cacheable = requestOptions.cacheable || request.cacheable;\n if (cacheable !== true) {\n return createRetryableRequest();\n }\n const key = {\n request,\n requestOptions,\n transporter: {\n queryParameters: baseQueryParameters,\n headers: baseHeaders\n }\n };\n return responsesCache.get(\n key,\n () => {\n return requestsCache.get(\n key,\n () => (\n /**\n * Finally, if there is no request in progress with the same key,\n * this `createRetryableRequest()` will actually trigger the\n * retryable request.\n */\n requestsCache.set(key, createRetryableRequest()).then(\n (response) => Promise.all([requestsCache.delete(key), response]),\n (err) => Promise.all([requestsCache.delete(key), Promise.reject(err)])\n ).then(([_, response]) => response)\n )\n );\n },\n {\n /**\n * Of course, once we get this response back from the server, we\n * tell response cache to actually store the received response\n * to be used later.\n */\n miss: (response) => responsesCache.set(key, response)\n }\n );\n }\n return {\n hostsCache,\n requester,\n timeouts,\n logger,\n algoliaAgent,\n baseHeaders,\n baseQueryParameters,\n hosts,\n request: createRequest,\n requestsCache,\n responsesCache\n };\n}\n\n// src/types/logger.ts\nvar LogLevelEnum = {\n Debug: 1,\n Info: 2,\n Error: 3\n};\nexport {\n AlgoliaError,\n ApiError,\n DEFAULT_CONNECT_TIMEOUT_BROWSER,\n DEFAULT_CONNECT_TIMEOUT_NODE,\n DEFAULT_READ_TIMEOUT_BROWSER,\n DEFAULT_READ_TIMEOUT_NODE,\n DEFAULT_WRITE_TIMEOUT_BROWSER,\n DEFAULT_WRITE_TIMEOUT_NODE,\n DeserializationError,\n DetailedApiError,\n ErrorWithStackTrace,\n IndexAlreadyExistsError,\n IndexNotFoundError,\n IndicesInSameAppError,\n LogLevelEnum,\n RetryError,\n createAlgoliaAgent,\n createAuth,\n createBrowserLocalStorageCache,\n createFallbackableCache,\n createIterablePromise,\n createMemoryCache,\n createNullCache,\n createNullLogger,\n createStatefulHost,\n createTransporter,\n deserializeFailure,\n deserializeSuccess,\n getAlgoliaAgent,\n isNetworkError,\n isRetryable,\n isSuccess,\n serializeData,\n serializeHeaders,\n serializeQueryParameters,\n serializeUrl,\n shuffle,\n stackFrameWithoutCredentials,\n stackTraceWithoutCredentials\n};\n//# sourceMappingURL=common.js.map","export const version = '4.2.0';\n","import { liteClient } from 'algoliasearch/lite';\nimport React from 'react';\n\nimport type { DocSearchTransformClient } from './DocSearch';\nimport { version } from './version';\n\nexport function useSearchClient(\n appId: string,\n apiKey: string,\n transformSearchClient: (searchClient: DocSearchTransformClient) => DocSearchTransformClient,\n): DocSearchTransformClient {\n const searchClient = React.useMemo(() => {\n const client = liteClient(appId, apiKey);\n client.addAlgoliaAgent('docsearch', version);\n\n // Since DocSearch.js relies on DocSearch React with an alias to Preact,\n // we cannot add the `docsearch-react` user agent by default, otherwise\n // it would also be sent on a DocSearch.js integration.\n // We therefore only add the `docsearch-react` user agent if `docsearch.js`\n // is not present.\n if (/docsearch.js \\(.*\\)/.test(client.transporter.algoliaAgent.value) === false) {\n client.addAlgoliaAgent('docsearch-react', version);\n }\n\n return transformSearchClient(client);\n }, [appId, apiKey, transformSearchClient]);\n\n return searchClient;\n}\n","// lite/builds/browser.ts\nimport { createXhrRequester } from \"@algolia/requester-browser-xhr\";\nimport {\n createBrowserLocalStorageCache,\n createFallbackableCache,\n createMemoryCache,\n createNullLogger\n} from \"@algolia/client-common\";\n\n// lite/src/liteClient.ts\nimport { createAuth, createTransporter, getAlgoliaAgent, shuffle } from \"@algolia/client-common\";\nvar apiClientVersion = \"5.37.0\";\nfunction getDefaultHosts(appId) {\n return [\n {\n url: `${appId}-dsn.algolia.net`,\n accept: \"read\",\n protocol: \"https\"\n },\n {\n url: `${appId}.algolia.net`,\n accept: \"write\",\n protocol: \"https\"\n }\n ].concat(\n shuffle([\n {\n url: `${appId}-1.algolianet.com`,\n accept: \"readWrite\",\n protocol: \"https\"\n },\n {\n url: `${appId}-2.algolianet.com`,\n accept: \"readWrite\",\n protocol: \"https\"\n },\n {\n url: `${appId}-3.algolianet.com`,\n accept: \"readWrite\",\n protocol: \"https\"\n }\n ])\n );\n}\nfunction createLiteClient({\n appId: appIdOption,\n apiKey: apiKeyOption,\n authMode,\n algoliaAgents,\n ...options\n}) {\n const auth = createAuth(appIdOption, apiKeyOption, authMode);\n const transporter = createTransporter({\n hosts: getDefaultHosts(appIdOption),\n ...options,\n algoliaAgent: getAlgoliaAgent({\n algoliaAgents,\n client: \"Lite\",\n version: apiClientVersion\n }),\n baseHeaders: {\n \"content-type\": \"text/plain\",\n ...auth.headers(),\n ...options.baseHeaders\n },\n baseQueryParameters: {\n ...auth.queryParameters(),\n ...options.baseQueryParameters\n }\n });\n return {\n transporter,\n /**\n * The `appId` currently in use.\n */\n appId: appIdOption,\n /**\n * The `apiKey` currently in use.\n */\n apiKey: apiKeyOption,\n /**\n * Clears the cache of the transporter for the `requestsCache` and `responsesCache` properties.\n */\n clearCache() {\n return Promise.all([transporter.requestsCache.clear(), transporter.responsesCache.clear()]).then(() => void 0);\n },\n /**\n * Get the value of the `algoliaAgent`, used by our libraries internally and telemetry system.\n */\n get _ua() {\n return transporter.algoliaAgent.value;\n },\n /**\n * Adds a `segment` to the `x-algolia-agent` sent with every requests.\n *\n * @param segment - The algolia agent (user-agent) segment to add.\n * @param version - The version of the agent.\n */\n addAlgoliaAgent(segment, version) {\n transporter.algoliaAgent.add({ segment, version });\n },\n /**\n * Helper method to switch the API key used to authenticate the requests.\n *\n * @param params - Method params.\n * @param params.apiKey - The new API Key to use.\n */\n setClientApiKey({ apiKey }) {\n if (!authMode || authMode === \"WithinHeaders\") {\n transporter.baseHeaders[\"x-algolia-api-key\"] = apiKey;\n } else {\n transporter.baseQueryParameters[\"x-algolia-api-key\"] = apiKey;\n }\n },\n /**\n * Helper: calls the `search` method but with certainty that we will only request Algolia records (hits) and not facets.\n * Disclaimer: We don't assert that the parameters you pass to this method only contains `hits` requests to prevent impacting search performances, this helper is purely for typing purposes.\n *\n * @summary Search multiple indices for `hits`.\n * @param searchMethodParams - Query requests and strategies. Results will be received in the same order as the queries.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n searchForHits(searchMethodParams, requestOptions) {\n return this.search(searchMethodParams, requestOptions);\n },\n /**\n * Helper: calls the `search` method but with certainty that we will only request Algolia facets and not records (hits).\n * Disclaimer: We don't assert that the parameters you pass to this method only contains `facets` requests to prevent impacting search performances, this helper is purely for typing purposes.\n *\n * @summary Search multiple indices for `facets`.\n * @param searchMethodParams - Query requests and strategies. Results will be received in the same order as the queries.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n searchForFacets(searchMethodParams, requestOptions) {\n return this.search(searchMethodParams, requestOptions);\n },\n /**\n * This method lets you send requests to the Algolia REST API.\n * @param customPost - The customPost object.\n * @param customPost.path - Path of the endpoint, for example `1/newFeature`.\n * @param customPost.parameters - Query parameters to apply to the current query.\n * @param customPost.body - Parameters to send with the custom request.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n customPost({ path, parameters, body }, requestOptions) {\n if (!path) {\n throw new Error(\"Parameter `path` is required when calling `customPost`.\");\n }\n const requestPath = \"/{path}\".replace(\"{path}\", path);\n const headers = {};\n const queryParameters = parameters ? parameters : {};\n const request = {\n method: \"POST\",\n path: requestPath,\n queryParameters,\n headers,\n data: body ? body : {}\n };\n return transporter.request(request, requestOptions);\n },\n /**\n * Retrieves recommendations from selected AI models.\n *\n * Required API Key ACLs:\n * - search\n * @param getRecommendationsParams - The getRecommendationsParams object.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n getRecommendations(getRecommendationsParams, requestOptions) {\n if (getRecommendationsParams && Array.isArray(getRecommendationsParams)) {\n const newSignatureRequest = {\n requests: getRecommendationsParams\n };\n getRecommendationsParams = newSignatureRequest;\n }\n if (!getRecommendationsParams) {\n throw new Error(\"Parameter `getRecommendationsParams` is required when calling `getRecommendations`.\");\n }\n if (!getRecommendationsParams.requests) {\n throw new Error(\"Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.\");\n }\n const requestPath = \"/1/indexes/*/recommendations\";\n const headers = {};\n const queryParameters = {};\n const request = {\n method: \"POST\",\n path: requestPath,\n queryParameters,\n headers,\n data: getRecommendationsParams,\n useReadTransporter: true,\n cacheable: true\n };\n return transporter.request(request, requestOptions);\n },\n /**\n * Sends multiple search requests to one or more indices. This can be useful in these cases: - Different indices for different purposes, such as, one index for products, another one for marketing content. - Multiple searches to the same index—for example, with different filters. Use the helper `searchForHits` or `searchForFacets` to get the results in a more convenient format, if you already know the return type you want.\n *\n * Required API Key ACLs:\n * - search\n * @param searchMethodParams - Muli-search request body. Results are returned in the same order as the requests.\n * @param requestOptions - The requestOptions to send along with the query, they will be merged with the transporter requestOptions.\n */\n search(searchMethodParams, requestOptions) {\n if (searchMethodParams && Array.isArray(searchMethodParams)) {\n const newSignatureRequest = {\n requests: searchMethodParams.map(({ params, ...legacyRequest }) => {\n if (legacyRequest.type === \"facet\") {\n return {\n ...legacyRequest,\n ...params,\n type: \"facet\"\n };\n }\n return {\n ...legacyRequest,\n ...params,\n facet: void 0,\n maxFacetHits: void 0,\n facetQuery: void 0\n };\n })\n };\n searchMethodParams = newSignatureRequest;\n }\n if (!searchMethodParams) {\n throw new Error(\"Parameter `searchMethodParams` is required when calling `search`.\");\n }\n if (!searchMethodParams.requests) {\n throw new Error(\"Parameter `searchMethodParams.requests` is required when calling `search`.\");\n }\n const requestPath = \"/1/indexes/*/queries\";\n const headers = {};\n const queryParameters = {};\n const request = {\n method: \"POST\",\n path: requestPath,\n queryParameters,\n headers,\n data: searchMethodParams,\n useReadTransporter: true,\n cacheable: true\n };\n return transporter.request(request, requestOptions);\n }\n };\n}\n\n// lite/builds/browser.ts\nfunction liteClient(appId, apiKey, options) {\n if (!appId || typeof appId !== \"string\") {\n throw new Error(\"`appId` is missing.\");\n }\n if (!apiKey || typeof apiKey !== \"string\") {\n throw new Error(\"`apiKey` is missing.\");\n }\n return createLiteClient({\n appId,\n apiKey,\n timeouts: {\n connect: 1e3,\n read: 2e3,\n write: 3e4\n },\n logger: createNullLogger(),\n requester: createXhrRequester(),\n algoliaAgents: [{ segment: \"Browser\" }],\n authMode: \"WithinQueryParameters\",\n responsesCache: createMemoryCache(),\n requestsCache: createMemoryCache({ serializable: false }),\n hostsCache: createFallbackableCache({\n caches: [createBrowserLocalStorageCache({ key: `${apiClientVersion}-${appId}` }), createMemoryCache()]\n }),\n ...options\n });\n}\nexport {\n apiClientVersion,\n liteClient\n};\n//# sourceMappingURL=browser.js.map","function m(){function r(t){return new Promise(s=>{let e=new XMLHttpRequest;e.open(t.method,t.url,!0),Object.keys(t.headers).forEach(n=>e.setRequestHeader(n,t.headers[n]));let i=(n,a)=>setTimeout(()=>{e.abort(),s({status:0,content:a,isTimedOut:!0})},n),u=i(t.connectTimeout,\"Connection timeout\"),o;e.onreadystatechange=()=>{e.readyState>e.OPENED&&o===void 0&&(clearTimeout(u),o=i(t.responseTimeout,\"Socket timeout\"))},e.onerror=()=>{e.status===0&&(clearTimeout(u),clearTimeout(o),s({content:e.responseText||\"Network request failed\",status:e.status,isTimedOut:!1}))},e.onload=()=>{clearTimeout(u),clearTimeout(o),s({content:e.responseText,status:e.status,isTimedOut:!1})},e.send(t.data)})}return{send:r}}export{m as createXhrRequester};\n//# sourceMappingURL=requester.xhr.js.map","import { useChat } from '@ai-sdk/react';\nimport {\n type AutocompleteSource,\n type AlgoliaInsightsHit,\n createAutocomplete,\n type AutocompleteState,\n} from '@algolia/autocomplete-core';\nimport { DefaultChatTransport, lastAssistantMessageIsCompleteWithToolCalls } from 'ai';\nimport type { SearchResponse } from 'algoliasearch/lite';\nimport React, { type JSX } from 'react';\n\nimport { getValidToken, postFeedback } from './askai';\nimport { ASK_AI_API_URL, MAX_QUERY_SIZE, USE_ASK_AI_TOKEN } from './constants';\nimport type { DocSearchIndex, DocSearchProps } from './DocSearch';\nimport type { FooterTranslations } from './Footer';\nimport { Footer } from './Footer';\nimport { Hit } from './Hit';\nimport type { NewConversationTranslations } from './NewConversationScreen';\nimport type { ScreenStateTranslations } from './ScreenState';\nimport { ScreenState } from './ScreenState';\nimport type { SearchBoxTranslations } from './SearchBox';\nimport { SearchBox } from './SearchBox';\nimport { createStoredConversations, createStoredSearches } from './stored-searches';\nimport type { DocSearchHit, DocSearchState, InternalDocSearchHit, StoredAskAiState, StoredDocSearchHit } from './types';\nimport type { AIMessage, AskAiState } from './types/AskiAi';\nimport { useSearchClient } from './useSearchClient';\nimport { useTheme } from './useTheme';\nimport { useTouchEvents } from './useTouchEvents';\nimport { useTrapFocus } from './useTrapFocus';\nimport { groupBy, identity, noop, removeHighlightTags, isModifierEvent, scrollTo as scrollToUtils } from './utils';\nimport { buildDummyAskAiHit } from './utils/ai';\nimport { manageLocalStorageQuota } from './utils/storage';\n\nexport type ModalTranslations = Partial<{\n searchBox: SearchBoxTranslations;\n newConversation: NewConversationTranslations;\n footer: FooterTranslations;\n}> &\n ScreenStateTranslations;\n\nexport type DocSearchModalProps = DocSearchProps & {\n initialScrollY: number;\n onAskAiToggle: (toggle: boolean) => void;\n onClose?: () => void;\n isAskAiActive?: boolean;\n canHandleAskAi?: boolean;\n translations?: ModalTranslations;\n};\n\n/**\n * Helper function to build sources when there is no query\n * useful for recent searches and favorite searches.\n */\ntype BuildNoQuerySourcesOptions = {\n recentSearches: ReturnType<typeof createStoredSearches>;\n favoriteSearches: ReturnType<typeof createStoredSearches>;\n saveRecentSearch: (item: InternalDocSearchHit) => void;\n onClose: () => void;\n disableUserPersonalization: boolean;\n canHandleAskAi: boolean;\n};\n\nconst buildNoQuerySources = ({\n recentSearches,\n favoriteSearches,\n saveRecentSearch,\n onClose,\n disableUserPersonalization,\n}: BuildNoQuerySourcesOptions): Array<AutocompleteSource<InternalDocSearchHit>> => {\n if (disableUserPersonalization) {\n return [];\n }\n\n const sources: Array<AutocompleteSource<InternalDocSearchHit>> = [\n {\n sourceId: 'recentSearches',\n onSelect({ item, event }): void {\n saveRecentSearch(item);\n if (!isModifierEvent(event)) {\n onClose();\n }\n },\n getItemUrl({ item }): string {\n return item.url;\n },\n getItems(): InternalDocSearchHit[] {\n return recentSearches.getAll() as InternalDocSearchHit[];\n },\n },\n {\n sourceId: 'favoriteSearches',\n onSelect({ item, event }): void {\n saveRecentSearch(item);\n if (!isModifierEvent(event)) {\n onClose();\n }\n },\n getItemUrl({ item }): string {\n return item.url;\n },\n getItems(): InternalDocSearchHit[] {\n return favoriteSearches.getAll() as InternalDocSearchHit[];\n },\n },\n ];\n\n return sources;\n};\n\ntype BuildQuerySourcesState = Pick<AutocompleteState<InternalDocSearchHit>, 'context'>;\n\n/**\n * Helper function to build sources when there is a query\n * note: we only need specific parts of the state, not the full DocSearchState.\n */\nconst buildQuerySources = async ({\n query,\n state: sourcesState,\n setContext,\n setStatus,\n searchClient,\n indexes: indices,\n snippetLength,\n insights,\n appId,\n apiKey,\n maxResultsPerGroup,\n transformItems = identity,\n saveRecentSearch,\n onClose,\n}: {\n query: string;\n state: BuildQuerySourcesState;\n setContext: (context: Partial<DocSearchState<InternalDocSearchHit>['context']>) => void;\n setStatus: (status: DocSearchState<InternalDocSearchHit>['status']) => void;\n searchClient: ReturnType<typeof useSearchClient>;\n indexes: DocSearchIndex[];\n snippetLength: React.MutableRefObject<number>;\n insights: boolean;\n appId?: string;\n apiKey?: string;\n maxResultsPerGroup?: number;\n transformItems?: DocSearchProps['transformItems'];\n saveRecentSearch: (item: InternalDocSearchHit) => void;\n onClose: () => void;\n}): Promise<Array<AutocompleteSource<InternalDocSearchHit>>> => {\n const insightsActive = insights;\n\n try {\n const { results } = await searchClient.search<DocSearchHit>({\n requests: indices.map((index) => {\n const indexName = typeof index === 'string' ? index : index.name;\n const searchParams = typeof index === 'string' ? {} : index.searchParameters;\n\n return {\n query,\n indexName,\n attributesToRetrieve: searchParams?.attributesToRetrieve ?? [\n 'hierarchy.lvl0',\n 'hierarchy.lvl1',\n 'hierarchy.lvl2',\n 'hierarchy.lvl3',\n 'hierarchy.lvl4',\n 'hierarchy.lvl5',\n 'hierarchy.lvl6',\n 'content',\n 'type',\n 'url',\n ],\n attributesToSnippet: searchParams?.attributesToSnippet ?? [\n `hierarchy.lvl1:${snippetLength.current}`,\n `hierarchy.lvl2:${snippetLength.current}`,\n `hierarchy.lvl3:${snippetLength.current}`,\n `hierarchy.lvl4:${snippetLength.current}`,\n `hierarchy.lvl5:${snippetLength.current}`,\n `hierarchy.lvl6:${snippetLength.current}`,\n `content:${snippetLength.current}`,\n ],\n snippetEllipsisText: searchParams?.snippetEllipsisText ?? '…',\n highlightPreTag: searchParams?.highlightPreTag ?? '<mark>',\n highlightPostTag: searchParams?.highlightPostTag ?? '</mark>',\n hitsPerPage: searchParams?.hitsPerPage ?? 20,\n clickAnalytics: searchParams?.clickAnalytics ?? insightsActive,\n ...(searchParams ?? {}),\n };\n }),\n });\n\n return results.flatMap((res) => {\n const result = res as SearchResponse<DocSearchHit>;\n const { hits, nbHits } = result;\n const transformedHits = transformItems(hits);\n const sources = groupBy<DocSearchHit>(transformedHits, (hit) => removeHighlightTags(hit), maxResultsPerGroup);\n\n // We store the `lvl0`s to display them as search suggestions\n // in the \"no results\" screen.\n if ((sourcesState.context.searchSuggestions as any[]).length < Object.keys(sources).length) {\n setContext({\n searchSuggestions: {\n ...(sourcesState.context.searchSuggestions ?? []),\n ...Object.keys(sources),\n },\n });\n }\n\n if (nbHits) {\n const currentNbHits = sourcesState.context.nbHits as number | undefined;\n setContext({\n nbHits: (currentNbHits ?? 0) + nbHits,\n });\n }\n\n let insightsParams = {};\n\n if (insightsActive) {\n insightsParams = {\n __autocomplete_indexName: result.index,\n __autocomplete_queryID: result.queryID,\n __autocomplete_algoliaCredentials: {\n appId,\n apiKey,\n },\n };\n }\n\n return Object.values<DocSearchHit[]>(sources).map((items, index) => {\n return {\n sourceId: `hits_${result.index}_${index}`,\n onSelect({ item, event }): void {\n saveRecentSearch(item);\n if (!isModifierEvent(event)) {\n onClose();\n }\n },\n getItemUrl({ item }): string {\n return item.url;\n },\n getItems(): InternalDocSearchHit[] {\n return Object.values(groupBy(items, (item) => item.hierarchy.lvl1, maxResultsPerGroup))\n .map((groupedHits) =>\n groupedHits.map((item) => {\n let parent: InternalDocSearchHit | null = null;\n\n const potentialParent = groupedHits.find(\n (siblingItem) => siblingItem.type === 'lvl1' && siblingItem.hierarchy.lvl1 === item.hierarchy.lvl1,\n ) as InternalDocSearchHit | undefined;\n\n if (item.type !== 'lvl1' && potentialParent) {\n parent = potentialParent;\n }\n\n return {\n ...item,\n __docsearch_parent: parent,\n ...insightsParams,\n };\n }),\n )\n .flat();\n },\n };\n });\n });\n } catch (error) {\n // The Algolia `RetryError` happens when all the servers have\n // failed, meaning that there's no chance the response comes\n // back. This is the right time to display an error.\n // See https://github.com/algolia/algoliasearch-client-javascript/blob/2ffddf59bc765cd1b664ee0346b28f00229d6e12/packages/transporter/src/errors/createRetryError.ts#L5\n if ((error as Error).name === 'RetryError') {\n setStatus('error');\n }\n throw error;\n }\n};\n\nexport function DocSearchModal({\n appId,\n apiKey,\n placeholder,\n askAi,\n maxResultsPerGroup,\n theme,\n onClose = noop,\n transformItems = identity,\n hitComponent = Hit,\n resultsFooterComponent = (): JSX.Element | null => null,\n navigator,\n initialScrollY = 0,\n transformSearchClient = identity,\n disableUserPersonalization = false,\n initialQuery: initialQueryFromProp = '',\n translations = {},\n getMissingResultsUrl,\n insights = false,\n onAskAiToggle,\n isAskAiActive = false,\n canHandleAskAi = false,\n recentSearchesLimit = 7,\n recentSearchesWithFavoritesLimit = 4,\n indices = [],\n indexName,\n searchParameters,\n}: DocSearchModalProps): JSX.Element {\n const { footer: footerTranslations, searchBox: searchBoxTranslations, ...screenStateTranslations } = translations;\n const [state, setState] = React.useState<DocSearchState<InternalDocSearchHit>>({\n query: '',\n collections: [],\n completion: null,\n context: {},\n isOpen: false,\n activeItemId: null,\n status: 'idle',\n });\n\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const modalRef = React.useRef<HTMLDivElement | null>(null);\n const formElementRef = React.useRef<HTMLDivElement | null>(null);\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const snippetLength = React.useRef<number>(15);\n const initialQueryFromSelection = React.useRef(\n typeof window !== 'undefined' ? window.getSelection()!.toString().slice(0, MAX_QUERY_SIZE) : '',\n ).current;\n const initialQuery = React.useRef(initialQueryFromProp || initialQueryFromSelection).current;\n\n const searchClient = useSearchClient(appId, apiKey, transformSearchClient);\n\n const askAiConfig = typeof askAi === 'object' ? askAi : null;\n const askAiConfigurationId = typeof askAi === 'string' ? askAi : askAiConfig?.assistantId || null;\n const askAiSearchParameters = askAiConfig?.searchParameters;\n const [askAiState, setAskAiState] = React.useState<AskAiState>('initial');\n\n // Format the `indexes` to be used until `indexName` and `searchParameters` props are fully removed.\n const indexes: DocSearchIndex[] = [];\n\n if (indexName && indexName !== '') {\n indexes.push({\n name: indexName,\n searchParameters,\n });\n }\n\n if (indices.length > 0) {\n indices.forEach((index) => {\n indexes.push(typeof index === 'string' ? { name: index } : index);\n });\n }\n\n if (indexes.length < 1) {\n throw new Error('Must supply either `indexName` or `indices` for DocSearch to work');\n }\n\n const defaultIndexName = indexes[0].name;\n\n // storage\n const conversations = React.useRef(\n createStoredConversations<StoredAskAiState>({\n key: `__DOCSEARCH_ASKAI_CONVERSATIONS__${askAiConfig?.indexName || defaultIndexName}`,\n limit: 10,\n }),\n ).current;\n const favoriteSearches = React.useRef(\n createStoredSearches<StoredDocSearchHit>({\n key: `__DOCSEARCH_FAVORITE_SEARCHES__${defaultIndexName}`,\n limit: 10,\n }),\n ).current;\n const recentSearches = React.useRef(\n createStoredSearches<StoredDocSearchHit>({\n key: `__DOCSEARCH_RECENT_SEARCHES__${defaultIndexName}`,\n limit: favoriteSearches.getAll().length === 0 ? recentSearchesLimit : recentSearchesWithFavoritesLimit,\n }),\n ).current;\n\n const [askAiStreamError, setAskAiStreamError] = React.useState<Error | null>(null);\n const [stoppedStream, setStoppedStream] = React.useState(false);\n\n const {\n messages,\n sendMessage,\n status,\n setMessages,\n error: askAiFetchError,\n stop: stopAskAiStreaming,\n } = useChat<AIMessage>({\n sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,\n transport: new DefaultChatTransport({\n api: ASK_AI_API_URL,\n headers: async (): Promise<Record<string, string>> => {\n if (!askAiConfigurationId) {\n throw new Error('Ask AI assistant ID is required');\n }\n\n let token: string | null = null;\n\n if (USE_ASK_AI_TOKEN) {\n token = await getValidToken({\n assistantId: askAiConfigurationId,\n });\n }\n\n return {\n ...(token ? { authorization: `TOKEN ${token}` } : {}),\n // 'Content-Type': 'application/json',\n 'X-Algolia-API-Key': askAiConfig?.apiKey || apiKey,\n 'X-Algolia-Application-Id': askAiConfig?.appId || appId,\n 'X-Algolia-Index-Name': askAiConfig?.indexName || defaultIndexName,\n 'X-Algolia-Assistant-Id': askAiConfigurationId || '',\n 'X-AI-SDK-Version': 'v5',\n };\n },\n body: askAiSearchParameters ? { searchParameters: askAiSearchParameters } : {},\n }),\n onError(streamError) {\n setAskAiStreamError(streamError);\n },\n });\n\n const prevStatus = React.useRef(status);\n React.useEffect(() => {\n if (disableUserPersonalization) {\n return;\n }\n // if we just transitioned from \"streaming\" → \"ready\", persist\n if (prevStatus.current === 'streaming' && status === 'ready') {\n // if we stopped the stream, store it on the most recent message\n if (stoppedStream && messages.at(-1)) {\n messages.at(-1)!.metadata = {\n stopped: true,\n };\n }\n\n for (const part of messages[0].parts) {\n if (part.type === 'text') {\n conversations.add(buildDummyAskAiHit(part.text, messages));\n }\n }\n }\n prevStatus.current = status;\n }, [status, messages, conversations, disableUserPersonalization, stoppedStream]);\n\n const createSyntheticParent = React.useCallback(function createSyntheticParent(\n item: InternalDocSearchHit,\n ): InternalDocSearchHit {\n // Find the deepest non-null hierarchy level\n const hierarchy = item.hierarchy;\n const levels = ['lvl6', 'lvl5', 'lvl4', 'lvl3', 'lvl2', 'lvl1', 'lvl0'] as const;\n\n const deepestLevel = levels.find((level) => hierarchy[level]);\n\n return {\n ...item,\n type: deepestLevel || 'lvl0', // Use the deepest available level as type\n content: null, // Clear content since this represents a section, not specific content\n };\n }, []);\n\n const saveRecentSearch = React.useCallback(\n function saveRecentSearch(item: InternalDocSearchHit) {\n if (disableUserPersonalization) {\n return;\n }\n\n // We don't store `content` record, but their parent if available.\n // If no parent exists, create a synthetic parent from the hierarchy.\n const search = item.type === 'content' ? item.__docsearch_parent || createSyntheticParent(item) : item;\n\n // We save the recent search only if it's not favorited.\n if (search && favoriteSearches.getAll().findIndex((x) => x.objectID === search.objectID) === -1) {\n recentSearches.add(search);\n }\n },\n [favoriteSearches, recentSearches, disableUserPersonalization, createSyntheticParent],\n );\n\n const sendItemClickEvent = React.useCallback(\n (item: InternalDocSearchHit) => {\n if (!state.context.algoliaInsightsPlugin || !item.__autocomplete_id) return;\n\n const insightsItem = item as AlgoliaInsightsHit;\n\n const insightsClickParams = {\n eventName: 'Item Selected',\n index: insightsItem.__autocomplete_indexName,\n items: [insightsItem],\n positions: [item.__autocomplete_id],\n queryID: insightsItem.__autocomplete_queryID,\n };\n\n state.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(insightsClickParams);\n },\n [state.context.algoliaInsightsPlugin],\n );\n\n const autocompleteRef =\n React.useRef<\n ReturnType<\n typeof createAutocomplete<\n InternalDocSearchHit,\n React.FormEvent<HTMLFormElement>,\n React.MouseEvent,\n React.KeyboardEvent\n >\n >\n >(undefined);\n\n const handleSelectAskAiQuestion = React.useCallback(\n (toggle: boolean, query: string) => {\n if (toggle && askAiState === 'new-conversation') {\n // We're starting a new conversation, clear out current messages\n setMessages([]);\n setAskAiState('initial');\n }\n\n onAskAiToggle(toggle);\n setStoppedStream(false);\n sendMessage({\n role: 'user',\n parts: [\n {\n type: 'text',\n text: query,\n },\n ],\n });\n\n if (dropdownRef.current) {\n // some test environments (like jsdom) don't implement element.scrollTo\n const el = dropdownRef.current;\n if (typeof (el as any).scrollTo === 'function') {\n el.scrollTo({ top: 0, behavior: 'smooth' });\n } else {\n // fallback for environments without scrollTo support\n el.scrollTop = 0;\n }\n }\n\n // clear the query\n if (autocompleteRef.current) {\n autocompleteRef.current.setQuery('');\n }\n },\n [onAskAiToggle, sendMessage, askAiState, setAskAiState, setMessages],\n );\n\n // feedback handler\n const handleFeedbackSubmit = React.useCallback(\n async (messageId: string, thumbs: 0 | 1): Promise<void> => {\n if (!askAiConfigurationId || !appId) return;\n const res = await postFeedback({\n assistantId: askAiConfigurationId,\n thumbs,\n messageId,\n appId,\n });\n if (res.status >= 300) throw new Error('Failed, try again later');\n conversations.addFeedback?.(messageId, thumbs === 1 ? 'like' : 'dislike');\n },\n [askAiConfigurationId, appId, conversations],\n );\n\n if (!autocompleteRef.current) {\n autocompleteRef.current = createAutocomplete({\n id: 'docsearch',\n defaultActiveItemId: 0,\n openOnFocus: true,\n initialState: {\n query: initialQuery,\n context: {\n searchSuggestions: [],\n },\n },\n insights: Boolean(insights),\n navigator,\n onStateChange(props) {\n setState(props.state);\n },\n getSources({ query, state: sourcesState, setContext, setStatus }) {\n if (!query) {\n const noQuerySources = buildNoQuerySources({\n recentSearches,\n favoriteSearches,\n saveRecentSearch,\n onClose,\n disableUserPersonalization,\n canHandleAskAi,\n });\n\n const recentConversationSource: Array<AutocompleteSource<InternalDocSearchHit & { messages?: AIMessage[] }>> =\n canHandleAskAi\n ? [\n {\n sourceId: 'recentConversations',\n getItems(): InternalDocSearchHit[] {\n if (disableUserPersonalization) {\n return [];\n }\n return conversations.getAll() as unknown as InternalDocSearchHit[];\n },\n onSelect({ item }): void {\n if (item.messages) {\n setMessages(item.messages as any);\n onAskAiToggle(true);\n }\n },\n },\n ]\n : [];\n return [...noQuerySources, ...recentConversationSource];\n }\n\n const querySourcesState: BuildQuerySourcesState = {\n context: sourcesState.context,\n };\n\n const algoliaSourcesPromise = buildQuerySources({\n query,\n state: querySourcesState,\n setContext,\n setStatus,\n searchClient,\n indexes,\n snippetLength,\n insights: Boolean(insights),\n appId,\n apiKey,\n maxResultsPerGroup,\n transformItems,\n saveRecentSearch,\n onClose,\n });\n\n // Ask AI source\n const askAiSource: Array<AutocompleteSource<InternalDocSearchHit>> = canHandleAskAi\n ? [\n {\n sourceId: 'askAI',\n getItems(): InternalDocSearchHit[] {\n // return a single item representing the Ask AI action\n // placeholder data matching the InternalDocSearchHit structure\n const askItem: InternalDocSearchHit = {\n type: 'askAI',\n query,\n url_without_anchor: '',\n objectID: `ask-ai-button`,\n content: null,\n url: '',\n anchor: null,\n hierarchy: {\n lvl0: 'Ask AI', // Or contextually relevant\n lvl1: query,\n lvl2: null,\n lvl3: null,\n lvl4: null,\n lvl5: null,\n lvl6: null,\n },\n _highlightResult: {} as any,\n _snippetResult: {} as any,\n __docsearch_parent: null,\n };\n return [askItem];\n },\n onSelect({ item }): void {\n if (item.type === 'askAI' && item.query) {\n handleSelectAskAiQuestion(true, item.query);\n }\n },\n },\n ]\n : [];\n // Combine Algolia results (once resolved) with the Ask AI source\n return algoliaSourcesPromise.then((algoliaSources) => {\n return [...askAiSource, ...algoliaSources];\n });\n },\n });\n }\n\n const autocomplete = autocompleteRef.current;\n\n const { getEnvironmentProps, getRootProps, refresh } = autocomplete;\n\n useTouchEvents({\n getEnvironmentProps,\n panelElement: dropdownRef.current,\n formElement: formElementRef.current,\n inputElement: inputRef.current,\n });\n useTrapFocus({ container: containerRef.current });\n useTheme({ theme });\n\n React.useEffect(() => {\n document.body.classList.add('DocSearch--active');\n\n return (): void => {\n document.body.classList.remove('DocSearch--active');\n\n // IE11 doesn't support `scrollTo` so we check that the method exists\n // first.\n window.scrollTo?.(0, initialScrollY);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Proactively manage localStorage quota to prevent crashes\n React.useEffect(() => {\n manageLocalStorageQuota();\n }, []);\n\n React.useLayoutEffect(() => {\n // Calculate the scrollbar width to compensate for removed scrollbar\n const scrollBarWidth = window.innerWidth - document.body.clientWidth;\n // Prevent layout shift by adding appropriate margin to the body\n document.body.style.marginRight = `${scrollBarWidth}px`;\n\n return (): void => {\n document.body.style.marginRight = '0px';\n };\n }, []);\n\n React.useEffect(() => {\n const isMobileMediaQuery = window.matchMedia('(max-width: 768px)');\n\n if (isMobileMediaQuery.matches) {\n snippetLength.current = 5;\n }\n }, []);\n\n React.useEffect(() => {\n if (dropdownRef.current && !isAskAiActive) {\n scrollToUtils(dropdownRef.current);\n }\n }, [state.query, isAskAiActive]);\n\n // We don't focus the input when there's an initial query (i.e. Selection\n // Search) because users rather want to see the results directly, without the\n // keyboard appearing.\n // We therefore need to refresh the autocomplete instance to load all the\n // results, which is usually triggered on focus.\n React.useEffect(() => {\n if (initialQuery.length > 0) {\n refresh();\n\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, [initialQuery, refresh]);\n\n // We rely on a CSS property to set the modal height to the full viewport height\n // because all mobile browsers don't compute their height the same way.\n // See https://css-tricks.com/the-trick-to-viewport-units-on-mobile/\n React.useEffect(() => {\n function setFullViewportHeight(): void {\n if (modalRef.current) {\n const vh = window.innerHeight * 0.01;\n modalRef.current.style.setProperty('--docsearch-vh', `${vh}px`);\n }\n }\n\n setFullViewportHeight();\n\n window.addEventListener('resize', setFullViewportHeight);\n\n return (): void => {\n window.removeEventListener('resize', setFullViewportHeight);\n };\n }, []);\n\n // Refresh the autocomplete results when ask ai is toggled off\n // helps return to the previous ac state and start screen\n React.useEffect(() => {\n if (!isAskAiActive) {\n autocomplete.refresh();\n setMessages([]);\n }\n }, [isAskAiActive, autocomplete, setMessages]);\n\n // Track external state in order to manage internal askAiState\n React.useEffect(() => {\n setAskAiState('initial');\n }, [isAskAiActive, setAskAiState]);\n\n const onStopAskAiStreaming = async (): Promise<void> => {\n setStoppedStream(true);\n\n await stopAskAiStreaming();\n };\n\n const handleNewConversation = (): void => {\n setAskAiState('new-conversation');\n };\n\n const handleViewConversationHistory = (): void => {\n setAskAiState('conversation-history');\n };\n\n // hide the dropdown on idle and no collections\n let showDocsearchDropdown = true;\n const hasCollections = state.collections.some((collection) => collection.items.length > 0);\n if (state.status === 'idle' && hasCollections === false && state.query.length === 0 && !isAskAiActive) {\n showDocsearchDropdown = false;\n }\n\n return (\n <div\n ref={containerRef}\n {...getRootProps({ 'aria-expanded': true })}\n className={[\n 'DocSearch',\n 'DocSearch-Container',\n state.status === 'stalled' && 'DocSearch-Container--Stalled',\n state.status === 'error' && 'DocSearch-Container--Errored',\n ]\n .filter(Boolean)\n .join(' ')}\n role=\"button\"\n tabIndex={0}\n onMouseDown={(event) => {\n if (event.target === event.currentTarget) {\n onClose();\n }\n }}\n >\n <div className=\"DocSearch-Modal\" ref={modalRef}>\n <header className=\"DocSearch-SearchBar\" ref={formElementRef}>\n <SearchBox\n {...autocomplete}\n state={state}\n placeholder={placeholder || 'Search docs'}\n autoFocus={initialQuery.length === 0}\n inputRef={inputRef}\n isFromSelection={Boolean(initialQuery) && initialQuery === initialQueryFromSelection}\n translations={searchBoxTranslations}\n isAskAiActive={isAskAiActive}\n askAiStatus={status}\n askAiState={askAiState}\n setAskAiState={setAskAiState}\n onClose={onClose}\n onAskAiToggle={onAskAiToggle}\n onAskAgain={(query) => {\n handleSelectAskAiQuestion(true, query);\n }}\n onStopAskAiStreaming={onStopAskAiStreaming}\n onNewConversation={handleNewConversation}\n onViewConversationHistory={handleViewConversationHistory}\n />\n </header>\n\n {showDocsearchDropdown && (\n <div className=\"DocSearch-Dropdown\" ref={dropdownRef}>\n <ScreenState\n {...autocomplete}\n indexName={defaultIndexName}\n state={state}\n hitComponent={hitComponent}\n resultsFooterComponent={resultsFooterComponent}\n disableUserPersonalization={disableUserPersonalization}\n recentSearches={recentSearches}\n favoriteSearches={favoriteSearches}\n conversations={conversations}\n inputRef={inputRef}\n translations={screenStateTranslations}\n getMissingResultsUrl={getMissingResultsUrl}\n isAskAiActive={isAskAiActive}\n canHandleAskAi={canHandleAskAi}\n messages={messages}\n askAiStreamError={askAiStreamError}\n askAiFetchError={askAiFetchError}\n status={status}\n hasCollections={hasCollections}\n askAiState={askAiState}\n selectAskAiQuestion={handleSelectAskAiQuestion}\n onAskAiToggle={onAskAiToggle}\n onItemClick={(item, event) => {\n // if the item is askAI toggle the screen\n if (item.type === 'askAI' && item.query) {\n // if the item is askAI and the anchor is stored\n if (item.anchor === 'stored' && 'messages' in item) {\n setMessages(item.messages as any);\n onAskAiToggle(true);\n } else {\n handleSelectAskAiQuestion(true, item.query);\n }\n setAskAiState('initial');\n event.preventDefault();\n return;\n }\n\n // If insights is active, send insights click event\n sendItemClickEvent(item);\n\n saveRecentSearch(item);\n if (!isModifierEvent(event)) {\n onClose();\n }\n }}\n onFeedback={handleFeedbackSubmit}\n />\n </div>\n )}\n <footer className=\"DocSearch-Footer\">\n <Footer translations={footerTranslations} isAskAiActive={isAskAiActive} />\n </footer>\n </div>\n </div>\n );\n}\n","import React from 'react';\n\ninterface UseTrapFocusProps {\n container: HTMLElement | null;\n}\n\nexport function useTrapFocus({ container }: UseTrapFocusProps): void {\n React.useEffect(() => {\n if (!container) {\n return undefined;\n }\n\n const focusableElements = container.querySelectorAll<HTMLElement>(\n 'a[href]:not([disabled]), button:not([disabled]), input:not([disabled])',\n );\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n function trapFocus(event: KeyboardEvent): void {\n if (event.key !== 'Tab') {\n return;\n }\n\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n\n container.addEventListener('keydown', trapFocus);\n\n return (): void => {\n container.removeEventListener('keydown', trapFocus);\n };\n }, [container]);\n}\n","import type { AutocompleteApi } from '@algolia/autocomplete-core';\nimport React from 'react';\n\ninterface UseTouchEventsProps {\n getEnvironmentProps: AutocompleteApi<any>['getEnvironmentProps'];\n panelElement: HTMLDivElement | null;\n formElement: HTMLDivElement | null;\n inputElement: HTMLInputElement | null;\n}\n\nexport function useTouchEvents({\n getEnvironmentProps,\n panelElement,\n formElement,\n inputElement,\n}: UseTouchEventsProps): void {\n React.useEffect(() => {\n if (!(panelElement && formElement && inputElement)) {\n return undefined;\n }\n\n const { onTouchStart, onTouchMove } = getEnvironmentProps({\n panelElement,\n formElement,\n inputElement,\n });\n\n window.addEventListener('touchstart', onTouchStart);\n window.addEventListener('touchmove', onTouchMove);\n\n return (): void => {\n window.removeEventListener('touchstart', onTouchStart);\n window.removeEventListener('touchmove', onTouchMove);\n };\n }, [getEnvironmentProps, panelElement, formElement, inputElement]);\n}\n","import { useEffect } from 'react';\n\nimport type { DocSearchTheme } from './types';\n\nexport interface UseThemeProps {\n theme?: DocSearchTheme;\n}\n\nexport const useTheme = ({ theme }: UseThemeProps): void => {\n useEffect(() => {\n if (theme) {\n const previousTheme = document.documentElement.dataset.theme;\n if (theme !== previousTheme) {\n document.documentElement.dataset.theme = theme;\n return (): void => {\n if (previousTheme === undefined) delete document.documentElement.dataset.theme;\n else document.documentElement.dataset.theme = previousTheme;\n };\n }\n }\n return undefined;\n }, [theme]);\n};\n","export function scrollTo(el: HTMLElement): void {\n // some test environments (like jsdom) don't implement element.scrollTo\n if (typeof el.scrollTo === 'function') {\n el.scrollTo({ top: 0, behavior: 'smooth' });\n } else {\n // fallback for environments without scrollTo support\n el.scrollTop = 0;\n }\n}\n"],"names":["_a","marker","symbol","Symbol","for","_AISDKError","Error","constructor","name","name14","message","cause","super","this","isInstance","error","hasMarker","marker15","markerSymbol","AISDKError","getErrorMessage","JSON","stringify","_a4","name3","marker4","symbol4","InvalidArgumentError","argument","_a7","name6","marker7","symbol7","JSONParseError","text","_a13","name12","marker13","symbol13","TypeValidationError","_TypeValidationError","value","wrap","ParseError","_Error","options","_this","_classCallCheck","_callSuper","type","field","line","_inherits","_createClass","_wrapNativeSuper","EventSourceParserStream","_TransformStream","parser","_ref","arguments","length","undefined","onError","onRetry","onComment","start","controller","createParser","onEvent","event","enqueue","transform","chunk","feed","TransformStream","$constructor","initializer","params","_params$Parent","init","inst","def","_inst$_zod","_a$traits","k","Object","defineProperty","_zod","enumerable","traits","Set","add","_","prototype","bind","constr","Definition","_Parent","Parent","_a$deferred","deferred","_step","_iterator","_createForOfIteratorHelper","s","n","done","fn","err","e","f","hasInstance","_inst$_zod2","has","$ZodAsyncError","$ZodEncodeError","_Error2","concat","globalConfig","config","newConfig","getEnumValues","entries","numericValues","values","filter","v","_ref2","_slicedToArray","indexOf","map","_ref3","_ref4","jsonStringifyReplacer","toString","cached","getter","nullish","input","cleanRegex","source","startsWith","end","endsWith","slice","EVALUATING","defineLazy","object","key","get","set","configurable","objectClone","obj","create","getPrototypeOf","getOwnPropertyDescriptors","assignProp","target","prop","writable","mergeDefs","mergedDescriptors","_len","defs","Array","_key","_i","_defs","descriptors","assign","defineProperties","esc","str","captureStackTrace","isObject","data","_typeof","isArray","allowsEval","_navigator","navigator","userAgent","includes","Function","isPlainObject","o","ctor","prot","hasOwnProperty","call","shallowClone","_objectSpread","_toConsumableArray","propertyKeyTypes","escapeRegex","replace","clone","cl","parent","normalizeParams","_params","NUMBER_FORMAT_RANGES","safeint","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","int32","uint32","float32","float64","MAX_VALUE","aborted","x","startIndex","i","issues","_x$issues$i","continue","prefixIssues","path","iss","_a$path","unshift","unwrapMessage","finalizeIssue","ctx","_iss$path","full","_ref5","_ref6","_ref7","_unwrapMessage","_iss$inst","_iss$inst$error","_ctx$error","_config$customError","_config$localeError","customError","localeError","reportInput","getSizableOrigin","Map","File","getLengthableOrigin","issue","_len2","args","_key4","code","util","$ZodError","$ZodRealError","_parse","_Err","schema","_ctx","async","result","run","Promise","core","_params$Err","Err","callee","_parseAsync","_asyncToGenerator","_regenerator","m","_callee","_params$Err2","w","_context","a","_x","_x2","_x3","_x4","apply","_safeParse","success","errors","safeParse","_safeParseAsync","_callee2","_context2","_x5","_x6","_x7","safeParseAsync","_encode","direction","_decode","_encodeAsync","_callee3","_context3","_x8","_x9","_x0","_decodeAsync","_callee4","_context4","_x1","_x10","_x11","_safeEncode","_safeDecode","_safeEncodeAsync","_callee5","_context5","_x12","_x13","_x14","_safeDecodeAsync","_callee6","_context6","_x15","_x16","_x17","cuid","cuid2","ulid","xid","ksuid","nanoid","duration","guid","uuid","version","RegExp","email","ipv4","ipv6","cidrv4","cidrv6","base64","base64url","hostname","e164","dateSource","date","timeSource","hhmm","precision","integer","number","boolean","_null","lowercase","uppercase","$ZodCheck","_a$onattach","onattach","numericOriginMap","bigint","$ZodCheckLessThan","origin","push","bag","curr","inclusive","maximum","exclusiveMaximum","POSITIVE_INFINITY","check","payload","abort","$ZodCheckGreaterThan","minimum","exclusiveMinimum","NEGATIVE_INFINITY","$ZodCheckMultipleOf","_a$multipleOf","multipleOf","BigInt","val","step","valDecCount","split","stepString","stepDecCount","test","match","parseInt","decCount","toFixed","Math","pow","divisor","$ZodCheckNumberFormat","_def$format","format","isInt","_util$NUMBER_FORMAT_R","pattern","regexes","isInteger","expected","isSafeInteger","note","$ZodCheckMaxSize","_a$when","when","size","_inst$_zod$bag$maximu","$ZodCheckMinSize","_a$when2","_inst$_zod$bag$minimu","$ZodCheckSizeEquals","_a$when3","tooBig","exact","$ZodCheckMaxLength","_a$when4","_inst$_zod$bag$maximu2","$ZodCheckMinLength","_a$when5","_inst$_zod$bag$minimu2","$ZodCheckLengthEquals","_a$when6","$ZodCheckStringFormat","_a$check","_b$check","_b","_bag$patterns","patterns","lastIndex","$ZodCheckRegex","$ZodCheckLowerCase","_def$pattern","$ZodCheckUpperCase","_def$pattern2","$ZodCheckIncludes","escapedRegex","position","_bag$patterns2","$ZodCheckStartsWith","_def$pattern3","prefix","_bag$patterns3","$ZodCheckEndsWith","_def$pattern4","suffix","_bag$patterns4","handleCheckPropertyResult","property","_payload$issues","$ZodCheckProperty","then","$ZodCheckMimeType","mimeSet","mime","$ZodCheckOverwrite","tx","Doc","content","indent","arg","execution","lines","minIndent","min","trimStart","repeat","_this$content","F","_construct","join","major","minor","patch","$ZodType","_inst$_zod$def$checks","checks","_step3","_iterator3","_inst$_zod$deferred","parse","runChecks","asyncResult","_step2","isAborted","_iterator2","_loop","ch","currLen","resolve","handleCanaryResult","canary","checkResult","skipChecks","validate","_r$error","r","_r$error2","vendor","$ZodString","_pop","_inst$_zod$bag$patter","_inst$_zod$bag","pop","_params$minimum","_params$maximum","regex","coerce","String","$ZodStringFormat","$ZodGUID","$ZodUUID","v1","v2","v3","v4","v5","v6","v7","v8","$ZodEmail","$ZodURL","trimmed","trim","url","URL","protocol","normalize","href","$ZodEmoji","_def$pattern5","$ZodNanoID","_def$pattern6","$ZodCUID","_def$pattern7","$ZodCUID2","_def$pattern8","$ZodULID","_def$pattern9","$ZodXID","_def$pattern0","$ZodKSUID","_def$pattern1","$ZodISODateTime","_def$pattern10","time","opts","local","offset","timeRegex","$ZodISODate","_def$pattern11","$ZodISOTime","_def$pattern12","$ZodISODuration","_def$pattern13","$ZodIPv4","_def$pattern14","$ZodIPv6","_def$pattern15","_unused","$ZodCIDRv4","_def$pattern16","$ZodCIDRv6","_def$pattern17","parts","_parts","address","prefixNum","_unused2","isValidBase64","atob","_unused3","$ZodBase64","_def$pattern18","contentEncoding","$ZodBase64URL","_def$pattern19","c","padEnd","ceil","isValidBase64URL","$ZodE164","_def$pattern20","$ZodJWT","token","algorithm","tokensParts","header","parsedHeader","typ","alg","_unused4","isValidJWT","$ZodNumber","_inst$_zod$bag$patter2","isNaN","isFinite","received","$ZodNumberFormat","$ZodBoolean","Boolean","$ZodNull","$ZodUnknown","$ZodNever","handleArrayResult","final","index","_final$issues","$ZodArray","proms","_loop2","item","element","all","handlePropertyResult","_final$issues2","normalizeDef","keys","shape","_keys","_def$shape","okeys","optin","optout","keySet","numKeys","optionalKeys","handleCatchall","unrecognized","_catchall","catchall","t","_loop3","_Object$keys","_i2","$ZodObject","_normalized","propValues","_propValues$key","_step4","_iterator4","_step5","_iterator5","_loop4","$ZodObjectJIT","fastpass","superParse","jit","jitless","fastEnabled","doc","normalized","parseStr","write","_step6","ids","counter","_iterator6","_step7","_iterator7","id","compile","generateFastpass","handleUnionResults","results","_step8","_iterator8","nonaborted","$ZodUnion","some","every","flatMap","option","from","p","single","first","_step9","_iterator9","$ZodDiscriminatedUnion","_super","_step0","_iterator0","pv","_i3","_Object$entries","_Object$entries$_i","_step1","_iterator1","disc","_step10","_iterator10","_o$_zod$propValues","discriminator","_step11","_iterator11","opt","unionFallback","$ZodIntersection","left","right","handleIntersectionResults","mergeValues","b","valid","Date","_step12","bKeys","sharedKeys","newObj","_iterator12","sharedValue","mergeErrorPath","newArray","_result$issues","_result$issues2","merged","$ZodRecord","keyType","_step15","_iterator15","_loop5","valueType","_payload$issues2","_step16","_iterator16","Reflect","ownKeys","_loop6","keyResult","_payload$issues3","_payload$issues4","$ZodEnum","valuesSet","$ZodLiteral","$ZodTransform","_out","output","handleOptionalResult","$ZodOptional","innerType","$ZodNullable","$ZodDefault","defaultValue","handleDefaultResult","$ZodPrefault","$ZodNonOptional","handleNonOptionalResult","$ZodCatch","catchValue","$ZodPipe","in","out","handlePipeResult","next","$ZodReadonly","handleReadonlyResult","freeze","$ZodLazy","_inst$_zod$innerType$","_inst$_zod$innerType$2","$ZodCustom","handleRefineResult","_inst$_zod$def$path","_iss","$ZodRegistry","_map","WeakMap","_idmap","meta","delete","_this$get","pm","registry","globalRegistry","_guid","Class","_base64","_lt","_lte","_gt","_gte","_multipleOf","_maxLength","_minLength","_length","_regex","_lowercase","_uppercase","_includes","_startsWith","_endsWith","_overwrite","_normalize","form","_trim","_toLowerCase","toLowerCase","_toUpperCase","toUpperCase","_superRefine","_check","addIssue","_issue$code","_issue$input","_issue$inst","_issue$continue","_issue","fatal","JSONSchemaGenerator","_params$metadata","_params$target","_params$unrepresentab","_params$override","_params$io","metadataRegistry","metadata","unrepresentable","override","io","seen","_schema$_zod$toJSONSc","_schema$_zod","_a$default","schemaPath","count","cycle","overrideSchema","toJSONSchema","ref","process","isParent","_json","json","_formatMap$format","_schema$_zod$bag","minLength","maxLength","datetime","json_string","allOf","_schema$_zod$bag2","nullable","enum","not","_schema$_zod$bag3","minItems","maxItems","items","_def$catchall","properties","allKeys","requiredKeys","required","additionalProperties","anyOf","isSimpleIntersection","prefixPath","restPath","prefixItems","rest","additionalItems","_schema$_zod$bag4","propertyNames","vals","const","file","_schema$_zod$bag5","contentMediaType","inner","default","_prefault","readOnly","isTransforming","examples","_params$cycles","_params$reused","_params$external","_params$external2","_params$external$defs","_params$external3","_this2","cycles","reused","external","root","extractToDef","entry","$ref","_makeURI","_entry$1$schema$id","defsSegment","_params$external$regi","_params$external$uri","_entry$1$defId","externalId","uriGenerator","uri","defId","defUriPrefix","makeURI","_seen$cycle","_this$metadataRegistr","_params$external$regi3","ext","flattenRef","zodSchema","_seen$def","_seen$path","_cached","_schema$allOf","refSchema","jsonSchema","reverse","$schema","console","warn","_params$external$regi2","$id","$defs","definitions","_err","_schema","types","ZodISODateTime","schemas","ZodISODate","ZodISOTime","ZodISODuration","ZodRealError","mapper","_mapper","fieldErrors","_errors","processError","el","flatten","formErrors","sub","addIssues","_inst$issues","isEmpty","parseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","ZodType","_def$checks","brand","register","reg","spa","refine","ZodCustom","superRefine","refinement","overwrite","optional","nonoptional","ZodNonOptional","array","or","union","and","ZodIntersection","pipe","ZodTransform","ZodDefault","prefault","ZodPrefault","catch","ZodCatch","readonly","ZodReadonly","describe","description","_core$globalRegistry$","isOptional","isNullable","_ZodString","_bag$format","_bag$minimum","_bag$maximum","max","nonempty","_key2","ZodString","ZodEmail","ZodURL","jwt","ZodJWT","emoji","ZodEmoji","ZodGUID","ZodUUID","uuidv4","uuidv6","uuidv7","ZodNanoID","ZodCUID","ZodCUID2","ZodULID","ZodBase64","ZodBase64URL","ZodXID","ZodKSUID","ZodIPv4","ZodIPv6","ZodCIDRv4","ZodCIDRv6","ZodE164","iso","string","ZodStringFormat","ZodNumber","_Math$max","_bag$minimum2","_bag$exclusiveMinimum","_Math$min","_bag$maximum2","_bag$exclusiveMaximum","_bag$format2","_bag$multipleOf","_bag$format3","gt","gte","lt","lte","int","safe","positive","nonnegative","negative","nonpositive","finite","minValue","maxValue","ZodNumberFormat","ZodBoolean","ZodNull","ZodUnknown","unknown","ZodNever","never","ZodArray","len","unwrap","ZodObject","keyof","_enum","passthrough","loose","strict","strip","extend","incoming","_shape","safeExtend","merge","other","pick","mask","currDef","newShape","omit","partial","oldShape","ZodOptional","strictObject","looseObject","ZodUnion","ZodDiscriminatedUnion","ZodRecord","record","ZodEnum","extract","newEntries","exclude","fromEntries","ZodLiteral","literal","ZodNullable","removeDefault","removeCatch","ZodPipe","in_","ZodLazy","objectUtil","_instanceof","cls","assertEqual","assertIs","_arg","assertNever","arrayToEnum","getValidEnumValues","validKeys","objectKeys","filtered","objectValues","find","arr","checker","floor","joinValues","separator","mergeShapes","second","ZodParsedType","getParsedType","nan","function","null","promise","ZodIssueCode","ZodError","subs","actualProto","setPrototypeOf","__proto__","unionErrors","returnTypeError","argumentsError","firstEl","errorMap","invalid_type","invalid_literal","unrecognized_keys","invalid_union","invalid_union_discriminator","invalid_enum_value","invalid_arguments","invalid_return_type","invalid_date","invalid_string","validation","too_small","too_big","custom","invalid_intersection_types","not_multiple_of","not_finite","defaultError","overrideErrorMap","defaultErrorMap","getErrorMap","makeIssue","errorMaps","issueData","fullPath","fullIssue","errorMessage","maps","addIssueToContext","overrideMap","common","contextualErrorMap","schemaErrorMap","errorUtil","ParseStatus","status","arrayValue","INVALID","dirty","_mergeObjectAsync","pairs","syncPairs","pair","_t","mergeObjectSync","finalObject","alwaysSet","DIRTY","OK","isDirty","isValid","isAsync","errToObj","ParseInputLazyPath","_cachedPath","_path","_this$_cachedPath","_this$_cachedPath2","handleResult","_error","processCreateParams","invalid_type_error","required_error","emojiRegex","_def","parsedType","_params$async","_parseSync","_err$message","_parseAsync2","maybeAsyncResult","_refinement","setError","getIssueProperties","refinementData","ZodEffects","typeName","ZodFirstPartyTypeKind","effect","ZodPromise","defaultValueFunc","ZodBranded","catchValueFunc","This","ZodPipeline","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","nanoidRegex","jwtRegex","durationRegex","emailRegex","ipv4Regex","ipv4CidrRegex","ipv6Regex","ipv6CidrRegex","base64Regex","base64urlRegex","dateRegexSource","dateRegex","timeRegexSource","secondsRegexSource","secondsQuantifier","datetimeRegex","isValidIP","ip","decoded","isValidCidr","_ZodType","_getType","_getOrReturnCtx","kind","tooSmall","_addCheck","_options$offset","_options$local","floatSafeRemainder","_params$coerce","_ZodType2","setLimit","ZodBigInt","_ZodType3","_this3","_getInvalidInput","_params$coerce2","_ZodType4","ZodDate","_ZodType5","getTime","minDate","maxDate","ZodSymbol","_ZodType6","ZodUndefined","_ZodType7","_ZodType8","ZodAny","_ZodType9","_this4","_any","_ZodType0","_this5","_unknown","_ZodType1","ZodVoid","_ZodType10","void","_ZodType11","_this$_processInputPa","_processInputParams","exactLength","mergeArray","deepPartialify","fieldSchema","ZodTuple","_ZodType12","_this6","nonstrict","augment","_this$_processInputPa2","_this$_getCached","_getCached","shapeKeys","extraKeys","unknownKeys","keyValidator","_step13","_iterator13","_step14","_iterator14","_key3","_value","_this7","_this7$_def$errorMap$","_this7$_def$errorMap","_this7$_def","_errorUtil$errToObj$m","augmentation","_this8","merging","_this9","_defineProperty","_step17","_iterator17","_step18","_iterator18","_step19","_iterator19","newField","createZodEnum","strictCreate","lazycreate","_ZodType13","childCtx","_t2","_t3","_step20","_iterator20","_step21","_iterator21","_ctx$common$issues","_step22","_ctx$common$issues2","_iterator22","getDiscriminator","ZodNativeEnum","_ZodType14","discriminatorValue","optionsMap","_step23","_iterator23","discriminatorValues","_step24","_iterator24","aType","bType","_step25","_iterator25","_ZodType15","_this$_processInputPa5","handleParsed","parsedLeft","parsedRight","_ZodType16","_this0","_this$_processInputPa6","itemIndex","_ZodType17","_this$_processInputPa7","mergeObjectAsync","third","ZodMap","_ZodType18","_this$_processInputPa8","_ref8","finalMap","_iterator26","_step26","_t4","_step27","_iterator27","ZodSet","_ZodType19","_this$_processInputPa9","minSize","maxSize","finalizeSet","elements","_step28","parsedSet","_iterator28","ZodFunction","_ZodType20","_this1","implement","makeArgsIssue","makeReturnsIssue","returns","me","_key5","parsedArgs","parsedReturns","_args6","_key6","_len3","_key7","returnType","func","_ZodType21","_ZodType22","_ZodType23","expectedValues","_cache","_step29","enumValues","_iterator29","_step30","_iterator30","_step31","_iterator31","newDef","_ZodType24","nativeEnumValues","_ZodType25","_this10","promisified","_ZodType26","sourceType","_this11","_this$_processInputPa11","checkCtx","processed","_ref1","_callee7","_context7","executeRefinement","acc","base","createWithPreprocess","preprocess","_ZodType27","_ZodType28","_ZodType29","_ZodType30","_this12","newCtx","ZodNaN","_ZodType31","_ZodType32","_ZodType33","_this13","_this$_processInputPa15","handleAsync","_ref10","_callee8","inResult","_context8","_ZodType34","getRuntimeEnvironmentUserAgent","globalThisAny","globalThis","_c","window","versions","node","substring","EdgeRuntime","withUserAgentSuffix","headers","userAgentSuffixParts","cleanedHeaders","removeUndefinedEntries","normalizedHeaders","Headers","currentUserAgentHeader","createIdGenerator","alphabet","generator","alphabetLength","chars","random","generateId","suspectProtoRx","suspectConstructorRx","nodes","SyntaxError","validatorSymbol","asValidator","isValidator","standardSchema","validateTypes","safeValidateTypes","TypeValidationError2","validator2","rawValue","safeParseJSON","stackTraceLimit","secureJsonParse","getRelativePath","pathA","pathB","ignoreOverride","defaultOptions","$refStrategy","basePath","effectStrategy","pipeStrategy","dateStrategy","mapStrategy","removeAdditionalStrategy","allowedAdditionalProperties","rejectedAdditionalProperties","definitionPath","strictUnions","errorMessages","patternStrategy","applyRegexFlags","emailStrategy","base64Strategy","nameStrategy","parseBrandedDef","refs","parseDef","parseDateDef","overrideDateStrategy","strategy","integerDateParser","res","zodPatterns","parseStringDef","addFormat","addPattern","escapeLiteralCheckValue","ALPHA_NUMERIC","escapeNonAlphaNumeric","stringifyRegExpWithFlags","flags","isEscaped","inCharGroup","inCharRange","currentPath","parseRecordDef","_d","_e","_f","ZodFirstPartyTypeKind2","primitiveMappings","asAnyOf","parseObjectDef","propName","propDef","propOptional","safeIsOptional","parsedDef","propertyPath","decideAdditionalProperties","selectParser","ZodFirstPartyTypeKind3","parseNumberDef","parseBigintDef","parseArrayDef","reduce","types2","uniqueTypes","x2","parseUnionDef","mergedAllOf","forEach","nestedSchema","parseIntersectionDef","parseTupleDef","parseLiteralDef","parseEnumDef","actualValues","parsedTypes","parseNativeEnumDef","parseNullableDef","innerSchema","parseOptionalDef","parseMapDef","uniqueItems","parseSetDef","parsePromiseDef","parseEffectsDef","parseDefaultDef","parseCatchDef","parsePipelineDef","forceResolution","seenItem","overrideResult","seenSchema","get$ref","newItem","jsonSchemaOrGetter","jsonSchema2","addMeta","postProcess","postProcessResult","getRefs","_options","getDefaultOptions","zod_to_json_schema_default","name2","schema2","_a2","main","title","combined","zod4Schema","zodSchema2","useReferences","gen","_entry4","_entry6","emit","__shared","z4.toJSONSchema","z4.safeParseAsync","isZod4Schema","zod3Schema","schemaSymbol","_type","asSchema","__defProp","name7","NoObjectGeneratedError","AISDKError7","text2","response","usage","finishReason","VERSION","dataContentSchema","z.union","z.string","z.instanceof","Uint8Array","ArrayBuffer","_a17","Buffer","isBuffer","_norm$abort","norm","jsonValueSchema","z2.union","z2.null","z2.string","z2.number","z2.boolean","z2.record","z2.array","providerMetadataSchema","z3.record","z3.string","textPartSchema","z4.object","z4.literal","z4.string","providerOptions","imagePartSchema","image","z4.union","z4.instanceof","mediaType","filePartSchema","filename","reasoningPartSchema","toolCallPartSchema","toolCallId","toolName","z4.unknown","providerExecuted","z4.boolean","outputSchema","z4.array","toolResultPartSchema","systemModelMessageSchema","z5.object","role","z5.literal","z5.string","userModelMessageSchema","z5.union","z5.array","assistantModelMessageSchema","uiMessageChunkSchema","z7.union","z7.strictObject","z7.literal","z7.string","providerMetadata","delta","errorText","z7.boolean","dynamic","inputTextDelta","z7.unknown","preliminary","sourceId","transient","messageId","messageMetadata","mergeObjects","overrides","overridesValue","baseValue","isSourceObject","isTargetObject","fixJson","stack","lastValidIndex","literalStart","processValueStart","char","swapState","processAfterObjectValue","processAfterArrayValue","partialLiteral","parsePartialJson","jsonText","state","safeParseJSON2","isToolUIPart","part","isToolOrDynamicToolUIPart","isDynamicToolUIPart","getToolName","createStreamingUIMessageState","lastMessage","activeTextParts","activeReasoningParts","partialToolCalls","processUIMessageStream","stream","messageMetadataSchema","dataPartSchemas","runUpdateMessageJob","onToolCall","onData","pipeThrough","getToolInvocation","toolInvocation","invocation","getDynamicToolInvocation","updateToolPart","_a18","part2","anyOptions","anyPart","rawInput","callProviderMetadata","updateDynamicToolPart","updateMessageMetadata","mergedMetadata","textPart","reasoningPart","toolInvocations","partialToolCall","partialArgs","toolCall","isDataUIMessageChunk","dataChunk","existingUIPart","chunkArg","createIdGenerator2","SerialJobExecutor","queue","isProcessing","processQueue","shift","job","resolve2","reject","name17","__export","responseFormat","inputSchema","asSchema4","parsePartial","_exhaustiveCheck","parseOutput","context","parseResult","safeParseJSON4","validationResult","safeValidateTypes4","ClientOrServerImplementationSchema","z8.looseObject","z8.string","BaseParamsSchema","_meta","z8.optional","z8.object","ResultSchema","RequestSchema","method","ServerCapabilitiesSchema","experimental","logging","prompts","listChanged","z8.boolean","resources","subscribe","tools","protocolVersion","capabilities","serverInfo","instructions","PaginatedResultSchema","nextCursor","ToolSchema","z8.literal","z8.array","TextContentSchema","ImageContentSchema","z8.base64","mimeType","ResourceContentsSchema","TextResourceContentsSchema","BlobResourceContentsSchema","blob","EmbeddedResourceSchema","resource","z8.union","isError","toolResult","z8.unknown","JSONRPC_VERSION","JSONRPCRequestSchema","z9.object","jsonrpc","z9.literal","z9.union","z9.string","z9.number","JSONRPCResponseSchema","JSONRPCErrorSchema","z9.optional","z9.unknown","HttpChatTransport","api","credentials","body","fetch","fetch2","prepareSendMessagesRequest","prepareReconnectToStreamRequest","sendMessages","abortSignal","resolvedBody","resolvedHeaders","resolvedCredentials","preparedRequest","chatId","messages","requestMetadata","trigger","withUserAgentSuffix11","getRuntimeEnvironmentUserAgent4","signal","ok","processResponseStream","reconnectToStream","DefaultChatTransport","TextDecoderStream","parseJsonEventStream2","AbstractChat","generateId3","generateIdFunc","transport","onFinish","sendAutomaticallyWhen","activeResponse","jobExecutor","sendMessage","makeRequest","uiMessage","fileParts","files","FileList","reader","FileReader","onload","readerEvent","onerror","readAsDataURL","convertFileListToFileUIParts","messageIndex","findIndex","replaceMessage","pushMessage","regenerate","resumeStream","clearError","setStatus","addToolResult","tool","tool3","stop","abortController","isAbort","isDisconnect","snapshot","AbortController","addEventListener","reconnect","getReader","read","releaseLock","consumeStream","TypeError","lastAssistantMessageIsCompleteWithToolCalls","lastStepStartIndex","lastStepToolInvocations","textUIPartSchema","z10.object","z10.literal","z10.string","z10.enum","reasoningUIPartSchema","sourceUrlUIPartSchema","sourceDocumentUIPartSchema","fileUIPartSchema","stepStartUIPartSchema","dataUIPartSchema","z10.unknown","dynamicToolUIPartSchemas","z10.never","z10.boolean","toolUIPartSchemas","throttleit","function_","wait","timeoutId","lastCallTime","arguments_","clearTimeout","now","delayForNextCall","setTimeout","z10.array","z10.union","_messages","_status","_messagesCallbacks","_statusCallbacks","_errorCallbacks","_callMessagesCallbacks","_callStatusCallbacks","_callErrorCallbacks","__accessCheck","member","msg","__privateGet","__privateAdd","WeakSet","__privateSet","setter","_state","ReactChatState","initialMessages","popMessage","structuredClone","onChange","throttleWaitMs","callback","waitMs","throttleFunction","throttle","newStatus","newError","newMessages","Chat","debounce","timerId","autocompleteId","getItemsCount","collections","sum","collection","isPrimitive","isEqual","noop","userAgents","segment","createClickedEvent","_ref$items","__autocomplete_indexName","positions","objectID","queryID","__autocomplete_queryID","algoliaSource","_arrayWithHoles","iterator","_s","_r","_arr","_n","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","_excluded","_excluded2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","mapToInsightsParamsApi","param","objectIDs","createSearchInsightsApi","searchInsights","_split$map2","canSendHeaders","sendToInsights","payloads","_items$0$__autocomple","__autocomplete_algoliaCredentials","appId","apiKey","setAuthenticatedUserToken","authenticatedUserToken","setUserToken","userToken","clickedObjectIDsAfterSearch","clickedObjectIDs","clickedFilters","convertedObjectIDsAfterSearch","_len4","convertedObjectIDs","_len5","convertedFilters","_len6","viewedObjectIDs","_len7","chunkSize","chunks","viewedFilters","_len8","_key8","createViewedEvents","itemsByIndexName","current","_acc$current$__autoco","indexName","isAlgoliaInsightsHit","hit","ALGOLIA_INSIGHTS_VERSION","ALGOLIA_INSIGHTS_SRC","sendViewedObjectIDs","onItemsChange","insights","insightsEvents","eventName","createAlgoliaInsightsPlugin","_getOptions","getAlgoliaSources","onSelect","_ref9","onActive","__autocomplete_clickAnalytics","getOptions","providedInsightsClient","insightsClient","insightsInitParams","onSelectEvent","onActiveEvent","safelyRunOnBrowser","pointer","AlgoliaAnalyticsObject","environment","script","document","createElement","src","appendChild","loadInsights","previousItems","debouncedOnStateChange","isOpen","setContext","setInsightsContext","algoliaInsightsPlugin","__algoliaSearchParameters","clickAnalytics","normalizeUserToken","getItems","onStateChange","__autocomplete_pluginOptions","_context$algoliaInsig","__automaticInsights","createInternalCancelablePromise","initialState","onfulfilled","onrejected","createCallback","finally","onfinally","onCancelList","cancel","isCanceled","callbacks","cancelable","onResult","fallback","_waitPromise","_hasWaitPromiseResolved","getNextActiveItemId","moveAmount","baseIndex","itemCount","defaultActiveItemId","numericIndex","allowArrayLike","it","normalCompletion","didErr","_e2","getPluginSubmitPromise","plugins","pendingRequests","waitUntilComplete","timeouts","_plugin$__autocomplet","_plugin$__autocomplet2","_plugin$__autocomplet3","awaitSubmit","getActiveItem","collectionIndex","collectionsCount","nextValue","activeItemId","getCollectionFromActiveItemId","isOffsetFound","previousItemsOffset","currentCollection","getRelativeActiveItemId","itemInputValue","getItemInputValue","itemUrl","getItemUrl","getAutocompleteElementId","autocompleteInstanceId","elementId","getNativeEvent","nativeEvent","createStore","reducer","props","onStoreStateChange","list","getState","dispatch","action","prevState","cancelablePromise","cancelAll","timeout","race","getDefaultProps","pluginSubscribers","_props$id","debug","openOnFocus","enterKeyHint","ignoreCompositionEvents","placeholder","autoFocus","stallThreshold","shouldPanelOpen","reshape","sources","query","completion","_props$onStateChange","_x$onStateChange","onSubmit","_props$onSubmit","_x$onSubmit","onReset","_props$onReset","_x$onReset","getSources","plugin","seenSourceIds","maybeSource","defaultSource","setIsOpen","onResolve","__default","normalizedSource","getNormalizedSources","nested","_x$onSelect","_x$onActive","_x$onResolve","navigate","location","navigateNewTab","windowReference","open","focus","navigateNewWindow","isDescription","execute","preResolve","itemsOrDescription","contextParameters","requesterId","_state$context$key","requests","queries","transformResponse","searchClient","container","_container$items","request","maybeDescription","responses","postResolve","store","rawResults","matches","hits","facetHits","_facetHits","facetHit","label","_highlightResult","highlighted","basePromiseId","latestResolvedId","latestResolvedValue","lastStalledId","runConcurrentSafePromise","currentPromiseId","onInput","_ref$nextState","nextState","refresh","setters","setCollections","setQuery","setActiveItemId","_nextState$isOpen","_request","_store$getState$conte","_automaticInsights","isSearchResponseWithAutomaticInsightsFlag","originalSourcesBySourceId","sourcesBySourceId","_nextState$isOpen2","isPanelOpen","highlightedItem","_excluded3","_excluded4","_excluded5","_excluded6","getPropGetters","getEnvironmentProps","providedProps","inputElement","formElement","panelElement","onMouseDownOrTouchStart","contextNode","child","contains","onTouchStart","onMouseDown","onTouchMove","activeElement","blur","getRootProps","getFormProps","handleSubmit","_providedProps$inputE","noValidate","preventDefault","waitForSubmit","_providedProps$inputE2","getLabelProps","htmlFor","getInputProps","_props$environment$na","onFocus","_ref3$maxLength","activeItem","shouldFallbackKeyHint","isSamsung","autoComplete","autoCorrect","autoCapitalize","spellCheck","currentTarget","isComposing","onCompositionEnd","onKeyDown","triggerScrollIntoView","nodeItem","getElementById","scrollIntoViewIfNeeded","scrollIntoView","triggerOnActive","nextActiveItemId","metaKey","ctrlKey","shiftKey","altKey","_onKeyDown","onBlur","onClick","getPanelProps","onMouseLeave","getListProps","getItemProps","__autocomplete_id","onMouseMove","_item","_source","getMetadata","_options$__autocomple","_options$__autocomple2","_options$__autocomple3","optionsKey","__autocomplete_metadata","extraOptions","ua","getCompletion","_getActiveItem","stateReducer","_nextState","createAutocomplete","subscribers","_state$context","_state$context$algoli","isAlgoliaInsightsPluginEnabled","subscribePlugins","baseItemId","getAutocompleteSetters","propGetters","Event","_plugin$subscribe","insightsParams","_environment$navigato","_environment$navigato2","metadataContainer","headRef","querySelector","injectMetadata","ASK_AI_API_URL","TOKEN_KEY","isExpired","b64","exp","inflight","getValidToken","assistantId","sessionStorage","getItem","setItem","postFeedback","thumbs","AlgoliaLogo","_ref$translations","translations","_translations$powered","poweredByText","React","rel","className","width","height","xmlns","viewBox","d","y","rx","ry","CommandIcon","ariaLabel","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","children","Footer","_ref$isAskAiActive","isAskAiActive","_translations$selectT","selectText","_translations$selectK","selectKeyAriaLabel","_translations$submitQ","submitQuestionText","_translations$navigat","navigateText","_translations$navigat2","navigateUpKeyAriaLabel","_translations$navigat3","navigateDownKeyAriaLabel","_translations$closeTe","closeText","_translations$backToS","backToSearchText","_translations$closeKe","closeKeyAriaLabel","Fragment","points","Hit","LoadingIcon","strokeOpacity","fillRule","cx","cy","attributeName","to","dur","repeatCount","SparklesIcon","RecentIcon","CloseIcon","SearchIcon","_ref$size","_ref$color","color","AlertIcon","SelectIcon","LvlIcon","SourceIcon","ContentIcon","AnchorIcon","x1","y1","y2","StarIcon","StopIcon","clipRule","ErrorIcon","NoResultsIcon","MoreVerticalIcon","ConversationHistoryIcon","NewConversationIcon","defaultAggregatedToolCallParts","before","lastSeparator","after","AggregatedSearchBlock","onSearchQueryClick","aggregatedToolCallNode","aggregatedToolCallText","_ref2$before","_ref2$separator","_ref2$lastSeparator","_ref2$after","q","idx","tabIndex","L","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","O","G","l","escapeHtml","html","marked","Renderer","_ref$lang","lang","escaped","languageClass","safeCode","encodedCode","encodeURIComponent","link","titleAttr","hrefAttr","textEscaped","MemoizedMarkdown","memo","copyButtonText","copyButtonCopiedText","isStreaming","useMemo","containerRef","useRef","useEffect","querySelectorAll","btn","textContent","classList","remove","handleClick","removeEventListener","_btn$getAttribute","closest","encoded","getAttribute","clipboard","writeText","decodeURIComponent","original","dangerouslySetInnerHTML","__html","displayName","buildDummyAskAiHit","_textPart$text","_textPart$text2","anchor","hierarchy","lvl0","lvl1","lvl2","lvl3","lvl4","lvl5","lvl6","url_without_anchor","getMessageContent","AskAiScreenHeader","disclaimerText","AskAiExchangeCard","_userMessage$metadata","_assistantMessage$met","_userContent$text","exchange","askAiStreamError","isLastExchange","loadingStatus","conversations","onFeedback","userMessage","assistantMessage","_translations$stopped","stoppedStreamingText","assistantContent","userContent","urlsToDisplay","links","cleanText","matchAll","cleanUrl","displayParts","aggregatedParts","j","candidate","_candidate$output$que","_candidate$output","groupConsecutiveToolResults","wasStopped","stopped","showActions","isThinking","thinkingText","_part$output$hits","preToolCallText","duringToolCallText","afterToolCallText","AskAiScreenFooterActions","latestAssistantMessageContent","AskAiSourcesPanel","relatedSourcesText","initialFeedback","_conversations$getOne","_message$feedback","getOne","feedback","_React$useState2","useState","setFeedback","_React$useState4","saving","setSaving","_React$useState6","savingError","setSavingError","handleFeedback","_translations$likeBut","likeButtonTitle","_translations$dislike","dislikeButtonTitle","_translations$thanksF","thanksForFeedbackText","LikeButton","DislikeButton","CopyButton","RelatedSourceIcon","AskAiScreen","_ref6$translations","_translations$disclai","exchanges","grouped","handleSearchQueryClick","onAskAiToggle","_translations$copyBut","copyButtonTitle","_translations$copyBut2","_useState2","isCopied","setIsCopied","timer","disabled","getPropertyByPath","prev","Snippet","attribute","_ref$tagName","tagName","Results","decodedTitle","AskAiButton","_extends","Result","renderIcon","renderAction","onItemClick","hitComponent","__docsearch_parent","_ref3$askAiPlaceholde","askAiPlaceholder","_ref3$noResultsAskAiP","noResultsAskAiPlaceholder","ConversationHistoryScreen","stopPropagation","ErrorScreen","_translations$titleTe","titleText","_translations$helpTex","helpText","NewConversationScreen","_ref$suggestedQuestio","suggestedQuestions","selectSuggestedQuestion","_translations$newConv","newConversationTitle","_translations$newConv2","newConversationDescription","question","NoResultsScreen","_translations$noResul","noResultsText","_translations$suggest","suggestedQueryText","_translations$reportM","reportMissingResultsText","_translations$reportM2","reportMissingResultsLinkText","searchSuggestions","canHandleAskAi","search","inputRef","getMissingResultsUrl","groupBy","predicate","maxResultsPerGroup","identity","isModifierEvent","button","regexHighlightTags","regexHasHighlightTags","removeHighlightTags","_internalDocSearchHit","_hit$_highlightResult","internalDocSearchHit","ResultsScreen","_collection$items","resultsFooterComponent","StartScreen","_translations$recentS","recentSearchesTitle","_translations$saveRec","saveRecentSearchButtonTitle","_translations$removeR","removeRecentSearchButtonTitle","_translations$favorit","favoriteSearchesTitle","_translations$removeF","removeFavoriteSearchButtonTitle","_translations$recentC","recentConversationsTitle","_translations$removeR2","removeRecentConversationButtonTitle","favoriteSearches","recentSearches","ScreenState","_props$state","askAiState","newConversation","selectAskAiQuestion","askAiFetchError","askAiScreen","errorScreen","hasCollections","resultsScreen","noResultsScreen","startScreen","_prevProps","nextProps","BackIcon","MenuContext","createContext","setOpen","_open","Menu","menuRef","close","_menuRef$current","Provider","ModalHeading","heading","_ref$shimmer","shimmer","Trigger","_ref2$className","_React$useContext","useContext","Content","Item","_ref4$className","SearchBox","setAskAiState","_translations$clearBu","clearButtonTitle","_translations$clearBu2","clearButtonAriaLabel","_translations$closeBu","closeButtonText","_translations$closeBu2","closeButtonAriaLabel","_translations$searchI","searchInputLabel","_translations$backToK","backToKeywordSearchButtonText","_translations$backToK2","backToKeywordSearchButtonAriaLabel","_translations$placeho","placeholderTextAskAiStreaming","newConversationPlaceholder","_translations$convers","conversationHistoryTitle","_translations$startNe","startNewConversationText","_translations$viewCon","viewConversationHistoryText","isFromSelection","select","hasRecentConversations","askAiSource","baseInputProps","blockedKeys","origOnKeyDown","origOnChange","isAskAiStreaming","askAiStatus","isKeywordSearchLoading","renderMoreOptions","searchPlaceholder","inputProps","onAskAgain","handleAskAiBackClick","useCallback","hidden","onStopAskAiStreaming","onNewConversation","onViewConversationHistory","onClose","cleanupDocSearchStorage","localStorage","docSearchKeys","sort","itemsToRemove","removeItem","manageLocalStorageQuota","total","getLocalStorageSize","createStorage","isLocalStorageSupported","DOMException","safeSetLocalStorageItem","parsed","createStoredSearches","_ref$limit","limit","storage","_snippetResult","isQueryAlreadySaved","splice","getAll","createBrowserLocalStorageCache","namespaceKey","getStorage","getNamespace","setNamespace","namespace","events","miss","timeToLive","filteredNamespaceWithoutOldFormattedCacheItems","timestamp","cacheItem","currentTimestamp","exists","clear","useSearchClient","transformSearchClient","client","createLiteClient","connect","logger","requester","send","XMLHttpRequest","setRequestHeader","isTimedOut","u","connectTimeout","onreadystatechange","readyState","OPENED","responseTimeout","responseText","algoliaAgents","authMode","responsesCache","createMemoryCache","requestsCache","serializable","hostsCache","createFallbackableCache","caches","apiClientVersion","liteClient","addAlgoliaAgent","transporter","algoliaAgent","buildQuerySources","sourcesState","indices","snippetLength","_ref6$transformItems","transformItems","saveRecentSearch","insightsActive","_yield$searchClient$s","indexes","_searchParams$attribu","_searchParams$attribu2","_searchParams$snippet","_searchParams$highlig","_searchParams$highlig2","_searchParams$hitsPer","_searchParams$clickAn","searchParams","searchParameters","attributesToRetrieve","attributesToSnippet","snippetEllipsisText","highlightPreTag","highlightPostTag","hitsPerPage","_sourcesState$context","nbHits","currentNbHits","groupedHits","potentialParent","siblingItem","flat","_ref0","askAi","theme","_ref0$onClose","_ref0$transformItems","_ref0$hitComponent","_ref0$resultsFooterCo","_ref0$initialScrollY","initialScrollY","_ref0$transformSearch","_ref0$disableUserPers","disableUserPersonalization","_ref0$initialQuery","initialQuery","initialQueryFromProp","_ref0$translations","_ref0$insights","_ref0$isAskAiActive","_ref0$canHandleAskAi","_ref0$recentSearchesL","recentSearchesLimit","_ref0$recentSearchesW","recentSearchesWithFavoritesLimit","_ref0$indices","footerTranslations","footer","searchBoxTranslations","searchBox","screenStateTranslations","setState","modalRef","formElementRef","dropdownRef","initialQueryFromSelection","getSelection","askAiConfig","askAiConfigurationId","askAiSearchParameters","_ref3$limit","_headers","defaultIndexName","addFeedback","conv","_c$messages","_conv$messages","_c$messages2","getConversation","_c$messages3","setAskAiStreamError","_React$useState8","stoppedStream","setStoppedStream","_useChat","experimental_throttle","resume","chatRef","chat","optionsId","subscribeToMessages","update","useSyncExternalStore","setMessages","messagesParam","useChat","authorization","streamError","stopAskAiStreaming","prevStatus","at","createSyntheticParent","deepestLevel","level","sendItemClickEvent","insightsItem","insightsClickParams","autocompleteRef","handleSelectAskAiQuestion","toggle","scrollTo","top","behavior","scrollTop","handleFeedbackSubmit","_conversations$addFee","noQuerySources","buildNoQuerySources","recentConversationSource","_ref11","querySourcesState","algoliaSourcesPromise","_ref12","algoliaSources","autocomplete","_getEnvironmentProps","useTouchEvents","focusableElements","firstElement","lastElement","trapFocus","previousTheme","documentElement","dataset","useTheme","_window$scrollTo","_window","useLayoutEffect","scrollBarWidth","innerWidth","clientWidth","style","marginRight","matchMedia","setFullViewportHeight","vh","innerHeight","setProperty","_ref13","showDocsearchDropdown"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,91,116,119,120]}