@tma.js/bridge 2.3.2 → 4.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +156 -35
- package/dist/dts/env.d.ts +69 -0
- package/dist/dts/errors.d.ts +55 -9
- package/dist/dts/events.d.ts +64 -0
- package/dist/dts/index.d.ts +14 -26
- package/dist/dts/invokeCustomMethod.d.ts +33 -0
- package/dist/dts/launch-params.d.ts +101 -19
- package/dist/dts/logger.d.ts +29 -0
- package/dist/dts/mockTelegramEnv.d.ts +55 -0
- package/dist/dts/post-event.d.ts +40 -0
- package/dist/dts/request.d.ts +98 -0
- package/dist/dts/result.d.ts +45 -0
- package/dist/dts/start-param.d.ts +34 -40
- package/dist/dts/theme-params.d.ts +10 -0
- package/dist/dts/types/common.d.ts +61 -0
- package/dist/dts/{events/types → types}/events.d.ts +75 -56
- package/dist/dts/types/index.d.ts +5 -0
- package/dist/dts/{methods/types → types}/methods.d.ts +200 -116
- package/dist/dts/versions.d.ts +83 -0
- package/dist/dts/window-hooks.d.ts +27 -0
- package/dist/index.cjs +2 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.iife.js +2 -3
- package/dist/index.iife.js.map +1 -1
- package/dist/index.js +619 -601
- package/dist/index.js.map +1 -1
- package/package.json +11 -19
- package/dist/dts/applyPolyfills.d.ts +0 -5
- package/dist/dts/base64-url.d.ts +0 -24
- package/dist/dts/env/hasWebviewProxy.d.ts +0 -10
- package/dist/dts/env/isIframe.d.ts +0 -5
- package/dist/dts/env/isTMA.d.ts +0 -31
- package/dist/dts/env/mockTelegramEnv.d.ts +0 -60
- package/dist/dts/events/createEmitter.d.ts +0 -58
- package/dist/dts/events/emitEvent.d.ts +0 -33
- package/dist/dts/events/emitter.d.ts +0 -2
- package/dist/dts/events/types/index.d.ts +0 -3
- package/dist/dts/events/types/listening.d.ts +0 -5
- package/dist/dts/events/types/misc.d.ts +0 -16
- package/dist/dts/globals.d.ts +0 -53
- package/dist/dts/methods/captureSameReq.d.ts +0 -10
- package/dist/dts/methods/createPostEvent.d.ts +0 -30
- package/dist/dts/methods/getReleaseVersion.d.ts +0 -15
- package/dist/dts/methods/postEvent.d.ts +0 -35
- package/dist/dts/methods/postMessage.d.ts +0 -7
- package/dist/dts/methods/supports.d.ts +0 -15
- package/dist/dts/methods/types/custom-method.d.ts +0 -59
- package/dist/dts/methods/types/index.d.ts +0 -6
- package/dist/dts/methods/types/misc.d.ts +0 -27
- package/dist/dts/methods/types/utils.d.ts +0 -9
- package/dist/dts/obj-prop-helpers.d.ts +0 -39
- package/dist/dts/utils/compareVersions.d.ts +0 -10
- package/dist/dts/utils/invokeCustomMethod.d.ts +0 -34
- package/dist/dts/utils/request.d.ts +0 -102
- package/dist/dts/utils/request2.d.ts +0 -62
- /package/dist/dts/{methods/types → types}/haptic-feedback.d.ts +0 -0
- /package/dist/dts/{methods/types → types}/popup.d.ts +0 -0
package/dist/index.iife.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.iife.js","sources":["../../../node_modules/.pnpm/valibot@1.1.0_typescript@5.9.2/node_modules/valibot/dist/index.js","../src/env/hasWebviewProxy.ts","../src/env/isIframe.ts","../../../node_modules/.pnpm/better-promises@1.0.0/node_modules/better-promises/dist/index.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/function.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/internal.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/Option.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/Either.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/EitherT.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/Json.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/Task.js","../../../node_modules/.pnpm/fp-ts@2.16.11/node_modules/fp-ts/es6/TaskEither.js","../../toolkit/dist/index.js","../../../node_modules/.pnpm/error-kid@2.0.0/node_modules/error-kid/dist/index.js","../src/errors.ts","../../transformers/dist/index.js","../src/launch-params.ts","../../signals/dist/index.js","../../../node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs","../src/events/createEmitter.ts","../src/events/emitEvent.ts","../src/globals.ts","../src/obj-prop-helpers.ts","../src/events/emitter.ts","../src/methods/postMessage.ts","../src/methods/postEvent.ts","../src/utils/request2.ts","../src/env/isTMA.ts","../src/env/mockTelegramEnv.ts","../src/methods/captureSameReq.ts","../src/methods/getReleaseVersion.ts","../src/utils/compareVersions.ts","../src/methods/supports.ts","../src/methods/createPostEvent.ts","../src/utils/invokeCustomMethod.ts","../src/utils/request.ts","../src/applyPolyfills.ts","../src/base64-url.ts","../src/start-param.ts"],"sourcesContent":["// src/storages/globalConfig/globalConfig.ts\nvar store;\nfunction setGlobalConfig(config2) {\n store = { ...store, ...config2 };\n}\n// @__NO_SIDE_EFFECTS__\nfunction getGlobalConfig(config2) {\n return {\n lang: config2?.lang ?? store?.lang,\n message: config2?.message,\n abortEarly: config2?.abortEarly ?? store?.abortEarly,\n abortPipeEarly: config2?.abortPipeEarly ?? store?.abortPipeEarly\n };\n}\nfunction deleteGlobalConfig() {\n store = void 0;\n}\n\n// src/storages/globalMessage/globalMessage.ts\nvar store2;\nfunction setGlobalMessage(message2, lang) {\n if (!store2) store2 = /* @__PURE__ */ new Map();\n store2.set(lang, message2);\n}\n// @__NO_SIDE_EFFECTS__\nfunction getGlobalMessage(lang) {\n return store2?.get(lang);\n}\nfunction deleteGlobalMessage(lang) {\n store2?.delete(lang);\n}\n\n// src/storages/schemaMessage/schemaMessage.ts\nvar store3;\nfunction setSchemaMessage(message2, lang) {\n if (!store3) store3 = /* @__PURE__ */ new Map();\n store3.set(lang, message2);\n}\n// @__NO_SIDE_EFFECTS__\nfunction getSchemaMessage(lang) {\n return store3?.get(lang);\n}\nfunction deleteSchemaMessage(lang) {\n store3?.delete(lang);\n}\n\n// src/storages/specificMessage/specificMessage.ts\nvar store4;\nfunction setSpecificMessage(reference, message2, lang) {\n if (!store4) store4 = /* @__PURE__ */ new Map();\n if (!store4.get(reference)) store4.set(reference, /* @__PURE__ */ new Map());\n store4.get(reference).set(lang, message2);\n}\n// @__NO_SIDE_EFFECTS__\nfunction getSpecificMessage(reference, lang) {\n return store4?.get(reference)?.get(lang);\n}\nfunction deleteSpecificMessage(reference, lang) {\n store4?.get(reference)?.delete(lang);\n}\n\n// src/utils/_stringify/_stringify.ts\n// @__NO_SIDE_EFFECTS__\nfunction _stringify(input) {\n const type = typeof input;\n if (type === \"string\") {\n return `\"${input}\"`;\n }\n if (type === \"number\" || type === \"bigint\" || type === \"boolean\") {\n return `${input}`;\n }\n if (type === \"object\" || type === \"function\") {\n return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? \"null\";\n }\n return type;\n}\n\n// src/utils/_addIssue/_addIssue.ts\nfunction _addIssue(context, label, dataset, config2, other) {\n const input = other && \"input\" in other ? other.input : dataset.value;\n const expected = other?.expected ?? context.expects ?? null;\n const received = other?.received ?? _stringify(input);\n const issue = {\n kind: context.kind,\n type: context.type,\n input,\n expected,\n received,\n message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : \"R\"}eceived ${received}`,\n requirement: context.requirement,\n path: other?.path,\n issues: other?.issues,\n lang: config2.lang,\n abortEarly: config2.abortEarly,\n abortPipeEarly: config2.abortPipeEarly\n };\n const isSchema = context.kind === \"schema\";\n const message2 = other?.message ?? context.message ?? getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? getSchemaMessage(issue.lang) : null) ?? config2.message ?? getGlobalMessage(issue.lang);\n if (message2 !== void 0) {\n issue.message = typeof message2 === \"function\" ? (\n // @ts-expect-error\n message2(issue)\n ) : message2;\n }\n if (isSchema) {\n dataset.typed = false;\n }\n if (dataset.issues) {\n dataset.issues.push(issue);\n } else {\n dataset.issues = [issue];\n }\n}\n\n// src/utils/_getByteCount/_getByteCount.ts\nvar textEncoder;\n// @__NO_SIDE_EFFECTS__\nfunction _getByteCount(input) {\n if (!textEncoder) {\n textEncoder = new TextEncoder();\n }\n return textEncoder.encode(input).length;\n}\n\n// src/utils/_getGraphemeCount/_getGraphemeCount.ts\nvar segmenter;\n// @__NO_SIDE_EFFECTS__\nfunction _getGraphemeCount(input) {\n if (!segmenter) {\n segmenter = new Intl.Segmenter();\n }\n const segments = segmenter.segment(input);\n let count = 0;\n for (const _ of segments) {\n count++;\n }\n return count;\n}\n\n// src/utils/_getLastMetadata/_getLastMetadata.ts\n// @__NO_SIDE_EFFECTS__\nfunction _getLastMetadata(schema, type) {\n if (\"pipe\" in schema) {\n const nestedSchemas = [];\n for (let index = schema.pipe.length - 1; index >= 0; index--) {\n const item = schema.pipe[index];\n if (item.kind === \"schema\" && \"pipe\" in item) {\n nestedSchemas.push(item);\n } else if (item.kind === \"metadata\" && item.type === type) {\n return item[type];\n }\n }\n for (const nestedSchema of nestedSchemas) {\n const result = /* @__PURE__ */ _getLastMetadata(nestedSchema, type);\n if (result !== void 0) {\n return result;\n }\n }\n }\n}\n\n// src/utils/_getStandardProps/_getStandardProps.ts\n// @__NO_SIDE_EFFECTS__\nfunction _getStandardProps(context) {\n return {\n version: 1,\n vendor: \"valibot\",\n validate(value2) {\n return context[\"~run\"]({ value: value2 }, getGlobalConfig());\n }\n };\n}\n\n// src/utils/_getWordCount/_getWordCount.ts\nvar store5;\n// @__NO_SIDE_EFFECTS__\nfunction _getWordCount(locales, input) {\n if (!store5) {\n store5 = /* @__PURE__ */ new Map();\n }\n if (!store5.get(locales)) {\n store5.set(locales, new Intl.Segmenter(locales, { granularity: \"word\" }));\n }\n const segments = store5.get(locales).segment(input);\n let count = 0;\n for (const segment of segments) {\n if (segment.isWordLike) {\n count++;\n }\n }\n return count;\n}\n\n// src/utils/_isLuhnAlgo/_isLuhnAlgo.ts\nvar NON_DIGIT_REGEX = /\\D/gu;\n// @__NO_SIDE_EFFECTS__\nfunction _isLuhnAlgo(input) {\n const number2 = input.replace(NON_DIGIT_REGEX, \"\");\n let length2 = number2.length;\n let bit = 1;\n let sum = 0;\n while (length2) {\n const value2 = +number2[--length2];\n bit ^= 1;\n sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value2] : value2;\n }\n return sum % 10 === 0;\n}\n\n// src/utils/_isValidObjectKey/_isValidObjectKey.ts\n// @__NO_SIDE_EFFECTS__\nfunction _isValidObjectKey(object2, key) {\n return Object.hasOwn(object2, key) && key !== \"__proto__\" && key !== \"prototype\" && key !== \"constructor\";\n}\n\n// src/utils/_joinExpects/_joinExpects.ts\n// @__NO_SIDE_EFFECTS__\nfunction _joinExpects(values2, separator) {\n const list = [...new Set(values2)];\n if (list.length > 1) {\n return `(${list.join(` ${separator} `)})`;\n }\n return list[0] ?? \"never\";\n}\n\n// src/utils/entriesFromList/entriesFromList.ts\n// @__NO_SIDE_EFFECTS__\nfunction entriesFromList(list, schema) {\n const entries2 = {};\n for (const key of list) {\n entries2[key] = schema;\n }\n return entries2;\n}\n\n// src/utils/entriesFromObjects/entriesFromObjects.ts\n// @__NO_SIDE_EFFECTS__\nfunction entriesFromObjects(schemas) {\n const entries2 = {};\n for (const schema of schemas) {\n Object.assign(entries2, schema.entries);\n }\n return entries2;\n}\n\n// src/utils/getDotPath/getDotPath.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDotPath(issue) {\n if (issue.path) {\n let key = \"\";\n for (const item of issue.path) {\n if (typeof item.key === \"string\" || typeof item.key === \"number\") {\n if (key) {\n key += `.${item.key}`;\n } else {\n key += item.key;\n }\n } else {\n return null;\n }\n }\n return key;\n }\n return null;\n}\n\n// src/utils/isOfKind/isOfKind.ts\n// @__NO_SIDE_EFFECTS__\nfunction isOfKind(kind, object2) {\n return object2.kind === kind;\n}\n\n// src/utils/isOfType/isOfType.ts\n// @__NO_SIDE_EFFECTS__\nfunction isOfType(type, object2) {\n return object2.type === type;\n}\n\n// src/utils/isValiError/isValiError.ts\n// @__NO_SIDE_EFFECTS__\nfunction isValiError(error) {\n return error instanceof ValiError;\n}\n\n// src/utils/ValiError/ValiError.ts\nvar ValiError = class extends Error {\n /**\n * Creates a Valibot error with useful information.\n *\n * @param issues The error issues.\n */\n constructor(issues) {\n super(issues[0].message);\n this.name = \"ValiError\";\n this.issues = issues;\n }\n};\n\n// src/actions/args/args.ts\n// @__NO_SIDE_EFFECTS__\nfunction args(schema) {\n return {\n kind: \"transformation\",\n type: \"args\",\n reference: args,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = (...args_) => {\n const argsDataset = this.schema[\"~run\"]({ value: args_ }, config2);\n if (argsDataset.issues) {\n throw new ValiError(argsDataset.issues);\n }\n return func(...argsDataset.value);\n };\n return dataset;\n }\n };\n}\n\n// src/actions/args/argsAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction argsAsync(schema) {\n return {\n kind: \"transformation\",\n type: \"args\",\n reference: argsAsync,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = async (...args2) => {\n const argsDataset = await schema[\"~run\"]({ value: args2 }, config2);\n if (argsDataset.issues) {\n throw new ValiError(argsDataset.issues);\n }\n return func(...argsDataset.value);\n };\n return dataset;\n }\n };\n}\n\n// src/actions/await/awaitAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction awaitAsync() {\n return {\n kind: \"transformation\",\n type: \"await\",\n reference: awaitAsync,\n async: true,\n async \"~run\"(dataset) {\n dataset.value = await dataset.value;\n return dataset;\n }\n };\n}\n\n// src/regex.ts\nvar BASE64_REGEX = /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\nvar BIC_REGEX = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\nvar CUID2_REGEX = /^[a-z][\\da-z]*$/u;\nvar DECIMAL_REGEX = /^[+-]?(?:\\d*\\.)?\\d+$/u;\nvar DIGITS_REGEX = /^\\d+$/u;\nvar EMAIL_REGEX = /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-z]+(?:[.-][\\da-z]+)*\\.[a-z]{2,}$/iu;\nvar EMOJI_REGEX = (\n // eslint-disable-next-line redos-detector/no-unsafe-regex, regexp/no-dupe-disjunctions -- false positives\n /^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}))*)+$/u\n);\nvar HEXADECIMAL_REGEX = /^(?:0[hx])?[\\da-fA-F]+$/u;\nvar HEX_COLOR_REGEX = /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\nvar IMEI_REGEX = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\nvar IPV4_REGEX = (\n // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive\n /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$/u\n);\nvar IPV6_REGEX = /^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\nvar IP_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$|^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\nvar ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\nvar ISO_DATE_TIME_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\nvar ISO_TIME_REGEX = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\nvar ISO_TIME_SECOND_REGEX = /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\nvar ISO_TIMESTAMP_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}(?:\\.\\d{1,9})?(?:Z|[+-](?:0\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/u;\nvar ISO_WEEK_REGEX = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\nvar MAC48_REGEX = /^(?:[\\da-f]{2}:){5}[\\da-f]{2}$|^(?:[\\da-f]{2}-){5}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){2}[\\da-f]{4}$/iu;\nvar MAC64_REGEX = /^(?:[\\da-f]{2}:){7}[\\da-f]{2}$|^(?:[\\da-f]{2}-){7}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){3}[\\da-f]{4}$|^(?:[\\da-f]{4}:){3}[\\da-f]{4}$/iu;\nvar MAC_REGEX = /^(?:[\\da-f]{2}:){5}[\\da-f]{2}$|^(?:[\\da-f]{2}-){5}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){2}[\\da-f]{4}$|^(?:[\\da-f]{2}:){7}[\\da-f]{2}$|^(?:[\\da-f]{2}-){7}[\\da-f]{2}$|^(?:[\\da-f]{4}\\.){3}[\\da-f]{4}$|^(?:[\\da-f]{4}:){3}[\\da-f]{4}$/iu;\nvar NANO_ID_REGEX = /^[\\w-]+$/u;\nvar OCTAL_REGEX = /^(?:0o)?[0-7]+$/u;\nvar RFC_EMAIL_REGEX = (\n // eslint-disable-next-line regexp/prefer-w, no-useless-escape, regexp/no-useless-escape, regexp/require-unicode-regexp\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);\nvar SLUG_REGEX = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\nvar ULID_REGEX = /^[\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{26}$/u;\nvar UUID_REGEX = /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n\n// src/actions/base64/base64.ts\n// @__NO_SIDE_EFFECTS__\nfunction base64(message2) {\n return {\n kind: \"validation\",\n type: \"base64\",\n reference: base64,\n async: false,\n expects: null,\n requirement: BASE64_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"Base64\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/bic/bic.ts\n// @__NO_SIDE_EFFECTS__\nfunction bic(message2) {\n return {\n kind: \"validation\",\n type: \"bic\",\n reference: bic,\n async: false,\n expects: null,\n requirement: BIC_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"BIC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/brand/brand.ts\n// @__NO_SIDE_EFFECTS__\nfunction brand(name) {\n return {\n kind: \"transformation\",\n type: \"brand\",\n reference: brand,\n async: false,\n name,\n \"~run\"(dataset) {\n return dataset;\n }\n };\n}\n\n// src/actions/bytes/bytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction bytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"bytes\",\n reference: bytes,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 !== this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/check/check.ts\n// @__NO_SIDE_EFFECTS__\nfunction check(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check\",\n reference: check,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/check/checkAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction checkAsync(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check\",\n reference: checkAsync,\n async: true,\n expects: null,\n requirement,\n message: message2,\n async \"~run\"(dataset, config2) {\n if (dataset.typed && !await this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/checkItems/checkItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction checkItems(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check_items\",\n reference: checkItems,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n for (let index = 0; index < dataset.value.length; index++) {\n const item = dataset.value[index];\n if (!this.requirement(item, index, dataset.value)) {\n _addIssue(this, \"item\", dataset, config2, {\n input: item,\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input: dataset.value,\n key: index,\n value: item\n }\n ]\n });\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/checkItems/checkItemsAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction checkItemsAsync(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"check_items\",\n reference: checkItemsAsync,\n async: true,\n expects: null,\n requirement,\n message: message2,\n async \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const requirementResults = await Promise.all(\n dataset.value.map(this.requirement)\n );\n for (let index = 0; index < dataset.value.length; index++) {\n if (!requirementResults[index]) {\n const item = dataset.value[index];\n _addIssue(this, \"item\", dataset, config2, {\n input: item,\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input: dataset.value,\n key: index,\n value: item\n }\n ]\n });\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/creditCard/creditCard.ts\nvar CREDIT_CARD_REGEX = /^(?:\\d{14,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\nvar SANITIZE_REGEX = /[- ]/gu;\nvar PROVIDER_REGEX_LIST = [\n // American Express\n /^3[47]\\d{13}$/u,\n // Diners Club\n /^3(?:0[0-5]|[68]\\d)\\d{11,13}$/u,\n // Discover\n /^6(?:011|5\\d{2})\\d{12,15}$/u,\n // JCB\n /^(?:2131|1800|35\\d{3})\\d{11}$/u,\n // Mastercard\n // eslint-disable-next-line redos-detector/no-unsafe-regex\n /^5[1-5]\\d{2}|(?:222\\d|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)\\d{12}$/u,\n // UnionPay\n /^(?:6[27]\\d{14,17}|81\\d{14,17})$/u,\n // Visa\n /^4\\d{12}(?:\\d{3,6})?$/u\n];\n// @__NO_SIDE_EFFECTS__\nfunction creditCard(message2) {\n return {\n kind: \"validation\",\n type: \"credit_card\",\n reference: creditCard,\n async: false,\n expects: null,\n requirement(input) {\n let sanitized;\n return CREDIT_CARD_REGEX.test(input) && // Remove any hyphens and blanks\n (sanitized = input.replace(SANITIZE_REGEX, \"\")) && // Check if it matches a provider\n PROVIDER_REGEX_LIST.some((regex2) => regex2.test(sanitized)) && // Check if passes luhn algorithm\n _isLuhnAlgo(sanitized);\n },\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"credit card\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/cuid2/cuid2.ts\n// @__NO_SIDE_EFFECTS__\nfunction cuid2(message2) {\n return {\n kind: \"validation\",\n type: \"cuid2\",\n reference: cuid2,\n async: false,\n expects: null,\n requirement: CUID2_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"Cuid2\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/decimal/decimal.ts\n// @__NO_SIDE_EFFECTS__\nfunction decimal(message2) {\n return {\n kind: \"validation\",\n type: \"decimal\",\n reference: decimal,\n async: false,\n expects: null,\n requirement: DECIMAL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"decimal\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/description/description.ts\n// @__NO_SIDE_EFFECTS__\nfunction description(description_) {\n return {\n kind: \"metadata\",\n type: \"description\",\n reference: description,\n description: description_\n };\n}\n\n// src/actions/digits/digits.ts\n// @__NO_SIDE_EFFECTS__\nfunction digits(message2) {\n return {\n kind: \"validation\",\n type: \"digits\",\n reference: digits,\n async: false,\n expects: null,\n requirement: DIGITS_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"digits\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/email/email.ts\n// @__NO_SIDE_EFFECTS__\nfunction email(message2) {\n return {\n kind: \"validation\",\n type: \"email\",\n reference: email,\n expects: null,\n async: false,\n requirement: EMAIL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"email\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/emoji/emoji.ts\n// @__NO_SIDE_EFFECTS__\nfunction emoji(message2) {\n return {\n kind: \"validation\",\n type: \"emoji\",\n reference: emoji,\n async: false,\n expects: null,\n requirement: EMOJI_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"emoji\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/empty/empty.ts\n// @__NO_SIDE_EFFECTS__\nfunction empty(message2) {\n return {\n kind: \"validation\",\n type: \"empty\",\n reference: empty,\n async: false,\n expects: \"0\",\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length > 0) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/endsWith/endsWith.ts\n// @__NO_SIDE_EFFECTS__\nfunction endsWith(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"ends_with\",\n reference: endsWith,\n async: false,\n expects: `\"${requirement}\"`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.endsWith(this.requirement)) {\n _addIssue(this, \"end\", dataset, config2, {\n received: `\"${dataset.value.slice(-this.requirement.length)}\"`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/entries/entries.ts\n// @__NO_SIDE_EFFECTS__\nfunction entries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"entries\",\n reference: entries,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count !== this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/everyItem/everyItem.ts\n// @__NO_SIDE_EFFECTS__\nfunction everyItem(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"every_item\",\n reference: everyItem,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.every(this.requirement)) {\n _addIssue(this, \"item\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/excludes/excludes.ts\n// @__NO_SIDE_EFFECTS__\nfunction excludes(requirement, message2) {\n const received = _stringify(requirement);\n return {\n kind: \"validation\",\n type: \"excludes\",\n reference: excludes,\n async: false,\n expects: `!${received}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.includes(this.requirement)) {\n _addIssue(this, \"content\", dataset, config2, { received });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/filterItems/filterItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction filterItems(operation) {\n return {\n kind: \"transformation\",\n type: \"filter_items\",\n reference: filterItems,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.filter(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/findItem/findItem.ts\n// @__NO_SIDE_EFFECTS__\nfunction findItem(operation) {\n return {\n kind: \"transformation\",\n type: \"find_item\",\n reference: findItem,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.find(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/finite/finite.ts\n// @__NO_SIDE_EFFECTS__\nfunction finite(message2) {\n return {\n kind: \"validation\",\n type: \"finite\",\n reference: finite,\n async: false,\n expects: null,\n requirement: Number.isFinite,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"finite\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/flavor/flavor.ts\n// @__NO_SIDE_EFFECTS__\nfunction flavor(name) {\n return {\n kind: \"transformation\",\n type: \"flavor\",\n reference: flavor,\n async: false,\n name,\n \"~run\"(dataset) {\n return dataset;\n }\n };\n}\n\n// src/actions/graphemes/graphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction graphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"graphemes\",\n reference: graphemes,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count !== this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/gtValue/gtValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction gtValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"gt_value\",\n reference: gtValue,\n async: false,\n expects: `>${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value > this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/hash/hash.ts\nvar HASH_LENGTHS = {\n md4: 32,\n md5: 32,\n sha1: 40,\n sha256: 64,\n sha384: 96,\n sha512: 128,\n ripemd128: 32,\n ripemd160: 40,\n tiger128: 32,\n tiger160: 40,\n tiger192: 48,\n crc32: 8,\n crc32b: 8,\n adler32: 8\n};\n// @__NO_SIDE_EFFECTS__\nfunction hash(types, message2) {\n return {\n kind: \"validation\",\n type: \"hash\",\n reference: hash,\n expects: null,\n async: false,\n requirement: RegExp(\n types.map((type) => `^[a-f0-9]{${HASH_LENGTHS[type]}}$`).join(\"|\"),\n \"iu\"\n ),\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"hash\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/hexadecimal/hexadecimal.ts\n// @__NO_SIDE_EFFECTS__\nfunction hexadecimal(message2) {\n return {\n kind: \"validation\",\n type: \"hexadecimal\",\n reference: hexadecimal,\n async: false,\n expects: null,\n requirement: HEXADECIMAL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"hexadecimal\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/hexColor/hexColor.ts\n// @__NO_SIDE_EFFECTS__\nfunction hexColor(message2) {\n return {\n kind: \"validation\",\n type: \"hex_color\",\n reference: hexColor,\n async: false,\n expects: null,\n requirement: HEX_COLOR_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"hex color\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/imei/imei.ts\n// @__NO_SIDE_EFFECTS__\nfunction imei(message2) {\n return {\n kind: \"validation\",\n type: \"imei\",\n reference: imei,\n async: false,\n expects: null,\n requirement(input) {\n return IMEI_REGEX.test(input) && _isLuhnAlgo(input);\n },\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"IMEI\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/includes/includes.ts\n// @__NO_SIDE_EFFECTS__\nfunction includes(requirement, message2) {\n const expects = _stringify(requirement);\n return {\n kind: \"validation\",\n type: \"includes\",\n reference: includes,\n async: false,\n expects,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.includes(this.requirement)) {\n _addIssue(this, \"content\", dataset, config2, {\n received: `!${expects}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/integer/integer.ts\n// @__NO_SIDE_EFFECTS__\nfunction integer(message2) {\n return {\n kind: \"validation\",\n type: \"integer\",\n reference: integer,\n async: false,\n expects: null,\n requirement: Number.isInteger,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"integer\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ip/ip.ts\n// @__NO_SIDE_EFFECTS__\nfunction ip(message2) {\n return {\n kind: \"validation\",\n type: \"ip\",\n reference: ip,\n async: false,\n expects: null,\n requirement: IP_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"IP\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ipv4/ipv4.ts\n// @__NO_SIDE_EFFECTS__\nfunction ipv4(message2) {\n return {\n kind: \"validation\",\n type: \"ipv4\",\n reference: ipv4,\n async: false,\n expects: null,\n requirement: IPV4_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"IPv4\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ipv6/ipv6.ts\n// @__NO_SIDE_EFFECTS__\nfunction ipv6(message2) {\n return {\n kind: \"validation\",\n type: \"ipv6\",\n reference: ipv6,\n async: false,\n expects: null,\n requirement: IPV6_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"IPv6\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoDate/isoDate.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoDate(message2) {\n return {\n kind: \"validation\",\n type: \"iso_date\",\n reference: isoDate,\n async: false,\n expects: null,\n requirement: ISO_DATE_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"date\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoDateTime/isoDateTime.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoDateTime(message2) {\n return {\n kind: \"validation\",\n type: \"iso_date_time\",\n reference: isoDateTime,\n async: false,\n expects: null,\n requirement: ISO_DATE_TIME_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"date-time\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoTime/isoTime.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoTime(message2) {\n return {\n kind: \"validation\",\n type: \"iso_time\",\n reference: isoTime,\n async: false,\n expects: null,\n requirement: ISO_TIME_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"time\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoTimeSecond/isoTimeSecond.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoTimeSecond(message2) {\n return {\n kind: \"validation\",\n type: \"iso_time_second\",\n reference: isoTimeSecond,\n async: false,\n expects: null,\n requirement: ISO_TIME_SECOND_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"time-second\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoTimestamp/isoTimestamp.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoTimestamp(message2) {\n return {\n kind: \"validation\",\n type: \"iso_timestamp\",\n reference: isoTimestamp,\n async: false,\n expects: null,\n requirement: ISO_TIMESTAMP_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"timestamp\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/isoWeek/isoWeek.ts\n// @__NO_SIDE_EFFECTS__\nfunction isoWeek(message2) {\n return {\n kind: \"validation\",\n type: \"iso_week\",\n reference: isoWeek,\n async: false,\n expects: null,\n requirement: ISO_WEEK_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"week\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/length/length.ts\n// @__NO_SIDE_EFFECTS__\nfunction length(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"length\",\n reference: length,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length !== this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/ltValue/ltValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction ltValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"lt_value\",\n reference: ltValue,\n async: false,\n expects: `<${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value < this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mac/mac.ts\n// @__NO_SIDE_EFFECTS__\nfunction mac(message2) {\n return {\n kind: \"validation\",\n type: \"mac\",\n reference: mac,\n async: false,\n expects: null,\n requirement: MAC_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"MAC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mac48/mac48.ts\n// @__NO_SIDE_EFFECTS__\nfunction mac48(message2) {\n return {\n kind: \"validation\",\n type: \"mac48\",\n reference: mac48,\n async: false,\n expects: null,\n requirement: MAC48_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"48-bit MAC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mac64/mac64.ts\n// @__NO_SIDE_EFFECTS__\nfunction mac64(message2) {\n return {\n kind: \"validation\",\n type: \"mac64\",\n reference: mac64,\n async: false,\n expects: null,\n requirement: MAC64_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"64-bit MAC\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/mapItems/mapItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction mapItems(operation) {\n return {\n kind: \"transformation\",\n type: \"map_items\",\n reference: mapItems,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.map(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/maxBytes/maxBytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxBytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_bytes\",\n reference: maxBytes,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 > this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxEntries/maxEntries.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxEntries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_entries\",\n reference: maxEntries,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count > this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxGraphemes/maxGraphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxGraphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_graphemes\",\n reference: maxGraphemes,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count > this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxLength/maxLength.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxLength(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_length\",\n reference: maxLength,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length > this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxSize/maxSize.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxSize(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_size\",\n reference: maxSize,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size > this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxValue/maxValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_value\",\n reference: maxValue,\n async: false,\n expects: `<=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value <= this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/maxWords/maxWords.ts\n// @__NO_SIDE_EFFECTS__\nfunction maxWords(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"max_words\",\n reference: maxWords,\n async: false,\n expects: `<=${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count > this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/metadata/metadata.ts\n// @__NO_SIDE_EFFECTS__\nfunction metadata(metadata_) {\n return {\n kind: \"metadata\",\n type: \"metadata\",\n reference: metadata,\n metadata: metadata_\n };\n}\n\n// src/actions/mimeType/mimeType.ts\n// @__NO_SIDE_EFFECTS__\nfunction mimeType(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"mime_type\",\n reference: mimeType,\n async: false,\n expects: _joinExpects(\n requirement.map((option) => `\"${option}\"`),\n \"|\"\n ),\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.includes(dataset.value.type)) {\n _addIssue(this, \"MIME type\", dataset, config2, {\n received: `\"${dataset.value.type}\"`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minBytes/minBytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction minBytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_bytes\",\n reference: minBytes,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 < this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minEntries/minEntries.ts\n// @__NO_SIDE_EFFECTS__\nfunction minEntries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_entries\",\n reference: minEntries,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count < this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minGraphemes/minGraphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction minGraphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_graphemes\",\n reference: minGraphemes,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count < this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minLength/minLength.ts\n// @__NO_SIDE_EFFECTS__\nfunction minLength(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_length\",\n reference: minLength,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length < this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minSize/minSize.ts\n// @__NO_SIDE_EFFECTS__\nfunction minSize(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_size\",\n reference: minSize,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size < this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minValue/minValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction minValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_value\",\n reference: minValue,\n async: false,\n expects: `>=${requirement instanceof Date ? requirement.toJSON() : _stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(dataset.value >= this.requirement)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/minWords/minWords.ts\n// @__NO_SIDE_EFFECTS__\nfunction minWords(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"min_words\",\n reference: minWords,\n async: false,\n expects: `>=${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count < this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/multipleOf/multipleOf.ts\n// @__NO_SIDE_EFFECTS__\nfunction multipleOf(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"multiple_of\",\n reference: multipleOf,\n async: false,\n expects: `%${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value % this.requirement != 0) {\n _addIssue(this, \"multiple\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/nanoid/nanoid.ts\n// @__NO_SIDE_EFFECTS__\nfunction nanoid(message2) {\n return {\n kind: \"validation\",\n type: \"nanoid\",\n reference: nanoid,\n async: false,\n expects: null,\n requirement: NANO_ID_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"Nano ID\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/nonEmpty/nonEmpty.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonEmpty(message2) {\n return {\n kind: \"validation\",\n type: \"non_empty\",\n reference: nonEmpty,\n async: false,\n expects: \"!0\",\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length === 0) {\n _addIssue(this, \"length\", dataset, config2, {\n received: \"0\"\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/normalize/normalize.ts\n// @__NO_SIDE_EFFECTS__\nfunction normalize(form) {\n return {\n kind: \"transformation\",\n type: \"normalize\",\n reference: normalize,\n async: false,\n form,\n \"~run\"(dataset) {\n dataset.value = dataset.value.normalize(this.form);\n return dataset;\n }\n };\n}\n\n// src/actions/notBytes/notBytes.ts\n// @__NO_SIDE_EFFECTS__\nfunction notBytes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_bytes\",\n reference: notBytes,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const length2 = _getByteCount(dataset.value);\n if (length2 === this.requirement) {\n _addIssue(this, \"bytes\", dataset, config2, {\n received: `${length2}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notEntries/notEntries.ts\n// @__NO_SIDE_EFFECTS__\nfunction notEntries(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_entries\",\n reference: notEntries,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (!dataset.typed) return dataset;\n const count = Object.keys(dataset.value).length;\n if (dataset.typed && count === this.requirement) {\n _addIssue(this, \"entries\", dataset, config2, {\n received: `${count}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notGraphemes/notGraphemes.ts\n// @__NO_SIDE_EFFECTS__\nfunction notGraphemes(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_graphemes\",\n reference: notGraphemes,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count === this.requirement) {\n _addIssue(this, \"graphemes\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notLength/notLength.ts\n// @__NO_SIDE_EFFECTS__\nfunction notLength(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_length\",\n reference: notLength,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.length === this.requirement) {\n _addIssue(this, \"length\", dataset, config2, {\n received: `${dataset.value.length}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notSize/notSize.ts\n// @__NO_SIDE_EFFECTS__\nfunction notSize(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_size\",\n reference: notSize,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size === this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notValue/notValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction notValue(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_value\",\n reference: notValue,\n async: false,\n expects: requirement instanceof Date ? `!${requirement.toJSON()}` : `!${_stringify(requirement)}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && this.requirement <= dataset.value && this.requirement >= dataset.value) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notValues/notValues.ts\n// @__NO_SIDE_EFFECTS__\nfunction notValues(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_values\",\n reference: notValues,\n async: false,\n expects: `!${_joinExpects(\n requirement.map(\n (value2) => value2 instanceof Date ? value2.toJSON() : _stringify(value2)\n ),\n \"|\"\n )}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && this.requirement.some(\n (value2) => value2 <= dataset.value && value2 >= dataset.value\n )) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/notWords/notWords.ts\n// @__NO_SIDE_EFFECTS__\nfunction notWords(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"not_words\",\n reference: notWords,\n async: false,\n expects: `!${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count === this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/octal/octal.ts\n// @__NO_SIDE_EFFECTS__\nfunction octal(message2) {\n return {\n kind: \"validation\",\n type: \"octal\",\n reference: octal,\n async: false,\n expects: null,\n requirement: OCTAL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"octal\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/parseJson/parseJson.ts\n// @__NO_SIDE_EFFECTS__\nfunction parseJson(config2, message2) {\n return {\n kind: \"transformation\",\n type: \"parse_json\",\n reference: parseJson,\n config: config2,\n message: message2,\n async: false,\n \"~run\"(dataset, config3) {\n try {\n dataset.value = JSON.parse(dataset.value, this.config?.reviver);\n } catch (error) {\n if (error instanceof Error) {\n _addIssue(this, \"JSON\", dataset, config3, {\n received: `\"${error.message}\"`\n });\n dataset.typed = false;\n } else {\n throw error;\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/partialCheck/utils/_isPartiallyTyped/_isPartiallyTyped.ts\n// @__NO_SIDE_EFFECTS__\nfunction _isPartiallyTyped(dataset, paths) {\n if (dataset.issues) {\n for (const path of paths) {\n for (const issue of dataset.issues) {\n let typed = false;\n const bound = Math.min(path.length, issue.path?.length ?? 0);\n for (let index = 0; index < bound; index++) {\n if (\n // @ts-expect-error\n path[index] !== issue.path[index].key && // @ts-expect-error\n (path[index] !== \"$\" || issue.path[index].type !== \"array\")\n ) {\n typed = true;\n break;\n }\n }\n if (!typed) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\n// src/actions/partialCheck/partialCheck.ts\n// @__NO_SIDE_EFFECTS__\nfunction partialCheck(paths, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"partial_check\",\n reference: partialCheck,\n async: false,\n expects: null,\n paths,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if ((dataset.typed || _isPartiallyTyped(dataset, paths)) && // @ts-expect-error\n !this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/partialCheck/partialCheckAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction partialCheckAsync(paths, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"partial_check\",\n reference: partialCheckAsync,\n async: true,\n expects: null,\n paths,\n requirement,\n message: message2,\n async \"~run\"(dataset, config2) {\n if ((dataset.typed || _isPartiallyTyped(dataset, paths)) && // @ts-expect-error\n !await this.requirement(dataset.value)) {\n _addIssue(this, \"input\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/rawCheck/rawCheck.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawCheck(action) {\n return {\n kind: \"validation\",\n type: \"raw_check\",\n reference: rawCheck,\n async: false,\n expects: null,\n \"~run\"(dataset, config2) {\n action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info)\n });\n return dataset;\n }\n };\n}\n\n// src/actions/rawCheck/rawCheckAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawCheckAsync(action) {\n return {\n kind: \"validation\",\n type: \"raw_check\",\n reference: rawCheckAsync,\n async: true,\n expects: null,\n async \"~run\"(dataset, config2) {\n await action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info)\n });\n return dataset;\n }\n };\n}\n\n// src/actions/rawTransform/rawTransform.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawTransform(action) {\n return {\n kind: \"transformation\",\n type: \"raw_transform\",\n reference: rawTransform,\n async: false,\n \"~run\"(dataset, config2) {\n const output = action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info),\n NEVER: null\n });\n if (dataset.issues) {\n dataset.typed = false;\n } else {\n dataset.value = output;\n }\n return dataset;\n }\n };\n}\n\n// src/actions/rawTransform/rawTransformAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction rawTransformAsync(action) {\n return {\n kind: \"transformation\",\n type: \"raw_transform\",\n reference: rawTransformAsync,\n async: true,\n async \"~run\"(dataset, config2) {\n const output = await action({\n dataset,\n config: config2,\n addIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config2, info),\n NEVER: null\n });\n if (dataset.issues) {\n dataset.typed = false;\n } else {\n dataset.value = output;\n }\n return dataset;\n }\n };\n}\n\n// src/actions/readonly/readonly.ts\n// @__NO_SIDE_EFFECTS__\nfunction readonly() {\n return {\n kind: \"transformation\",\n type: \"readonly\",\n reference: readonly,\n async: false,\n \"~run\"(dataset) {\n return dataset;\n }\n };\n}\n\n// src/actions/reduceItems/reduceItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction reduceItems(operation, initial) {\n return {\n kind: \"transformation\",\n type: \"reduce_items\",\n reference: reduceItems,\n async: false,\n operation,\n initial,\n \"~run\"(dataset) {\n dataset.value = dataset.value.reduce(this.operation, this.initial);\n return dataset;\n }\n };\n}\n\n// src/actions/regex/regex.ts\n// @__NO_SIDE_EFFECTS__\nfunction regex(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"regex\",\n reference: regex,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"format\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/returns/returns.ts\n// @__NO_SIDE_EFFECTS__\nfunction returns(schema) {\n return {\n kind: \"transformation\",\n type: \"returns\",\n reference: returns,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = (...args_) => {\n const returnsDataset = this.schema[\"~run\"](\n { value: func(...args_) },\n config2\n );\n if (returnsDataset.issues) {\n throw new ValiError(returnsDataset.issues);\n }\n return returnsDataset.value;\n };\n return dataset;\n }\n };\n}\n\n// src/actions/returns/returnsAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction returnsAsync(schema) {\n return {\n kind: \"transformation\",\n type: \"returns\",\n reference: returnsAsync,\n async: false,\n schema,\n \"~run\"(dataset, config2) {\n const func = dataset.value;\n dataset.value = async (...args_) => {\n const returnsDataset = await this.schema[\"~run\"](\n { value: await func(...args_) },\n config2\n );\n if (returnsDataset.issues) {\n throw new ValiError(returnsDataset.issues);\n }\n return returnsDataset.value;\n };\n return dataset;\n }\n };\n}\n\n// src/actions/rfcEmail/rfcEmail.ts\n// @__NO_SIDE_EFFECTS__\nfunction rfcEmail(message2) {\n return {\n kind: \"validation\",\n type: \"rfc_email\",\n reference: rfcEmail,\n expects: null,\n async: false,\n requirement: RFC_EMAIL_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"email\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/safeInteger/safeInteger.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeInteger(message2) {\n return {\n kind: \"validation\",\n type: \"safe_integer\",\n reference: safeInteger,\n async: false,\n expects: null,\n requirement: Number.isSafeInteger,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"safe integer\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/size/size.ts\n// @__NO_SIDE_EFFECTS__\nfunction size(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"size\",\n reference: size,\n async: false,\n expects: `${requirement}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && dataset.value.size !== this.requirement) {\n _addIssue(this, \"size\", dataset, config2, {\n received: `${dataset.value.size}`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/slug/slug.ts\n// @__NO_SIDE_EFFECTS__\nfunction slug(message2) {\n return {\n kind: \"validation\",\n type: \"slug\",\n reference: slug,\n async: false,\n expects: null,\n requirement: SLUG_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"slug\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/someItem/someItem.ts\n// @__NO_SIDE_EFFECTS__\nfunction someItem(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"some_item\",\n reference: someItem,\n async: false,\n expects: null,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.some(this.requirement)) {\n _addIssue(this, \"item\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/sortItems/sortItems.ts\n// @__NO_SIDE_EFFECTS__\nfunction sortItems(operation) {\n return {\n kind: \"transformation\",\n type: \"sort_items\",\n reference: sortItems,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = dataset.value.sort(this.operation);\n return dataset;\n }\n };\n}\n\n// src/actions/startsWith/startsWith.ts\n// @__NO_SIDE_EFFECTS__\nfunction startsWith(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"starts_with\",\n reference: startsWith,\n async: false,\n expects: `\"${requirement}\"`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !dataset.value.startsWith(this.requirement)) {\n _addIssue(this, \"start\", dataset, config2, {\n received: `\"${dataset.value.slice(0, this.requirement.length)}\"`\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/stringifyJson/stringifyJson.ts\n// @__NO_SIDE_EFFECTS__\nfunction stringifyJson(config2, message2) {\n return {\n kind: \"transformation\",\n type: \"stringify_json\",\n reference: stringifyJson,\n message: message2,\n config: config2,\n async: false,\n \"~run\"(dataset, config3) {\n try {\n const output = JSON.stringify(\n dataset.value,\n // @ts-expect-error\n this.config?.replacer,\n this.config?.space\n );\n if (output === void 0) {\n _addIssue(this, \"JSON\", dataset, config3);\n dataset.typed = false;\n }\n dataset.value = output;\n } catch (error) {\n if (error instanceof Error) {\n _addIssue(this, \"JSON\", dataset, config3, {\n received: `\"${error.message}\"`\n });\n dataset.typed = false;\n } else {\n throw error;\n }\n }\n return dataset;\n }\n };\n}\n\n// src/actions/title/title.ts\n// @__NO_SIDE_EFFECTS__\nfunction title(title_) {\n return {\n kind: \"metadata\",\n type: \"title\",\n reference: title,\n title: title_\n };\n}\n\n// src/actions/toLowerCase/toLowerCase.ts\n// @__NO_SIDE_EFFECTS__\nfunction toLowerCase() {\n return {\n kind: \"transformation\",\n type: \"to_lower_case\",\n reference: toLowerCase,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.toLowerCase();\n return dataset;\n }\n };\n}\n\n// src/actions/toMaxValue/toMaxValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction toMaxValue(requirement) {\n return {\n kind: \"transformation\",\n type: \"to_max_value\",\n reference: toMaxValue,\n async: false,\n requirement,\n \"~run\"(dataset) {\n dataset.value = dataset.value > this.requirement ? this.requirement : dataset.value;\n return dataset;\n }\n };\n}\n\n// src/actions/toMinValue/toMinValue.ts\n// @__NO_SIDE_EFFECTS__\nfunction toMinValue(requirement) {\n return {\n kind: \"transformation\",\n type: \"to_min_value\",\n reference: toMinValue,\n async: false,\n requirement,\n \"~run\"(dataset) {\n dataset.value = dataset.value < this.requirement ? this.requirement : dataset.value;\n return dataset;\n }\n };\n}\n\n// src/actions/toUpperCase/toUpperCase.ts\n// @__NO_SIDE_EFFECTS__\nfunction toUpperCase() {\n return {\n kind: \"transformation\",\n type: \"to_upper_case\",\n reference: toUpperCase,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.toUpperCase();\n return dataset;\n }\n };\n}\n\n// src/actions/transform/transform.ts\n// @__NO_SIDE_EFFECTS__\nfunction transform(operation) {\n return {\n kind: \"transformation\",\n type: \"transform\",\n reference: transform,\n async: false,\n operation,\n \"~run\"(dataset) {\n dataset.value = this.operation(dataset.value);\n return dataset;\n }\n };\n}\n\n// src/actions/transform/transformAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction transformAsync(operation) {\n return {\n kind: \"transformation\",\n type: \"transform\",\n reference: transformAsync,\n async: true,\n operation,\n async \"~run\"(dataset) {\n dataset.value = await this.operation(dataset.value);\n return dataset;\n }\n };\n}\n\n// src/actions/trim/trim.ts\n// @__NO_SIDE_EFFECTS__\nfunction trim() {\n return {\n kind: \"transformation\",\n type: \"trim\",\n reference: trim,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.trim();\n return dataset;\n }\n };\n}\n\n// src/actions/trimEnd/trimEnd.ts\n// @__NO_SIDE_EFFECTS__\nfunction trimEnd() {\n return {\n kind: \"transformation\",\n type: \"trim_end\",\n reference: trimEnd,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.trimEnd();\n return dataset;\n }\n };\n}\n\n// src/actions/trimStart/trimStart.ts\n// @__NO_SIDE_EFFECTS__\nfunction trimStart() {\n return {\n kind: \"transformation\",\n type: \"trim_start\",\n reference: trimStart,\n async: false,\n \"~run\"(dataset) {\n dataset.value = dataset.value.trimStart();\n return dataset;\n }\n };\n}\n\n// src/actions/ulid/ulid.ts\n// @__NO_SIDE_EFFECTS__\nfunction ulid(message2) {\n return {\n kind: \"validation\",\n type: \"ulid\",\n reference: ulid,\n async: false,\n expects: null,\n requirement: ULID_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"ULID\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/url/url.ts\n// @__NO_SIDE_EFFECTS__\nfunction url(message2) {\n return {\n kind: \"validation\",\n type: \"url\",\n reference: url,\n async: false,\n expects: null,\n requirement(input) {\n try {\n new URL(input);\n return true;\n } catch {\n return false;\n }\n },\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, \"URL\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/uuid/uuid.ts\n// @__NO_SIDE_EFFECTS__\nfunction uuid(message2) {\n return {\n kind: \"validation\",\n type: \"uuid\",\n reference: uuid,\n async: false,\n expects: null,\n requirement: UUID_REGEX,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, \"UUID\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/actions/value/value.ts\n// @__NO_SIDE_EFFECTS__\nfunction value(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"value\",\n reference: value,\n async: false,\n expects: requirement instanceof Date ? requirement.toJSON() : _stringify(requirement),\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !(this.requirement <= dataset.value && this.requirement >= dataset.value)) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/values/values.ts\n// @__NO_SIDE_EFFECTS__\nfunction values(requirement, message2) {\n return {\n kind: \"validation\",\n type: \"values\",\n reference: values,\n async: false,\n expects: `${_joinExpects(\n requirement.map(\n (value2) => value2 instanceof Date ? value2.toJSON() : _stringify(value2)\n ),\n \"|\"\n )}`,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed && !this.requirement.some(\n (value2) => value2 <= dataset.value && value2 >= dataset.value\n )) {\n _addIssue(this, \"value\", dataset, config2, {\n received: dataset.value instanceof Date ? dataset.value.toJSON() : _stringify(dataset.value)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/actions/words/words.ts\n// @__NO_SIDE_EFFECTS__\nfunction words(locales, requirement, message2) {\n return {\n kind: \"validation\",\n type: \"words\",\n reference: words,\n async: false,\n expects: `${requirement}`,\n locales,\n requirement,\n message: message2,\n \"~run\"(dataset, config2) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count !== this.requirement) {\n _addIssue(this, \"words\", dataset, config2, {\n received: `${count}`\n });\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/assert/assert.ts\nfunction assert(schema, input) {\n const issues = schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n if (issues) {\n throw new ValiError(issues);\n }\n}\n\n// src/methods/config/config.ts\n// @__NO_SIDE_EFFECTS__\nfunction config(schema, config2) {\n return {\n ...schema,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config_) {\n return schema[\"~run\"](dataset, { ...config_, ...config2 });\n }\n };\n}\n\n// src/methods/getFallback/getFallback.ts\n// @__NO_SIDE_EFFECTS__\nfunction getFallback(schema, dataset, config2) {\n return typeof schema.fallback === \"function\" ? (\n // @ts-expect-error\n schema.fallback(dataset, config2)\n ) : (\n // @ts-expect-error\n schema.fallback\n );\n}\n\n// src/methods/fallback/fallback.ts\n// @__NO_SIDE_EFFECTS__\nfunction fallback(schema, fallback2) {\n return {\n ...schema,\n fallback: fallback2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const outputDataset = schema[\"~run\"](dataset, config2);\n return outputDataset.issues ? { typed: true, value: getFallback(this, outputDataset, config2) } : outputDataset;\n }\n };\n}\n\n// src/methods/fallback/fallbackAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction fallbackAsync(schema, fallback2) {\n return {\n ...schema,\n fallback: fallback2,\n async: true,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const outputDataset = await schema[\"~run\"](dataset, config2);\n return outputDataset.issues ? {\n typed: true,\n value: await getFallback(this, outputDataset, config2)\n } : outputDataset;\n }\n };\n}\n\n// src/methods/flatten/flatten.ts\n// @__NO_SIDE_EFFECTS__\nfunction flatten(issues) {\n const flatErrors = {};\n for (const issue of issues) {\n if (issue.path) {\n const dotPath = getDotPath(issue);\n if (dotPath) {\n if (!flatErrors.nested) {\n flatErrors.nested = {};\n }\n if (flatErrors.nested[dotPath]) {\n flatErrors.nested[dotPath].push(issue.message);\n } else {\n flatErrors.nested[dotPath] = [issue.message];\n }\n } else {\n if (flatErrors.other) {\n flatErrors.other.push(issue.message);\n } else {\n flatErrors.other = [issue.message];\n }\n }\n } else {\n if (flatErrors.root) {\n flatErrors.root.push(issue.message);\n } else {\n flatErrors.root = [issue.message];\n }\n }\n }\n return flatErrors;\n}\n\n// src/methods/forward/forward.ts\n// @__NO_SIDE_EFFECTS__\nfunction forward(action, path) {\n return {\n ...action,\n \"~run\"(dataset, config2) {\n const prevIssues = dataset.issues && [...dataset.issues];\n dataset = action[\"~run\"](dataset, config2);\n if (dataset.issues) {\n for (const issue of dataset.issues) {\n if (!prevIssues?.includes(issue)) {\n let pathInput = dataset.value;\n for (const key of path) {\n const pathValue = pathInput[key];\n const pathItem = {\n type: \"unknown\",\n origin: \"value\",\n input: pathInput,\n key,\n value: pathValue\n };\n if (issue.path) {\n issue.path.push(pathItem);\n } else {\n issue.path = [pathItem];\n }\n if (!pathValue) {\n break;\n }\n pathInput = pathValue;\n }\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/forward/forwardAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction forwardAsync(action, path) {\n return {\n ...action,\n async: true,\n async \"~run\"(dataset, config2) {\n const prevIssues = dataset.issues && [...dataset.issues];\n dataset = await action[\"~run\"](dataset, config2);\n if (dataset.issues) {\n for (const issue of dataset.issues) {\n if (!prevIssues?.includes(issue)) {\n let pathInput = dataset.value;\n for (const key of path) {\n const pathValue = pathInput[key];\n const pathItem = {\n type: \"unknown\",\n origin: \"value\",\n input: pathInput,\n key,\n value: pathValue\n };\n if (issue.path) {\n issue.path.push(pathItem);\n } else {\n issue.path = [pathItem];\n }\n if (!pathValue) {\n break;\n }\n pathInput = pathValue;\n }\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/getDefault/getDefault.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDefault(schema, dataset, config2) {\n return typeof schema.default === \"function\" ? (\n // @ts-expect-error\n schema.default(dataset, config2)\n ) : (\n // @ts-expect-error\n schema.default\n );\n}\n\n// src/methods/getDefaults/getDefaults.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDefaults(schema) {\n if (\"entries\" in schema) {\n const object2 = {};\n for (const key in schema.entries) {\n object2[key] = /* @__PURE__ */ getDefaults(schema.entries[key]);\n }\n return object2;\n }\n if (\"items\" in schema) {\n return schema.items.map(getDefaults);\n }\n return getDefault(schema);\n}\n\n// src/methods/getDefaults/getDefaultsAsync.ts\n// @__NO_SIDE_EFFECTS__\nasync function getDefaultsAsync(schema) {\n if (\"entries\" in schema) {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(schema.entries).map(async ([key, value2]) => [\n key,\n await /* @__PURE__ */ getDefaultsAsync(value2)\n ])\n )\n );\n }\n if (\"items\" in schema) {\n return Promise.all(schema.items.map(getDefaultsAsync));\n }\n return getDefault(schema);\n}\n\n// src/methods/getDescription/getDescription.ts\n// @__NO_SIDE_EFFECTS__\nfunction getDescription(schema) {\n return _getLastMetadata(schema, \"description\");\n}\n\n// src/methods/getFallbacks/getFallbacks.ts\n// @__NO_SIDE_EFFECTS__\nfunction getFallbacks(schema) {\n if (\"entries\" in schema) {\n const object2 = {};\n for (const key in schema.entries) {\n object2[key] = /* @__PURE__ */ getFallbacks(schema.entries[key]);\n }\n return object2;\n }\n if (\"items\" in schema) {\n return schema.items.map(getFallbacks);\n }\n return getFallback(schema);\n}\n\n// src/methods/getFallbacks/getFallbacksAsync.ts\n// @__NO_SIDE_EFFECTS__\nasync function getFallbacksAsync(schema) {\n if (\"entries\" in schema) {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(schema.entries).map(async ([key, value2]) => [\n key,\n await /* @__PURE__ */ getFallbacksAsync(value2)\n ])\n )\n );\n }\n if (\"items\" in schema) {\n return Promise.all(schema.items.map(getFallbacksAsync));\n }\n return getFallback(schema);\n}\n\n// src/methods/getMetadata/getMetadata.ts\n// @__NO_SIDE_EFFECTS__\nfunction getMetadata(schema) {\n const result = {};\n function depthFirstMerge(schema2) {\n if (\"pipe\" in schema2) {\n for (const item of schema2.pipe) {\n if (item.kind === \"schema\" && \"pipe\" in item) {\n depthFirstMerge(item);\n } else if (item.kind === \"metadata\" && item.type === \"metadata\") {\n Object.assign(result, item.metadata);\n }\n }\n }\n }\n depthFirstMerge(schema);\n return result;\n}\n\n// src/methods/getTitle/getTitle.ts\n// @__NO_SIDE_EFFECTS__\nfunction getTitle(schema) {\n return _getLastMetadata(schema, \"title\");\n}\n\n// src/methods/is/is.ts\n// @__NO_SIDE_EFFECTS__\nfunction is(schema, input) {\n return !schema[\"~run\"]({ value: input }, { abortEarly: true }).issues;\n}\n\n// src/schemas/any/any.ts\n// @__NO_SIDE_EFFECTS__\nfunction any() {\n return {\n kind: \"schema\",\n type: \"any\",\n reference: any,\n expects: \"any\",\n async: false,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset) {\n dataset.typed = true;\n return dataset;\n }\n };\n}\n\n// src/schemas/array/array.ts\n// @__NO_SIDE_EFFECTS__\nfunction array(item, message2) {\n return {\n kind: \"schema\",\n type: \"array\",\n reference: array,\n expects: \"Array\",\n async: false,\n item,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < input.length; key++) {\n const value2 = input[key];\n const itemDataset = this.item[\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/array/arrayAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction arrayAsync(item, message2) {\n return {\n kind: \"schema\",\n type: \"array\",\n reference: arrayAsync,\n expects: \"Array\",\n async: true,\n item,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n input.map((value2) => this.item[\"~run\"]({ value: value2 }, config2))\n );\n for (let key = 0; key < itemDatasets.length; key++) {\n const itemDataset = itemDatasets[key];\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: input[key]\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/bigint/bigint.ts\n// @__NO_SIDE_EFFECTS__\nfunction bigint(message2) {\n return {\n kind: \"schema\",\n type: \"bigint\",\n reference: bigint,\n expects: \"bigint\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"bigint\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/blob/blob.ts\n// @__NO_SIDE_EFFECTS__\nfunction blob(message2) {\n return {\n kind: \"schema\",\n type: \"blob\",\n reference: blob,\n expects: \"Blob\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof Blob) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/boolean/boolean.ts\n// @__NO_SIDE_EFFECTS__\nfunction boolean(message2) {\n return {\n kind: \"schema\",\n type: \"boolean\",\n reference: boolean,\n expects: \"boolean\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"boolean\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/custom/custom.ts\n// @__NO_SIDE_EFFECTS__\nfunction custom(check2, message2) {\n return {\n kind: \"schema\",\n type: \"custom\",\n reference: custom,\n expects: \"unknown\",\n async: false,\n check: check2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.check(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/custom/customAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction customAsync(check2, message2) {\n return {\n kind: \"schema\",\n type: \"custom\",\n reference: customAsync,\n expects: \"unknown\",\n async: true,\n check: check2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (await this.check(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/date/date.ts\n// @__NO_SIDE_EFFECTS__\nfunction date(message2) {\n return {\n kind: \"schema\",\n type: \"date\",\n reference: date,\n expects: \"Date\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof Date) {\n if (!isNaN(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2, {\n received: '\"Invalid Date\"'\n });\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/enum/enum.ts\n// @__NO_SIDE_EFFECTS__\nfunction enum_(enum__, message2) {\n const options = [];\n for (const key in enum__) {\n if (`${+key}` !== key || typeof enum__[key] !== \"string\" || !Object.is(enum__[enum__[key]], +key)) {\n options.push(enum__[key]);\n }\n }\n return {\n kind: \"schema\",\n type: \"enum\",\n reference: enum_,\n expects: _joinExpects(options.map(_stringify), \"|\"),\n async: false,\n enum: enum__,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.options.includes(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/exactOptional/exactOptional.ts\n// @__NO_SIDE_EFFECTS__\nfunction exactOptional(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"exact_optional\",\n reference: exactOptional,\n expects: wrapped.expects,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/exactOptional/exactOptionalAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction exactOptionalAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"exact_optional\",\n reference: exactOptionalAsync,\n expects: wrapped.expects,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/file/file.ts\n// @__NO_SIDE_EFFECTS__\nfunction file(message2) {\n return {\n kind: \"schema\",\n type: \"file\",\n reference: file,\n expects: \"File\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof File) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/function/function.ts\n// @__NO_SIDE_EFFECTS__\nfunction function_(message2) {\n return {\n kind: \"schema\",\n type: \"function\",\n reference: function_,\n expects: \"Function\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"function\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/instance/instance.ts\n// @__NO_SIDE_EFFECTS__\nfunction instance(class_, message2) {\n return {\n kind: \"schema\",\n type: \"instance\",\n reference: instance,\n expects: class_.name,\n async: false,\n class: class_,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof this.class) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/intersect/utils/_merge/_merge.ts\n// @__NO_SIDE_EFFECTS__\nfunction _merge(value1, value2) {\n if (typeof value1 === typeof value2) {\n if (value1 === value2 || value1 instanceof Date && value2 instanceof Date && +value1 === +value2) {\n return { value: value1 };\n }\n if (value1 && value2 && value1.constructor === Object && value2.constructor === Object) {\n for (const key in value2) {\n if (key in value1) {\n const dataset = /* @__PURE__ */ _merge(value1[key], value2[key]);\n if (dataset.issue) {\n return dataset;\n }\n value1[key] = dataset.value;\n } else {\n value1[key] = value2[key];\n }\n }\n return { value: value1 };\n }\n if (Array.isArray(value1) && Array.isArray(value2)) {\n if (value1.length === value2.length) {\n for (let index = 0; index < value1.length; index++) {\n const dataset = /* @__PURE__ */ _merge(value1[index], value2[index]);\n if (dataset.issue) {\n return dataset;\n }\n value1[index] = dataset.value;\n }\n return { value: value1 };\n }\n }\n }\n return { issue: true };\n}\n\n// src/schemas/intersect/intersect.ts\n// @__NO_SIDE_EFFECTS__\nfunction intersect(options, message2) {\n return {\n kind: \"schema\",\n type: \"intersect\",\n reference: intersect,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"&\"\n ),\n async: false,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.options.length) {\n const input = dataset.value;\n let outputs;\n dataset.typed = true;\n for (const schema of this.options) {\n const optionDataset = schema[\"~run\"]({ value: input }, config2);\n if (optionDataset.issues) {\n if (dataset.issues) {\n dataset.issues.push(...optionDataset.issues);\n } else {\n dataset.issues = optionDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!optionDataset.typed) {\n dataset.typed = false;\n }\n if (dataset.typed) {\n if (outputs) {\n outputs.push(optionDataset.value);\n } else {\n outputs = [optionDataset.value];\n }\n }\n }\n if (dataset.typed) {\n dataset.value = outputs[0];\n for (let index = 1; index < outputs.length; index++) {\n const mergeDataset = _merge(dataset.value, outputs[index]);\n if (mergeDataset.issue) {\n _addIssue(this, \"type\", dataset, config2, {\n received: \"unknown\"\n });\n break;\n }\n dataset.value = mergeDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/intersect/intersectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction intersectAsync(options, message2) {\n return {\n kind: \"schema\",\n type: \"intersect\",\n reference: intersectAsync,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"&\"\n ),\n async: true,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (this.options.length) {\n const input = dataset.value;\n let outputs;\n dataset.typed = true;\n const optionDatasets = await Promise.all(\n this.options.map((schema) => schema[\"~run\"]({ value: input }, config2))\n );\n for (const optionDataset of optionDatasets) {\n if (optionDataset.issues) {\n if (dataset.issues) {\n dataset.issues.push(...optionDataset.issues);\n } else {\n dataset.issues = optionDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!optionDataset.typed) {\n dataset.typed = false;\n }\n if (dataset.typed) {\n if (outputs) {\n outputs.push(optionDataset.value);\n } else {\n outputs = [optionDataset.value];\n }\n }\n }\n if (dataset.typed) {\n dataset.value = outputs[0];\n for (let index = 1; index < outputs.length; index++) {\n const mergeDataset = _merge(dataset.value, outputs[index]);\n if (mergeDataset.issue) {\n _addIssue(this, \"type\", dataset, config2, {\n received: \"unknown\"\n });\n break;\n }\n dataset.value = mergeDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/lazy/lazy.ts\n// @__NO_SIDE_EFFECTS__\nfunction lazy(getter) {\n return {\n kind: \"schema\",\n type: \"lazy\",\n reference: lazy,\n expects: \"unknown\",\n async: false,\n getter,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n return this.getter(dataset.value)[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/lazy/lazyAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction lazyAsync(getter) {\n return {\n kind: \"schema\",\n type: \"lazy\",\n reference: lazyAsync,\n expects: \"unknown\",\n async: true,\n getter,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n return (await this.getter(dataset.value))[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/literal/literal.ts\n// @__NO_SIDE_EFFECTS__\nfunction literal(literal_, message2) {\n return {\n kind: \"schema\",\n type: \"literal\",\n reference: literal,\n expects: _stringify(literal_),\n async: false,\n literal: literal_,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === this.literal) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseObject/looseObject.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseObject(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"loose_object\",\n reference: looseObject,\n expects: \"Object\",\n async: false,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n dataset.value[key] = input[key];\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseObject/looseObjectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseObjectAsync(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"loose_object\",\n reference: looseObjectAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n );\n for (const [key, value2, valueSchema, valueDataset] of valueDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n dataset.value[key] = input[key];\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseTuple/looseTuple.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseTuple(items, message2) {\n return {\n kind: \"schema\",\n type: \"loose_tuple\",\n reference: looseTuple,\n expects: \"Array\",\n async: false,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n dataset.value.push(input[key]);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/looseTuple/looseTupleAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction looseTupleAsync(items, message2) {\n return {\n kind: \"schema\",\n type: \"loose_tuple\",\n reference: looseTupleAsync,\n expects: \"Array\",\n async: true,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [key, value2, await item[\"~run\"]({ value: value2 }, config2)];\n })\n );\n for (const [key, value2, itemDataset] of itemDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n dataset.value.push(input[key]);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/map/map.ts\n// @__NO_SIDE_EFFECTS__\nfunction map(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"map\",\n reference: map,\n expects: \"Map\",\n async: false,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Map) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Map();\n for (const [inputKey, inputValue] of input) {\n const keyDataset = this.key[\"~run\"]({ value: inputKey }, config2);\n if (keyDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"key\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of keyDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n const valueDataset = this.value[\"~run\"](\n { value: inputValue },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"value\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.set(keyDataset.value, valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/map/mapAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction mapAsync(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"map\",\n reference: mapAsync,\n expects: \"Map\",\n async: true,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Map) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Map();\n const datasets = await Promise.all(\n [...input].map(\n ([inputKey, inputValue]) => Promise.all([\n inputKey,\n inputValue,\n this.key[\"~run\"]({ value: inputKey }, config2),\n this.value[\"~run\"]({ value: inputValue }, config2)\n ])\n )\n );\n for (const [\n inputKey,\n inputValue,\n keyDataset,\n valueDataset\n ] of datasets) {\n if (keyDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"key\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of keyDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (valueDataset.issues) {\n const pathItem = {\n type: \"map\",\n origin: \"value\",\n input,\n key: inputKey,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.set(keyDataset.value, valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nan/nan.ts\n// @__NO_SIDE_EFFECTS__\nfunction nan(message2) {\n return {\n kind: \"schema\",\n type: \"nan\",\n reference: nan,\n expects: \"NaN\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (Number.isNaN(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/never/never.ts\n// @__NO_SIDE_EFFECTS__\nfunction never(message2) {\n return {\n kind: \"schema\",\n type: \"never\",\n reference: never,\n expects: \"never\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n _addIssue(this, \"type\", dataset, config2);\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullable/nonNullable.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullable(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullable\",\n reference: nonNullable,\n expects: \"!null\",\n async: false,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value !== null) {\n dataset = this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullable/nonNullableAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullableAsync(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullable\",\n reference: nonNullableAsync,\n expects: \"!null\",\n async: true,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value !== null) {\n dataset = await this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullish/nonNullish.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullish(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullish\",\n reference: nonNullish,\n expects: \"(!null & !undefined)\",\n async: false,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (!(dataset.value === null || dataset.value === void 0)) {\n dataset = this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonNullish/nonNullishAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonNullishAsync(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_nullish\",\n reference: nonNullishAsync,\n expects: \"(!null & !undefined)\",\n async: true,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (!(dataset.value === null || dataset.value === void 0)) {\n dataset = await this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonOptional/nonOptional.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonOptional(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_optional\",\n reference: nonOptional,\n expects: \"!undefined\",\n async: false,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value !== void 0) {\n dataset = this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nonOptional/nonOptionalAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nonOptionalAsync(wrapped, message2) {\n return {\n kind: \"schema\",\n type: \"non_optional\",\n reference: nonOptionalAsync,\n expects: \"!undefined\",\n async: true,\n wrapped,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value !== void 0) {\n dataset = await this.wrapped[\"~run\"](dataset, config2);\n }\n if (dataset.value === void 0) {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/null/null.ts\n// @__NO_SIDE_EFFECTS__\nfunction null_(message2) {\n return {\n kind: \"schema\",\n type: \"null\",\n reference: null_,\n expects: \"null\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === null) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/nullable/nullable.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullable(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullable\",\n reference: nullable,\n expects: `(${wrapped.expects} | null)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === null) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === null) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/nullable/nullableAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullableAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullable\",\n reference: nullableAsync,\n expects: `(${wrapped.expects} | null)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === null) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === null) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/nullish/nullish.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullish(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullish\",\n reference: nullish,\n expects: `(${wrapped.expects} | null | undefined)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === null || dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/nullish/nullishAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction nullishAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"nullish\",\n reference: nullishAsync,\n expects: `(${wrapped.expects} | null | undefined)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === null || dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === null || dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/number/number.ts\n// @__NO_SIDE_EFFECTS__\nfunction number(message2) {\n return {\n kind: \"schema\",\n type: \"number\",\n reference: number,\n expects: \"number\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"number\" && !isNaN(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/object/object.ts\n// @__NO_SIDE_EFFECTS__\nfunction object(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"object\",\n reference: object,\n expects: \"Object\",\n async: false,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/object/objectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction objectAsync(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"object\",\n reference: objectAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n );\n for (const [key, value2, valueSchema, valueDataset] of valueDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/objectWithRest/objectWithRest.ts\n// @__NO_SIDE_EFFECTS__\nfunction objectWithRest(entries2, rest, message2) {\n return {\n kind: \"schema\",\n type: \"object_with_rest\",\n reference: objectWithRest,\n expects: \"Object\",\n async: false,\n entries: entries2,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n const valueDataset = this.rest[\"~run\"](\n // @ts-expect-error\n { value: input[key] },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/objectWithRest/objectWithRestAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction objectWithRestAsync(entries2, rest, message2) {\n return {\n kind: \"schema\",\n type: \"object_with_rest\",\n reference: objectWithRestAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const [normalDatasets, restDatasets] = await Promise.all([\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value asynchronously\n Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n ),\n // Parse other entries with rest schema asynchronously\n // Hint: We exclude specific keys for security reasons\n Promise.all(\n Object.entries(input).filter(\n ([key]) => _isValidObjectKey(input, key) && !(key in this.entries)\n ).map(\n async ([key, value2]) => [\n key,\n value2,\n await this.rest[\"~run\"]({ value: value2 }, config2)\n ]\n )\n )\n ]);\n for (const [key, value2, valueSchema, valueDataset] of normalDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const [key, value2, valueDataset] of restDatasets) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/optional/optional.ts\n// @__NO_SIDE_EFFECTS__\nfunction optional(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"optional\",\n reference: optional,\n expects: `(${wrapped.expects} | undefined)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/optional/optionalAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction optionalAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"optional\",\n reference: optionalAsync,\n expects: `(${wrapped.expects} | undefined)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/picklist/picklist.ts\n// @__NO_SIDE_EFFECTS__\nfunction picklist(options, message2) {\n return {\n kind: \"schema\",\n type: \"picklist\",\n reference: picklist,\n expects: _joinExpects(options.map(_stringify), \"|\"),\n async: false,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (this.options.includes(dataset.value)) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/promise/promise.ts\n// @__NO_SIDE_EFFECTS__\nfunction promise(message2) {\n return {\n kind: \"schema\",\n type: \"promise\",\n reference: promise,\n expects: \"Promise\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value instanceof Promise) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/record/record.ts\n// @__NO_SIDE_EFFECTS__\nfunction record(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"record\",\n reference: record,\n expects: \"Object\",\n async: false,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const entryKey in input) {\n if (_isValidObjectKey(input, entryKey)) {\n const entryValue = input[entryKey];\n const keyDataset = this.key[\"~run\"]({ value: entryKey }, config2);\n if (keyDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"key\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of keyDataset.issues) {\n issue.path = [pathItem];\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n const valueDataset = this.value[\"~run\"](\n { value: entryValue },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n if (keyDataset.typed) {\n dataset.value[keyDataset.value] = valueDataset.value;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/record/recordAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction recordAsync(key, value2, message2) {\n return {\n kind: \"schema\",\n type: \"record\",\n reference: recordAsync,\n expects: \"Object\",\n async: true,\n key,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const datasets = await Promise.all(\n Object.entries(input).filter(([key2]) => _isValidObjectKey(input, key2)).map(\n ([entryKey, entryValue]) => Promise.all([\n entryKey,\n entryValue,\n this.key[\"~run\"]({ value: entryKey }, config2),\n this.value[\"~run\"]({ value: entryValue }, config2)\n ])\n )\n );\n for (const [\n entryKey,\n entryValue,\n keyDataset,\n valueDataset\n ] of datasets) {\n if (keyDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"key\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of keyDataset.issues) {\n issue.path = [pathItem];\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = keyDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key: entryKey,\n value: entryValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n if (keyDataset.typed) {\n dataset.value[keyDataset.value] = valueDataset.value;\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/set/set.ts\n// @__NO_SIDE_EFFECTS__\nfunction set(value2, message2) {\n return {\n kind: \"schema\",\n type: \"set\",\n reference: set,\n expects: \"Set\",\n async: false,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Set) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Set();\n for (const inputValue of input) {\n const valueDataset = this.value[\"~run\"](\n { value: inputValue },\n config2\n );\n if (valueDataset.issues) {\n const pathItem = {\n type: \"set\",\n origin: \"value\",\n input,\n key: null,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.add(valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/set/setAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction setAsync(value2, message2) {\n return {\n kind: \"schema\",\n type: \"set\",\n reference: setAsync,\n expects: \"Set\",\n async: true,\n value: value2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input instanceof Set) {\n dataset.typed = true;\n dataset.value = /* @__PURE__ */ new Set();\n const valueDatasets = await Promise.all(\n [...input].map(\n async (inputValue) => [\n inputValue,\n await this.value[\"~run\"]({ value: inputValue }, config2)\n ]\n )\n );\n for (const [inputValue, valueDataset] of valueDatasets) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"set\",\n origin: \"value\",\n input,\n key: null,\n value: inputValue\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.add(valueDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictObject/strictObject.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictObject(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"strict_object\",\n reference: strictObject,\n expects: \"Object\",\n async: false,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : getDefault(valueSchema);\n const valueDataset = valueSchema[\"~run\"]({ value: value2 }, config2);\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (!(key in this.entries)) {\n _addIssue(this, \"key\", dataset, config2, {\n input: key,\n expected: \"never\",\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictObject/strictObjectAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictObjectAsync(entries2, message2) {\n return {\n kind: \"schema\",\n type: \"strict_object\",\n reference: strictObjectAsync,\n expects: \"Object\",\n async: true,\n entries: entries2,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n dataset.typed = true;\n dataset.value = {};\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && // @ts-expect-error\n valueSchema.default !== void 0) {\n const value2 = key in input ? (\n // @ts-expect-error\n input[key]\n ) : await getDefault(valueSchema);\n return [\n key,\n value2,\n valueSchema,\n await valueSchema[\"~run\"]({ value: value2 }, config2)\n ];\n }\n return [\n key,\n // @ts-expect-error\n input[key],\n valueSchema,\n null\n ];\n })\n );\n for (const [key, value2, valueSchema, valueDataset] of valueDatasets) {\n if (valueDataset) {\n if (valueDataset.issues) {\n const pathItem = {\n type: \"object\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = valueDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n dataset.value[key] = valueDataset.value;\n } else if (valueSchema.fallback !== void 0) {\n dataset.value[key] = await getFallback(valueSchema);\n } else if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n _addIssue(this, \"key\", dataset, config2, {\n input: void 0,\n expected: `\"${key}\"`,\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n value: value2\n }\n ]\n });\n if (config2.abortEarly) {\n break;\n }\n }\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const key in input) {\n if (!(key in this.entries)) {\n _addIssue(this, \"key\", dataset, config2, {\n input: key,\n expected: \"never\",\n path: [\n {\n type: \"object\",\n origin: \"key\",\n input,\n key,\n // @ts-expect-error\n value: input[key]\n }\n ]\n });\n break;\n }\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictTuple/strictTuple.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictTuple(items, message2) {\n return {\n kind: \"schema\",\n type: \"strict_tuple\",\n reference: strictTuple,\n expects: \"Array\",\n async: false,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!(dataset.issues && config2.abortEarly) && this.items.length < input.length) {\n _addIssue(this, \"type\", dataset, config2, {\n input: input[this.items.length],\n expected: \"never\",\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input,\n key: this.items.length,\n value: input[this.items.length]\n }\n ]\n });\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/strictTuple/strictTupleAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction strictTupleAsync(items, message2) {\n return {\n kind: \"schema\",\n type: \"strict_tuple\",\n reference: strictTupleAsync,\n expects: \"Array\",\n async: true,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [key, value2, await item[\"~run\"]({ value: value2 }, config2)];\n })\n );\n for (const [key, value2, itemDataset] of itemDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!(dataset.issues && config2.abortEarly) && this.items.length < input.length) {\n _addIssue(this, \"type\", dataset, config2, {\n input: input[this.items.length],\n expected: \"never\",\n path: [\n {\n type: \"array\",\n origin: \"value\",\n input,\n key: this.items.length,\n value: input[this.items.length]\n }\n ]\n });\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/string/string.ts\n// @__NO_SIDE_EFFECTS__\nfunction string(message2) {\n return {\n kind: \"schema\",\n type: \"string\",\n reference: string,\n expects: \"string\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"string\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/symbol/symbol.ts\n// @__NO_SIDE_EFFECTS__\nfunction symbol(message2) {\n return {\n kind: \"schema\",\n type: \"symbol\",\n reference: symbol,\n expects: \"symbol\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (typeof dataset.value === \"symbol\") {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tuple/tuple.ts\n// @__NO_SIDE_EFFECTS__\nfunction tuple(items, message2) {\n return {\n kind: \"schema\",\n type: \"tuple\",\n reference: tuple,\n expects: \"Array\",\n async: false,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tuple/tupleAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction tupleAsync(items, message2) {\n return {\n kind: \"schema\",\n type: \"tuple\",\n reference: tupleAsync,\n expects: \"Array\",\n async: true,\n items,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [key, value2, await item[\"~run\"]({ value: value2 }, config2)];\n })\n );\n for (const [key, value2, itemDataset] of itemDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tupleWithRest/tupleWithRest.ts\n// @__NO_SIDE_EFFECTS__\nfunction tupleWithRest(items, rest, message2) {\n return {\n kind: \"schema\",\n type: \"tuple_with_rest\",\n reference: tupleWithRest,\n expects: \"Array\",\n async: false,\n items,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n for (let key = 0; key < this.items.length; key++) {\n const value2 = input[key];\n const itemDataset = this.items[key][\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n const value2 = input[key];\n const itemDataset = this.rest[\"~run\"]({ value: value2 }, config2);\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/tupleWithRest/tupleWithRestAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction tupleWithRestAsync(items, rest, message2) {\n return {\n kind: \"schema\",\n type: \"tuple_with_rest\",\n reference: tupleWithRestAsync,\n expects: \"Array\",\n async: true,\n items,\n rest,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (Array.isArray(input)) {\n dataset.typed = true;\n dataset.value = [];\n const [normalDatasets, restDatasets] = await Promise.all([\n // Parse schema of each normal item\n Promise.all(\n this.items.map(async (item, key) => {\n const value2 = input[key];\n return [\n key,\n value2,\n await item[\"~run\"]({ value: value2 }, config2)\n ];\n })\n ),\n // Parse other items with rest schema\n Promise.all(\n input.slice(this.items.length).map(async (value2, key) => {\n return [\n key + this.items.length,\n value2,\n await this.rest[\"~run\"]({ value: value2 }, config2)\n ];\n })\n )\n ]);\n for (const [key, value2, itemDataset] of normalDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n if (!dataset.issues || !config2.abortEarly) {\n for (const [key, value2, itemDataset] of restDatasets) {\n if (itemDataset.issues) {\n const pathItem = {\n type: \"array\",\n origin: \"value\",\n input,\n key,\n value: value2\n };\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n issue.path = [pathItem];\n }\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n dataset.issues = itemDataset.issues;\n }\n if (config2.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n dataset.value.push(itemDataset.value);\n }\n }\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/undefined/undefined.ts\n// @__NO_SIDE_EFFECTS__\nfunction undefined_(message2) {\n return {\n kind: \"schema\",\n type: \"undefined\",\n reference: undefined_,\n expects: \"undefined\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/undefinedable/undefinedable.ts\n// @__NO_SIDE_EFFECTS__\nfunction undefinedable(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"undefinedable\",\n reference: undefinedable,\n expects: `(${wrapped.expects} | undefined)`,\n async: false,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/undefinedable/undefinedableAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction undefinedableAsync(wrapped, default_) {\n return {\n kind: \"schema\",\n type: \"undefinedable\",\n reference: undefinedableAsync,\n expects: `(${wrapped.expects} | undefined)`,\n async: true,\n wrapped,\n default: default_,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n if (this.default !== void 0) {\n dataset.value = await getDefault(this, dataset, config2);\n }\n if (dataset.value === void 0) {\n dataset.typed = true;\n return dataset;\n }\n }\n return this.wrapped[\"~run\"](dataset, config2);\n }\n };\n}\n\n// src/schemas/union/utils/_subIssues/_subIssues.ts\n// @__NO_SIDE_EFFECTS__\nfunction _subIssues(datasets) {\n let issues;\n if (datasets) {\n for (const dataset of datasets) {\n if (issues) {\n issues.push(...dataset.issues);\n } else {\n issues = dataset.issues;\n }\n }\n }\n return issues;\n}\n\n// src/schemas/union/union.ts\n// @__NO_SIDE_EFFECTS__\nfunction union(options, message2) {\n return {\n kind: \"schema\",\n type: \"union\",\n reference: union,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"|\"\n ),\n async: false,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n let validDataset;\n let typedDatasets;\n let untypedDatasets;\n for (const schema of this.options) {\n const optionDataset = schema[\"~run\"]({ value: dataset.value }, config2);\n if (optionDataset.typed) {\n if (optionDataset.issues) {\n if (typedDatasets) {\n typedDatasets.push(optionDataset);\n } else {\n typedDatasets = [optionDataset];\n }\n } else {\n validDataset = optionDataset;\n break;\n }\n } else {\n if (untypedDatasets) {\n untypedDatasets.push(optionDataset);\n } else {\n untypedDatasets = [optionDataset];\n }\n }\n }\n if (validDataset) {\n return validDataset;\n }\n if (typedDatasets) {\n if (typedDatasets.length === 1) {\n return typedDatasets[0];\n }\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(typedDatasets)\n });\n dataset.typed = true;\n } else if (untypedDatasets?.length === 1) {\n return untypedDatasets[0];\n } else {\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(untypedDatasets)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/union/unionAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction unionAsync(options, message2) {\n return {\n kind: \"schema\",\n type: \"union\",\n reference: unionAsync,\n expects: _joinExpects(\n options.map((option) => option.expects),\n \"|\"\n ),\n async: true,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n let validDataset;\n let typedDatasets;\n let untypedDatasets;\n for (const schema of this.options) {\n const optionDataset = await schema[\"~run\"](\n { value: dataset.value },\n config2\n );\n if (optionDataset.typed) {\n if (optionDataset.issues) {\n if (typedDatasets) {\n typedDatasets.push(optionDataset);\n } else {\n typedDatasets = [optionDataset];\n }\n } else {\n validDataset = optionDataset;\n break;\n }\n } else {\n if (untypedDatasets) {\n untypedDatasets.push(optionDataset);\n } else {\n untypedDatasets = [optionDataset];\n }\n }\n }\n if (validDataset) {\n return validDataset;\n }\n if (typedDatasets) {\n if (typedDatasets.length === 1) {\n return typedDatasets[0];\n }\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(typedDatasets)\n });\n dataset.typed = true;\n } else if (untypedDatasets?.length === 1) {\n return untypedDatasets[0];\n } else {\n _addIssue(this, \"type\", dataset, config2, {\n issues: _subIssues(untypedDatasets)\n });\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/unknown/unknown.ts\n// @__NO_SIDE_EFFECTS__\nfunction unknown() {\n return {\n kind: \"schema\",\n type: \"unknown\",\n reference: unknown,\n expects: \"unknown\",\n async: false,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset) {\n dataset.typed = true;\n return dataset;\n }\n };\n}\n\n// src/schemas/variant/variant.ts\n// @__NO_SIDE_EFFECTS__\nfunction variant(key, options, message2) {\n return {\n kind: \"schema\",\n type: \"variant\",\n reference: variant,\n expects: \"Object\",\n async: false,\n key,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n let outputDataset;\n let maxDiscriminatorPriority = 0;\n let invalidDiscriminatorKey = this.key;\n let expectedDiscriminators = [];\n const parseOptions = (variant2, allKeys) => {\n for (const schema of variant2.options) {\n if (schema.type === \"variant\") {\n parseOptions(schema, new Set(allKeys).add(schema.key));\n } else {\n let keysAreValid = true;\n let currentPriority = 0;\n for (const currentKey of allKeys) {\n const discriminatorSchema = schema.entries[currentKey];\n if (currentKey in input ? discriminatorSchema[\"~run\"](\n // @ts-expect-error\n { typed: false, value: input[currentKey] },\n { abortEarly: true }\n ).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n keysAreValid = false;\n if (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n maxDiscriminatorPriority = currentPriority;\n invalidDiscriminatorKey = currentKey;\n expectedDiscriminators = [];\n }\n if (invalidDiscriminatorKey === currentKey) {\n expectedDiscriminators.push(\n schema.entries[currentKey].expects\n );\n }\n break;\n }\n currentPriority++;\n }\n if (keysAreValid) {\n const optionDataset = schema[\"~run\"]({ value: input }, config2);\n if (!outputDataset || !outputDataset.typed && optionDataset.typed) {\n outputDataset = optionDataset;\n }\n }\n }\n if (outputDataset && !outputDataset.issues) {\n break;\n }\n }\n };\n parseOptions(this, /* @__PURE__ */ new Set([this.key]));\n if (outputDataset) {\n return outputDataset;\n }\n _addIssue(this, \"type\", dataset, config2, {\n // @ts-expect-error\n input: input[invalidDiscriminatorKey],\n expected: _joinExpects(expectedDiscriminators, \"|\"),\n path: [\n {\n type: \"object\",\n origin: \"value\",\n input,\n key: invalidDiscriminatorKey,\n // @ts-expect-error\n value: input[invalidDiscriminatorKey]\n }\n ]\n });\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/variant/variantAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction variantAsync(key, options, message2) {\n return {\n kind: \"schema\",\n type: \"variant\",\n reference: variantAsync,\n expects: \"Object\",\n async: true,\n key,\n options,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n const input = dataset.value;\n if (input && typeof input === \"object\") {\n let outputDataset;\n let maxDiscriminatorPriority = 0;\n let invalidDiscriminatorKey = this.key;\n let expectedDiscriminators = [];\n const parseOptions = async (variant2, allKeys) => {\n for (const schema of variant2.options) {\n if (schema.type === \"variant\") {\n await parseOptions(schema, new Set(allKeys).add(schema.key));\n } else {\n let keysAreValid = true;\n let currentPriority = 0;\n for (const currentKey of allKeys) {\n const discriminatorSchema = schema.entries[currentKey];\n if (currentKey in input ? (await discriminatorSchema[\"~run\"](\n // @ts-expect-error\n { typed: false, value: input[currentKey] },\n { abortEarly: true }\n )).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n keysAreValid = false;\n if (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n maxDiscriminatorPriority = currentPriority;\n invalidDiscriminatorKey = currentKey;\n expectedDiscriminators = [];\n }\n if (invalidDiscriminatorKey === currentKey) {\n expectedDiscriminators.push(\n schema.entries[currentKey].expects\n );\n }\n break;\n }\n currentPriority++;\n }\n if (keysAreValid) {\n const optionDataset = await schema[\"~run\"](\n { value: input },\n config2\n );\n if (!outputDataset || !outputDataset.typed && optionDataset.typed) {\n outputDataset = optionDataset;\n }\n }\n }\n if (outputDataset && !outputDataset.issues) {\n break;\n }\n }\n };\n await parseOptions(this, /* @__PURE__ */ new Set([this.key]));\n if (outputDataset) {\n return outputDataset;\n }\n _addIssue(this, \"type\", dataset, config2, {\n // @ts-expect-error\n input: input[invalidDiscriminatorKey],\n expected: _joinExpects(expectedDiscriminators, \"|\"),\n path: [\n {\n type: \"object\",\n origin: \"value\",\n input,\n key: invalidDiscriminatorKey,\n // @ts-expect-error\n value: input[invalidDiscriminatorKey]\n }\n ]\n });\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/schemas/void/void.ts\n// @__NO_SIDE_EFFECTS__\nfunction void_(message2) {\n return {\n kind: \"schema\",\n type: \"void\",\n reference: void_,\n expects: \"void\",\n async: false,\n message: message2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n if (dataset.value === void 0) {\n dataset.typed = true;\n } else {\n _addIssue(this, \"type\", dataset, config2);\n }\n return dataset;\n }\n };\n}\n\n// src/methods/keyof/keyof.ts\n// @__NO_SIDE_EFFECTS__\nfunction keyof(schema, message2) {\n return picklist(Object.keys(schema.entries), message2);\n}\n\n// src/methods/message/message.ts\n// @__NO_SIDE_EFFECTS__\nfunction message(schema, message_) {\n return {\n ...schema,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n return schema[\"~run\"](dataset, { ...config2, message: message_ });\n }\n };\n}\n\n// src/methods/omit/omit.ts\n// @__NO_SIDE_EFFECTS__\nfunction omit(schema, keys) {\n const entries2 = {\n ...schema.entries\n };\n for (const key of keys) {\n delete entries2[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/parse/parse.ts\nfunction parse(schema, input, config2) {\n const dataset = schema[\"~run\"]({ value: input }, getGlobalConfig(config2));\n if (dataset.issues) {\n throw new ValiError(dataset.issues);\n }\n return dataset.value;\n}\n\n// src/methods/parse/parseAsync.ts\nasync function parseAsync(schema, input, config2) {\n const dataset = await schema[\"~run\"](\n { value: input },\n getGlobalConfig(config2)\n );\n if (dataset.issues) {\n throw new ValiError(dataset.issues);\n }\n return dataset.value;\n}\n\n// src/methods/parser/parser.ts\n// @__NO_SIDE_EFFECTS__\nfunction parser(schema, config2) {\n const func = (input) => parse(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/parser/parserAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction parserAsync(schema, config2) {\n const func = (input) => parseAsync(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/partial/partial.ts\n// @__NO_SIDE_EFFECTS__\nfunction partial(schema, keys) {\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? optional(schema.entries[key]) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/partial/partialAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction partialAsync(schema, keys) {\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? optionalAsync(schema.entries[key]) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/pick/pick.ts\n// @__NO_SIDE_EFFECTS__\nfunction pick(schema, keys) {\n const entries2 = {};\n for (const key of keys) {\n entries2[key] = schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/pipe/pipe.ts\n// @__NO_SIDE_EFFECTS__\nfunction pipe(...pipe2) {\n return {\n ...pipe2[0],\n pipe: pipe2,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n \"~run\"(dataset, config2) {\n for (const item of pipe2) {\n if (item.kind !== \"metadata\") {\n if (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n dataset.typed = false;\n break;\n }\n if (!dataset.issues || !config2.abortEarly && !config2.abortPipeEarly) {\n dataset = item[\"~run\"](dataset, config2);\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/pipe/pipeAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction pipeAsync(...pipe2) {\n return {\n ...pipe2[0],\n pipe: pipe2,\n async: true,\n get \"~standard\"() {\n return _getStandardProps(this);\n },\n async \"~run\"(dataset, config2) {\n for (const item of pipe2) {\n if (item.kind !== \"metadata\") {\n if (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n dataset.typed = false;\n break;\n }\n if (!dataset.issues || !config2.abortEarly && !config2.abortPipeEarly) {\n dataset = await item[\"~run\"](dataset, config2);\n }\n }\n }\n return dataset;\n }\n };\n}\n\n// src/methods/required/required.ts\n// @__NO_SIDE_EFFECTS__\nfunction required(schema, arg2, arg3) {\n const keys = Array.isArray(arg2) ? arg2 : void 0;\n const message2 = Array.isArray(arg2) ? arg3 : arg2;\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? nonOptional(schema.entries[key], message2) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/required/requiredAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction requiredAsync(schema, arg2, arg3) {\n const keys = Array.isArray(arg2) ? arg2 : void 0;\n const message2 = Array.isArray(arg2) ? arg3 : arg2;\n const entries2 = {};\n for (const key in schema.entries) {\n entries2[key] = !keys || keys.includes(key) ? nonOptionalAsync(schema.entries[key], message2) : schema.entries[key];\n }\n return {\n ...schema,\n entries: entries2,\n get \"~standard\"() {\n return _getStandardProps(this);\n }\n };\n}\n\n// src/methods/safeParse/safeParse.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeParse(schema, input, config2) {\n const dataset = schema[\"~run\"]({ value: input }, getGlobalConfig(config2));\n return {\n typed: dataset.typed,\n success: !dataset.issues,\n output: dataset.value,\n issues: dataset.issues\n };\n}\n\n// src/methods/safeParse/safeParseAsync.ts\n// @__NO_SIDE_EFFECTS__\nasync function safeParseAsync(schema, input, config2) {\n const dataset = await schema[\"~run\"](\n { value: input },\n getGlobalConfig(config2)\n );\n return {\n typed: dataset.typed,\n success: !dataset.issues,\n output: dataset.value,\n issues: dataset.issues\n };\n}\n\n// src/methods/safeParser/safeParser.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeParser(schema, config2) {\n const func = (input) => safeParse(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/safeParser/safeParserAsync.ts\n// @__NO_SIDE_EFFECTS__\nfunction safeParserAsync(schema, config2) {\n const func = (input) => safeParseAsync(schema, input, config2);\n func.schema = schema;\n func.config = config2;\n return func;\n}\n\n// src/methods/summarize/summarize.ts\n// @__NO_SIDE_EFFECTS__\nfunction summarize(issues) {\n let summary = \"\";\n for (const issue of issues) {\n if (summary) {\n summary += \"\\n\";\n }\n summary += `\\xD7 ${issue.message}`;\n const dotPath = getDotPath(issue);\n if (dotPath) {\n summary += `\n \\u2192 at ${dotPath}`;\n }\n }\n return summary;\n}\n\n// src/methods/unwrap/unwrap.ts\n// @__NO_SIDE_EFFECTS__\nfunction unwrap(schema) {\n return schema.wrapped;\n}\nexport {\n BASE64_REGEX,\n BIC_REGEX,\n CUID2_REGEX,\n DECIMAL_REGEX,\n DIGITS_REGEX,\n EMAIL_REGEX,\n EMOJI_REGEX,\n HEXADECIMAL_REGEX,\n HEX_COLOR_REGEX,\n IMEI_REGEX,\n IPV4_REGEX,\n IPV6_REGEX,\n IP_REGEX,\n ISO_DATE_REGEX,\n ISO_DATE_TIME_REGEX,\n ISO_TIMESTAMP_REGEX,\n ISO_TIME_REGEX,\n ISO_TIME_SECOND_REGEX,\n ISO_WEEK_REGEX,\n MAC48_REGEX,\n MAC64_REGEX,\n MAC_REGEX,\n NANO_ID_REGEX,\n OCTAL_REGEX,\n RFC_EMAIL_REGEX,\n SLUG_REGEX,\n ULID_REGEX,\n UUID_REGEX,\n ValiError,\n _addIssue,\n _getByteCount,\n _getGraphemeCount,\n _getLastMetadata,\n _getStandardProps,\n _getWordCount,\n _isLuhnAlgo,\n _isValidObjectKey,\n _joinExpects,\n _stringify,\n any,\n args,\n argsAsync,\n array,\n arrayAsync,\n assert,\n awaitAsync,\n base64,\n bic,\n bigint,\n blob,\n boolean,\n brand,\n bytes,\n check,\n checkAsync,\n checkItems,\n checkItemsAsync,\n config,\n creditCard,\n cuid2,\n custom,\n customAsync,\n date,\n decimal,\n deleteGlobalConfig,\n deleteGlobalMessage,\n deleteSchemaMessage,\n deleteSpecificMessage,\n description,\n digits,\n email,\n emoji,\n empty,\n endsWith,\n entries,\n entriesFromList,\n entriesFromObjects,\n enum_ as enum,\n enum_,\n everyItem,\n exactOptional,\n exactOptionalAsync,\n excludes,\n fallback,\n fallbackAsync,\n file,\n filterItems,\n findItem,\n finite,\n flatten,\n flavor,\n forward,\n forwardAsync,\n function_ as function,\n function_,\n getDefault,\n getDefaults,\n getDefaultsAsync,\n getDescription,\n getDotPath,\n getFallback,\n getFallbacks,\n getFallbacksAsync,\n getGlobalConfig,\n getGlobalMessage,\n getMetadata,\n getSchemaMessage,\n getSpecificMessage,\n getTitle,\n graphemes,\n gtValue,\n hash,\n hexColor,\n hexadecimal,\n imei,\n includes,\n instance,\n integer,\n intersect,\n intersectAsync,\n ip,\n ipv4,\n ipv6,\n is,\n isOfKind,\n isOfType,\n isValiError,\n isoDate,\n isoDateTime,\n isoTime,\n isoTimeSecond,\n isoTimestamp,\n isoWeek,\n keyof,\n lazy,\n lazyAsync,\n length,\n literal,\n looseObject,\n looseObjectAsync,\n looseTuple,\n looseTupleAsync,\n ltValue,\n mac,\n mac48,\n mac64,\n map,\n mapAsync,\n mapItems,\n maxBytes,\n maxEntries,\n maxGraphemes,\n maxLength,\n maxSize,\n maxValue,\n maxWords,\n message,\n metadata,\n mimeType,\n minBytes,\n minEntries,\n minGraphemes,\n minLength,\n minSize,\n minValue,\n minWords,\n multipleOf,\n nan,\n nanoid,\n never,\n nonEmpty,\n nonNullable,\n nonNullableAsync,\n nonNullish,\n nonNullishAsync,\n nonOptional,\n nonOptionalAsync,\n normalize,\n notBytes,\n notEntries,\n notGraphemes,\n notLength,\n notSize,\n notValue,\n notValues,\n notWords,\n null_ as null,\n null_,\n nullable,\n nullableAsync,\n nullish,\n nullishAsync,\n number,\n object,\n objectAsync,\n objectWithRest,\n objectWithRestAsync,\n octal,\n omit,\n optional,\n optionalAsync,\n parse,\n parseAsync,\n parseJson,\n parser,\n parserAsync,\n partial,\n partialAsync,\n partialCheck,\n partialCheckAsync,\n pick,\n picklist,\n pipe,\n pipeAsync,\n promise,\n rawCheck,\n rawCheckAsync,\n rawTransform,\n rawTransformAsync,\n readonly,\n record,\n recordAsync,\n reduceItems,\n regex,\n required,\n requiredAsync,\n returns,\n returnsAsync,\n rfcEmail,\n safeInteger,\n safeParse,\n safeParseAsync,\n safeParser,\n safeParserAsync,\n set,\n setAsync,\n setGlobalConfig,\n setGlobalMessage,\n setSchemaMessage,\n setSpecificMessage,\n size,\n slug,\n someItem,\n sortItems,\n startsWith,\n strictObject,\n strictObjectAsync,\n strictTuple,\n strictTupleAsync,\n string,\n stringifyJson,\n summarize,\n symbol,\n title,\n toLowerCase,\n toMaxValue,\n toMinValue,\n toUpperCase,\n transform,\n transformAsync,\n trim,\n trimEnd,\n trimStart,\n tuple,\n tupleAsync,\n tupleWithRest,\n tupleWithRestAsync,\n ulid,\n undefined_ as undefined,\n undefined_,\n undefinedable,\n undefinedableAsync,\n union,\n unionAsync,\n unknown,\n unwrap,\n url,\n uuid,\n value,\n values,\n variant,\n variantAsync,\n void_ as void,\n void_,\n words\n};\n","import * as v from 'valibot';\n\n/**\n * Returns true in case, passed value contains path `TelegramWebviewProxy.postEvent` property and\n * `postEvent` is a function.\n * @param value - value to check.\n */\nexport function hasWebviewProxy<T>(value: T): value is T & {\n TelegramWebviewProxy: {\n postEvent: (...args: unknown[]) => unknown;\n };\n} {\n return typeof value === 'object' && !!value && !Array.isArray(value) && v.is(\n v.looseObject({ TelegramWebviewProxy: v.looseObject({ postEvent: v.function() }) }),\n { TelegramWebviewProxy: (value as Record<string, unknown>).TelegramWebviewProxy },\n );\n}\n","/**\n * @see https://stackoverflow.com/a/326076\n * @returns True, if current environment is iframe.\n */\nexport function isIframe(): boolean {\n try {\n return window.self !== window.top;\n } catch {\n return true;\n }\n}\n","var $ = Object.defineProperty;\nvar q = (r, e, t) => e in r ? $(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;\nvar w = (r, e, t) => q(r, typeof e != \"symbol\" ? e + \"\" : e, t);\nvar D = Object.defineProperty, G = (r, e, t) => e in r ? D(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, E = (r, e, t) => G(r, typeof e != \"symbol\" ? e + \"\" : e, t);\nfunction I(r) {\n return (e) => e instanceof r;\n}\nfunction L(r, e) {\n const t = class extends Error {\n constructor(...d) {\n const l = typeof e == \"function\" ? e(...d) : typeof e == \"string\" ? [e] : e || [];\n super(...l), this.name = r;\n }\n };\n E(t, \"is\", I(t));\n let c = t;\n return Object.defineProperty(c, \"name\", { value: r }), c;\n}\nfunction H(r, e, t) {\n const c = class extends L(r, t) {\n constructor(...l) {\n super(...l), E(this, \"data\"), this.data = e(...l);\n }\n };\n E(c, \"is\", I(c));\n let o = c;\n return Object.defineProperty(o, \"name\", { value: r }), o;\n}\nclass J extends L(\"CancelledError\", \"Promise was canceled\") {\n}\nclass K extends H(\n \"TimeoutError\",\n (e) => ({ timeout: e }),\n (e, t) => [`Timeout reached: ${e}ms`, { cause: t }]\n) {\n}\nconst S = Symbol(\"resolved\");\nfunction V(r) {\n return typeof r == \"object\" && !!r && \"tag\" in r && r.tag === S;\n}\nfunction M(r) {\n return { tag: S, value: r };\n}\nfunction C(r, e) {\n return r.reject = e.reject, r.resolve = e.resolve, r;\n}\nclass g extends Promise {\n constructor(t, c) {\n let o, d, l, p;\n typeof t == \"function\" ? (l = t, p = c || {}) : p = t || {};\n let u, a;\n const x = () => !!a, O = () => !!u;\n let f = {};\n const b = [], T = () => {\n b.forEach((m) => m()), b.splice(0, b.length), f = {};\n }, y = new AbortController(), k = () => O() || x();\n super((m, F) => {\n const { abortOnResolve: P = !0, abortOnReject: A = !0 } = p;\n d = (n) => {\n var h, s;\n k() || (m(n), u = [n], (h = f.resolved) == null || h.forEach((i) => i(n)), (s = f.finalized) == null || s.forEach((i) => i({ kind: \"resolved\", result: n })), T(), P && y.abort(M(n)));\n }, o = (n) => {\n var h, s;\n k() || (F(n), a = [n], (h = f.rejected) == null || h.forEach((i) => i(n)), (s = f.finalized) == null || s.forEach((i) => i({ kind: \"rejected\", reason: n })), T(), A && y.abort(n));\n };\n const { abortSignal: j } = p;\n if (j) {\n if (j.aborted)\n return o(j.reason);\n const n = () => {\n o(j.reason);\n };\n j.addEventListener(\"abort\", n, !0), b.push(() => {\n j.removeEventListener(\"abort\", n, !0);\n });\n }\n const { timeout: R } = p;\n if (R) {\n const n = setTimeout(() => {\n o(new K(R));\n }, R);\n b.push(() => {\n clearTimeout(n);\n });\n }\n try {\n const n = () => {\n }, h = l && l(d, o, {\n abortSignal: y.signal,\n get isRejected() {\n return x();\n },\n get isResolved() {\n return O();\n },\n on(s, i) {\n if (u || a) {\n if (s === \"finalized\") {\n const v = u ? { kind: \"resolved\", result: u[0] } : { kind: \"rejected\", reason: a[0] };\n i(v);\n } else s === \"resolved\" && u ? i(u[0]) : s === \"rejected\" && a && i(a[0]);\n return n;\n }\n return f[s] || (f[s] = []), f[s].push(i), () => {\n const v = f[s] || [], z = v.indexOf(i);\n z >= 0 && v.splice(z, 1);\n };\n },\n get result() {\n return u == null ? void 0 : u[0];\n },\n get rejectReason() {\n return a == null ? void 0 : a[0];\n },\n throwIfRejected() {\n if (a)\n throw a[0];\n }\n });\n h instanceof Promise && h.catch(o);\n } catch (n) {\n o(n);\n }\n });\n /**\n * Rejects the initially created promise.\n *\n * This method not only aborts the signal passed to the executor, but also rejects the\n * promise itself calling all chained listeners.\n *\n * The reason passed to the method is being passed as-is to the executor's context.\n */\n w(this, \"reject\");\n /**\n * Resolves the promise.\n */\n w(this, \"resolve\");\n this.reject = o, this.resolve = d;\n }\n static fn(t, c) {\n return new g(async (o, d, l) => {\n try {\n o(await t(l));\n } catch (p) {\n d(p);\n }\n }, c);\n }\n static resolve(t) {\n return this.fn(() => t);\n }\n /**\n * @see Promise.reject\n */\n static reject(t) {\n return new g((c, o) => {\n o(t);\n });\n }\n /**\n * Rejects the promise with the `CancelledError` error.\n */\n cancel() {\n this.reject(new J());\n }\n /**\n * @see Promise.catch\n */\n catch(t) {\n return this.then(void 0, t);\n }\n /**\n * @see Promise.finally\n */\n finally(t) {\n return C(super.finally(t), this);\n }\n /**\n * @see Promise.then\n */\n then(t, c) {\n return C(\n super.then(t, c),\n this\n );\n }\n}\nexport {\n g as BetterPromise,\n J as CancelledError,\n K as TimeoutError,\n V as isResolved,\n M as withResolved\n};\n//# sourceMappingURL=index.js.map\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var getBooleanAlgebra = function (B) {\n return function () { return ({\n meet: function (x, y) { return function (a) { return B.meet(x(a), y(a)); }; },\n join: function (x, y) { return function (a) { return B.join(x(a), y(a)); }; },\n zero: function () { return B.zero; },\n one: function () { return B.one; },\n implies: function (x, y) { return function (a) { return B.implies(x(a), y(a)); }; },\n not: function (x) { return function (a) { return B.not(x(a)); }; }\n }); };\n};\n/**\n * Unary functions form a semigroup as long as you can provide a semigroup for the codomain.\n *\n * @example\n * import { Predicate, getSemigroup } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate<number> = (n) => n <= 2\n * const g: Predicate<number> = (n) => n >= 0\n *\n * const S1 = getSemigroup(B.SemigroupAll)<number>()\n *\n * assert.deepStrictEqual(S1.concat(f, g)(1), true)\n * assert.deepStrictEqual(S1.concat(f, g)(3), false)\n *\n * const S2 = getSemigroup(B.SemigroupAny)<number>()\n *\n * assert.deepStrictEqual(S2.concat(f, g)(1), true)\n * assert.deepStrictEqual(S2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nexport var getSemigroup = function (S) {\n return function () { return ({\n concat: function (f, g) { return function (a) { return S.concat(f(a), g(a)); }; }\n }); };\n};\n/**\n * Unary functions form a monoid as long as you can provide a monoid for the codomain.\n *\n * @example\n * import { Predicate } from 'fp-ts/Predicate'\n * import { getMonoid } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate<number> = (n) => n <= 2\n * const g: Predicate<number> = (n) => n >= 0\n *\n * const M1 = getMonoid(B.MonoidAll)<number>()\n *\n * assert.deepStrictEqual(M1.concat(f, g)(1), true)\n * assert.deepStrictEqual(M1.concat(f, g)(3), false)\n *\n * const M2 = getMonoid(B.MonoidAny)<number>()\n *\n * assert.deepStrictEqual(M2.concat(f, g)(1), true)\n * assert.deepStrictEqual(M2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nexport var getMonoid = function (M) {\n var getSemigroupM = getSemigroup(M);\n return function () { return ({\n concat: getSemigroupM().concat,\n empty: function () { return M.empty; }\n }); };\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var getSemiring = function (S) { return ({\n add: function (f, g) { return function (x) { return S.add(f(x), g(x)); }; },\n zero: function () { return S.zero; },\n mul: function (f, g) { return function (x) { return S.mul(f(x), g(x)); }; },\n one: function () { return S.one; }\n}); };\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var getRing = function (R) {\n var S = getSemiring(R);\n return {\n add: S.add,\n mul: S.mul,\n one: S.one,\n zero: S.zero,\n sub: function (f, g) { return function (x) { return R.sub(f(x), g(x)); }; }\n };\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport var apply = function (a) {\n return function (f) {\n return f(a);\n };\n};\n/**\n * @since 2.0.0\n */\nexport function identity(a) {\n return a;\n}\n/**\n * @since 2.0.0\n */\nexport var unsafeCoerce = identity;\n/**\n * @since 2.0.0\n */\nexport function constant(a) {\n return function () { return a; };\n}\n/**\n * A thunk that returns always `true`.\n *\n * @since 2.0.0\n */\nexport var constTrue = /*#__PURE__*/ constant(true);\n/**\n * A thunk that returns always `false`.\n *\n * @since 2.0.0\n */\nexport var constFalse = /*#__PURE__*/ constant(false);\n/**\n * A thunk that returns always `null`.\n *\n * @since 2.0.0\n */\nexport var constNull = /*#__PURE__*/ constant(null);\n/**\n * A thunk that returns always `undefined`.\n *\n * @since 2.0.0\n */\nexport var constUndefined = /*#__PURE__*/ constant(undefined);\n/**\n * A thunk that returns always `void`.\n *\n * @since 2.0.0\n */\nexport var constVoid = constUndefined;\nexport function flip(f) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length > 1) {\n return f(args[1], args[0]);\n }\n return function (a) { return f(a)(args[0]); };\n };\n}\nexport function flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {\n switch (arguments.length) {\n case 1:\n return ab;\n case 2:\n return function () {\n return bc(ab.apply(this, arguments));\n };\n case 3:\n return function () {\n return cd(bc(ab.apply(this, arguments)));\n };\n case 4:\n return function () {\n return de(cd(bc(ab.apply(this, arguments))));\n };\n case 5:\n return function () {\n return ef(de(cd(bc(ab.apply(this, arguments)))));\n };\n case 6:\n return function () {\n return fg(ef(de(cd(bc(ab.apply(this, arguments))))));\n };\n case 7:\n return function () {\n return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));\n };\n case 8:\n return function () {\n return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));\n };\n case 9:\n return function () {\n return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));\n };\n }\n return;\n}\n/**\n * @since 2.0.0\n */\nexport function tuple() {\n var t = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n t[_i] = arguments[_i];\n }\n return t;\n}\n/**\n * @since 2.0.0\n */\nexport function increment(n) {\n return n + 1;\n}\n/**\n * @since 2.0.0\n */\nexport function decrement(n) {\n return n - 1;\n}\n/**\n * @since 2.0.0\n */\nexport function absurd(_) {\n throw new Error('Called `absurd` function which should be uncallable');\n}\n/**\n * Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.\n *\n * @example\n * import { tupled } from 'fp-ts/function'\n *\n * const add = tupled((x: number, y: number): number => x + y)\n *\n * assert.strictEqual(add([1, 2]), 3)\n *\n * @since 2.4.0\n */\nexport function tupled(f) {\n return function (a) { return f.apply(void 0, a); };\n}\n/**\n * Inverse function of `tupled`\n *\n * @since 2.4.0\n */\nexport function untupled(f) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return f(a);\n };\n}\nexport function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {\n switch (arguments.length) {\n case 1:\n return a;\n case 2:\n return ab(a);\n case 3:\n return bc(ab(a));\n case 4:\n return cd(bc(ab(a)));\n case 5:\n return de(cd(bc(ab(a))));\n case 6:\n return ef(de(cd(bc(ab(a)))));\n case 7:\n return fg(ef(de(cd(bc(ab(a))))));\n case 8:\n return gh(fg(ef(de(cd(bc(ab(a)))))));\n case 9:\n return hi(gh(fg(ef(de(cd(bc(ab(a))))))));\n default: {\n var ret = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n ret = arguments[i](ret);\n }\n return ret;\n }\n }\n}\n/**\n * Type hole simulation\n *\n * @since 2.7.0\n */\nexport var hole = absurd;\n/**\n * @since 2.11.0\n */\nexport var SK = function (_, b) { return b; };\n/**\n * Use `Predicate` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function not(predicate) {\n return function (a) { return !predicate(a); };\n}\n/**\n * Use `Endomorphism` module instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport var getEndomorphismMonoid = function () { return ({\n concat: function (first, second) { return flow(first, second); },\n empty: identity\n}); };\n/** @internal */\nexport var dual = function (arity, body) {\n var isDataFirst = typeof arity === 'number' ? function (args) { return args.length >= arity; } : arity;\n return function () {\n var args = Array.from(arguments);\n if (isDataFirst(arguments)) {\n return body.apply(this, args);\n }\n return function (self) { return body.apply(void 0, __spreadArray([self], args, false)); };\n };\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { dual } from './function';\n// -------------------------------------------------------------------------------------\n// Option\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport var isNone = function (fa) { return fa._tag === 'None'; };\n/** @internal */\nexport var isSome = function (fa) { return fa._tag === 'Some'; };\n/** @internal */\nexport var none = { _tag: 'None' };\n/** @internal */\nexport var some = function (a) { return ({ _tag: 'Some', value: a }); };\n// -------------------------------------------------------------------------------------\n// Either\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport var isLeft = function (ma) { return ma._tag === 'Left'; };\n/** @internal */\nexport var isRight = function (ma) { return ma._tag === 'Right'; };\n/** @internal */\nexport var left = function (e) { return ({ _tag: 'Left', left: e }); };\n/** @internal */\nexport var right = function (a) { return ({ _tag: 'Right', right: a }); };\n// -------------------------------------------------------------------------------------\n// ReadonlyNonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport var singleton = function (a) { return [a]; };\n/** @internal */\nexport var isNonEmpty = function (as) { return as.length > 0; };\n/** @internal */\nexport var head = function (as) { return as[0]; };\n/** @internal */\nexport var tail = function (as) { return as.slice(1); };\n// -------------------------------------------------------------------------------------\n// empty\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport var emptyReadonlyArray = [];\n/** @internal */\nexport var emptyRecord = {};\n// -------------------------------------------------------------------------------------\n// Record\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport var has = Object.prototype.hasOwnProperty;\n// -------------------------------------------------------------------------------------\n// NonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport var fromReadonlyNonEmptyArray = function (as) { return __spreadArray([as[0]], as.slice(1), true); };\n/** @internal */\nexport var liftNullable = function (F) {\n return function (f, onNullable) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n var o = f.apply(void 0, a);\n return F.fromEither(o == null ? left(onNullable.apply(void 0, a)) : right(o));\n };\n };\n};\n/** @internal */\nexport var liftOption = function (F) {\n return function (f, onNone) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n var o = f.apply(void 0, a);\n return F.fromEither(isNone(o) ? left(onNone.apply(void 0, a)) : right(o.value));\n };\n };\n};\n/** @internal */\nexport var flatMapNullable = function (F, M) {\n return /*#__PURE__*/ dual(3, function (self, f, onNullable) {\n return M.flatMap(self, liftNullable(F)(f, onNullable));\n });\n};\n/** @internal */\nexport var flatMapOption = function (F, M) {\n return /*#__PURE__*/ dual(3, function (self, f, onNone) { return M.flatMap(self, liftOption(F)(f, onNone)); });\n};\n/** @internal */\nexport var flatMapEither = function (F, M) {\n return /*#__PURE__*/ dual(2, function (self, f) {\n return M.flatMap(self, function (a) { return F.fromEither(f(a)); });\n });\n};\n/** @internal */\nexport var flatMapIO = function (F, M) {\n return /*#__PURE__*/ dual(2, function (self, f) {\n return M.flatMap(self, function (a) { return F.fromIO(f(a)); });\n });\n};\n/** @internal */\nexport var flatMapTask = function (F, M) {\n return /*#__PURE__*/ dual(2, function (self, f) {\n return M.flatMap(self, function (a) { return F.fromTask(f(a)); });\n });\n};\n/** @internal */\nexport var flatMapReader = function (F, M) {\n return /*#__PURE__*/ dual(2, function (self, f) {\n return M.flatMap(self, function (a) { return F.fromReader(f(a)); });\n });\n};\n","import { getApplicativeMonoid } from './Applicative';\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_, getApplySemigroup as getApplySemigroup_ } from './Apply';\nimport * as chainable from './Chain';\nimport { chainEitherK as chainEitherK_, fromEitherK as fromEitherK_, tapEither as tapEither_ } from './FromEither';\nimport { constNull, constUndefined, dual, flow, identity, pipe } from './function';\nimport { as as as_, asUnit as asUnit_, bindTo as bindTo_, flap as flap_, let as let__ } from './Functor';\nimport * as _ from './internal';\nimport { not } from './Predicate';\nimport { first, last } from './Semigroup';\nimport { separated } from './Separated';\nimport { wiltDefault, witherDefault } from './Witherable';\nimport { guard as guard_ } from './Zero';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * `None` doesn't have a constructor, instead you can use it directly as a value. Represents a missing value.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var none = _.none;\n/**\n * Constructs a `Some`. Represents an optional value that exists.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var some = _.some;\nexport function fromPredicate(predicate) {\n return function (a) { return (predicate(a) ? some(a) : none); };\n}\n/**\n * Returns the `Left` value of an `Either` if possible.\n *\n * @example\n * import { getLeft, none, some } from 'fp-ts/Option'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(getLeft(right(1)), none)\n * assert.deepStrictEqual(getLeft(left('a')), some('a'))\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var getLeft = function (ma) { return (ma._tag === 'Right' ? none : some(ma.left)); };\n/**\n * Returns the `Right` value of an `Either` if possible.\n *\n * @example\n * import { getRight, none, some } from 'fp-ts/Option'\n * import { right, left } from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(getRight(right(1)), some(1))\n * assert.deepStrictEqual(getRight(left('a')), none)\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var getRight = function (ma) { return (ma._tag === 'Left' ? none : some(ma.right)); };\nvar _map = function (fa, f) { return pipe(fa, map(f)); };\nvar _ap = function (fab, fa) { return pipe(fab, ap(fa)); };\nvar _reduce = function (fa, b, f) { return pipe(fa, reduce(b, f)); };\nvar _foldMap = function (M) {\n var foldMapM = foldMap(M);\n return function (fa, f) { return pipe(fa, foldMapM(f)); };\n};\nvar _reduceRight = function (fa, b, f) { return pipe(fa, reduceRight(b, f)); };\nvar _traverse = function (F) {\n var traverseF = traverse(F);\n return function (ta, f) { return pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return pipe(fa, alt(that)); };\nvar _filter = function (fa, predicate) { return pipe(fa, filter(predicate)); };\n/* istanbul ignore next */\nvar _filterMap = function (fa, f) { return pipe(fa, filterMap(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return pipe(wa, extend(f)); };\n/* istanbul ignore next */\nvar _partition = function (fa, predicate) {\n return pipe(fa, partition(predicate));\n};\n/* istanbul ignore next */\nvar _partitionMap = function (fa, f) { return pipe(fa, partitionMap(f)); };\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport var URI = 'Option';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var getShow = function (S) { return ({\n show: function (ma) { return (isNone(ma) ? 'none' : \"some(\".concat(S.show(ma.value), \")\")); }\n}); };\n/**\n * @example\n * import { none, some, getEq } from 'fp-ts/Option'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals(none, none), true)\n * assert.strictEqual(E.equals(none, some(1)), false)\n * assert.strictEqual(E.equals(some(1), none), false)\n * assert.strictEqual(E.equals(some(1), some(2)), false)\n * assert.strictEqual(E.equals(some(1), some(1)), true)\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getEq = function (E) { return ({\n equals: function (x, y) { return x === y || (isNone(x) ? isNone(y) : isNone(y) ? false : E.equals(x.value, y.value)); }\n}); };\n/**\n * The `Ord` instance allows `Option` values to be compared with\n * `compare`, whenever there is an `Ord` instance for\n * the type the `Option` contains.\n *\n * `None` is considered to be less than any `Some` value.\n *\n *\n * @example\n * import { none, some, getOrd } from 'fp-ts/Option'\n * import * as N from 'fp-ts/number'\n *\n * const O = getOrd(N.Ord)\n * assert.strictEqual(O.compare(none, none), 0)\n * assert.strictEqual(O.compare(none, some(1)), -1)\n * assert.strictEqual(O.compare(some(1), none), 1)\n * assert.strictEqual(O.compare(some(1), some(2)), -1)\n * assert.strictEqual(O.compare(some(1), some(1)), 0)\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getOrd = function (O) { return ({\n equals: getEq(O).equals,\n compare: function (x, y) { return (x === y ? 0 : isSome(x) ? (isSome(y) ? O.compare(x.value, y.value) : 1) : isSome(y) ? -1 : 0); }\n}); };\n/**\n * Monoid returning the left-most non-`None` value. If both operands are `Some`s then the inner values are\n * concatenated using the provided `Semigroup`\n *\n * | x | y | concat(x, y) |\n * | ------- | ------- | ------------------ |\n * | none | none | none |\n * | some(a) | none | some(a) |\n * | none | some(b) | some(b) |\n * | some(a) | some(b) | some(concat(a, b)) |\n *\n * @example\n * import { getMonoid, some, none } from 'fp-ts/Option'\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * const M = getMonoid(SemigroupSum)\n * assert.deepStrictEqual(M.concat(none, none), none)\n * assert.deepStrictEqual(M.concat(some(1), none), some(1))\n * assert.deepStrictEqual(M.concat(none, some(1)), some(1))\n * assert.deepStrictEqual(M.concat(some(1), some(2)), some(3))\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getMonoid = function (S) { return ({\n concat: function (x, y) { return (isNone(x) ? y : isNone(y) ? x : some(S.concat(x.value, y.value))); },\n empty: none\n}); };\n/**\n * @category mapping\n * @since 2.0.0\n */\nexport var map = function (f) { return function (fa) {\n return isNone(fa) ? none : some(f(fa.value));\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Functor = {\n URI: URI,\n map: _map\n};\n/**\n * Maps the `Some` value of this `Option` to the specified constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var as = dual(2, as_(Functor));\n/**\n * Maps the `Some` value of this `Option` to the void constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var asUnit = asUnit_(Functor);\n/**\n * @category constructors\n * @since 2.7.0\n */\nexport var of = some;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Pointed = {\n URI: URI,\n of: of\n};\n/**\n * @since 2.0.0\n */\nexport var ap = function (fa) { return function (fab) {\n return isNone(fab) ? none : isNone(fa) ? none : some(fab.value(fa.value));\n}; };\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Apply = {\n URI: URI,\n map: _map,\n ap: _ap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Applicative = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of\n};\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport var flatMap = /*#__PURE__*/ dual(2, function (ma, f) { return (isNone(ma) ? none : f(ma.value)); });\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Chain = {\n URI: URI,\n map: _map,\n ap: _ap,\n chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Monad = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n chain: flatMap\n};\n/**\n * @category folding\n * @since 2.0.0\n */\nexport var reduce = function (b, f) { return function (fa) {\n return isNone(fa) ? b : f(b, fa.value);\n}; };\n/**\n * @category folding\n * @since 2.0.0\n */\nexport var foldMap = function (M) { return function (f) { return function (fa) {\n return isNone(fa) ? M.empty : f(fa.value);\n}; }; };\n/**\n * @category folding\n * @since 2.0.0\n */\nexport var reduceRight = function (b, f) { return function (fa) {\n return isNone(fa) ? b : f(fa.value, b);\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Foldable = {\n URI: URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * Returns the provided `Option` `that` if `self` is `None`, otherwise returns `self`.\n *\n * @param self - The first `Option` to be checked.\n * @param that - The `Option` to return if `self` is `None`.\n *\n * @example\n * import * as O from \"fp-ts/Option\"\n *\n * assert.deepStrictEqual(O.orElse(O.none, () => O.none), O.none)\n * assert.deepStrictEqual(O.orElse(O.some(1), () => O.none), O.some(1))\n * assert.deepStrictEqual(O.orElse(O.none, () => O.some('b')), O.some('b'))\n * assert.deepStrictEqual(O.orElse(O.some(1), () => O.some('b')), O.some(1))\n *\n * @category error handling\n * @since 2.16.0\n */\nexport var orElse = dual(2, function (self, that) { return (isNone(self) ? that() : self); });\n/**\n * Alias of `orElse`.\n *\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @category legacy\n * @since 2.9.0\n */\nexport var altW = orElse;\n/**\n * Alias of `orElse`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var alt = orElse;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Alt = {\n URI: URI,\n map: _map,\n alt: _alt\n};\n/**\n * @since 2.7.0\n */\nexport var zero = function () { return none; };\n/**\n * @category instances\n * @since 2.11.0\n */\nexport var Zero = {\n URI: URI,\n zero: zero\n};\n/**\n * @category do notation\n * @since 2.11.0\n */\nexport var guard = /*#__PURE__*/ guard_(Zero, Pointed);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Alternative = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n alt: _alt,\n zero: zero\n};\n/**\n * @since 2.0.0\n */\nexport var extend = function (f) { return function (wa) {\n return isNone(wa) ? none : some(f(wa));\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Extend = {\n URI: URI,\n map: _map,\n extend: _extend\n};\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var compact = /*#__PURE__*/ flatMap(identity);\nvar defaultSeparated = /*#__PURE__*/ separated(none, none);\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var separate = function (ma) {\n return isNone(ma) ? defaultSeparated : separated(getLeft(ma.value), getRight(ma.value));\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Compactable = {\n URI: URI,\n compact: compact,\n separate: separate\n};\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var filter = function (predicate) {\n return function (fa) {\n return isNone(fa) ? none : predicate(fa.value) ? fa : none;\n };\n};\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var filterMap = function (f) { return function (fa) {\n return isNone(fa) ? none : f(fa.value);\n}; };\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var partition = function (predicate) {\n return function (fa) {\n return separated(_filter(fa, not(predicate)), _filter(fa, predicate));\n };\n};\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var partitionMap = function (f) { return flow(map(f), separate); };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Filterable = {\n URI: URI,\n map: _map,\n compact: compact,\n separate: separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport var traverse = function (F) {\n return function (f) {\n return function (ta) {\n return isNone(ta) ? F.of(none) : F.map(f(ta.value), some);\n };\n };\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport var sequence = function (F) {\n return function (ta) {\n return isNone(ta) ? F.of(none) : F.map(ta.value, some);\n };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Traversable = {\n URI: URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence\n};\nvar _wither = /*#__PURE__*/ witherDefault(Traversable, Compactable);\nvar _wilt = /*#__PURE__*/ wiltDefault(Traversable, Compactable);\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport var wither = function (F) {\n var _witherF = _wither(F);\n return function (f) { return function (fa) { return _witherF(fa, f); }; };\n};\n/**\n * @category filtering\n * @since 2.6.5\n */\nexport var wilt = function (F) {\n var _wiltF = _wilt(F);\n return function (f) { return function (fa) { return _wiltF(fa, f); }; };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Witherable = {\n URI: URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n compact: compact,\n separate: separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n wither: _wither,\n wilt: _wilt\n};\n/**\n * @since 2.7.0\n */\nexport var throwError = function () { return none; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var MonadThrow = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n chain: flatMap,\n throwError: throwError\n};\n/**\n * Transforms an `Either` to an `Option` discarding the error.\n *\n * Alias of [getRight](#getright)\n *\n * @category conversions\n * @since 2.0.0\n */\nexport var fromEither = getRight;\n/**\n * @category instances\n * @since 2.11.0\n */\nexport var FromEither = {\n URI: URI,\n fromEither: fromEither\n};\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Returns `true` if the option is an instance of `Some`, `false` otherwise.\n *\n * @example\n * import { some, none, isSome } from 'fp-ts/Option'\n *\n * assert.strictEqual(isSome(some(1)), true)\n * assert.strictEqual(isSome(none), false)\n *\n * @category refinements\n * @since 2.0.0\n */\nexport var isSome = _.isSome;\n/**\n * Returns `true` if the option is `None`, `false` otherwise.\n *\n * @example\n * import { some, none, isNone } from 'fp-ts/Option'\n *\n * assert.strictEqual(isNone(some(1)), false)\n * assert.strictEqual(isNone(none), true)\n *\n * @category refinements\n * @since 2.0.0\n */\nexport var isNone = function (fa) { return fa._tag === 'None'; };\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var matchW = function (onNone, onSome) {\n return function (ma) {\n return isNone(ma) ? onNone() : onSome(ma.value);\n };\n};\n/**\n * Alias of [`matchW`](#matchw).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var foldW = matchW;\n/**\n * Takes a (lazy) default value, a function, and an `Option` value, if the `Option` value is `None` the default value is\n * returned, otherwise the function is applied to the value inside the `Some` and the result is returned.\n *\n * @example\n * import { some, none, match } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n * pipe(\n * some(1),\n * match(() => 'a none', a => `a some containing ${a}`)\n * ),\n * 'a some containing 1'\n * )\n *\n * assert.strictEqual(\n * pipe(\n * none,\n * match(() => 'a none', a => `a some containing ${a}`)\n * ),\n * 'a none'\n * )\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var match = matchW;\n/**\n * Alias of [`match`](#match).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport var fold = match;\n/**\n * Less strict version of [`getOrElse`](#getorelse).\n *\n * The `W` suffix (short for **W**idening) means that the handler return type will be merged.\n *\n * @category error handling\n * @since 2.6.0\n */\nexport var getOrElseW = function (onNone) {\n return function (ma) {\n return isNone(ma) ? onNone() : ma.value;\n };\n};\n/**\n * Extracts the value out of the structure, if it exists. Otherwise returns the given default value\n *\n * @example\n * import { some, none, getOrElse } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n * pipe(\n * some(1),\n * getOrElse(() => 0)\n * ),\n * 1\n * )\n * assert.strictEqual(\n * pipe(\n * none,\n * getOrElse(() => 0)\n * ),\n * 0\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var getOrElse = getOrElseW;\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport var flap = /*#__PURE__*/ flap_(Functor);\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport var apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport var apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category sequencing\n * @since 2.0.0\n */\nexport var flatten = compact;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category combinators\n * @since 2.15.0\n */\nexport var tap = /*#__PURE__*/ dual(2, chainable.tap(Chain));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as O from 'fp-ts/Option'\n * import * as E from 'fp-ts/Either'\n *\n * const compute = (value: number) => pipe(\n * O.of(value),\n * O.tapEither((value) => value > 0 ? E.right('ok') : E.left('error')),\n * )\n *\n * assert.deepStrictEqual(compute(1), O.of(1))\n * assert.deepStrictEqual(compute(-42), O.none)\n *\n * @category combinators\n * @since 2.16.0\n */\nexport var tapEither = /*#__PURE__*/ dual(2, tapEither_(FromEither, Chain));\n/**\n * @since 2.0.0\n */\nexport var duplicate = /*#__PURE__*/ extend(identity);\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport var fromEitherK = /*#__PURE__*/ fromEitherK_(FromEither);\n/**\n * @category sequencing\n * @since 2.11.0\n */\nexport var chainEitherK = \n/*#__PURE__*/ chainEitherK_(FromEither, Chain);\n/**\n * Alias of `tapEither`.\n *\n * @category legacy\n * @since 2.12.0\n */\nexport var chainFirstEitherK = tapEither;\n/**\n * Constructs a new `Option` from a nullable type. If the value is `null` or `undefined`, returns `None`, otherwise\n * returns the value wrapped in a `Some`.\n *\n * @example\n * import { none, some, fromNullable } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(fromNullable(undefined), none)\n * assert.deepStrictEqual(fromNullable(null), none)\n * assert.deepStrictEqual(fromNullable(1), some(1))\n *\n * @category conversions\n * @since 2.0.0\n */\nexport var fromNullable = function (a) { return (a == null ? none : some(a)); };\n/**\n * Transforms an exception into an `Option`. If `f` throws, returns `None`, otherwise returns the output wrapped in a\n * `Some`.\n *\n * See also [`tryCatchK`](#trycatchk).\n *\n * @example\n * import { none, some, tryCatch } from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * tryCatch(() => {\n * throw new Error()\n * }),\n * none\n * )\n * assert.deepStrictEqual(tryCatch(() => 1), some(1))\n *\n * @category interop\n * @since 2.0.0\n */\nexport var tryCatch = function (f) {\n try {\n return some(f());\n }\n catch (e) {\n return none;\n }\n};\n/**\n * Converts a function that may throw to one returning a `Option`.\n *\n * @category interop\n * @since 2.10.0\n */\nexport var tryCatchK = function (f) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return tryCatch(function () { return f.apply(void 0, a); });\n };\n};\n/**\n * Returns a *smart constructor* from a function that returns a nullable value.\n *\n * @example\n * import { fromNullableK, none, some } from 'fp-ts/Option'\n *\n * const f = (s: string): number | undefined => {\n * const n = parseFloat(s)\n * return isNaN(n) ? undefined : n\n * }\n *\n * const g = fromNullableK(f)\n *\n * assert.deepStrictEqual(g('1'), some(1))\n * assert.deepStrictEqual(g('a'), none)\n *\n * @category lifting\n * @since 2.9.0\n */\nexport var fromNullableK = function (f) { return flow(f, fromNullable); };\n/**\n * This is `chain` + `fromNullable`, useful when working with optional values.\n *\n * @example\n * import { some, none, fromNullable, chainNullableK } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Employee {\n * readonly company?: {\n * readonly address?: {\n * readonly street?: {\n * readonly name?: string\n * }\n * }\n * }\n * }\n *\n * const employee1: Employee = { company: { address: { street: { name: 'high street' } } } }\n *\n * assert.deepStrictEqual(\n * pipe(\n * fromNullable(employee1.company),\n * chainNullableK(company => company.address),\n * chainNullableK(address => address.street),\n * chainNullableK(street => street.name)\n * ),\n * some('high street')\n * )\n *\n * const employee2: Employee = { company: { address: { street: {} } } }\n *\n * assert.deepStrictEqual(\n * pipe(\n * fromNullable(employee2.company),\n * chainNullableK(company => company.address),\n * chainNullableK(address => address.street),\n * chainNullableK(street => street.name)\n * ),\n * none\n * )\n *\n * @category sequencing\n * @since 2.9.0\n */\nexport var chainNullableK = function (f) {\n return function (ma) {\n return isNone(ma) ? none : fromNullable(f(ma.value));\n };\n};\n/**\n * Extracts the value out of the structure, if it exists. Otherwise returns `null`.\n *\n * @example\n * import { some, none, toNullable } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n * pipe(\n * some(1),\n * toNullable\n * ),\n * 1\n * )\n * assert.strictEqual(\n * pipe(\n * none,\n * toNullable\n * ),\n * null\n * )\n *\n * @category conversions\n * @since 2.0.0\n */\nexport var toNullable = /*#__PURE__*/ match(constNull, identity);\n/**\n * Extracts the value out of the structure, if it exists. Otherwise returns `undefined`.\n *\n * @example\n * import { some, none, toUndefined } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n * pipe(\n * some(1),\n * toUndefined\n * ),\n * 1\n * )\n * assert.strictEqual(\n * pipe(\n * none,\n * toUndefined\n * ),\n * undefined\n * )\n *\n * @category conversions\n * @since 2.0.0\n */\nexport var toUndefined = /*#__PURE__*/ match(constUndefined, identity);\nexport function elem(E) {\n return function (a, ma) {\n if (ma === undefined) {\n var elemE_1 = elem(E);\n return function (ma) { return elemE_1(a, ma); };\n }\n return isNone(ma) ? false : E.equals(a, ma.value);\n };\n}\n/**\n * Returns `true` if the predicate is satisfied by the wrapped value\n *\n * @example\n * import { some, none, exists } from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.strictEqual(\n * pipe(\n * some(1),\n * exists(n => n > 0)\n * ),\n * true\n * )\n * assert.strictEqual(\n * pipe(\n * some(1),\n * exists(n => n > 1)\n * ),\n * false\n * )\n * assert.strictEqual(\n * pipe(\n * none,\n * exists(n => n > 0)\n * ),\n * false\n * )\n *\n * @since 2.0.0\n */\nexport var exists = function (predicate) {\n return function (ma) {\n return isNone(ma) ? false : predicate(ma.value);\n };\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport var Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bindTo = /*#__PURE__*/ bindTo_(Functor);\nvar let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bind = /*#__PURE__*/ chainable.bind(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var apS = /*#__PURE__*/ apS_(Apply);\n/**\n * @since 2.11.0\n */\nexport var ApT = /*#__PURE__*/ of(_.emptyReadonlyArray);\n// -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyNonEmptyArrayWithIndex = function (f) {\n return function (as) {\n var o = f(0, _.head(as));\n if (isNone(o)) {\n return none;\n }\n var out = [o.value];\n for (var i = 1; i < as.length; i++) {\n var o_1 = f(i, as[i]);\n if (isNone(o_1)) {\n return none;\n }\n out.push(o_1.value);\n }\n return some(out);\n };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyArrayWithIndex = function (f) {\n var g = traverseReadonlyNonEmptyArrayWithIndex(f);\n return function (as) { return (_.isNonEmpty(as) ? g(as) : ApT); };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArrayWithIndex = traverseReadonlyArrayWithIndex;\n/**\n * Equivalent to `ReadonlyArray#traverse(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArray = function (f) {\n return traverseReadonlyArrayWithIndex(function (_, a) { return f(a); });\n};\n/**\n * Equivalent to `ReadonlyArray#sequence(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var sequenceArray = \n/*#__PURE__*/ traverseArray(identity);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chain = flatMap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chainFirst = tap;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `Refinement` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function getRefinement(getOption) {\n return function (a) { return isSome(getOption(a)); };\n}\n/**\n * Use [`chainNullableK`](#chainnullablek) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var mapNullable = chainNullableK;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `O.Functor` instead of `O.option`\n * (where `O` is from `import O from 'fp-ts/Option'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var option = {\n URI: URI,\n map: _map,\n of: of,\n ap: _ap,\n chain: flatMap,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n zero: zero,\n alt: _alt,\n extend: _extend,\n compact: compact,\n separate: separate,\n filter: _filter,\n filterMap: _filterMap,\n partition: _partition,\n partitionMap: _partitionMap,\n wither: _wither,\n wilt: _wilt,\n throwError: throwError\n};\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getApplySemigroup = /*#__PURE__*/ getApplySemigroup_(Apply);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getApplyMonoid = /*#__PURE__*/ getApplicativeMonoid(Applicative);\n/**\n * Use\n *\n * ```ts\n * import { first } from 'fp-ts/Semigroup'\n * import { getMonoid } from 'fp-ts/Option'\n *\n * getMonoid(first())\n * ```\n *\n * instead.\n *\n * Monoid returning the left-most non-`None` value\n *\n * | x | y | concat(x, y) |\n * | ------- | ------- | ------------ |\n * | none | none | none |\n * | some(a) | none | some(a) |\n * | none | some(b) | some(b) |\n * | some(a) | some(b) | some(a) |\n *\n * @example\n * import { getFirstMonoid, some, none } from 'fp-ts/Option'\n *\n * const M = getFirstMonoid<number>()\n * assert.deepStrictEqual(M.concat(none, none), none)\n * assert.deepStrictEqual(M.concat(some(1), none), some(1))\n * assert.deepStrictEqual(M.concat(none, some(2)), some(2))\n * assert.deepStrictEqual(M.concat(some(1), some(2)), some(1))\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getFirstMonoid = function () { return getMonoid(first()); };\n/**\n * Use\n *\n * ```ts\n * import { last } from 'fp-ts/Semigroup'\n * import { getMonoid } from 'fp-ts/Option'\n *\n * getMonoid(last())\n * ```\n *\n * instead.\n *\n * Monoid returning the right-most non-`None` value\n *\n * | x | y | concat(x, y) |\n * | ------- | ------- | ------------ |\n * | none | none | none |\n * | some(a) | none | some(a) |\n * | none | some(b) | some(b) |\n * | some(a) | some(b) | some(b) |\n *\n * @example\n * import { getLastMonoid, some, none } from 'fp-ts/Option'\n *\n * const M = getLastMonoid<number>()\n * assert.deepStrictEqual(M.concat(none, none), none)\n * assert.deepStrictEqual(M.concat(some(1), none), some(1))\n * assert.deepStrictEqual(M.concat(none, some(2)), some(2))\n * assert.deepStrictEqual(M.concat(some(1), some(2)), some(2))\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getLastMonoid = function () { return getMonoid(last()); };\n","import { getApplicativeMonoid } from './Applicative';\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_, getApplySemigroup as getApplySemigroup_ } from './Apply';\nimport * as chainable from './Chain';\nimport { tailRec } from './ChainRec';\nimport { chainOptionK as chainOptionK_, filterOrElse as filterOrElse_, fromOption as fromOption_, fromOptionK as fromOptionK_, fromPredicate as fromPredicate_ } from './FromEither';\nimport { dual, flow, identity, pipe } from './function';\nimport { as as as_, asUnit as asUnit_, bindTo as bindTo_, flap as flap_, let as let__ } from './Functor';\nimport * as _ from './internal';\nimport { separated } from './Separated';\nimport { wiltDefault, witherDefault } from './Witherable';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Constructs a new `Either` holding a `Left` value. This usually represents a failure, due to the right-bias of this\n * structure.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var left = _.left;\n/**\n * Constructs a new `Either` holding a `Right` value. This usually represents a successful value due to the right bias\n * of this structure.\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var right = _.right;\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport var flatMap = /*#__PURE__*/ dual(2, function (ma, f) { return (isLeft(ma) ? ma : f(ma.right)); });\nvar _map = function (fa, f) { return pipe(fa, map(f)); };\nvar _ap = function (fab, fa) { return pipe(fab, ap(fa)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return pipe(fa, reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) { return function (fa, f) {\n var foldMapM = foldMap(M);\n return pipe(fa, foldMapM(f));\n}; };\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return pipe(fa, reduceRight(b, f)); };\nvar _traverse = function (F) {\n var traverseF = traverse(F);\n return function (ta, f) { return pipe(ta, traverseF(f)); };\n};\nvar _bimap = function (fa, f, g) { return pipe(fa, bimap(f, g)); };\nvar _mapLeft = function (fa, f) { return pipe(fa, mapLeft(f)); };\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return pipe(fa, alt(that)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return pipe(wa, extend(f)); };\nvar _chainRec = function (a, f) {\n return tailRec(f(a), function (e) {\n return isLeft(e) ? right(left(e.left)) : isLeft(e.right) ? left(f(e.right.left)) : right(right(e.right.right));\n });\n};\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport var URI = 'Either';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var getShow = function (SE, SA) { return ({\n show: function (ma) { return (isLeft(ma) ? \"left(\".concat(SE.show(ma.left), \")\") : \"right(\".concat(SA.show(ma.right), \")\")); }\n}); };\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var getEq = function (EL, EA) { return ({\n equals: function (x, y) {\n return x === y || (isLeft(x) ? isLeft(y) && EL.equals(x.left, y.left) : isRight(y) && EA.equals(x.right, y.right));\n }\n}); };\n/**\n * Semigroup returning the left-most non-`Left` value. If both operands are `Right`s then the inner values are\n * concatenated using the provided `Semigroup`\n *\n * @example\n * import { getSemigroup, left, right } from 'fp-ts/Either'\n * import { SemigroupSum } from 'fp-ts/number'\n *\n * const S = getSemigroup<string, number>(SemigroupSum)\n * assert.deepStrictEqual(S.concat(left('a'), left('b')), left('a'))\n * assert.deepStrictEqual(S.concat(left('a'), right(2)), right(2))\n * assert.deepStrictEqual(S.concat(right(1), left('b')), right(1))\n * assert.deepStrictEqual(S.concat(right(1), right(2)), right(3))\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getSemigroup = function (S) { return ({\n concat: function (x, y) { return (isLeft(y) ? x : isLeft(x) ? y : right(S.concat(x.right, y.right))); }\n}); };\n/**\n * Builds a `Compactable` instance for `Either` given `Monoid` for the left side.\n *\n * @category filtering\n * @since 2.10.0\n */\nexport var getCompactable = function (M) {\n var empty = left(M.empty);\n return {\n URI: URI,\n _E: undefined,\n compact: function (ma) { return (isLeft(ma) ? ma : ma.right._tag === 'None' ? empty : right(ma.right.value)); },\n separate: function (ma) {\n return isLeft(ma)\n ? separated(ma, ma)\n : isLeft(ma.right)\n ? separated(right(ma.right.left), empty)\n : separated(empty, right(ma.right.right));\n }\n };\n};\n/**\n * Builds a `Filterable` instance for `Either` given `Monoid` for the left side\n *\n * @category filtering\n * @since 2.10.0\n */\nexport var getFilterable = function (M) {\n var empty = left(M.empty);\n var _a = getCompactable(M), compact = _a.compact, separate = _a.separate;\n var filter = function (ma, predicate) {\n return isLeft(ma) ? ma : predicate(ma.right) ? ma : empty;\n };\n var partition = function (ma, p) {\n return isLeft(ma)\n ? separated(ma, ma)\n : p(ma.right)\n ? separated(empty, right(ma.right))\n : separated(right(ma.right), empty);\n };\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n compact: compact,\n separate: separate,\n filter: filter,\n filterMap: function (ma, f) {\n if (isLeft(ma)) {\n return ma;\n }\n var ob = f(ma.right);\n return ob._tag === 'None' ? empty : right(ob.value);\n },\n partition: partition,\n partitionMap: function (ma, f) {\n if (isLeft(ma)) {\n return separated(ma, ma);\n }\n var e = f(ma.right);\n return isLeft(e) ? separated(right(e.left), empty) : separated(empty, right(e.right));\n }\n };\n};\n/**\n * Builds `Witherable` instance for `Either` given `Monoid` for the left side\n *\n * @category filtering\n * @since 2.0.0\n */\nexport var getWitherable = function (M) {\n var F_ = getFilterable(M);\n var C = getCompactable(M);\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n compact: F_.compact,\n separate: F_.separate,\n filter: F_.filter,\n filterMap: F_.filterMap,\n partition: F_.partition,\n partitionMap: F_.partitionMap,\n traverse: _traverse,\n sequence: sequence,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n wither: witherDefault(Traversable, C),\n wilt: wiltDefault(Traversable, C)\n };\n};\n/**\n * The default [`Applicative`](#applicative) instance returns the first error, if you want to\n * get all errors you need to provide a way to concatenate them via a `Semigroup`.\n *\n * @example\n * import * as A from 'fp-ts/Apply'\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as S from 'fp-ts/Semigroup'\n * import * as string from 'fp-ts/string'\n *\n * const parseString = (u: unknown): E.Either<string, string> =>\n * typeof u === 'string' ? E.right(u) : E.left('not a string')\n *\n * const parseNumber = (u: unknown): E.Either<string, number> =>\n * typeof u === 'number' ? E.right(u) : E.left('not a number')\n *\n * interface Person {\n * readonly name: string\n * readonly age: number\n * }\n *\n * const parsePerson = (\n * input: Record<string, unknown>\n * ): E.Either<string, Person> =>\n * pipe(\n * E.Do,\n * E.apS('name', parseString(input.name)),\n * E.apS('age', parseNumber(input.age))\n * )\n *\n * assert.deepStrictEqual(parsePerson({}), E.left('not a string')) // <= first error\n *\n * const Applicative = E.getApplicativeValidation(\n * pipe(string.Semigroup, S.intercalate(', '))\n * )\n *\n * const apS = A.apS(Applicative)\n *\n * const parsePersonAll = (\n * input: Record<string, unknown>\n * ): E.Either<string, Person> =>\n * pipe(\n * E.Do,\n * apS('name', parseString(input.name)),\n * apS('age', parseNumber(input.age))\n * )\n *\n * assert.deepStrictEqual(parsePersonAll({}), E.left('not a string, not a number')) // <= all errors\n *\n * @category error handling\n * @since 2.7.0\n */\nexport var getApplicativeValidation = function (SE) { return ({\n URI: URI,\n _E: undefined,\n map: _map,\n ap: function (fab, fa) {\n return isLeft(fab)\n ? isLeft(fa)\n ? left(SE.concat(fab.left, fa.left))\n : fab\n : isLeft(fa)\n ? fa\n : right(fab.right(fa.right));\n },\n of: of\n}); };\n/**\n * The default [`Alt`](#alt) instance returns the last error, if you want to\n * get all errors you need to provide a way to concatenate them via a `Semigroup`.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as S from 'fp-ts/Semigroup'\n * import * as string from 'fp-ts/string'\n *\n * const parseString = (u: unknown): E.Either<string, string> =>\n * typeof u === 'string' ? E.right(u) : E.left('not a string')\n *\n * const parseNumber = (u: unknown): E.Either<string, number> =>\n * typeof u === 'number' ? E.right(u) : E.left('not a number')\n *\n * const parse = (u: unknown): E.Either<string, string | number> =>\n * pipe(\n * parseString(u),\n * E.alt<string, string | number>(() => parseNumber(u))\n * )\n *\n * assert.deepStrictEqual(parse(true), E.left('not a number')) // <= last error\n *\n * const Alt = E.getAltValidation(pipe(string.Semigroup, S.intercalate(', ')))\n *\n * const parseAll = (u: unknown): E.Either<string, string | number> =>\n * Alt.alt<string | number>(parseString(u), () => parseNumber(u))\n *\n * assert.deepStrictEqual(parseAll(true), E.left('not a string, not a number')) // <= all errors\n *\n * @category error handling\n * @since 2.7.0\n */\nexport var getAltValidation = function (SE) { return ({\n URI: URI,\n _E: undefined,\n map: _map,\n alt: function (me, that) {\n if (isRight(me)) {\n return me;\n }\n var ea = that();\n return isLeft(ea) ? left(SE.concat(me.left, ea.left)) : ea;\n }\n}); };\n/**\n * @category mapping\n * @since 2.0.0\n */\nexport var map = function (f) { return function (fa) {\n return isLeft(fa) ? fa : right(f(fa.right));\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Functor = {\n URI: URI,\n map: _map\n};\n/**\n * Maps the `Right` value of this `Either` to the specified constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var as = dual(2, as_(Functor));\n/**\n * Maps the `Right` value of this `Either` to the void constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var asUnit = asUnit_(Functor);\n/**\n * @category constructors\n * @since 2.7.0\n */\nexport var of = right;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Pointed = {\n URI: URI,\n of: of\n};\n/**\n * Less strict version of [`ap`](#ap).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.8.0\n */\nexport var apW = function (fa) { return function (fab) {\n return isLeft(fab) ? fab : isLeft(fa) ? fa : right(fab.right(fa.right));\n}; };\n/**\n * @since 2.0.0\n */\nexport var ap = apW;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Apply = {\n URI: URI,\n map: _map,\n ap: _ap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Applicative = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Chain = {\n URI: URI,\n map: _map,\n ap: _ap,\n chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Monad = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n chain: flatMap\n};\n/**\n * Left-associative fold of a structure.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n *\n * const startWith = 'prefix'\n * const concat = (a: string, b: string) => `${a}:${b}`\n *\n * assert.deepStrictEqual(\n * pipe(E.right('a'), E.reduce(startWith, concat)),\n * 'prefix:a'\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.left('e'), E.reduce(startWith, concat)),\n * 'prefix'\n * )\n *\n * @category folding\n * @since 2.0.0\n */\nexport var reduce = function (b, f) { return function (fa) {\n return isLeft(fa) ? b : f(b, fa.right);\n}; };\n/**\n * Map each element of the structure to a monoid, and combine the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n * import * as S from 'fp-ts/string'\n *\n * const yell = (a: string) => `${a}!`\n *\n * assert.deepStrictEqual(\n * pipe(E.right('a'), E.foldMap(S.Monoid)(yell)),\n * 'a!'\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.left('e'), E.foldMap(S.Monoid)(yell)),\n * S.Monoid.empty\n * )\n *\n * @category folding\n * @since 2.0.0\n */\nexport var foldMap = function (M) { return function (f) { return function (fa) {\n return isLeft(fa) ? M.empty : f(fa.right);\n}; }; };\n/**\n * Right-associative fold of a structure.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n *\n * const startWith = 'postfix'\n * const concat = (a: string, b: string) => `${a}:${b}`\n *\n * assert.deepStrictEqual(\n * pipe(E.right('a'), E.reduceRight(startWith, concat)),\n * 'a:postfix'\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.left('e'), E.reduceRight(startWith, concat)),\n * 'postfix'\n * )\n *\n * @category folding\n * @since 2.0.0\n */\nexport var reduceRight = function (b, f) { return function (fa) {\n return isLeft(fa) ? b : f(fa.right, b);\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Foldable = {\n URI: URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * Map each element of a structure to an action, evaluate these actions from left to right, and collect the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as E from 'fp-ts/Either'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * pipe(E.right(['a']), E.traverse(O.Applicative)(RA.head)),\n * O.some(E.right('a'))\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.right([]), E.traverse(O.Applicative)(RA.head)),\n * O.none\n * )\n *\n * @category traversing\n * @since 2.6.3\n */\nexport var traverse = function (F) {\n return function (f) {\n return function (ta) {\n return isLeft(ta) ? F.of(left(ta.left)) : F.map(f(ta.right), right);\n };\n };\n};\n/**\n * Evaluate each monadic action in the structure from left to right, and collect the results.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as E from 'fp-ts/Either'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * pipe(E.right(O.some('a')), E.sequence(O.Applicative)),\n * O.some(E.right('a'))\n * )\n *\n * assert.deepStrictEqual(\n * pipe(E.right(O.none), E.sequence(O.Applicative)),\n * O.none\n * )\n *\n * @category traversing\n * @since 2.6.3\n */\nexport var sequence = function (F) {\n return function (ma) {\n return isLeft(ma) ? F.of(left(ma.left)) : F.map(ma.right, right);\n };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Traversable = {\n URI: URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence\n};\n/**\n * Map a pair of functions over the two type arguments of the bifunctor.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport var bimap = function (f, g) { return function (fa) {\n return isLeft(fa) ? left(f(fa.left)) : right(g(fa.right));\n}; };\n/**\n * Map a function over the first type argument of a bifunctor.\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var mapLeft = function (f) { return function (fa) {\n return isLeft(fa) ? left(f(fa.left)) : fa;\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Bifunctor = {\n URI: URI,\n bimap: _bimap,\n mapLeft: _mapLeft\n};\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the error and the return types will be merged.\n *\n * @category error handling\n * @since 2.9.0\n */\nexport var altW = function (that) { return function (fa) {\n return isLeft(fa) ? that() : fa;\n}; };\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `Either` returns the left-most non-`Left` value (or the right-most `Left` value if both values are `Left`).\n *\n * | x | y | pipe(x, alt(() => y) |\n * | -------- | -------- | -------------------- |\n * | left(a) | left(b) | left(b) |\n * | left(a) | right(2) | right(2) |\n * | right(1) | left(b) | right(1) |\n * | right(1) | right(2) | right(1) |\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * E.left('a'),\n * E.alt(() => E.left('b'))\n * ),\n * E.left('b')\n * )\n * assert.deepStrictEqual(\n * pipe(\n * E.left('a'),\n * E.alt(() => E.right(2))\n * ),\n * E.right(2)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * E.right(1),\n * E.alt(() => E.left('b'))\n * ),\n * E.right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * E.right(1),\n * E.alt(() => E.right(2))\n * ),\n * E.right(1)\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var alt = altW;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Alt = {\n URI: URI,\n map: _map,\n alt: _alt\n};\n/**\n * @since 2.0.0\n */\nexport var extend = function (f) { return function (wa) {\n return isLeft(wa) ? wa : right(f(wa));\n}; };\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Extend = {\n URI: URI,\n map: _map,\n extend: _extend\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var ChainRec = {\n URI: URI,\n map: _map,\n ap: _ap,\n chain: flatMap,\n chainRec: _chainRec\n};\n/**\n * @since 2.6.3\n */\nexport var throwError = left;\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var MonadThrow = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n chain: flatMap,\n throwError: throwError\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var FromEither = {\n URI: URI,\n fromEither: identity\n};\n/**\n * @example\n * import { fromPredicate, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * 1,\n * fromPredicate(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * -1,\n * fromPredicate(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * left('error')\n * )\n *\n * @category lifting\n * @since 2.0.0\n */\nexport var fromPredicate = /*#__PURE__*/ fromPredicate_(FromEither);\n// -------------------------------------------------------------------------------------\n// conversions\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as O from 'fp-ts/Option'\n *\n * assert.deepStrictEqual(\n * pipe(\n * O.some(1),\n * E.fromOption(() => 'error')\n * ),\n * E.right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * O.none,\n * E.fromOption(() => 'error')\n * ),\n * E.left('error')\n * )\n *\n * @category conversions\n * @since 2.0.0\n */\nexport var fromOption = \n/*#__PURE__*/ fromOption_(FromEither);\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * Returns `true` if the either is an instance of `Left`, `false` otherwise.\n *\n * @category refinements\n * @since 2.0.0\n */\nexport var isLeft = _.isLeft;\n/**\n * Returns `true` if the either is an instance of `Right`, `false` otherwise.\n *\n * @category refinements\n * @since 2.0.0\n */\nexport var isRight = _.isRight;\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var matchW = function (onLeft, onRight) {\n return function (ma) {\n return isLeft(ma) ? onLeft(ma.left) : onRight(ma.right);\n };\n};\n/**\n * Alias of [`matchW`](#matchw).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var foldW = matchW;\n/**\n * Takes two functions and an `Either` value, if the value is a `Left` the inner value is applied to the first function,\n * if the value is a `Right` the inner value is applied to the second function.\n *\n * @example\n * import { match, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * function onLeft(errors: Array<string>): string {\n * return `Errors: ${errors.join(', ')}`\n * }\n *\n * function onRight(value: number): string {\n * return `Ok: ${value}`\n * }\n *\n * assert.strictEqual(\n * pipe(\n * right(1),\n * match(onLeft, onRight)\n * ),\n * 'Ok: 1'\n * )\n * assert.strictEqual(\n * pipe(\n * left(['error 1', 'error 2']),\n * match(onLeft, onRight)\n * ),\n * 'Errors: error 1, error 2'\n * )\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var match = matchW;\n/**\n * Alias of [`match`](#match).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport var fold = match;\n/**\n * Less strict version of [`getOrElse`](#getorelse).\n *\n * The `W` suffix (short for **W**idening) means that the handler return type will be merged.\n *\n * @category error handling\n * @since 2.6.0\n */\nexport var getOrElseW = function (onLeft) {\n return function (ma) {\n return isLeft(ma) ? onLeft(ma.left) : ma.right;\n };\n};\n/**\n * Returns the wrapped value if it's a `Right` or a default value if is a `Left`.\n *\n * @example\n * import { getOrElse, left, right } from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * right(1),\n * getOrElse(() => 0)\n * ),\n * 1\n * )\n * assert.deepStrictEqual(\n * pipe(\n * left('error'),\n * getOrElse(() => 0)\n * ),\n * 0\n * )\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var getOrElse = getOrElseW;\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport var flap = /*#__PURE__*/ flap_(Functor);\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport var apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Less strict version of [`apFirst`](#apfirst)\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport var apFirstW = apFirst;\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport var apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * Less strict version of [`apSecond`](#apsecond)\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport var apSecondW = apSecond;\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category combinators\n * @since 2.15.0\n */\nexport var tap = /*#__PURE__*/ dual(2, chainable.tap(Chain));\n/**\n * Less strict version of [`flatten`](#flatten).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category sequencing\n * @since 2.11.0\n */\nexport var flattenW = \n/*#__PURE__*/ flatMap(identity);\n/**\n * The `flatten` function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n *\n * assert.deepStrictEqual(E.flatten(E.right(E.right('a'))), E.right('a'))\n * assert.deepStrictEqual(E.flatten(E.right(E.left('e'))), E.left('e'))\n * assert.deepStrictEqual(E.flatten(E.left('e')), E.left('e'))\n *\n * @category sequencing\n * @since 2.0.0\n */\nexport var flatten = flattenW;\n/**\n * @since 2.0.0\n */\nexport var duplicate = /*#__PURE__*/ extend(identity);\n/**\n * Use `liftOption`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var fromOptionK = \n/*#__PURE__*/ fromOptionK_(FromEither);\n/**\n * Use `flatMapOption`.\n *\n * @category legacy\n * @since 2.11.0\n */\nexport var chainOptionK = /*#__PURE__*/ chainOptionK_(FromEither, Chain);\n/**\n * Use `flatMapOption`.\n *\n * @category legacy\n * @since 2.13.2\n */\nexport var chainOptionKW = chainOptionK;\n/** @internal */\nvar _FromEither = {\n fromEither: FromEither.fromEither\n};\n/**\n * @category lifting\n * @since 2.15.0\n */\nexport var liftNullable = /*#__PURE__*/ _.liftNullable(_FromEither);\n/**\n * @category lifting\n * @since 2.15.0\n */\nexport var liftOption = /*#__PURE__*/ _.liftOption(_FromEither);\n/** @internal */\nvar _FlatMap = {\n flatMap: flatMap\n};\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport var flatMapNullable = /*#__PURE__*/ _.flatMapNullable(_FromEither, _FlatMap);\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport var flatMapOption = /*#__PURE__*/ _.flatMapOption(_FromEither, _FlatMap);\n/**\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * E.right(1),\n * E.filterOrElse(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * E.right(1)\n * )\n * assert.deepStrictEqual(\n * pipe(\n * E.right(-1),\n * E.filterOrElse(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * E.left('error')\n * )\n * assert.deepStrictEqual(\n * pipe(\n * E.left('a'),\n * E.filterOrElse(\n * (n) => n > 0,\n * () => 'error'\n * )\n * ),\n * E.left('a')\n * )\n *\n * @category filtering\n * @since 2.0.0\n */\nexport var filterOrElse = /*#__PURE__*/ filterOrElse_(FromEither, Chain);\n/**\n * Less strict version of [`filterOrElse`](#filterorelse).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category filtering\n * @since 2.9.0\n */\nexport var filterOrElseW = filterOrElse;\n/**\n * Returns a `Right` if is a `Left` (and vice versa).\n *\n * @since 2.0.0\n */\nexport var swap = function (ma) { return (isLeft(ma) ? right(ma.left) : left(ma.right)); };\n/**\n * Less strict version of [`orElse`](#orelse).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @category error handling\n * @since 2.10.0\n */\nexport var orElseW = function (onLeft) {\n return function (ma) {\n return isLeft(ma) ? onLeft(ma.left) : ma;\n };\n};\n/**\n * Useful for recovering from errors.\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var orElse = orElseW;\n/**\n * Takes a default and a nullable value, if the value is not nully, turn it into a `Right`, if the value is nully use\n * the provided default as a `Left`.\n *\n * @example\n * import { fromNullable, left, right } from 'fp-ts/Either'\n *\n * const parse = fromNullable('nully')\n *\n * assert.deepStrictEqual(parse(1), right(1))\n * assert.deepStrictEqual(parse(null), left('nully'))\n *\n * @category conversions\n * @since 2.0.0\n */\nexport var fromNullable = function (e) {\n return function (a) {\n return a == null ? left(e) : right(a);\n };\n};\n/**\n * Constructs a new `Either` from a function that might throw.\n *\n * See also [`tryCatchK`](#trycatchk).\n *\n * @example\n * import * as E from 'fp-ts/Either'\n *\n * const unsafeHead = <A>(as: ReadonlyArray<A>): A => {\n * if (as.length > 0) {\n * return as[0]\n * } else {\n * throw new Error('empty array')\n * }\n * }\n *\n * const head = <A>(as: ReadonlyArray<A>): E.Either<Error, A> =>\n * E.tryCatch(() => unsafeHead(as), e => (e instanceof Error ? e : new Error('unknown error')))\n *\n * assert.deepStrictEqual(head([]), E.left(new Error('empty array')))\n * assert.deepStrictEqual(head([1, 2, 3]), E.right(1))\n *\n * @category interop\n * @since 2.0.0\n */\nexport var tryCatch = function (f, onThrow) {\n try {\n return right(f());\n }\n catch (e) {\n return left(onThrow(e));\n }\n};\n/**\n * Converts a function that may throw to one returning a `Either`.\n *\n * @category interop\n * @since 2.10.0\n */\nexport var tryCatchK = function (f, onThrow) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return tryCatch(function () { return f.apply(void 0, a); }, onThrow);\n };\n};\n/**\n * Use `liftNullable`.\n *\n * @category legacy\n * @since 2.9.0\n */\nexport var fromNullableK = function (e) {\n var from = fromNullable(e);\n return function (f) { return flow(f, from); };\n};\n/**\n * Use `flatMapNullable`.\n *\n * @category legacy\n * @since 2.9.0\n */\nexport var chainNullableK = function (e) {\n var from = fromNullableK(e);\n return function (f) { return flatMap(from(f)); };\n};\n/**\n * @category conversions\n * @since 2.10.0\n */\nexport var toUnion = /*#__PURE__*/ foldW(identity, identity);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Default value for the `onError` argument of `tryCatch`\n *\n * @since 2.0.0\n */\nexport function toError(e) {\n try {\n return e instanceof Error ? e : new Error(String(e));\n }\n catch (error) {\n return new Error();\n }\n}\nexport function elem(E) {\n return function (a, ma) {\n if (ma === undefined) {\n var elemE_1 = elem(E);\n return function (ma) { return elemE_1(a, ma); };\n }\n return isLeft(ma) ? false : E.equals(a, ma.right);\n };\n}\n/**\n * Returns `false` if `Left` or returns the result of the application of the given predicate to the `Right` value.\n *\n * @example\n * import { exists, left, right } from 'fp-ts/Either'\n *\n * const gt2 = exists((n: number) => n > 2)\n *\n * assert.strictEqual(gt2(left('a')), false)\n * assert.strictEqual(gt2(right(1)), false)\n * assert.strictEqual(gt2(right(3)), true)\n *\n * @since 2.0.0\n */\nexport var exists = function (predicate) {\n return function (ma) {\n return isLeft(ma) ? false : predicate(ma.right);\n };\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport var Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bindTo = /*#__PURE__*/ bindTo_(Functor);\nvar let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bind = /*#__PURE__*/ chainable.bind(Chain);\n/**\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category do notation\n * @since 2.8.0\n */\nexport var bindW = bind;\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var apS = /*#__PURE__*/ apS_(Apply);\n/**\n * Less strict version of [`apS`](#aps).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category do notation\n * @since 2.8.0\n */\nexport var apSW = apS;\n/**\n * @since 2.11.0\n */\nexport var ApT = /*#__PURE__*/ of(_.emptyReadonlyArray);\n// -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyNonEmptyArrayWithIndex = function (f) {\n return function (as) {\n var e = f(0, _.head(as));\n if (isLeft(e)) {\n return e;\n }\n var out = [e.right];\n for (var i = 1; i < as.length; i++) {\n var e_1 = f(i, as[i]);\n if (isLeft(e_1)) {\n return e_1;\n }\n out.push(e_1.right);\n }\n return right(out);\n };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyArrayWithIndex = function (f) {\n var g = traverseReadonlyNonEmptyArrayWithIndex(f);\n return function (as) { return (_.isNonEmpty(as) ? g(as) : ApT); };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArrayWithIndex = traverseReadonlyArrayWithIndex;\n/**\n * Equivalent to `ReadonlyArray#traverse(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArray = function (f) { return traverseReadonlyArrayWithIndex(function (_, a) { return f(a); }); };\n/**\n * Equivalent to `ReadonlyArray#sequence(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var sequenceArray = \n/*#__PURE__*/ traverseArray(identity);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.6.0\n */\nexport var chainW = flatMap;\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chain = flatMap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chainFirst = tap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.8.0\n */\nexport var chainFirstW = tap;\n/**\n * Use [`parse`](./Json.ts.html#parse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function parseJSON(s, onError) {\n return tryCatch(function () { return JSON.parse(s); }, onError);\n}\n/**\n * Use [`stringify`](./Json.ts.html#stringify) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var stringifyJSON = function (u, onError) {\n return tryCatch(function () {\n var s = JSON.stringify(u);\n if (typeof s !== 'string') {\n throw new Error('Converting unsupported structure to JSON');\n }\n return s;\n }, onError);\n};\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `E.Functor` instead of `E.either`\n * (where `E` is from `import E from 'fp-ts/Either'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var either = {\n URI: URI,\n map: _map,\n of: of,\n ap: _ap,\n chain: flatMap,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n bimap: _bimap,\n mapLeft: _mapLeft,\n alt: _alt,\n extend: _extend,\n chainRec: _chainRec,\n throwError: throwError\n};\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * Semigroup returning the left-most `Left` value. If both operands are `Right`s then the inner values\n * are concatenated using the provided `Semigroup`\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getApplySemigroup = \n/*#__PURE__*/ getApplySemigroup_(Apply);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getApplyMonoid = \n/*#__PURE__*/ getApplicativeMonoid(Applicative);\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getValidationSemigroup = function (SE, SA) {\n return getApplySemigroup_(getApplicativeValidation(SE))(SA);\n};\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getValidationMonoid = function (SE, MA) {\n return getApplicativeMonoid(getApplicativeValidation(SE))(MA);\n};\n/**\n * Use [`getApplicativeValidation`](#getapplicativevalidation) and [`getAltValidation`](#getaltvalidation) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function getValidation(SE) {\n var ap = getApplicativeValidation(SE).ap;\n var alt = getAltValidation(SE).alt;\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n of: of,\n chain: flatMap,\n bimap: _bimap,\n mapLeft: _mapLeft,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n extend: _extend,\n traverse: _traverse,\n sequence: sequence,\n chainRec: _chainRec,\n throwError: throwError,\n ap: ap,\n alt: alt\n };\n}\n","import { ap as ap_ } from './Apply';\nimport * as E from './Either';\nimport { flow, pipe } from './function';\nimport { map as map_ } from './Functor';\nexport function right(F) {\n return flow(E.right, F.of);\n}\nexport function left(F) {\n return flow(E.left, F.of);\n}\nexport function rightF(F) {\n return function (fa) { return F.map(fa, E.right); };\n}\nexport function leftF(F) {\n return function (fe) { return F.map(fe, E.left); };\n}\nexport function fromNullable(F) {\n return function (e) { return flow(E.fromNullable(e), F.of); };\n}\nexport function fromNullableK(F) {\n var fromNullableF = fromNullable(F);\n return function (e) {\n var fromNullableFE = fromNullableF(e);\n return function (f) { return flow(f, fromNullableFE); };\n };\n}\nexport function chainNullableK(M) {\n var chainM = chain(M);\n var fromNullableKM = fromNullableK(M);\n return function (e) {\n var fromNullableKMe = fromNullableKM(e);\n return function (f) { return chainM(fromNullableKMe(f)); };\n };\n}\nexport function map(F) {\n return map_(F, E.Functor);\n}\nexport function ap(F) {\n return ap_(F, E.Apply);\n}\nexport function chain(M) {\n var flatMapM = flatMap(M);\n return function (f) { return function (ma) { return flatMapM(ma, f); }; };\n}\n/** @internal */\nexport function flatMap(M) {\n return function (ma, f) { return M.chain(ma, function (e) { return (E.isLeft(e) ? M.of(e) : f(e.right)); }); };\n}\nexport function alt(M) {\n return function (second) { return function (first) { return M.chain(first, function (e) { return (E.isLeft(e) ? second() : M.of(e)); }); }; };\n}\nexport function bimap(F) {\n var mapBothF = mapBoth(F);\n return function (f, g) { return function (self) { return mapBothF(self, f, g); }; };\n}\n/** @internal */\nexport function mapBoth(F) {\n return function (self, f, g) { return F.map(self, E.bimap(f, g)); };\n}\nexport function mapLeft(F) {\n var mapErrorF = mapError(F);\n return function (f) { return function (self) { return mapErrorF(self, f); }; };\n}\n/** @internal */\nexport function mapError(F) {\n return function (self, f) { return F.map(self, E.mapLeft(f)); };\n}\nexport function altValidation(M, S) {\n return function (second) { return function (first) {\n return M.chain(first, E.match(function (e1) {\n return M.map(second(), E.mapLeft(function (e2) { return S.concat(e1, e2); }));\n }, right(M)));\n }; };\n}\nexport function match(F) {\n return function (onLeft, onRight) { return function (ma) { return F.map(ma, E.match(onLeft, onRight)); }; };\n}\nexport function matchE(M) {\n return function (onLeft, onRight) { return function (ma) { return M.chain(ma, E.match(onLeft, onRight)); }; };\n}\nexport function getOrElse(M) {\n return function (onLeft) { return function (ma) { return M.chain(ma, E.match(onLeft, M.of)); }; };\n}\nexport function orElse(M) {\n return function (onLeft) { return function (ma) { return M.chain(ma, function (e) { return (E.isLeft(e) ? onLeft(e.left) : M.of(e)); }); }; };\n}\nexport function orElseFirst(M) {\n var tapErrorM = tapError(M);\n return function (onLeft) { return function (ma) { return tapErrorM(ma, onLeft); }; };\n}\n/** @internal */\nexport function tapError(M) {\n var orElseM = orElse(M);\n return function (ma, onLeft) {\n return pipe(ma, orElseM(function (e) { return M.map(onLeft(e), function (eb) { return (E.isLeft(eb) ? eb : E.left(e)); }); }));\n };\n}\nexport function orLeft(M) {\n return function (onLeft) { return function (ma) {\n return M.chain(ma, E.match(function (e) { return M.map(onLeft(e), E.left); }, function (a) { return M.of(E.right(a)); }));\n }; };\n}\nexport function swap(F) {\n return function (ma) { return F.map(ma, E.swap); };\n}\nexport function toUnion(F) {\n return function (fa) { return F.map(fa, E.toUnion); };\n}\n/** @deprecated */\n/* istanbul ignore next */\nexport function getEitherM(M) {\n var _ap = ap(M);\n var _map = map(M);\n var _chain = chain(M);\n var _alt = alt(M);\n var _bimap = bimap(M);\n var _mapLeft = mapLeft(M);\n var _fold = matchE(M);\n var _getOrElse = getOrElse(M);\n var _orElse = orElse(M);\n return {\n map: function (fa, f) { return pipe(fa, _map(f)); },\n ap: function (fab, fa) { return pipe(fab, _ap(fa)); },\n of: right(M),\n chain: function (ma, f) { return pipe(ma, _chain(f)); },\n alt: function (fa, that) { return pipe(fa, _alt(that)); },\n bimap: function (fea, f, g) { return pipe(fea, _bimap(f, g)); },\n mapLeft: function (fea, f) { return pipe(fea, _mapLeft(f)); },\n fold: function (fa, onLeft, onRight) { return pipe(fa, _fold(onLeft, onRight)); },\n getOrElse: function (fa, onLeft) { return pipe(fa, _getOrElse(onLeft)); },\n orElse: function (fa, f) { return pipe(fa, _orElse(f)); },\n swap: swap(M),\n rightM: rightF(M),\n leftM: leftF(M),\n left: left(M)\n };\n}\n","/**\n * @since 2.10.0\n */\nimport { tryCatch } from './Either';\nimport { identity } from './function';\n/**\n * Converts a JavaScript Object Notation (JSON) string into a `Json` type.\n *\n * @example\n * import * as J from 'fp-ts/Json'\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('{\"a\":1}', J.parse), E.right({ a: 1 }))\n * assert.deepStrictEqual(pipe('{\"a\":}', J.parse), E.left(new SyntaxError(`Unexpected token '}', \"{\"a\":}\" is not valid JSON`)))\n *\n * @since 2.10.0\n */\nexport var parse = function (s) { return tryCatch(function () { return JSON.parse(s); }, identity); };\n/**\n * Converts a JavaScript value to a JavaScript Object Notation (JSON) string.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import * as J from 'fp-ts/Json'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(J.stringify({ a: 1 }), E.right('{\"a\":1}'))\n * const circular: any = { ref: null }\n * circular.ref = circular\n * assert.deepStrictEqual(\n * pipe(\n * J.stringify(circular),\n * E.mapLeft(e => e instanceof Error && e.message.includes('Converting circular structure to JSON'))\n * ),\n * E.left(true)\n * )\n *\n * @since 2.10.0\n */\nexport var stringify = function (a) {\n return tryCatch(function () {\n var s = JSON.stringify(a);\n if (typeof s !== 'string') {\n throw new Error('Converting unsupported structure to JSON');\n }\n return s;\n }, identity);\n};\n","/**\n * ```ts\n * interface Task<A> {\n * (): Promise<A>\n * }\n * ```\n *\n * `Task<A>` represents an asynchronous computation that yields a value of type `A` and **never fails**.\n * If you want to represent an asynchronous computation that may fail, please see `TaskEither`.\n *\n * @since 2.0.0\n */\nimport { getApplicativeMonoid } from './Applicative';\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_, getApplySemigroup as getApplySemigroup_ } from './Apply';\nimport * as chainable from './Chain';\nimport { fromIOK as fromIOK_, tapIO as tapIO_ } from './FromIO';\nimport { dual, identity, pipe } from './function';\nimport { as as as_, asUnit as asUnit_, bindTo as bindTo_, flap as flap_, let as let__ } from './Functor';\nimport * as _ from './internal';\n// -------------------------------------------------------------------------------------\n// conversions\n// -------------------------------------------------------------------------------------\n/**\n * @category conversions\n * @since 2.0.0\n */\nexport var fromIO = function (ma) { return function () { return Promise.resolve().then(ma); }; };\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Creates a task that will complete after a time delay\n *\n * @example\n * import { sequenceT } from 'fp-ts/Apply'\n * import * as T from 'fp-ts/Task'\n * import { takeRight } from 'fp-ts/Array'\n *\n * async function test() {\n * const log: Array<string> = []\n * const append = (message: string): T.Task<void> =>\n * T.fromIO(() => {\n * log.push(message)\n * })\n * const fa = append('a')\n * const fb = T.delay(20)(append('b'))\n * const fc = T.delay(10)(append('c'))\n * const fd = append('d')\n * await sequenceT(T.ApplyPar)(fa, fb, fc, fd)()\n * assert.deepStrictEqual(takeRight(2)(log), ['c', 'b'])\n * }\n *\n * test()\n *\n * @since 2.0.0\n */\nexport function delay(millis) {\n return function (ma) { return function () {\n return new Promise(function (resolve) {\n setTimeout(function () {\n Promise.resolve().then(ma).then(resolve);\n }, millis);\n });\n }; };\n}\nvar _map = function (fa, f) { return pipe(fa, map(f)); };\nvar _apPar = function (fab, fa) { return pipe(fab, ap(fa)); };\nvar _apSeq = function (fab, fa) { return flatMap(fab, function (f) { return pipe(fa, map(f)); }); };\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport var map = function (f) { return function (fa) { return function () {\n return Promise.resolve().then(fa).then(f);\n}; }; };\n/**\n * @since 2.0.0\n */\nexport var ap = function (fa) { return function (fab) { return function () {\n return Promise.all([Promise.resolve().then(fab), Promise.resolve().then(fa)]).then(function (_a) {\n var f = _a[0], a = _a[1];\n return f(a);\n });\n}; }; };\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var of = function (a) { return function () { return Promise.resolve(a); }; };\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport var flatMap = /*#__PURE__*/ dual(2, function (ma, f) {\n return function () {\n return Promise.resolve()\n .then(ma)\n .then(function (a) { return f(a)(); });\n };\n});\n/**\n * @category sequencing\n * @since 2.0.0\n */\nexport var flatten = /*#__PURE__*/ flatMap(identity);\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport var URI = 'Task';\n/**\n * Monoid returning the first completed task.\n *\n * Note: uses `Promise.race` internally.\n *\n * @example\n * import * as T from 'fp-ts/Task'\n *\n * async function test() {\n * const S = T.getRaceMonoid<string>()\n * const fa = T.delay(20)(T.of('a'))\n * const fb = T.delay(10)(T.of('b'))\n * assert.deepStrictEqual(await S.concat(fa, fb)(), 'b')\n * }\n *\n * test()\n *\n * @category instances\n * @since 2.0.0\n */\nexport function getRaceMonoid() {\n return {\n concat: function (x, y) { return function () { return Promise.race([Promise.resolve().then(x), Promise.resolve().then(y)]); }; },\n empty: never\n };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Functor = {\n URI: URI,\n map: _map\n};\n/**\n * Maps the value to the specified constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var as = dual(2, as_(Functor));\n/**\n * Maps the value to the void constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var asUnit = asUnit_(Functor);\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport var flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Pointed = {\n URI: URI,\n of: of\n};\n/**\n * Runs computations in parallel.\n *\n * @category instances\n * @since 2.10.0\n */\nexport var ApplyPar = {\n URI: URI,\n map: _map,\n ap: _apPar\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport var apFirst = /*#__PURE__*/ apFirst_(ApplyPar);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport var apSecond = /*#__PURE__*/ apSecond_(ApplyPar);\n/**\n * Runs computations in parallel.\n *\n * @category instances\n * @since 2.7.0\n */\nexport var ApplicativePar = {\n URI: URI,\n map: _map,\n ap: _apPar,\n of: of\n};\n/**\n * Runs computations sequentially.\n *\n * @category instances\n * @since 2.10.0\n */\nexport var ApplySeq = {\n URI: URI,\n map: _map,\n ap: _apSeq\n};\n/**\n * Runs computations sequentially.\n *\n * @category instances\n * @since 2.7.0\n */\nexport var ApplicativeSeq = {\n URI: URI,\n map: _map,\n ap: _apSeq,\n of: of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Chain = {\n URI: URI,\n map: _map,\n ap: _apPar,\n chain: flatMap\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Monad = {\n URI: URI,\n map: _map,\n of: of,\n ap: _apPar,\n chain: flatMap\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var MonadIO = {\n URI: URI,\n map: _map,\n of: of,\n ap: _apPar,\n chain: flatMap,\n fromIO: fromIO\n};\n/**\n * @category zone of death\n * @since 2.7.0\n * @deprecated\n */\nexport var fromTask = identity;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var MonadTask = {\n URI: URI,\n map: _map,\n of: of,\n ap: _apPar,\n chain: flatMap,\n fromIO: fromIO,\n fromTask: fromTask\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var FromIO = {\n URI: URI,\n fromIO: fromIO\n};\n/** @internal */\nvar _FlatMap = {\n flatMap: flatMap\n};\n/** @internal */\nvar _FromIO = {\n fromIO: FromIO.fromIO\n};\n/**\n * @category sequencing\n * @since 2.16.0\n */\nexport var flatMapIO = _.flatMapIO(_FromIO, _FlatMap);\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category combinators\n * @since 2.15.0\n */\nexport var tap = /*#__PURE__*/ dual(2, chainable.tap(Chain));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as T from 'fp-ts/Task'\n * import * as Console from 'fp-ts/Console'\n *\n * // Will produce `Hello, fp-ts` to the stdout\n * const effect = pipe(\n * T.of('fp-ts'),\n * T.tapIO((value) => Console.log(`Hello, ${value}`)),\n * )\n *\n * async function test() {\n * assert.deepStrictEqual(await effect(), 'fp-ts')\n * }\n *\n * test()\n *\n * @category combinators\n * @since 2.16.0\n */\nexport var tapIO = /*#__PURE__*/ dual(2, tapIO_(FromIO, Chain));\n/**\n * @category lifting\n * @since 2.4.0\n */\nexport var fromIOK = \n/*#__PURE__*/ fromIOK_(FromIO);\n/**\n * Alias of `flatMapIO`.\n *\n * @category legacy\n * @since 2.4.0\n */\nexport var chainIOK = flatMapIO;\n/**\n * Alias of `tapIO`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var chainFirstIOK = tapIO;\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var FromTask = {\n URI: URI,\n fromIO: fromIO,\n fromTask: fromTask\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * A `Task` that never completes.\n *\n * @since 2.0.0\n */\nexport var never = function () { return new Promise(function (_) { return undefined; }); };\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport var Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bindTo = /*#__PURE__*/ bindTo_(Functor);\nvar let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bind = /*#__PURE__*/ chainable.bind(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var apS = /*#__PURE__*/ apS_(ApplyPar);\n/**\n * @since 2.11.0\n */\nexport var ApT = /*#__PURE__*/ of(_.emptyReadonlyArray);\n// -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativePar)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyNonEmptyArrayWithIndex = function (f) {\n return function (as) {\n return function () {\n return Promise.all(as.map(function (a, i) { return Promise.resolve().then(function () { return f(i, a)(); }); }));\n };\n };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativePar)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyArrayWithIndex = function (f) {\n var g = traverseReadonlyNonEmptyArrayWithIndex(f);\n return function (as) { return (_.isNonEmpty(as) ? g(as) : ApT); };\n};\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyNonEmptyArrayWithIndexSeq = function (f) {\n return function (as) {\n return function () {\n return _.tail(as).reduce(function (acc, a, i) {\n return acc.then(function (bs) {\n return Promise.resolve()\n .then(f(i + 1, a))\n .then(function (b) {\n bs.push(b);\n return bs;\n });\n });\n }, Promise.resolve()\n .then(f(0, _.head(as)))\n .then(_.singleton));\n };\n };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyArrayWithIndexSeq = function (f) {\n var g = traverseReadonlyNonEmptyArrayWithIndexSeq(f);\n return function (as) { return (_.isNonEmpty(as) ? g(as) : ApT); };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArrayWithIndex = traverseReadonlyArrayWithIndex;\n/**\n * Equivalent to `ReadonlyArray#traverse(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArray = function (f) {\n return traverseReadonlyArrayWithIndex(function (_, a) { return f(a); });\n};\n/**\n * Equivalent to `ReadonlyArray#sequence(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var sequenceArray = \n/*#__PURE__*/ traverseArray(identity);\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseSeqArrayWithIndex = traverseReadonlyArrayWithIndexSeq;\n/**\n * Equivalent to `ReadonlyArray#traverse(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseSeqArray = function (f) {\n return traverseReadonlyArrayWithIndexSeq(function (_, a) { return f(a); });\n};\n/**\n * Equivalent to `ReadonlyArray#sequence(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var sequenceSeqArray = \n/*#__PURE__*/ traverseSeqArray(identity);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chain = flatMap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chainFirst = tap;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `T.Functor` instead of `T.task`\n * (where `T` is from `import T from 'fp-ts/Task'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var task = {\n URI: URI,\n map: _map,\n of: of,\n ap: _apPar,\n chain: flatMap,\n fromIO: fromIO,\n fromTask: fromTask\n};\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `T.Functor` instead of `T.taskSeq`\n * (where `T` is from `import T from 'fp-ts/Task'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var taskSeq = {\n URI: URI,\n map: _map,\n of: of,\n ap: _apSeq,\n chain: flatMap,\n fromIO: fromIO,\n fromTask: fromTask\n};\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getSemigroup = /*#__PURE__*/ getApplySemigroup_(ApplySeq);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * Lift a monoid into 'Task', the inner values are concatenated using the provided `Monoid`.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getMonoid = /*#__PURE__*/ getApplicativeMonoid(ApplicativeSeq);\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { getApplicativeMonoid } from './Applicative';\nimport { ap as ap_, apFirst as apFirst_, apS as apS_, apSecond as apSecond_, getApplySemigroup as getApplySemigroup_ } from './Apply';\nimport * as chainable from './Chain';\nimport { compact as compact_, separate as separate_ } from './Compactable';\nimport * as E from './Either';\nimport * as ET from './EitherT';\nimport { filter as filter_, filterMap as filterMap_, partition as partition_, partitionMap as partitionMap_ } from './Filterable';\nimport { chainOptionK as chainOptionK_, filterOrElse as filterOrElse_, fromEitherK as fromEitherK_, fromOption as fromOption_, fromOptionK as fromOptionK_, fromPredicate as fromPredicate_, tapEither as tapEither_ } from './FromEither';\nimport { fromIOK as fromIOK_, tapIO as tapIO_ } from './FromIO';\nimport { fromTaskK as fromTaskK_, tapTask as tapTask_ } from './FromTask';\nimport { dual, flow, identity, pipe, SK } from './function';\nimport { as as as_, asUnit as asUnit_, bindTo as bindTo_, flap as flap_, let as let__ } from './Functor';\nimport * as _ from './internal';\nimport * as T from './Task';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var left = /*#__PURE__*/ ET.left(T.Pointed);\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var right = /*#__PURE__*/ ET.right(T.Pointed);\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var rightTask = /*#__PURE__*/ ET.rightF(T.Functor);\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var leftTask = /*#__PURE__*/ ET.leftF(T.Functor);\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var rightIO = /*#__PURE__*/ flow(T.fromIO, rightTask);\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var leftIO = /*#__PURE__*/ flow(T.fromIO, leftTask);\n// -------------------------------------------------------------------------------------\n// conversions\n// -------------------------------------------------------------------------------------\n/**\n * @category conversions\n * @since 2.7.0\n */\nexport var fromIO = rightIO;\n/**\n * @category conversions\n * @since 2.7.0\n */\nexport var fromTask = rightTask;\n/**\n * @category conversions\n * @since 2.0.0\n */\nexport var fromEither = T.of;\n/**\n * @category conversions\n * @since 2.0.0\n */\nexport var fromIOEither = T.fromIO;\n/**\n * @category conversions\n * @since 2.11.0\n */\nexport var fromTaskOption = function (onNone) {\n return T.map(E.fromOption(onNone));\n};\n/**\n * @category pattern matching\n * @since 2.10.0\n */\nexport var match = \n/*#__PURE__*/ ET.match(T.Functor);\n/**\n * Less strict version of [`match`](#match).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var matchW = match;\n/**\n * The `E` suffix (short for **E**ffect) means that the handlers return an effect (`Task`).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var matchE = /*#__PURE__*/ ET.matchE(T.Monad);\n/**\n * Alias of [`matchE`](#matche).\n *\n * @category pattern matching\n * @since 2.0.0\n */\nexport var fold = matchE;\n/**\n * Less strict version of [`matchE`](#matche).\n *\n * The `W` suffix (short for **W**idening) means that the handler return types will be merged.\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var matchEW = matchE;\n/**\n * Alias of [`matchEW`](#matchew).\n *\n * @category pattern matching\n * @since 2.10.0\n */\nexport var foldW = matchEW;\n/**\n * @category error handling\n * @since 2.0.0\n */\nexport var getOrElse = \n/*#__PURE__*/ ET.getOrElse(T.Monad);\n/**\n * Less strict version of [`getOrElse`](#getorelse).\n *\n * The `W` suffix (short for **W**idening) means that the handler return type will be merged.\n *\n * @category error handling\n * @since 2.6.0\n */\nexport var getOrElseW = getOrElse;\n/**\n * Transforms a `Promise` that may reject to a `Promise` that never rejects and returns an `Either` instead.\n *\n * See also [`tryCatchK`](#trycatchk).\n *\n * @example\n * import { left, right } from 'fp-ts/Either'\n * import { tryCatch } from 'fp-ts/TaskEither'\n *\n * tryCatch(() => Promise.resolve(1), String)().then(result => {\n * assert.deepStrictEqual(result, right(1))\n * })\n * tryCatch(() => Promise.reject('error'), String)().then(result => {\n * assert.deepStrictEqual(result, left('error'))\n * })\n *\n * @category interop\n * @since 2.0.0\n */\nexport var tryCatch = function (f, onRejected) {\n return function () { return __awaiter(void 0, void 0, void 0, function () {\n var reason_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, f().then(_.right)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n reason_1 = _a.sent();\n return [2 /*return*/, _.left(onRejected(reason_1))];\n case 3: return [2 /*return*/];\n }\n });\n }); };\n};\n/**\n * Converts a function returning a `Promise` to one returning a `TaskEither`.\n *\n * @category interop\n * @since 2.5.0\n */\nexport var tryCatchK = function (f, onRejected) {\n return function () {\n var a = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n a[_i] = arguments[_i];\n }\n return tryCatch(function () { return f.apply(void 0, a); }, onRejected);\n };\n};\n/**\n * @category conversions\n * @since 2.10.0\n */\nexport var toUnion = /*#__PURE__*/ ET.toUnion(T.Functor);\n/**\n * @category conversions\n * @since 2.12.0\n */\nexport var fromNullable = /*#__PURE__*/ ET.fromNullable(T.Pointed);\n/**\n * Use `liftNullable`.\n *\n * @category legacy\n * @since 2.12.0\n */\nexport var fromNullableK = /*#__PURE__*/ ET.fromNullableK(T.Pointed);\n/**\n * Use `flatMapNullable`.\n *\n * @category legacy\n * @since 2.12.0\n */\nexport var chainNullableK = \n/*#__PURE__*/ ET.chainNullableK(T.Monad);\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Returns `ma` if is a `Right` or the value returned by `onLeft` otherwise.\n *\n * See also [alt](#alt).\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as TE from 'fp-ts/TaskEither'\n *\n * async function test() {\n * const errorHandler = TE.orElse((error: string) => TE.right(`recovering from ${error}...`))\n * assert.deepStrictEqual(await pipe(TE.right('ok'), errorHandler)(), E.right('ok'))\n * assert.deepStrictEqual(await pipe(TE.left('ko'), errorHandler)(), E.right('recovering from ko...'))\n * }\n *\n * test()\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var orElse = \n/*#__PURE__*/ ET.orElse(T.Monad);\n/**\n * Less strict version of [`orElse`](#orelse).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @category error handling\n * @since 2.10.0\n */\nexport var orElseW = orElse;\n/**\n * Returns an effect that effectfully \"peeks\" at the failure of this effect.\n *\n * @category error handling\n * @since 2.15.0\n */\nexport var tapError = /*#__PURE__*/ dual(2, ET.tapError(T.Monad));\n/**\n * @category error handling\n * @since 2.12.0\n */\nexport var orElseFirstIOK = function (onLeft) { return tapError(fromIOK(onLeft)); };\n/**\n * @category error handling\n * @since 2.12.0\n */\nexport var orElseFirstTaskK = function (onLeft) { return tapError(fromTaskK(onLeft)); };\n/**\n * @category error handling\n * @since 2.11.0\n */\nexport var orLeft = \n/*#__PURE__*/ ET.orLeft(T.Monad);\n/**\n * @since 2.0.0\n */\nexport var swap = /*#__PURE__*/ ET.swap(T.Functor);\n/**\n * @category lifting\n * @since 2.11.0\n */\nexport var fromTaskOptionK = function (onNone) {\n var from = fromTaskOption(onNone);\n return function (f) { return flow(f, from); };\n};\n/**\n * Use `flatMapTaskOption`.\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category legacy\n * @since 2.12.3\n */\nexport var chainTaskOptionKW = function (onNone) {\n return function (f) {\n return function (ma) {\n return flatMap(ma, fromTaskOptionK(onNone)(f));\n };\n };\n};\n/**\n * Use `flatMapTaskOption`.\n *\n * @category legacy\n * @since 2.11.0\n */\nexport var chainTaskOptionK = chainTaskOptionKW;\n/**\n * @category lifting\n * @since 2.4.0\n */\nexport var fromIOEitherK = function (f) { return flow(f, fromIOEither); };\nvar _map = function (fa, f) { return pipe(fa, map(f)); };\nvar _apPar = function (fab, fa) { return pipe(fab, ap(fa)); };\nvar _apSeq = function (fab, fa) { return flatMap(fab, function (f) { return pipe(fa, map(f)); }); };\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return pipe(fa, alt(that)); };\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.0.0\n */\nexport var map = /*#__PURE__*/ ET.map(T.Functor);\n/**\n * Returns a `TaskEither` whose failure and success channels have been mapped by the specified pair of functions, `f` and `g`.\n *\n * @example\n * import * as TaskEither from 'fp-ts/TaskEither'\n * import * as Either from 'fp-ts/Either'\n *\n * const f = (s: string) => new Error(s)\n * const g = (n: number) => n * 2\n *\n * async function test() {\n * assert.deepStrictEqual(await TaskEither.mapBoth(TaskEither.right(1), f, g)(), Either.right(2))\n * assert.deepStrictEqual(await TaskEither.mapBoth(TaskEither.left('err'), f, g)(), Either.left(new Error('err')))\n * }\n *\n * test()\n *\n * @category error handling\n * @since 2.16.0\n */\nexport var mapBoth = /*#__PURE__*/ dual(3, ET.mapBoth(T.Functor));\n/**\n * Alias of `mapBoth`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var bimap = mapBoth;\n/**\n * Returns a `TaskEither` with its error channel mapped using the specified function.\n *\n * @example\n * import * as TaskEither from 'fp-ts/TaskEither'\n * import * as Either from 'fp-ts/Either'\n *\n * const f = (s: string) => new Error(s)\n *\n * async function test() {\n * assert.deepStrictEqual(await TaskEither.mapError(TaskEither.right(1), f)(), Either.right(1))\n * assert.deepStrictEqual(await TaskEither.mapError(TaskEither.left('err'), f)(), Either.left(new Error('err')))\n * }\n *\n * test()\n *\n * @category error handling\n * @since 2.16.0\n */\nexport var mapError = /*#__PURE__*/ dual(2, ET.mapError(T.Functor));\n/**\n * Alias of `mapError`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var mapLeft = mapError;\n/**\n * @since 2.0.0\n */\nexport var ap = \n/*#__PURE__*/ ET.ap(T.ApplyPar);\n/**\n * Less strict version of [`ap`](#ap).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.8.0\n */\nexport var apW = ap;\n/**\n * @category sequencing\n * @since 2.14.0\n */\nexport var flatMap = /*#__PURE__*/ dual(2, ET.flatMap(T.Monad));\n/**\n * Less strict version of [`flatten`](#flatten).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category sequencing\n * @since 2.11.0\n */\nexport var flattenW = \n/*#__PURE__*/ flatMap(identity);\n/**\n * @category sequencing\n * @since 2.0.0\n */\nexport var flatten = flattenW;\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `TaskEither` returns `fa` if is a `Right` or the value returned by `that` otherwise.\n *\n * See also [orElse](#orelse).\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as TE from 'fp-ts/TaskEither'\n *\n * async function test() {\n * assert.deepStrictEqual(\n * await pipe(\n * TE.right(1),\n * TE.alt(() => TE.right(2))\n * )(),\n * E.right(1)\n * )\n * assert.deepStrictEqual(\n * await pipe(\n * TE.left('a'),\n * TE.alt(() => TE.right(2))\n * )(),\n * E.right(2)\n * )\n * assert.deepStrictEqual(\n * await pipe(\n * TE.left('a'),\n * TE.alt(() => TE.left('b'))\n * )(),\n * E.left('b')\n * )\n * }\n *\n * test()\n *\n * @category error handling\n * @since 2.0.0\n */\nexport var alt = \n/*#__PURE__*/ ET.alt(T.Monad);\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the error and the return types will be merged.\n *\n * @category error handling\n * @since 2.9.0\n */\nexport var altW = alt;\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport var of = right;\n/**\n * @since 2.7.0\n */\nexport var throwError = left;\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport var URI = 'TaskEither';\n/**\n * The default [`ApplicativePar`](#applicativepar) instance returns the first error, if you want to\n * get all errors you need to provide a way to concatenate them via a `Semigroup`.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/Semigroup'\n * import * as string from 'fp-ts/string'\n * import * as T from 'fp-ts/Task'\n * import * as TE from 'fp-ts/TaskEither'\n *\n * interface User {\n * readonly id: string\n * readonly name: string\n * }\n *\n * const remoteDatabase: ReadonlyArray<User> = [\n * { id: 'id1', name: 'John' },\n * { id: 'id2', name: 'Mary' },\n * { id: 'id3', name: 'Joey' }\n * ]\n *\n * const fetchUser = (id: string): TE.TaskEither<string, User> =>\n * pipe(\n * remoteDatabase,\n * RA.findFirst((user) => user.id === id),\n * TE.fromOption(() => `${id} not found`)\n * )\n *\n * async function test() {\n * assert.deepStrictEqual(\n * await pipe(['id4', 'id5'], RA.traverse(TE.ApplicativePar)(fetchUser))(),\n * E.left('id4 not found') // <= first error\n * )\n *\n * const Applicative = TE.getApplicativeTaskValidation(\n * T.ApplyPar,\n * pipe(string.Semigroup, S.intercalate(', '))\n * )\n *\n * assert.deepStrictEqual(\n * await pipe(['id4', 'id5'], RA.traverse(Applicative)(fetchUser))(),\n * E.left('id4 not found, id5 not found') // <= all errors\n * )\n * }\n *\n * test()\n *\n * @category error handling\n * @since 2.7.0\n */\nexport function getApplicativeTaskValidation(A, S) {\n var ap = ap_(A, E.getApplicativeValidation(S));\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n ap: function (fab, fa) { return pipe(fab, ap(fa)); },\n of: of\n };\n}\n/**\n * The default [`Alt`](#alt) instance returns the last error, if you want to\n * get all errors you need to provide a way to concatenate them via a `Semigroup`.\n *\n * See [`getAltValidation`](./Either.ts.html#getaltvalidation).\n *\n * @category error handling\n * @since 2.7.0\n */\nexport function getAltTaskValidation(S) {\n var alt = ET.altValidation(T.Monad, S);\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n alt: function (fa, that) { return pipe(fa, alt(that)); }\n };\n}\n/**\n * @category filtering\n * @since 2.10.0\n */\nexport var getCompactable = function (M) {\n var C = E.getCompactable(M);\n return {\n URI: URI,\n _E: undefined,\n compact: compact_(T.Functor, C),\n separate: separate_(T.Functor, C, E.Functor)\n };\n};\n/**\n * @category filtering\n * @since 2.1.0\n */\nexport function getFilterable(M) {\n var F = E.getFilterable(M);\n var C = getCompactable(M);\n var filter = filter_(T.Functor, F);\n var filterMap = filterMap_(T.Functor, F);\n var partition = partition_(T.Functor, F);\n var partitionMap = partitionMap_(T.Functor, F);\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n compact: C.compact,\n separate: C.separate,\n filter: function (fa, predicate) { return pipe(fa, filter(predicate)); },\n filterMap: function (fa, f) { return pipe(fa, filterMap(f)); },\n partition: function (fa, predicate) { return pipe(fa, partition(predicate)); },\n partitionMap: function (fa, f) { return pipe(fa, partitionMap(f)); }\n };\n}\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Functor = {\n URI: URI,\n map: _map\n};\n/**\n * Maps the `Right` value of this `TaskEither` to the specified constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var as = dual(2, as_(Functor));\n/**\n * Maps the `Right` value of this `TaskEither` to the void constant value.\n *\n * @category mapping\n * @since 2.16.0\n */\nexport var asUnit = asUnit_(Functor);\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport var flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Pointed = {\n URI: URI,\n of: of\n};\n/**\n * Runs computations in parallel.\n *\n * @category instances\n * @since 2.10.0\n */\nexport var ApplyPar = {\n URI: URI,\n map: _map,\n ap: _apPar\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.0.0\n */\nexport var apFirst = /*#__PURE__*/ apFirst_(ApplyPar);\n/**\n * Less strict version of [`apFirst`](#apfirst).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport var apFirstW = apFirst;\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.0.0\n */\nexport var apSecond = /*#__PURE__*/ apSecond_(ApplyPar);\n/**\n * Less strict version of [`apSecond`](#apsecond).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport var apSecondW = apSecond;\n/**\n * Runs computations in parallel.\n *\n * @category instances\n * @since 2.7.0\n */\nexport var ApplicativePar = {\n URI: URI,\n map: _map,\n ap: _apPar,\n of: of\n};\n/**\n * Runs computations sequentially.\n *\n * @category instances\n * @since 2.10.0\n */\nexport var ApplySeq = {\n URI: URI,\n map: _map,\n ap: _apSeq\n};\n/**\n * Runs computations sequentially.\n *\n * @category instances\n * @since 2.7.0\n */\nexport var ApplicativeSeq = {\n URI: URI,\n map: _map,\n ap: _apSeq,\n of: of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Chain = {\n URI: URI,\n map: _map,\n ap: _apPar,\n chain: flatMap\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Monad = {\n URI: URI,\n map: _map,\n ap: _apPar,\n chain: flatMap,\n of: of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var MonadIO = {\n URI: URI,\n map: _map,\n ap: _apPar,\n chain: flatMap,\n of: of,\n fromIO: fromIO\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var MonadTask = {\n URI: URI,\n map: _map,\n ap: _apPar,\n chain: flatMap,\n of: of,\n fromIO: fromIO,\n fromTask: fromTask\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var MonadThrow = {\n URI: URI,\n map: _map,\n ap: _apPar,\n chain: flatMap,\n of: of,\n throwError: throwError\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var FromEither = {\n URI: URI,\n fromEither: fromEither\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var FromIO = {\n URI: URI,\n fromIO: fromIO\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var FromTask = {\n URI: URI,\n fromIO: fromIO,\n fromTask: fromTask\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @category combinators\n * @since 2.15.0\n */\nexport var tap = /*#__PURE__*/ dual(2, chainable.tap(Chain));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import * as E from 'fp-ts/Either'\n * import { pipe } from 'fp-ts/function'\n * import * as TE from 'fp-ts/TaskEither'\n *\n * const checkString = (value: string) => pipe(\n * TE.of(value),\n * TE.tapEither(() => value.length > 0 ? E.right('ok') : E.left('error'))\n * )\n *\n * async function test() {\n * assert.deepStrictEqual(await checkString('')(), E.left('error'))\n * assert.deepStrictEqual(await checkString('fp-ts')(), E.right('fp-ts'))\n * }\n *\n * test()\n *\n * @category combinators\n * @since 2.16.0\n */\nexport var tapEither = /*#__PURE__*/ dual(2, tapEither_(FromEither, Chain));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import * as TE from 'fp-ts/TaskEither'\n * import * as E from 'fp-ts/Either'\n * import * as Console from 'fp-ts/Console'\n *\n *\n * // Will produce `Hello, fp-ts` to the stdout\n * const effectA = TE.tapIO(\n * TE.of(1),\n * (value) => Console.log(`Hello, ${value}`)\n * )\n *\n * // No output to the stdout\n * const effectB = pipe(\n * TE.left('error'),\n * TE.tapIO((value) => Console.log(`Hello, ${value}`))\n * )\n *\n * async function test() {\n * assert.deepStrictEqual(await effectA(), E.of(1))\n * assert.deepStrictEqual(await effectB(), E.left('error'))\n * }\n *\n * test()\n *\n * @category combinators\n * @since 2.16.0\n */\nexport var tapIO = /*#__PURE__*/ dual(2, tapIO_(FromIO, Chain));\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import * as TE from 'fp-ts/TaskEither'\n * import * as T from 'fp-ts/Task'\n * import * as E from 'fp-ts/Either'\n *\n *\n * const effect = TE.tapIO(\n * TE.of(1),\n * (value) => T.of(value + 1)\n * )\n *\n * async function test() {\n * assert.deepStrictEqual(await effect(), E.of(1))\n * }\n *\n * test()\n *\n * @category combinators\n * @since 2.16.0\n */\nexport var tapTask = /*#__PURE__*/ dual(2, tapTask_(FromTask, Chain));\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Bifunctor = {\n URI: URI,\n bimap: mapBoth,\n mapLeft: mapError\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Alt = {\n URI: URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category conversions\n * @since 2.0.0\n */\nexport var fromOption = \n/*#__PURE__*/ fromOption_(FromEither);\n/**\n * Use `liftOption`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var fromOptionK = \n/*#__PURE__*/ fromOptionK_(FromEither);\n/**\n * Use `flatMapOption`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var chainOptionK = /*#__PURE__*/ chainOptionK_(FromEither, Chain);\n/**\n * Use `flatMapOption`.\n *\n * @category legacy\n * @since 2.13.2\n */\nexport var chainOptionKW = chainOptionK;\n/** @internal */\nvar _FromEither = {\n fromEither: FromEither.fromEither\n};\n/**\n * @category lifting\n * @since 2.15.0\n */\nexport var liftNullable = /*#__PURE__*/ _.liftNullable(_FromEither);\n/**\n * @category lifting\n * @since 2.15.0\n */\nexport var liftOption = /*#__PURE__*/ _.liftOption(_FromEither);\n/** @internal */\nvar _FlatMap = {\n flatMap: flatMap\n};\n/** @internal */\nvar _FromIO = {\n fromIO: FromIO.fromIO\n};\n/** @internal */\nvar _FromTask = {\n fromTask: fromTask\n};\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport var flatMapNullable = /*#__PURE__*/ _.flatMapNullable(_FromEither, _FlatMap);\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport var flatMapOption = /*#__PURE__*/ _.flatMapOption(_FromEither, _FlatMap);\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport var flatMapEither = /*#__PURE__*/ _.flatMapEither(_FromEither, _FlatMap);\n/**\n * @category sequencing\n * @since 2.15.0\n */\nexport var flatMapIO = /*#__PURE__*/ _.flatMapIO(_FromIO, _FlatMap);\n/**\n * @category sequencing\n * @since 2.16.0\n */\nexport var flatMapTask = /*#__PURE__*/ _.flatMapTask(_FromTask, _FlatMap);\n/**\n * @category sequencing\n * @since 2.16.0\n */\nexport var flatMapIOEither = /*#__PURE__*/ dual(2, function (self, f) {\n return flatMap(self, fromIOEitherK(f));\n});\n/**\n * @category sequencing\n * @since 2.16.0\n */\nexport var flatMapTaskOption = /*#__PURE__*/ dual(3, function (self, f, onNone) {\n return flatMap(self, function (a) { return fromTaskOption(function () { return onNone(a); })(f(a)); });\n});\n/**\n * Alias of `flatMapEither`.\n *\n * @category legacy\n * @since 2.4.0\n */\nexport var chainEitherK = flatMapEither;\n/**\n * Alias of `flatMapEither`.\n *\n * @category legacy\n * @since 2.6.1\n */\nexport var chainEitherKW = flatMapEither;\n/**\n * Alias of `tapEither`.\n *\n * @category legacy\n * @since 2.12.0\n */\nexport var chainFirstEitherK = tapEither;\n/**\n * Alias of `tapEither`.\n *\n * Less strict version of [`chainFirstEitherK`](#chainfirsteitherk).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category legacy\n * @since 2.12.0\n */\nexport var chainFirstEitherKW = tapEither;\n/**\n * @category lifting\n * @since 2.0.0\n */\nexport var fromPredicate = /*#__PURE__*/ fromPredicate_(FromEither);\n/**\n * @category filtering\n * @since 2.0.0\n */\nexport var filterOrElse = /*#__PURE__*/ filterOrElse_(FromEither, Chain);\n/**\n * Less strict version of [`filterOrElse`](#filterorelse).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category filtering\n * @since 2.9.0\n */\nexport var filterOrElseW = filterOrElse;\n/**\n * @category lifting\n * @since 2.4.0\n */\nexport var fromEitherK = /*#__PURE__*/ fromEitherK_(FromEither);\n/**\n * @category lifting\n * @since 2.10.0\n */\nexport var fromIOK = /*#__PURE__*/ fromIOK_(FromIO);\n/**\n * Alias of `flatMapIO`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var chainIOK = flatMapIO;\n/**\n * Alias of `tapIO`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var chainFirstIOK = tapIO;\n/**\n * @category lifting\n * @since 2.10.0\n */\nexport var fromTaskK = /*#__PURE__*/ fromTaskK_(FromTask);\n/**\n * Alias of `flatMapTask`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var chainTaskK = flatMapTask;\n/**\n * Alias of `tapTask`.\n *\n * @category legacy\n * @since 2.10.0\n */\nexport var chainFirstTaskK = tapTask;\n/**\n * Alias of `flatMapIOEither`.\n *\n * Less strict version of [`chainIOEitherK`](#chainioeitherk).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category legacy\n * @since 2.6.1\n */\nexport var chainIOEitherKW = flatMapIOEither;\n/**\n * Alias of `flatMapIOEither`.\n *\n * @category legacy\n * @since 2.4.0\n */\nexport var chainIOEitherK = flatMapIOEither;\nexport function taskify(f) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n return function () {\n return new Promise(function (resolve) {\n var cbResolver = function (e, r) { return (e != null ? resolve(_.left(e)) : resolve(_.right(r))); };\n f.apply(null, args.concat(cbResolver));\n });\n };\n };\n}\n/**\n * Make sure that a resource is cleaned up in the event of an exception (\\*). The release action is called regardless of\n * whether the body action throws (\\*) or returns.\n *\n * (\\*) i.e. returns a `Left`\n *\n * @since 2.0.0\n */\nexport var bracket = function (acquire, use, release) { return bracketW(acquire, use, release); };\n/**\n * Less strict version of [`bracket`](#bracket).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @since 2.12.0\n */\nexport var bracketW = function (acquire, use, release) {\n return flatMap(acquire, function (a) { return T.flatMap(use(a), function (e) { return flatMap(release(a, e), function () { return T.of(e); }); }); });\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport var Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bindTo = /*#__PURE__*/ bindTo_(Functor);\nvar let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var bind = /*#__PURE__*/ chainable.bind(Chain);\n/**\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category do notation\n * @since 2.8.0\n */\nexport var bindW = bind;\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport var apS = /*#__PURE__*/ apS_(ApplyPar);\n/**\n * Less strict version of [`apS`](#aps).\n *\n * The `W` suffix (short for **W**idening) means that the error types will be merged.\n *\n * @category do notation\n * @since 2.8.0\n */\nexport var apSW = apS;\n/**\n * @since 2.11.0\n */\nexport var ApT = /*#__PURE__*/ of(_.emptyReadonlyArray);\n// -------------------------------------------------------------------------------------\n// array utils\n// -------------------------------------------------------------------------------------\n/**\n * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativePar)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyNonEmptyArrayWithIndex = function (f) {\n return flow(T.traverseReadonlyNonEmptyArrayWithIndex(f), T.map(E.traverseReadonlyNonEmptyArrayWithIndex(SK)));\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativePar)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyArrayWithIndex = function (f) {\n var g = traverseReadonlyNonEmptyArrayWithIndex(f);\n return function (as) { return (_.isNonEmpty(as) ? g(as) : ApT); };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyNonEmptyArrayWithIndexSeq = function (f) {\n return function (as) {\n return function () {\n return _.tail(as).reduce(function (acc, a, i) {\n return acc.then(function (ebs) {\n return _.isLeft(ebs)\n ? acc\n : f(i + 1, a)().then(function (eb) {\n if (_.isLeft(eb)) {\n return eb;\n }\n ebs.right.push(eb.right);\n return ebs;\n });\n });\n }, f(0, _.head(as))().then(E.map(_.singleton)));\n };\n };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.11.0\n */\nexport var traverseReadonlyArrayWithIndexSeq = function (f) {\n var g = traverseReadonlyNonEmptyArrayWithIndexSeq(f);\n return function (as) { return (_.isNonEmpty(as) ? g(as) : ApT); };\n};\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArrayWithIndex = traverseReadonlyArrayWithIndex;\n/**\n * Equivalent to `ReadonlyArray#traverse(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseArray = function (f) { return traverseReadonlyArrayWithIndex(function (_, a) { return f(a); }); };\n/**\n * Equivalent to `ReadonlyArray#sequence(Applicative)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var sequenceArray = \n/*#__PURE__*/ traverseArray(identity);\n/**\n * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseSeqArrayWithIndex = traverseReadonlyArrayWithIndexSeq;\n/**\n * Equivalent to `ReadonlyArray#traverse(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var traverseSeqArray = function (f) { return traverseReadonlyArrayWithIndexSeq(function (_, a) { return f(a); }); };\n/**\n * Equivalent to `ReadonlyArray#sequence(ApplicativeSeq)`.\n *\n * @category traversing\n * @since 2.9.0\n */\nexport var sequenceSeqArray = \n/*#__PURE__*/ traverseSeqArray(identity);\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chain = flatMap;\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.6.0\n */\nexport var chainW = flatMap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.0.0\n */\nexport var chainFirst = tap;\n/**\n * Alias of `tap`.\n *\n * @category legacy\n * @since 2.8.0\n */\nexport var chainFirstW = tap;\n/**\n * Alias of `tapError`.\n *\n * @category legacy\n * @since 2.11.0\n */\nexport var orElseFirst = tapError;\n/**\n * Alias of `tapError`.\n *\n * @category legacy\n * @since 2.11.0\n */\nexport var orElseFirstW = tapError;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `TE.Functor` instead of `TE.taskEither`\n * (where `TE` is from `import TE from 'fp-ts/TaskEither'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var taskEither = {\n URI: URI,\n bimap: mapBoth,\n mapLeft: mapError,\n map: _map,\n of: of,\n ap: _apPar,\n chain: flatMap,\n alt: _alt,\n fromIO: fromIO,\n fromTask: fromTask,\n throwError: throwError\n};\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `TE.Functor` instead of `TE.taskEitherSeq`\n * (where `TE` is from `import TE from 'fp-ts/TaskEither'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var taskEitherSeq = {\n URI: URI,\n bimap: mapBoth,\n mapLeft: mapError,\n map: _map,\n of: of,\n ap: _apSeq,\n chain: flatMap,\n alt: _alt,\n fromIO: fromIO,\n fromTask: fromTask,\n throwError: throwError\n};\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getApplySemigroup = \n/*#__PURE__*/ getApplySemigroup_(ApplySeq);\n/**\n * Use [`getApplicativeMonoid`](./Applicative.ts.html#getapplicativemonoid) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getApplyMonoid = \n/*#__PURE__*/ getApplicativeMonoid(ApplicativeSeq);\n/**\n * Use [`getApplySemigroup`](./Apply.ts.html#getapplysemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport var getSemigroup = function (S) {\n return getApplySemigroup_(T.ApplySeq)(E.getSemigroup(S));\n};\n/**\n * Use [`getApplicativeTaskValidation`](#getapplicativetaskvalidation) and [`getAltTaskValidation`](#getalttaskvalidation) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function getTaskValidation(SE) {\n var applicativeTaskValidation = getApplicativeTaskValidation(T.ApplicativePar, SE);\n var altTaskValidation = getAltTaskValidation(SE);\n return {\n URI: URI,\n _E: undefined,\n map: _map,\n ap: applicativeTaskValidation.ap,\n of: of,\n chain: flatMap,\n bimap: mapBoth,\n mapLeft: mapError,\n alt: altTaskValidation.alt,\n fromIO: fromIO,\n fromTask: fromTask,\n throwError: throwError\n };\n}\n","import { BetterPromise as d } from \"better-promises\";\nimport { function as f, taskEither as i, either as u } from \"fp-ts\";\nfunction L(t) {\n return t.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`);\n}\nfunction $(t) {\n return t.replace(/[A-Z]/g, (e) => `_${e.toLowerCase()}`);\n}\nfunction x(t) {\n return Object.entries(t).reduce((e, [o, r]) => (e[$(o)] = r, e), {});\n}\nfunction k(t) {\n return t.replace(/_[a-z]/g, (e) => e[1].toUpperCase());\n}\nfunction S(t) {\n return Object.entries(t).reduce((e, [o, r]) => (e[k(o)] = r, e), {});\n}\nfunction m(t) {\n const e = S(t);\n for (const o in e) {\n const r = e[o];\n r && typeof r == \"object\" && !(r instanceof Date) && (e[o] = Array.isArray(r) ? r.map(m) : m(r));\n }\n return e;\n}\nfunction A(t) {\n return t.replace(/_([a-z])/g, (e, o) => `-${o.toLowerCase()}`);\n}\nfunction h(t) {\n return `tapps/${t}`;\n}\nfunction K(t, e) {\n sessionStorage.setItem(h(t), JSON.stringify(e));\n}\nfunction _(t) {\n const e = sessionStorage.getItem(h(t));\n try {\n return e ? JSON.parse(e) : void 0;\n } catch {\n }\n}\nfunction v(...t) {\n const e = t.flat(1);\n return [\n e.push.bind(e),\n () => {\n e.forEach((o) => {\n o();\n });\n }\n ];\n}\n// @__NO_SIDE_EFFECTS__\nfunction D(t, e) {\n e || (e = {});\n const {\n textColor: o,\n bgColor: r,\n shouldLog: c\n } = e, n = c === void 0 ? !0 : c, b = typeof n == \"boolean\" ? () => n : n, g = (a, s, ...l) => {\n if (s || b()) {\n const p = \"font-weight:bold;padding:0 5px;border-radius:100px\", [y, C, w] = {\n log: [\"#0089c3\", \"white\", \"INFO\"],\n error: [\"#ff0000F0\", \"white\", \"ERR\"],\n warn: [\"#D38E15\", \"white\", \"WARN\"]\n }[a];\n console[a](\n `%c${w} ${Intl.DateTimeFormat(\"en-GB\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n fractionalSecondDigits: 3,\n timeZone: \"UTC\"\n }).format(/* @__PURE__ */ new Date())}%c %c${t}`,\n `${p};background-color:${y};color:${C}`,\n \"\",\n `${p};${o ? `color:${o};` : \"\"}${r ? `background-color:${r}` : \"\"}`,\n ...l\n );\n }\n };\n return [\n [\"log\", \"forceLog\"],\n [\"warn\", \"forceWarn\"],\n [\"error\", \"forceError\"]\n ].reduce((a, [s, l]) => (a[s] = g.bind(void 0, s, !1), a[l] = g.bind(void 0, s, !0), a), {});\n}\nfunction T(t) {\n const e = (o) => {\n throw o;\n };\n return typeof t == \"function\" ? d.resolve(f.pipe(t, i.match(e, (o) => o))()) : f.pipe(t, u.match(e, (o) => o));\n}\n// @__NO_SIDE_EFFECTS__\nfunction F(t) {\n return Object.assign(\n (...e) => T(t(...e)),\n t\n );\n}\nconst O = /* @__PURE__ */ Object.assign(\n (t, e) => f.pipe(\n i.tryCatch(\n () => new d((o, r, c) => t(\n (n) => o(u.right(n)),\n (n) => o(u.left(n)),\n c\n ), e),\n (o) => o\n ),\n i.chainW(u.match(i.left, i.right))\n ),\n {\n fn: (t, e) => O((o, r, c) => {\n const n = t(c);\n f.pipe(\n typeof n == \"function\" ? n : i.fromEither(n),\n i.matchW(r, o)\n )();\n }, e)\n }\n);\nexport {\n O as BetterTaskEither,\n L as camelToKebab,\n $ as camelToSnake,\n x as camelToSnakeObjKeys,\n v as createCbCollector,\n D as createLogger,\n m as deepSnakeToCamelObjKeys,\n _ as getStorageValue,\n K as setStorageValue,\n k as snakeToCamel,\n S as snakeToCamelObjKeys,\n A as snakeToKebab,\n T as throwifyAnyEither,\n F as throwifyFpFn\n};\n//# sourceMappingURL=index.js.map\n","var u = Object.defineProperty;\nvar f = (e, t, r) => t in e ? u(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;\nvar a = (e, t, r) => f(e, typeof t != \"symbol\" ? t + \"\" : t, r);\nfunction s(e) {\n return (t) => t instanceof e;\n}\nfunction i(e) {\n const r = class r extends Error {\n constructor(...c) {\n super(...typeof e.super == \"function\" ? e.super(...c) : typeof e.super == \"string\" ? [e.super] : e.super || []), this.name = e.name, Object.setPrototypeOf(this, r.prototype);\n }\n };\n a(r, \"is\", s(r));\n let t = r;\n return Object.defineProperty(t, \"name\", { value: e.name }), t;\n}\nfunction d(e) {\n const r = class r extends i(e) {\n constructor(...n) {\n super(...n);\n a(this, \"data\");\n this.data = e.data(...n), Object.setPrototypeOf(this, r.prototype);\n }\n };\n a(r, \"is\", s(r));\n let t = r;\n return Object.defineProperty(t, \"name\", { value: e.name }), t;\n}\nexport {\n i as errorClass,\n d as errorClassWithData\n};\n//# sourceMappingURL=index.js.map\n","import type { Version } from '@tma.js/types';\nimport { errorClass, errorClassWithData } from 'error-kid';\n\nexport class MethodUnsupportedError extends /* @__PURE__ */ errorClass<\n [method: string, version: Version]\n>({\n name: 'MethodUnsupportedError',\n super: (method, version) => [\n `Method \"${method}\" is unsupported in Mini Apps version ${version}`,\n ],\n}) {\n}\n\nexport class MethodParameterUnsupportedError extends /* @__PURE__ */ errorClass<\n [method: string, param: string, version: Version]\n>({\n name: 'MethodParameterUnsupportedError',\n super: (method, param, version) => [\n `Parameter \"${param}\" of \"${method}\" method is unsupported in Mini Apps version ${version}`,\n ],\n}) {\n}\n\nexport class LaunchParamsRetrieveError extends /* @__PURE__ */ errorClassWithData<\n { errors: { source: string; error: unknown }[] },\n [{ source: string; error: unknown }[]]\n>({\n name: 'LaunchParamsRetrieveError',\n data: errors => ({ errors }),\n super: errors => [\n [\n 'Unable to retrieve launch parameters from any known source. Perhaps, you have opened your app outside Telegram?',\n '📖 Refer to docs for more information:',\n 'https://docs.telegram-mini-apps.com/packages/tma-js-bridge/environment',\n '',\n 'Collected errors:',\n ...errors.map(({ source, error }) => {\n return `Source: ${source} / ${error instanceof Error ? error.message : String(error)}`;\n }),\n ].join('\\n'),\n ],\n}) {\n}\n\nexport class InvalidLaunchParamsError extends /* @__PURE__ */ errorClass<\n [launchParams: string, cause: unknown]\n>({\n name: 'InvalidLaunchParamsError',\n super: (launchParams, cause) => [\n `Invalid value for launch params: ${launchParams}`,\n { cause },\n ],\n}) {\n}\n\nexport class UnknownEnvError extends /* @__PURE__ */ errorClass({ name: 'UnknownEnvError' }) {\n}\n\nexport class InvokeCustomMethodFailedError extends /* @__PURE__ */ errorClass<[error: string]>({\n name: 'InvokeCustomMethodError',\n super: error => [`Server returned error: ${error}`],\n}) {\n}\n","import { throwifyFpFn as g } from \"@tma.js/toolkit\";\nimport { either as s, function as G } from \"fp-ts\";\nimport { pipe as u, string as e, check as y, transform as c, union as S, instance as P, parse as b, looseObject as m, optional as n, number as _, boolean as d, integer as W, date as C, record as F, is as T, unknown as J } from \"valibot\";\nfunction N(t) {\n const r = (a) => {\n const o = {};\n return new URLSearchParams(a).forEach((i, f) => {\n const h = o[f];\n Array.isArray(h) ? h.push(i) : h === void 0 ? o[f] = i : o[f] = [h, i];\n }), b(t, o);\n };\n return u(\n S([e(), P(URLSearchParams)]),\n y((a) => {\n try {\n return r(a), !0;\n } catch {\n return !1;\n }\n }, \"The value doesn't match required schema\"),\n c(r)\n );\n}\nfunction O(t) {\n return u(\n e(),\n y((r) => {\n try {\n return JSON.parse(r), !0;\n } catch {\n return !1;\n }\n }, \"Input is not a valid JSON value\"),\n c(JSON.parse),\n t\n );\n}\nfunction p(t) {\n return u(e(), O(t));\n}\nfunction B(t) {\n return u(\n S([e(), P(URLSearchParams)]),\n N(t)\n );\n}\nfunction l(t) {\n return (r) => t.test(r);\n}\nconst I = l(/^#[\\da-f]{3}$/i), U = l(/^#[\\da-f]{4}$/i), z = l(/^#[\\da-f]{6}$/i), E = l(/^#[\\da-f]{8}$/i);\nfunction V(t) {\n return [z, E, I, U].some((r) => r(t));\n}\nfunction A(t) {\n let r = \"#\";\n for (let a = 0; a < t.length - 1; a += 1)\n r += t[1 + a].repeat(2);\n return r;\n}\nfunction D(t) {\n const r = t.replace(/\\s/g, \"\").toLowerCase();\n if (/^#[\\da-f]{3}$/i.test(r))\n return s.right(A(r.toLowerCase() + \"f\"));\n if (/^#[\\da-f]{4}$/i.test(r))\n return s.right(A(r.toLowerCase()));\n if (/^#[\\da-f]{6}$/i.test(r))\n return s.right(r.toLowerCase() + \"ff\");\n if (/^#[\\da-f]{8}$/i.test(r))\n return s.right(r.toLowerCase());\n const a = r.match(/^rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/) || r.match(/^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$/);\n return a ? s.right(\n a.slice(1).reduce(\n (o, i) => o + parseInt(i, 10).toString(16).padStart(2, \"0\"),\n \"#\"\n ).padEnd(9, \"f\")\n ) : s.left(new Error(`Value \"${t}\" does not satisfy any of known RGB formats.`));\n}\nfunction q(t) {\n return G.pipe(\n D(t),\n s.map((r) => r.slice(0, 7))\n );\n}\nconst v = g(q), tt = g(D);\nfunction x() {\n return m({\n id: _(),\n photo_url: n(e()),\n type: e(),\n title: e(),\n username: n(e())\n });\n}\nfunction w() {\n return m({\n added_to_attachment_menu: n(d()),\n allows_write_to_pm: n(d()),\n first_name: e(),\n id: _(),\n is_bot: n(d()),\n is_premium: n(d()),\n last_name: n(e()),\n language_code: n(e()),\n photo_url: n(e()),\n username: n(e())\n });\n}\nfunction j() {\n return m({\n auth_date: u(\n e(),\n c((t) => new Date(Number(t) * 1e3)),\n C()\n ),\n can_send_after: n(u(e(), c(Number), W())),\n chat: n(p(x())),\n chat_type: n(e()),\n chat_instance: n(e()),\n hash: e(),\n query_id: n(e()),\n receiver: n(p(w())),\n start_param: n(e()),\n signature: e(),\n user: n(p(w()))\n });\n}\nfunction L() {\n return B(j());\n}\nfunction R() {\n return F(\n e(),\n u(\n S([e(), _()]),\n c((t) => typeof t == \"number\" ? `#${(t & 16777215).toString(16).padStart(6, \"0\")}` : t),\n y(V)\n )\n );\n}\nfunction M() {\n const t = n(u(e(), c((r) => r === \"1\")));\n return m({\n tgWebAppBotInline: t,\n tgWebAppData: n(L()),\n tgWebAppDefaultColors: n(p(R())),\n tgWebAppFullscreen: t,\n tgWebAppPlatform: e(),\n tgWebAppShowSettings: t,\n tgWebAppStartParam: n(e()),\n tgWebAppThemeParams: p(R()),\n tgWebAppVersion: e()\n });\n}\nfunction Q() {\n return B(M());\n}\nfunction rt(t) {\n try {\n return T(Q(), t);\n } catch {\n return !1;\n }\n}\nfunction et() {\n return m({\n eventType: e(),\n eventData: n(J())\n });\n}\nfunction H(t) {\n return s.tryCatch(\n () => b(L(), t),\n (r) => r\n );\n}\nfunction K(t) {\n return s.tryCatch(\n () => b(Q(), t),\n (r) => r\n );\n}\nconst nt = g(H), at = g(K);\nfunction $(t, r) {\n return r || (r = (a, o) => JSON.stringify(o)), new URLSearchParams(\n Object.entries(t).reduce((a, [o, i]) => (Array.isArray(i) ? a.push(...i.map((f) => [o, String(f)])) : i != null && a.push([\n o,\n i instanceof Date ? (i.getTime() / 1e3 | 0).toString() : typeof i == \"string\" || typeof i == \"number\" ? String(i) : typeof i == \"boolean\" ? i ? \"1\" : \"0\" : r(o, i)\n ]), a), [])\n ).toString();\n}\nfunction X(t) {\n return $(t);\n}\nfunction it(t) {\n return $(t, (r, a) => r === \"tgWebAppData\" ? X(a) : JSON.stringify(a));\n}\nexport {\n j as initData,\n x as initDataChat,\n L as initDataQuery,\n w as initDataUser,\n V as isAnyRGB,\n rt as isLaunchParamsQuery,\n z as isRGB,\n E as isRGBA,\n U as isRGBAShort,\n I as isRGBShort,\n M as launchParams,\n Q as launchParamsQuery,\n et as miniAppsMessage,\n nt as parseInitDataQuery,\n H as parseInitDataQueryFp,\n at as parseLaunchParamsQuery,\n K as parseLaunchParamsQueryFp,\n p as pipeJsonToSchema,\n B as pipeQueryToSchema,\n X as serializeInitDataQuery,\n it as serializeLaunchParamsQuery,\n R as themeParams,\n v as toRGB,\n q as toRGBFp,\n tt as toRGBFull,\n D as toRGBFullFp\n};\n//# sourceMappingURL=index.js.map\n","import { throwifyFpFn, getStorageValue, setStorageValue } from '@tma.js/toolkit';\nimport {\n parseLaunchParamsQueryFp,\n type LaunchParamsGenType,\n type ParseLaunchParamsQueryError,\n} from '@tma.js/transformers';\nimport { either as E, function as fn, option as O } from 'fp-ts';\n\nimport { LaunchParamsRetrieveError } from '@/errors.js';\n\nconst SESSION_STORAGE_KEY = 'launchParams';\n\nexport type RetrieveRawInitDataError = RetrieveRawLaunchParamsError;\nexport type RetrieveRawLaunchParamsError = LaunchParamsRetrieveError;\nexport type RetrieveLaunchParamsError = RetrieveRawLaunchParamsError | ParseLaunchParamsQueryError;\nexport type RetrieveLaunchParamsResult = LaunchParamsGenType;\n\n/**\n * @param urlString - URL to extract launch parameters from.\n * @returns Launch parameters from the specified URL.\n * @throws Error if function was unable to extract launch parameters from the\n * passed URL.\n */\nfunction retrieveLpFromUrl(urlString: string): string {\n return urlString\n // Replace everything before this first hashtag or question sign.\n .replace(/^[^?#]*[?#]/, '')\n // Replace all hashtags and question signs to make it look like some search\n // params.\n .replace(/[?#]/g, '&');\n}\n\n/**\n * @returns Launch parameters from any known source.\n */\nexport function retrieveLaunchParamsFp(): E.Either<\n RetrieveLaunchParamsError,\n RetrieveLaunchParamsResult\n> {\n return fn.pipe(\n retrieveRawLaunchParamsFp(),\n E.chainW(parseLaunchParamsQueryFp),\n );\n}\n\n/**\n * @see retrieveLaunchParamsFp\n */\nexport const retrieveLaunchParams: () => RetrieveLaunchParamsResult =\n throwifyFpFn(retrieveLaunchParamsFp);\n\n/**\n * @returns Raw init data from any known source.\n */\nexport function retrieveRawInitDataFp(): E.Either<RetrieveRawInitDataError, O.Option<string>> {\n return fn.pipe(\n retrieveRawLaunchParamsFp(),\n E.map(raw => {\n const v = new URLSearchParams(raw).get('tgWebAppData');\n return v ? O.some(v) : O.none;\n }),\n );\n}\n\n/**\n * @see retrieveRawInitDataFp\n */\nexport function retrieveRawInitData(): string | undefined {\n return fn.pipe(\n retrieveRawInitDataFp(),\n E.fold(err => {\n throw err;\n }, v => v),\n O.match(() => undefined, v => v),\n );\n}\n\n/**\n * @returns Launch parameters in a raw format from any known source.\n */\nexport function retrieveRawLaunchParamsFp(): E.Either<RetrieveRawLaunchParamsError, string> {\n const errors: { source: string; error: unknown }[] = [];\n\n for (const [retrieve, source] of [\n // Try to retrieve launch parameters from the current location. This method\n // can return nothing in case, location was changed, and then the page was\n // reloaded.\n [() => retrieveLpFromUrl(window.location.href), 'window.location.href'],\n // Then, try using the lower level API - window.performance.\n [() => {\n const navigationEntry = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming | undefined;\n return navigationEntry && retrieveLpFromUrl(navigationEntry.name);\n }, 'performance navigation entries'],\n // Finally, try using the session storage.\n [() => getStorageValue<string>(SESSION_STORAGE_KEY), 'local storage'],\n ] as const) {\n const v = retrieve();\n if (!v) {\n errors.push({ source, error: new Error('Source is empty') });\n continue;\n }\n const maybeError = fn.pipe(\n parseLaunchParamsQueryFp(v),\n E.foldW(err => err, () => true as const),\n );\n if (typeof maybeError !== 'boolean') {\n errors.push({ source, error: maybeError });\n continue;\n }\n setStorageValue(SESSION_STORAGE_KEY, v);\n return E.right(v);\n }\n return E.left(new LaunchParamsRetrieveError(errors));\n}\n\n/**\n * @see retrieveRawLaunchParamsFp\n */\nexport const retrieveRawLaunchParams = throwifyFpFn(retrieveRawLaunchParamsFp);\n","let r;\nfunction y(e, c) {\n r ? r.set(e, c) : c();\n}\nfunction m(e) {\n if (r)\n return e();\n r = /* @__PURE__ */ new Map();\n try {\n e();\n } finally {\n r.forEach((c) => c()), r = void 0;\n }\n}\n// @__NO_SIDE_EFFECTS__\nfunction S(e, c) {\n c || (c = {});\n const g = c.equals || Object.is;\n let u = [], s = e;\n const i = (t) => {\n if (!g(s, t)) {\n const l = s;\n s = t, y(o, () => {\n [...u].forEach(([f, d]) => {\n f(t, l), d && n(f, !0);\n });\n });\n }\n };\n function a(t) {\n const l = typeof t != \"object\" ? { once: t } : t;\n return {\n once: l.once || !1,\n signal: l.signal || !1\n };\n }\n const n = (t, l) => {\n const f = a(l), d = u.findIndex(([h, p]) => h === t && p.once === f.once && p.signal === f.signal);\n d >= 0 && u.splice(d, 1);\n }, o = Object.assign(\n function() {\n return j(o), s;\n },\n {\n destroy() {\n u = [];\n },\n set: i,\n reset() {\n i(e);\n },\n sub(t, l) {\n return u.push([t, a(l)]), () => n(t, l);\n },\n unsub: n,\n unsubAll() {\n u = u.filter((t) => t[1].signal);\n }\n }\n );\n return o;\n}\nconst b = [];\nfunction j(e) {\n b.length && b[b.length - 1].add(e);\n}\n// @__NO_SIDE_EFFECTS__\nfunction x(e, c) {\n let g = /* @__PURE__ */ new Set(), u;\n function s() {\n return u || (u = /* @__PURE__ */ S(a(), c));\n }\n function i() {\n s().set(a());\n }\n function a() {\n g.forEach((t) => {\n t.unsub(i, { signal: !0 });\n });\n const n = /* @__PURE__ */ new Set();\n let o;\n b.push(n);\n try {\n o = e();\n } finally {\n b.pop();\n }\n return n.forEach((t) => {\n t.sub(i, { signal: !0 });\n }), g = n, o;\n }\n return Object.assign(function() {\n return s()();\n }, {\n destroy() {\n s().destroy();\n },\n sub(...n) {\n return s().sub(...n);\n },\n unsub(...n) {\n s().unsub(...n);\n },\n unsubAll(...n) {\n s().unsubAll(...n);\n }\n });\n}\nexport {\n m as batch,\n x as computed,\n S as signal\n};\n//# sourceMappingURL=index.js.map\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","import type { If, IsNever, IsUndefined, Or } from '@tma.js/toolkit';\nimport mitt, {\n type Emitter,\n type EventHandlerMap,\n type EventType,\n type Handler,\n} from 'mitt';\n\nexport type WildcardHandler<E> = Handler<{\n [K in keyof E]: {\n name: K;\n payload: If<Or<IsNever<E[K]>, IsUndefined<E[K]>>, never, E[K]>;\n };\n}[keyof E]>;\n\nexport interface OnFn<E> {\n /**\n * Adds a new listener for the specified event.\n * @param type - event name.\n * @param handler - event listener.\n * @param once - should this listener be called only once.\n * @returns Function to remove bound event listener.\n */\n <K extends keyof E>(type: K, handler: Handler<E[K]>, once?: boolean): VoidFunction;\n /**\n * Adds a listener to the wildcard event.\n * @param type - event name.\n * @param handler - event listener.\n * @param once - should this listener be called only once.\n * @returns Function to remove bound event listener.\n */\n (type: '*', handler: WildcardHandler<E>, once?: boolean): VoidFunction;\n}\n\nexport interface OffFn<E> {\n /**\n * Removes a listener from the specified event.\n * @param type - event to listen.\n * @param handler - event listener to remove.\n * @param once - had this listener to be called only once.\n */\n <K extends keyof E>(type: K, handler: Handler<E[K]>, once?: boolean): void;\n /**\n * Removes a listener from the wildcard event.\n * @param type - event to stop listening.\n * @param handler - event listener to remove.\n * @param once - should this listener be called only once.\n */\n (type: '*', handler: WildcardHandler<E>, once?: boolean): void;\n}\n\nexport interface EmitFn<E> {\n <K extends keyof E>(type: K, event: E[K]): void;\n <K extends keyof E>(type: undefined extends E[K] ? K : never): void;\n}\n\n/**\n * Creates a new enhanced event emitter.\n * @param onFirst - a function to call every time when the events map appeared to be empty during\n * the event listener creation.\n * @param onEmpty - a function to call every tume when the events map became empty.\n */\nexport function createEmitter<E extends object>(\n onFirst: VoidFunction,\n onEmpty: VoidFunction,\n): {\n on: OnFn<E>;\n off: OffFn<E>;\n emit: EmitFn<E>;\n clear: VoidFunction;\n} {\n // To understand the event handlers concept here, let's tell the underlying idea.\n //\n // We use a Map, where key is an event name, and the value is a Map we call HandlersMap.\n //\n // The HandlersMap is a Map, where the key is an event handler, added by the developer.\n // The corresponding value is a list of tuples, with an internally generated function and a\n // boolean value responsible for determining if the handler must be called only once. So, you\n // can imagine the following map as:\n //\n // HandlersMap {\n // { developer_handler }: Array<[ internally_created_handler, once ]>;\n // }\n //\n // The value for the key represents an array of tuples, as long as a single handler may be added\n // many times, and for each addition we add a new tuple entry.\n //\n // The handler may also be added to be called only once. Trying to remove such kind of handler\n // using a different value of the \"once\" argument will lead to nothing. The developer must\n // specify the same argument value to avoid confusions.\n //\n // Here is the final EventToHandlersMap definition:\n //\n // EventToHandlersMap {\n // { event_name }: HandlersMap {\n // { developer_handler }: Array<[ internally_created_handler, once ]>;\n // }\n // }\n type HandlersMap = Map<\n (...args: any) => void,\n [handler: (...args: any) => void, once: boolean][]\n >;\n\n const eventToHandlersMap = new Map<keyof E | '*', HandlersMap>();\n\n const emitter = (mitt as any as {\n <E extends Record<EventType, unknown>>(all?: EventHandlerMap<E>): Emitter<E>;\n })<E & Record<string | symbol, unknown>>();\n\n const off: OffFn<E> = (\n event: keyof E | '*',\n handler: (...args: any) => void,\n once = false,\n ) => {\n const handlersMap: HandlersMap = eventToHandlersMap.get(event) || new Map();\n eventToHandlersMap.set(event, handlersMap);\n\n const handlers = handlersMap.get(handler) || [];\n handlersMap.set(handler, handlers);\n\n const index = handlers.findIndex(item => item[1] === once);\n if (index >= 0) {\n // Remove the related handler.\n emitter.off(event, handlers[index][0]);\n\n // Remove the handler from the cache array.\n handlers.splice(index, 1);\n\n // If after removal, there are no handlers left, we should remove the entry from the cache.\n if (!handlers.length) {\n handlersMap.delete(handler);\n if (!handlersMap.size) {\n const prevSize = eventToHandlersMap.size;\n eventToHandlersMap.delete(event);\n prevSize && !eventToHandlersMap.size && onEmpty();\n }\n }\n }\n };\n\n return {\n on(event: keyof E | '*', handler: (...args: any[]) => any, once?: boolean) {\n // The events' map became non-empty. Call the onFirst callback.\n !eventToHandlersMap.size && onFirst();\n\n const cleanup = () => {\n off(event as any, handler, once);\n };\n\n const internalHandler = (...args: any[]) => {\n once && cleanup();\n if (event === '*') {\n handler({ name: args[0], payload: args[1] });\n } else {\n handler(...args);\n }\n };\n\n emitter.on(event, internalHandler);\n\n // Add this handler to the cache, so we could remove it using the passed listener.\n const handlersMap: HandlersMap = eventToHandlersMap.get(event) || new Map();\n eventToHandlersMap.set(event, handlersMap);\n\n const handlers = handlersMap.get(handler) || [];\n handlersMap.set(handler, handlers);\n handlers.push([internalHandler, once || false]);\n\n return cleanup;\n },\n off,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n emit: emitter.emit,\n clear() {\n const prevSize = eventToHandlersMap.size;\n emitter.all.clear();\n eventToHandlersMap.clear();\n prevSize && onEmpty();\n },\n };\n}\n","import type { EventPayload, EventWithoutPayload, EventWithPayload } from '@/events/types/index.js';\n\n/**\n * Emits an event without payload sent from the Telegram native application like it was sent in\n * a default web environment between two iframes.\n *\n * It dispatches a new MessageEvent and expects it to be handled via\n * the `window.addEventListener('message', ...)` call, as a developer would do it to handle\n * messages sent from the parent iframe.\n * @param eventType - event name.\n */\nexport function emitEvent<E extends EventWithoutPayload>(eventType: E): void;\n\n/**\n * Emits an event with payload sent from the Telegram native application like it was sent in\n * a default web environment between two iframes.\n *\n * It dispatches a new MessageEvent and expects it to be handled via\n * the `window.addEventListener('message', ...)` call, as a developer would do it to handle\n * messages sent from the parent iframe.\n * @param eventType - event name.\n * @param eventData - event payload.\n */\nexport function emitEvent<E extends EventWithPayload>(\n eventType: E,\n eventData: EventPayload<E>,\n): void;\n\n/**\n * Emits an unknown event sent from the Telegram native application like it was sent in a default\n * web environment between two iframes.\n *\n * It dispatches a new MessageEvent and expects it to be handled via\n * the `window.addEventListener('message', ...)` call, as a developer would do it to handle\n * messages sent from the parent iframe.\n * @param eventType - event name.\n * @param eventData - event payload.\n */\nexport function emitEvent<E extends string>(\n eventType: E,\n eventData: E extends EventWithoutPayload\n ? never\n : E extends EventWithPayload\n ? EventPayload<E>\n : unknown,\n): void;\n\n/**\n * Emits an event sent from the Telegram native application like it was sent in a default web\n * environment between two iframes.\n *\n * It dispatches a new MessageEvent and expects it to be handled via\n * the `window.addEventListener('message', ...)` call, as a developer would do it to handle\n * messages sent from the parent iframe.\n * @param eventType - event name.\n * @param eventData - event payload.\n */\nexport function emitEvent(eventType: string, eventData?: unknown): void {\n window.dispatchEvent(new MessageEvent('message', {\n data: JSON.stringify({ eventType, eventData }),\n // We specify this kind of source here in order to allow the package's \"on\" function to\n // capture it. The reason is this function always checks the event source and relies on\n // it to be the parent window.\n source: window.parent,\n }));\n}\n","import { signal, computed } from '@tma.js/signals';\nimport { createLogger, type Logger } from '@tma.js/toolkit';\n\nimport { off, offAll, on } from '@/events/emitter.js';\nimport type { SubscribeListener } from '@/events/types/index.js';\nimport type { PostMessage } from '@/methods/postMessage.js';\n\n/**\n * @internal\n */\nconst _debug = signal(false);\n/**\n * @internal\n */\nconst _targetOrigin = signal('https://web.telegram.org');\n\nconst onEventReceived: SubscribeListener = event => {\n logger().log('Event received:', event);\n};\n\n/**\n * The current debug mode state.\n *\n * To update the value, use the `setDebug` function.\n * @see setDebug\n */\nexport const debug = computed(_debug);\n\n/**\n * Sets the package debug mode.\n *\n * Enabling debug mode leads to printing additional messages in the console related to the\n * processes inside the package.\n * @param value - enable debug mode.\n */\nexport function setDebug(value: boolean): void {\n if (value !== _debug()) {\n _debug.set(value);\n (value ? on : off)('*', onEventReceived);\n }\n}\n\n/**\n * The current target origin used by the `postEvent` method.\n *\n * You don't need to override this value until you know what you are doing.\n * To update the value, use the `setTargetOrigin` function.\n * @default 'https://web.telegram.org'\n * @see setTargetOrigin\n */\nexport const targetOrigin = computed(_targetOrigin);\n\n/**\n * Sets a new target origin that is being used when calling the `postEvent` function in Telegram\n * web versions.\n *\n * You don't need to override this value until you know what you are doing.\n * @param origin - allowed target origin value.\n * @see _targetOrigin\n */\nexport function setTargetOrigin(origin: string) {\n _targetOrigin.set(origin);\n logger().log('New target origin set', origin);\n}\n\n/**\n * Signal containing a custom implementation of the method to post a message to the parent\n * window. We usually use it to send a message in web versions of Telegram.\n *\n * @default A function behaving like the `window.parent.postMessage` method.\n */\nexport const postMessageImpl = signal<PostMessage>((...args) => {\n window.parent.postMessage(...args as unknown as Parameters<PostMessage>);\n});\n\n/**\n * The package logger. You can override this value in order to use your own implementation.\n */\nexport const logger = signal<Logger>(createLogger('Bridge', {\n bgColor: '#9147ff',\n textColor: 'white',\n shouldLog: debug,\n}));\n\n/**\n * Resets the package global values. Normally, you don't use this function in your application.\n * We are using it only for test purposes.\n */\nexport function resetGlobals() {\n offAll();\n [postMessageImpl, _targetOrigin, targetOrigin, _debug, debug, logger].forEach(s => {\n s.unsubAll();\n 'reset' in s && s.reset();\n });\n}\n","/**\n * Defines a property, that is a functions compose. Trying to set a value in this property\n * will lead to adding it to a function's pool. The property value will always be equal to a\n * function, calling all collected functions in the pool.\n *\n * Returned function performs a cleanup. It does one of the following:\n * 1. Removes the property if no functions were to the pool added other than the initial one.\n * 2. Sets the value equal to the first added function to the pool after the initial one if\n * the only one additional function was added at all. In other words, if the pool length is equal\n * to 2, the second item will be selected as the property value.\n * 3. Leaves the value equal to a function calling all pool functions, but removes the initially\n * added one.\n * @param obj - object.\n * @param propertyName - object property.\n * @param initialFn - an initial function to set.\n */\nexport function defineFnComposer(\n obj: any,\n propertyName: string,\n initialFn: (...args: any) => any,\n): void {\n const assignedFunctions: any[] = [initialFn];\n\n const property = obj[propertyName];\n if (typeof property === 'function') {\n assignedFunctions.push(property);\n }\n\n const callAssignedFunctions = (...args: any) => {\n assignedFunctions.forEach(fn => fn(...args));\n };\n\n // Wrap the callPool function and add \"unwrap\" method to it.\n const unwrappableCallAssignedFunctions = Object.assign((...args: any) => {\n callAssignedFunctions(...args);\n }, {\n // Unwraps the composer.\n unwrap() {\n const { length: poolSize } = assignedFunctions;\n if (poolSize === 1) {\n // Only the initial handler is in the pool. In this case we just remove the property.\n delete obj[propertyName];\n return;\n }\n if (poolSize === 2) {\n // Only one additional handler was added. We set it as a value for the property.\n defineStaticProperty(obj, propertyName, assignedFunctions[1]);\n return;\n }\n // Many additional handlers were added. In this case we remove the initially added function\n // from the pool and leave the property value almost as is - only \"unwrap\" method will be\n // removed.\n assignedFunctions.unshift(1);\n defineStaticProperty(obj, propertyName, callAssignedFunctions);\n },\n });\n\n // This property should now always return our special function. Trying to set it to another\n // function should lead to just adding it to the pool of called functions.\n defineProxiedProperty(\n obj,\n propertyName,\n () => unwrappableCallAssignedFunctions,\n value => assignedFunctions.push(value),\n );\n}\n\n/**\n * Wires the specified property in the object preventing it from being overwritten. Instead, it\n * enhances the previous value by merging the current one with the passed one.\n * @param obj - object.\n * @param prop - object property to rewire.\n */\nexport function defineMergeableProperty(obj: any, prop: string): void {\n const value = obj[prop];\n defineProxiedProperty(obj, prop, () => value, v => {\n Object.entries(v).forEach(([objKey, objValue]) => {\n value[objKey] = objValue;\n });\n });\n}\n\n/**\n * Defines an enumerable and configurable property with a getter and setter.\n * @param obj - object.\n * @param prop - object property name.\n * @param get - getter to use.\n * @param set - setter to use.\n */\nexport function defineProxiedProperty(\n obj: any,\n prop: string,\n get: () => unknown,\n set: (v: any) => void,\n) {\n Object.defineProperty(obj, prop, {\n enumerable: true,\n configurable: true,\n get,\n set,\n });\n}\n\n/**\n * Defines an enumerable, configurable and writable property with the initial value.\n * @param obj - object.\n * @param prop - object property name.\n * @param value - value to set.\n */\nexport function defineStaticProperty(obj: any, prop: string, value: any): void {\n Object.defineProperty(obj, prop, {\n enumerable: true,\n configurable: true,\n writable: true,\n value,\n });\n}\n","import { miniAppsMessage, pipeJsonToSchema, themeParams } from '@tma.js/transformers';\nimport {\n boolean,\n looseObject,\n nullish,\n number,\n optional,\n parse,\n string,\n unknown,\n type BaseSchema,\n} from 'valibot';\n\nimport { createEmitter } from '@/events/createEmitter.js';\nimport { emitEvent } from '@/events/emitEvent.js';\nimport type { EventName, EventPayload, Events } from '@/events/types/index.js';\nimport { logger } from '@/globals.js';\nimport { defineFnComposer, defineMergeableProperty } from '@/obj-prop-helpers.js';\n\n/**\n * Transformers for problematic Mini Apps events.\n */\nconst transformers = {\n clipboard_text_received: looseObject({\n req_id: string(),\n data: nullish(string()),\n }),\n custom_method_invoked: looseObject({\n req_id: string(),\n result: optional(unknown()),\n error: optional(string()),\n }),\n popup_closed: nullish(\n looseObject({ button_id: nullish(string(), () => undefined) }),\n {},\n ),\n viewport_changed: nullish(\n looseObject({\n height: number(),\n width: nullish(number(), () => window.innerWidth),\n is_state_stable: boolean(),\n is_expanded: boolean(),\n }),\n // TODO: At the moment, macOS has a bug with the invalid event payload - it is always equal to\n // null. Leaving this default value until the bug is fixed.\n () => ({\n height: window.innerHeight,\n is_state_stable: true,\n is_expanded: true,\n }),\n ),\n theme_changed: looseObject({\n theme_params: themeParams(),\n }),\n} as const satisfies { [E in EventName]?: BaseSchema<unknown, EventPayload<E>, any> };\n\nfunction windowMessageListener(event: MessageEvent): void {\n // Ignore non-parent window messages.\n if (event.source !== window.parent) {\n return;\n }\n\n // Parse incoming event data.\n let message: { eventType: string; eventData?: unknown };\n try {\n message = parse(pipeJsonToSchema(miniAppsMessage()), event.data);\n } catch {\n // We ignore incorrect messages as they could be generated by any other code.\n return;\n }\n\n const { eventType, eventData } = message;\n const schema = transformers[eventType as keyof typeof transformers];\n\n let data: unknown;\n try {\n data = schema ? parse(schema, eventData) : eventData;\n } catch (cause) {\n return logger().forceError(\n [\n `An error occurred processing the \"${eventType}\" event from the Telegram application.`,\n 'Please, file an issue here:',\n 'https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose',\n ].join('\\n'),\n message,\n cause,\n );\n }\n emit(eventType as any, data);\n}\n\nexport const {\n on,\n off,\n emit,\n clear: offAll,\n} = createEmitter<Events>(\n () => {\n const wnd = window as any;\n\n // Define all functions responsible for receiving an event from the Telegram client.\n // All these \"ports\" should narrow the communication way to a single specific one - the way\n // accepted by the web version of Telegram between iframes.\n //\n // Here we consider 2 cases:\n // 1. When the Telegram SDK is already connected. In this case the Telegram SDK already\n // installed its own ports, and we should rewire them. The cleanup function should also work\n // properly in this context, removing @tma.js/bridge handler only, not\n // the Telegram SDK one.\n // 2. When the Telegram SDK is not connected, but probably will be. We know, that\n // the Telegram SDK is going to overwrite our own handlers. Due to this reason, we should\n // protect them from being overwritten, but still support handlers defined by the Telegram SDK.\n\n // TelegramGameProxy.receiveEvent\n !wnd.TelegramGameProxy && (wnd.TelegramGameProxy = {});\n defineFnComposer(wnd.TelegramGameProxy, 'receiveEvent', emitEvent);\n defineMergeableProperty(wnd, 'TelegramGameProxy');\n\n // Telegram.WebView.receiveEvent\n !wnd.Telegram && (wnd.Telegram = {});\n !wnd.Telegram.WebView && (wnd.Telegram.WebView = {});\n defineFnComposer(wnd.Telegram.WebView, 'receiveEvent', emitEvent);\n defineMergeableProperty(wnd.Telegram, 'WebView');\n\n // TelegramGameProxy_receiveEvent\n defineFnComposer(wnd, 'TelegramGameProxy_receiveEvent', emitEvent);\n\n // Add a listener handling events sent from the Telegram web application and also events\n // generated by the local emitEvent function.\n // This handler should emit a new event using the library event emitter.\n window.addEventListener('message', windowMessageListener);\n },\n () => {\n [\n ['TelegramGameProxy_receiveEvent'],\n ['TelegramGameProxy', 'receiveEvent'],\n ['Telegram', 'WebView', 'receiveEvent'],\n ].forEach(path => {\n const wnd = window as any;\n\n // A tuple, where the first value is the receiveEvent function owner, and the second\n // value is the receiveEvent itself.\n let cursor: [obj: any, receieveEvent: any] = [undefined, wnd];\n for (const item of path) {\n cursor = [cursor[1], cursor[1][item]];\n if (!cursor[1]) {\n return;\n }\n }\n const [receiveEventOwner, receiveEvent] = cursor;\n if ('unwrap' in receiveEvent) {\n receiveEvent.unwrap();\n if (\n receiveEventOwner\n && receiveEventOwner !== wnd\n && !Object.keys(receiveEventOwner).length\n ) {\n delete wnd[path[0]];\n }\n }\n });\n window.removeEventListener('message', windowMessageListener);\n },\n);\n","import { postMessageImpl } from '@/globals.js';\n\nexport type PostMessage = typeof window.parent.postMessage;\n\n/**\n * Posts a message to the parent window. We usually use it to send a message in web versions of\n * Telegram.\n * @param args - `window.parent.postMessage` arguments.\n */\nexport const postMessage: PostMessage = (...args) => {\n return postMessageImpl()(...args as unknown as Parameters<PostMessage>);\n};\n","import { either as E, function as fpFn } from 'fp-ts';\nimport { function as fn, is, looseObject } from 'valibot';\n\nimport { hasWebviewProxy } from '@/env/hasWebviewProxy.js';\nimport { isIframe } from '@/env/isIframe.js';\nimport { UnknownEnvError } from '@/errors.js';\nimport { logger, targetOrigin } from '@/globals.js';\nimport type {\n MethodName,\n MethodNameWithOptionalParams,\n MethodNameWithoutParams,\n MethodNameWithRequiredParams,\n MethodParams,\n} from '@/methods/types/index.js';\n\nimport { postMessage } from './postMessage.js';\n\nexport type PostEventError = UnknownEnvError;\nexport type PostEventFn = typeof postEvent;\nexport type PostEventFpFn = typeof postEventFp;\n\n/**\n * @see postEventFp\n */\nexport function postEvent<Method extends MethodNameWithRequiredParams>(\n method: Method,\n params: MethodParams<Method>,\n): void;\n/**\n * @see postEventFp\n */\nexport function postEvent(method: MethodNameWithoutParams): void;\n/**\n * @see postEventFp\n */\nexport function postEvent<Method extends MethodNameWithOptionalParams>(\n method: Method,\n params?: MethodParams<Method>,\n): void;\n\nexport function postEvent(\n eventType: MethodName,\n eventData?: MethodParams<MethodName>,\n): void {\n fpFn.pipe(\n postEventFp(\n // @ts-expect-error It's ok, TS can't determine a specific override.\n eventType,\n eventData,\n ),\n E.mapLeft(err => {\n throw err;\n }),\n );\n}\n\n/**\n * Calls Mini Apps methods requiring parameters.\n * @param method - method name.\n * @param params - options along with params.\n */\nexport function postEventFp<Method extends MethodNameWithRequiredParams>(\n method: Method,\n params: MethodParams<Method>,\n): E.Either<PostEventError, void>;\n\n/**\n * Calls Mini Apps methods accepting no parameters at all.\n * @param method - method name.\n */\nexport function postEventFp(method: MethodNameWithoutParams): E.Either<PostEventError, void>;\n\n/**\n * Calls Mini Apps methods accepting optional parameters.\n * @param method - method name.\n * @param params - options along with params.\n */\nexport function postEventFp<Method extends MethodNameWithOptionalParams>(\n method: Method,\n params?: MethodParams<Method>,\n): E.Either<PostEventError, void>;\n\nexport function postEventFp(\n eventType: MethodName,\n eventData?: MethodParams<MethodName>,\n): E.Either<PostEventError, void> {\n logger().log('Posting event:', eventData ? { eventType, eventData } : { eventType });\n\n const w = window;\n const message = JSON.stringify({ eventType, eventData });\n\n // Telegram Web.\n if (isIframe()) {\n postMessage(message, targetOrigin());\n return E.right(undefined);\n }\n\n // Telegram for iOS, macOS, Android and Telegram Desktop.\n if (hasWebviewProxy(w)) {\n w.TelegramWebviewProxy.postEvent(eventType, JSON.stringify(eventData));\n return E.right(undefined);\n }\n\n // Telegram for Windows Phone or Android.\n if (is(looseObject({ external: looseObject({ notify: fn() }) }), w)) {\n w.external.notify(message);\n return E.right(undefined);\n }\n\n // Otherwise, the current environment is unknown, and we are not able to send event.\n return E.left(new UnknownEnvError());\n}\n","import { signal } from '@tma.js/signals';\nimport {\n BetterTaskEither,\n type If,\n type IsNever,\n createCbCollector,\n throwifyAnyEither,\n} from '@tma.js/toolkit';\nimport { BetterPromise } from 'better-promises';\nimport { either as E, taskEither as TE, function as fn } from 'fp-ts';\n\nimport { on } from '@/events/emitter.js';\nimport type { EventName, EventPayload } from '@/events/types/index.js';\nimport { postEventFp } from '@/methods/postEvent.js';\nimport type {\n MethodName,\n MethodNameWithOptionalParams,\n MethodNameWithRequiredParams,\n MethodNameWithoutParams,\n MethodParams,\n} from '@/methods/types/index.js';\n\nimport type {\n RequestCaptureEventFn,\n RequestCaptureEventsFn,\n RequestCaptureFn,\n RequestError,\n RequestFpOptions,\n RequestOptions,\n RequestCaptureFnEventsPayload,\n} from './request.js';\n\ntype AnyEventName = EventName | EventName[];\n\nexport type Request2Error = RequestError;\nexport type Request2CaptureEventsFn<E extends EventName[]> = RequestCaptureEventsFn<E>;\nexport type Request2CaptureEventFn<E extends EventName> = RequestCaptureEventFn<E>;\nexport type Request2CaptureFn<E extends AnyEventName> = RequestCaptureFn<E>;\nexport type Request2Options<E extends AnyEventName> = RequestOptions<E>;\nexport type Request2FpOptions<E extends AnyEventName> = RequestFpOptions<E>;\nexport type Request2CaptureFnEventsPayload<E extends EventName[]> =\n RequestCaptureFnEventsPayload<E>;\nexport type Request2Result<E extends AnyEventName> =\n E extends (infer U extends EventName)[]\n ? U extends infer K extends EventName\n ? { event: K; payload: If<IsNever<EventPayload<K>>, undefined, EventPayload<K>> }\n : never\n : E extends EventName\n ? If<IsNever<EventPayload<E>>, undefined, EventPayload<E>>\n : never;\n\nexport type Request2Fn = typeof request2;\nexport type Request2FpFn = typeof request2Fp;\n\n/**\n * Calls a method waiting for the specified event(-s) to occur.\n * @param method - method name.\n * @param eventOrEvents - tracked event or events.\n * @param options - additional options.\n */\nexport function request2Fp<\n M extends MethodNameWithRequiredParams,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options: Request2FpOptions<E> & { params: MethodParams<M> },\n): TE.TaskEither<Request2Error | AbortError, Request2Result<E>>;\n\n/**\n * Calls a method waiting for the specified event(-s) to occur.\n * @param method - method name.\n * @param eventOrEvents - tracked event or events.\n * @param options - additional options.\n */\nexport function request2Fp<\n M extends MethodNameWithOptionalParams,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options?: Request2FpOptions<E> & { params?: MethodParams<M> },\n): TE.TaskEither<Request2Error | AbortError, Request2Result<E>>;\n\n/**\n * Calls a method waiting for the specified event(-s) to occur.\n * @param method - method name.\n * @param eventOrEvents - tracked event or events.\n * @param options - additional options.\n */\nexport function request2Fp<\n M extends MethodNameWithoutParams,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options?: Request2FpOptions<E>,\n): TE.TaskEither<Request2Error | AbortError, Request2Result<E>>;\n\nexport function request2Fp<\n M extends MethodName,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options: Request2FpOptions<E> & { params?: MethodParams<M> } = {},\n): TE.TaskEither<Request2Error | AbortError, Request2Result<E>> {\n const {\n // If no capture function was passed, we capture the first compatible event.\n capture = () => true,\n postEvent = postEventFp,\n } = options;\n\n // TODO: Maybe we want to rewrite it using a simple BetterPromise.\n\n const result = signal<undefined | [Request2Result<E>]>();\n const [addCleanup, cleanup] = createCbCollector();\n // Iterate over all the tracked events and add a listener, checking if the event should be\n // captured.\n (Array.isArray(eventOrEvents) ? eventOrEvents : [eventOrEvents]).forEach(event => {\n // Each event listener waits for the event to occur.\n // Then, if the capture function was passed, we should check if the event should\n // be captured. If the function is omitted, we instantly capture the event.\n addCleanup(\n on(event, payload => {\n const isEventsArray = Array.isArray(eventOrEvents);\n if (\n isEventsArray\n ? (capture as Request2CaptureEventsFn<EventName[]>)({ event, payload })\n : (capture as Request2CaptureEventFn<EventName>)(payload)\n ) {\n result.set([\n (isEventsArray ? { event, payload } : payload) as Request2Result<E>,\n ]);\n }\n }),\n );\n });\n const withCleanup = <T>(value: T): T => {\n cleanup();\n return value;\n };\n\n return fn.pipe(\n async () => postEvent(method as any, (options as any).params),\n TE.chainW(() => {\n return BetterTaskEither<AbortError, Request2Result<E>>((resolve, _, context) => {\n // When creating this BetterTaskEither, we could already have a value stored in\n // the result signal. For example, when tracked events were generated via emitEvent in\n // mockTelegramEnv.onEvent.\n const data = result();\n if (data) {\n return resolve(data[0]);\n }\n\n const listener = (data: [Request2Result<E>] | undefined) => {\n if (data) {\n resolve(data[0]);\n }\n };\n const unsub = () => {\n result.unsub(listener);\n };\n result.sub(listener);\n context.on('finalized', unsub);\n }, options);\n }),\n TE.mapBoth(withCleanup, withCleanup),\n );\n}\n\n/**\n * @see request2Fp\n */\nexport function request2<M extends MethodNameWithRequiredParams, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options: Request2Options<E> & { params: MethodParams<M> },\n): BetterPromise<Request2Result<E>>;\n\n/**\n * @see request2Fp\n */\nexport function request2<M extends MethodNameWithOptionalParams, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options?: Request2Options<E> & { params?: MethodParams<M> },\n): BetterPromise<Request2Result<E>>;\n\n/**\n * @see request2Fp\n */\nexport function request2<M extends MethodNameWithoutParams, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options?: Request2Options<E>,\n): BetterPromise<Request2Result<E>>;\n\nexport function request2<M extends MethodName, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options?: Request2Options<E> & { params?: MethodParams<M> },\n): BetterPromise<Request2Result<E>> {\n const { postEvent } = options || {};\n\n return throwifyAnyEither(\n // @ts-expect-error TypeScript will not be able to handle our overrides here.\n request2Fp(method, eventOrEvents, {\n ...options,\n postEvent: postEvent\n ? (...args: any[]) => {\n try {\n // @ts-expect-error TypeScript will not be able to handle our overrides here.\n postEvent(...args);\n return E.right(undefined);\n } catch (e) {\n return E.left(e);\n }\n }\n : postEventFp,\n }),\n );\n}\n","import { throwifyAnyEither } from '@tma.js/toolkit';\nimport {\n BetterPromise,\n type BetterPromiseOptions,\n TimeoutError,\n} from 'better-promises';\nimport { either as E, taskEither as TE, function as fn } from 'fp-ts';\n\nimport { hasWebviewProxy } from '@/env/hasWebviewProxy.js';\nimport { UnknownEnvError } from '@/errors.js';\nimport { retrieveRawLaunchParamsFp } from '@/launch-params.js';\nimport { type Request2Error, request2Fp } from '@/utils/request2.js';\n\nexport type isTMAError = Exclude<Request2Error, TimeoutError>;\n\n/**\n * @see isTMAFp\n */\nexport function isTMA(): boolean;\n/**\n * @see isTMAFp\n */\nexport function isTMA(type: 'complete', options?: BetterPromiseOptions): BetterPromise<boolean>;\nexport function isTMA(\n type?: 'complete',\n options?: BetterPromiseOptions,\n): boolean | BetterPromise<boolean> {\n const monad = isTMAFp(\n // @ts-expect-error TS doesn't get what override we are going to use.\n type,\n options,\n );\n return typeof monad === 'function'\n ? BetterPromise.fn(() => throwifyAnyEither(monad as TE.TaskEither<any, boolean>))\n : monad;\n}\n\n/**\n * Returns true if the current environment is Telegram Mini Apps.\n *\n * It uses the `retrieveLaunchParams` function to determine if the environment\n * contains launch parameters. In case it does, true will be returned.\n *\n * In case you need stricter checks, use async override of this function.\n */\nexport function isTMAFp(): boolean;\n/**\n * Returns promise with true if the current environment is Telegram Mini Apps.\n *\n * First of all, it checks if the current environment contains traits specific\n * to the Mini Apps environment. Then, it attempts to call a Mini Apps method\n * and waits for a response to be received.\n *\n * In case you need less strict checks, use sync override of this function.\n */\nexport function isTMAFp(\n type: 'complete',\n options?: BetterPromiseOptions,\n): TE.TaskEither<isTMAError, boolean>;\nexport function isTMAFp(\n type?: 'complete',\n options?: BetterPromiseOptions,\n): boolean | TE.TaskEither<isTMAError, boolean> {\n const hasProxy = hasWebviewProxy(window);\n if (!type) {\n return hasProxy || fn.pipe(retrieveRawLaunchParamsFp(), E.match(() => false, () => true));\n }\n if (hasProxy) {\n return TE.right(true);\n }\n const { timeout = 100 } = options || {};\n\n return fn.pipe(\n request2Fp('web_app_request_theme', 'theme_changed', { ...options, timeout }),\n TE.match(\n error => (\n TimeoutError.is(error) || UnknownEnvError.is(error)\n ? E.right(false)\n : E.left(error)\n ),\n () => E.right(true),\n ),\n );\n}\n","import { setStorageValue } from '@tma.js/toolkit';\nimport {\n miniAppsMessage,\n parseLaunchParamsQuery,\n pipeJsonToSchema,\n serializeLaunchParamsQuery,\n type LaunchParamsLike,\n} from '@tma.js/transformers';\nimport { parse } from 'valibot';\n\nimport { isIframe } from '@/env/isIframe.js';\nimport { InvalidLaunchParamsError } from '@/errors.js';\nimport { logger, postMessageImpl } from '@/globals.js';\nimport type { MethodName, MethodParams } from '@/methods/types/index.js';\n\n/**\n * Mocks the environment and imitates Telegram Mini Apps behavior.\n *\n * We usually use this function in the following cases:\n * 1. We are developing an application outside the Telegram environment and would like to imitate\n * the Telegram client in order to re-create the same communication behavior.\n * 2. We would like to intercept some Telegram Mini Apps methods' calls in order to enhance them\n * or write a custom behavior. It is extremely useful in some Telegram clients improperly handling\n * Mini Apps methods' calls and not even responding.\n *\n * Note that calling this function in Telegram web clients, the `postMessageImplementation` signal\n * value will be updated with a new one, enhancing previously set signal value to allow wrapping\n * the original `window.parent.postMessage` function. In other words, calling `mockTelegramEnv`\n * function N times, you will effectively wrap previously set implementation N times, so be\n * careful calling this function several times during a single lifecycle of the app. In case you\n * would like to avoid such kind of behavior, use the `resetPostMessage` option.\n */\nexport function mockTelegramEnv({ launchParams, onEvent, resetPostMessage }: {\n /**\n * Launch parameters to mock. They will be saved in the storage, so the SDK functions could\n * retrieve them.\n *\n * Note that this value must have `tgWebAppData` presented in a raw format as long as you will\n * need it when retrieving init data in this format. Otherwise, init data may be broken.\n */\n launchParams?:\n | (Omit<LaunchParamsLike, 'tgWebAppData'> & { tgWebAppData?: string | URLSearchParams })\n | string\n | URLSearchParams;\n /**\n * Function that will be called if a Mini Apps method call was requested by the mini app.\n *\n * It receives a Mini Apps method name along with the passed payload.\n *\n * Note that using the `next` function, in non-web environments it uses the\n * `window.TelegramWebviewProxy.postEvent` method.\n *\n * Talking about the web versions of Telegram, the value of `next` is a bit more complex - it\n * will be equal to the value stored in the `postMessageImpl` signal set previously. By default,\n * this value contains a function utilizing the `window.parent.postMessage` method.\n * @param event - event information.\n * @param next - function to call the original method used to call a Mini Apps method.\n */\n onEvent?: (\n event:\n | { [M in MethodName]: { name: M; params: MethodParams<M> } }[MethodName]\n | { name: string; params: unknown },\n next: () => void,\n ) => void;\n /**\n * Removes all previously set enhancements of the `window.parent.postMessage` function set\n * by other `mockTelegramEnv` calls.\n * @default false\n */\n resetPostMessage?: boolean;\n} = {}): void {\n if (launchParams) {\n // If launch parameters were passed, save them in the session storage, so\n // the retrieveLaunchParams function would return them.\n const launchParamsQuery =\n typeof launchParams === 'string' || launchParams instanceof URLSearchParams\n ? launchParams.toString()\n : (\n // Here we have to trick serializeLaunchParamsQuery into thinking, it serializes a valid\n // value. We are doing it because we are working with tgWebAppData presented as a\n // string, not an object as serializeLaunchParamsQuery requires.\n serializeLaunchParamsQuery({ ...launchParams, tgWebAppData: undefined })\n // Then, we just append init data.\n + (launchParams.tgWebAppData ? `&tgWebAppData=${encodeURIComponent(launchParams.tgWebAppData.toString())}` : '')\n );\n\n // Remember to check if launch params are valid.\n try {\n parseLaunchParamsQuery(launchParamsQuery);\n } catch (e) {\n throw new InvalidLaunchParamsError(launchParamsQuery, e);\n }\n setStorageValue('launchParams', launchParamsQuery);\n }\n\n // Original postEvent firstly checks if the current environment is iframe.\n // That's why we have a separate branch for this environment here too.\n if (isIframe()) {\n if (!onEvent) {\n return;\n }\n // As long as the postEvent function uses the postMessage method, we should rewire it.\n if (resetPostMessage) {\n postMessageImpl.reset();\n }\n\n const original = postMessageImpl();\n postMessageImpl.set((...args) => {\n const [message] = args;\n const next = () => {\n (original as any)(...args);\n };\n\n // Pass only Telegram Mini Apps events to the handler. All other calls should be passed\n // to the original handler (window.parent.postMessage likely).\n try {\n const data = parse(pipeJsonToSchema(miniAppsMessage()), message);\n onEvent({ name: data.eventType, params: data.eventData }, next);\n } catch {\n next();\n }\n });\n return;\n }\n\n // In all other environments, it is enough to define window.TelegramWebviewProxy.postEvent.\n const proxy = (window as any).TelegramWebviewProxy || {};\n const postEventDefaulted = proxy.postEvent || (() => undefined);\n (window as any).TelegramWebviewProxy = {\n ...proxy,\n postEvent(eventType: string, eventData: string) {\n const next = () => {\n postEventDefaulted(eventType, eventData);\n };\n onEvent\n ? onEvent({\n name: eventType,\n params: eventData ? JSON.parse(eventData) : undefined,\n }, next)\n : next();\n },\n };\n\n logger().log('Environment was mocked by the mockTelegramEnv function');\n}\n","type CaptureSameReqFn = (payload: { req_id: string }) => boolean;\n\n/**\n * Returns a function which can be used in `request` function `capture` property to capture\n * the event with the same request identifier.\n * @param reqId - request identifier.\n */\nexport function captureSameReq(reqId: string): CaptureSameReqFn {\n return ({ req_id }) => req_id === reqId;\n}\n","import { Version } from '@tma.js/types';\n\nimport {\n MethodName,\n MethodNameWithVersionedParams,\n MethodVersionedParams,\n} from '@/methods/types/index.js';\n\nconst releases = {\n '6.0': [\n 'iframe_ready',\n 'iframe_will_reload',\n 'web_app_close',\n 'web_app_data_send',\n 'web_app_expand',\n 'web_app_open_link',\n 'web_app_ready',\n 'web_app_request_theme',\n 'web_app_request_viewport',\n 'web_app_setup_main_button',\n 'web_app_setup_closing_behavior',\n ],\n 6.1: [\n 'web_app_open_tg_link',\n 'web_app_open_invoice',\n 'web_app_setup_back_button',\n 'web_app_set_background_color',\n 'web_app_set_header_color',\n 'web_app_trigger_haptic_feedback',\n ],\n 6.2: ['web_app_open_popup'],\n 6.4: [\n 'web_app_close_scan_qr_popup',\n 'web_app_open_scan_qr_popup',\n 'web_app_read_text_from_clipboard',\n { method: 'web_app_open_link', param: 'try_instant_view' },\n ],\n 6.7: ['web_app_switch_inline_query'],\n 6.9: [\n 'web_app_invoke_custom_method',\n 'web_app_request_write_access',\n 'web_app_request_phone',\n { method: 'web_app_set_header_color', param: 'color' },\n ],\n '6.10': ['web_app_setup_settings_button'],\n 7.2: [\n 'web_app_biometry_get_info',\n 'web_app_biometry_open_settings',\n 'web_app_biometry_request_access',\n 'web_app_biometry_request_auth',\n 'web_app_biometry_update_token',\n ],\n 7.6: [\n { method: 'web_app_open_link', param: 'try_browser' },\n { method: 'web_app_close', param: 'return_back' },\n ],\n 7.7: ['web_app_setup_swipe_behavior'],\n 7.8: ['web_app_share_to_story'],\n '7.10': [\n 'web_app_setup_secondary_button',\n 'web_app_set_bottom_bar_color',\n { method: 'web_app_setup_main_button', param: 'has_shine_effect' },\n ],\n '8.0': [\n 'web_app_request_safe_area',\n 'web_app_request_content_safe_area',\n 'web_app_request_fullscreen',\n 'web_app_exit_fullscreen',\n 'web_app_set_emoji_status',\n 'web_app_add_to_home_screen',\n 'web_app_check_home_screen',\n 'web_app_request_emoji_status_access',\n 'web_app_check_location',\n 'web_app_open_location_settings',\n 'web_app_request_file_download',\n 'web_app_request_location',\n 'web_app_send_prepared_message',\n 'web_app_start_accelerometer',\n 'web_app_start_device_orientation',\n 'web_app_start_gyroscope',\n 'web_app_stop_accelerometer',\n 'web_app_stop_device_orientation',\n 'web_app_stop_gyroscope',\n 'web_app_toggle_orientation_lock',\n ],\n '9.0': [\n 'web_app_device_storage_clear',\n 'web_app_device_storage_get_key',\n 'web_app_device_storage_save_key',\n 'web_app_secure_storage_clear',\n 'web_app_secure_storage_get_key',\n 'web_app_secure_storage_restore_key',\n 'web_app_secure_storage_save_key',\n ],\n 9.1: ['web_app_hide_keyboard'],\n 9.5: [\n { method: 'web_app_setup_main_button', param: 'icon_custom_emoji_id' },\n { method: 'web_app_setup_secondary_button', param: 'icon_custom_emoji_id' },\n ],\n};\n\n/**\n * @returns Version of the specified method parameter release. Returns `null`\n * if passed method or parameter are unknown.\n * @param method - method name\n * @param param - method parameter\n */\nexport function getReleaseVersion<M extends MethodNameWithVersionedParams>(\n method: M,\n param: MethodVersionedParams<M>,\n): Version | null;\n\n/**\n * @returns Version of the specified method release. Returns `null`\n * if passed method is unknown.\n * @param method - method name.\n */\nexport function getReleaseVersion(method: MethodName): Version | null;\nexport function getReleaseVersion(method: MethodName, param?: string): Version | null {\n const versions = Object.keys(releases) as (`${keyof typeof releases}`)[];\n return versions.find(version => {\n return releases[version].some(item => {\n if (param) {\n return typeof item === 'object'\n && item.method === method\n && item.param === param;\n }\n return item === method;\n });\n }) || null;\n}\n","import type { Version } from '@tma.js/types';\n\nfunction parts(a: Version): number[] {\n return a.split('.').map(Number);\n}\n\n/**\n * @param a - first version.\n * @param b - second version.\n * @returns\n * - `1` if the version \"a\" is greater than \"b\".\n * - `0` the version \"a\" is equal to \"b\".\n * - `-1` the version \"a\" is lower than \"b\".\n */\nexport function compareVersions(a: Version, b: Version): number {\n const aParts = parts(a);\n const bParts = parts(b);\n const len = Math.max(aParts.length, bParts.length);\n\n // Iterate over each part of versions and compare them. In case, part is\n // missing, assume its value is equal to 0.\n for (let i = 0; i < len; i += 1) {\n const aVal = aParts[i] || 0;\n const bVal = bParts[i] || 0;\n\n if (aVal === bVal) {\n continue;\n }\n return aVal > bVal ? 1 : -1;\n }\n return 0;\n}\n","import type { Version } from '@tma.js/types';\n\nimport { getReleaseVersion } from '@/methods/getReleaseVersion.js';\nimport type {\n MethodName,\n MethodNameWithVersionedParams,\n MethodVersionedParams,\n} from '@/methods/types/index.js';\nimport { compareVersions } from '@/utils/compareVersions.js';\n\n/**\n * Returns true in case, passed parameter in specified method is supported.\n * @param method - method name\n * @param param - method parameter\n * @param inVersion - platform version.\n */\nexport function supports<M extends MethodNameWithVersionedParams>(\n method: M,\n param: MethodVersionedParams<M>,\n inVersion: Version,\n): boolean;\n\n/**\n * Returns true in case, specified method is supported in a passed version.\n * @param method - method name.\n * @param inVersion - platform version.\n */\nexport function supports(method: MethodName, inVersion: Version): boolean;\n\nexport function supports(\n method: MethodName,\n paramOrVersion: Version | string,\n inVersion?: string,\n): boolean {\n const version = inVersion\n ? getReleaseVersion(\n method as MethodNameWithVersionedParams,\n paramOrVersion as MethodVersionedParams<MethodNameWithVersionedParams>,\n )\n : getReleaseVersion(method);\n return version\n ? compareVersions(version, inVersion || paramOrVersion) <= 0\n : false;\n}\n","import type { Version } from '@tma.js/types';\nimport { any, is, looseObject } from 'valibot';\n\nimport { MethodParameterUnsupportedError, MethodUnsupportedError } from '@/errors.js';\nimport { logger } from '@/globals.js';\nimport { type PostEventFn, postEvent } from '@/methods/postEvent.js';\nimport { supports } from '@/methods/supports.js';\nimport type {\n MethodName,\n MethodNameWithVersionedParams,\n MethodVersionedParams,\n} from '@/methods/types/index.js';\n\nexport type OnUnsupportedFn = (\n data: { version: Version } & (\n | { method: MethodName }\n | {\n [M in MethodNameWithVersionedParams]: {\n method: M;\n param: MethodVersionedParams<M>;\n };\n }[MethodNameWithVersionedParams]),\n) => void;\n\nexport type CreatePostEventMode = 'strict' | 'non-strict';\n\n/**\n * Creates a function that checks if the specified method and parameters are supported.\n *\n * If the method or parameters are unsupported, the `onUnsupported` function will be called.\n *\n * If `strict` or `non-strict` value was passed as the second argument, the function\n * will create its own `onUnsupported` function with behavior depending on the value passed.\n *\n * - Passing `strict` will make the function to throw a `MethodParameterUnsupportedError`\n * or a `MethodUnsupportedError` error.\n * - Passing `non-strict` will just warn you about something being unsupported.\n *\n * @param version - Telegram Mini Apps version.\n * @param onUnsupportedOrMode - function or strict mode. Default: `strict`\n */\nexport function createPostEvent(\n version: Version,\n onUnsupportedOrMode: OnUnsupportedFn | CreatePostEventMode = 'strict',\n): PostEventFn {\n const onUnsupported: OnUnsupportedFn = typeof onUnsupportedOrMode === 'function'\n ? onUnsupportedOrMode\n : data => {\n const { method, version } = data;\n const error = 'param' in data\n ? new MethodParameterUnsupportedError(method, data.param, version)\n : new MethodUnsupportedError(method, version);\n\n if (onUnsupportedOrMode === 'strict') {\n throw error;\n }\n return logger().forceWarn(error.message);\n };\n\n return ((method: any, params: any) => {\n // Firstly, check if the method is supported.\n if (!supports(method, version)) {\n return onUnsupported({ version, method });\n }\n\n // Method could use parameters, which are supported only in specific versions of Mini Apps.\n // We are validating only those parameters, which are not backward compatible.\n if (\n method === 'web_app_set_header_color'\n && is(looseObject({ color: any() }), params)\n && !supports(method, 'color', version)\n ) {\n return onUnsupported({ version, method, param: 'color' });\n }\n if (\n (method === 'web_app_setup_main_button' || method === 'web_app_setup_secondary_button')\n && is(looseObject({ icon_custom_emoji_id: any() }), params)\n && !supports(method, 'icon_custom_emoji_id', version)\n ) {\n return onUnsupported({ version, method, param: 'icon_custom_emoji_id' });\n }\n\n return postEvent(method, params);\n }) as PostEventFn;\n}\n","import { BetterPromise } from 'better-promises';\nimport { taskEither as TE, function as fn } from 'fp-ts';\n\nimport { InvokeCustomMethodFailedError } from '@/errors.js';\nimport { captureSameReq } from '@/methods/captureSameReq.js';\nimport type { CustomMethodName, CustomMethodParams } from '@/methods/types/index.js';\n\nimport {\n request2Fp,\n type Request2Error,\n type Request2FpOptions,\n type Request2Options,\n} from './request2.js';\n\nexport type InvokeCustomMethodError = Request2Error | InvokeCustomMethodFailedError;\n\nexport type InvokeCustomMethodOptions = Omit<Request2Options<'custom_method_invoked'>, 'capture'>;\nexport type InvokeCustomMethodFn = typeof invokeCustomMethod;\n\nexport type InvokeCustomMethodFpOptions = Omit<Request2FpOptions<'custom_method_invoked'>, 'capture'>;\nexport type InvokeCustomMethodFpFn = typeof invokeCustomMethodFp;\n\n/**\n * Invokes known custom method. Returns method execution result.\n * @param method - method name.\n * @param params - method parameters.\n * @param requestId - request identifier.\n * @param options - additional options.\n */\nexport function invokeCustomMethodFp<M extends CustomMethodName>(\n method: M,\n params: CustomMethodParams<M>,\n requestId: string,\n options?: InvokeCustomMethodFpOptions,\n): TE.TaskEither<InvokeCustomMethodError, unknown>;\n\n/**\n * Invokes unknown custom method. Returns method execution result.\n * @param method - method name.\n * @param params - method parameters.\n * @param requestId - request identifier.\n * @param options - additional options.\n */\nexport function invokeCustomMethodFp(\n method: string,\n params: object,\n requestId: string,\n options?: InvokeCustomMethodFpOptions,\n): TE.TaskEither<Request2Error, unknown>;\n\nexport function invokeCustomMethodFp(\n method: string,\n params: object,\n requestId: string,\n options?: InvokeCustomMethodFpOptions,\n): TE.TaskEither<InvokeCustomMethodError, unknown> {\n return fn.pipe(\n request2Fp('web_app_invoke_custom_method', 'custom_method_invoked', {\n ...options || {},\n params: { method, params, req_id: requestId },\n capture: captureSameReq(requestId),\n }),\n TE.chain(({ result, error }) => {\n return error\n ? TE.left(new InvokeCustomMethodFailedError(error))\n : TE.right(result);\n }),\n );\n}\n\n/**\n * @see invokeCustomMethodFp\n */\nexport function invokeCustomMethod<M extends CustomMethodName>(\n method: M,\n params: CustomMethodParams<M>,\n requestId: string,\n options?: InvokeCustomMethodOptions,\n): BetterPromise<unknown>;\n\n/**\n * @see invokeCustomMethodFp\n */\nexport function invokeCustomMethod(\n method: string,\n params: object,\n requestId: string,\n options?: InvokeCustomMethodOptions,\n): BetterPromise<unknown>;\n\nexport function invokeCustomMethod(\n method: string,\n params: object,\n requestId: string,\n options?: InvokeCustomMethodOptions,\n): BetterPromise<unknown> {\n return BetterPromise.fn(() => {\n return fn.pipe(\n // @ts-expect-error TypeScript is unable to determine required override.\n invokeCustomMethodFp(method, params, requestId, options),\n TE.match(\n error => {\n throw error;\n },\n result => result,\n ),\n )();\n });\n}\n","import { signal } from '@tma.js/signals';\nimport {\n createCbCollector,\n throwifyAnyEither,\n type If,\n type IsNever,\n BetterTaskEither,\n} from '@tma.js/toolkit';\nimport {\n BetterPromise,\n type BetterPromiseOptions,\n type TimeoutError,\n} from 'better-promises';\nimport { either as E, taskEither as TE, function as fn } from 'fp-ts';\n\nimport { on } from '@/events/emitter.js';\nimport type { EventName, EventPayload } from '@/events/types/index.js';\nimport {\n postEventFp,\n type PostEventError,\n type PostEventFn,\n type PostEventFpFn,\n} from '@/methods/postEvent.js';\nimport type {\n MethodName,\n MethodNameWithOptionalParams,\n MethodNameWithoutParams,\n MethodNameWithRequiredParams,\n MethodParams,\n} from '@/methods/types/index.js';\n\ntype AnyEventName = EventName | EventName[];\n\nexport type RequestError = PostEventError | TimeoutError;\n\n/**\n * @example\n * { event: 'scan_qr_closed' }\n * @example\n * {\n * event: 'popup_closed',\n * payload: { button_id: 'ok' }\n * }\n */\nexport type RequestCaptureFnEventsPayload<E extends EventName[]> =\n E extends (infer U extends EventName)[]\n ? {\n [K in U]: If<\n IsNever<EventPayload<K>>,\n { event: K },\n { event: K; payload: EventPayload<K> }\n >\n }[U]\n : never;\n\nexport type RequestCaptureEventsFn<E extends EventName[]> = (\n payload: RequestCaptureFnEventsPayload<E>,\n) => boolean;\n\nexport type RequestCaptureEventFn<E extends EventName> = If<\n IsNever<EventPayload<E>>,\n () => boolean,\n (payload: EventPayload<E>) => boolean\n>;\n\nexport type RequestCaptureFn<E extends AnyEventName> = E extends EventName[]\n ? RequestCaptureEventsFn<E>\n : E extends EventName\n ? RequestCaptureEventFn<E>\n : never;\n\nexport interface RequestOptions<E extends AnyEventName> extends Omit<RequestFpOptions<E>, 'postEvent'> {\n /**\n * Custom function to call mini apps methods.\n */\n postEvent?: PostEventFn;\n}\n\nexport type RequestResult<E extends AnyEventName> =\n E extends (infer U extends EventName)[]\n ? U extends infer K extends EventName\n ? If<IsNever<EventPayload<K>>, undefined, EventPayload<K>>\n : never\n : E extends EventName\n ? If<IsNever<EventPayload<E>>, undefined, EventPayload<E>>\n : never;\n\nexport interface RequestFpOptions<E extends AnyEventName> extends Pick<\n BetterPromiseOptions,\n 'abortSignal' | 'timeout'\n> {\n /**\n * A function that should return true if the event should be captured.\n * The first compatible request will be captured if this property is omitted.\n */\n capture?: RequestCaptureFn<E>;\n /**\n * A custom function to call mini apps methods.\n */\n postEvent?: PostEventFpFn;\n}\n\nexport type RequestFn = typeof request;\nexport type RequestFpFn = typeof requestFp;\n\n/**\n * Calls a method waiting for the specified event(-s) to occur.\n * @param method - method name.\n * @param eventOrEvents - tracked event or events.\n * @param options - additional options.\n * @deprecated To be removed in the next major update. Use `request2fp` instead, it provides\n * a proper way of handling multiple events.\n */\nexport function requestFp<\n M extends MethodNameWithRequiredParams,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options: RequestFpOptions<E> & { params: MethodParams<M> },\n): TE.TaskEither<RequestError | AbortError, RequestResult<E>>;\n\n/**\n * Calls a method waiting for the specified event(-s) to occur.\n * @param method - method name.\n * @param eventOrEvents - tracked event or events.\n * @param options - additional options.\n * @deprecated To be removed in the next major update. Use `request2fp` instead, it provides\n * a proper way of handling multiple events.\n */\nexport function requestFp<\n M extends MethodNameWithOptionalParams,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options?: RequestFpOptions<E> & { params?: MethodParams<M> },\n): TE.TaskEither<RequestError | AbortError, RequestResult<E>>;\n\n/**\n * Calls a method waiting for the specified event(-s) to occur.\n * @param method - method name.\n * @param eventOrEvents - tracked event or events.\n * @param options - additional options.\n * @deprecated To be removed in the next major update. Use `request2fp` instead, it provides\n * a proper way of handling multiple events.\n */\nexport function requestFp<\n M extends MethodNameWithoutParams,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options?: RequestFpOptions<E>,\n): TE.TaskEither<RequestError | AbortError, RequestResult<E>>;\n\nexport function requestFp<\n M extends MethodName,\n E extends AnyEventName,\n AbortError = never,\n>(\n method: M,\n eventOrEvents: E,\n options: RequestFpOptions<E> & { params?: MethodParams<M> } = {},\n): TE.TaskEither<RequestError | AbortError, RequestResult<E>> {\n const {\n // If no capture function was passed, we capture the first compatible event.\n capture = () => true,\n postEvent = postEventFp,\n } = options;\n\n const result = signal<undefined | [RequestResult<E>]>();\n const [addCleanup, cleanup] = createCbCollector();\n // Iterate over all the tracked events and add a listener, checking if the event should be\n // captured.\n (Array.isArray(eventOrEvents) ? eventOrEvents : [eventOrEvents]).forEach(event => {\n // Each event listener waits for the event to occur.\n // Then, if the capture function was passed, we should check if the event should\n // be captured. If the function is omitted, we instantly capture the event.\n addCleanup(\n on(event, payload => {\n if (\n Array.isArray(eventOrEvents)\n ? (capture as RequestCaptureEventsFn<EventName[]>)({ event, payload })\n : (capture as RequestCaptureEventFn<EventName>)(payload)\n ) {\n result.set([payload as RequestResult<E>]);\n }\n }),\n );\n });\n const withCleanup = <T>(value: T): T => {\n cleanup();\n return value;\n };\n\n return fn.pipe(\n async () => postEvent(method as any, (options as any).params),\n TE.chainW(() => {\n return BetterTaskEither<AbortError, RequestResult<E>>((resolve, _, context) => {\n // When creating this BetterTaskEither, we could already have a value stored in\n // the result signal. For example, when tracked events were generated via emitEvent in\n // mockTelegramEnv.onEvent.\n const data = result();\n if (data) {\n return resolve(data[0]);\n }\n\n const listener = (data: [RequestResult<E>] | undefined) => {\n if (data) {\n resolve(data[0]);\n }\n };\n const unsub = () => {\n result.unsub(listener);\n };\n result.sub(listener);\n context.on('finalized', unsub);\n }, options);\n }),\n TE.mapBoth(withCleanup, withCleanup),\n );\n}\n\n/**\n * @see requestFp\n * @deprecated To be removed in the next major update. Use `request2` instead, it provides\n * a proper way of handling multiple events.\n */\nexport function request<M extends MethodNameWithRequiredParams, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options: RequestOptions<E> & { params: MethodParams<M> },\n): BetterPromise<RequestResult<E>>;\n\n/**\n * @see requestFp\n * @deprecated To be removed in the next major update. Use `request2` instead, it provides\n * a proper way of handling multiple events.\n */\nexport function request<M extends MethodNameWithOptionalParams, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options?: RequestOptions<E> & { params?: MethodParams<M> },\n): BetterPromise<RequestResult<E>>;\n\n/**\n * @see requestFp\n * @deprecated To be removed in the next major update. Use `request2` instead, it provides\n * a proper way of handling multiple events.\n */\nexport function request<M extends MethodNameWithoutParams, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options?: RequestOptions<E>,\n): BetterPromise<RequestResult<E>>;\n\nexport function request<M extends MethodName, E extends AnyEventName>(\n method: M,\n eventOrEvents: E,\n options?: RequestOptions<E> & { params?: MethodParams<M> },\n): BetterPromise<RequestResult<E>> {\n const { postEvent } = options || {};\n\n return throwifyAnyEither(\n // @ts-expect-error TypeScript will not be able to handle our overrides here.\n requestFp(method, eventOrEvents, {\n ...options,\n postEvent: postEvent\n ? (...args: any[]) => {\n try {\n // @ts-expect-error TypeScript will not be able to handle our overrides here.\n postEvent(...args);\n return E.right(undefined);\n } catch (e) {\n return E.left(e);\n }\n }\n : postEventFp,\n }),\n );\n}\n","/**\n * Applies polyfills required for stable work of the package:\n * - `Object.hasOwn` - used by `valibot`\n */\nexport function applyPolyfills(): void {\n if (!Object.hasOwn) {\n Object.hasOwn = function(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n };\n }\n}\n","import { throwifyFpFn } from '@tma.js/toolkit';\nimport { either as E } from 'fp-ts';\n\nexport type DecodeBase64UrlError = DOMException;\n\n/**\n * Decodes a base-64-url ASCII string.\n * @param value - the value to decode.\n * @see Learn more about base64url:\n * https://herongyang.com/Encoding/Base64URL-Encoding-Algorithm.html\n * @see Source:\n * https://developer.mozilla.org/ru/docs/Glossary/Base64#solution_1_–_escaping_the_string_before_encoding_it\n */\nexport function decodeBase64UrlFp(value: string): E.Either<DecodeBase64UrlError, string> {\n return E.tryCatch(() => {\n return decodeURIComponent(\n atob(\n value\n .replace(/-/g, '+')\n .replace(/_/g, '/'),\n )\n .split('')\n .map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2))\n .join(''),\n );\n }, e => e as DOMException);\n}\n\n/**\n * @see decodeBase64UrlFp\n */\nexport const decodeBase64Url = throwifyFpFn(decodeBase64UrlFp);\n\n/**\n * Creates a base-64-url encoded ASCII string from the passed value.\n * @param value - the value to encode.\n * @see Learn more about base64url:\n * https://herongyang.com/Encoding/Base64URL-Encoding-Algorithm.html\n * @see Source:\n * https://developer.mozilla.org/ru/docs/Glossary/Base64#solution_1_–_escaping_the_string_before_encoding_it\n */\nexport function encodeBase64Url(value: string): string {\n // first we use encodeURIComponent to get percent-encoded UTF-8,\n // then we convert the percent encodings into raw bytes which\n // can be fed into btoa.\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_, p1) => {\n return String.fromCharCode(parseInt(`0x${p1}`));\n }),\n )\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n}\n","import { throwifyFpFn, throwifyAnyEither } from '@tma.js/toolkit';\nimport { either as E, function as fn, json as J } from 'fp-ts';\n\nimport { encodeBase64Url, type DecodeBase64UrlError, decodeBase64UrlFp } from '@/base64-url.js';\n\n/**\n * Creates a safe start parameter value. If the value is not a string, the\n * function applies JSON.stringify to it, so make sure you are not passing an\n * object with circular references.\n *\n * @param value - value to create start parameter from.\n * @see Learn more about start parameter:\n * https://docs.telegram-mini-apps.com/platform/start-parameter\n */\nexport function createStartParamFp(value: unknown): E.Either<Error, string> {\n const b64 = encodeBase64Url(typeof value === 'string' ? value : JSON.stringify(value));\n return b64.length > 512\n ? E.left(new Error('Value is too long for start parameter'))\n : E.right(b64);\n}\n\n/**\n * @see createStartParamFp\n */\nexport const createStartParam = throwifyFpFn(createStartParamFp);\n\n/**\n * @see decodeStartParamFp\n */\nexport function decodeStartParam<T>(value: string, parse: (value: string) => T): T;\n/**\n * @see decodeStartParamFp\n */\nexport function decodeStartParam(value: string, as: 'json'): J.Json;\n/**\n * @see decodeStartParamFp\n */\nexport function decodeStartParam(value: string): string;\nexport function decodeStartParam<T>(\n value: string,\n arg2?: 'json' | ((value: string) => T),\n): string | unknown | T {\n return throwifyAnyEither(\n decodeStartParamFp(\n value,\n // @ts-expect-error TypeScript is unable to detect a correct override.\n typeof arg2 === 'function'\n ? (value: string) => E.tryCatch(() => arg2(value), e => e)\n : arg2,\n ),\n );\n}\n\n/**\n * Decodes a start parameter using a custom parser.\n * @param value - a start parameter value.\n * @param parse - a custom value parser.\n */\nexport function decodeStartParamFp<L, R>(\n value: string,\n parse: (value: string) => E.Either<L, R>,\n): E.Either<L | DecodeBase64UrlError, R>;\n/**\n * Decodes a start parameter assuming that the result is a JSON value.\n * @param value - a start parameter value.\n * @param as - result kind.\n */\nexport function decodeStartParamFp(\n value: string,\n as: 'json',\n): E.Either<SyntaxError | DecodeBase64UrlError, J.Json>;\n/**\n * Decodes a start parameter and returns its decoded representation.\n * @param value - a value to decode.\n */\nexport function decodeStartParamFp(value: string): E.Either<DecodeBase64UrlError, string>;\nexport function decodeStartParamFp<L, R>(\n value: string,\n arg2?: 'json' | ((value: string) => E.Either<L, R>),\n): E.Either<DecodeBase64UrlError | SyntaxError | L, R | string | J.Json> {\n return fn.pipe(\n decodeBase64UrlFp(value),\n E.chain<DecodeBase64UrlError | SyntaxError | L, string, R | string | J.Json>(decoded => {\n if (!arg2) {\n return E.right(decoded);\n }\n if (typeof arg2 === 'function') {\n return arg2(decoded);\n }\n return J.parse(decoded) as E.Either<SyntaxError, J.Json>;\n }),\n );\n}\n\n/**\n * @returns True if the passed value is safe to be used to create a start parameter value from it.\n * If true is returned, the value can be safely passed to the `createStartParam` function.\n * @param value - value to check.\n * @see createStartParam\n */\nexport function isSafeToCreateStartParam(value: string): boolean {\n return encodeBase64Url(value).length <= 512;\n}\n"],"names":["store","getGlobalConfig","config2","store2","getGlobalMessage","lang","store3","getSchemaMessage","store4","getSpecificMessage","reference","_a","_stringify","input","type","_b","_addIssue","context","label","dataset","other","expected","received","issue","isSchema","message2","_getStandardProps","value2","_isValidObjectKey","object2","key","_joinExpects","values2","separator","list","ValiError","issues","check","requirement","integer","transform","operation","getFallback","schema","getDefault","is","any","boolean","date","function_","instance","class_","looseObject","entries2","valueSchema","valueDataset","pathItem","nullish","wrapped","default_","number","optional","record","entryKey","entryValue","keyDataset","string","_subIssues","datasets","union","options","option","validDataset","typedDatasets","untypedDatasets","optionDataset","unknown","parse","pipe","pipe2","item","hasWebviewProxy","value","v.is","v.looseObject","v.function","isIframe","$","q","r","e","t","w","D","G","E","I","L","d","l","c","H","o","J","S","M","C","g","p","u","a","x","O","b","T","m","y","k","F","P","A","n","h","s","i","j","R","K","v","z","__spreadArray","to","from","pack","ar","identity","flow","ab","bc","cd","de","ef","fg","gh","hi","ij","ret","dual","arity","body","isDataFirst","args","self","none","some","isLeft","ma","left","right","_.none","_.some","isNone","fa","matchW","onNone","onSome","match","_.left","_.right","flatMap","f","map","bimap","mapLeft","_.isLeft","onLeft","onRight","foldW","fold","tryCatch","onThrow","chainW","chain","E.right","E.left","E.isLeft","mapBoth","E.bimap","E.match","_map","_apPar","fab","ap","of","URI","Functor","Pointed","Monad","__awaiter","thisArg","_arguments","generator","adopt","resolve","reject","fulfilled","step","rejected","result","__generator","_","verb","op","ET.left","T.Pointed","ET.right","fromEither","T.of","ET.match","T.Functor","onRejected","reason_1","ET.mapBoth","ET.flatMap","T.Monad","f.pipe","i.match","u.match","i.tryCatch","u.right","u.left","i.chainW","i.left","i.right","i.fromEither","i.matchW","MethodUnsupportedError","errorClass","method","version","MethodParameterUnsupportedError","param","LaunchParamsRetrieveError","errorClassWithData","errors","source","error","InvalidLaunchParamsError","launchParams","cause","UnknownEnvError","InvokeCustomMethodFailedError","N","B","U","V","W","Q","et","s.tryCatch","at","X","it","SESSION_STORAGE_KEY","retrieveLpFromUrl","urlString","retrieveLaunchParamsFp","fn.pipe","retrieveRawLaunchParamsFp","E.chainW","parseLaunchParamsQueryFp","retrieveLaunchParams","throwifyFpFn","retrieveRawInitDataFp","E.map","raw","O.some","O.none","retrieveRawInitData","E.fold","err","O.match","retrieve","navigationEntry","getStorageValue","maybeError","E.foldW","setStorageValue","retrieveRawLaunchParams","mitt","createEmitter","onFirst","onEmpty","eventToHandlersMap","emitter","off","event","handler","once","handlersMap","handlers","index","prevSize","cleanup","internalHandler","emitEvent","eventType","eventData","_debug","signal","_targetOrigin","onEventReceived","logger","debug","computed","setDebug","on","targetOrigin","setTargetOrigin","origin","postMessageImpl","createLogger","resetGlobals","offAll","defineFnComposer","obj","propertyName","initialFn","assignedFunctions","property","callAssignedFunctions","fn","unwrappableCallAssignedFunctions","poolSize","defineStaticProperty","defineProxiedProperty","defineMergeableProperty","prop","objKey","objValue","get","set","transformers","themeParams","windowMessageListener","message","pipeJsonToSchema","miniAppsMessage","data","emit","wnd","path","cursor","receiveEventOwner","receiveEvent","postMessage","postEvent","fpFn.pipe","postEventFp","E.mapLeft","request2Fp","eventOrEvents","capture","addCleanup","createCbCollector","payload","isEventsArray","withCleanup","TE.chainW","BetterTaskEither","listener","unsub","TE.mapBoth","request2","throwifyAnyEither","isTMA","monad","isTMAFp","BetterPromise","hasProxy","TE.right","timeout","TE.match","TimeoutError","mockTelegramEnv","onEvent","resetPostMessage","launchParamsQuery","serializeLaunchParamsQuery","parseLaunchParamsQuery","original","next","proxy","postEventDefaulted","captureSameReq","reqId","req_id","releases","getReleaseVersion","parts","compareVersions","aParts","bParts","len","aVal","bVal","supports","paramOrVersion","inVersion","createPostEvent","onUnsupportedOrMode","onUnsupported","params","invokeCustomMethodFp","requestId","TE.chain","TE.left","invokeCustomMethod","requestFp","request","applyPolyfills","decodeBase64UrlFp","E.tryCatch","decodeBase64Url","encodeBase64Url","p1","createStartParamFp","b64","createStartParam","decodeStartParam","arg2","decodeStartParamFp","E.chain","decoded","J.parse","isSafeToCreateStartParam"],"mappings":"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","x_google_ignoreList":[0,3,4,5,6,7,8,9,10,11,13,18]}
|
|
1
|
+
{"version":3,"file":"index.iife.js","sources":["../../../node_modules/.pnpm/error-kid@3.1.0/node_modules/error-kid/dist/index.js","../src/errors.ts","../../../node_modules/.pnpm/valibot@1.5.0_typescript@6.0.3/node_modules/valibot/dist/index.mjs","../src/result.ts","../src/theme-params.ts","../src/launch-params.ts","../src/logger.ts","../src/window-hooks.ts","../src/events.ts","../src/post-event.ts","../src/request.ts","../src/env.ts","../src/invokeCustomMethod.ts","../src/mockTelegramEnv.ts","../src/start-param.ts","../src/versions.ts"],"sourcesContent":["var f = Object.defineProperty;\nvar l = (e, r, t) => r in e ? f(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;\nvar u = (e, r, t) => l(e, typeof r != \"symbol\" ? r + \"\" : r, t);\nconst c = \"$$errorKidTag\";\nfunction m(e) {\n return `${c}:${e}`;\n}\nfunction b(e, r) {\n Object.defineProperty(e, c, {\n value: r,\n // Enumerable, so the tag is included into JSON.stringify and structuredClone output and the\n // \"is\" predicate keeps working for a revived error.\n enumerable: !0,\n // A class created by errorClassWithData assigns its tag on top of the one assigned by its\n // errorClass base, so the property must stay redefinable.\n writable: !1,\n configurable: !1\n });\n}\nfunction d(e, r) {\n return typeof e == \"object\" && e !== null && e[c] === r;\n}\nfunction h(e) {\n const r = m(e.name);\n class t extends Error {\n constructor(...a) {\n var s;\n super(\n typeof e.message == \"function\" ? e.message(...a) : e.message,\n { cause: (s = e.cause) == null ? void 0 : s.call(e, ...a) }\n ), this.name = e.name, b(this, r), Object.setPrototypeOf(this, new.target.prototype);\n }\n }\n return u(t, \"is\", (a) => d(a, r)), Object.defineProperty(t, \"name\", {\n value: e.name,\n configurable: !0,\n writable: !1,\n enumerable: !0\n }), t;\n}\nfunction o(e) {\n class r extends h(e) {\n constructor(...a) {\n super(...a);\n u(this, \"data\");\n this.data = e.data(...a);\n }\n }\n return Object.defineProperty(r, \"name\", {\n value: e.name,\n configurable: !0,\n writable: !1,\n enumerable: !0\n }), r;\n}\nfunction g(e, r, t) {\n const n = r;\n if (typeof e == \"object\" && e !== null && c in e) {\n const a = n[e.name];\n if (a)\n return a(e);\n }\n if (t != null && t.loose)\n return n.default(e);\n throw new TypeError(\"matchError: no handler matched the passed value\");\n}\nexport {\n h as errorClass,\n o as errorClassWithData,\n g as matchError\n};\n//# sourceMappingURL=index.js.map\n","import { errorClass, errorClassWithData } from 'error-kid';\n\nimport type { Version } from './types/index.js';\n\n/**\n * Thrown when the current environment provides no known way to communicate with the Telegram\n * client. Usually, it means the app was opened outside Telegram.\n */\nexport class UnknownEnvError extends /* @__PURE__ */ errorClass({\n name: 'UnknownEnvError',\n message: 'Unable to determine the way to communicate with the Telegram client',\n}) {\n}\n\n/**\n * Thrown when a method is not supported in the current Mini Apps version.\n */\nexport class MethodUnsupportedError extends /* @__PURE__ */ errorClassWithData({\n name: 'MethodUnsupportedError',\n data: (method: string, version: Version) => ({ method, version }),\n message: (method: string, version: Version) => {\n return `Method \"${method}\" is unsupported in Mini Apps version ${version}`;\n },\n}) {\n}\n\n/**\n * Thrown when a method parameter is not supported in the current Mini Apps version.\n */\nexport class MethodParameterUnsupportedError extends /* @__PURE__ */ errorClassWithData({\n name: 'MethodParameterUnsupportedError',\n data: (method: string, param: string, version: Version) => ({ method, param, version }),\n message: (method: string, param: string, version: Version) => {\n return `Parameter \"${param}\" of \"${method}\" method is unsupported in Mini Apps version ${version}`;\n },\n}) {\n}\n\n/**\n * Thrown when launch parameters can't be found in any known source.\n */\nexport class LaunchParamsRetrieveError extends /* @__PURE__ */ errorClassWithData({\n name: 'LaunchParamsRetrieveError',\n data: (errors: { source: string; error: unknown }[]) => ({ errors }),\n message: (errors: { source: string; error: unknown }[]) => [\n 'Unable to retrieve launch parameters from any known source. Perhaps, you have opened your app outside Telegram?',\n '',\n 'Collected errors:',\n ...errors.map(({ source, error }) => {\n return `- ${source}: ${error instanceof Error ? error.message : String(error)}`;\n }),\n ].join('\\n'),\n}) {\n}\n\n/**\n * Thrown when a value doesn't represent valid launch parameters.\n */\nexport class InvalidLaunchParamsError extends /* @__PURE__ */ errorClassWithData({\n name: 'InvalidLaunchParamsError',\n message: (value: string) => `Invalid launch parameters: ${value}`,\n cause: (_value: string, cause?: unknown) => cause,\n data: (value: string) => ({ value }),\n}) {\n}\n\n/**\n * Thrown when a custom method invocation completed with an error.\n */\nexport class InvokeCustomMethodFailedError extends /* @__PURE__ */ errorClassWithData({\n name: 'InvokeCustomMethodFailedError',\n data: (error: string) => ({ error }),\n message: (error: string) => `Custom method invocation failed: ${error}`,\n}) {\n}\n\n/**\n * Thrown when an operation didn't complete in time.\n */\nexport class TimeoutError extends /* @__PURE__ */ errorClassWithData({\n name: 'TimeoutError',\n data: (timeout: number) => ({ timeout }),\n message: (timeout: number) => `Timeout reached: ${timeout}ms`,\n}) {\n}\n\n/**\n * Thrown when a value is too long to be used as a start parameter.\n */\nexport class StartParamTooLongError extends /* @__PURE__ */ errorClassWithData({\n name: 'StartParamTooLongError',\n data: (length: number) => ({ length }),\n message: (length: number) => {\n return `Encoded start parameter length is ${length}, but the maximum allowed is 512`;\n },\n}) {\n}\n","//#region src/storages/globalConfig/globalConfig.ts\nlet store$4;\nconst DEFAULT_CONFIG = {\n\tlang: void 0,\n\tmessage: void 0,\n\tabortEarly: void 0,\n\tabortPipeEarly: void 0\n};\n/**\n* Sets the global configuration.\n*\n* @param config The configuration.\n*/\nfunction setGlobalConfig(config$1) {\n\tstore$4 = {\n\t\t...store$4,\n\t\t...config$1\n\t};\n}\n/**\n* Returns the global configuration.\n*\n* @param config The config to merge.\n*\n* @returns The configuration.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalConfig(config$1) {\n\tif (!config$1 && !store$4) return DEFAULT_CONFIG;\n\treturn {\n\t\tlang: config$1?.lang ?? store$4?.lang,\n\t\tmessage: config$1?.message,\n\t\tabortEarly: config$1?.abortEarly ?? store$4?.abortEarly,\n\t\tabortPipeEarly: config$1?.abortPipeEarly ?? store$4?.abortPipeEarly\n\t};\n}\n/**\n* Deletes the global configuration.\n*/\nfunction deleteGlobalConfig() {\n\tstore$4 = void 0;\n}\n\n//#endregion\n//#region src/storages/globalMessage/globalMessage.ts\nlet store$3;\n/**\n* Sets a global error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setGlobalMessage(message$1, lang) {\n\tif (!store$3) store$3 = /* @__PURE__ */ new Map();\n\tstore$3.set(lang, message$1);\n}\n/**\n* Returns a global error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getGlobalMessage(lang) {\n\treturn store$3?.get(lang);\n}\n/**\n* Deletes a global error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteGlobalMessage(lang) {\n\tstore$3?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/schemaMessage/schemaMessage.ts\nlet store$2;\n/**\n* Sets a schema error message.\n*\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSchemaMessage(message$1, lang) {\n\tif (!store$2) store$2 = /* @__PURE__ */ new Map();\n\tstore$2.set(lang, message$1);\n}\n/**\n* Returns a schema error message.\n*\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSchemaMessage(lang) {\n\treturn store$2?.get(lang);\n}\n/**\n* Deletes a schema error message.\n*\n* @param lang The language of the message.\n*/\nfunction deleteSchemaMessage(lang) {\n\tstore$2?.delete(lang);\n}\n\n//#endregion\n//#region src/storages/specificMessage/specificMessage.ts\nlet store$1;\n/**\n* Sets a specific error message.\n*\n* @param reference The identifier reference.\n* @param message The error message.\n* @param lang The language of the message.\n*/\nfunction setSpecificMessage(reference, message$1, lang) {\n\tif (!store$1) store$1 = /* @__PURE__ */ new Map();\n\tif (!store$1.get(reference)) store$1.set(reference, /* @__PURE__ */ new Map());\n\tstore$1.get(reference).set(lang, message$1);\n}\n/**\n* Returns a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*\n* @returns The error message.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getSpecificMessage(reference, lang) {\n\treturn store$1?.get(reference)?.get(lang);\n}\n/**\n* Deletes a specific error message.\n*\n* @param reference The identifier reference.\n* @param lang The language of the message.\n*/\nfunction deleteSpecificMessage(reference, lang) {\n\tstore$1?.get(reference)?.delete(lang);\n}\n\n//#endregion\n//#region src/utils/_stringify/_stringify.ts\n/**\n* Stringifies an unknown input to a literal or type string.\n*\n* @param input The unknown input.\n*\n* @returns A literal or type string.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _stringify(input) {\n\tconst type = typeof input;\n\tif (type === \"string\") return `\"${input}\"`;\n\tif (type === \"number\" || type === \"bigint\" || type === \"boolean\") return `${input}`;\n\tif (type === \"object\" || type === \"function\") return (input && Object.getPrototypeOf(input)?.constructor?.name) ?? \"null\";\n\treturn type;\n}\n\n//#endregion\n//#region src/utils/_addIssue/_addIssue.ts\n/**\n* Adds an issue to the dataset.\n*\n* @param context The issue context.\n* @param label The issue label.\n* @param dataset The input dataset.\n* @param config The configuration.\n* @param other The optional props.\n*\n* @internal\n*/\nfunction _addIssue(context, label, dataset, config$1, other) {\n\tconst input = other && \"input\" in other ? other.input : dataset.value;\n\tconst expected = other?.expected ?? context.expects ?? null;\n\tconst received = other?.received ?? /* @__PURE__ */ _stringify(input);\n\tconst issue = {\n\t\tkind: context.kind,\n\t\ttype: context.type,\n\t\tinput,\n\t\texpected,\n\t\treceived,\n\t\tmessage: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : \"R\"}eceived ${received}`,\n\t\trequirement: context.requirement,\n\t\tpath: other?.path,\n\t\tissues: other?.issues,\n\t\tlang: config$1.lang,\n\t\tabortEarly: config$1.abortEarly,\n\t\tabortPipeEarly: config$1.abortPipeEarly\n\t};\n\tconst isSchema = context.kind === \"schema\";\n\tconst message$1 = other?.message ?? context.message ?? /* @__PURE__ */ getSpecificMessage(context.reference, issue.lang) ?? (isSchema ? /* @__PURE__ */ getSchemaMessage(issue.lang) : null) ?? config$1.message ?? /* @__PURE__ */ getGlobalMessage(issue.lang);\n\tif (message$1 !== void 0) issue.message = typeof message$1 === \"function\" ? message$1(issue) : message$1;\n\tif (isSchema) dataset.typed = false;\n\tif (dataset.issues) dataset.issues.push(issue);\n\telse dataset.issues = [issue];\n}\n\n//#endregion\n//#region src/utils/_cloneDataset/_cloneDataset.ts\n/**\n* Creates a shallow copy of a dataset.\n*\n* Hint: The `value` is copied by reference, but the `issues` array, its issues\n* and their `path` arrays are cloned to avoid reusing mutable dataset state\n* across multiple runs. Mutating a returned object or array value can\n* therefore affect later cache hits that reuse the same cached output.\n*\n* @param dataset The output dataset.\n*\n* @returns The copied output dataset.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _cloneDataset(dataset) {\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tvalue: dataset.value,\n\t\tissues: dataset.issues?.map((issue) => ({\n\t\t\t...issue,\n\t\t\tpath: issue.path && [...issue.path]\n\t\t}))\n\t};\n}\n\n//#endregion\n//#region src/utils/_formatCase/_formatCase.ts\n/**\n* Splits a string into lowercase words and rejoins them with the given\n* separator and capitalization rules.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries. Whether the first or subsequent words are\n* capitalized is controlled by `capFirst` and `capRest`.\n*\n* Hint: Implemented in a single pass that emits directly to the result\n* string to avoid an intermediate `string[]` allocation. ASCII chars are\n* classified via char codes to skip `.toLowerCase()` and `.toUpperCase()`\n* method calls in the common case.\n*\n* Hint: Digits are treated as a separate character class, so `item2Name`\n* yields `item2` and `name` rather than `item`, `2` and `name`.\n*\n* @param input The input string.\n* @param separator The string inserted between words.\n* @param capFirst Whether to capitalize the first word.\n* @param capRest Whether to capitalize subsequent words.\n*\n* @returns The formatted string.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _formatCase(input, separator, capFirst, capRest) {\n\tlet result = \"\";\n\tlet firstWord = true;\n\tlet start = 0;\n\tlet prev = 0;\n\tlet prevPrev = 0;\n\tconst flush = (end) => {\n\t\tif (end > start) {\n\t\t\tlet word = input.slice(start, end).toLowerCase();\n\t\t\tif (firstWord ? capFirst : capRest) {\n\t\t\t\tconst firstCode = word.charCodeAt(0);\n\t\t\t\tif (firstCode >= 97 && firstCode <= 122) word = String.fromCharCode(firstCode - 32) + word.slice(1);\n\t\t\t\telse {\n\t\t\t\t\tconst charLen = firstCode >= 55296 && firstCode <= 56319 ? 2 : 1;\n\t\t\t\t\tword = word.slice(0, charLen).toUpperCase() + word.slice(charLen);\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult += firstWord ? word : separator + word;\n\t\t\tfirstWord = false;\n\t\t}\n\t};\n\tfor (let index = 0; index < input.length; index++) {\n\t\tconst code = input.charCodeAt(index);\n\t\tlet type;\n\t\tif (code === 32 || code === 9 || code === 10 || code === 11 || code === 12 || code === 13 || code === 45 || code === 95) {\n\t\t\tflush(index);\n\t\t\tstart = index + 1;\n\t\t\ttype = 0;\n\t\t} else if (code < 128) type = code >= 65 && code <= 90 ? 1 : code >= 97 && code <= 122 ? 2 : 3;\n\t\telse {\n\t\t\tconst char = input[index];\n\t\t\tconst charLower = char.toLowerCase();\n\t\t\ttype = charLower === char.toUpperCase() ? 3 : char === charLower ? 2 : 1;\n\t\t}\n\t\tif (type === 1 && (prev === 2 || prev === 3) && index > start) {\n\t\t\tflush(index);\n\t\t\tstart = index;\n\t\t} else if (type === 2 && prev === 1 && prevPrev === 1 && index - 1 > start) {\n\t\t\tflush(index - 1);\n\t\t\tstart = index - 1;\n\t\t}\n\t\tprevPrev = prev;\n\t\tprev = type;\n\t}\n\tflush(input.length);\n\treturn result;\n}\n\n//#endregion\n//#region src/utils/_getByteCount/_getByteCount.ts\nlet textEncoder;\n/**\n* Returns the byte count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The byte count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getByteCount(input) {\n\tif (!textEncoder) textEncoder = new TextEncoder();\n\treturn textEncoder.encode(input).length;\n}\n\n//#endregion\n//#region src/utils/_getCodePointCount/_getCodePointCount.ts\n/**\n* Returns the code point count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The code point count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getCodePointCount(input) {\n\tlet count = input.length;\n\tconst lengthMinus1 = input.length - 1;\n\tfor (let i = 0; i < lengthMinus1;) if (input.codePointAt(i) <= 65535) i++;\n\telse {\n\t\ti += 2;\n\t\tcount--;\n\t}\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_getGraphemeCount/_getGraphemeCount.ts\nlet segmenter;\n/**\n* Returns the grapheme count of the input.\n*\n* @param input The input to be measured.\n*\n* @returns The grapheme count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getGraphemeCount(input) {\n\tif (!segmenter) segmenter = new Intl.Segmenter();\n\tconst segments = segmenter.segment(input);\n\tlet count = 0;\n\tfor (const _ of segments) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_getLastMetadata/_getLastMetadata.ts\n/**\n* Returns the last top-level value of a given metadata type from a schema\n* using a breadth-first search that starts with the last item in the pipeline.\n*\n* @param schema The schema to search.\n* @param type The metadata type.\n*\n* @returns The value, if any.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getLastMetadata(schema, type) {\n\tif (\"pipe\" in schema) {\n\t\tconst nestedSchemas = [];\n\t\tfor (let index = schema.pipe.length - 1; index >= 0; index--) {\n\t\t\tconst item = schema.pipe[index];\n\t\t\tif (item.kind === \"schema\" && \"pipe\" in item) nestedSchemas.push(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === type) return item[type];\n\t\t}\n\t\tfor (const nestedSchema of nestedSchemas) {\n\t\t\tconst result = /* @__PURE__ */ _getLastMetadata(nestedSchema, type);\n\t\t\tif (result !== void 0) return result;\n\t\t}\n\t}\n}\n\n//#endregion\n//#region src/utils/_getWordCount/_getWordCount.ts\nlet store;\n/**\n* Returns the word count of the input.\n*\n* @param locales The locales to be used.\n* @param input The input to be measured.\n*\n* @returns The word count.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _getWordCount(locales, input) {\n\tif (!store) store = /* @__PURE__ */ new Map();\n\tconst key = String(locales);\n\tlet segmenter$1 = store.get(key);\n\tif (!segmenter$1) {\n\t\tsegmenter$1 = new Intl.Segmenter(locales, { granularity: \"word\" });\n\t\tstore.set(key, segmenter$1);\n\t}\n\tconst segments = segmenter$1.segment(input);\n\tlet count = 0;\n\tfor (const segment of segments) if (segment.isWordLike) count++;\n\treturn count;\n}\n\n//#endregion\n//#region src/utils/_isLuhnAlgo/_isLuhnAlgo.ts\n/**\n* Non-digit regex.\n*/\nconst NON_DIGIT_REGEX = /\\D/gu;\n/**\n* Checks whether a string with numbers corresponds to the luhn algorithm.\n*\n* @param input The input to be checked.\n*\n* @returns Whether input is valid.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isLuhnAlgo(input) {\n\tconst number$1 = input.replace(NON_DIGIT_REGEX, \"\");\n\tlet length$1 = number$1.length;\n\tlet bit = 1;\n\tlet sum = 0;\n\twhile (length$1) {\n\t\tconst value$1 = +number$1[--length$1];\n\t\tbit ^= 1;\n\t\tsum += bit ? [\n\t\t\t0,\n\t\t\t2,\n\t\t\t4,\n\t\t\t6,\n\t\t\t8,\n\t\t\t1,\n\t\t\t3,\n\t\t\t5,\n\t\t\t7,\n\t\t\t9\n\t\t][value$1] : value$1;\n\t}\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/utils/_isSameValueZero/_isSameValueZero.ts\n/**\n* Compares two values using the SameValueZero algorithm, which treats `NaN`\n* as equal to itself unlike `===`.\n*\n* @param value1 The first value.\n* @param value2 The second value.\n*\n* @returns Whether the values are equal.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isSameValueZero(value1, value2) {\n\treturn value1 === value2 || Number.isNaN(value1) && Number.isNaN(value2);\n}\n\n//#endregion\n//#region src/utils/_isValidObjectKey/_isValidObjectKey.ts\n/**\n* Disallows inherited object properties and prevents object prototype\n* pollution by disallowing certain keys.\n*\n* @param object The object to check.\n* @param key The key to check.\n*\n* @returns Whether the key is allowed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isValidObjectKey(object$1, key) {\n\treturn Object.prototype.hasOwnProperty.call(object$1, key) && key !== \"__proto__\" && key !== \"prototype\" && key !== \"constructor\";\n}\n\n//#endregion\n//#region src/utils/_isValueMatch/_isValueMatch.ts\n/**\n* Checks whether a value matches a value action requirement.\n*\n* @param requirement The value action requirement.\n* @param value The value to check.\n*\n* @returns Whether the value matches the requirement.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isValueMatch(requirement, value$1) {\n\treturn Number.isNaN(requirement) && Number.isNaN(value$1) || requirement <= value$1 && requirement >= value$1;\n}\n\n//#endregion\n//#region src/utils/_joinExpects/_joinExpects.ts\n/**\n* Joins multiple `expects` values with the given separator.\n*\n* @param values The `expects` values.\n* @param separator The separator.\n*\n* @returns The joined `expects` property.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _joinExpects(values$1, separator) {\n\tconst list = [...new Set(values$1)];\n\tif (list.length > 1) return `(${list.join(` ${separator} `)})`;\n\treturn list[0] ?? \"never\";\n}\n\n//#endregion\n//#region src/utils/_standardSchema/_standardSchema.ts\n/**\n* Eagerly creates and attaches the Standard Schema properties of a schema.\n*\n* Hint: The contextual `this` type includes the standard properties that are\n* attached before the schema is returned.\n*\n* @param schema The schema to attach standard properties to.\n*\n* @returns The schema with standard properties attached.\n*\n* @internal\n*/\nfunction _standardSchema(schema) {\n\tschema[\"~standard\"] = {\n\t\tversion: 1,\n\t\tvendor: \"valibot\",\n\t\tvalidate: (value$1) => schema[\"~run\"]({ value: value$1 }, /* @__PURE__ */ getGlobalConfig())\n\t};\n\treturn schema;\n}\n\n//#endregion\n//#region src/utils/entriesFromList/entriesFromList.ts\n/**\n* Creates an object entries definition from a list of keys and a schema.\n*\n* @param list A list of keys.\n* @param schema The schema of the keys.\n*\n* @returns The object entries.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromList(list, schema) {\n\tconst entries$1 = {};\n\tfor (const key of list) entries$1[key] = schema;\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/entriesFromObjects/entriesFromObjects.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entriesFromObjects(schemas) {\n\tconst entries$1 = {};\n\tfor (const schema of schemas) Object.assign(entries$1, schema.entries);\n\treturn entries$1;\n}\n\n//#endregion\n//#region src/utils/getDotPath/getDotPath.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDotPath(issue) {\n\tif (issue.path) {\n\t\tlet key = \"\";\n\t\tfor (const item of issue.path) if (typeof item.key === \"string\" || typeof item.key === \"number\") if (key) key += `.${item.key}`;\n\t\telse key += item.key;\n\t\telse return null;\n\t\treturn key;\n\t}\n\treturn null;\n}\n\n//#endregion\n//#region src/utils/isOfKind/isOfKind.ts\n/**\n* A generic type guard to check the kind of an object.\n*\n* @param kind The kind to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfKind(kind, object$1) {\n\treturn object$1.kind === kind;\n}\n\n//#endregion\n//#region src/utils/isOfType/isOfType.ts\n/**\n* A generic type guard to check the type of an object.\n*\n* @param type The type to check for.\n* @param object The object to check.\n*\n* @returns Whether it matches.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isOfType(type, object$1) {\n\treturn object$1.type === type;\n}\n\n//#endregion\n//#region src/utils/ValiError/ValiError.ts\n/**\n* A Valibot error with useful information.\n*/\nvar ValiError = class extends Error {\n\t/**\n\t* Creates a Valibot error with useful information.\n\t*\n\t* @param issues The error issues.\n\t*/\n\tconstructor(issues) {\n\t\tsuper(issues[0].message);\n\t\tthis.name = \"ValiError\";\n\t\tthis.issues = issues;\n\t}\n};\n\n//#endregion\n//#region src/utils/isValiError/isValiError.ts\n/**\n* A type guard to check if an error is a ValiError.\n*\n* @param error The error to check.\n*\n* @returns Whether its a ValiError.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction isValiError(error) {\n\treturn error instanceof ValiError;\n}\n\n//#endregion\n//#region src/actions/args/args.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction args(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: args,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst argsDataset = this.schema[\"~run\"]({ value: args_ }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/args/argsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction argsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"args\",\n\t\treference: argsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args$1) => {\n\t\t\t\tconst argsDataset = await schema[\"~run\"]({ value: args$1 }, config$1);\n\t\t\t\tif (argsDataset.issues) throw new ValiError(argsDataset.issues);\n\t\t\t\treturn func(...argsDataset.value);\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/await/awaitAsync.ts\n/**\n* Creates an await transformation action.\n*\n* @returns An await action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction awaitAsync() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"await\",\n\t\treference: awaitAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/regex.ts\n/**\n* [Base64](https://en.wikipedia.org/wiki/Base64) regex.\n*/\nconst BASE64_REGEX = /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\n/**\n* [BIC](https://en.wikipedia.org/wiki/ISO_9362) regex.\n*/\nconst BIC_REGEX = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\n/**\n* [Cuid2](https://github.com/paralleldrive/cuid2) regex.\n*/\nconst CUID2_REGEX = /^[a-z][\\da-z]*$/u;\n/**\n* [Decimal](https://en.wikipedia.org/wiki/Decimal) regex.\n*/\nconst DECIMAL_REGEX = /^[+-]?(?:\\d*\\.)?\\d+$/u;\n/**\n* [Digits](https://en.wikipedia.org/wiki/Numerical_digit) regex.\n*/\nconst DIGITS_REGEX = /^\\d+$/u;\n/**\n* [Domain name](https://en.wikipedia.org/wiki/Domain_name) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n* ASCII-only validation. Internationalized domain names (IDNs) are not\n* supported, including Punycode-encoded labels.\n*/\nconst DOMAIN_REGEX = /^(?=.{1,253}$)(?:(?![Xx][Nn]--)[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)+[A-Za-z]{2,63}$/u;\n/**\n* [Email address](https://en.wikipedia.org/wiki/Email_address) regex.\n*\n* Hint: We decided against the `i` flag to avoid matching non-ASCII characters.\n*/\nconst EMAIL_REGEX = /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-zA-Z]+(?:[.-][\\da-zA-Z]+)*\\.[a-zA-Z]{2,}$/u;\n/**\n* Emoji regex from [emoji-regex-xs](https://github.com/slevithan/emoji-regex-xs) v1.0.0 (MIT license).\n*\n* Hint: We decided against the newer `/^\\p{RGI_Emoji}+$/v` regex because it is\n* not supported in older runtimes and does not match all emoji.\n*/\nconst EMOJI_REGEX = /^(?:[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|(?![\\p{Emoji_Modifier_Base}\\u{1F1E6}-\\u{1F1FF}])\\p{Emoji_Presentation}))*)+$/u;\n/**\n* [Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEXADECIMAL_REGEX = /^(?:0[hx])?[\\da-fA-F]+$/u;\n/**\n* [Hex color](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst HEX_COLOR_REGEX = /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\n/**\n* [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) regex.\n*/\nconst IMEI_REGEX = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\n/**\n* [IPv4](https://en.wikipedia.org/wiki/IPv4) regex.\n*/\nconst IPV4_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$/u;\n/**\n* [IPv6](https://en.wikipedia.org/wiki/IPv6) regex.\n*/\nconst IPV6_REGEX = /^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [IP](https://en.wikipedia.org/wiki/IP_address) regex.\n*/\nconst IP_REGEX = /^(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])(?:\\.(?:(?:[1-9]|1\\d|2[0-4])?\\d|25[0-5])){3}$|^(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:|(?:[\\da-f]{1,4}:){1,6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,5}(?::[\\da-f]{1,4}){1,2}|(?:[\\da-f]{1,4}:){1,4}(?::[\\da-f]{1,4}){1,3}|(?:[\\da-f]{1,4}:){1,3}(?::[\\da-f]{1,4}){1,4}|(?:[\\da-f]{1,4}:){1,2}(?::[\\da-f]{1,4}){1,5}|[\\da-f]{1,4}:(?::[\\da-f]{1,4}){1,6}|:(?:(?::[\\da-f]{1,4}){1,7}|:)|fe80:(?::[\\da-f]{0,4}){0,4}%[\\da-z]+|::(?:f{4}(?::0{1,4})?:)?(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)|(?:[\\da-f]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d)\\.){3}(?:25[0-5]|(?:2[0-4]|1?\\d)?\\d))$/iu;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date regex.\n*/\nconst ISO_DATE_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time regex.\n*/\nconst ISO_DATE_TIME_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time with seconds regex.\n*/\nconst ISO_DATE_TIME_SECOND_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time regex.\n*/\nconst ISO_TIME_REGEX = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time with seconds regex.\n*/\nconst ISO_TIME_SECOND_REGEX = /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp regex. Allows a\n* space as a date/time separator and an optional space before the UTC offset.\n*/\nconst ISO_TIMESTAMP_REGEX = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])[T ](?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}(?:\\.\\d{1,9})?(?:Z| ?[+-](?:0\\d|1\\d|2[0-3])(?::?[0-5]\\d)?)$/u;\n/**\n* [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week regex.\n*/\nconst ISO_WEEK_REGEX = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\n/**\n* [JWS compact serialization](https://datatracker.ietf.org/doc/html/rfc7515#section-3.1)\n* regex.\n*\n* Hint: Empty payload and signature segments are allowed because the\n* Base64URL-encoded representation of an empty octet sequence is an empty\n* string.\n*/\nconst JWS_COMPACT_REGEX = /^(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)\\.(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)?\\.(?:[\\w-]{2,3}|(?:[\\w-]{4})+(?:[\\w-]{2,3})?)?$/u;\n/**\n* [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code) regex.\n*/\nconst ISRC_REGEX = /^(?:[A-Z]{2}[A-Z\\d]{3}\\d{7}|[A-Z]{2}-[A-Z\\d]{3}-\\d{2}-\\d{5})$/u;\n/**\n* [KSUID](https://github.com/segmentio/ksuid) regex.\n*/\nconst KSUID_REGEX = /^[a-zA-Z0-9]{27}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 48 bit regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC48_REGEX = /^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){2}[\\da-fA-F]{4}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) 64 bit regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC64_REGEX = /^(?:[\\da-fA-F]{2}:){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){3}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{4}:){3}[\\da-fA-F]{4}$/u;\n/**\n* [MAC](https://en.wikipedia.org/wiki/MAC_address) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n*/\nconst MAC_REGEX = /^(?:[\\da-fA-F]{2}:){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){5}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){2}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{2}:){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{2}-){7}[\\da-fA-F]{2}$|^(?:[\\da-fA-F]{4}\\.){3}[\\da-fA-F]{4}$|^(?:[\\da-fA-F]{4}:){3}[\\da-fA-F]{4}$/u;\n/**\n* [Nano ID](https://github.com/ai/nanoid) regex.\n*/\nconst NANO_ID_REGEX = /^[\\w-]+$/u;\n/**\n* [Octal](https://en.wikipedia.org/wiki/Octal) regex.\n*/\nconst OCTAL_REGEX = /^(?:0o)?[0-7]+$/u;\n/**\n* [RFC 5322 email address](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1) regex.\n*\n* Hint: This regex was taken from the [HTML Living Standard Specification](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) and does not perfectly represent RFC 5322.\n*/\nconst RFC_EMAIL_REGEX = /^[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/**\n* [Slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) regex.\n*/\nconst SLUG_REGEX = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\n/**\n* [ULID](https://github.com/ulid/spec) regex.\n*\n* Hint: We decided against the `i` flag for better JSON Schema compatibility.\n* Hint: The first character is restricted to `[0-7]` because the 48-bit\n* timestamp cannot exceed 2^48-1, making the maximum valid ULID\n* `7ZZZZZZZZZZZZZZZZZZZZZZZZZ` in Crockford's Base32 encoding.\n*/\nconst ULID_REGEX = /^[0-7][\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{25}$/u;\n/**\n* [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) regex.\n*/\nconst UUID_REGEX = /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n\n//#endregion\n//#region src/actions/base64/base64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction base64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"base64\",\n\t\treference: base64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BASE64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Base64\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bic/bic.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bic(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bic\",\n\t\treference: bic,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: BIC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"BIC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/brand/brand.ts\n/**\n* Creates a brand transformation action.\n*\n* @param name The brand name.\n*\n* @returns A brand action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction brand(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"brand\",\n\t\treference: brand,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/bytes/bytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"bytes\",\n\t\treference: bytes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 !== this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/check.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction check(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: check,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/check/checkAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check\",\n\t\treference: checkAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItems(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItems,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) for (let index = 0; index < dataset.value.length; index++) {\n\t\t\t\tconst item = dataset.value[index];\n\t\t\t\tif (!this.requirement(item, index, dataset.value)) _addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\tinput: item,\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\tvalue: item\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/checkItems/checkItemsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction checkItemsAsync(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"check_items\",\n\t\treference: checkItemsAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst requirementResults = await Promise.all(dataset.value.map(this.requirement));\n\t\t\t\tfor (let index = 0; index < dataset.value.length; index++) if (!requirementResults[index]) {\n\t\t\t\t\tconst item = dataset.value[index];\n\t\t\t\t\t_addIssue(this, \"item\", dataset, config$1, {\n\t\t\t\t\t\tinput: item,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: dataset.value,\n\t\t\t\t\t\t\tkey: index,\n\t\t\t\t\t\t\tvalue: item\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/codePoints/codePoints.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction codePoints(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"code_points\",\n\t\treference: codePoints,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getCodePointCount(dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"code points\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/creditCard/creditCard.ts\n/**\n* Credit card regex.\n*/\nconst CREDIT_CARD_REGEX = /^(?:\\d{13,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\n/**\n* Sanitize regex.\n*/\nconst SANITIZE_REGEX = /[- ]/gu;\n/**\n* Provider regex list.\n*/\nconst PROVIDER_REGEX_LIST = [\n\t/^3[47]\\d{13}$/u,\n\t/^3(?:0[0-5]|[68]\\d)\\d{11,13}$/u,\n\t/^6(?:011|5\\d{2})\\d{12,15}$/u,\n\t/^(?:2131|1800|35\\d{3})\\d{11}$/u,\n\t/^(?:5[1-5]\\d{2}|222\\d|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)\\d{12}$/u,\n\t/^(?:6[27]\\d{14,17}|81\\d{14,17})$/u,\n\t/^4\\d{12}(?:\\d{3,6})?$/u\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction creditCard(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"credit_card\",\n\t\treference: creditCard,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tlet sanitized;\n\t\t\treturn CREDIT_CARD_REGEX.test(input) && (sanitized = input.replace(SANITIZE_REGEX, \"\")) && PROVIDER_REGEX_LIST.some((regex$1) => regex$1.test(sanitized)) && /* @__PURE__ */ _isLuhnAlgo(sanitized);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"credit card\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/cuid2/cuid2.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cuid2(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"cuid2\",\n\t\treference: cuid2,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: CUID2_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Cuid2\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/decimal/decimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction decimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"decimal\",\n\t\treference: decimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"decimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/description/description.ts\n/**\n* Creates a description metadata action.\n*\n* @param description_ The description text.\n*\n* @returns A description action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction description(description_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"description\",\n\t\treference: description,\n\t\tdescription: description_\n\t};\n}\n\n//#endregion\n//#region src/actions/digits/digits.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction digits(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"digits\",\n\t\treference: digits,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: DIGITS_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"digits\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/domain/domain.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction domain(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"domain\",\n\t\treference: domain,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: DOMAIN_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"domain\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/email/email.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction email(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"email\",\n\t\treference: email,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/emoji/emoji.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction emoji(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"emoji\",\n\t\treference: emoji,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: EMOJI_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"emoji\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/empty/empty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction empty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"empty\",\n\t\treference: empty,\n\t\tasync: false,\n\t\texpects: \"0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > 0) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/endsWith/endsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction endsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ends_with\",\n\t\treference: endsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.endsWith(this.requirement)) _addIssue(this, \"end\", dataset, config$1, { received: `\"${dataset.value.slice(-this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/entries/entries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction entries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"entries\",\n\t\treference: entries,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count !== this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/everyItem/everyItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction everyItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"every_item\",\n\t\treference: everyItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.every(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/examples/examples.ts\n/**\n* Creates an examples metadata action.\n*\n* @param examples_ The examples.\n*\n* @returns An examples action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction examples(examples_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"examples\",\n\t\treference: examples,\n\t\texamples: examples_\n\t};\n}\n\n//#endregion\n//#region src/actions/excludes/excludes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction excludes(requirement, message$1) {\n\tconst received = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"excludes\",\n\t\treference: excludes,\n\t\tasync: false,\n\t\texpects: `!${received}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/filterItems/filterItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction filterItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"filter_items\",\n\t\treference: filterItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.filter(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/findItem/findItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction findItem(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"find_item\",\n\t\treference: findItem,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.find(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/finite/finite.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction finite(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"finite\",\n\t\treference: finite,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isFinite,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"finite\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/flavor/flavor.ts\n/**\n* Creates a flavor transformation action.\n*\n* @param name The flavor name.\n*\n* @returns A flavor action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction flavor(name) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"flavor\",\n\t\treference: flavor,\n\t\tasync: false,\n\t\tname,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/graphemes/graphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction graphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"graphemes\",\n\t\treference: graphemes,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/gtValue/gtValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction gtValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"gt_value\",\n\t\treference: gtValue,\n\t\tasync: false,\n\t\texpects: `>${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value > this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/guard/guard.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction guard(requirement, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"guard\",\n\t\treference: guard,\n\t\tasync: false,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) {\n\t\t\t\t_addIssue(this, \"input\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hash/hash.ts\n/**\n* Hash lengths object.\n*/\nconst HASH_LENGTHS = {\n\tmd4: 32,\n\tmd5: 32,\n\tsha1: 40,\n\tsha256: 64,\n\tsha384: 96,\n\tsha512: 128,\n\tripemd128: 32,\n\tripemd160: 40,\n\ttiger128: 32,\n\ttiger160: 40,\n\ttiger192: 48,\n\tcrc32: 8,\n\tcrc32b: 8,\n\tadler32: 8\n};\n/* @__NO_SIDE_EFFECTS__ */\nfunction hash(types, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hash\",\n\t\treference: hash,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RegExp(types.map((type) => `^[a-fA-F0-9]{${HASH_LENGTHS[type]}}$`).join(\"|\"), \"u\"),\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hash\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexadecimal/hexadecimal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexadecimal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hexadecimal\",\n\t\treference: hexadecimal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEXADECIMAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hexadecimal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/hexColor/hexColor.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction hexColor(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"hex_color\",\n\t\treference: hexColor,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: HEX_COLOR_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"hex color\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/imei/imei.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction imei(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"imei\",\n\t\treference: imei,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\treturn IMEI_REGEX.test(input) && /* @__PURE__ */ _isLuhnAlgo(input);\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"IMEI\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/includes/includes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction includes(requirement, message$1) {\n\tconst expects = /* @__PURE__ */ _stringify(requirement);\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"includes\",\n\t\treference: includes,\n\t\tasync: false,\n\t\texpects,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.includes(this.requirement)) _addIssue(this, \"content\", dataset, config$1, { received: `!${expects}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/integer/integer.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction integer(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"integer\",\n\t\treference: integer,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ip/ip.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ip(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ip\",\n\t\treference: ip,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IP\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv4/ipv4.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv4(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv4\",\n\t\treference: ipv4,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV4_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv4\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ipv6/ipv6.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ipv6(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ipv6\",\n\t\treference: ipv6,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: IPV6_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"IPv6\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isbn/utils/_isIsbn10.ts\n/**\n* [Validates an ISBN-10](https://en.wikipedia.org/wiki/ISBN#ISBN-10_check_digits).\n*\n* @param input The input value.\n*\n* @returns `true` if the input is a valid ISBN-10, `false` otherwise.\n*\n* @internal\n*/\nfunction _isIsbn10(input) {\n\tconst digits$1 = input.split(\"\").map((c) => c === \"X\" ? 10 : parseInt(c));\n\tlet sum = 0;\n\tfor (let i = 0; i < 10; i++) sum += digits$1[i] * (10 - i);\n\treturn sum % 11 === 0;\n}\n\n//#endregion\n//#region src/actions/isbn/utils/_isIsbn13.ts\n/**\n* [Validates an ISBN-13](https://en.wikipedia.org/wiki/ISBN#ISBN-13_check_digit_calculation).\n*\n* @param input The input value.\n*\n* @returns `true` if the input is a valid ISBN-13, `false` otherwise.\n*\n* @internal\n*/\nfunction _isIsbn13(input) {\n\tconst digits$1 = input.split(\"\").map((c) => parseInt(c));\n\tlet sum = 0;\n\tfor (let i = 0; i < 13; i++) sum += digits$1[i] * (i % 2 === 0 ? 1 : 3);\n\treturn sum % 10 === 0;\n}\n\n//#endregion\n//#region src/actions/isbn/isbn.ts\n/**\n* ISBN separator regex.\n*/\nconst ISBN_SEPARATOR_REGEX = /[- ]/gu;\n/**\n* ISBN-10 detection regex.\n*/\nconst ISBN_10_DETECTION_REGEX = /^\\d{9}[\\dX]$/u;\n/**\n* ISBN-13 detection regex.\n*/\nconst ISBN_13_DETECTION_REGEX = /^\\d{13}$/u;\n/* @__NO_SIDE_EFFECTS__ */\nfunction isbn(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"isbn\",\n\t\treference: isbn,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\tconst replacedInput = input.replace(ISBN_SEPARATOR_REGEX, \"\");\n\t\t\tif (ISBN_10_DETECTION_REGEX.test(replacedInput)) return _isIsbn10(replacedInput);\n\t\t\telse if (ISBN_13_DETECTION_REGEX.test(replacedInput)) return _isIsbn13(replacedInput);\n\t\t\treturn false;\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"ISBN\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isrc/isrc.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isrc(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"isrc\",\n\t\treference: isrc,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISRC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ISRC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDate/isoDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDate(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date\",\n\t\treference: isoDate,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDateTime/isoDateTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDateTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date_time\",\n\t\treference: isoDateTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date-time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoDateTimeSecond/isoDateTimeSecond.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoDateTimeSecond(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_date_time_second\",\n\t\treference: isoDateTimeSecond,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_DATE_TIME_SECOND_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"date-time-second\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTime/isoTime.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTime(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time\",\n\t\treference: isoTime,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimeSecond/isoTimeSecond.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimeSecond(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_time_second\",\n\t\treference: isoTimeSecond,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIME_SECOND_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"time-second\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoTimestamp/isoTimestamp.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoTimestamp(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_timestamp\",\n\t\treference: isoTimestamp,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_TIMESTAMP_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"timestamp\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/isoWeek/isoWeek.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction isoWeek(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"iso_week\",\n\t\treference: isoWeek,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ISO_WEEK_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"week\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/jwsCompact/jwsCompact.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction jwsCompact(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"jws_compact\",\n\t\treference: jwsCompact,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: JWS_COMPACT_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"JWS compact\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ksuid/ksuid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ksuid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ksuid\",\n\t\treference: ksuid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: KSUID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"KSUID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/length/length.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction length(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"length\",\n\t\treference: length,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length !== this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ltValue/ltValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ltValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"lt_value\",\n\t\treference: ltValue,\n\t\tasync: false,\n\t\texpects: `<${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value < this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac/mac.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac\",\n\t\treference: mac,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac48/mac48.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac48(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac48\",\n\t\treference: mac48,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC48_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"48-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mac64/mac64.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mac64(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mac64\",\n\t\treference: mac64,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: MAC64_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"64-bit MAC\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/mapItems/mapItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"map_items\",\n\t\treference: mapItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.map(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxBytes/maxBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_bytes\",\n\t\treference: maxBytes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 > this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxCodePoints/maxCodePoints.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxCodePoints(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_code_points\",\n\t\treference: maxCodePoints,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getCodePointCount(dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"code points\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxEntries/maxEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_entries\",\n\t\treference: maxEntries,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count > this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxGraphemes/maxGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_graphemes\",\n\t\treference: maxGraphemes,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxLength/maxLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_length\",\n\t\treference: maxLength,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length > this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxSize/maxSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_size\",\n\t\treference: maxSize,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size > this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxValue/maxValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_value\",\n\t\treference: maxValue,\n\t\tasync: false,\n\t\texpects: `<=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value <= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/maxWords/maxWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction maxWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"max_words\",\n\t\treference: maxWords,\n\t\tasync: false,\n\t\texpects: `<=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count > this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/metadata/metadata.ts\n/**\n* Creates a custom metadata action.\n*\n* @param metadata_ The metadata object.\n*\n* @returns A metadata action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction metadata(metadata_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"metadata\",\n\t\treference: metadata,\n\t\tmetadata: metadata_\n\t};\n}\n\n//#endregion\n//#region src/actions/mimeType/mimeType.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mimeType(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"mime_type\",\n\t\treference: mimeType,\n\t\tasync: false,\n\t\texpects: /* @__PURE__ */ _joinExpects(requirement.map((option) => `\"${option}\"`), \"|\"),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.includes(dataset.value.type)) _addIssue(this, \"MIME type\", dataset, config$1, { received: `\"${dataset.value.type}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minBytes/minBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_bytes\",\n\t\treference: minBytes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 < this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minCodePoints/minCodePoints.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minCodePoints(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_code_points\",\n\t\treference: minCodePoints,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getCodePointCount(dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"code points\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minEntries/minEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_entries\",\n\t\treference: minEntries,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count < this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minGraphemes/minGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_graphemes\",\n\t\treference: minGraphemes,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minLength/minLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_length\",\n\t\treference: minLength,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length < this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minSize/minSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_size\",\n\t\treference: minSize,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size < this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minValue/minValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_value\",\n\t\treference: minValue,\n\t\tasync: false,\n\t\texpects: `>=${requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !(dataset.value >= this.requirement)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/minWords/minWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction minWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"min_words\",\n\t\treference: minWords,\n\t\tasync: false,\n\t\texpects: `>=${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count < this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/multipleOf/multipleOf.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction multipleOf(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"multiple_of\",\n\t\treference: multipleOf,\n\t\tasync: false,\n\t\texpects: `%${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value % this.requirement != 0) _addIssue(this, \"multiple\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nanoid/nanoid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nanoid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"nanoid\",\n\t\treference: nanoid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: NANO_ID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"Nano ID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/nonEmpty/nonEmpty.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonEmpty(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"non_empty\",\n\t\treference: nonEmpty,\n\t\tasync: false,\n\t\texpects: \"!0\",\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === 0) _addIssue(this, \"length\", dataset, config$1, { received: \"0\" });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/normalize/normalize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction normalize(form) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"normalize\",\n\t\treference: normalize,\n\t\tasync: false,\n\t\tform,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.normalize(this.form);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notBytes/notBytes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notBytes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_bytes\",\n\t\treference: notBytes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst length$1 = /* @__PURE__ */ _getByteCount(dataset.value);\n\t\t\t\tif (length$1 === this.requirement) _addIssue(this, \"bytes\", dataset, config$1, { received: `${length$1}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notCodePoints/notCodePoints.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notCodePoints(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_code_points\",\n\t\treference: notCodePoints,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getCodePointCount(dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"code points\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notEntries/notEntries.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notEntries(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_entries\",\n\t\treference: notEntries,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!dataset.typed) return dataset;\n\t\t\tconst count = Object.keys(dataset.value).length;\n\t\t\tif (dataset.typed && count === this.requirement) _addIssue(this, \"entries\", dataset, config$1, { received: `${count}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notGraphemes/notGraphemes.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notGraphemes(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_graphemes\",\n\t\treference: notGraphemes,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getGraphemeCount(dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"graphemes\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notLength/notLength.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notLength(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_length\",\n\t\treference: notLength,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.length === this.requirement) _addIssue(this, \"length\", dataset, config$1, { received: `${dataset.value.length}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notSize/notSize.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notSize(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_size\",\n\t\treference: notSize,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size === this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValue/notValue.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValue(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_value\",\n\t\treference: notValue,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? `!${requirement.toJSON()}` : `!${/* @__PURE__ */ _stringify(requirement)}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && /* @__PURE__ */ _isValueMatch(this.requirement, dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notValues/notValues.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notValues(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_values\",\n\t\treference: notValues,\n\t\tasync: false,\n\t\texpects: `!${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && this.requirement.some((requirement$1) => /* @__PURE__ */ _isValueMatch(requirement$1, dataset.value))) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/notWords/notWords.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction notWords(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"not_words\",\n\t\treference: notWords,\n\t\tasync: false,\n\t\texpects: `!${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count === this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/octal/octal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction octal(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"octal\",\n\t\treference: octal,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: OCTAL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"octal\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseBoolean/parseBoolean.ts\nconst TRUTHY = [\n\ttrue,\n\t1,\n\t\"true\",\n\t\"1\",\n\t\"yes\",\n\t\"y\",\n\t\"on\",\n\t\"enabled\"\n];\nconst FALSY = [\n\tfalse,\n\t0,\n\t\"false\",\n\t\"0\",\n\t\"no\",\n\t\"n\",\n\t\"off\",\n\t\"disabled\"\n];\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseBoolean(config$1, message$1) {\n\tconst normalize$1 = (v) => typeof v === \"string\" ? v.toLowerCase() : v;\n\tconst truthyRaw = config$1?.truthy ?? TRUTHY;\n\tconst falsyRaw = config$1?.falsy ?? FALSY;\n\tconst truthy = config$1?.truthy ? config$1.truthy.map(normalize$1) : TRUTHY;\n\tconst falsy = config$1?.falsy ? config$1.falsy.map(normalize$1) : FALSY;\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_boolean\",\n\t\treference: parseBoolean,\n\t\texpects: /* @__PURE__ */ _joinExpects([...truthyRaw, ...falsyRaw].map(_stringify), \"|\"),\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\tconst input = normalize$1(dataset.value);\n\t\t\tif (truthy.includes(input)) dataset.value = true;\n\t\t\telse if (falsy.includes(input)) dataset.value = false;\n\t\t\telse {\n\t\t\t\t_addIssue(this, \"boolean\", dataset, config$2);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/parseJson/parseJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parseJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"parse_json\",\n\t\treference: parseJson,\n\t\tconfig: config$1,\n\t\tmessage: message$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tdataset.value = JSON.parse(dataset.value, this.config?.reviver);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/utils/_isPartiallyTyped/_isPartiallyTyped.ts\n/**\n* Checks if a dataset is partially typed.\n*\n* @param dataset The dataset to check.\n* @param paths The paths to check.\n*\n* @returns Whether it is partially typed.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _isPartiallyTyped(dataset, paths) {\n\tif (dataset.issues) for (const path of paths) for (const issue of dataset.issues) {\n\t\tlet typed = false;\n\t\tconst bound = Math.min(path.length, issue.path?.length ?? 0);\n\t\tfor (let index = 0; index < bound; index++) if (path[index] !== issue.path[index].key && (path[index] !== \"$\" || issue.path[index].type !== \"array\")) {\n\t\t\ttyped = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (!typed) return false;\n\t}\n\treturn true;\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheck.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheck(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/partialCheck/partialCheckAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialCheckAsync(paths, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"partial_check\",\n\t\treference: partialCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tpaths,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif ((dataset.typed || /* @__PURE__ */ _isPartiallyTyped(dataset, paths)) && !await this.requirement(dataset.value)) _addIssue(this, \"input\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheck.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheck(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheck,\n\t\tasync: false,\n\t\texpects: null,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\taction({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawCheck/rawCheckAsync.ts\n/**\n* Creates a raw check validation action.\n*\n* @param action The validation action.\n*\n* @returns A raw check action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawCheckAsync(action) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"raw_check\",\n\t\treference: rawCheckAsync,\n\t\tasync: true,\n\t\texpects: null,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tawait action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info)\n\t\t\t});\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransform.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransform(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransform,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst output = action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rawTransform/rawTransformAsync.ts\n/**\n* Creates a raw transformation action.\n*\n* @param action The transformation action.\n*\n* @returns A raw transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction rawTransformAsync(action) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"raw_transform\",\n\t\treference: rawTransformAsync,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst output = await action({\n\t\t\t\tdataset,\n\t\t\t\tconfig: config$1,\n\t\t\t\taddIssue: (info) => _addIssue(this, info?.label ?? \"input\", dataset, config$1, info),\n\t\t\t\tNEVER: null\n\t\t\t});\n\t\t\tif (dataset.issues) dataset.typed = false;\n\t\t\telse dataset.value = output;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/readonly/readonly.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction readonly() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"readonly\",\n\t\treference: readonly,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/reduceItems/reduceItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction reduceItems(operation, initial) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"reduce_items\",\n\t\treference: reduceItems,\n\t\tasync: false,\n\t\toperation,\n\t\tinitial,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.reduce(this.operation, this.initial);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/regex/regex.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction regex(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"regex\",\n\t\treference: regex,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"format\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returns.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returns(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returns,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = (...args_) => {\n\t\t\t\tconst returnsDataset = this.schema[\"~run\"]({ value: func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/returns/returnsAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction returnsAsync(schema) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"returns\",\n\t\treference: returnsAsync,\n\t\tasync: false,\n\t\tschema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst func = dataset.value;\n\t\t\tdataset.value = async (...args_) => {\n\t\t\t\tconst returnsDataset = await this.schema[\"~run\"]({ value: await func(...args_) }, config$1);\n\t\t\t\tif (returnsDataset.issues) throw new ValiError(returnsDataset.issues);\n\t\t\t\treturn returnsDataset.value;\n\t\t\t};\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/rfcEmail/rfcEmail.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction rfcEmail(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"rfc_email\",\n\t\treference: rfcEmail,\n\t\texpects: null,\n\t\tasync: false,\n\t\trequirement: RFC_EMAIL_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"email\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/safeInteger/safeInteger.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeInteger(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"safe_integer\",\n\t\treference: safeInteger,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: Number.isSafeInteger,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"safe integer\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/size/size.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction size(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"size\",\n\t\treference: size,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && dataset.value.size !== this.requirement) _addIssue(this, \"size\", dataset, config$1, { received: `${dataset.value.size}` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/slug/slug.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction slug(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"slug\",\n\t\treference: slug,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: SLUG_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"slug\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/someItem/someItem.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction someItem(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"some_item\",\n\t\treference: someItem,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.some(this.requirement)) _addIssue(this, \"item\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/sortItems/sortItems.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction sortItems(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"sort_items\",\n\t\treference: sortItems,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.sort(this.operation);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/startsWith/startsWith.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction startsWith(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"starts_with\",\n\t\treference: startsWith,\n\t\tasync: false,\n\t\texpects: `\"${requirement}\"`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !dataset.value.startsWith(this.requirement)) _addIssue(this, \"start\", dataset, config$1, { received: `\"${dataset.value.slice(0, this.requirement.length)}\"` });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/stringifyJson/stringifyJson.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction stringifyJson(config$1, message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"stringify_json\",\n\t\treference: stringifyJson,\n\t\tmessage: message$1,\n\t\tconfig: config$1,\n\t\tasync: false,\n\t\t\"~run\"(dataset, config$2) {\n\t\t\ttry {\n\t\t\t\tconst output = JSON.stringify(dataset.value, this.config?.replacer, this.config?.space);\n\t\t\t\tif (output === void 0) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else dataset.value = output;\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t_addIssue(this, \"JSON\", dataset, config$2, { received: `\"${error.message}\"` });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t} else throw error;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/title/title.ts\n/**\n* Creates a title metadata action.\n*\n* @param title_ The title text.\n*\n* @returns A title action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction title(title_) {\n\treturn {\n\t\tkind: \"metadata\",\n\t\ttype: \"title\",\n\t\treference: title,\n\t\ttitle: title_\n\t};\n}\n\n//#endregion\n//#region src/actions/toBigint/toBigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBigint(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_bigint\",\n\t\treference: toBigint,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = BigInt(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"bigint\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toBoolean/toBoolean.ts\n/**\n* Creates a to boolean transformation action.\n*\n* @returns A to boolean action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toBoolean() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_boolean\",\n\t\treference: toBoolean,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = Boolean(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toCamelCase/toCamelCase.ts\n/**\n* Creates a to camel case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `parseUrlValue`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `item2Name`).\n*\n* @returns A to camel case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toCamelCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_camel_case\",\n\t\treference: toCamelCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"\", false, true);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toDate/toDate.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toDate(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_date\",\n\t\treference: toDate,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = new Date(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"date\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"date\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toKebabCase/toKebabCase.ts\n/**\n* Creates a to kebab case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `parse-url-value`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `item2-name`).\n*\n* @returns A to kebab case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toKebabCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_kebab_case\",\n\t\treference: toKebabCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"-\", false, false);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toLowerCase/toLowerCase.ts\n/**\n* Creates a to lower case transformation action.\n*\n* @returns A to lower case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toLowerCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_lower_case\",\n\t\treference: toLowerCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toLowerCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMaxValue/toMaxValue.ts\n/**\n* Creates a to max value transformation action.\n*\n* @param requirement The maximum value.\n*\n* @returns A to max value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMaxValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_max_value\",\n\t\treference: toMaxValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value > this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toMinValue/toMinValue.ts\n/**\n* Creates a to min value transformation action.\n*\n* @param requirement The minimum value.\n*\n* @returns A to min value action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toMinValue(requirement) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_min_value\",\n\t\treference: toMinValue,\n\t\tasync: false,\n\t\trequirement,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value < this.requirement ? this.requirement : dataset.value;\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toNumber/toNumber.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toNumber(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_number\",\n\t\treference: toNumber,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = Number(dataset.value);\n\t\t\t\tif (isNaN(dataset.value)) {\n\t\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"number\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toPascalCase/toPascalCase.ts\n/**\n* Creates a to pascal case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `ParseUrlValue`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `Item2Name`).\n*\n* @returns A to pascal case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toPascalCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_pascal_case\",\n\t\treference: toPascalCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"\", true, true);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toSnakeCase/toSnakeCase.ts\n/**\n* Creates a to snake case transformation action.\n*\n* Words are separated by `_`, `-` and ASCII whitespace, as well as by case\n* and acronym boundaries.\n*\n* Hint: Acronym runs are normalized to lowercase (e.g. `parseURLValue` →\n* `parse_url_value`) and digits stay attached to the preceding token (e.g.\n* `item2Name` → `item2_name`).\n*\n* @returns A to snake case action.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toSnakeCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_snake_case\",\n\t\treference: toSnakeCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = /* @__PURE__ */ _formatCase(dataset.value, \"_\", false, false);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toString/toString.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction toString(message$1) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_string\",\n\t\treference: toString,\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\ttry {\n\t\t\t\tdataset.value = String(dataset.value);\n\t\t\t} catch {\n\t\t\t\t_addIssue(this, \"string\", dataset, config$1);\n\t\t\t\tdataset.typed = false;\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/toUpperCase/toUpperCase.ts\n/**\n* Creates a to upper case transformation action.\n*\n* @returns A to upper case action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction toUpperCase() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"to_upper_case\",\n\t\treference: toUpperCase,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.toUpperCase();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transform.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transform(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transform,\n\t\tasync: false,\n\t\toperation,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/transform/transformAsync.ts\n/**\n* Creates a custom transformation action.\n*\n* @param operation The transformation operation.\n*\n* @returns A transform action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction transformAsync(operation) {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"transform\",\n\t\treference: transformAsync,\n\t\tasync: true,\n\t\toperation,\n\t\tasync \"~run\"(dataset) {\n\t\t\tdataset.value = await this.operation(dataset.value);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trim/trim.ts\n/**\n* Creates a trim transformation action.\n*\n* @returns A trim action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trim() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim\",\n\t\treference: trim,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trim();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimEnd/trimEnd.ts\n/**\n* Creates a trim end transformation action.\n*\n* @returns A trim end action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimEnd() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_end\",\n\t\treference: trimEnd,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimEnd();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/trimStart/trimStart.ts\n/**\n* Creates a trim start transformation action.\n*\n* @returns A trim start action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction trimStart() {\n\treturn {\n\t\tkind: \"transformation\",\n\t\ttype: \"trim_start\",\n\t\treference: trimStart,\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.value = dataset.value.trimStart();\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/ulid/ulid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction ulid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"ulid\",\n\t\treference: ulid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: ULID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"ULID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/url/url.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction url(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"url\",\n\t\treference: url,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement(input) {\n\t\t\ttry {\n\t\t\t\tif (URL.canParse) return URL.canParse(input);\n\t\t\t\tnew URL(input);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement(dataset.value)) _addIssue(this, \"URL\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/uuid/uuid.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction uuid(message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"uuid\",\n\t\treference: uuid,\n\t\tasync: false,\n\t\texpects: null,\n\t\trequirement: UUID_REGEX,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.test(dataset.value)) _addIssue(this, \"UUID\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/value/value.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction value(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"value\",\n\t\treference: value,\n\t\tasync: false,\n\t\texpects: requirement instanceof Date ? requirement.toJSON() : /* @__PURE__ */ _stringify(requirement),\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !/* @__PURE__ */ _isValueMatch(this.requirement, dataset.value)) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/values/values.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction values(requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"values\",\n\t\treference: values,\n\t\tasync: false,\n\t\texpects: `${/* @__PURE__ */ _joinExpects(requirement.map((value$1) => value$1 instanceof Date ? value$1.toJSON() : /* @__PURE__ */ _stringify(value$1)), \"|\")}`,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed && !this.requirement.some((requirement$1) => /* @__PURE__ */ _isValueMatch(requirement$1, dataset.value))) _addIssue(this, \"value\", dataset, config$1, { received: dataset.value instanceof Date ? dataset.value.toJSON() : /* @__PURE__ */ _stringify(dataset.value) });\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/actions/words/words.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction words(locales, requirement, message$1) {\n\treturn {\n\t\tkind: \"validation\",\n\t\ttype: \"words\",\n\t\treference: words,\n\t\tasync: false,\n\t\texpects: `${requirement}`,\n\t\tlocales,\n\t\trequirement,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.typed) {\n\t\t\t\tconst count = /* @__PURE__ */ _getWordCount(this.locales, dataset.value);\n\t\t\t\tif (count !== this.requirement) _addIssue(this, \"words\", dataset, config$1, { received: `${count}` });\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/const.ts\nconst ABORT_EARLY_CONFIG = { abortEarly: true };\n\n//#endregion\n//#region src/methods/assert/assert.ts\n/**\n* Checks if the input matches the schema. As this is an assertion function, it\n* can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*/\nfunction assert(schema, input) {\n\tconst issues = schema[\"~run\"]({ value: input }, ABORT_EARLY_CONFIG).issues;\n\tif (issues) throw new ValiError(issues);\n}\n\n//#endregion\n//#region src/methods/cache/_LruCache.ts\n/**\n* Efficient LRU cache using Map iteration order.\n*/\nvar _LruCache = class {\n\tconstructor(config$1) {\n\t\tthis.refCount = 0;\n\t\tthis.maxSize = config$1?.maxSize ?? 1e3;\n\t\tthis.maxAge = config$1?.maxAge ?? Infinity;\n\t\tthis.hasMaxAge = isFinite(this.maxAge);\n\t}\n\t/**\n\t* Stringifies an unknown input to a cache key component.\n\t*\n\t* @param input The unknown input.\n\t*\n\t* @returns A cache key component.\n\t*/\n\tstringify(input) {\n\t\tconst type = typeof input;\n\t\tif (type === \"string\") return `\"${input}\"`;\n\t\tif (type === \"number\" || type === \"boolean\") return `${input}`;\n\t\tif (type === \"bigint\") return `${input}n`;\n\t\tif (type === \"object\" || type === \"function\") {\n\t\t\tif (input) {\n\t\t\t\tthis.refIds ?? (this.refIds = /* @__PURE__ */ new WeakMap());\n\t\t\t\tlet id = this.refIds.get(input);\n\t\t\t\tif (!id) {\n\t\t\t\t\tid = ++this.refCount;\n\t\t\t\t\tthis.refIds.set(input, id);\n\t\t\t\t}\n\t\t\t\treturn `#${id}`;\n\t\t\t}\n\t\t\treturn \"null\";\n\t\t}\n\t\treturn type;\n\t}\n\t/**\n\t* Creates a cache key from input and config.\n\t*\n\t* @param input The input value.\n\t* @param config The parse configuration.\n\t*\n\t* @returns The cache key.\n\t*/\n\tkey(input, config$1 = {}) {\n\t\treturn `${this.stringify(input)}|${this.stringify(config$1.lang)}|${this.stringify(config$1.message)}|${this.stringify(config$1.abortEarly)}|${this.stringify(config$1.abortPipeEarly)}`;\n\t}\n\t/**\n\t* Gets a value from the cache by key.\n\t*\n\t* @param key The cache key.\n\t*\n\t* @returns The cached value.\n\t*/\n\tget(key) {\n\t\tif (!this.store) return void 0;\n\t\tconst entry = this.store.get(key);\n\t\tif (!entry) return void 0;\n\t\tif (this.hasMaxAge && Date.now() - entry[1] > this.maxAge) {\n\t\t\tthis.store.delete(key);\n\t\t\treturn;\n\t\t}\n\t\tthis.store.delete(key);\n\t\tthis.store.set(key, entry);\n\t\treturn entry[0];\n\t}\n\t/**\n\t* Sets a value in the cache by key.\n\t*\n\t* @param key The cache key.\n\t* @param value The cached value.\n\t*/\n\tset(key, value$1) {\n\t\tthis.store ?? (this.store = /* @__PURE__ */ new Map());\n\t\tthis.store.delete(key);\n\t\tconst timestamp = this.hasMaxAge ? Date.now() : 0;\n\t\tthis.store.set(key, [value$1, timestamp]);\n\t\tif (this.store.size > this.maxSize) this.store.delete(this.store.keys().next().value);\n\t}\n\t/**\n\t* Clears all entries from the cache.\n\t*/\n\tclear() {\n\t\tthis.store?.clear();\n\t}\n};\n\n//#endregion\n//#region src/methods/cache/cache.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cache(schema, config$1) {\n\treturn _standardSchema({\n\t\t...schema,\n\t\tcacheConfig: config$1,\n\t\tcache: new _LruCache(config$1),\n\t\t\"~run\"(dataset, runConfig) {\n\t\t\tconst key = this.cache.key(dataset.value, runConfig);\n\t\t\tlet outputDataset = this.cache.get(key);\n\t\t\tif (!outputDataset) this.cache.set(key, outputDataset = schema[\"~run\"](dataset, runConfig));\n\t\t\treturn /* @__PURE__ */ _cloneDataset(outputDataset);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/cache/cacheAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction cacheAsync(schema, config$1) {\n\tlet activeRuns;\n\treturn _standardSchema({\n\t\t...schema,\n\t\tasync: true,\n\t\tcacheConfig: config$1,\n\t\tcache: new _LruCache(config$1),\n\t\tasync \"~run\"(dataset, runConfig) {\n\t\t\tconst key = this.cache.key(dataset.value, runConfig);\n\t\t\tconst cached = this.cache.get(key);\n\t\t\tif (cached) return /* @__PURE__ */ _cloneDataset(cached);\n\t\t\tlet promise$1 = activeRuns?.get(key);\n\t\t\tif (!promise$1) {\n\t\t\t\tactiveRuns ?? (activeRuns = /* @__PURE__ */ new Map());\n\t\t\t\tpromise$1 = Promise.resolve(schema[\"~run\"](dataset, runConfig));\n\t\t\t\tactiveRuns.set(key, promise$1);\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst outputDataset = await promise$1;\n\t\t\t\tthis.cache.set(key, outputDataset);\n\t\t\t\treturn /* @__PURE__ */ _cloneDataset(outputDataset);\n\t\t\t} finally {\n\t\t\t\tactiveRuns?.delete(key);\n\t\t\t}\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/config/config.ts\n/**\n* Changes the local configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param config The parse configuration.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction config(schema, config$1) {\n\treturn _standardSchema({\n\t\t...schema,\n\t\t\"~run\"(dataset, config_) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config_,\n\t\t\t\t...config$1\n\t\t\t});\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/getFallback/getFallback.ts\n/**\n* Returns the fallback value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The output dataset if available.\n* @param config The config if available.\n*\n* @returns The fallback value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallback(schema, dataset, config$1) {\n\treturn typeof schema.fallback === \"function\" ? schema.fallback(dataset, config$1) : schema.fallback;\n}\n\n//#endregion\n//#region src/methods/fallback/fallback.ts\n/**\n* Returns a fallback value as output if the input does not match the schema.\n*\n* @param schema The schema to catch.\n* @param fallback The fallback value.\n*\n* @returns The passed schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallback(schema, fallback$1) {\n\treturn _standardSchema({\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/fallback/fallbackAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction fallbackAsync(schema, fallback$1) {\n\treturn _standardSchema({\n\t\t...schema,\n\t\tfallback: fallback$1,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst outputDataset = await schema[\"~run\"](dataset, config$1);\n\t\t\treturn outputDataset.issues ? {\n\t\t\t\ttyped: true,\n\t\t\t\tvalue: await /* @__PURE__ */ getFallback(this, outputDataset, config$1)\n\t\t\t} : outputDataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/flatten/flatten.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction flatten(issues) {\n\tconst flatErrors = {};\n\tfor (const issue of issues) if (issue.path) {\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) {\n\t\t\tif (!flatErrors.nested) flatErrors.nested = {};\n\t\t\tif (Object.prototype.hasOwnProperty.call(flatErrors.nested, dotPath)) flatErrors.nested[dotPath].push(issue.message);\n\t\t\telse flatErrors.nested[dotPath] = [issue.message];\n\t\t} else if (flatErrors.other) flatErrors.other.push(issue.message);\n\t\telse flatErrors.other = [issue.message];\n\t} else if (flatErrors.root) flatErrors.root.push(issue.message);\n\telse flatErrors.root = [issue.message];\n\treturn flatErrors;\n}\n\n//#endregion\n//#region src/methods/forward/forward.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forward(action, path) {\n\treturn {\n\t\t...action,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/forward/forwardAsync.ts\n/**\n* Forwards the issues of the passed validation action.\n*\n* @param action The validation action.\n* @param path The path to forward the issues to.\n*\n* @returns The modified action.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction forwardAsync(action, path) {\n\treturn {\n\t\t...action,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst prevIssues = dataset.issues && [...dataset.issues];\n\t\t\tdataset = await action[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.issues) {\n\t\t\t\tfor (const issue of dataset.issues) if (!prevIssues?.includes(issue)) {\n\t\t\t\t\tlet pathInput = dataset.value;\n\t\t\t\t\tfor (const key of path) {\n\t\t\t\t\t\tconst pathValue = pathInput[key];\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"unknown\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput: pathInput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: pathValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (issue.path) issue.path.push(pathItem);\n\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\tif (!pathValue) break;\n\t\t\t\t\t\tpathInput = pathValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/methods/getDefault/getDefault.ts\n/**\n* Returns the default value of the schema.\n*\n* @param schema The schema to get it from.\n* @param dataset The input dataset if available.\n* @param config The config if available.\n*\n* @returns The default value.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefault(schema, dataset, config$1) {\n\treturn typeof schema.default === \"function\" ? schema.default(dataset, config$1) : schema.default;\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaults.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDefaults(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getDefaults(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getDefaults);\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDefaults/getDefaultsAsync.ts\n/**\n* Returns the default values of the schema.\n*\n* Hint: The difference to `getDefault` is that for object and tuple schemas\n* this function recursively returns the default values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The default values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getDefaultsAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getDefaultsAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getDefaultsAsync));\n\treturn /* @__PURE__ */ getDefault(schema);\n}\n\n//#endregion\n//#region src/methods/getDescription/getDescription.ts\n/**\n* Returns the description of the schema.\n*\n* If multiple descriptions are defined, the last one of the highest level is\n* returned. If no description is defined, `undefined` is returned.\n*\n* @param schema The schema to get the description from.\n*\n* @returns The description, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getDescription(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"description\");\n}\n\n//#endregion\n//#region src/methods/getExamples/getExamples.ts\n/**\n* Returns the examples of a schema.\n*\n* If multiple examples are defined, it concatenates them using depth-first\n* search. If no examples are defined, an empty array is returned.\n*\n* @param schema The schema to get the examples from.\n*\n* @returns The examples, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getExamples(schema) {\n\tconst examples$1 = [];\n\tfunction depthFirstCollect(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstCollect(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"examples\") for (const example of item.examples) examples$1.push(example);\n\t\t}\n\t}\n\tdepthFirstCollect(schema);\n\treturn examples$1;\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacks.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getFallbacks(schema) {\n\tif (\"entries\" in schema) {\n\t\tconst object$1 = {};\n\t\tfor (const key in schema.entries) object$1[key] = /* @__PURE__ */ getFallbacks(schema.entries[key]);\n\t\treturn object$1;\n\t}\n\tif (\"items\" in schema) return schema.items.map(getFallbacks);\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getFallbacks/getFallbacksAsync.ts\n/**\n* Returns the fallback values of the schema.\n*\n* Hint: The difference to `getFallback` is that for object and tuple schemas\n* this function recursively returns the fallback values of the subschemas\n* instead of `undefined`.\n*\n* @param schema The schema to get them from.\n*\n* @returns The fallback values.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function getFallbacksAsync(schema) {\n\tif (\"entries\" in schema) return Object.fromEntries(await Promise.all(Object.entries(schema.entries).map(async ([key, value$1]) => [key, await /* @__PURE__ */ getFallbacksAsync(value$1)])));\n\tif (\"items\" in schema) return Promise.all(schema.items.map(getFallbacksAsync));\n\treturn /* @__PURE__ */ getFallback(schema);\n}\n\n//#endregion\n//#region src/methods/getMetadata/getMetadata.ts\n/**\n* Returns the metadata of a schema.\n*\n* If multiple metadata are defined, it shallowly merges them using depth-first\n* search. If no metadata is defined, an empty object is returned.\n*\n* @param schema Schema to get the metadata from.\n*\n* @returns The metadata, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getMetadata(schema) {\n\tconst result = {};\n\tfunction depthFirstMerge(schema$1) {\n\t\tif (\"pipe\" in schema$1) {\n\t\t\tfor (const item of schema$1.pipe) if (item.kind === \"schema\" && \"pipe\" in item) depthFirstMerge(item);\n\t\t\telse if (item.kind === \"metadata\" && item.type === \"metadata\") Object.assign(result, item.metadata);\n\t\t}\n\t}\n\tdepthFirstMerge(schema);\n\treturn result;\n}\n\n//#endregion\n//#region src/methods/getTitle/getTitle.ts\n/**\n* Returns the title of the schema.\n*\n* If multiple titles are defined, the last one of the highest level is\n* returned. If no title is defined, `undefined` is returned.\n*\n* @param schema The schema to get the title from.\n*\n* @returns The title, if any.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction getTitle(schema) {\n\treturn /* @__PURE__ */ _getLastMetadata(schema, \"title\");\n}\n\n//#endregion\n//#region src/methods/is/is.ts\n/**\n* Checks if the input matches the schema. By using a type predicate, this\n* function can be used as a type guard.\n*\n* @param schema The schema to be used.\n* @param input The input to be tested.\n*\n* @returns Whether the input matches the schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction is(schema, input) {\n\treturn !schema[\"~run\"]({ value: input }, ABORT_EARLY_CONFIG).issues;\n}\n\n//#endregion\n//#region src/schemas/any/any.ts\n/**\n* Creates an any schema.\n*\n* Hint: This schema function exists only for completeness and is not\n* recommended in practice. Instead, `unknown` should be used to accept\n* unknown data.\n*\n* @returns An any schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction any() {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"any\",\n\t\treference: any,\n\t\texpects: \"any\",\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/array/array.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction array(item, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: array,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titem,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.item[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/array/arrayAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction arrayAsync(item, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"array\",\n\t\treference: arrayAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titem,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(input.map((value$1) => this.item[\"~run\"]({ value: value$1 }, config$1)));\n\t\t\t\tfor (let key = 0; key < itemDatasets.length; key++) {\n\t\t\t\t\tconst itemDataset = itemDatasets[key];\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/bigint/bigint.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction bigint(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"bigint\",\n\t\treference: bigint,\n\t\texpects: \"bigint\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"bigint\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/blob/blob.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction blob(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"blob\",\n\t\treference: blob,\n\t\texpects: \"Blob\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Blob) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/boolean/boolean.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction boolean(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"boolean\",\n\t\treference: boolean,\n\t\texpects: \"boolean\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"boolean\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/custom/custom.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction custom(check$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: custom,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/custom/customAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction customAsync(check$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"custom\",\n\t\treference: customAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tcheck: check$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (await this.check(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/date/date.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction date(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"date\",\n\t\treference: date,\n\t\texpects: \"Date\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Date) if (!isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { received: \"\\\"Invalid Date\\\"\" });\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/enum/enum.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction enum_(enum__, message$1) {\n\tconst options = [];\n\tfor (const key in enum__) if (`${+key}` !== key || typeof enum__[key] !== \"string\" || !Object.is(enum__[enum__[key]], +key)) options.push(enum__[key]);\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"enum\",\n\t\treference: enum_,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\tenum: enum__,\n\t\toptions,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptional(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptional,\n\t\texpects: wrapped.expects,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/exactOptional/exactOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction exactOptionalAsync(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"exact_optional\",\n\t\treference: exactOptionalAsync,\n\t\texpects: wrapped.expects,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/file/file.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction file(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"file\",\n\t\treference: file,\n\t\texpects: \"File\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof File) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/function/function.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction function_(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"function\",\n\t\treference: function_,\n\t\texpects: \"Function\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"function\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/instance/instance.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction instance(class_, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"instance\",\n\t\treference: instance,\n\t\texpects: class_.name,\n\t\tasync: false,\n\t\tclass: class_,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof this.class) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/intersect/utils/_merge/_merge.ts\n/**\n* Merges two values into one single output.\n*\n* @param value1 First value.\n* @param value2 Second value.\n*\n* @returns The merge dataset.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _merge(value1, value2) {\n\tif (typeof value1 === typeof value2) {\n\t\tif (/* @__PURE__ */ _isSameValueZero(value1, value2) || value1 instanceof Date && value2 instanceof Date && /* @__PURE__ */ _isSameValueZero(+value1, +value2)) return { value: value1 };\n\t\tif (value1 && value2 && value1.constructor === Object && value2.constructor === Object) {\n\t\t\tconst nextValue = {\n\t\t\t\t...value1,\n\t\t\t\t...value2\n\t\t\t};\n\t\t\tfor (const key in value2) if (Object.prototype.hasOwnProperty.call(value1, key) && Object.prototype.hasOwnProperty.call(value2, key)) {\n\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[key], value2[key]);\n\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\tnextValue[key] = dataset.value;\n\t\t\t}\n\t\t\treturn { value: nextValue };\n\t\t}\n\t\tif (Array.isArray(value1) && Array.isArray(value2)) {\n\t\t\tif (value1.length === value2.length) {\n\t\t\t\tconst nextValue = [...value1];\n\t\t\t\tfor (let index = 0; index < value1.length; index++) {\n\t\t\t\t\tconst dataset = /* @__PURE__ */ _merge(value1[index], value2[index]);\n\t\t\t\t\tif (dataset.issue) return dataset;\n\t\t\t\t\tnextValue[index] = dataset.value;\n\t\t\t\t}\n\t\t\t\treturn { value: nextValue };\n\t\t\t}\n\t\t}\n\t}\n\treturn { issue: true };\n}\n\n//#endregion\n//#region src/schemas/intersect/intersect.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersect(options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersect,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tfor (const schema of this.options) {\n\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) for (const issue of optionDataset.issues) dataset.issues.push(issue);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/intersect/intersectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction intersectAsync(options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"intersect\",\n\t\treference: intersectAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"&\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (this.options.length) {\n\t\t\t\tconst input = dataset.value;\n\t\t\t\tlet outputs;\n\t\t\t\tdataset.typed = true;\n\t\t\t\tconst optionDatasets = await Promise.all(this.options.map((schema) => schema[\"~run\"]({ value: input }, config$1)));\n\t\t\t\tfor (const optionDataset of optionDatasets) {\n\t\t\t\t\tif (optionDataset.issues) {\n\t\t\t\t\t\tif (dataset.issues) for (const issue of optionDataset.issues) dataset.issues.push(issue);\n\t\t\t\t\t\telse dataset.issues = optionDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!optionDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (dataset.typed) if (outputs) outputs.push(optionDataset.value);\n\t\t\t\t\telse outputs = [optionDataset.value];\n\t\t\t\t}\n\t\t\t\tif (dataset.typed) {\n\t\t\t\t\tdataset.value = outputs[0];\n\t\t\t\t\tfor (let index = 1; index < outputs.length; index++) {\n\t\t\t\t\t\tconst mergeDataset = /* @__PURE__ */ _merge(dataset.value, outputs[index]);\n\t\t\t\t\t\tif (mergeDataset.issue) {\n\t\t\t\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { received: \"unknown\" });\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataset.value = mergeDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/lazy/lazy.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazy(getter) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazy,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\tgetter,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn this.getter(dataset.value)[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/lazy/lazyAsync.ts\n/**\n* Creates a lazy schema.\n*\n* @param getter The schema getter.\n*\n* @returns A lazy schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction lazyAsync(getter) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"lazy\",\n\t\treference: lazyAsync,\n\t\texpects: \"unknown\",\n\t\tasync: true,\n\t\tgetter,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\treturn (await this.getter(dataset.value))[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/literal/literal.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction literal(literal_, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"literal\",\n\t\treference: literal,\n\t\texpects: /* @__PURE__ */ _stringify(literal_),\n\t\tasync: false,\n\t\tliteral: literal_,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (/* @__PURE__ */ _isSameValueZero(dataset.value, this.literal)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObject(entries$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/looseObject/looseObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseObjectAsync(entries$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"loose_object\",\n\t\treference: looseObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)) dataset.value[key] = input[key];\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTuple(items, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/looseTuple/looseTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction looseTupleAsync(items, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"loose_tuple\",\n\t\treference: looseTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) dataset.value.push(input[key]);\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/map/map.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction map(key, value$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: map,\n\t\texpects: \"Map\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const [inputKey, inputValue] of input) {\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: inputKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/map/mapAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction mapAsync(key, value$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"map\",\n\t\treference: mapAsync,\n\t\texpects: \"Map\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Map) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Map();\n\t\t\t\tconst datasets = await Promise.all([...input].map(([inputKey, inputValue]) => Promise.all([\n\t\t\t\t\tinputKey,\n\t\t\t\t\tinputValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: inputKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: inputValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [inputKey, inputValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"map\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: inputKey,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.set(keyDataset.value, valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nan/nan.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nan(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"nan\",\n\t\treference: nan,\n\t\texpects: \"NaN\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (Number.isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/never/never.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction never(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"never\",\n\t\treference: never,\n\t\texpects: \"never\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\t_addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullable(wrapped, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullable,\n\t\texpects: \"!null\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nonNullable/nonNullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullableAsync(wrapped, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullable\",\n\t\treference: nonNullableAsync,\n\t\texpects: \"!null\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== null) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullish(wrapped, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullish,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nonNullish/nonNullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonNullishAsync(wrapped, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"non_nullish\",\n\t\treference: nonNullishAsync,\n\t\texpects: \"(!null & !undefined)\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (!(dataset.value === null || dataset.value === void 0)) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === null || dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptional(wrapped, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptional,\n\t\texpects: \"!undefined\",\n\t\tasync: false,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nonOptional/nonOptionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nonOptionalAsync(wrapped, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"non_optional\",\n\t\treference: nonOptionalAsync,\n\t\texpects: \"!undefined\",\n\t\tasync: true,\n\t\twrapped,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value !== void 0) dataset = await this.wrapped[\"~run\"](dataset, config$1);\n\t\t\tif (dataset.value === void 0) _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/null/null.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction null_(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"null\",\n\t\treference: null_,\n\t\texpects: \"null\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nullable/nullable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullable(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullable,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nullable/nullableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullableAsync(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"nullable\",\n\t\treference: nullableAsync,\n\t\texpects: `(${wrapped.expects} | null)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nullish/nullish.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullish(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullish,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/nullish/nullishAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction nullishAsync(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"nullish\",\n\t\treference: nullishAsync,\n\t\texpects: `(${wrapped.expects} | null | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === null || dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/number/number.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction number(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"number\",\n\t\treference: number,\n\t\texpects: \"number\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"number\" && !isNaN(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/object/object.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction object(entries$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: object,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/object/objectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectAsync(entries$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"object\",\n\t\treference: objectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRest(entries$1, rest, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRest,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (/* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)) {\n\t\t\t\t\t\tconst valueDataset = this.rest[\"~run\"]({ value: input[key] }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/objectWithRest/objectWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction objectWithRestAsync(entries$1, rest, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"object_with_rest\",\n\t\treference: objectWithRestAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\trest,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(Object.entries(input).filter(([key]) => /* @__PURE__ */ _isValidObjectKey(input, key) && !Object.prototype.hasOwnProperty.call(this.entries, key)).map(async ([key, value$1]) => [\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue$1,\n\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t]))]);\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of normalDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, valueDataset] of restDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/optional/optional.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optional(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optional,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/optional/optionalAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction optionalAsync(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"optional\",\n\t\treference: optionalAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/picklist/picklist.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction picklist(options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"picklist\",\n\t\treference: picklist,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map(_stringify), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (this.options.includes(dataset.value)) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/promise/promise.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction promise(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"promise\",\n\t\treference: promise,\n\t\texpects: \"Promise\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value instanceof Promise) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/record/record.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction record(key, value$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: record,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const entryKey in input) if (/* @__PURE__ */ _isValidObjectKey(input, entryKey)) {\n\t\t\t\t\tconst entryValue = input[entryKey];\n\t\t\t\t\tconst keyDataset = this.key[\"~run\"]({ value: entryKey }, config$1);\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: entryValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/record/recordAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction recordAsync(key, value$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"record\",\n\t\treference: recordAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst datasets = await Promise.all(Object.entries(input).filter(([key$1]) => /* @__PURE__ */ _isValidObjectKey(input, key$1)).map(([entryKey, entryValue]) => Promise.all([\n\t\t\t\t\tentryKey,\n\t\t\t\t\tentryValue,\n\t\t\t\t\tthis.key[\"~run\"]({ value: entryKey }, config$1),\n\t\t\t\t\tthis.value[\"~run\"]({ value: entryValue }, config$1)\n\t\t\t\t])));\n\t\t\t\tfor (const [entryKey, entryValue, keyDataset, valueDataset] of datasets) {\n\t\t\t\t\tif (keyDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of keyDataset.issues) {\n\t\t\t\t\t\t\tissue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = keyDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: entryKey,\n\t\t\t\t\t\t\tvalue: entryValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!keyDataset.typed || !valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tif (keyDataset.typed) dataset.value[keyDataset.value] = valueDataset.value;\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/set/set.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction set(value$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: set,\n\t\texpects: \"Set\",\n\t\tasync: false,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const inputValue of input) {\n\t\t\t\t\tconst valueDataset = this.value[\"~run\"]({ value: inputValue }, config$1);\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/set/setAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction setAsync(value$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"set\",\n\t\treference: setAsync,\n\t\texpects: \"Set\",\n\t\tasync: true,\n\t\tvalue: value$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input instanceof Set) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = /* @__PURE__ */ new Set();\n\t\t\t\tconst valueDatasets = await Promise.all([...input].map(async (inputValue) => [inputValue, await this.value[\"~run\"]({ value: inputValue }, config$1)]));\n\t\t\t\tfor (const [inputValue, valueDataset] of valueDatasets) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"set\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey: null,\n\t\t\t\t\t\t\tvalue: inputValue\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.add(valueDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObject.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObject(entries$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObject,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tfor (const key in this.entries) {\n\t\t\t\t\tconst valueSchema = this.entries[key];\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\tconst valueDataset = valueSchema[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!Object.prototype.hasOwnProperty.call(this.entries, key)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/strictObject/strictObjectAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictObjectAsync(entries$1, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"strict_object\",\n\t\treference: strictObjectAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tentries: entries$1,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = {};\n\t\t\t\tconst valueDatasets = await Promise.all(Object.entries(this.entries).map(async ([key, valueSchema]) => {\n\t\t\t\t\tif (key in input || (valueSchema.type === \"exact_optional\" || valueSchema.type === \"optional\" || valueSchema.type === \"nullish\") && valueSchema.default !== void 0) {\n\t\t\t\t\t\tconst value$1 = key in input ? input[key] : await /* @__PURE__ */ getDefault(valueSchema);\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\t\tawait valueSchema[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t\t];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tinput[key],\n\t\t\t\t\t\tvalueSchema,\n\t\t\t\t\t\tnull\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, valueSchema, valueDataset] of valueDatasets) if (valueDataset) {\n\t\t\t\t\tif (valueDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of valueDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = valueDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!valueDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value[key] = valueDataset.value;\n\t\t\t\t} else if (valueSchema.fallback !== void 0) dataset.value[key] = await /* @__PURE__ */ getFallback(valueSchema);\n\t\t\t\telse if (valueSchema.type !== \"exact_optional\" && valueSchema.type !== \"optional\" && valueSchema.type !== \"nullish\") {\n\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\tinput: void 0,\n\t\t\t\t\t\texpected: `\"${key}\"`,\n\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t\t\tif (config$1.abortEarly) break;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) {\n\t\t\t\t\tfor (const key in input) if (!Object.prototype.hasOwnProperty.call(this.entries, key)) {\n\t\t\t\t\t\t_addIssue(this, \"key\", dataset, config$1, {\n\t\t\t\t\t\t\tinput: key,\n\t\t\t\t\t\t\texpected: \"never\",\n\t\t\t\t\t\t\tpath: [{\n\t\t\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\t\t\torigin: \"key\",\n\t\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tvalue: input[key]\n\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTuple(items, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/strictTuple/strictTupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction strictTupleAsync(items, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"strict_tuple\",\n\t\treference: strictTupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!(dataset.issues && config$1.abortEarly) && this.items.length < input.length) _addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[this.items.length],\n\t\t\t\t\texpected: \"never\",\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: this.items.length,\n\t\t\t\t\t\tvalue: input[this.items.length]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/string/string.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction string(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"string\",\n\t\treference: string,\n\t\texpects: \"string\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"string\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/symbol/symbol.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction symbol(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"symbol\",\n\t\treference: symbol,\n\t\texpects: \"symbol\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (typeof dataset.value === \"symbol\") dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/tuple/tuple.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tuple(items, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tuple,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/tuple/tupleAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleAsync(items, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"tuple\",\n\t\treference: tupleAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst itemDatasets = await Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}));\n\t\t\t\tfor (const [key, value$1, itemDataset] of itemDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRest.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRest(items, rest, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRest,\n\t\texpects: \"Array\",\n\t\tasync: false,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tfor (let key = 0; key < this.items.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.items[key][\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (let key = this.items.length; key < input.length; key++) {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\tconst itemDataset = this.rest[\"~run\"]({ value: value$1 }, config$1);\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/tupleWithRest/tupleWithRestAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction tupleWithRestAsync(items, rest, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"tuple_with_rest\",\n\t\treference: tupleWithRestAsync,\n\t\texpects: \"Array\",\n\t\tasync: true,\n\t\titems,\n\t\trest,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (Array.isArray(input)) {\n\t\t\t\tdataset.typed = true;\n\t\t\t\tdataset.value = [];\n\t\t\t\tconst [normalDatasets, restDatasets] = await Promise.all([Promise.all(this.items.map(async (item, key) => {\n\t\t\t\t\tconst value$1 = input[key];\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait item[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t})), Promise.all(input.slice(this.items.length).map(async (value$1, key) => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tkey + this.items.length,\n\t\t\t\t\t\tvalue$1,\n\t\t\t\t\t\tawait this.rest[\"~run\"]({ value: value$1 }, config$1)\n\t\t\t\t\t];\n\t\t\t\t}))]);\n\t\t\t\tfor (const [key, value$1, itemDataset] of normalDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly) for (const [key, value$1, itemDataset] of restDatasets) {\n\t\t\t\t\tif (itemDataset.issues) {\n\t\t\t\t\t\tconst pathItem = {\n\t\t\t\t\t\t\ttype: \"array\",\n\t\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\t\tinput,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue: value$1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor (const issue of itemDataset.issues) {\n\t\t\t\t\t\t\tif (issue.path) issue.path.unshift(pathItem);\n\t\t\t\t\t\t\telse issue.path = [pathItem];\n\t\t\t\t\t\t\tdataset.issues?.push(issue);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!dataset.issues) dataset.issues = itemDataset.issues;\n\t\t\t\t\t\tif (config$1.abortEarly) {\n\t\t\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!itemDataset.typed) dataset.typed = false;\n\t\t\t\t\tdataset.value.push(itemDataset.value);\n\t\t\t\t}\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/undefined/undefined.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefined_(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"undefined\",\n\t\treference: undefined_,\n\t\texpects: \"undefined\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedable.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedable(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedable,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: false,\n\t\twrapped,\n\t\tdefault: default_,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/undefinedable/undefinedableAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction undefinedableAsync(wrapped, default_) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"undefinedable\",\n\t\treference: undefinedableAsync,\n\t\texpects: `(${wrapped.expects} | undefined)`,\n\t\tasync: true,\n\t\twrapped,\n\t\tdefault: default_,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) {\n\t\t\t\tif (this.default !== void 0) dataset.value = await /* @__PURE__ */ getDefault(this, dataset, config$1);\n\t\t\t\tif (dataset.value === void 0) {\n\t\t\t\t\tdataset.typed = true;\n\t\t\t\t\treturn dataset;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn this.wrapped[\"~run\"](dataset, config$1);\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/union/utils/_subIssues/_subIssues.ts\n/**\n* Returns the sub issues of the provided datasets for the union issue.\n*\n* @param datasets The datasets.\n*\n* @returns The sub issues.\n*\n* @internal\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction _subIssues(datasets) {\n\tlet issues;\n\tif (datasets) for (const dataset of datasets) if (issues) for (const issue of dataset.issues) issues.push(issue);\n\telse issues = dataset.issues;\n\treturn issues;\n}\n\n//#endregion\n//#region src/schemas/union/union.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction union(options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: union,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: false,\n\t\toptions,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/union/unionAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction unionAsync(options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"union\",\n\t\treference: unionAsync,\n\t\texpects: /* @__PURE__ */ _joinExpects(options.map((option) => option.expects), \"|\"),\n\t\tasync: true,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tlet validDataset;\n\t\t\tlet typedDatasets;\n\t\t\tlet untypedDatasets;\n\t\t\tfor (const schema of this.options) {\n\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: dataset.value }, config$1);\n\t\t\t\tif (optionDataset.typed) if (optionDataset.issues) if (typedDatasets) typedDatasets.push(optionDataset);\n\t\t\t\telse typedDatasets = [optionDataset];\n\t\t\t\telse {\n\t\t\t\t\tvalidDataset = optionDataset;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse if (untypedDatasets) untypedDatasets.push(optionDataset);\n\t\t\t\telse untypedDatasets = [optionDataset];\n\t\t\t}\n\t\t\tif (validDataset) return validDataset;\n\t\t\tif (typedDatasets) {\n\t\t\t\tif (typedDatasets.length === 1) return typedDatasets[0];\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(typedDatasets) });\n\t\t\t\tdataset.typed = true;\n\t\t\t} else if (untypedDatasets?.length === 1) return untypedDatasets[0];\n\t\t\telse _addIssue(this, \"type\", dataset, config$1, { issues: /* @__PURE__ */ _subIssues(untypedDatasets) });\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/unknown/unknown.ts\n/**\n* Creates a unknown schema.\n*\n* @returns A unknown schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unknown() {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"unknown\",\n\t\treference: unknown,\n\t\texpects: \"unknown\",\n\t\tasync: false,\n\t\t\"~run\"(dataset) {\n\t\t\tdataset.typed = true;\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/variant/variant.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variant(key, options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variant,\n\t\texpects: \"Object\",\n\t\tasync: false,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, ABORT_EARLY_CONFIG).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tparseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/variant/variantAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction variantAsync(key, options, message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"variant\",\n\t\treference: variantAsync,\n\t\texpects: \"Object\",\n\t\tasync: true,\n\t\tkey,\n\t\toptions,\n\t\tmessage: message$1,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tconst input = dataset.value;\n\t\t\tif (input && typeof input === \"object\") {\n\t\t\t\tlet outputDataset;\n\t\t\t\tlet maxDiscriminatorPriority = 0;\n\t\t\t\tlet invalidDiscriminatorKey = this.key;\n\t\t\t\tlet expectedDiscriminators = [];\n\t\t\t\tconst parseOptions = async (variant$1, allKeys) => {\n\t\t\t\t\tfor (const schema of variant$1.options) {\n\t\t\t\t\t\tif (schema.type === \"variant\") await parseOptions(schema, new Set(allKeys).add(schema.key));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet keysAreValid = true;\n\t\t\t\t\t\t\tlet currentPriority = 0;\n\t\t\t\t\t\t\tfor (const currentKey of allKeys) {\n\t\t\t\t\t\t\t\tconst discriminatorSchema = schema.entries[currentKey];\n\t\t\t\t\t\t\t\tif (currentKey in input ? (await discriminatorSchema[\"~run\"]({\n\t\t\t\t\t\t\t\t\ttyped: false,\n\t\t\t\t\t\t\t\t\tvalue: input[currentKey]\n\t\t\t\t\t\t\t\t}, ABORT_EARLY_CONFIG)).issues : discriminatorSchema.type !== \"exact_optional\" && discriminatorSchema.type !== \"optional\" && discriminatorSchema.type !== \"nullish\") {\n\t\t\t\t\t\t\t\t\tkeysAreValid = false;\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey !== currentKey && (maxDiscriminatorPriority < currentPriority || maxDiscriminatorPriority === currentPriority && currentKey in input && !(invalidDiscriminatorKey in input))) {\n\t\t\t\t\t\t\t\t\t\tmaxDiscriminatorPriority = currentPriority;\n\t\t\t\t\t\t\t\t\t\tinvalidDiscriminatorKey = currentKey;\n\t\t\t\t\t\t\t\t\t\texpectedDiscriminators = [];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (invalidDiscriminatorKey === currentKey) expectedDiscriminators.push(schema.entries[currentKey].expects);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcurrentPriority++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (keysAreValid) {\n\t\t\t\t\t\t\t\tconst optionDataset = await schema[\"~run\"]({ value: input }, config$1);\n\t\t\t\t\t\t\t\tif (!outputDataset || !outputDataset.typed && optionDataset.typed) outputDataset = optionDataset;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (outputDataset && !outputDataset.issues) break;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tawait parseOptions(this, new Set([this.key]));\n\t\t\t\tif (outputDataset) return outputDataset;\n\t\t\t\t_addIssue(this, \"type\", dataset, config$1, {\n\t\t\t\t\tinput: input[invalidDiscriminatorKey],\n\t\t\t\t\texpected: /* @__PURE__ */ _joinExpects(expectedDiscriminators, \"|\"),\n\t\t\t\t\tpath: [{\n\t\t\t\t\t\ttype: \"object\",\n\t\t\t\t\t\torigin: \"value\",\n\t\t\t\t\t\tinput,\n\t\t\t\t\t\tkey: invalidDiscriminatorKey,\n\t\t\t\t\t\tvalue: input[invalidDiscriminatorKey]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t} else _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/schemas/void/void.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction void_(message$1) {\n\treturn _standardSchema({\n\t\tkind: \"schema\",\n\t\ttype: \"void\",\n\t\treference: void_,\n\t\texpects: \"void\",\n\t\tasync: false,\n\t\tmessage: message$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tif (dataset.value === void 0) dataset.typed = true;\n\t\t\telse _addIssue(this, \"type\", dataset, config$1);\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/keyof/keyof.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction keyof(schema, message$1) {\n\treturn /* @__PURE__ */ picklist(Object.keys(schema.entries), message$1);\n}\n\n//#endregion\n//#region src/methods/message/message.ts\n/**\n* Changes the local message configuration of a schema.\n*\n* @param schema The schema to configure.\n* @param message_ The error message.\n*\n* @returns The configured schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction message(schema, message_) {\n\treturn _standardSchema({\n\t\t...schema,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\treturn schema[\"~run\"](dataset, {\n\t\t\t\t...config$1,\n\t\t\t\tmessage: message_\n\t\t\t});\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/omit/omit.ts\n/**\n* Creates a modified copy of an object schema that does not contain the\n* selected entries.\n*\n* @param schema The schema to omit from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction omit(schema, keys) {\n\tconst entries$1 = { ...schema.entries };\n\tfor (const key of keys) delete entries$1[key];\n\treturn _standardSchema({\n\t\t...schema,\n\t\tentries: entries$1\n\t});\n}\n\n//#endregion\n//#region src/methods/parse/parse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nfunction parse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parse/parseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parsed input.\n*/\nasync function parseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\tif (dataset.issues) throw new ValiError(dataset.issues);\n\treturn dataset.value;\n}\n\n//#endregion\n//#region src/methods/parser/parser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parser(schema, config$1) {\n\tconst func = (input) => parse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/parser/parserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction parserAsync(schema, config$1) {\n\tconst func = (input) => parseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/partial/partial.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partial(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optional(schema.entries[key]) : schema.entries[key];\n\treturn _standardSchema({\n\t\t...schema,\n\t\tentries: entries$1\n\t});\n}\n\n//#endregion\n//#region src/methods/partial/partialAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction partialAsync(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ optionalAsync(schema.entries[key]) : schema.entries[key];\n\treturn _standardSchema({\n\t\t...schema,\n\t\tentries: entries$1\n\t});\n}\n\n//#endregion\n//#region src/methods/pick/pick.ts\n/**\n* Creates a modified copy of an object schema that contains only the selected\n* entries.\n*\n* @param schema The schema to pick from.\n* @param keys The selected entries.\n*\n* @returns An object schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction pick(schema, keys) {\n\tconst entries$1 = {};\n\tfor (const key of keys) entries$1[key] = schema.entries[key];\n\treturn _standardSchema({\n\t\t...schema,\n\t\tentries: entries$1\n\t});\n}\n\n//#endregion\n//#region src/methods/pipe/pipe.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipe(...pipe$1) {\n\treturn _standardSchema({\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\t\"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/pipe/pipeAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction pipeAsync(...pipe$1) {\n\treturn _standardSchema({\n\t\t...pipe$1[0],\n\t\tpipe: pipe$1,\n\t\tasync: true,\n\t\tasync \"~run\"(dataset, config$1) {\n\t\t\tfor (const item of pipe$1) if (item.kind !== \"metadata\") {\n\t\t\t\tif (dataset.issues && (item.kind === \"schema\" || item.kind === \"transformation\")) {\n\t\t\t\t\tdataset.typed = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!dataset.issues || !config$1.abortEarly && !config$1.abortPipeEarly) dataset = await item[\"~run\"](dataset, config$1);\n\t\t\t}\n\t\t\treturn dataset;\n\t\t}\n\t});\n}\n\n//#endregion\n//#region src/methods/required/required.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction required(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptional(schema.entries[key], message$1) : schema.entries[key];\n\treturn _standardSchema({\n\t\t...schema,\n\t\tentries: entries$1\n\t});\n}\n\n//#endregion\n//#region src/methods/required/requiredAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction requiredAsync(schema, arg2, arg3) {\n\tconst keys = Array.isArray(arg2) ? arg2 : void 0;\n\tconst message$1 = Array.isArray(arg2) ? arg3 : arg2;\n\tconst entries$1 = {};\n\tfor (const key in schema.entries) entries$1[key] = !keys || keys.includes(key) ? /* @__PURE__ */ nonOptionalAsync(schema.entries[key], message$1) : schema.entries[key];\n\treturn _standardSchema({\n\t\t...schema,\n\t\tentries: entries$1\n\t});\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParse.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParse(schema, input, config$1) {\n\tconst dataset = schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParse/safeParseAsync.ts\n/**\n* Parses an unknown input based on a schema.\n*\n* @param schema The schema to be used.\n* @param input The input to be parsed.\n* @param config The parse configuration.\n*\n* @returns The parse result.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nasync function safeParseAsync(schema, input, config$1) {\n\tconst dataset = await schema[\"~run\"]({ value: input }, /* @__PURE__ */ getGlobalConfig(config$1));\n\treturn {\n\t\ttyped: dataset.typed,\n\t\tsuccess: !dataset.issues,\n\t\toutput: dataset.value,\n\t\tissues: dataset.issues\n\t};\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParser.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParser(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParse(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/safeParser/safeParserAsync.ts\n/* @__NO_SIDE_EFFECTS__ */\nfunction safeParserAsync(schema, config$1) {\n\tconst func = (input) => /* @__PURE__ */ safeParseAsync(schema, input, config$1);\n\tfunc.schema = schema;\n\tfunc.config = config$1;\n\treturn func;\n}\n\n//#endregion\n//#region src/methods/summarize/summarize.ts\n/**\n* Summarize the error messages of issues in a pretty-printable multi-line string.\n*\n* @param issues The list of issues.\n*\n* @returns A summary of the issues.\n*\n* @beta\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction summarize(issues) {\n\tlet summary = \"\";\n\tfor (const issue of issues) {\n\t\tif (summary) summary += \"\\n\";\n\t\tsummary += `× ${issue.message}`;\n\t\tconst dotPath = /* @__PURE__ */ getDotPath(issue);\n\t\tif (dotPath) summary += `\\n → at ${dotPath}`;\n\t}\n\treturn summary;\n}\n\n//#endregion\n//#region src/methods/unwrap/unwrap.ts\n/**\n* Unwraps the wrapped schema.\n*\n* @param schema The schema to be unwrapped.\n*\n* @returns The unwrapped schema.\n*/\n/* @__NO_SIDE_EFFECTS__ */\nfunction unwrap(schema) {\n\treturn schema.wrapped;\n}\n\n//#endregion\nexport { BASE64_REGEX, BIC_REGEX, CUID2_REGEX, DECIMAL_REGEX, DIGITS_REGEX, DOMAIN_REGEX, EMAIL_REGEX, EMOJI_REGEX, HEXADECIMAL_REGEX, HEX_COLOR_REGEX, IMEI_REGEX, IPV4_REGEX, IPV6_REGEX, IP_REGEX, ISO_DATE_REGEX, ISO_DATE_TIME_REGEX, ISO_DATE_TIME_SECOND_REGEX, ISO_TIMESTAMP_REGEX, ISO_TIME_REGEX, ISO_TIME_SECOND_REGEX, ISO_WEEK_REGEX, ISRC_REGEX, JWS_COMPACT_REGEX, KSUID_REGEX, MAC48_REGEX, MAC64_REGEX, MAC_REGEX, NANO_ID_REGEX, OCTAL_REGEX, RFC_EMAIL_REGEX, SLUG_REGEX, ULID_REGEX, UUID_REGEX, ValiError, _addIssue, _cloneDataset, _formatCase, _getByteCount, _getCodePointCount, _getGraphemeCount, _getLastMetadata, _getWordCount, _isLuhnAlgo, _isSameValueZero, _isValidObjectKey, _isValueMatch, _joinExpects, _standardSchema, _stringify, any, args, argsAsync, array, arrayAsync, assert, awaitAsync, base64, bic, bigint, blob, boolean, brand, bytes, cache, cacheAsync, check, checkAsync, checkItems, checkItemsAsync, codePoints, config, creditCard, cuid2, custom, customAsync, date, decimal, deleteGlobalConfig, deleteGlobalMessage, deleteSchemaMessage, deleteSpecificMessage, description, digits, domain, email, emoji, empty, endsWith, entries, entriesFromList, entriesFromObjects, enum_ as enum, enum_, everyItem, exactOptional, exactOptionalAsync, examples, excludes, fallback, fallbackAsync, file, filterItems, findItem, finite, flatten, flavor, forward, forwardAsync, function_ as function, function_, getDefault, getDefaults, getDefaultsAsync, getDescription, getDotPath, getExamples, getFallback, getFallbacks, getFallbacksAsync, getGlobalConfig, getGlobalMessage, getMetadata, getSchemaMessage, getSpecificMessage, getTitle, graphemes, gtValue, guard, hash, hexColor, hexadecimal, imei, includes, instance, integer, intersect, intersectAsync, ip, ipv4, ipv6, is, isOfKind, isOfType, isValiError, isbn, isoDate, isoDateTime, isoDateTimeSecond, isoTime, isoTimeSecond, isoTimestamp, isoWeek, isrc, jwsCompact, keyof, ksuid, lazy, lazyAsync, length, literal, looseObject, looseObjectAsync, looseTuple, looseTupleAsync, ltValue, mac, mac48, mac64, map, mapAsync, mapItems, maxBytes, maxCodePoints, maxEntries, maxGraphemes, maxLength, maxSize, maxValue, maxWords, message, metadata, mimeType, minBytes, minCodePoints, minEntries, minGraphemes, minLength, minSize, minValue, minWords, multipleOf, nan, nanoid, never, nonEmpty, nonNullable, nonNullableAsync, nonNullish, nonNullishAsync, nonOptional, nonOptionalAsync, normalize, notBytes, notCodePoints, notEntries, notGraphemes, notLength, notSize, notValue, notValues, notWords, null_ as null, null_, nullable, nullableAsync, nullish, nullishAsync, number, object, objectAsync, objectWithRest, objectWithRestAsync, octal, omit, optional, optionalAsync, parse, parseAsync, parseBoolean, parseJson, parser, parserAsync, partial, partialAsync, partialCheck, partialCheckAsync, pick, picklist, pipe, pipeAsync, promise, rawCheck, rawCheckAsync, rawTransform, rawTransformAsync, readonly, record, recordAsync, reduceItems, regex, required, requiredAsync, returns, returnsAsync, rfcEmail, safeInteger, safeParse, safeParseAsync, safeParser, safeParserAsync, set, setAsync, setGlobalConfig, setGlobalMessage, setSchemaMessage, setSpecificMessage, size, slug, someItem, sortItems, startsWith, strictObject, strictObjectAsync, strictTuple, strictTupleAsync, string, stringifyJson, summarize, symbol, title, toBigint, toBoolean, toCamelCase, toDate, toKebabCase, toLowerCase, toMaxValue, toMinValue, toNumber, toPascalCase, toSnakeCase, toString, toUpperCase, transform, transformAsync, trim, trimEnd, trimStart, tuple, tupleAsync, tupleWithRest, tupleWithRestAsync, ulid, undefined_ as undefined, undefined_, undefinedable, undefinedableAsync, union, unionAsync, unknown, unwrap, url, uuid, value, values, variant, variantAsync, void_ as void, void_, words };","/**\n * Result of an operation which can fail with one of the known errors. Unlike a thrown error,\n * the error type here is checked by the compiler.\n */\nexport type Result<E, T> = { ok: false; error: E } | { ok: true; data: T };\n\n/**\n * @returns A successful result.\n * @param data - result data.\n */\nexport function ok<T>(data: T): { ok: true; data: T } {\n return { ok: true, data };\n}\n\n/**\n * @returns A failed result.\n * @param error - result error.\n */\nexport function err<E>(error: E): { ok: false; error: E } {\n return { ok: false, error };\n}\n\n/**\n * @returns Result data.\n * @param result - result to unwrap.\n * @throws The result error, if the result is failed.\n */\nexport function unwrap<E extends Error, T>(result: Result<E, T>): T {\n if (!result.ok) {\n throw result.error;\n }\n return result.data;\n}\n\n/**\n * Creates a throwing version of a function returning a result. The created function accepts\n * the same arguments and returns the result data, or throws the result error.\n *\n * Generic functions lose their type parameters when wrapped, so write their throwing versions\n * manually using `unwrap`.\n * @param fn - function returning a result, or a promise of it.\n * @example\n * export const createStartParam = throwing(safeCreateStartParam);\n */\nexport function throwing<A extends unknown[], E extends Error, T>(\n fn: (...args: A) => Promise<Result<E, T>>,\n): (...args: A) => Promise<T>;\nexport function throwing<A extends unknown[], E extends Error, T>(\n fn: (...args: A) => Result<E, T>,\n): (...args: A) => T;\nexport function throwing(\n fn: (...args: unknown[]) => Result<Error, unknown> | Promise<Result<Error, unknown>>,\n): (...args: unknown[]) => unknown {\n return (...args) => {\n const result = fn(...args);\n return result instanceof Promise ? result.then(unwrap) : unwrap(result);\n };\n}\n","import {\n check,\n type GenericSchema,\n number,\n parseJson,\n pipe,\n record,\n string,\n transform,\n union,\n} from 'valibot';\n\nimport type { RGB, ThemeParams } from './types/index.js';\n\n/**\n * Theme color. Some Telegram clients send colors as numbers, so they are converted to\n * the `#RRGGBB` format.\n */\nconst ColorSchema = pipe(\n union([string(), number()]),\n transform(value => (\n typeof value === 'number'\n ? `#${(value & 0xFFFFFF).toString(16).padStart(6, '0')}`\n : value\n ) as RGB),\n check(\n value => /^#([\\da-f]{3,4}|[\\da-f]{6}|[\\da-f]{8})$/i.test(value),\n issue => `Invalid color: ${String(issue.input)}`,\n ),\n);\n\n/**\n * Schema of a raw theme parameters object.\n */\nexport const ThemeParamsSchema: GenericSchema<unknown, ThemeParams> = record(string(), ColorSchema);\n\n/**\n * Schema of theme parameters in the JSON format.\n */\nexport const ThemeParamsJsonSchema: GenericSchema<unknown, ThemeParams> = pipe(\n string(),\n parseJson(),\n ThemeParamsSchema,\n);\n","import {\n nonEmpty,\n object,\n optional,\n pipe,\n safeParse,\n string,\n transform,\n ValiError,\n} from 'valibot';\n\nimport { InvalidLaunchParamsError, LaunchParamsRetrieveError } from './errors.js';\nimport { err, ok, type Result, throwing } from './result.js';\nimport { ThemeParamsJsonSchema } from './theme-params.js';\nimport type { Platform, ThemeParams, Version } from './types/index.js';\n\nconst STORAGE_KEY = 'tma.js/launch-params';\n\n/**\n * Launch parameters passed by the Telegram client to the mini app.\n * @see https://docs.telegram-mini-apps.com/platform/launch-parameters\n */\nexport interface LaunchParams {\n /**\n * True if the mini app was launched in inline mode.\n */\n tgWebAppBotInline?: boolean;\n /**\n * Init data in the raw format. Pass it to your server to authorize the user.\n * @see https://docs.telegram-mini-apps.com/platform/init-data\n */\n tgWebAppData?: string;\n /**\n * Default theme colors.\n */\n tgWebAppDefaultColors?: ThemeParams;\n /**\n * True if the mini app was launched in fullscreen mode.\n */\n tgWebAppFullscreen?: boolean;\n /**\n * Telegram client platform.\n */\n tgWebAppPlatform: Platform;\n /**\n * True if the Settings Button should be displayed.\n */\n tgWebAppShowSettings?: boolean;\n /**\n * Start parameter passed in the mini app link.\n * @see https://docs.telegram-mini-apps.com/platform/start-parameter\n */\n tgWebAppStartParam?: string;\n /**\n * Theme parameters.\n */\n tgWebAppThemeParams: ThemeParams;\n /**\n * Mini Apps version supported by the Telegram client.\n */\n tgWebAppVersion: Version;\n}\n\nconst OptionalBooleanSchema = optional(pipe(string(), transform(value => value === '1')));\n\nconst LaunchParamsSchema = object({\n tgWebAppBotInline: OptionalBooleanSchema,\n tgWebAppData: optional(string()),\n tgWebAppDefaultColors: optional(ThemeParamsJsonSchema),\n tgWebAppFullscreen: OptionalBooleanSchema,\n tgWebAppPlatform: pipe(string(), nonEmpty()),\n tgWebAppShowSettings: OptionalBooleanSchema,\n tgWebAppStartParam: optional(string()),\n tgWebAppThemeParams: optional(ThemeParamsJsonSchema, '{}'),\n tgWebAppVersion: pipe(string(), nonEmpty()),\n});\n\n/**\n * Parses launch parameters from their query representation.\n * @param value - launch parameters query.\n * @returns Launch parameters, or `InvalidLaunchParamsError` if the value doesn't represent\n * valid launch parameters.\n */\nexport function safeParseLaunchParams(\n value: string | URLSearchParams,\n): Result<InvalidLaunchParamsError, LaunchParams> {\n const query = new URLSearchParams(value);\n const input: Record<string, string> = {};\n query.forEach((item, key) => {\n // Like URLSearchParams.get, take the first value.\n key in input || (input[key] = item);\n });\n const result = safeParse(LaunchParamsSchema, input);\n return result.success\n ? ok(result.output)\n : err(new InvalidLaunchParamsError(query.toString(), new ValiError(result.issues)));\n}\n\n/**\n * Parses launch parameters from their query representation.\n *\n * Throwing version of `safeParseLaunchParams`.\n * @param value - launch parameters query.\n * @throws {InvalidLaunchParamsError} The value doesn't represent valid launch parameters.\n */\nexport const parseLaunchParams = /* @__PURE__ */ throwing(safeParseLaunchParams);\n\n/**\n * Converts launch parameters to their query representation.\n * @param value - launch parameters.\n */\nexport function serializeLaunchParams(value: LaunchParams): string {\n const query = new URLSearchParams();\n Object.entries(value).forEach(([key, item]) => {\n if (item === undefined) {\n return;\n }\n query.set(\n key,\n typeof item === 'boolean'\n ? item ? '1' : '0'\n : typeof item === 'object' ? JSON.stringify(item) : String(item),\n );\n });\n return query.toString();\n}\n\n/**\n * Converts a URL to a query containing both its search and hash parameters.\n */\nfunction urlToQuery(url: string): string {\n return url\n // Remove everything before the first \"?\" or \"#\".\n .replace(/^[^?#]*[?#]/, '')\n // Make the rest look like a single query.\n .replace(/[?#]/g, '&');\n}\n\nfunction readSessionStorage(key: string): string | null {\n try {\n return sessionStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\n/**\n * Launch parameters sources ordered by priority.\n */\nconst sources: [name: string, retrieve: () => string | null | undefined][] = [\n // Launch parameters are passed in the URL hash. They can be missing in case the app changed\n // the location and then the page was reloaded.\n ['window.location.href', () => urlToQuery(window.location.href)],\n // The initial page URL.\n ['performance navigation entries', () => {\n const [entry] = performance.getEntriesByType('navigation') as PerformanceNavigationTiming[];\n return entry && urlToQuery(entry.name);\n }],\n // Value saved by this package previously.\n ['session storage', () => readSessionStorage(STORAGE_KEY)],\n // Value saved by the official SDK.\n ['official SDK session storage', () => {\n const raw = readSessionStorage('__telegram__initParams');\n if (!raw) {\n return;\n }\n const params = JSON.parse(raw) as Record<string, unknown> | null;\n return params\n ? new URLSearchParams(\n Object.entries(params).filter((entry): entry is [string, string] => {\n return typeof entry[1] === 'string';\n }),\n ).toString()\n : undefined;\n }],\n];\n\n/**\n * Saves launch parameters to the session storage, so they could be retrieved after the page\n * reload.\n * @param value - launch parameters query.\n */\nexport function saveLaunchParams(value: string): void {\n try {\n sessionStorage.setItem(STORAGE_KEY, value);\n } catch {\n // Session storage may be unavailable.\n }\n}\n\n/**\n * Retrieves launch parameters from any known source and saves them in the session storage.\n */\nfunction retrieve(): Result<LaunchParamsRetrieveError, { raw: string; parsed: LaunchParams }> {\n const errors: { source: string; error: unknown }[] = [];\n for (const [source, retrieveSource] of sources) {\n let raw: string | null | undefined;\n try {\n raw = retrieveSource();\n } catch (error) {\n errors.push({ source, error });\n continue;\n }\n if (!raw) {\n errors.push({ source, error: new Error('Source is empty') });\n continue;\n }\n const parsed = safeParseLaunchParams(raw);\n if (!parsed.ok) {\n errors.push({ source, error: parsed.error });\n continue;\n }\n saveLaunchParams(raw);\n return ok({ raw, parsed: parsed.data });\n }\n return err(new LaunchParamsRetrieveError(errors));\n}\n\n/**\n * Retrieves launch parameters in the raw format from any known source and saves them in\n * the session storage.\n * @returns Launch parameters, or `LaunchParamsRetrieveError` if they were not found.\n */\nexport function safeRetrieveRawLaunchParams(): Result<LaunchParamsRetrieveError, string> {\n const result = retrieve();\n return result.ok ? ok(result.data.raw) : result;\n}\n\n/**\n * Retrieves launch parameters in the raw format from any known source and saves them in\n * the session storage.\n *\n * Throwing version of `safeRetrieveRawLaunchParams`.\n * @throws {LaunchParamsRetrieveError} Launch parameters were not found.\n */\nexport const retrieveRawLaunchParams = /* @__PURE__ */ throwing(safeRetrieveRawLaunchParams);\n\n/**\n * Retrieves launch parameters from any known source.\n * @returns Launch parameters, or `LaunchParamsRetrieveError` if they were not found.\n */\nexport function safeRetrieveLaunchParams(): Result<LaunchParamsRetrieveError, LaunchParams> {\n const result = retrieve();\n return result.ok ? ok(result.data.parsed) : result;\n}\n\n/**\n * Retrieves launch parameters from any known source.\n *\n * Throwing version of `safeRetrieveLaunchParams`.\n * @throws {LaunchParamsRetrieveError} Launch parameters were not found.\n */\nexport const retrieveLaunchParams = /* @__PURE__ */ throwing(safeRetrieveLaunchParams);\n\n/**\n * Retrieves init data in the raw format. Pass it to your server to authorize the user.\n * @returns Init data (`undefined` if it is missing in launch parameters), or\n * `LaunchParamsRetrieveError` if launch parameters were not found.\n */\nexport function safeRetrieveRawInitData(): Result<LaunchParamsRetrieveError, string | undefined> {\n const result = retrieve();\n return result.ok ? ok(result.data.parsed.tgWebAppData) : result;\n}\n\n/**\n * Retrieves init data in the raw format. Pass it to your server to authorize the user.\n *\n * Throwing version of `safeRetrieveRawInitData`.\n * @returns Init data, or `undefined` if it is missing in launch parameters.\n * @throws {LaunchParamsRetrieveError} Launch parameters were not found.\n */\nexport const retrieveRawInitData = /* @__PURE__ */ throwing(safeRetrieveRawInitData);\n","export interface Logger {\n log: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n error: (...args: unknown[]) => void;\n}\n\nconst PREFIX = [\n '%cBridge',\n 'background:#9147ff;color:white;font-weight:bold;padding:0 5px;border-radius:5px',\n];\n\nconst consoleLogger: Logger = {\n log: (...args) => console.log(...PREFIX, ...args),\n warn: (...args) => console.warn(...PREFIX, ...args),\n error: (...args) => console.error(...PREFIX, ...args),\n};\n\nlet debug = false;\nlet logger = consoleLogger;\n\n/**\n * Enables or disables debug mode. In debug mode, the package logs every outgoing method call\n * and every incoming event.\n * @param value - should the debug mode be enabled.\n */\nexport function setDebug(value: boolean): void {\n debug = value;\n}\n\n/**\n * @returns True if the debug mode is enabled.\n */\nexport function isDebug(): boolean {\n return debug;\n}\n\n/**\n * Replaces the package logger. Pass nothing to restore the default one.\n * @param value - logger to use.\n */\nexport function setLogger(value: Logger = consoleLogger): void {\n logger = value;\n}\n\n/**\n * @returns The current package logger.\n */\nexport function getLogger(): Logger {\n return logger;\n}\n\n/**\n * Logs a message only in debug mode.\n * @param args - values to log.\n */\nexport function debugLog(...args: unknown[]): void {\n debug && logger.log(...args);\n}\n","/**\n * Helpers allowing the package to receive events from Telegram clients together with other\n * libraries (usually, the official SDK) without overwriting each other's handlers.\n */\n\ntype AnyFn = (...args: any[]) => void;\ntype AnyObj = Record<string, any>;\nexport type Restore = () => void;\n\n/**\n * Makes `obj[key]` always return a function calling `fn` and then the function assigned to\n * `obj[key]` by someone else (before or after the call). Assigning a new function replaces only\n * the external one.\n * @returns Function restoring `obj[key]` to the external function.\n */\nexport function composeFn(obj: AnyObj, key: string, fn: AnyFn): Restore {\n let external: AnyFn | undefined = typeof obj[key] === 'function' ? obj[key] : undefined;\n const composed: AnyFn = (...args) => {\n fn(...args);\n external && external(...args);\n };\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => composed,\n set(value) {\n external = typeof value === 'function' ? value : undefined;\n },\n });\n return () => {\n if (external) {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: external,\n });\n } else {\n delete obj[key];\n }\n };\n}\n\n/**\n * Makes assignments to `obj[key]` merge the assigned object into the current one instead of\n * replacing it. It protects properties defined via `composeFn` from being overwritten together\n * with the owning object.\n * @returns Function restoring `obj[key]` to a plain property.\n */\nexport function mergeOnAssign(obj: AnyObj, key: string): Restore {\n const value: AnyObj = obj[key];\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n get: () => value,\n set(next) {\n if (next && typeof next === 'object') {\n Object.assign(value, next);\n }\n },\n });\n return () => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value,\n });\n };\n}\n\n/**\n * Creates an empty object in `obj[key]` if it is missing.\n * @returns Function removing the created object if it is still empty.\n */\nexport function ensureObject(obj: AnyObj, key: string): Restore {\n if (obj[key]) {\n return () => undefined;\n }\n obj[key] = {};\n return () => {\n const value: unknown = obj[key];\n if (value && typeof value === 'object' && !Object.keys(value).length) {\n delete obj[key];\n }\n };\n}\n","import {\n boolean,\n type GenericSchema,\n looseObject,\n nullish,\n number,\n optional,\n parse,\n parseJson,\n pipe,\n safeParse,\n string,\n transform,\n unknown,\n} from 'valibot';\n\nimport { isIframe, telegramWindow } from './env.js';\nimport { debugLog, getLogger } from './logger.js';\nimport { ThemeParamsSchema } from './theme-params.js';\nimport type {\n AnyEventListener,\n EventListener,\n EventListenerPayload,\n EventName,\n EventPayload,\n} from './types/index.js';\nimport { composeFn, ensureObject, mergeOnAssign, type Restore } from './window-hooks.js';\n\nexport interface OnOptions {\n /**\n * Remove the listener after the first call.\n */\n once?: boolean;\n /**\n * Signal removing the listener when aborted.\n */\n signal?: AbortSignal;\n}\n\n/**\n * Arguments following the event name when emitting the event.\n */\nexport type EmitEventArgs<E extends EventName> = [EventPayload<E>] extends [never]\n ? []\n : [payload: EventPayload<E>];\n\ntype Listener = (payload: any) => void;\n\n/**\n * Event name to its listeners. The value is a listener-to-once-flag map.\n */\nconst listeners = new Map<string, Map<Listener, boolean>>();\nconst anyListeners = new Map<AnyEventListener, boolean>();\nlet restoreWindow: Restore | undefined;\n\n/**\n * Schema of a message sent by Telegram Web clients via `window.postMessage`.\n */\nexport const MiniAppsMessageSchema = pipe(\n string(),\n parseJson(),\n looseObject({ eventType: string(), eventData: optional(unknown()) }),\n);\n\n/**\n * Validates event payloads and fixes known issues of the payloads sent by some Telegram clients.\n */\nconst payloadSchemas: { [E in EventName]?: GenericSchema<unknown, EventListenerPayload<E>> } = {\n clipboard_text_received: looseObject({\n req_id: string(),\n data: nullish(string()),\n }),\n custom_method_invoked: looseObject({\n req_id: string(),\n result: optional(unknown()),\n error: optional(string()),\n }),\n popup_closed: pipe(\n nullish(looseObject({ button_id: nullish(string()) })),\n transform(data => (data && typeof data.button_id === 'string' ? { button_id: data.button_id } : {})),\n ),\n theme_changed: looseObject({ theme_params: ThemeParamsSchema }),\n viewport_changed: nullish(\n looseObject({\n height: number(),\n width: nullish(number(), () => window.innerWidth),\n is_expanded: boolean(),\n is_state_stable: boolean(),\n }),\n // macOS client sends null instead of the payload.\n () => ({\n height: window.innerHeight,\n width: window.innerWidth,\n is_expanded: true,\n is_state_stable: true,\n }),\n ),\n};\n\nfunction callListener(listener: (value: any) => void, value: unknown): void {\n try {\n listener(value);\n } catch (e) {\n getLogger().error('An event listener threw an error:', e);\n }\n}\n\nfunction callListeners<L>(map: Map<L, boolean>, value: unknown): void {\n // Copying the entries, so listeners added or removed during the call don't affect it.\n [...map].forEach(([listener, once]) => {\n if (map.get(listener) === undefined) {\n return;\n }\n once && map.delete(listener);\n callListener(listener as (value: unknown) => void, value);\n });\n}\n\n/**\n * Processes an event received from the Telegram client.\n */\nfunction receiveEvent(name: string, data?: unknown): void {\n const schema = payloadSchemas[name as EventName];\n let payload: unknown;\n try {\n payload = schema ? parse(schema, data) : data;\n } catch (e) {\n getLogger().error(`Unable to process the \"${name}\" event payload:`, data, e);\n return;\n }\n debugLog('Event received:', name, payload);\n\n const eventListeners = listeners.get(name);\n if (eventListeners) {\n callListeners(eventListeners, payload);\n !eventListeners.size && listeners.delete(name);\n }\n callListeners(anyListeners, { name, payload });\n uninstallIfIdle();\n}\n\nfunction onMessage(event: MessageEvent): void {\n if (event.source !== window.parent) {\n return;\n }\n // Messages may be sent by any other code. We are ignoring unknown ones.\n const message = safeParse(MiniAppsMessageSchema, event.data);\n message.success && receiveEvent(message.output.eventType, message.output.eventData);\n}\n\n/**\n * Starts receiving events from the Telegram client.\n *\n * Native clients call one of `window.Telegram.WebView.receiveEvent`,\n * `window.TelegramGameProxy.receiveEvent` or `window.TelegramGameProxy_receiveEvent`. Web\n * clients post messages to the window. The official SDK defines the same functions, so they\n * are composed to keep both working regardless of which one was loaded first.\n */\nfunction install(): Restore {\n const w = telegramWindow() as unknown as Record<string, any>;\n const restores: Restore[] = [\n ensureObject(w, 'Telegram'),\n ensureObject(w.Telegram, 'WebView'),\n mergeOnAssign(w.Telegram, 'WebView'),\n composeFn(w.Telegram.WebView, 'receiveEvent', receiveEvent),\n ensureObject(w, 'TelegramGameProxy'),\n mergeOnAssign(w, 'TelegramGameProxy'),\n composeFn(w.TelegramGameProxy, 'receiveEvent', receiveEvent),\n composeFn(w, 'TelegramGameProxy_receiveEvent', receiveEvent),\n ];\n window.addEventListener('message', onMessage);\n\n return () => {\n window.removeEventListener('message', onMessage);\n restores.reverse().forEach(restore => restore());\n };\n}\n\nfunction installIfNeeded(): void {\n restoreWindow ||= install();\n}\n\nfunction uninstallIfIdle(): void {\n if (restoreWindow && !listeners.size && !anyListeners.size) {\n restoreWindow();\n restoreWindow = undefined;\n }\n}\n\nfunction subscribe(add: () => void, remove: () => void, options: OnOptions): VoidFunction {\n const { signal } = options;\n if (signal && signal.aborted) {\n return () => undefined;\n }\n installIfNeeded();\n add();\n\n const off = () => {\n remove();\n uninstallIfIdle();\n signal && signal.removeEventListener('abort', off);\n };\n signal && signal.addEventListener('abort', off);\n return off;\n}\n\n/**\n * Adds a listener of the specified Mini Apps event. Adding the same listener twice has no\n * effect.\n * @param event - event name.\n * @param listener - event listener.\n * @param options - additional options.\n * @returns Function removing the listener.\n * @see https://docs.telegram-mini-apps.com/platform/events\n */\nexport function onEvent<E extends EventName>(\n event: E,\n listener: EventListener<E>,\n options: OnOptions = {},\n): VoidFunction {\n return subscribe(\n () => {\n const map = listeners.get(event) || new Map<Listener, boolean>();\n listeners.set(event, map);\n map.set(listener as Listener, !!options.once);\n },\n () => offEvent(event, listener),\n options,\n );\n}\n\n/**\n * Removes a listener of the specified Mini Apps event.\n * @param event - event name.\n * @param listener - event listener.\n */\nexport function offEvent<E extends EventName>(event: E, listener: EventListener<E>): void {\n const map = listeners.get(event);\n if (map) {\n map.delete(listener as Listener);\n !map.size && listeners.delete(event);\n }\n uninstallIfIdle();\n}\n\n/**\n * Adds a listener of all Mini Apps events. Adding the same listener twice has no effect.\n * @param listener - events listener.\n * @param options - additional options.\n * @returns Function removing the listener.\n */\nexport function onAnyEvent(listener: AnyEventListener, options: OnOptions = {}): VoidFunction {\n return subscribe(\n () => anyListeners.set(listener, !!options.once),\n () => offAnyEvent(listener),\n options,\n );\n}\n\n/**\n * Removes a listener of all Mini Apps events.\n * @param listener - events listener.\n */\nexport function offAnyEvent(listener: AnyEventListener): void {\n anyListeners.delete(listener);\n uninstallIfIdle();\n}\n\n/**\n * Removes all event listeners and stops receiving events from the Telegram client.\n */\nexport function offAll(): void {\n listeners.clear();\n anyListeners.clear();\n uninstallIfIdle();\n}\n\n/**\n * Emits an event as if it was sent by the Telegram client. Use it to imitate the Telegram\n * client, for example, in the `mockTelegramEnv` function `onEvent` option.\n *\n * The event is delivered the same way a real Telegram client would deliver it, so other\n * libraries (e.g. the official SDK) receive it too.\n * @param event - event name.\n * @param args - event payload.\n */\nexport function emitEvent<E extends EventName>(event: E, ...args: EmitEventArgs<E>): void {\n const [eventData] = args as [unknown?];\n const receive = telegramWindow().Telegram?.WebView?.receiveEvent;\n if (!isIframe() && typeof receive === 'function') {\n receive(event, eventData);\n return;\n }\n window.dispatchEvent(new MessageEvent('message', {\n data: JSON.stringify({ eventType: event, eventData }),\n source: window.parent,\n }));\n}\n","import { isIframe, telegramWindow } from './env.js';\nimport { UnknownEnvError } from './errors.js';\nimport { debugLog } from './logger.js';\nimport type { MethodArgs, MethodName } from './types/index.js';\n\nlet targetOrigin = 'https://web.telegram.org';\n\n/**\n * Sets the target origin used to post messages to the parent window in Telegram Web clients.\n *\n * You don't need to change it until you know what you are doing.\n * @param origin - target origin. Default: `https://web.telegram.org`.\n */\nexport function setTargetOrigin(origin: string): void {\n targetOrigin = origin;\n}\n\n/**\n * @returns The target origin used to post messages to the parent window.\n */\nexport function getTargetOrigin(): string {\n return targetOrigin;\n}\n\nexport type PostMessageFn = (message: string, targetOrigin: string) => void;\n\nlet postMessage: PostMessageFn = (message, origin) => {\n window.parent.postMessage(message, origin);\n};\n\n/**\n * Replaces the function posting messages to the parent window in Telegram Web clients.\n * @param fn - function to use.\n * @returns Function restoring the previous implementation.\n * @internal\n */\nexport function setPostMessage(fn: PostMessageFn): VoidFunction {\n const previous = postMessage;\n postMessage = fn;\n return () => {\n postMessage = previous;\n };\n}\n\n/**\n * @returns The current function posting messages to the parent window.\n * @internal\n */\nexport function getPostMessage(): PostMessageFn {\n return postMessage;\n}\n\nexport type PostEventFn = <M extends MethodName>(method: M, ...args: MethodArgs<M>) => void;\n\n/**\n * Calls a Mini Apps method.\n *\n * Depending on the environment, the method is sent:\n * - via `window.parent.postMessage` in Telegram Web clients;\n * - via `window.TelegramWebviewProxy.postEvent` in Telegram for iOS, macOS, Android and Desktop;\n * - via `window.external.notify` in Telegram for Windows Phone.\n *\n * @param method - method name.\n * @param args - method parameters.\n * @throws {UnknownEnvError} The current environment is not a Telegram Mini App.\n * @see https://docs.telegram-mini-apps.com/platform/methods\n */\nexport const postEvent: PostEventFn = (method, ...args) => {\n const [params = ''] = args as [unknown?];\n debugLog('Posting method:', method, params);\n\n const message = JSON.stringify({ eventType: method, eventData: params });\n\n // Unlike the official SDK, the iframe check goes first. Telegram clients also define\n // TelegramWebviewProxy inside iframes embedded by a mini app, letting them bypass the mini app.\n // Calls must go through the top-level mini app only, so an iframe always posts to its parent.\n if (isIframe()) {\n postMessage(message, targetOrigin);\n return;\n }\n\n const w = telegramWindow();\n if (w.TelegramWebviewProxy && typeof w.TelegramWebviewProxy.postEvent === 'function') {\n w.TelegramWebviewProxy.postEvent(method, JSON.stringify(params));\n return;\n }\n if (w.external && typeof w.external.notify === 'function') {\n w.external.notify(message);\n return;\n }\n throw new UnknownEnvError();\n};\n","import { TimeoutError } from './errors.js';\nimport { onEvent } from './events.js';\nimport { postEvent as defaultPostEvent, type PostEventFn } from './post-event.js';\nimport { err, ok, type Result, unwrap } from './result.js';\nimport type {\n EventListenerPayload,\n EventName,\n MethodName,\n MethodNameWithRequiredParams,\n MethodParams,\n} from './types/index.js';\n\ntype AnyEventName = EventName | EventName[];\n\n/**\n * Value captured by the `request` function. For a list of tracked events, it also contains\n * the event name.\n */\nexport type RequestResult<E extends AnyEventName> = E extends (infer U extends EventName)[]\n ? { [K in U]: { event: K; payload: EventListenerPayload<K> } }[U]\n : E extends EventName ? EventListenerPayload<E> : never;\n\nexport interface RequestOptions<E extends AnyEventName> {\n /**\n * Function returning true if the received event should be captured. If omitted, the first\n * tracked event is captured.\n */\n capture?: (value: RequestResult<E>) => boolean;\n /**\n * Time in milliseconds to wait for the event. When reached, the request fails with\n * `TimeoutError`.\n */\n timeout?: number;\n /**\n * Signal to abort the request. When aborted, the request is rejected with `signal.reason`.\n */\n signal?: AbortSignal;\n /**\n * Custom function to call the method.\n */\n postEvent?: PostEventFn;\n}\n\n/**\n * Options of the `request` function. The `params` option is required only if the method\n * requires parameters.\n */\nexport type RequestFnOptions<M extends MethodName, E extends AnyEventName> =\n RequestOptions<E> & ([MethodParams<M>] extends [never]\n ? { params?: never }\n : M extends MethodNameWithRequiredParams\n ? { params: MethodParams<M> }\n : { params?: MethodParams<M> });\n\nexport type RequestFnArgs<M extends MethodName, E extends AnyEventName> =\n M extends MethodNameWithRequiredParams\n ? [options: RequestFnOptions<M, E>]\n : [options?: RequestFnOptions<M, E>];\n\n/**\n * Calls a Mini Apps method and waits for the specified event (or one of the events) to occur.\n *\n * Listeners are added before the method is called, so events emitted synchronously are\n * captured too.\n *\n * The request is rejected with `signal.reason` if it was aborted, and with the error thrown by\n * `postEvent` or the `capture` option.\n * @param method - method name.\n * @param events - event or events to wait for.\n * @param args - additional options.\n * @returns For a single event, its payload. For a list of events, an object with the captured\n * event name and payload. If the timeout was reached, `TimeoutError`.\n * @example\n * const result = await safeRequest('web_app_request_phone', 'phone_requested', { timeout: 5000 });\n * if (!result.ok) {\n * console.log('The user didn\\'t respond in time');\n * }\n */\nexport function safeRequest<M extends MethodName, E extends AnyEventName>(\n method: M,\n events: E,\n ...args: RequestFnArgs<M, E>\n): Promise<Result<TimeoutError, RequestResult<E>>> {\n const {\n capture = () => true,\n timeout,\n signal,\n params,\n postEvent = defaultPostEvent,\n } = (args[0] || {}) as RequestOptions<E> & { params?: unknown };\n\n return new Promise<Result<TimeoutError, RequestResult<E>>>((resolve, reject) => {\n if (signal && signal.aborted) {\n // Rejecting with the abort reason is the standard behavior of abortable APIs.\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n return reject(signal.reason);\n }\n\n const cleanups: VoidFunction[] = [];\n const settle = <T>(fn: (value: T) => void) => (value: T) => {\n cleanups.forEach(cleanup => cleanup());\n fn(value);\n };\n const onResolve = settle(resolve);\n const onReject = settle(reject);\n\n const isList = Array.isArray(events);\n (isList ? events : [events]).forEach(event => {\n cleanups.push(onEvent(event, payload => {\n const value = (isList ? { event, payload } : payload) as RequestResult<E>;\n try {\n capture(value) && onResolve(ok(value));\n } catch (e) {\n onReject(e);\n }\n }));\n });\n\n if (timeout) {\n const timeoutId = setTimeout(() => onResolve(err(new TimeoutError(timeout))), timeout);\n cleanups.push(() => clearTimeout(timeoutId));\n }\n if (signal) {\n const onAbort = () => onReject(signal.reason);\n signal.addEventListener('abort', onAbort);\n cleanups.push(() => signal.removeEventListener('abort', onAbort));\n }\n\n try {\n (postEvent as (method: string, params?: unknown) => void)(method, params);\n } catch (e) {\n onReject(e);\n }\n });\n}\n\n/**\n * Calls a Mini Apps method and waits for the specified event (or one of the events) to occur.\n *\n * Throwing version of `safeRequest`.\n * @param method - method name.\n * @param events - event or events to wait for.\n * @param args - additional options.\n * @returns For a single event, its payload. For a list of events, an object with the captured\n * event name and payload.\n * @throws {TimeoutError} The timeout was reached.\n * @example\n * const { button_id } = await request('web_app_open_popup', 'popup_closed', {\n * params: { title: 'Hello', message: 'World', buttons: [{ id: 'ok', type: 'ok' }] },\n * });\n * @example\n * const result = await request('web_app_request_phone', ['phone_requested'], { timeout: 5000 });\n */\nexport async function request<M extends MethodName, E extends AnyEventName>(\n method: M,\n events: E,\n ...args: RequestFnArgs<M, E>\n): Promise<RequestResult<E>> {\n return unwrap(await safeRequest(method, events, ...args));\n}\n\n/**\n * @returns A new unique request identifier. Use it for methods requiring the `req_id` parameter.\n */\nexport function createRequestId(): string {\n return typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID()\n : `${Date.now().toString(36)}${Math.random().toString(36)\n .slice(2)}`;\n}\n\n/**\n * @returns Function to use in the `request` function `capture` option to capture the event\n * with the specified request identifier.\n * @param reqId - request identifier.\n */\nexport function captureSameReq(reqId: string): (payload: { req_id: string }) => boolean {\n return payload => payload.req_id === reqId;\n}\n","import { TimeoutError, UnknownEnvError } from './errors.js';\nimport { retrieveRawLaunchParams } from './launch-params.js';\nimport { request } from './request.js';\n\n/**\n * Window properties used by the Telegram clients and the official SDK to communicate with\n * a mini app.\n */\nexport interface TelegramWindow {\n /**\n * Telegram for iOS, macOS, Android and Telegram Desktop.\n */\n TelegramWebviewProxy?: {\n postEvent: (eventType: string, eventData: string) => void;\n };\n /**\n * Telegram for Windows Phone.\n */\n external?: {\n notify?: (message: string) => void;\n };\n Telegram?: {\n WebView?: {\n receiveEvent?: ReceiveEventFn;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n };\n TelegramGameProxy?: {\n receiveEvent?: ReceiveEventFn;\n [key: string]: unknown;\n };\n TelegramGameProxy_receiveEvent?: ReceiveEventFn;\n}\n\nexport type ReceiveEventFn = (eventType: string, eventData?: unknown) => void;\n\n/**\n * @returns The current window with Telegram-specific properties typed.\n */\nexport function telegramWindow(): Window & TelegramWindow {\n return window;\n}\n\n/**\n * @returns True if the current environment is an iframe. Telegram Web clients open mini apps\n * in an iframe.\n * @see https://stackoverflow.com/a/326076\n */\nexport function isIframe(): boolean {\n try {\n return window.self !== window.top;\n } catch {\n return true;\n }\n}\n\n/**\n * @returns True if the `window.TelegramWebviewProxy.postEvent` function exists. Native Telegram\n * clients define it to receive method calls.\n */\nexport function hasWebviewProxy(): boolean {\n return typeof telegramWindow().TelegramWebviewProxy?.postEvent === 'function';\n}\n\n/**\n * @returns True if the current environment looks like a Telegram Mini App: the Telegram webview\n * proxy is defined, or launch parameters are available.\n *\n * Use `isTMAAsync` for a stricter check.\n */\nexport function isTMA(): boolean {\n if (hasWebviewProxy()) {\n return true;\n }\n try {\n retrieveRawLaunchParams();\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Checks if the current environment is a Telegram Mini App by calling a method and waiting for\n * the Telegram client response.\n * @param options - additional options.\n */\nexport async function isTMAAsync(options: {\n /**\n * Time in milliseconds to wait for the response.\n * @default 100\n */\n timeout?: number;\n /**\n * Signal to abort the check.\n */\n signal?: AbortSignal;\n} = {}): Promise<boolean> {\n if (hasWebviewProxy()) {\n return true;\n }\n try {\n await request('web_app_request_theme', 'theme_changed', { timeout: 100, ...options });\n return true;\n } catch (e) {\n if (TimeoutError.is(e) || UnknownEnvError.is(e)) {\n return false;\n }\n throw e;\n }\n}\n","import { InvokeCustomMethodFailedError, type TimeoutError } from './errors.js';\nimport { captureSameReq, createRequestId, type RequestOptions, safeRequest } from './request.js';\nimport { err, ok, type Result, unwrap } from './result.js';\nimport type { CustomMethodName, CustomMethodParams } from './types/index.js';\n\nexport interface InvokeCustomMethodOptions\n extends Omit<RequestOptions<'custom_method_invoked'>, 'capture'> {\n /**\n * Request identifier. Generated automatically if omitted.\n */\n requestId?: string;\n}\n\n/**\n * Invokes a custom method and returns its result.\n * @param method - method name.\n * @param params - method parameters.\n * @param options - additional options.\n * @returns Method result, or one of the errors:\n * - `InvokeCustomMethodFailedError`: the method returned an error;\n * - `TimeoutError`: the timeout was reached.\n */\nexport function safeInvokeCustomMethod<M extends CustomMethodName>(\n method: M,\n params: CustomMethodParams<M>,\n options?: InvokeCustomMethodOptions,\n): Promise<Result<InvokeCustomMethodFailedError | TimeoutError, unknown>>;\nexport function safeInvokeCustomMethod(\n method: string,\n params: object,\n options?: InvokeCustomMethodOptions,\n): Promise<Result<InvokeCustomMethodFailedError | TimeoutError, unknown>>;\nexport async function safeInvokeCustomMethod(\n method: string,\n params: object,\n { requestId = createRequestId(), ...options }: InvokeCustomMethodOptions = {},\n): Promise<Result<InvokeCustomMethodFailedError | TimeoutError, unknown>> {\n const response = await safeRequest(\n 'web_app_invoke_custom_method',\n 'custom_method_invoked',\n {\n ...options,\n params: { method, params, req_id: requestId },\n capture: captureSameReq(requestId),\n },\n );\n if (!response.ok) {\n return response;\n }\n const { result, error } = response.data;\n return error ? err(new InvokeCustomMethodFailedError(error)) : ok(result);\n}\n\n/**\n * Invokes a custom method and returns its result.\n *\n * Throwing version of `safeInvokeCustomMethod`.\n * @param method - method name.\n * @param params - method parameters.\n * @param options - additional options.\n * @throws {InvokeCustomMethodFailedError} The method returned an error.\n * @throws {TimeoutError} The timeout was reached.\n */\nexport function invokeCustomMethod<M extends CustomMethodName>(\n method: M,\n params: CustomMethodParams<M>,\n options?: InvokeCustomMethodOptions,\n): Promise<unknown>;\nexport function invokeCustomMethod(\n method: string,\n params: object,\n options?: InvokeCustomMethodOptions,\n): Promise<unknown>;\nexport async function invokeCustomMethod(\n method: string,\n params: object,\n options?: InvokeCustomMethodOptions,\n): Promise<unknown> {\n return unwrap(await safeInvokeCustomMethod(method, params, options));\n}\n","import { safeParse } from 'valibot';\n\nimport { isIframe, telegramWindow, type TelegramWindow } from './env.js';\nimport { MiniAppsMessageSchema } from './events.js';\nimport {\n parseLaunchParams,\n saveLaunchParams,\n serializeLaunchParams,\n type LaunchParams,\n} from './launch-params.js';\nimport { debugLog } from './logger.js';\nimport { getPostMessage, setPostMessage } from './post-event.js';\nimport type { MethodName, MethodParams } from './types/index.js';\n\n/**\n * Mini Apps method call intercepted by `mockTelegramEnv`.\n */\nexport type MockedMethodCall =\n | {\n [M in MethodName]: {\n name: M;\n params: [MethodParams<M>] extends [never] ? undefined : MethodParams<M>;\n };\n }[MethodName]\n | { name: string & {}; params: unknown };\n\nexport interface MockTelegramEnvOptions {\n /**\n * Launch parameters to mock. They are saved in the session storage, so the launch parameters\n * retrieving functions return them.\n */\n launchParams?: string | URLSearchParams | LaunchParams;\n /**\n * Function called whenever the mini app calls a Mini Apps method. Use `emitEvent` to respond\n * to the call as the Telegram client would do.\n * @param call - called method name and its parameters.\n * @param next - function passing the call to the original transport, if there is one.\n */\n onMethod?: (call: MockedMethodCall, next: VoidFunction) => void;\n}\n\n/**\n * Mocks the environment to imitate the Telegram client.\n *\n * Use it to develop the app outside Telegram, or to intercept method calls in Telegram, for\n * example, to fix a client not responding to some method.\n *\n * Outside iframes, calls are intercepted by defining `window.TelegramWebviewProxy`, so method\n * calls performed by other libraries (e.g. the official SDK) are intercepted too. In Telegram Web\n * (iframe), only calls performed by this package are intercepted.\n * @param options - mock options.\n * @returns Function reverting the mocked method calls handling. Launch parameters stay saved.\n * When mocking several times, revert in the reverse order.\n * @example\n * mockTelegramEnv({\n * launchParams: {\n * tgWebAppPlatform: 'tdesktop',\n * tgWebAppVersion: '9.0',\n * tgWebAppThemeParams: { bg_color: '#ffffff' },\n * },\n * onMethod({ name }) {\n * if (name === 'web_app_request_theme') {\n * emitEvent('theme_changed', { theme_params: { bg_color: '#ffffff' } });\n * }\n * },\n * });\n */\nexport function mockTelegramEnv(\n { launchParams, onMethod }: MockTelegramEnvOptions = {},\n): VoidFunction {\n if (launchParams) {\n const query = typeof launchParams === 'string' || launchParams instanceof URLSearchParams\n ? launchParams.toString()\n : serializeLaunchParams(launchParams);\n // Throws if the launch parameters are invalid.\n parseLaunchParams(query);\n saveLaunchParams(query);\n }\n\n if (isIframe()) {\n // In Telegram Web, without a handler, there is nothing to intercept.\n if (!onMethod) {\n return () => undefined;\n }\n const original = getPostMessage();\n return setPostMessage((message, targetOrigin) => {\n const next = () => original(message, targetOrigin);\n const call = safeParse(MiniAppsMessageSchema, message);\n if (!call.success) {\n return next();\n }\n onMethod({\n name: call.output.eventType,\n params: normalizeParams(call.output.eventData),\n }, next);\n });\n }\n\n const w = telegramWindow();\n const original = w.TelegramWebviewProxy;\n const proxy: TelegramWindow['TelegramWebviewProxy'] = {\n postEvent(eventType, eventData) {\n const next = () => original && original.postEvent(eventType, eventData);\n onMethod\n ? onMethod({\n name: eventType,\n params: normalizeParams(eventData ? JSON.parse(eventData) : undefined),\n }, next)\n : next();\n },\n };\n w.TelegramWebviewProxy = proxy;\n debugLog('Environment was mocked');\n\n return () => {\n if (w.TelegramWebviewProxy === proxy) {\n original ? (w.TelegramWebviewProxy = original) : delete w.TelegramWebviewProxy;\n }\n };\n}\n\n/**\n * The official SDK and this package pass an empty string for methods without parameters.\n */\nfunction normalizeParams(value: unknown): unknown {\n return value === '' ? undefined : value;\n}\n","import { StartParamTooLongError } from './errors.js';\nimport { err, ok, type Result, throwing } from './result.js';\n\nconst MAX_LENGTH = 512;\n\n/**\n * Encodes a string to base64url.\n * @param value - value to encode.\n * @see https://datatracker.ietf.org/doc/html/rfc4648#section-5\n */\nexport function encodeBase64Url(value: string): string {\n let binary = '';\n new TextEncoder().encode(value)\n .forEach(byte => {\n binary += String.fromCharCode(byte);\n });\n return btoa(binary).replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '');\n}\n\n/**\n * Decodes a base64url string.\n * @param value - value to decode.\n * @throws {DOMException} The value is not a valid base64url string.\n * @throws {TypeError} The decoded value is not a valid UTF-8 string.\n */\nexport function decodeBase64Url(value: string): string {\n const binary = atob(value.replace(/-/g, '+').replace(/_/g, '/'));\n return new TextDecoder('utf-8', { fatal: true }).decode(\n Uint8Array.from(binary, char => char.charCodeAt(0)),\n );\n}\n\n/**\n * @returns True if the value can be used to create a start parameter.\n * @param value - value to check.\n */\nexport function isSafeToCreateStartParam(value: string): boolean {\n return encodeBase64Url(value).length <= MAX_LENGTH;\n}\n\n/**\n * Creates a start parameter from the value. Non-string values are converted to JSON.\n * @param value - value to encode.\n * @returns Start parameter, or `StartParamTooLongError` if the encoded value exceeds 512\n * characters.\n * @see https://docs.telegram-mini-apps.com/platform/start-parameter\n */\nexport function safeCreateStartParam(value: unknown): Result<StartParamTooLongError, string> {\n const encoded = encodeBase64Url(typeof value === 'string' ? value : JSON.stringify(value));\n return encoded.length > MAX_LENGTH\n ? err(new StartParamTooLongError(encoded.length))\n : ok(encoded);\n}\n\n/**\n * Creates a start parameter from the value. Non-string values are converted to JSON.\n *\n * Throwing version of `safeCreateStartParam`.\n * @param value - value to encode.\n * @throws {StartParamTooLongError} The encoded value exceeds 512 characters.\n * @see https://docs.telegram-mini-apps.com/platform/start-parameter\n */\nexport const createStartParam = /* @__PURE__ */ throwing(safeCreateStartParam);\n\n/**\n * Decodes a start parameter created with `createStartParam`.\n * @param value - start parameter.\n * @param parse - `json` to parse the decoded value as JSON, or a custom parser.\n * @throws {DOMException} The value is not a valid base64url string.\n */\nexport function decodeStartParam(value: string): string;\nexport function decodeStartParam(value: string, parse: 'json'): unknown;\nexport function decodeStartParam<T>(value: string, parse: (value: string) => T): T;\nexport function decodeStartParam(\n value: string,\n parse?: 'json' | ((value: string) => unknown),\n): unknown {\n const decoded = decodeBase64Url(value);\n if (!parse) {\n return decoded;\n }\n return parse === 'json' ? JSON.parse(decoded) : parse(decoded);\n}\n","import { MethodParameterUnsupportedError, MethodUnsupportedError } from './errors.js';\nimport { getLogger } from './logger.js';\nimport { postEvent, type PostEventFn } from './post-event.js';\nimport type { MethodName, Version } from './types/index.js';\n\n/**\n * Mini Apps version to the methods and method parameters released in it.\n */\nconst releases = {\n '6.0': [\n 'iframe_ready',\n 'iframe_will_reload',\n 'web_app_close',\n 'web_app_data_send',\n 'web_app_expand',\n 'web_app_open_link',\n 'web_app_ready',\n 'web_app_request_theme',\n 'web_app_request_viewport',\n 'web_app_setup_main_button',\n 'web_app_setup_closing_behavior',\n ],\n 6.1: [\n 'web_app_open_tg_link',\n 'web_app_open_invoice',\n 'web_app_setup_back_button',\n 'web_app_set_background_color',\n 'web_app_set_header_color',\n 'web_app_trigger_haptic_feedback',\n ],\n 6.2: ['web_app_open_popup'],\n 6.4: [\n 'web_app_close_scan_qr_popup',\n 'web_app_open_scan_qr_popup',\n 'web_app_read_text_from_clipboard',\n ['web_app_open_link', 'try_instant_view'],\n ],\n 6.7: ['web_app_switch_inline_query'],\n 6.9: [\n 'web_app_invoke_custom_method',\n 'web_app_request_write_access',\n 'web_app_request_phone',\n ['web_app_set_header_color', 'color'],\n ],\n '6.10': ['web_app_setup_settings_button'],\n 7.2: [\n 'web_app_biometry_get_info',\n 'web_app_biometry_open_settings',\n 'web_app_biometry_request_access',\n 'web_app_biometry_request_auth',\n 'web_app_biometry_update_token',\n ],\n 7.6: [\n ['web_app_open_link', 'try_browser'],\n ['web_app_close', 'return_back'],\n ],\n 7.7: ['web_app_setup_swipe_behavior'],\n 7.8: ['web_app_share_to_story'],\n '7.10': [\n 'web_app_setup_secondary_button',\n 'web_app_set_bottom_bar_color',\n ['web_app_setup_main_button', 'has_shine_effect'],\n ],\n '8.0': [\n 'web_app_request_safe_area',\n 'web_app_request_content_safe_area',\n 'web_app_request_fullscreen',\n 'web_app_exit_fullscreen',\n 'web_app_set_emoji_status',\n 'web_app_add_to_home_screen',\n 'web_app_check_home_screen',\n 'web_app_request_emoji_status_access',\n 'web_app_check_location',\n 'web_app_open_location_settings',\n 'web_app_request_file_download',\n 'web_app_request_location',\n 'web_app_send_prepared_message',\n 'web_app_start_accelerometer',\n 'web_app_start_device_orientation',\n 'web_app_start_gyroscope',\n 'web_app_stop_accelerometer',\n 'web_app_stop_device_orientation',\n 'web_app_stop_gyroscope',\n 'web_app_toggle_orientation_lock',\n ],\n '9.0': [\n 'web_app_device_storage_clear',\n 'web_app_device_storage_get_key',\n 'web_app_device_storage_save_key',\n 'web_app_secure_storage_clear',\n 'web_app_secure_storage_get_key',\n 'web_app_secure_storage_restore_key',\n 'web_app_secure_storage_save_key',\n ],\n 9.1: ['web_app_hide_keyboard'],\n 9.5: [\n ['web_app_setup_main_button', 'icon_custom_emoji_id'],\n ['web_app_setup_secondary_button', 'icon_custom_emoji_id'],\n ],\n 9.6: ['web_app_request_chat'],\n} as const satisfies Record<Version, readonly (MethodName | readonly [MethodName, string])[]>;\n\ntype ReleaseItem = (typeof releases)[keyof typeof releases][number];\n\n/**\n * Methods having parameters released later than the method itself.\n */\nexport type MethodNameWithVersionedParams = Extract<ReleaseItem, readonly unknown[]>[0];\n\n/**\n * Method parameters released later than the method itself.\n */\nexport type MethodVersionedParam<M extends MethodNameWithVersionedParams> =\n Extract<ReleaseItem, readonly [M, string]>[1];\n\n/**\n * Compares two versions.\n * @param a - first version.\n * @param b - second version.\n * @returns `1` if `a` is greater than `b`, `-1` if `a` is lower than `b`, `0` if they are equal.\n */\nexport function compareVersions(a: Version, b: Version): -1 | 0 | 1 {\n const aParts = a.split('.').map(Number);\n const bParts = b.split('.').map(Number);\n for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n const aPart = aParts[i] || 0;\n const bPart = bParts[i] || 0;\n if (aPart !== bPart) {\n return aPart > bPart ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\n * @returns Version the method parameter was released in, or `undefined` if it is unknown.\n * @param method - method name.\n * @param param - method parameter.\n */\nexport function getReleaseVersion<M extends MethodNameWithVersionedParams>(\n method: M,\n param: MethodVersionedParam<M>,\n): Version | undefined;\n/**\n * @returns Version the method was released in, or `undefined` if it is unknown.\n * @param method - method name.\n */\nexport function getReleaseVersion(method: MethodName): Version | undefined;\nexport function getReleaseVersion(method: string, param?: string): Version | undefined {\n return Object.keys(releases).find(version => {\n return (releases[version as keyof typeof releases] as readonly ReleaseItem[]).some(item => {\n return param\n ? typeof item === 'object' && item[0] === method && item[1] === param\n : item === method;\n });\n });\n}\n\n/**\n * @returns True if the method parameter is supported in the specified version.\n * @param method - method name.\n * @param param - method parameter.\n * @param version - Mini Apps version.\n */\nexport function supports<M extends MethodNameWithVersionedParams>(\n method: M,\n param: MethodVersionedParam<M>,\n version: Version,\n): boolean;\n/**\n * @returns True if the method is supported in the specified version.\n * @param method - method name.\n * @param version - Mini Apps version.\n */\nexport function supports(method: MethodName, version: Version): boolean;\nexport function supports(method: MethodName, paramOrVersion: string, version?: Version): boolean {\n const released = version\n ? getReleaseVersion(method as MethodNameWithVersionedParams, paramOrVersion as never)\n : getReleaseVersion(method);\n return !!released && compareVersions(released, version || paramOrVersion) <= 0;\n}\n\nexport type OnUnsupportedFn = (\n data:\n | { version: Version; method: MethodName }\n | { version: Version; method: MethodName; param: string },\n) => void;\n\n/**\n * Methods parameters which make older clients misbehave. Other versioned parameters are\n * ignored by older clients, so they are not checked.\n */\nconst checkedParams: [MethodName, string][] = [\n ['web_app_set_header_color', 'color'],\n ['web_app_setup_main_button', 'icon_custom_emoji_id'],\n ['web_app_setup_secondary_button', 'icon_custom_emoji_id'],\n];\n\n/**\n * Creates a `postEvent` function checking if the method and its parameters are supported in\n * the specified Mini Apps version.\n * @param version - Mini Apps version.\n * @param onUnsupported - what to do when something is unsupported:\n * - `strict` (default) - throw `MethodUnsupportedError` or `MethodParameterUnsupportedError`;\n * - `non-strict` - log a warning and don't call the method;\n * - a function to call instead of the method.\n */\nexport function createPostEvent(\n version: Version,\n onUnsupported: 'strict' | 'non-strict' | OnUnsupportedFn = 'strict',\n): PostEventFn {\n const handle: OnUnsupportedFn = typeof onUnsupported === 'function'\n ? onUnsupported\n : data => {\n const error = 'param' in data\n ? new MethodParameterUnsupportedError(data.method, data.param, data.version)\n : new MethodUnsupportedError(data.method, data.version);\n if (onUnsupported === 'strict') {\n throw error;\n }\n getLogger().warn(error.message);\n };\n\n return (method, ...args) => {\n if (!supports(method, version)) {\n return handle({ version, method });\n }\n const [params] = args as [unknown?];\n for (const [checkedMethod, param] of checkedParams) {\n if (\n method === checkedMethod\n && params\n && typeof params === 'object'\n && param in params\n && !supports(checkedMethod as MethodNameWithVersionedParams, param as never, version)\n ) {\n return handle({ version, method, param });\n }\n }\n postEvent(method, ...args);\n };\n}\n"],"names":["f","l","r","t","u","c","m","b","d","h","a","s","o","g","n","UnknownEnvError","errorClass","MethodUnsupportedError","errorClassWithData","method","version","MethodParameterUnsupportedError","param","LaunchParamsRetrieveError","errors","source","error","InvalidLaunchParamsError","value","_value","cause","InvokeCustomMethodFailedError","TimeoutError","timeout","StartParamTooLongError","length","DEFAULT_CONFIG","getGlobalConfig","config$1","store$3","getGlobalMessage","lang","store$2","getSchemaMessage","store$1","getSpecificMessage","reference","_a","_stringify","input","type","_b","_addIssue","context","label","dataset","other","expected","received","issue","isSchema","message$1","_isValidObjectKey","object$1","key","_joinExpects","values$1","separator","list","_standardSchema","schema","value$1","ValiError","issues","check","requirement","nonEmpty","parseJson","config$2","transform","operation","getFallback","getDefault","boolean","looseObject","entries$1","valueSchema","valueDataset","pathItem","nullish","wrapped","default_","number","object","optional","record","entryKey","entryValue","keyDataset","string","_subIssues","datasets","union","options","option","validDataset","typedDatasets","untypedDatasets","optionDataset","unknown","parse","pipe","pipe$1","item","safeParse","ok","data","err","unwrap","result","throwing","fn","args","ThemeParamsSchema","ThemeParamsJsonSchema","STORAGE_KEY","OptionalBooleanSchema","LaunchParamsSchema","safeParseLaunchParams","query","parseLaunchParams","serializeLaunchParams","urlToQuery","url","readSessionStorage","sources","entry","raw","params","saveLaunchParams","retrieve","retrieveSource","parsed","safeRetrieveRawLaunchParams","retrieveRawLaunchParams","safeRetrieveLaunchParams","retrieveLaunchParams","safeRetrieveRawInitData","retrieveRawInitData","PREFIX","consoleLogger","debug","logger","setDebug","isDebug","setLogger","getLogger","debugLog","composeFn","obj","external","composed","mergeOnAssign","next","ensureObject","listeners","anyListeners","restoreWindow","MiniAppsMessageSchema","payloadSchemas","callListener","listener","e","callListeners","map","once","receiveEvent","name","payload","eventListeners","uninstallIfIdle","onMessage","event","message","install","w","telegramWindow","restores","restore","installIfNeeded","subscribe","add","remove","signal","off","onEvent","offEvent","onAnyEvent","offAnyEvent","offAll","emitEvent","eventData","receive","isIframe","targetOrigin","setTargetOrigin","origin","getTargetOrigin","postMessage","setPostMessage","previous","getPostMessage","postEvent","safeRequest","events","capture","defaultPostEvent","resolve","reject","cleanups","settle","cleanup","onResolve","onReject","isList","timeoutId","onAbort","request","createRequestId","captureSameReq","reqId","hasWebviewProxy","isTMA","isTMAAsync","safeInvokeCustomMethod","requestId","response","invokeCustomMethod","mockTelegramEnv","launchParams","onMethod","original","call","normalizeParams","proxy","eventType","MAX_LENGTH","encodeBase64Url","binary","byte","decodeBase64Url","char","isSafeToCreateStartParam","safeCreateStartParam","encoded","createStartParam","decodeStartParam","decoded","releases","compareVersions","aParts","bParts","i","aPart","bPart","getReleaseVersion","supports","paramOrVersion","released","checkedParams","createPostEvent","onUnsupported","handle","checkedMethod"],"mappings":"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","x_google_ignoreList":[0,2]}
|