@zeruxjs/validator 0.0.1 → 0.0.2

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/storages/globalConfig.ts","../src/storages/globalMessage.ts","../src/storages/schemaMessage.ts","../src/storages/specificMessage.ts","../src/utils/_stringify.ts","../src/utils/_addIssue.ts","../src/utils/_cloneDataset.ts","../src/utils/_getByteCount.ts","../src/utils/_getGraphemeCount.ts","../src/utils/_getLastMetadata.ts","../src/utils/_getStandardProps.ts","../src/utils/_getWordCount.ts","../src/utils/_isLuhnAlgo.ts","../src/utils/_isValidObjectKey.ts","../src/utils/_joinExpects.ts","../src/utils/entriesFromList.ts","../src/utils/entriesFromObjects.ts","../src/utils/getDotPath.ts","../src/utils/isOfKind.ts","../src/utils/isOfType.ts","../src/utils/isValidationError.ts","../src/utils/formatIssues.ts","../src/methods/flatten.ts","../src/methods/summarize.ts","../src/utils/ValidationError.ts","../src/methods/pipe.ts","../src/methods/pipeAsync.ts","../src/schemas/any.ts","../src/schemas/array.ts","../src/schemas/arrayAsync.ts","../src/schemas/bigint.ts","../src/schemas/blob.ts","../src/schemas/boolean.ts","../src/schemas/custom.ts","../src/schemas/customAsync.ts","../src/schemas/date.ts","../src/schemas/enum.ts","../src/schemas/exactOptional.ts","../src/schemas/exactOptionalAsync.ts","../src/schemas/file.ts","../src/schemas/function.ts","../src/schemas/instance.ts","../src/schemas/_merge.ts","../src/schemas/intersect.ts","../src/schemas/intersectAsync.ts","../src/schemas/lazy.ts","../src/schemas/lazyAsync.ts","../src/schemas/literal.ts","../src/methods/assert.ts","../src/methods/_LruCache.ts","../src/methods/cache.ts","../src/methods/cacheAsync.ts","../src/methods/config.ts","../src/methods/getFallback.ts","../src/methods/fallback.ts","../src/methods/fallbackAsync.ts","../src/methods/forward.ts","../src/methods/forwardAsync.ts","../src/methods/getDefault.ts","../src/methods/getDefaults.ts","../src/methods/getDefaultsAsync.ts","../src/methods/getDescription.ts","../src/methods/getExamples.ts","../src/methods/getFallbacks.ts","../src/methods/getFallbacksAsync.ts","../src/methods/getMetadata.ts","../src/methods/getTitle.ts","../src/methods/is.ts","../src/methods/keyof.ts","../src/methods/message.ts","../src/methods/omit.ts","../src/methods/parse.ts","../src/methods/parseAsync.ts","../src/methods/parser.ts","../src/methods/parserAsync.ts","../src/methods/partial.ts","../src/methods/partialAsync.ts","../src/methods/pick.ts","../src/methods/required.ts","../src/methods/requiredAsync.ts","../src/methods/safeParse.ts","../src/methods/safeParseAsync.ts","../src/methods/safeParser.ts","../src/methods/safeParserAsync.ts","../src/methods/unwrap.ts","../src/schemas/looseObject.ts","../src/schemas/looseObjectAsync.ts","../src/schemas/looseTuple.ts","../src/schemas/looseTupleAsync.ts","../src/schemas/map.ts","../src/schemas/mapAsync.ts","../src/schemas/nan.ts","../src/schemas/never.ts","../src/schemas/nonNullable.ts","../src/schemas/nonNullableAsync.ts","../src/schemas/nonNullish.ts","../src/schemas/nonNullishAsync.ts","../src/schemas/nonOptional.ts","../src/schemas/nonOptionalAsync.ts","../src/schemas/null.ts","../src/schemas/nullable.ts","../src/schemas/nullableAsync.ts","../src/schemas/nullish.ts","../src/schemas/nullishAsync.ts","../src/schemas/number.ts","../src/schemas/object.ts","../src/schemas/objectAsync.ts","../src/schemas/objectWithRest.ts","../src/schemas/objectWithRestAsync.ts","../src/schemas/optional.ts","../src/schemas/optionalAsync.ts","../src/schemas/picklist.ts","../src/schemas/promise.ts","../src/schemas/record.ts","../src/schemas/recordAsync.ts","../src/schemas/set.ts","../src/schemas/setAsync.ts","../src/schemas/strictObject.ts","../src/schemas/strictObjectAsync.ts","../src/schemas/strictTuple.ts","../src/schemas/strictTupleAsync.ts","../src/schemas/string.ts","../src/schemas/symbol.ts","../src/schemas/tuple.ts","../src/schemas/tupleAsync.ts","../src/schemas/tupleWithRest.ts","../src/schemas/tupleWithRestAsync.ts","../src/schemas/undefined.ts","../src/schemas/undefinedable.ts","../src/schemas/undefinedableAsync.ts","../src/schemas/_subIssues.ts","../src/schemas/union.ts","../src/schemas/unionAsync.ts","../src/schemas/unknown.ts","../src/schemas/variant.ts","../src/schemas/variantAsync.ts","../src/schemas/void.ts","../src/utils/schemaConstructors.ts","../src/utils/jsonSchema.ts","../src/utils/ajv.ts","../src/utils/chainConstruct.ts","../src/actions/args.ts","../src/actions/argsAsync.ts","../src/actions/awaitAsync.ts","../src/regex.ts","../src/actions/base64.ts","../src/actions/bic.ts","../src/actions/brand.ts","../src/actions/bytes.ts","../src/actions/check.ts","../src/actions/checkAsync.ts","../src/actions/checkItems.ts","../src/actions/checkItemsAsync.ts","../src/actions/creditCard.ts","../src/actions/cuid2.ts","../src/actions/decimal.ts","../src/actions/description.ts","../src/actions/digits.ts","../src/actions/domain.ts","../src/actions/email.ts","../src/actions/emoji.ts","../src/actions/empty.ts","../src/actions/endsWith.ts","../src/actions/entries.ts","../src/actions/everyItem.ts","../src/actions/examples.ts","../src/actions/excludes.ts","../src/actions/filterItems.ts","../src/actions/findItem.ts","../src/actions/finite.ts","../src/actions/flavor.ts","../src/actions/graphemes.ts","../src/actions/gtValue.ts","../src/actions/guard.ts","../src/actions/hash.ts","../src/actions/hexadecimal.ts","../src/actions/hexColor.ts","../src/actions/imei.ts","../src/actions/includes.ts","../src/actions/integer.ts","../src/actions/ip.ts","../src/actions/ipv4.ts","../src/actions/ipv6.ts","../src/actions/_isIsbn10.ts","../src/actions/_isIsbn13.ts","../src/actions/isbn.ts","../src/actions/isoDate.ts","../src/actions/isoDateTime.ts","../src/actions/isoTime.ts","../src/actions/isoTimeSecond.ts","../src/actions/isoTimestamp.ts","../src/actions/isoWeek.ts","../src/actions/isrc.ts","../src/actions/jwsCompact.ts","../src/actions/length.ts","../src/actions/ltValue.ts","../src/actions/mac.ts","../src/actions/mac48.ts","../src/actions/mac64.ts","../src/actions/mapItems.ts","../src/actions/maxBytes.ts","../src/actions/maxEntries.ts","../src/actions/maxGraphemes.ts","../src/actions/maxLength.ts","../src/actions/maxSize.ts","../src/actions/maxValue.ts","../src/actions/maxWords.ts","../src/actions/metadata.ts","../src/actions/mimeType.ts","../src/actions/minBytes.ts","../src/actions/minEntries.ts","../src/actions/minGraphemes.ts","../src/actions/minLength.ts","../src/actions/minSize.ts","../src/actions/minValue.ts","../src/actions/minWords.ts","../src/actions/multipleOf.ts","../src/actions/nanoid.ts","../src/actions/nonEmpty.ts","../src/actions/normalize.ts","../src/actions/notBytes.ts","../src/actions/notEntries.ts","../src/actions/notGraphemes.ts","../src/actions/notLength.ts","../src/actions/notSize.ts","../src/actions/notValue.ts","../src/actions/notValues.ts","../src/actions/notWords.ts","../src/actions/octal.ts","../src/actions/parseBoolean.ts","../src/actions/parseJson.ts","../src/actions/_isPartiallyTyped.ts","../src/actions/partialCheck.ts","../src/actions/partialCheckAsync.ts","../src/actions/rawCheck.ts","../src/actions/rawCheckAsync.ts","../src/actions/rawTransform.ts","../src/actions/rawTransformAsync.ts","../src/actions/readonly.ts","../src/actions/reduceItems.ts","../src/actions/regex.ts","../src/actions/returns.ts","../src/actions/returnsAsync.ts","../src/actions/rfcEmail.ts","../src/actions/safeInteger.ts","../src/actions/size.ts","../src/actions/slug.ts","../src/actions/someItem.ts","../src/actions/sortItems.ts","../src/actions/startsWith.ts","../src/actions/stringifyJson.ts","../src/actions/title.ts","../src/actions/toBigint.ts","../src/actions/toBoolean.ts","../src/actions/toDate.ts","../src/actions/toLowerCase.ts","../src/actions/toMaxValue.ts","../src/actions/toMinValue.ts","../src/actions/toNumber.ts","../src/actions/toString.ts","../src/actions/toUpperCase.ts","../src/actions/transform.ts","../src/actions/transformAsync.ts","../src/actions/trim.ts","../src/actions/trimEnd.ts","../src/actions/trimStart.ts","../src/actions/ulid.ts","../src/actions/url.ts","../src/actions/uuid.ts","../src/actions/value.ts","../src/actions/values.ts","../src/actions/words.ts"],"sourcesContent":["import type { BaseIssue, Config } from '../types/index.js';\n\n/**\n * The global config type.\n */\nexport type GlobalConfig = Omit<Config<never>, 'message'>;\n\n// Create global configuration store\nlet store: GlobalConfig | undefined;\n\n/**\n * Sets the global configuration.\n *\n * @param config The configuration.\n */\nexport function setGlobalConfig(config: GlobalConfig): void {\n store = { ...store, ...config };\n}\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__\nexport function getGlobalConfig<const TIssue extends BaseIssue<unknown>>(\n config?: Config<TIssue>\n): Config<TIssue> {\n // Hint: The configuration is deliberately not constructed with the spread\n // operator for performance reasons\n return {\n lang: config?.lang ?? store?.lang,\n message: config?.message,\n abortEarly: config?.abortEarly ?? store?.abortEarly,\n abortPipeEarly: config?.abortPipeEarly ?? store?.abortPipeEarly,\n };\n}\n\n/**\n * Deletes the global configuration.\n */\nexport function deleteGlobalConfig(): void {\n store = undefined;\n}\n","import type { BaseIssue, ErrorMessage } from '../types/index.js';\n\n// Create global message store\nlet store: Map<string | undefined, ErrorMessage<BaseIssue<unknown>>>;\n\n/**\n * Sets a global error message.\n *\n * @param message The error message.\n * @param lang The language of the message.\n */\nexport function setGlobalMessage(\n message: ErrorMessage<BaseIssue<unknown>>,\n lang?: string\n): void {\n if (!store) store = new Map();\n store.set(lang, message);\n}\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__\nexport function getGlobalMessage(\n lang?: string\n): ErrorMessage<BaseIssue<unknown>> | undefined {\n return store?.get(lang);\n}\n\n/**\n * Deletes a global error message.\n *\n * @param lang The language of the message.\n */\nexport function deleteGlobalMessage(lang?: string): void {\n store?.delete(lang);\n}\n","import type { BaseIssue, ErrorMessage } from '../types/index.js';\n\n// Create schema message store\nlet store: Map<string | undefined, ErrorMessage<BaseIssue<unknown>>>;\n\n/**\n * Sets a schema error message.\n *\n * @param message The error message.\n * @param lang The language of the message.\n */\nexport function setSchemaMessage(\n message: ErrorMessage<BaseIssue<unknown>>,\n lang?: string\n): void {\n if (!store) store = new Map();\n store.set(lang, message);\n}\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__\nexport function getSchemaMessage(\n lang?: string\n): ErrorMessage<BaseIssue<unknown>> | undefined {\n return store?.get(lang);\n}\n\n/**\n * Deletes a schema error message.\n *\n * @param lang The language of the message.\n */\nexport function deleteSchemaMessage(lang?: string): void {\n store?.delete(lang);\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n BaseTransformation,\n BaseTransformationAsync,\n BaseValidation,\n BaseValidationAsync,\n ErrorMessage,\n InferIssue,\n} from '../types/index.js';\n\n/**\n * Reference type.\n */\ntype Reference = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...args: any[]\n) =>\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | BaseValidation<unknown, unknown, BaseIssue<unknown>>\n | BaseValidationAsync<unknown, unknown, BaseIssue<unknown>>\n | BaseTransformation<unknown, unknown, BaseIssue<unknown>>\n | BaseTransformationAsync<unknown, unknown, BaseIssue<unknown>>;\n\n// Create specific message store\nlet store: Map<\n Reference,\n Map<string | undefined, ErrorMessage<BaseIssue<unknown>>>\n>;\n\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 */\nexport function setSpecificMessage<const TReference extends Reference>(\n reference: TReference,\n message: ErrorMessage<InferIssue<ReturnType<TReference>>>,\n lang?: string\n): void {\n if (!store) store = new Map();\n if (!store.get(reference)) store.set(reference, new Map());\n store.get(reference)!.set(lang, message);\n}\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__\nexport function getSpecificMessage<const TReference extends Reference>(\n reference: TReference,\n lang?: string\n): ErrorMessage<InferIssue<ReturnType<TReference>>> | undefined {\n return store?.get(reference)?.get(lang);\n}\n\n/**\n * Deletes a specific error message.\n *\n * @param reference The identifier reference.\n * @param lang The language of the message.\n */\nexport function deleteSpecificMessage(\n reference: Reference,\n lang?: string\n): void {\n store?.get(reference)?.delete(lang);\n}\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__\nexport function _stringify(input: unknown): string {\n const type = typeof input;\n if (type === 'string') {\n return `\"${input}\"`;\n }\n // TODO: Should we add \"n\" suffix to bigints?\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","import {\n getGlobalMessage,\n getSchemaMessage,\n getSpecificMessage,\n} from '../storages/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n BaseTransformation,\n BaseTransformationAsync,\n BaseValidation,\n BaseValidationAsync,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n IssuePathItem,\n OutputDataset,\n UnknownDataset,\n} from '../types/index.js';\nimport { _stringify } from './_stringify.js';\n\n/**\n * Context type.\n */\ntype Context =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | BaseValidation<any, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | BaseValidationAsync<any, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | BaseTransformation<any, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | BaseTransformationAsync<any, unknown, BaseIssue<unknown>>;\n\n/**\n * Other interface.\n */\ninterface Other<TContext extends Context> {\n input?: unknown | undefined;\n expected?: string | undefined;\n received?: string | undefined;\n message?: ErrorMessage<InferIssue<TContext>> | undefined;\n path?: [IssuePathItem, ...IssuePathItem[]] | undefined;\n issues?:\n | [BaseIssue<InferInput<TContext>>, ...BaseIssue<InferInput<TContext>>[]]\n | undefined;\n}\n\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 */\nexport function _addIssue<const TContext extends Context>(\n context: TContext & {\n expects?: string | null;\n requirement?: unknown;\n message?:\n | ErrorMessage<Extract<InferIssue<TContext>, { type: TContext['type'] }>>\n | undefined;\n },\n label: string,\n dataset: UnknownDataset | OutputDataset<unknown, BaseIssue<unknown>>,\n config: Config<InferIssue<TContext>>,\n other?: Other<TContext>\n): void {\n // Get expected and received string\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\n // Create issue object\n // Hint: The issue is deliberately not constructed with the spread operator\n // for performance reasons\n const issue: BaseIssue<unknown> = {\n kind: context.kind,\n type: context.type,\n input,\n expected,\n received,\n message: `Invalid ${label}: ${expected ? `Expected ${expected} but r` : 'R'\n }eceived ${received}`,\n requirement: context.requirement,\n path: other?.path,\n issues: other?.issues,\n lang: config.lang,\n abortEarly: config.abortEarly,\n abortPipeEarly: config.abortPipeEarly,\n };\n\n // Check if context is a schema\n const isSchema = context.kind === 'schema';\n\n // Get custom issue message\n const message =\n other?.message ??\n context.message ??\n getSpecificMessage(context.reference, issue.lang) ??\n (isSchema ? getSchemaMessage(issue.lang) : null) ??\n config.message ??\n getGlobalMessage(issue.lang);\n\n // If custom message if specified, override default message\n if (message !== undefined) {\n // @ts-expect-error\n issue.message =\n typeof message === 'function'\n ? // @ts-expect-error\n message(issue)\n : message;\n }\n\n // If context is a schema, set typed to `false`\n if (isSchema) {\n dataset.typed = false;\n }\n\n // Add issue to dataset\n if (dataset.issues) {\n dataset.issues.push(issue);\n } else {\n // @ts-expect-error\n dataset.issues = [issue];\n }\n}\n","import type { BaseIssue, OutputDataset } from '../types/index.js';\n\n/**\n * Creates a shallow copy of a dataset.\n *\n * Hint: The `value` is copied by reference, but the `issues` array is cloned\n * to avoid reusing mutable dataset state across multiple runs. Mutating a\n * returned object or array value can therefore affect later cache hits that\n * reuse the same cached output.\n *\n * @param dataset The output dataset.\n *\n * @returns The copied output dataset.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cloneDataset<TValue, TIssue extends BaseIssue<unknown>>(\n dataset: OutputDataset<TValue, TIssue>\n): OutputDataset<TValue, TIssue> {\n // Hint: We assign the known dataset properties directly instead of using the\n // spread operator for better runtime performance.\n // @ts-expect-error\n return {\n typed: dataset.typed,\n value: dataset.value,\n issues: dataset.issues && [...dataset.issues],\n };\n}\n","let textEncoder: TextEncoder;\n\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__\nexport function _getByteCount(input: string): number {\n if (!textEncoder) {\n textEncoder = new TextEncoder();\n }\n return textEncoder.encode(input).length;\n}\n","let segmenter: Intl.Segmenter;\n\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__\nexport function _getGraphemeCount(input: string): number {\n if (!segmenter) {\n segmenter = new Intl.Segmenter();\n }\n const segments = segmenter.segment(input);\n let count = 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ of segments) {\n count++;\n }\n return count;\n}\n","import type { DescriptionAction, TitleAction } from '../actions/index.js';\nimport type {\n SchemaWithPipe,\n SchemaWithPipeAsync,\n} from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n PipeItem,\n PipeItemAsync,\n} from '../types/index.js';\n\n/**\n * Metadata action type.\n */\ntype MetadataAction =\n | TitleAction<unknown, string>\n | DescriptionAction<unknown, string>;\n\n/**\n * Schema type.\n */\ntype Schema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | SchemaWithPipe<\n readonly [\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...(PipeItem<any, unknown, BaseIssue<unknown>> | MetadataAction)[],\n ]\n >\n | SchemaWithPipeAsync<\n readonly [\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ),\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | MetadataAction\n )[],\n ]\n >;\n\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__\nexport function _getLastMetadata(\n schema: Schema,\n type: 'title' | 'description'\n): string | undefined {\n if ('pipe' in schema) {\n const nestedSchemas: Schema[] = [];\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 // @ts-expect-error\n return item[type];\n }\n }\n for (const nestedSchema of nestedSchemas) {\n const result = _getLastMetadata(nestedSchema, type);\n if (result !== undefined) {\n return result;\n }\n }\n }\n}\n","import { getGlobalConfig } from '../storages/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n InferInput,\n InferOutput,\n StandardProps,\n StandardResult,\n} from '../types/index.js';\n\n/**\n * Returns the Standard Schema properties.\n *\n * @param context The schema context.\n *\n * @returns The Standard Schema properties.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _getStandardProps<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(context: TSchema): StandardProps<InferInput<TSchema>, InferOutput<TSchema>> {\n return {\n version: 1,\n vendor: '@zeruxjs/validator',\n validate(value) {\n return context['~run']({ value }, getGlobalConfig()) as\n | StandardResult<InferOutput<TSchema>>\n | Promise<StandardResult<InferOutput<TSchema>>>;\n },\n };\n}\n","let store: Map<Intl.LocalesArgument, Intl.Segmenter>;\n\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__\nexport function _getWordCount(\n locales: Intl.LocalesArgument,\n input: string\n): number {\n if (!store) {\n store = new Map();\n }\n if (!store.get(locales)) {\n store.set(locales, new Intl.Segmenter(locales, { granularity: 'word' }));\n }\n const segments = store.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 * Non-digit regex.\n */\nconst NON_DIGIT_REGEX = /\\D/gu;\n\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__\nexport function _isLuhnAlgo(input: string): boolean {\n // Remove any non-digit chars\n const number = input.replace(NON_DIGIT_REGEX, '');\n\n // Create necessary variables\n let length = number.length;\n let bit = 1;\n let sum = 0;\n\n // Calculate sum of algorithm\n while (length) {\n const value = +number[--length];\n bit ^= 1;\n sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value;\n }\n\n // Return whether its valid\n return sum % 10 === 0;\n}\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__\nexport function _isValidObjectKey(object: object, key: string): boolean {\n return (\n Object.hasOwn(object, key) &&\n key !== '__proto__' &&\n key !== 'prototype' &&\n key !== 'constructor'\n );\n}\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__\nexport function _joinExpects(values: string[], separator: '&' | '|'): string {\n // Create list without duplicates\n const list = [...new Set(values)];\n\n // If list has more than one item, join them\n if (list.length > 1) {\n return `(${list.join(` ${separator} `)})`;\n }\n\n // Otherwise, return first item or \"never\"\n return list[0] ?? 'never';\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n} from '../types/index.js';\n\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__\nexport function entriesFromList<\n const TList extends readonly (string | number | symbol)[],\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(list: TList, schema: TSchema): Record<TList[number], TSchema> {\n // @ts-expect-error\n const entries: Record<TList[number], TSchema> = {};\n for (const key of list) {\n entries[key as TList[number]] = schema;\n }\n return entries;\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseObjectSchemaAsync,\n ObjectIssue,\n ObjectSchema,\n ObjectSchemaAsync,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n ObjectWithRestSchemaAsync,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictObjectSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n Merge,\n ObjectEntries,\n ObjectEntriesAsync,\n Prettify,\n} from '../types/index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | LooseObjectSchema<ObjectEntries, ErrorMessage<LooseObjectIssue> | undefined>\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >;\n\n/**\n * Recursive merge type.\n */\ntype RecursiveMerge<TSchemas extends readonly [Schema, ...Schema[]]> =\n TSchemas extends readonly [infer TFirstSchema extends Schema]\n ? TFirstSchema['entries']\n : TSchemas extends readonly [\n infer TFirstSchema extends Schema,\n ...infer TRestSchemas extends readonly [Schema, ...Schema[]],\n ]\n ? Merge<TFirstSchema['entries'], RecursiveMerge<TRestSchemas>>\n : never;\n\n/**\n * Merged entries types.\n */\ntype MergedEntries<TSchemas extends readonly [Schema, ...Schema[]]> = Prettify<\n RecursiveMerge<TSchemas>\n>;\n\n/**\n * Creates a new object entries definition from existing object schemas.\n *\n * @param schemas The schemas to merge the entries from.\n *\n * @returns The object entries from the schemas.\n */\nexport function entriesFromObjects<\n const TSchemas extends readonly [Schema, ...Schema[]],\n>(schemas: TSchemas): MergedEntries<TSchemas>;\n\n// @__NO_SIDE_EFFECTS__\nexport function entriesFromObjects(\n schemas: [Schema, ...Schema[]]\n): MergedEntries<[Schema, ...Schema[]]> {\n const entries = {};\n for (const schema of schemas) {\n Object.assign(entries, schema.entries);\n }\n // @ts-expect-error\n return entries;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n InferIssue,\n IssueDotPath,\n} from '../types/index.js';\n\n/**\n * Creates and returns the dot path of an issue if possible.\n *\n * @param issue The issue to get the dot path from.\n *\n * @returns The dot path or null.\n */\nexport function getDotPath(issue: BaseIssue<unknown>): string | null;\n\n/**\n * Creates and returns the dot path of an issue if possible.\n *\n * @param issue The issue to get the dot path from.\n *\n * @returns The dot path or null.\n */\nexport function getDotPath<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(issue: InferIssue<TSchema>): IssueDotPath<TSchema> | null;\n\n// @__NO_SIDE_EFFECTS__\nexport function getDotPath(issue: BaseIssue<unknown>): string | null {\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 * 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__\nexport function isOfKind<\n const TKind extends TObject['kind'],\n const TObject extends { kind: string },\n>(kind: TKind, object: TObject): object is Extract<TObject, { kind: TKind }> {\n return object.kind === kind;\n}\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__\nexport function isOfType<\n const TType extends TObject['type'],\n const TObject extends { type: string },\n>(type: TType, object: TObject): object is Extract<TObject, { type: TType }> {\n return object.type === type;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\n/**\n * A type guard to check if an error is a ValidationError.\n *\n * @param error The error to check.\n *\n * @returns Whether its a ValidationError.\n */\n// @__NO_SIDE_EFFECTS__\nexport function isValidationError<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(error: unknown): error is ValidationError<TSchema> {\n return error instanceof ValidationError;\n}\n","import type { BaseIssue } from '../types/index.js';\n\nexport interface FormattedIssueTree {\n readonly _errors: string[];\n readonly [key: string]: FormattedIssueTree | string[];\n}\n\nfunction createNode(): { _errors: string[];[key: string]: FormattedIssueTree | string[] } {\n return { _errors: [] };\n}\n\n/**\n * Formats issues into a nested object similar to `error.format()`.\n *\n * @param issues The issues to format.\n *\n * @returns A nested error tree.\n */\nexport function formatIssues(\n issues: [BaseIssue<unknown>, ...BaseIssue<unknown>[]]\n): FormattedIssueTree {\n const root = createNode();\n\n for (const issue of issues) {\n let cursor = root;\n\n if (issue.path?.length) {\n for (const item of issue.path) {\n const key =\n typeof item.key === 'string' || typeof item.key === 'number'\n ? `${item.key}`\n : null;\n\n if (!key) {\n cursor._errors.push(issue.message);\n cursor = root;\n break;\n }\n\n if (!(key in cursor)) {\n cursor[key] = createNode();\n }\n\n cursor = cursor[key] as FormattedIssueTree;\n }\n }\n\n cursor._errors.push(issue.message);\n }\n\n return root as FormattedIssueTree;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n InferIssue,\n IssueDotPath,\n Prettify,\n} from '../types/index.js';\nimport { getDotPath } from '../utils/index.js';\n\n/**\n * Flat errors type.\n */\nexport type FlatErrors<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | undefined,\n> = Prettify<{\n /**\n * The root errors.\n *\n * Hint: The error messages of issues without a path that belong to the root\n * of the schema are added to this key.\n */\n readonly root?: [string, ...string[]];\n /**\n * The nested errors.\n *\n * Hint: The error messages of issues with a path that belong to the nested\n * parts of the schema and can be converted to a dot path are added to this\n * key.\n */\n readonly nested?: Prettify<\n Readonly<\n Partial<\n Record<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ? IssueDotPath<TSchema>\n : string,\n [string, ...string[]]\n >\n >\n >\n >;\n /**\n * The other errors.\n *\n * Hint: Some issue paths, for example for complex data types like `Set` and\n * `Map`, have no key or a key that cannot be converted to a dot path. These\n * error messages are added to this key.\n */\n readonly other?: [string, ...string[]];\n}>;\n\n/**\n * Flatten the error messages of issues.\n *\n * @param issues The list of issues.\n *\n * @returns A flat error object.\n */\nexport function flatten(\n issues: [BaseIssue<unknown>, ...BaseIssue<unknown>[]]\n): FlatErrors<undefined>;\n\n/**\n * Flatten the error messages of issues.\n *\n * @param issues The list of issues.\n *\n * @returns A flat error object.\n */\nexport function flatten<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(issues: [InferIssue<TSchema>, ...InferIssue<TSchema>[]]): FlatErrors<TSchema>;\n\n// @__NO_SIDE_EFFECTS__\nexport function flatten(\n issues: [BaseIssue<unknown>, ...BaseIssue<unknown>[]]\n): FlatErrors<undefined> {\n // Create flat errors object\n const flatErrors: FlatErrors<undefined> = {};\n\n // Add message of each issue to flat errors object\n for (const issue of issues) {\n // If issue has path, add message to nested or other errors\n if (issue.path) {\n // Get dot path from issue\n const dotPath = getDotPath(issue);\n\n // If path has valid keys, add message to nested errors\n if (dotPath) {\n if (!flatErrors.nested) {\n // @ts-expect-error\n flatErrors.nested = {};\n }\n if (flatErrors.nested![dotPath]) {\n flatErrors.nested![dotPath]!.push(issue.message);\n } else {\n // @ts-expect-error\n flatErrors.nested![dotPath] = [issue.message];\n }\n\n // Otherwise, add message to other errors\n } else {\n if (flatErrors.other) {\n flatErrors.other.push(issue.message);\n } else {\n // @ts-expect-error\n flatErrors.other = [issue.message];\n }\n }\n\n // Otherwise, add message to root errors\n } else {\n if (flatErrors.root) {\n flatErrors.root.push(issue.message);\n } else {\n // @ts-expect-error\n flatErrors.root = [issue.message];\n }\n }\n }\n\n // Return flat errors object\n return flatErrors;\n}\n","import type { BaseIssue } from '../types/index.js';\nimport { getDotPath } from '../utils/index.js';\n\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__\nexport function summarize(\n issues: [BaseIssue<unknown>, ...BaseIssue<unknown>[]]\n): string {\n // Create variable to store summary\n let summary = '';\n\n // Add message of each issue to summary\n for (const issue of issues) {\n // Add newline if summary is not empty\n if (summary) {\n summary += '\\n';\n }\n\n // Add message to summary\n summary += `× ${issue.message}`;\n\n // Get dot path from issue\n const dotPath = getDotPath(issue);\n\n // If dot path is available, add it to summary\n if (dotPath) {\n summary += `\\n → at ${dotPath}`;\n }\n }\n\n // Return summary\n return summary;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n InferIssue,\n} from '../types/index.js';\nimport { flatten } from '../methods/flatten.js';\nimport { summarize } from '../methods/summarize.js';\nimport { formatIssues, type FormattedIssueTree } from './formatIssues.js';\n\n/**\n * A error with useful information.\n */\nexport class ValidationError<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n> extends Error {\n /**\n * The error issues.\n */\n public readonly issues: [InferIssue<TSchema>, ...InferIssue<TSchema>[]];\n public readonly summary: string;\n\n /**\n * Creates a error with useful information.\n *\n * @param issues The error issues.\n */\n // @__NO_SIDE_EFFECTS__\n constructor(issues: [InferIssue<TSchema>, ...InferIssue<TSchema>[]]) {\n const summary = summarize(issues as [BaseIssue<unknown>, ...BaseIssue<unknown>[]]);\n super(issues.length === 1 ? issues[0].message : summary, { cause: issues });\n this.name = 'ValidationError';\n this.issues = issues;\n this.summary = summary;\n }\n\n flatten() {\n return flatten(this.issues as [BaseIssue<unknown>, ...BaseIssue<unknown>[]]);\n }\n\n format(): FormattedIssueTree {\n return formatIssues(this.issues as [BaseIssue<unknown>, ...BaseIssue<unknown>[]]);\n }\n\n summarize() {\n return this.summary;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n summary: this.summary,\n issues: this.issues,\n flat: this.flatten(),\n formatted: this.format(),\n };\n }\n}\n","import type {\n BaseIssue,\n BaseSchema,\n Config,\n FirstTupleItem,\n InferInput,\n InferIssue,\n InferOutput,\n LastTupleItem,\n OutputDataset,\n PipeAction,\n PipeItem,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema with pipe type.\n */\nexport type SchemaWithPipe<\n TPipe extends readonly [\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ...PipeItem<any, unknown, BaseIssue<unknown>>[],\n ],\n> = Omit<FirstTupleItem<TPipe>, 'pipe' | '~standard' | '~run' | '~types'> & {\n /**\n * The pipe items.\n */\n readonly pipe: TPipe;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferInput<FirstTupleItem<TPipe>>,\n InferOutput<LastTupleItem<TPipe>>\n >;\n /**\n * Parses unknown input values.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferOutput<LastTupleItem<TPipe>>,\n InferIssue<TPipe[number]>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferInput<FirstTupleItem<TPipe>>;\n readonly output: InferOutput<LastTupleItem<TPipe>>;\n readonly issue: InferIssue<TPipe[number]>;\n }\n | undefined;\n};\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n): SchemaWithPipe<readonly [TSchema, TItem1]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n): SchemaWithPipe<readonly [TSchema, TItem1, TItem2]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n): SchemaWithPipe<readonly [TSchema, TItem1, TItem2, TItem3]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n): SchemaWithPipe<readonly [TSchema, TItem1, TItem2, TItem3, TItem4]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n): SchemaWithPipe<readonly [TSchema, TItem1, TItem2, TItem3, TItem4, TItem5]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n): SchemaWithPipe<\n readonly [TSchema, TItem1, TItem2, TItem3, TItem4, TItem5, TItem6]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n): SchemaWithPipe<\n readonly [TSchema, TItem1, TItem2, TItem3, TItem4, TItem5, TItem6, TItem7]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem15 extends PipeItem<\n InferOutput<TItem14>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem15 extends PipeItem<\n InferOutput<TItem14>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem16 extends PipeItem<\n InferOutput<TItem15>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem15 extends PipeItem<\n InferOutput<TItem14>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem16 extends PipeItem<\n InferOutput<TItem15>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n * @param item17 The seventeenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem15 extends PipeItem<\n InferOutput<TItem14>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem16 extends PipeItem<\n InferOutput<TItem15>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem17 extends PipeItem<\n InferOutput<TItem16>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >,\n item17:\n | TItem17\n | PipeAction<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n TItem17,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n * @param item17 The seventeenth pipe item.\n * @param item18 The eighteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem15 extends PipeItem<\n InferOutput<TItem14>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem16 extends PipeItem<\n InferOutput<TItem15>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem17 extends PipeItem<\n InferOutput<TItem16>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem18 extends PipeItem<\n InferOutput<TItem17>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >,\n item17:\n | TItem17\n | PipeAction<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >,\n item18:\n | TItem18\n | PipeAction<\n InferOutput<TItem17>,\n InferOutput<TItem18>,\n InferIssue<TItem18>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n TItem17,\n TItem18,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n * @param item17 The seventeenth pipe item.\n * @param item18 The eighteenth pipe item.\n * @param item19 The nineteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends PipeItem<\n InferOutput<TSchema>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem2 extends PipeItem<\n InferOutput<TItem1>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem3 extends PipeItem<\n InferOutput<TItem2>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem4 extends PipeItem<\n InferOutput<TItem3>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem5 extends PipeItem<\n InferOutput<TItem4>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem6 extends PipeItem<\n InferOutput<TItem5>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem7 extends PipeItem<\n InferOutput<TItem6>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem8 extends PipeItem<\n InferOutput<TItem7>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem9 extends PipeItem<\n InferOutput<TItem8>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem10 extends PipeItem<\n InferOutput<TItem9>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem11 extends PipeItem<\n InferOutput<TItem10>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem12 extends PipeItem<\n InferOutput<TItem11>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem13 extends PipeItem<\n InferOutput<TItem12>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem14 extends PipeItem<\n InferOutput<TItem13>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem15 extends PipeItem<\n InferOutput<TItem14>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem16 extends PipeItem<\n InferOutput<TItem15>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem17 extends PipeItem<\n InferOutput<TItem16>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem18 extends PipeItem<\n InferOutput<TItem17>,\n unknown,\n BaseIssue<unknown>\n >,\n const TItem19 extends PipeItem<\n InferOutput<TItem18>,\n unknown,\n BaseIssue<unknown>\n >,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>,\n item10:\n | TItem10\n | PipeAction<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >,\n item17:\n | TItem17\n | PipeAction<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >,\n item18:\n | TItem18\n | PipeAction<\n InferOutput<TItem17>,\n InferOutput<TItem18>,\n InferIssue<TItem18>\n >,\n item19:\n | TItem19\n | PipeAction<\n InferOutput<TItem18>,\n InferOutput<TItem19>,\n InferIssue<TItem19>\n >\n): SchemaWithPipe<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n TItem17,\n TItem18,\n TItem19,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param items The pipe items.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItems extends readonly PipeItem<\n InferOutput<TSchema>,\n InferOutput<TSchema>,\n BaseIssue<unknown>\n >[],\n>(\n schema: TSchema,\n ...items: TItems\n): SchemaWithPipe<readonly [TSchema, ...TItems]>;\n\n// @__NO_SIDE_EFFECTS__\nexport function pipe<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TItems extends readonly PipeItem<\n unknown,\n unknown,\n BaseIssue<unknown>\n >[],\n>(\n ...pipe: [TSchema, ...TItems]\n): SchemaWithPipe<readonly [TSchema, ...TItems]> {\n return {\n ...pipe[0],\n pipe,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Execute pipeline items in sequence\n for (const item of pipe) {\n // Exclude metadata items from execution\n if (item.kind !== 'metadata') {\n // Mark dataset as untyped and break pipe if there are issues and pipe\n // item is schema or transformation\n if (\n dataset.issues &&\n (item.kind === 'schema' || item.kind === 'transformation')\n ) {\n dataset.typed = false;\n break;\n }\n\n // Continue pipe execution if there is no reason to abort early\n if (\n !dataset.issues ||\n (!config.abortEarly && !config.abortPipeEarly)\n ) {\n // @ts-expect-error\n dataset = item['~run'](dataset, config);\n }\n }\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n FirstTupleItem,\n InferInput,\n InferIssue,\n InferOutput,\n LastTupleItem,\n OutputDataset,\n PipeAction,\n PipeActionAsync,\n PipeItem,\n PipeItemAsync,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema with pipe async type.\n */\nexport type SchemaWithPipeAsync<\n TPipe extends readonly [\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ),\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n )[],\n ],\n> = Omit<\n FirstTupleItem<TPipe>,\n 'async' | 'pipe' | '~standard' | '~run' | '~types'\n> & {\n /**\n * The pipe items.\n */\n readonly pipe: TPipe;\n /**\n * Whether it's async.\n */\n readonly async: true;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferInput<FirstTupleItem<TPipe>>,\n InferOutput<LastTupleItem<TPipe>>\n >;\n /**\n * Parses unknown input values.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<InferOutput<LastTupleItem<TPipe>>, InferIssue<TPipe[number]>>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferInput<FirstTupleItem<TPipe>>;\n readonly output: InferOutput<LastTupleItem<TPipe>>;\n readonly issue: InferIssue<TPipe[number]>;\n }\n | undefined;\n};\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >\n): SchemaWithPipeAsync<readonly [TSchema, TItem1]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >\n): SchemaWithPipeAsync<readonly [TSchema, TItem1, TItem2]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >\n): SchemaWithPipeAsync<readonly [TSchema, TItem1, TItem2, TItem3]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >\n): SchemaWithPipeAsync<readonly [TSchema, TItem1, TItem2, TItem3, TItem4]>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >\n): SchemaWithPipeAsync<\n readonly [TSchema, TItem1, TItem2, TItem3, TItem4, TItem5]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >\n): SchemaWithPipeAsync<\n readonly [TSchema, TItem1, TItem2, TItem3, TItem4, TItem5, TItem6]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >\n): SchemaWithPipeAsync<\n readonly [TSchema, TItem1, TItem2, TItem3, TItem4, TItem5, TItem6, TItem7]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n const TItem14 extends\n | PipeItem<InferOutput<TItem13>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem13>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n | PipeActionAsync<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n const TItem14 extends\n | PipeItem<InferOutput<TItem13>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem13>, unknown, BaseIssue<unknown>>,\n const TItem15 extends\n | PipeItem<InferOutput<TItem14>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem14>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n | PipeActionAsync<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n | PipeActionAsync<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n const TItem14 extends\n | PipeItem<InferOutput<TItem13>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem13>, unknown, BaseIssue<unknown>>,\n const TItem15 extends\n | PipeItem<InferOutput<TItem14>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem14>, unknown, BaseIssue<unknown>>,\n const TItem16 extends\n | PipeItem<InferOutput<TItem15>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem15>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n | PipeActionAsync<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n | PipeActionAsync<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n | PipeActionAsync<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n * @param item17 The seventeenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n const TItem14 extends\n | PipeItem<InferOutput<TItem13>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem13>, unknown, BaseIssue<unknown>>,\n const TItem15 extends\n | PipeItem<InferOutput<TItem14>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem14>, unknown, BaseIssue<unknown>>,\n const TItem16 extends\n | PipeItem<InferOutput<TItem15>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem15>, unknown, BaseIssue<unknown>>,\n const TItem17 extends\n | PipeItem<InferOutput<TItem16>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem16>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n | PipeActionAsync<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n | PipeActionAsync<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n | PipeActionAsync<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >,\n item17:\n | TItem17\n | PipeAction<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >\n | PipeActionAsync<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n TItem17,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n * @param item17 The seventeenth pipe item.\n * @param item18 The eighteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n const TItem14 extends\n | PipeItem<InferOutput<TItem13>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem13>, unknown, BaseIssue<unknown>>,\n const TItem15 extends\n | PipeItem<InferOutput<TItem14>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem14>, unknown, BaseIssue<unknown>>,\n const TItem16 extends\n | PipeItem<InferOutput<TItem15>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem15>, unknown, BaseIssue<unknown>>,\n const TItem17 extends\n | PipeItem<InferOutput<TItem16>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem16>, unknown, BaseIssue<unknown>>,\n const TItem18 extends\n | PipeItem<InferOutput<TItem17>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem17>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n | PipeActionAsync<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n | PipeActionAsync<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n | PipeActionAsync<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >,\n item17:\n | TItem17\n | PipeAction<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >\n | PipeActionAsync<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >,\n item18:\n | TItem18\n | PipeAction<\n InferOutput<TItem17>,\n InferOutput<TItem18>,\n InferIssue<TItem18>\n >\n | PipeActionAsync<\n InferOutput<TItem17>,\n InferOutput<TItem18>,\n InferIssue<TItem18>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n TItem17,\n TItem18,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param item1 The first pipe item.\n * @param item2 The second pipe item.\n * @param item3 The third pipe item.\n * @param item4 The fourth pipe item.\n * @param item5 The fifth pipe item.\n * @param item6 The sixth pipe item.\n * @param item7 The seventh pipe item.\n * @param item8 The eighth pipe item.\n * @param item9 The ninth pipe item.\n * @param item10 The tenth pipe item.\n * @param item11 The eleventh pipe item.\n * @param item12 The twelfth pipe item.\n * @param item13 The thirteenth pipe item.\n * @param item14 The fourteenth pipe item.\n * @param item15 The fifteenth pipe item.\n * @param item16 The sixteenth pipe item.\n * @param item17 The seventeenth pipe item.\n * @param item18 The eighteenth pipe item.\n * @param item19 The nineteenth pipe item.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItem1 extends\n | PipeItem<InferOutput<TSchema>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TSchema>, unknown, BaseIssue<unknown>>,\n const TItem2 extends\n | PipeItem<InferOutput<TItem1>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem1>, unknown, BaseIssue<unknown>>,\n const TItem3 extends\n | PipeItem<InferOutput<TItem2>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem2>, unknown, BaseIssue<unknown>>,\n const TItem4 extends\n | PipeItem<InferOutput<TItem3>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem3>, unknown, BaseIssue<unknown>>,\n const TItem5 extends\n | PipeItem<InferOutput<TItem4>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem4>, unknown, BaseIssue<unknown>>,\n const TItem6 extends\n | PipeItem<InferOutput<TItem5>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem5>, unknown, BaseIssue<unknown>>,\n const TItem7 extends\n | PipeItem<InferOutput<TItem6>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem6>, unknown, BaseIssue<unknown>>,\n const TItem8 extends\n | PipeItem<InferOutput<TItem7>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem7>, unknown, BaseIssue<unknown>>,\n const TItem9 extends\n | PipeItem<InferOutput<TItem8>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem8>, unknown, BaseIssue<unknown>>,\n const TItem10 extends\n | PipeItem<InferOutput<TItem9>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem9>, unknown, BaseIssue<unknown>>,\n const TItem11 extends\n | PipeItem<InferOutput<TItem10>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem10>, unknown, BaseIssue<unknown>>,\n const TItem12 extends\n | PipeItem<InferOutput<TItem11>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem11>, unknown, BaseIssue<unknown>>,\n const TItem13 extends\n | PipeItem<InferOutput<TItem12>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem12>, unknown, BaseIssue<unknown>>,\n const TItem14 extends\n | PipeItem<InferOutput<TItem13>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem13>, unknown, BaseIssue<unknown>>,\n const TItem15 extends\n | PipeItem<InferOutput<TItem14>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem14>, unknown, BaseIssue<unknown>>,\n const TItem16 extends\n | PipeItem<InferOutput<TItem15>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem15>, unknown, BaseIssue<unknown>>,\n const TItem17 extends\n | PipeItem<InferOutput<TItem16>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem16>, unknown, BaseIssue<unknown>>,\n const TItem18 extends\n | PipeItem<InferOutput<TItem17>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem17>, unknown, BaseIssue<unknown>>,\n const TItem19 extends\n | PipeItem<InferOutput<TItem18>, unknown, BaseIssue<unknown>>\n | PipeItemAsync<InferOutput<TItem18>, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n item1:\n | TItem1\n | PipeAction<InferOutput<TSchema>, InferOutput<TItem1>, InferIssue<TItem1>>\n | PipeActionAsync<\n InferOutput<TSchema>,\n InferOutput<TItem1>,\n InferIssue<TItem1>\n >,\n item2:\n | TItem2\n | PipeAction<InferOutput<TItem1>, InferOutput<TItem2>, InferIssue<TItem2>>\n | PipeActionAsync<\n InferOutput<TItem1>,\n InferOutput<TItem2>,\n InferIssue<TItem2>\n >,\n item3:\n | TItem3\n | PipeAction<InferOutput<TItem2>, InferOutput<TItem3>, InferIssue<TItem3>>\n | PipeActionAsync<\n InferOutput<TItem2>,\n InferOutput<TItem3>,\n InferIssue<TItem3>\n >,\n item4:\n | TItem4\n | PipeAction<InferOutput<TItem3>, InferOutput<TItem4>, InferIssue<TItem4>>\n | PipeActionAsync<\n InferOutput<TItem3>,\n InferOutput<TItem4>,\n InferIssue<TItem4>\n >,\n item5:\n | TItem5\n | PipeAction<InferOutput<TItem4>, InferOutput<TItem5>, InferIssue<TItem5>>\n | PipeActionAsync<\n InferOutput<TItem4>,\n InferOutput<TItem5>,\n InferIssue<TItem5>\n >,\n item6:\n | TItem6\n | PipeAction<InferOutput<TItem5>, InferOutput<TItem6>, InferIssue<TItem6>>\n | PipeActionAsync<\n InferOutput<TItem5>,\n InferOutput<TItem6>,\n InferIssue<TItem6>\n >,\n item7:\n | TItem7\n | PipeAction<InferOutput<TItem6>, InferOutput<TItem7>, InferIssue<TItem7>>\n | PipeActionAsync<\n InferOutput<TItem6>,\n InferOutput<TItem7>,\n InferIssue<TItem7>\n >,\n item8:\n | TItem8\n | PipeAction<InferOutput<TItem7>, InferOutput<TItem8>, InferIssue<TItem8>>\n | PipeActionAsync<\n InferOutput<TItem7>,\n InferOutput<TItem8>,\n InferIssue<TItem8>\n >,\n item9:\n | TItem9\n | PipeAction<InferOutput<TItem8>, InferOutput<TItem9>, InferIssue<TItem9>>\n | PipeActionAsync<\n InferOutput<TItem8>,\n InferOutput<TItem9>,\n InferIssue<TItem9>\n >,\n item10:\n | TItem10\n | PipeAction<InferOutput<TItem9>, InferOutput<TItem10>, InferIssue<TItem10>>\n | PipeActionAsync<\n InferOutput<TItem9>,\n InferOutput<TItem10>,\n InferIssue<TItem10>\n >,\n item11:\n | TItem11\n | PipeAction<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >\n | PipeActionAsync<\n InferOutput<TItem10>,\n InferOutput<TItem11>,\n InferIssue<TItem11>\n >,\n item12:\n | TItem12\n | PipeAction<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >\n | PipeActionAsync<\n InferOutput<TItem11>,\n InferOutput<TItem12>,\n InferIssue<TItem12>\n >,\n item13:\n | TItem13\n | PipeAction<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >\n | PipeActionAsync<\n InferOutput<TItem12>,\n InferOutput<TItem13>,\n InferIssue<TItem13>\n >,\n item14:\n | TItem14\n | PipeAction<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >\n | PipeActionAsync<\n InferOutput<TItem13>,\n InferOutput<TItem14>,\n InferIssue<TItem14>\n >,\n item15:\n | TItem15\n | PipeAction<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >\n | PipeActionAsync<\n InferOutput<TItem14>,\n InferOutput<TItem15>,\n InferIssue<TItem15>\n >,\n item16:\n | TItem16\n | PipeAction<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >\n | PipeActionAsync<\n InferOutput<TItem15>,\n InferOutput<TItem16>,\n InferIssue<TItem16>\n >,\n item17:\n | TItem17\n | PipeAction<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >\n | PipeActionAsync<\n InferOutput<TItem16>,\n InferOutput<TItem17>,\n InferIssue<TItem17>\n >,\n item18:\n | TItem18\n | PipeAction<\n InferOutput<TItem17>,\n InferOutput<TItem18>,\n InferIssue<TItem18>\n >\n | PipeActionAsync<\n InferOutput<TItem17>,\n InferOutput<TItem18>,\n InferIssue<TItem18>\n >,\n item19:\n | TItem19\n | PipeAction<\n InferOutput<TItem18>,\n InferOutput<TItem19>,\n InferIssue<TItem19>\n >\n | PipeActionAsync<\n InferOutput<TItem18>,\n InferOutput<TItem19>,\n InferIssue<TItem19>\n >\n): SchemaWithPipeAsync<\n readonly [\n TSchema,\n TItem1,\n TItem2,\n TItem3,\n TItem4,\n TItem5,\n TItem6,\n TItem7,\n TItem8,\n TItem9,\n TItem10,\n TItem11,\n TItem12,\n TItem13,\n TItem14,\n TItem15,\n TItem16,\n TItem17,\n TItem18,\n TItem19,\n ]\n>;\n\n/**\n * Adds a pipeline to a schema, that can validate and transform its input.\n *\n * @param schema The root schema.\n * @param items The pipe items.\n *\n * @returns A schema with a pipeline.\n */\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItems extends readonly (\n | PipeItem<InferOutput<TSchema>, InferOutput<TSchema>, BaseIssue<unknown>>\n | PipeItemAsync<\n InferOutput<TSchema>,\n InferOutput<TSchema>,\n BaseIssue<unknown>\n >\n )[],\n>(\n schema: TSchema,\n ...items: TItems\n): SchemaWithPipeAsync<readonly [TSchema, ...TItems]>;\n\n// @__NO_SIDE_EFFECTS__\nexport function pipeAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TItems extends readonly (\n | PipeItem<unknown, unknown, BaseIssue<unknown>>\n | PipeItemAsync<unknown, unknown, BaseIssue<unknown>>\n )[],\n>(\n ...pipe: [TSchema, ...TItems]\n): SchemaWithPipeAsync<readonly [TSchema, ...TItems]> {\n return {\n ...pipe[0],\n pipe,\n async: true,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Execute pipeline items in sequence\n for (const item of pipe) {\n // Exclude metadata items from execution\n if (item.kind !== 'metadata') {\n // Mark dataset as untyped and break pipe if there are issues and pipe\n // item is schema or transformation\n if (\n dataset.issues &&\n (item.kind === 'schema' || item.kind === 'transformation')\n ) {\n dataset.typed = false;\n break;\n }\n\n // Continue pipe execution if there is no reason to abort early\n if (\n !dataset.issues ||\n (!config.abortEarly && !config.abortPipeEarly)\n ) {\n // @ts-expect-error\n dataset = await item['~run'](dataset, config);\n }\n }\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { BaseSchema, SuccessDataset } from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Any schema interface.\n */\nexport interface AnySchema extends BaseSchema<any, any, never> {\n /**\n * The schema type.\n */\n readonly type: 'any';\n /**\n * The schema reference.\n */\n readonly reference: typeof any;\n /**\n * The expected property.\n */\n readonly expects: 'any';\n}\n\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__\nexport function any(): AnySchema {\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 // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<any>;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferOutput,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { ArrayIssue } from './types/array.js';\n\n/**\n * Array schema interface.\n */\nexport interface ArraySchema<\n TItem extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<ArrayIssue> | undefined,\n> extends BaseSchema<\n InferInput<TItem>[],\n InferOutput<TItem>[],\n ArrayIssue | InferIssue<TItem>\n> {\n /**\n * The schema type.\n */\n readonly type: 'array';\n /**\n * The schema reference.\n */\n readonly reference: typeof array;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The array item schema.\n */\n readonly item: TItem;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an array schema.\n *\n * @param item The item schema.\n *\n * @returns An array schema.\n */\nexport function array<\n const TItem extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(item: TItem): ArraySchema<TItem, undefined>;\n\n/**\n * Creates an array schema.\n *\n * @param item The item schema.\n * @param message The error message.\n *\n * @returns An array schema.\n */\nexport function array<\n const TItem extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<ArrayIssue> | undefined,\n>(item: TItem, message: TMessage): ArraySchema<TItem, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function array(\n item: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<ArrayIssue>\n): ArraySchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ArrayIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'array',\n reference: array,\n expects: 'Array',\n async: false,\n item,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each array item\n for (let key = 0; key < input.length; key++) {\n const value = input[key];\n const itemDataset = this.item['~run']({ value }, config);\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create array path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Otherwise, add array issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n ArrayIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferOutput,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { array } from './array.js';\nimport type { ArrayIssue } from './types/array.js';\n\n/**\n * Array schema interface.\n */\nexport interface ArraySchemaAsync<\n TItem extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<ArrayIssue> | undefined,\n> extends BaseSchemaAsync<\n InferInput<TItem>[],\n InferOutput<TItem>[],\n ArrayIssue | InferIssue<TItem>\n> {\n /**\n * The schema type.\n */\n readonly type: 'array';\n /**\n * The schema reference.\n */\n readonly reference: typeof array | typeof arrayAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The array item schema.\n */\n readonly item: TItem;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an array schema.\n *\n * @param item The item schema.\n *\n * @returns An array schema.\n */\nexport function arrayAsync<\n const TItem extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(item: TItem): ArraySchemaAsync<TItem, undefined>;\n\n/**\n * Creates an array schema.\n *\n * @param item The item schema.\n * @param message The error message.\n *\n * @returns An array schema.\n */\nexport function arrayAsync<\n const TItem extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<ArrayIssue> | undefined,\n>(item: TItem, message: TMessage): ArraySchemaAsync<TItem, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function arrayAsync(\n item:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<ArrayIssue>\n): ArraySchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ArrayIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'array',\n reference: arrayAsync,\n expects: 'Array',\n async: true,\n item,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each item async\n const itemDatasets = await Promise.all(\n input.map((value) => this.item['~run']({ value }, config))\n );\n\n // Process each item dataset\n for (let key = 0; key < itemDatasets.length; key++) {\n // Get item dataset\n const itemDataset = itemDatasets[key];\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create array path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value: input[key],\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Otherwise, add array issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n ArrayIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Bigint issue interface.\n */\nexport interface BigintIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'bigint';\n /**\n * The expected property.\n */\n readonly expected: 'bigint';\n}\n\n/**\n * Bigint schema interface.\n */\nexport interface BigintSchema<\n TMessage extends ErrorMessage<BigintIssue> | undefined,\n> extends BaseSchema<bigint, bigint, BigintIssue> {\n /**\n * The schema type.\n */\n readonly type: 'bigint';\n /**\n * The schema reference.\n */\n readonly reference: typeof bigint;\n /**\n * The expected property.\n */\n readonly expects: 'bigint';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a bigint schema.\n *\n * @returns A bigint schema.\n */\nexport function bigint(): BigintSchema<undefined>;\n\n/**\n * Creates a bigint schema.\n *\n * @param message The error message.\n *\n * @returns A bigint schema.\n */\nexport function bigint<\n const TMessage extends ErrorMessage<BigintIssue> | undefined,\n>(message: TMessage): BigintSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function bigint(\n message?: ErrorMessage<BigintIssue>\n): BigintSchema<ErrorMessage<BigintIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'bigint',\n reference: bigint,\n expects: 'bigint',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (typeof dataset.value === 'bigint') {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<bigint, BigintIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Blob issue interface.\n */\nexport interface BlobIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'blob';\n /**\n * The expected property.\n */\n readonly expected: 'Blob';\n}\n\n/**\n * Blob schema interface.\n */\nexport interface BlobSchema<\n TMessage extends ErrorMessage<BlobIssue> | undefined,\n> extends BaseSchema<Blob, Blob, BlobIssue> {\n /**\n * The schema type.\n */\n readonly type: 'blob';\n /**\n * The schema reference.\n */\n readonly reference: typeof blob;\n /**\n * The expected property.\n */\n readonly expects: 'Blob';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a blob schema.\n *\n * @returns A blob schema.\n */\nexport function blob(): BlobSchema<undefined>;\n\n/**\n * Creates a blob schema.\n *\n * @param message The error message.\n *\n * @returns A blob schema.\n */\nexport function blob<\n const TMessage extends ErrorMessage<BlobIssue> | undefined,\n>(message: TMessage): BlobSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function blob(\n message?: ErrorMessage<BlobIssue>\n): BlobSchema<ErrorMessage<BlobIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'blob',\n reference: blob,\n expects: 'Blob',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value instanceof Blob) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<Blob, BlobIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Boolean issue interface.\n */\nexport interface BooleanIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'boolean';\n /**\n * The expected property.\n */\n readonly expected: 'boolean';\n}\n\n/**\n * Boolean schema interface.\n */\nexport interface BooleanSchema<\n TMessage extends ErrorMessage<BooleanIssue> | undefined,\n> extends BaseSchema<boolean, boolean, BooleanIssue> {\n /**\n * The schema type.\n */\n readonly type: 'boolean';\n /**\n * The schema reference.\n */\n readonly reference: typeof boolean;\n /**\n * The expected property.\n */\n readonly expects: 'boolean';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a boolean schema.\n *\n * @returns A boolean schema.\n */\nexport function boolean(): BooleanSchema<undefined>;\n\n/**\n * Creates a boolean schema.\n *\n * @param message The error message.\n *\n * @returns A boolean schema.\n */\nexport function boolean<\n const TMessage extends ErrorMessage<BooleanIssue> | undefined,\n>(message: TMessage): BooleanSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function boolean(\n message?: ErrorMessage<BooleanIssue>\n): BooleanSchema<ErrorMessage<BooleanIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'boolean',\n reference: boolean,\n expects: 'boolean',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (typeof dataset.value === 'boolean') {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<boolean, BooleanIssue>;\n },\n };\n}\n","import type {\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { CustomIssue } from './types/custom.js';\n\n/**\n * Check type.\n */\ntype Check = (input: unknown) => boolean;\n\n/**\n * Custom schema interface.\n */\nexport interface CustomSchema<\n TInput,\n TMessage extends ErrorMessage<CustomIssue> | undefined,\n> extends BaseSchema<TInput, TInput, CustomIssue> {\n /**\n * The schema type.\n */\n readonly type: 'custom';\n /**\n * The schema reference.\n */\n readonly reference: typeof custom;\n /**\n * The expected property.\n */\n readonly expects: 'unknown';\n /**\n * The type check function.\n */\n readonly check: Check;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a custom schema.\n *\n * @param check The type check function.\n *\n * @returns A custom schema.\n */\nexport function custom<TInput>(check: Check): CustomSchema<TInput, undefined>;\n\n/**\n * Creates a custom schema.\n *\n * @param check The type check function.\n * @param message The error message.\n *\n * @returns A custom schema.\n */\nexport function custom<\n TInput,\n const TMessage extends ErrorMessage<CustomIssue> | undefined =\n | ErrorMessage<CustomIssue>\n | undefined,\n>(check: Check, message: TMessage): CustomSchema<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function custom<TInput>(\n check: Check,\n message?: ErrorMessage<CustomIssue>\n): CustomSchema<TInput, ErrorMessage<CustomIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'custom',\n reference: custom,\n expects: 'unknown',\n async: false,\n check,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (this.check(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<TInput, CustomIssue>;\n },\n };\n}\n","import type {\n BaseSchemaAsync,\n ErrorMessage,\n MaybePromise,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { custom } from './custom.js';\nimport type { CustomIssue } from './types/custom.js';\n\n/**\n * Check async type.\n */\ntype CheckAsync = (input: unknown) => MaybePromise<boolean>;\n\n/**\n * Custom schema async interface.\n */\nexport interface CustomSchemaAsync<\n TInput,\n TMessage extends ErrorMessage<CustomIssue> | undefined,\n> extends BaseSchemaAsync<TInput, TInput, CustomIssue> {\n /**\n * The schema type.\n */\n readonly type: 'custom';\n /**\n * The schema reference.\n */\n readonly reference: typeof custom | typeof customAsync;\n /**\n * The expected property.\n */\n readonly expects: 'unknown';\n /**\n * The type check function.\n */\n readonly check: CheckAsync;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a custom schema.\n *\n * @param check The type check function.\n *\n * @returns A custom schema.\n */\nexport function customAsync<TInput>(\n check: CheckAsync\n): CustomSchemaAsync<TInput, undefined>;\n\n/**\n * Creates a custom schema.\n *\n * @param check The type check function.\n * @param message The error message.\n *\n * @returns A custom schema.\n */\nexport function customAsync<\n TInput,\n const TMessage extends ErrorMessage<CustomIssue> | undefined =\n | ErrorMessage<CustomIssue>\n | undefined,\n>(check: CheckAsync, message: TMessage): CustomSchemaAsync<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function customAsync<TInput>(\n check: CheckAsync,\n message?: ErrorMessage<CustomIssue>\n): CustomSchemaAsync<TInput, ErrorMessage<CustomIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'custom',\n reference: customAsync,\n expects: 'unknown',\n async: true,\n check,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n if (await this.check(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<TInput, CustomIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Date issue interface.\n */\nexport interface DateIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'date';\n /**\n * The expected property.\n */\n readonly expected: 'Date';\n}\n\n/**\n * Date schema interface.\n */\nexport interface DateSchema<\n TMessage extends ErrorMessage<DateIssue> | undefined,\n> extends BaseSchema<Date, Date, DateIssue> {\n /**\n * The schema type.\n */\n readonly type: 'date';\n /**\n * The schema reference.\n */\n readonly reference: typeof date;\n /**\n * The expected property.\n */\n readonly expects: 'Date';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a date schema.\n *\n * @returns A date schema.\n */\nexport function date(): DateSchema<undefined>;\n\n/**\n * Creates a date schema.\n *\n * @param message The error message.\n *\n * @returns A date schema.\n */\nexport function date<\n const TMessage extends ErrorMessage<DateIssue> | undefined,\n>(message: TMessage): DateSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function date(\n message?: ErrorMessage<DateIssue>\n): DateSchema<ErrorMessage<DateIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'date',\n reference: date,\n expects: 'Date',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value instanceof Date) {\n // @ts-expect-error\n if (!isNaN(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config, {\n received: '\"Invalid Date\"',\n });\n }\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<Date, DateIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n _stringify,\n} from '../utils/index.js';\n\n/**\n * Enum interface.\n */\nexport interface Enum {\n [key: string]: string | number;\n}\n\n/**\n * Enum values type.\n */\nexport type EnumValues<TEnum extends Enum> = {\n [TKey in keyof TEnum]: TKey extends number\n ? TEnum[TKey] extends string\n ? TEnum[TEnum[TKey]] extends TKey\n ? never\n : TEnum[TKey]\n : TEnum[TKey]\n : TKey extends 'NaN' | 'Infinity' | '-Infinity'\n ? TEnum[TKey] extends string\n ? TEnum[TEnum[TKey]] extends number\n ? never\n : TEnum[TKey]\n : TEnum[TKey]\n : TKey extends `+${number}`\n ? TEnum[TKey]\n : TKey extends `${infer TNumber extends number}`\n ? TEnum[TKey] extends string\n ? TEnum[TEnum[TKey]] extends TNumber\n ? never\n : TEnum[TKey]\n : TEnum[TKey]\n : TEnum[TKey];\n}[keyof TEnum];\n\n/**\n * Enum issue interface.\n */\nexport interface EnumIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'enum';\n /**\n * The expected property.\n */\n readonly expected: string;\n}\n\n/**\n * Enum schema interface.\n */\nexport interface EnumSchema<\n TEnum extends Enum,\n TMessage extends ErrorMessage<EnumIssue> | undefined,\n> extends BaseSchema<EnumValues<TEnum>, EnumValues<TEnum>, EnumIssue> {\n /**\n * The schema type.\n */\n readonly type: 'enum';\n /**\n * The schema reference.\n */\n readonly reference: typeof enum_;\n /**\n * The enum object.\n */\n readonly enum: TEnum;\n /**\n * The enum options.\n */\n readonly options: EnumValues<TEnum>[];\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an enum schema.\n *\n * @param enum__ The enum object.\n *\n * @returns An enum schema.\n */\nexport function enum_<const TEnum extends Enum>(\n enum__: TEnum\n): EnumSchema<TEnum, undefined>;\n\n/**\n * Creates an enum schema.\n *\n * @param enum__ The enum object.\n * @param message The error message.\n *\n * @returns An enum schema.\n */\nexport function enum_<\n const TEnum extends Enum,\n const TMessage extends ErrorMessage<EnumIssue> | undefined,\n>(enum__: TEnum, message: TMessage): EnumSchema<TEnum, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function enum_(\n enum__: Enum,\n message?: ErrorMessage<EnumIssue>\n): EnumSchema<Enum, ErrorMessage<EnumIssue> | undefined> {\n const options: EnumValues<Enum>[] = [];\n for (const key in enum__) {\n if (\n `${+key}` !== key ||\n typeof enum__[key] !== 'string' ||\n !Object.is(enum__[enum__[key]], +key)\n ) {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // @ts-expect-error\n if (this.options.includes(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<string | number, EnumIssue>;\n },\n };\n}\n\nexport { enum_ as enum };\n","import type {\n BaseIssue,\n BaseSchema,\n Default,\n InferInput,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Exact optional schema interface.\n */\nexport interface ExactOptionalSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends Default<TWrapped, never>,\n> extends BaseSchema<\n InferInput<TWrapped>,\n InferOutput<TWrapped>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'exact_optional';\n /**\n * The schema reference.\n */\n readonly reference: typeof exactOptional;\n /**\n * The expected property.\n */\n readonly expects: TWrapped['expects'];\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates an exact optional schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns An exact optional schema.\n */\nexport function exactOptional<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): ExactOptionalSchema<TWrapped, undefined>;\n\n/**\n * Creates an exact optional schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns An exact optional schema.\n */\nexport function exactOptional<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends Default<TWrapped, never>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): ExactOptionalSchema<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function exactOptional(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): ExactOptionalSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n DefaultAsync,\n InferInput,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { exactOptional } from './exactOptional.js';\n\n/**\n * Exact optional schema async interface.\n */\nexport interface ExactOptionalSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends DefaultAsync<TWrapped, never>,\n> extends BaseSchemaAsync<\n InferInput<TWrapped>,\n InferOutput<TWrapped>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'exact_optional';\n /**\n * The schema reference.\n */\n readonly reference: typeof exactOptional | typeof exactOptionalAsync;\n /**\n * The expected property.\n */\n readonly expects: TWrapped['expects'];\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates an exact optional schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns An exact optional schema.\n */\nexport function exactOptionalAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): ExactOptionalSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates an exact optional schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns An exact optional schema.\n */\nexport function exactOptionalAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends DefaultAsync<TWrapped, never>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): ExactOptionalSchemaAsync<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function exactOptionalAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): ExactOptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * File issue interface.\n */\nexport interface FileIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'file';\n /**\n * The expected property.\n */\n readonly expected: 'File';\n}\n\n/**\n * File schema interface.\n */\nexport interface FileSchema<\n TMessage extends ErrorMessage<FileIssue> | undefined,\n> extends BaseSchema<File, File, FileIssue> {\n /**\n * The schema type.\n */\n readonly type: 'file';\n /**\n * The schema reference.\n */\n readonly reference: typeof file;\n /**\n * The expected property.\n */\n readonly expects: 'File';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a file schema.\n *\n * @returns A file schema.\n */\nexport function file(): FileSchema<undefined>;\n\n/**\n * Creates a file schema.\n *\n * @param message The error message.\n *\n * @returns A file schema.\n */\nexport function file<\n const TMessage extends ErrorMessage<FileIssue> | undefined,\n>(message: TMessage): FileSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function file(\n message?: ErrorMessage<FileIssue>\n): FileSchema<ErrorMessage<FileIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'file',\n reference: file,\n expects: 'File',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value instanceof File) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<File, FileIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Function issue interface.\n */\nexport interface FunctionIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'function';\n /**\n * The expected property.\n */\n readonly expected: 'Function';\n}\n\n/**\n * Function schema interface.\n */\nexport interface FunctionSchema<\n TMessage extends ErrorMessage<FunctionIssue> | undefined,\n> extends BaseSchema<\n (...args: unknown[]) => unknown,\n (...args: unknown[]) => unknown,\n FunctionIssue\n> {\n /**\n * The schema type.\n */\n readonly type: 'function';\n /**\n * The schema reference.\n */\n readonly reference: typeof function_;\n /**\n * The expected property.\n */\n readonly expects: 'Function';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a function schema.\n *\n * @returns A function schema.\n */\nexport function function_(): FunctionSchema<undefined>;\n\n/**\n * Creates a function schema.\n *\n * @param message The error message.\n *\n * @returns A function schema.\n */\nexport function function_<\n const TMessage extends ErrorMessage<FunctionIssue> | undefined,\n>(message: TMessage): FunctionSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function function_(\n message?: ErrorMessage<FunctionIssue>\n): FunctionSchema<ErrorMessage<FunctionIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'function',\n reference: function_,\n expects: 'Function',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (typeof dataset.value === 'function') {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<\n (...args: unknown[]) => unknown,\n FunctionIssue\n >;\n },\n };\n}\n\nexport { function_ as function };\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Class type.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Class = new (...args: any[]) => any;\n\n/**\n * Instance issue interface.\n */\nexport interface InstanceIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'instance';\n /**\n * The expected property.\n */\n readonly expected: string;\n}\n\n/**\n * Instance schema interface.\n */\nexport interface InstanceSchema<\n TClass extends Class,\n TMessage extends ErrorMessage<InstanceIssue> | undefined,\n> extends BaseSchema<\n InstanceType<TClass>,\n InstanceType<TClass>,\n InstanceIssue\n> {\n /**\n * The schema type.\n */\n readonly type: 'instance';\n /**\n * The schema reference.\n */\n readonly reference: typeof instance;\n /**\n * The class of the instance.\n */\n readonly class: TClass;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an instance schema.\n *\n * @param class_ The class of the instance.\n *\n * @returns An instance schema.\n */\nexport function instance<TClass extends Class>(\n class_: TClass\n): InstanceSchema<TClass, undefined>;\n\n/**\n * Creates an instance schema.\n *\n * @param class_ The class of the instance.\n * @param message The error message.\n *\n * @returns An instance schema.\n */\nexport function instance<\n TClass extends Class,\n const TMessage extends ErrorMessage<InstanceIssue> | undefined,\n>(class_: TClass, message: TMessage): InstanceSchema<TClass, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function instance(\n class_: Class,\n message?: ErrorMessage<InstanceIssue>\n): InstanceSchema<Class, ErrorMessage<InstanceIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'instance',\n reference: instance,\n expects: class_.name,\n async: false,\n class: class_,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value instanceof this.class) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<InstanceType<Class>, InstanceIssue>;\n },\n };\n}\n","/**\n * Merge dataset type.\n */\ntype MergeDataset =\n | { value: unknown; issue?: undefined }\n | { value?: undefined; issue: true };\n\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__\nexport function _merge(value1: unknown, value2: unknown): MergeDataset {\n // Continue if data type of values match\n if (typeof value1 === typeof value2) {\n // Return first value if both are equal\n if (\n value1 === value2 ||\n (value1 instanceof Date && value2 instanceof Date && +value1 === +value2)\n ) {\n return { value: value1 };\n }\n\n // Return deeply merged object\n if (\n value1 &&\n value2 &&\n value1.constructor === Object &&\n value2.constructor === Object\n ) {\n // Deeply merge entries of `value2` into `value1`\n for (const key in value2) {\n // @ts-expect-error\n if (key in value1) {\n // @ts-expect-error\n const dataset = _merge(value1[key], value2[key]);\n\n // If dataset has issue, return it\n if (dataset.issue) {\n return dataset;\n }\n\n // Otherwise, replace merged entry\n // @ts-expect-error\n value1[key] = dataset.value;\n\n // Otherwise, just add entry\n } else {\n // @ts-expect-error\n value1[key] = value2[key];\n }\n }\n\n // Return deeply merged object\n return { value: value1 };\n }\n\n // Return deeply merged array\n if (Array.isArray(value1) && Array.isArray(value2)) {\n // Continue if arrays have same length\n if (value1.length === value2.length) {\n // Merge item of `value2` into `value1`\n for (let index = 0; index < value1.length; index++) {\n const dataset = _merge(value1[index], value2[index]);\n\n // If dataset has issue, return it\n if (dataset.issue) {\n return dataset;\n }\n\n // Otherwise, replace merged items\n value1[index] = dataset.value;\n }\n\n // Return deeply merged array\n return { value: value1 };\n }\n }\n }\n\n // Otherwise, return that values can't be merged\n return { issue: true };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferIssue,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n} from '../utils/index.js';\nimport type {\n InferIntersectInput,\n InferIntersectOutput,\n IntersectIssue,\n IntersectOptions,\n} from './types/intersect.js';\nimport { _merge } from './_merge.js';\n\n/**\n * Intersect schema interface.\n */\nexport interface IntersectSchema<\n TOptions extends IntersectOptions,\n TMessage extends ErrorMessage<IntersectIssue> | undefined,\n> extends BaseSchema<\n InferIntersectInput<TOptions>,\n InferIntersectOutput<TOptions>,\n IntersectIssue | InferIssue<TOptions[number]>\n> {\n /**\n * The schema type.\n */\n readonly type: 'intersect';\n /**\n * The schema reference.\n */\n readonly reference: typeof intersect;\n /**\n * The intersect options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an intersect schema.\n *\n * @param options The intersect options.\n *\n * @returns An intersect schema.\n */\nexport function intersect<const TOptions extends IntersectOptions>(\n options: TOptions\n): IntersectSchema<TOptions, undefined>;\n\n/**\n * Creates an intersect schema.\n *\n * @param options The intersect options.\n * @param message The error message.\n *\n * @returns An intersect schema.\n */\nexport function intersect<\n const TOptions extends IntersectOptions,\n const TMessage extends ErrorMessage<IntersectIssue> | undefined,\n>(options: TOptions, message: TMessage): IntersectSchema<TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function intersect(\n options: IntersectOptions,\n message?: ErrorMessage<IntersectIssue>\n): IntersectSchema<IntersectOptions, ErrorMessage<IntersectIssue> | undefined> {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Parse input with schema of options, if not empty\n if (this.options.length) {\n // Get input value from dataset\n const input = dataset.value;\n\n // Create variable to store outputs\n let outputs: unknown[] | undefined;\n\n // Set typed initially to `true`\n // @ts-expect-error\n dataset.typed = true;\n\n // Parse schema of each option and collect outputs\n for (const schema of this.options) {\n const optionDataset = schema['~run']({ value: input }, config);\n\n // If there are issues, capture them\n if (optionDataset.issues) {\n if (dataset.issues) {\n // @ts-expect-error\n dataset.issues.push(...optionDataset.issues);\n } else {\n // @ts-expect-error\n dataset.issues = optionDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!optionDataset.typed) {\n dataset.typed = false;\n }\n\n // Add output of option if necessary\n if (dataset.typed) {\n if (outputs) {\n outputs.push(optionDataset.value);\n } else {\n outputs = [optionDataset.value];\n }\n }\n }\n\n // If outputs are typed, merge them\n if (dataset.typed) {\n // Set first output as initial output\n dataset.value = outputs![0];\n\n // Merge outputs into one final output\n for (let index = 1; index < outputs!.length; index++) {\n const mergeDataset = _merge(dataset.value, outputs![index]);\n\n // If outputs can't be merged, add issue and break loop\n if (mergeDataset.issue) {\n _addIssue(this, 'type', dataset, config, {\n received: 'unknown',\n });\n break;\n }\n\n // Otherwise, set merged output\n dataset.value = mergeDataset.value;\n }\n }\n\n // Otherwise, add intersect issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n never,\n IntersectIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchemaAsync,\n ErrorMessage,\n InferIssue,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n} from '../utils/index.js';\nimport type { intersect } from './intersect.js';\nimport type {\n InferIntersectInput,\n InferIntersectOutput,\n IntersectIssue,\n IntersectOptionsAsync,\n} from './types/intersect.js';\nimport { _merge } from './_merge.js';\n\n/**\n * Intersect schema async interface.\n */\nexport interface IntersectSchemaAsync<\n TOptions extends IntersectOptionsAsync,\n TMessage extends ErrorMessage<IntersectIssue> | undefined,\n> extends BaseSchemaAsync<\n InferIntersectInput<TOptions>,\n InferIntersectOutput<TOptions>,\n IntersectIssue | InferIssue<TOptions[number]>\n> {\n /**\n * The schema type.\n */\n readonly type: 'intersect';\n /**\n * The schema reference.\n */\n readonly reference: typeof intersect | typeof intersectAsync;\n /**\n * The intersect options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an intersect schema.\n *\n * @param options The intersect options.\n *\n * @returns An intersect schema.\n */\nexport function intersectAsync<const TOptions extends IntersectOptionsAsync>(\n options: TOptions\n): IntersectSchemaAsync<TOptions, undefined>;\n\n/**\n * Creates an intersect schema.\n *\n * @param options The intersect options.\n * @param message The error message.\n *\n * @returns An intersect schema.\n */\nexport function intersectAsync<\n const TOptions extends IntersectOptionsAsync,\n const TMessage extends ErrorMessage<IntersectIssue> | undefined,\n>(\n options: TOptions,\n message: TMessage\n): IntersectSchemaAsync<TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function intersectAsync(\n options: IntersectOptionsAsync,\n message?: ErrorMessage<IntersectIssue>\n): IntersectSchemaAsync<\n IntersectOptionsAsync,\n ErrorMessage<IntersectIssue> | undefined\n> {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Parse input with schema of options, if not empty\n if (this.options.length) {\n // Get input value from dataset\n const input = dataset.value;\n\n // Create variable to store outputs\n let outputs: unknown[] | undefined;\n\n // Set typed initially to `true`\n // @ts-expect-error\n dataset.typed = true;\n\n // Parse schema of each option async\n const optionDatasets = await Promise.all(\n this.options.map((schema) => schema['~run']({ value: input }, config))\n );\n\n // Collect outputs of option datasets\n for (const optionDataset of optionDatasets) {\n // If there are issues, capture them\n if (optionDataset.issues) {\n if (dataset.issues) {\n // @ts-expect-error\n dataset.issues.push(...optionDataset.issues);\n } else {\n // @ts-expect-error\n dataset.issues = optionDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!optionDataset.typed) {\n dataset.typed = false;\n }\n\n // Add output of option if necessary\n if (dataset.typed) {\n if (outputs) {\n outputs.push(optionDataset.value);\n } else {\n outputs = [optionDataset.value];\n }\n }\n }\n\n // If outputs are typed, merge them\n if (dataset.typed) {\n // Set first output as initial output\n dataset.value = outputs![0];\n\n // Merge outputs into one final output\n for (let index = 1; index < outputs!.length; index++) {\n const mergeDataset = _merge(dataset.value, outputs![index]);\n\n // If outputs can't be merged, add issue and break loop\n if (mergeDataset.issue) {\n _addIssue(this, 'type', dataset, config, {\n received: 'unknown',\n });\n break;\n }\n\n // Otherwise, set merged output\n dataset.value = mergeDataset.value;\n }\n }\n\n // Otherwise, add intersect issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n never,\n IntersectIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n InferInput,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Lazy schema interface.\n */\nexport interface LazySchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n> extends BaseSchema<\n InferInput<TWrapped>,\n InferOutput<TWrapped>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'lazy';\n /**\n * The schema reference.\n */\n readonly reference: typeof lazy;\n /**\n * The expected property.\n */\n readonly expects: 'unknown';\n /**\n * The schema getter.\n */\n readonly getter: (input: unknown) => TWrapped;\n}\n\n/**\n * Creates a lazy schema.\n *\n * @param getter The schema getter.\n *\n * @returns A lazy schema.\n */\n// @__NO_SIDE_EFFECTS__\nexport function lazy<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(getter: (input: unknown) => TWrapped): LazySchema<TWrapped> {\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, config) {\n return this.getter(dataset.value)['~run'](dataset, config);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n InferInput,\n InferIssue,\n InferOutput,\n MaybePromise,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { lazy } from './lazy.js';\n\n/**\n * Lazy schema async interface.\n */\nexport interface LazySchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n> extends BaseSchemaAsync<\n InferInput<TWrapped>,\n InferOutput<TWrapped>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'lazy';\n /**\n * The schema reference.\n */\n readonly reference: typeof lazy | typeof lazyAsync;\n /**\n * The expected property.\n */\n readonly expects: 'unknown';\n /**\n * The schema getter.\n */\n readonly getter: (input: unknown) => MaybePromise<TWrapped>;\n}\n\n/**\n * Creates a lazy schema.\n *\n * @param getter The schema getter.\n *\n * @returns A lazy schema.\n */\n// @__NO_SIDE_EFFECTS__\nexport function lazyAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n getter: (input: unknown) => MaybePromise<TWrapped>\n): LazySchemaAsync<TWrapped> {\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, config) {\n return (await this.getter(dataset.value))['~run'](dataset, config);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps, _stringify } from '../utils/index.js';\n\n/**\n * Literal type.\n */\nexport type Literal = bigint | boolean | number | string | symbol;\n\n/**\n * Literal issue interface.\n */\nexport interface LiteralIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'literal';\n /**\n * The expected property.\n */\n readonly expected: string;\n}\n\n/**\n * Literal schema interface.\n */\nexport interface LiteralSchema<\n TLiteral extends Literal,\n TMessage extends ErrorMessage<LiteralIssue> | undefined,\n> extends BaseSchema<TLiteral, TLiteral, LiteralIssue> {\n /**\n * The schema type.\n */\n readonly type: 'literal';\n /**\n * The schema reference.\n */\n readonly reference: typeof literal;\n /**\n * The literal value.\n */\n readonly literal: TLiteral;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a literal schema.\n *\n * @param literal_ The literal value.\n *\n * @returns A literal schema.\n */\nexport function literal<const TLiteral extends Literal>(\n literal_: TLiteral\n): LiteralSchema<TLiteral, undefined>;\n\n/**\n * Creates a literal schema.\n *\n * @param literal_ The literal value.\n * @param message The error message.\n *\n * @returns A literal schema.\n */\nexport function literal<\n const TLiteral extends Literal,\n const TMessage extends ErrorMessage<LiteralIssue> | undefined,\n>(literal_: TLiteral, message: TMessage): LiteralSchema<TLiteral, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function literal(\n literal_: Literal,\n message?: ErrorMessage<LiteralIssue>\n): LiteralSchema<Literal, ErrorMessage<LiteralIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'literal',\n reference: literal,\n expects: _stringify(literal_),\n async: false,\n literal: literal_,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value === this.literal) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<Literal, LiteralIssue>;\n },\n };\n}\n","import type { BaseIssue, BaseSchema, InferInput } from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\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 */\nexport function assert<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema, input: unknown): asserts input is InferInput<TSchema> {\n const issues = schema['~run']({ value: input }, { abortEarly: true }).issues;\n if (issues) {\n throw new ValidationError(issues);\n }\n}\n","import type { BaseIssue, Config } from '../types/index.js';\nimport type { Cache, CacheConfig } from './types/cache.js';\n\n/**\n * Efficient LRU cache using Map iteration order.\n */\nclass _LruCache<TValue> implements Cache<TValue> {\n // Stores [value, timestamp] tuples to avoid object allocation overhead\n private store: Map<string, [TValue, number]> | undefined;\n\n // Assign stable IDs to references\n private refIds: WeakMap<WeakKey, number> | undefined;\n\n // Counter for tracking references\n private refCount = 0;\n\n // Cache configuration\n private readonly maxSize: number;\n private readonly maxAge: number;\n private readonly hasMaxAge: boolean;\n\n constructor(config?: CacheConfig) {\n this.maxSize = config?.maxSize ?? 1000;\n this.maxAge = config?.maxAge ?? Infinity;\n this.hasMaxAge = isFinite(this.maxAge);\n }\n\n /**\n * Stringifies an unknown input to a cache key component.\n *\n * @param input The unknown input.\n *\n * @returns A cache key component.\n */\n #stringify(input: unknown): string {\n const type = typeof input;\n if (type === 'string') {\n return `\"${input}\"`;\n }\n if (type === 'number' || type === 'boolean') {\n return `${input}`;\n }\n if (type === 'bigint') {\n return `${input}n`;\n }\n if (type === 'object' || type === 'function') {\n if (input) {\n this.refIds ??= new WeakMap();\n let id = this.refIds.get(input as WeakKey);\n if (!id) {\n id = ++this.refCount;\n this.refIds.set(input as WeakKey, id);\n }\n return `#${id}`;\n }\n return 'null';\n }\n return type;\n }\n\n /**\n * Creates a cache key from input and config.\n *\n * @param input The input value.\n * @param config The parse configuration.\n *\n * @returns The cache key.\n */\n key(input: unknown, config: Config<BaseIssue<unknown>> = {}): string {\n return `${this.#stringify(input)}|${this.#stringify(config.lang)}|${this.#stringify(\n config.message\n )}|${this.#stringify(config.abortEarly)}|${this.#stringify(\n config.abortPipeEarly\n )}`;\n }\n\n /**\n * Gets a value from the cache by key.\n *\n * @param key The cache key.\n *\n * @returns The cached value.\n */\n get(key: string): TValue | undefined {\n if (!this.store) return undefined;\n\n // Get entry tuple [value, timestamp]\n const entry = this.store.get(key);\n\n // Return undefined if not found\n if (!entry) return undefined;\n\n // Delete stale entry if maxAge is exceeded\n if (this.hasMaxAge && Date.now() - entry[1] > this.maxAge) {\n this.store.delete(key);\n return undefined;\n }\n\n // Reorder by deleting and re-inserting at end (most recently used)\n this.store.delete(key);\n this.store.set(key, entry);\n\n // Return cached value\n return entry[0];\n }\n\n /**\n * Sets a value in the cache by key.\n *\n * @param key The cache key.\n * @param value The cached value.\n */\n set(key: string, value: TValue): void {\n this.store ??= new Map();\n\n // Delete first to ensure insertion at end for correct ordering\n this.store.delete(key);\n\n // Set value with current timestamp if maxAge is used\n const timestamp = this.hasMaxAge ? Date.now() : 0;\n this.store.set(key, [value, timestamp]);\n\n // Evict oldest entry (first key) if over maxSize\n if (this.store.size > this.maxSize) {\n this.store.delete(this.store.keys().next().value!);\n }\n }\n\n /**\n * Clears all entries from the cache.\n */\n clear(): void {\n this.store?.clear();\n }\n}\n\nexport { _LruCache };\n","import type { OutputDataset } from '../types/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { _cloneDataset, _getStandardProps } from '../utils/index.js';\nimport { _LruCache } from './_LruCache.js';\nimport type { Cache, CacheConfig } from './types/cache.js';\n\n/**\n * Schema with cache type.\n *\n * @beta\n */\nexport type SchemaWithCache<\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TCacheConfig extends CacheConfig | undefined,\n> = TSchema & {\n /**\n * The cache config.\n */\n readonly cacheConfig: TCacheConfig;\n /**\n * The cache instance.\n */\n readonly cache: Cache<\n OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>\n >;\n};\n\n/**\n * Caches the output of a schema.\n *\n * Hint: Primitive inputs are cached by value. Object and function inputs are\n * cached by reference identity, so mutating input objects and reusing the same\n * reference can return a stale cached dataset. Returned objects are also\n * reused by reference, so mutating cached output can affect later cache hits.\n *\n * @param schema The schema to cache.\n *\n * @returns The cached schema.\n *\n * @beta\n */\nexport function cache<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): SchemaWithCache<TSchema, undefined>;\n\n/**\n * Caches the output of a schema.\n *\n * Hint: Primitive inputs are cached by value. Object and function inputs are\n * cached by reference identity, so mutating input objects and reusing the same\n * reference can return a stale cached dataset. Returned objects are also\n * reused by reference, so mutating cached output can affect later cache hits.\n *\n * @param schema The schema to cache.\n * @param config The cache config.\n *\n * @returns The cached schema.\n *\n * @beta\n */\nexport function cache<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TCacheConfig extends CacheConfig | undefined,\n>(\n schema: TSchema,\n config: TCacheConfig\n): SchemaWithCache<TSchema, TCacheConfig>;\n\n// @__NO_SIDE_EFFECTS__\nexport function cache(\n schema: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n config?: CacheConfig\n): SchemaWithCache<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n CacheConfig | undefined\n> {\n return {\n ...schema,\n cacheConfig: config,\n cache: new _LruCache(config),\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, runConfig) {\n const key = this.cache.key(dataset.value, runConfig);\n let outputDataset = this.cache.get(key);\n if (!outputDataset) {\n this.cache.set(\n key,\n (outputDataset = schema['~run'](dataset, runConfig))\n );\n }\n // Hint: We clone the dataset before returning it so downstream pipe items\n // do not mutate the cached dataset wrapper or issues array.\n return _cloneDataset(outputDataset);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferInput,\n InferIssue,\n InferOutput,\n OutputDataset,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _cloneDataset, _getStandardProps } from '../utils/index.js';\nimport { _LruCache } from './_LruCache.js';\nimport type { Cache, CacheConfig } from './types/cache.js';\n\n/**\n * Schema with cache async type.\n *\n * @beta\n */\nexport type SchemaWithCacheAsync<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TCacheConfig extends CacheConfig | undefined,\n> = Omit<TSchema, 'async' | '~standard' | '~run'> & {\n /**\n * Whether it's async.\n */\n readonly async: true;\n\n /**\n * The cache config.\n */\n readonly cacheConfig: TCacheConfig;\n\n /**\n * The cache instance.\n */\n readonly cache: Cache<\n OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>\n >;\n\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferInput<TSchema>,\n InferOutput<TSchema>\n >;\n\n /**\n * Parses unknown input values.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>>;\n};\n\n/**\n * Caches the output of a schema.\n *\n * Hint: Primitive inputs are cached by value. Object and function inputs are\n * cached by reference identity, so mutating input objects and reusing the same\n * reference can return a stale cached dataset. Returned objects are also\n * reused by reference, so mutating cached output can affect later cache hits.\n *\n * @param schema The schema to cache.\n *\n * @returns The cached schema.\n *\n * @beta\n */\n// @ts-expect-error\nexport function cacheAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): SchemaWithCacheAsync<TSchema, undefined>;\n\n/**\n * Caches the output of a schema.\n *\n * Hint: Primitive inputs are cached by value. Object and function inputs are\n * cached by reference identity, so mutating input objects and reusing the same\n * reference can return a stale cached dataset. Returned objects are also\n * reused by reference, so mutating cached output can affect later cache hits.\n *\n * @param schema The schema to cache.\n * @param config The cache config.\n *\n * @returns The cached schema.\n *\n * @beta\n */\nexport function cacheAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TCacheConfig extends CacheConfig | undefined,\n>(\n schema: TSchema,\n config: TCacheConfig\n): SchemaWithCacheAsync<TSchema, TCacheConfig>;\n\n// @__NO_SIDE_EFFECTS__\nexport function cacheAsync(\n schema:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n config?: CacheConfig\n): SchemaWithCacheAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n CacheConfig | undefined\n> {\n let activeRuns:\n | Map<string, Promise<OutputDataset<unknown, BaseIssue<unknown>>>>\n | undefined;\n return {\n ...schema,\n async: true,\n cacheConfig: config,\n cache: new _LruCache(config),\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, runConfig) {\n // Create cache key based on input and config\n const key = this.cache.key(dataset.value, runConfig);\n\n // Check and return cached output if exists\n const cached = this.cache.get(key);\n if (cached) {\n // Hint: We clone the dataset before returning it so downstream pipe\n // items do not mutate the cached dataset wrapper or issues array.\n return _cloneDataset(cached);\n }\n\n // If not cached, check if a matching run is already in progress\n let promise = activeRuns?.get(key);\n if (!promise) {\n activeRuns ??= new Map();\n promise = Promise.resolve(schema['~run'](dataset, runConfig));\n activeRuns.set(key, promise);\n }\n\n // Await pending promise, cache output and return\n try {\n const outputDataset = await promise;\n this.cache.set(key, outputDataset);\n // Hint: We clone the dataset before returning it so downstream pipe\n // items do not mutate the cached dataset wrapper or issues array.\n return _cloneDataset(outputDataset);\n\n // Cleanup active runs map\n } finally {\n activeRuns?.delete(key);\n }\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\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__\nexport function config<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema, config: Config<InferIssue<TSchema>>): TSchema {\n return {\n ...schema,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config_) {\n return schema['~run'](dataset, { ...config_, ...config });\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n InferOutput,\n MaybeDeepReadonly,\n MaybePromise,\n OutputDataset,\n} from '../types/index.js';\nimport type { SchemaWithFallback } from './fallback.js';\nimport type { SchemaWithFallbackAsync } from './fallbackAsync.js';\n\n/**\n * Infer fallback type.\n */\nexport type InferFallback<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n> = TSchema extends\n | SchemaWithFallback<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n infer TFallback\n >\n | SchemaWithFallbackAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n infer TFallback\n >\n ? TFallback extends MaybeDeepReadonly<InferOutput<TSchema>>\n ? TFallback\n : TFallback extends () => MaybePromise<\n MaybeDeepReadonly<InferOutput<TSchema>>\n >\n ? ReturnType<TFallback>\n : never\n : undefined;\n\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__\nexport function getFallback<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n dataset?: OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>,\n config?: Config<InferIssue<TSchema>>\n): InferFallback<TSchema> {\n // @ts-expect-error\n return typeof schema.fallback === 'function'\n ? // @ts-expect-error\n schema.fallback(dataset, config)\n : // @ts-expect-error\n schema.fallback;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n Config,\n InferIssue,\n InferOutput,\n MaybeDeepReadonly,\n OutputDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport { getFallback } from './getFallback.js';\n\n/**\n * Fallback type.\n */\nexport type Fallback<\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n> =\n | MaybeDeepReadonly<InferOutput<TSchema>>\n | ((\n dataset?: OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>,\n config?: Config<InferIssue<TSchema>>\n ) => MaybeDeepReadonly<InferOutput<TSchema>>);\n\n/**\n * Schema with fallback type.\n */\nexport type SchemaWithFallback<\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TFallback extends Fallback<TSchema>,\n> = TSchema & {\n /**\n * The fallback value.\n */\n readonly fallback: TFallback;\n};\n\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__\nexport function fallback<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TFallback extends Fallback<TSchema>,\n>(\n schema: TSchema,\n fallback: TFallback\n): SchemaWithFallback<TSchema, TFallback> {\n return {\n ...schema,\n fallback,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n const outputDataset = schema['~run'](dataset, config);\n return outputDataset.issues\n ? { typed: true, value: getFallback(this, outputDataset, config) }\n : outputDataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferInput,\n InferIssue,\n InferOutput,\n MaybeDeepReadonly,\n MaybePromise,\n OutputDataset,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport { getFallback } from './getFallback.js';\n\n/**\n * Fallback async type.\n */\nexport type FallbackAsync<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n> =\n | MaybeDeepReadonly<InferOutput<TSchema>>\n | ((\n dataset?: OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>,\n config?: Config<InferIssue<TSchema>>\n ) => MaybePromise<MaybeDeepReadonly<InferOutput<TSchema>>>);\n\n/**\n * Schema with fallback async type.\n */\nexport type SchemaWithFallbackAsync<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TFallback extends FallbackAsync<TSchema>,\n> = Omit<TSchema, 'async' | '~standard' | '~run'> & {\n /**\n * The fallback value.\n */\n readonly fallback: TFallback;\n /**\n * Whether it's async.\n */\n readonly async: true;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferInput<TSchema>,\n InferOutput<TSchema>\n >;\n /**\n * Parses unknown input values.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<OutputDataset<InferOutput<TSchema>, InferIssue<TSchema>>>;\n};\n\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__\nexport function fallbackAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TFallback extends FallbackAsync<TSchema>,\n>(\n schema: TSchema,\n fallback: TFallback\n): SchemaWithFallbackAsync<TSchema, TFallback> {\n return {\n ...schema,\n fallback,\n async: true,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n const outputDataset = await schema['~run'](dataset, config);\n return outputDataset.issues\n ? {\n typed: true,\n value: await getFallback(this, outputDataset, config),\n }\n : outputDataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n IssuePathItem,\n} from '../types/index.js';\nimport type { RequiredPath, ValidPath } from './types/forward.js';\n\n// TODO: We should try to find a better way to type this function without\n// breaking the type inference, as the current implementation loses some type\n// information by returning a `BaseValidation` instead of the original type.\n// In the process, we should also figure out how to add a `.forward' property\n// to the returnd object in a type-safe way, similar to how the `fallback`\n// method works.\n\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__\nexport function forward<\n TInput extends Record<string, unknown> | ArrayLike<unknown>,\n TIssue extends BaseIssue<unknown>,\n const TPath extends RequiredPath,\n>(\n action: BaseValidation<TInput, TInput, TIssue>,\n path: ValidPath<TInput, TPath>\n): BaseValidation<TInput, TInput, TIssue> {\n return {\n ...action,\n '~run'(dataset, config) {\n // Create copy of previous issues\n const prevIssues = dataset.issues && [...dataset.issues];\n\n // Run validation action\n dataset = action['~run'](dataset, config);\n\n // If dataset contains issues, forward newly added issues\n if (dataset.issues) {\n for (const issue of dataset.issues) {\n if (!prevIssues?.includes(issue)) {\n // Create path input variable\n let pathInput: unknown = dataset.value;\n\n // Try to forward issue to end of path list\n for (const key of path) {\n // Create path value variable\n // @ts-expect-error\n const pathValue: unknown = pathInput[key];\n\n // Create path item for current key\n const pathItem: IssuePathItem = {\n type: 'unknown',\n origin: 'value',\n input: pathInput,\n key,\n value: pathValue,\n };\n\n // Forward issue by adding path item\n if (issue.path) {\n issue.path.push(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n\n // If path value is undefined, stop forwarding\n if (!pathValue) {\n break;\n }\n\n // Set next path input to current path value\n pathInput = pathValue;\n }\n }\n }\n }\n\n // Return output dataset\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n BaseValidationAsync,\n IssuePathItem,\n} from '../types/index.js';\nimport type { RequiredPath, ValidPath } from './types/forward.js';\n\n// TODO: We should try to find a better way to type this function without\n// breaking the type inference, as the current implementation loses some type\n// information by returning a `BaseValidation` instead of the original type.\n// In the process, we should also figure out how to add a `.forward' property\n// to the returnd object in a type-safe way, similar to how the `fallback`\n// method works.\n\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__\nexport function forwardAsync<\n TInput extends Record<string, unknown> | ArrayLike<unknown>,\n TIssue extends BaseIssue<unknown>,\n const TPath extends RequiredPath,\n>(\n action:\n | BaseValidation<TInput, TInput, TIssue>\n | BaseValidationAsync<TInput, TInput, TIssue>,\n path: ValidPath<TInput, TPath>\n): BaseValidationAsync<TInput, TInput, TIssue> {\n return {\n ...action,\n async: true,\n async '~run'(dataset, config) {\n // Create copy of previous issues\n const prevIssues = dataset.issues && [...dataset.issues];\n\n // Run validation action\n dataset = await action['~run'](dataset, config);\n\n // If dataset contains issues, forward newly added issues\n if (dataset.issues) {\n for (const issue of dataset.issues) {\n if (!prevIssues?.includes(issue)) {\n // Create path input variable\n let pathInput: unknown = dataset.value;\n\n // Try to forward issue to end of path list\n for (const key of path) {\n // Create path value variable\n // @ts-expect-error\n const pathValue: unknown = pathInput[key];\n\n // Create path item for current key\n const pathItem: IssuePathItem = {\n type: 'unknown',\n origin: 'value',\n input: pathInput,\n key,\n value: pathValue,\n };\n\n // Forward issue by adding path item\n if (issue.path) {\n issue.path.push(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n\n // If path value is undefined, stop forwarding\n if (!pathValue) {\n break;\n }\n\n // Set next path input to current path value\n pathInput = pathValue;\n }\n }\n }\n }\n\n // Return output dataset\n return dataset;\n },\n };\n}\n","import type {\n ExactOptionalSchema,\n ExactOptionalSchemaAsync,\n NullableSchema,\n NullableSchemaAsync,\n NullishSchema,\n NullishSchemaAsync,\n OptionalSchema,\n OptionalSchemaAsync,\n UndefinedableSchema,\n UndefinedableSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n UnknownDataset,\n} from '../types/index.js';\n\n/**\n * Schema with default type.\n */\ntype SchemaWithDefault =\n | ExactOptionalSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | NullableSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown>\n | NullishSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown>\n | OptionalSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown>\n | UndefinedableSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >;\n\n/**\n * Schema with default async type.\n */\ntype SchemaWithDefaultAsync =\n | ExactOptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | NullableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | NullishSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | OptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | UndefinedableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >;\n\n/**\n * Infer default type.\n */\nexport type InferDefault<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | SchemaWithDefault\n | SchemaWithDefaultAsync,\n> = TSchema extends SchemaWithDefault | SchemaWithDefaultAsync\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TSchema['default'] extends (...args: any) => any\n ? ReturnType<TSchema['default']>\n : TSchema['default']\n : undefined;\n\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__\nexport function getDefault<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n dataset?: UnknownDataset,\n config?: Config<InferIssue<TSchema>>\n): InferDefault<TSchema> {\n // @ts-expect-error\n return typeof schema.default === 'function'\n ? // @ts-expect-error\n schema.default(dataset, config)\n : // @ts-expect-error\n schema.default;\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseTupleIssue,\n LooseTupleSchema,\n ObjectIssue,\n ObjectSchema,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictTupleIssue,\n StrictTupleSchema,\n TupleIssue,\n TupleSchema,\n TupleWithRestIssue,\n TupleWithRestSchema,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n ObjectEntries,\n TupleItems,\n} from '../types/index.js';\nimport { getDefault } from './getDefault.js';\nimport type { InferDefaults } from './types/getDefaults.js';\n\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__\nexport function getDefaults<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | LooseObjectSchema<\n ObjectEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined>\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined>\n | TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined>\n | TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >,\n>(schema: TSchema): InferDefaults<TSchema> {\n // If it is an object schema, return defaults of entries\n if ('entries' in schema) {\n const object: Record<string, unknown> = {};\n for (const key in schema.entries) {\n object[key] = getDefaults(schema.entries[key]);\n }\n return object as InferDefaults<TSchema>;\n }\n\n // If it is a tuple schema, return defaults of items\n if ('items' in schema) {\n return schema.items.map(getDefaults) as InferDefaults<TSchema>;\n }\n\n // Otherwise, return default or `undefined`\n // @ts-expect-error\n return getDefault(schema);\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseObjectSchemaAsync,\n LooseTupleIssue,\n LooseTupleSchema,\n LooseTupleSchemaAsync,\n ObjectIssue,\n ObjectSchema,\n ObjectSchemaAsync,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n ObjectWithRestSchemaAsync,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictObjectSchemaAsync,\n StrictTupleIssue,\n StrictTupleSchema,\n StrictTupleSchemaAsync,\n TupleIssue,\n TupleSchema,\n TupleSchemaAsync,\n TupleWithRestIssue,\n TupleWithRestSchema,\n TupleWithRestSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n ObjectEntries,\n ObjectEntriesAsync,\n TupleItems,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { getDefault } from './getDefault.js';\nimport type { InferDefaults } from './types/getDefaults.js';\n\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__\nexport async function getDefaultsAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | LooseObjectSchema<\n ObjectEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined>\n | LooseTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<LooseTupleIssue> | undefined\n >\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<ObjectIssue> | undefined\n >\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined>\n | StrictTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<StrictTupleIssue> | undefined\n >\n | TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined>\n | TupleSchemaAsync<TupleItemsAsync, ErrorMessage<TupleIssue> | undefined>\n | TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >\n | TupleWithRestSchemaAsync<\n TupleItemsAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >,\n>(schema: TSchema): Promise<InferDefaults<TSchema>> {\n // If it is an object schema, return defaults of entries\n if ('entries' in schema) {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(schema.entries).map(async ([key, value]) => [\n key,\n await getDefaultsAsync(value),\n ])\n )\n ) as InferDefaults<TSchema>;\n }\n\n // If it is a tuple schema, return defaults of items\n if ('items' in schema) {\n return Promise.all(schema.items.map(getDefaultsAsync)) as Promise<\n InferDefaults<TSchema>\n >;\n }\n\n // Otherwise, return default or `undefined`\n // @ts-expect-error\n return getDefault(schema);\n}\n","import type { DescriptionAction } from '../actions/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n PipeItem,\n PipeItemAsync,\n} from '../types/index.js';\nimport { _getLastMetadata } from '../utils/index.js';\nimport type { SchemaWithPipe, SchemaWithPipeAsync } from './index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | SchemaWithPipe<\n readonly [\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | DescriptionAction<unknown, string>\n )[],\n ]\n >\n | SchemaWithPipeAsync<\n readonly [\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ),\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | DescriptionAction<unknown, string>\n )[],\n ]\n >;\n\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// TODO: Investigate if return type can be strongly typed\n// @__NO_SIDE_EFFECTS__\nexport function getDescription(schema: Schema): string | undefined {\n return _getLastMetadata(schema, 'description');\n}\n","import type { ExamplesAction } from '../actions/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n PipeItem,\n PipeItemAsync,\n} from '../types/index.js';\nimport type { SchemaWithPipe, SchemaWithPipeAsync } from './index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | SchemaWithPipe<\n readonly [\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | ExamplesAction<unknown, readonly unknown[]>\n )[],\n ]\n >\n | SchemaWithPipeAsync<\n readonly [\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ),\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | ExamplesAction<unknown, readonly unknown[]>\n )[],\n ]\n >;\n\n/**\n * Recursively concat type.\n */\ntype RecursiveConcat<\n TRootPipe extends readonly // prettier-ignore\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (| PipeItem<any, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>>\n )[],\n TCollectedExamples extends unknown[] = [],\n> = TRootPipe extends readonly [\n infer TFirstItem,\n ...infer TPipeRest extends readonly // prettier-ignore\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (| PipeItem<any, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>>\n )[],\n]\n ? TFirstItem extends\n | SchemaWithPipe<infer TNestedPipe>\n | SchemaWithPipeAsync<infer TNestedPipe>\n ? RecursiveConcat<\n TPipeRest,\n RecursiveConcat<TNestedPipe, TCollectedExamples>\n >\n : TFirstItem extends ExamplesAction<unknown, infer TCurrentExamples>\n ? RecursiveConcat<TPipeRest, [...TCollectedExamples, ...TCurrentExamples]>\n : RecursiveConcat<TPipeRest, TCollectedExamples>\n : TCollectedExamples;\n\n/**\n * Infer examples type.\n */\nexport type InferExamples<TSchema extends Schema> = TSchema extends\n | SchemaWithPipe<infer TPipe>\n | SchemaWithPipeAsync<infer TPipe>\n ? Readonly<RecursiveConcat<TPipe>>\n : [];\n\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__\nexport function getExamples<const TSchema extends Schema>(\n schema: TSchema\n): InferExamples<TSchema> {\n const examples: unknown[] = [];\n function depthFirstCollect(schema: Schema): void {\n if ('pipe' in schema) {\n for (const item of schema.pipe) {\n if (item.kind === 'schema' && 'pipe' in item) {\n depthFirstCollect(item);\n } else if (item.kind === 'metadata' && item.type === 'examples') {\n // @ts-expect-error\n examples.push(...item.examples);\n }\n }\n }\n }\n depthFirstCollect(schema);\n // @ts-expect-error\n return examples;\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseTupleIssue,\n LooseTupleSchema,\n ObjectIssue,\n ObjectSchema,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictTupleIssue,\n StrictTupleSchema,\n TupleIssue,\n TupleSchema,\n TupleWithRestIssue,\n TupleWithRestSchema,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n ObjectEntries,\n TupleItems,\n} from '../types/index.js';\nimport { getFallback } from './getFallback.js';\nimport type { InferFallbacks } from './types/getFallbacks.js';\n\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__\nexport function getFallbacks<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | LooseObjectSchema<\n ObjectEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined>\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined>\n | TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined>\n | TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >,\n>(schema: TSchema): InferFallbacks<TSchema> {\n // If it is an object schema, return fallbacks of entries\n if ('entries' in schema) {\n const object: Record<string, unknown> = {};\n for (const key in schema.entries) {\n object[key] = getFallbacks(schema.entries[key]);\n }\n return object as InferFallbacks<TSchema>;\n }\n\n // If it is a tuple schema, return fallbacks of items\n if ('items' in schema) {\n return schema.items.map(getFallbacks) as InferFallbacks<TSchema>;\n }\n\n // Otherwise, return fallback or `undefined`\n // @ts-expect-error\n return getFallback(schema);\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseObjectSchemaAsync,\n LooseTupleIssue,\n LooseTupleSchema,\n LooseTupleSchemaAsync,\n ObjectIssue,\n ObjectSchema,\n ObjectSchemaAsync,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n ObjectWithRestSchemaAsync,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictObjectSchemaAsync,\n StrictTupleIssue,\n StrictTupleSchema,\n StrictTupleSchemaAsync,\n TupleIssue,\n TupleSchema,\n TupleSchemaAsync,\n TupleWithRestIssue,\n TupleWithRestSchema,\n TupleWithRestSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n ObjectEntries,\n ObjectEntriesAsync,\n TupleItems,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { getFallback } from './getFallback.js';\nimport type { InferFallbacks } from './types/getFallbacks.js';\n\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__\nexport async function getFallbacksAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | LooseObjectSchema<\n ObjectEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined>\n | LooseTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<LooseTupleIssue> | undefined\n >\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<ObjectIssue> | undefined\n >\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined>\n | StrictTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<StrictTupleIssue> | undefined\n >\n | TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined>\n | TupleSchemaAsync<TupleItemsAsync, ErrorMessage<TupleIssue> | undefined>\n | TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >\n | TupleWithRestSchemaAsync<\n TupleItemsAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >,\n>(schema: TSchema): Promise<InferFallbacks<TSchema>> {\n // If it is an object schema, return fallbacks of entries\n if ('entries' in schema) {\n return Object.fromEntries(\n await Promise.all(\n Object.entries(schema.entries).map(async ([key, value]) => [\n key,\n await getFallbacksAsync(value),\n ])\n )\n ) as InferFallbacks<TSchema>;\n }\n\n // If it is a tuple schema, return fallbacks of items\n if ('items' in schema) {\n return Promise.all(schema.items.map(getFallbacksAsync)) as Promise<\n InferFallbacks<TSchema>\n >;\n }\n\n // Otherwise, return fallback or `undefined`\n // @ts-expect-error\n return getFallback(schema);\n}\n","import type { MetadataAction } from '../actions/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Merge,\n PipeItem,\n PipeItemAsync,\n Prettify,\n} from '../types/index.js';\nimport type { SchemaWithPipe } from './pipe.js';\nimport type { SchemaWithPipeAsync } from './pipeAsync.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | SchemaWithPipe<\n readonly [\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | MetadataAction<unknown, Record<string, unknown>>\n )[],\n ]\n >\n | SchemaWithPipeAsync<\n readonly [\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ),\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | MetadataAction<unknown, Record<string, unknown>>\n )[],\n ]\n >;\n\n/**\n * Basic pipe item type.\n */\ntype BasicPipeItem =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | PipeItem<any, unknown, BaseIssue<unknown>>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>>\n | MetadataAction<unknown, Record<string, unknown>>;\n\n/**\n * Recursive merge type.\n */\ntype RecursiveMerge<\n TRootPipe extends readonly BasicPipeItem[],\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n TCollectedMetadata extends Record<string, unknown> = {},\n> = TRootPipe extends readonly [\n infer TFirstItem,\n ...infer TPipeRest extends readonly BasicPipeItem[],\n]\n ? TFirstItem extends\n | SchemaWithPipe<infer TNestedPipe>\n | SchemaWithPipeAsync<infer TNestedPipe>\n ? RecursiveMerge<TPipeRest, RecursiveMerge<TNestedPipe, TCollectedMetadata>>\n : TFirstItem extends MetadataAction<unknown, infer TCurrentMetadata>\n ? RecursiveMerge<TPipeRest, Merge<TCollectedMetadata, TCurrentMetadata>>\n : RecursiveMerge<TPipeRest, TCollectedMetadata>\n : TCollectedMetadata;\n\n/**\n * Infer metadata type.\n *\n * @beta\n */\nexport type InferMetadata<TSchema extends Schema> =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BaseSchema<any, any, any> extends TSchema\n ? Record<string, unknown>\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n BaseSchemaAsync<any, any, any> extends TSchema\n ? Record<string, unknown>\n : TSchema extends\n | SchemaWithPipe<infer TPipe>\n | SchemaWithPipeAsync<infer TPipe>\n ? Prettify<RecursiveMerge<TPipe>>\n : // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n {};\n\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__\nexport function getMetadata<const TSchema extends Schema>(\n schema: TSchema\n): InferMetadata<TSchema> {\n const result = {};\n function depthFirstMerge(schema: Schema): void {\n if ('pipe' in schema) {\n for (const item of schema.pipe) {\n if (item.kind === 'schema' && 'pipe' in item) {\n depthFirstMerge(item);\n } else if (item.kind === 'metadata' && item.type === 'metadata') {\n // @ts-expect-error\n Object.assign(result, item.metadata);\n }\n }\n }\n }\n depthFirstMerge(schema);\n // @ts-expect-error\n return result;\n}\n","import type { TitleAction } from '../actions/title.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n PipeItem,\n PipeItemAsync,\n} from '../types/index.js';\nimport { _getLastMetadata } from '../utils/index.js';\nimport type { SchemaWithPipe, SchemaWithPipeAsync } from './index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | SchemaWithPipe<\n readonly [\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | TitleAction<unknown, string>\n )[],\n ]\n >\n | SchemaWithPipeAsync<\n readonly [\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n ),\n ...(\n | PipeItem<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | PipeItemAsync<any, unknown, BaseIssue<unknown>> // eslint-disable-line @typescript-eslint/no-explicit-any\n | TitleAction<unknown, string>\n )[],\n ]\n >;\n\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// TODO: Investigate if return type can be strongly typed\n// @__NO_SIDE_EFFECTS__\nexport function getTitle(schema: Schema): string | undefined {\n return _getLastMetadata(schema, 'title');\n}\n","import type { BaseIssue, BaseSchema, InferInput } from '../types/index.js';\n\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__\nexport function is<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema, input: unknown): input is InferInput<TSchema> {\n return !schema['~run']({ value: input }, { abortEarly: true }).issues;\n}\n","import {\n type LooseObjectIssue,\n type LooseObjectSchema,\n type LooseObjectSchemaAsync,\n type ObjectIssue,\n type ObjectSchema,\n type ObjectSchemaAsync,\n type ObjectWithRestIssue,\n type ObjectWithRestSchema,\n type ObjectWithRestSchemaAsync,\n picklist,\n type PicklistIssue,\n type PicklistSchema,\n type StrictObjectIssue,\n type StrictObjectSchema,\n type StrictObjectSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n ObjectEntries,\n ObjectEntriesAsync,\n UnionToTuple,\n} from '../types/index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | LooseObjectSchema<ObjectEntries, ErrorMessage<LooseObjectIssue> | undefined>\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >;\n\n/**\n * Force tuple type.\n */\ntype ForceTuple<T> = T extends [string, ...string[]] ? T : [];\n\n/**\n * Object keys type.\n */\ntype ObjectKeys<TSchema extends Schema> = ForceTuple<\n UnionToTuple<keyof TSchema['entries']>\n>;\n\n/**\n * Creates a picklist schema of object keys.\n *\n * @param schema The object schema.\n *\n * @returns A picklist schema.\n */\nexport function keyof<const TSchema extends Schema>(\n schema: TSchema\n): PicklistSchema<ObjectKeys<TSchema>, undefined>;\n\n/**\n * Creates a picklist schema of object keys.\n *\n * @param schema The object schema.\n * @param message The error message.\n *\n * @returns A picklist schema.\n */\nexport function keyof<\n const TSchema extends Schema,\n const TMessage extends ErrorMessage<PicklistIssue> | undefined,\n>(\n schema: TSchema,\n message: TMessage\n): PicklistSchema<ObjectKeys<TSchema>, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function keyof(\n schema: Schema,\n message?: ErrorMessage<PicklistIssue>\n): PicklistSchema<ObjectKeys<Schema>, ErrorMessage<PicklistIssue> | undefined> {\n return picklist(Object.keys(schema.entries) as ObjectKeys<Schema>, message);\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferIssue,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\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__\nexport function message<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema, message_: ErrorMessage<InferIssue<TSchema>>): TSchema {\n return {\n ...schema,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n return schema['~run'](dataset, { ...config, message: message_ });\n },\n };\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseObjectSchemaAsync,\n ObjectIssue,\n ObjectSchema,\n ObjectSchemaAsync,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n ObjectWithRestSchemaAsync,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictObjectSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n InferOutput,\n ObjectEntries,\n ObjectEntriesAsync,\n ObjectKeys,\n OutputDataset,\n SchemaWithoutPipe,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema = SchemaWithoutPipe<\n | LooseObjectSchema<ObjectEntries, ErrorMessage<LooseObjectIssue> | undefined>\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n>;\n\n/**\n * Schema with omit type.\n */\nexport type SchemaWithOmit<\n TSchema extends Schema,\n TKeys extends ObjectKeys<TSchema>,\n> = TSchema extends\n | ObjectSchema<infer TEntries, ErrorMessage<ObjectIssue> | undefined>\n | StrictObjectSchema<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Omit<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Omit<TEntries, TKeys[number]>>,\n InferObjectOutput<Omit<TEntries, TKeys[number]>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<Omit<TEntries, TKeys[number]>>,\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<Omit<TEntries, TKeys[number]>>;\n readonly output: InferObjectOutput<Omit<TEntries, TKeys[number]>>;\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends\n | ObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<ObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Omit<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Omit<TEntries, TKeys[number]>>,\n InferObjectOutput<Omit<TEntries, TKeys[number]>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<Omit<TEntries, TKeys[number]>>,\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<Omit<TEntries, TKeys[number]>>;\n readonly output: InferObjectOutput<Omit<TEntries, TKeys[number]>>;\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchema<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Omit<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n InferObjectInput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Omit<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n Omit<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Omit<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n InferObjectInput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Omit<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n Omit<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchema<\n infer TEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Omit<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: InferInput<TSchema['rest']>;\n },\n InferObjectOutput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Omit<TEntries, TKeys[number]>\n > & {\n [key: string]: InferInput<TSchema['rest']>;\n };\n readonly output: InferObjectOutput<\n Omit<TEntries, TKeys[number]>\n > & { [key: string]: InferOutput<TSchema['rest']> };\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchemaAsync<\n infer TEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Omit<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: InferInput<TSchema['rest']>;\n },\n InferObjectOutput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<Omit<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Omit<TEntries, TKeys[number]>\n > & {\n [key: string]: InferInput<TSchema['rest']>;\n };\n readonly output: InferObjectOutput<\n Omit<TEntries, TKeys[number]>\n > & { [key: string]: InferOutput<TSchema['rest']> };\n readonly issue:\n | Extract<\n InferIssue<TSchema>,\n { type: TSchema['type'] }\n >\n | InferObjectIssue<Omit<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>;\n }\n | undefined;\n }\n : never;\n\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__\nexport function omit<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n>(schema: TSchema, keys: TKeys): SchemaWithOmit<TSchema, TKeys> {\n // Create modified object entries\n // @ts-expect-error\n const entries: Omit<TSchema['entries'], TKeys[number]> = {\n ...schema.entries,\n };\n for (const key of keys) {\n // @ts-expect-error\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete entries[key];\n }\n\n // Rerturn modified copy of schema\n // @ts-expect-error\n return {\n ...schema,\n entries,\n get '~standard'() {\n return _getStandardProps(this);\n },\n };\n}\n","import { getGlobalConfig } from '../storages/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Config,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\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 */\nexport function parse<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n input: unknown,\n config?: Config<InferIssue<TSchema>>\n): InferOutput<TSchema> {\n const dataset = schema['~run']({ value: input }, getGlobalConfig(config));\n if (dataset.issues) {\n throw new ValidationError(dataset.issues);\n }\n return dataset.value;\n}\n","import { getGlobalConfig } from '../storages/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\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 */\nexport async function parseAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n input: unknown,\n config?: Config<InferIssue<TSchema>>\n): Promise<InferOutput<TSchema>> {\n const dataset = await schema['~run'](\n { value: input },\n getGlobalConfig(config)\n );\n if (dataset.issues) {\n throw new ValidationError(dataset.issues);\n }\n return dataset.value;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n Config,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { parse } from './parse.js';\n\n/**\n * The parser interface.\n */\nexport interface Parser<\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TConfig extends Config<InferIssue<TSchema>> | undefined,\n> {\n /**\n * Parses an unknown input based on the schema.\n */\n (input: unknown): InferOutput<TSchema>;\n /**\n * The schema to be used.\n */\n readonly schema: TSchema;\n /**\n * The parser configuration.\n */\n readonly config: TConfig;\n}\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n *\n * @returns The parser function.\n */\nexport function parser<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): Parser<TSchema, undefined>;\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n * @param config The parser configuration.\n *\n * @returns The parser function.\n */\nexport function parser<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TConfig extends Config<InferIssue<TSchema>> | undefined,\n>(schema: TSchema, config: TConfig): Parser<TSchema, TConfig>;\n\n// @__NO_SIDE_EFFECTS__\nexport function parser(\n schema: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n config?: Config<InferIssue<BaseSchema<unknown, unknown, BaseIssue<unknown>>>>\n): Parser<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n> {\n const func: Parser<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n > = (input: unknown) => parse(schema, input, config);\n // @ts-expect-error\n func.schema = schema;\n // @ts-expect-error\n func.config = config;\n return func;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { parseAsync } from './parseAsync.js';\n\n/**\n * The parser async interface.\n */\nexport interface ParserAsync<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TConfig extends Config<InferIssue<TSchema>> | undefined,\n> {\n /**\n * Parses an unknown input based on the schema.\n */\n (input: unknown): Promise<InferOutput<TSchema>>;\n /**\n * The schema to be used.\n */\n readonly schema: TSchema;\n /**\n * The parser configuration.\n */\n readonly config: TConfig;\n}\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n *\n * @returns The parser function.\n */\nexport function parserAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): ParserAsync<TSchema, undefined>;\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n * @param config The parser configuration.\n *\n * @returns The parser function.\n */\nexport function parserAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TConfig extends Config<InferIssue<TSchema>> | undefined,\n>(schema: TSchema, config: TConfig): ParserAsync<TSchema, TConfig>;\n\n// @__NO_SIDE_EFFECTS__\nexport function parserAsync(\n schema:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n config?: Config<\n InferIssue<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n >\n >\n): ParserAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n> {\n const func: ParserAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n > = (input: unknown) => parseAsync(schema, input, config);\n // @ts-expect-error\n func.schema = schema;\n // @ts-expect-error\n func.config = config;\n return func;\n}\n","import {\n type LooseObjectIssue,\n type LooseObjectSchema,\n type ObjectIssue,\n type ObjectSchema,\n type ObjectWithRestIssue,\n type ObjectWithRestSchema,\n optional,\n type OptionalSchema,\n type StrictObjectIssue,\n type StrictObjectSchema,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectOutput,\n InferOutput,\n ObjectEntries,\n ObjectKeys,\n OutputDataset,\n SchemaWithoutPipe,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema = SchemaWithoutPipe<\n | LooseObjectSchema<ObjectEntries, ErrorMessage<LooseObjectIssue> | undefined>\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n>;\n\n/**\n * Partial entries type.\n */\ntype PartialEntries<\n TEntries extends ObjectEntries,\n TKeys extends readonly (keyof TEntries)[] | undefined,\n> = {\n [TKey in keyof TEntries]: TKeys extends readonly (keyof TEntries)[]\n ? TKey extends TKeys[number]\n ? OptionalSchema<TEntries[TKey], undefined>\n : TEntries[TKey]\n : OptionalSchema<TEntries[TKey], undefined>;\n };\n\n/**\n * Schema with partial type.\n */\nexport type SchemaWithPartial<\n TSchema extends Schema,\n TKeys extends ObjectKeys<TSchema> | undefined,\n> = TSchema extends\n | ObjectSchema<infer TEntries, ErrorMessage<ObjectIssue> | undefined>\n | StrictObjectSchema<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: PartialEntries<TEntries, TKeys>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<PartialEntries<TEntries, TKeys>>,\n InferObjectOutput<PartialEntries<TEntries, TKeys>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<PartialEntries<TEntries, TKeys>>,\n InferIssue<TSchema>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<PartialEntries<TEntries, TKeys>>;\n readonly output: InferObjectOutput<PartialEntries<TEntries, TKeys>>;\n readonly issue: InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchema<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: PartialEntries<TEntries, TKeys>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: unknown;\n },\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: unknown;\n },\n InferIssue<TSchema>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n PartialEntries<TEntries, TKeys>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n PartialEntries<TEntries, TKeys>\n > & {\n [key: string]: unknown;\n };\n readonly issue: InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchema<\n infer TEntries,\n infer TRest,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: PartialEntries<TEntries, TKeys>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: InferInput<TRest>;\n },\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: InferOutput<TRest>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: InferOutput<TRest>;\n },\n InferIssue<TSchema>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n PartialEntries<TEntries, TKeys>\n > & {\n [key: string]: InferInput<TRest>;\n };\n readonly output: InferObjectOutput<\n PartialEntries<TEntries, TKeys>\n > & { [key: string]: InferOutput<TRest> };\n readonly issue: InferIssue<TSchema>;\n }\n | undefined;\n }\n : never;\n\n/**\n * Creates a modified copy of an object schema that marks all entries as optional.\n *\n * @param schema The schema to modify.\n *\n * @returns An object schema.\n */\nexport function partial<const TSchema extends Schema>(\n schema: TSchema\n): SchemaWithPartial<TSchema, undefined>;\n\n/**\n * Creates a modified copy of an object schema that marks the selected entries\n * as optional.\n *\n * @param schema The schema to modify.\n * @param keys The selected entries.\n *\n * @returns An object schema.\n */\nexport function partial<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n>(schema: TSchema, keys: TKeys): SchemaWithPartial<TSchema, TKeys>;\n\n// @__NO_SIDE_EFFECTS__\nexport function partial(\n schema: Schema,\n keys?: ObjectKeys<Schema>\n): SchemaWithPartial<Schema, ObjectKeys<Schema> | undefined> {\n // Create modified object entries\n const entries: PartialEntries<ObjectEntries, ObjectKeys<Schema>> = {};\n for (const key in schema.entries) {\n // @ts-expect-error\n entries[key] =\n !keys || keys.includes(key)\n ? optional(schema.entries[key])\n : schema.entries[key];\n }\n\n // Return modified copy of schema\n return {\n ...schema,\n entries,\n get '~standard'() {\n return _getStandardProps(this);\n },\n };\n}\n","import {\n type LooseObjectIssue,\n type LooseObjectSchemaAsync,\n type ObjectIssue,\n type ObjectSchemaAsync,\n type ObjectWithRestIssue,\n type ObjectWithRestSchemaAsync,\n optionalAsync,\n type OptionalSchemaAsync,\n type StrictObjectIssue,\n type StrictObjectSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectOutput,\n InferOutput,\n ObjectEntriesAsync,\n ObjectKeys,\n OutputDataset,\n SchemaWithoutPipe,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema = SchemaWithoutPipe<\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n>;\n\n/**\n * Partial entries type.\n */\ntype PartialEntries<\n TEntries extends ObjectEntriesAsync,\n TKeys extends readonly (keyof TEntries)[] | undefined,\n> = {\n [TKey in keyof TEntries]: TKeys extends readonly (keyof TEntries)[]\n ? TKey extends TKeys[number]\n ? OptionalSchemaAsync<TEntries[TKey], undefined>\n : TEntries[TKey]\n : OptionalSchemaAsync<TEntries[TKey], undefined>;\n };\n\n/**\n * Schema with partial type.\n */\nexport type SchemaWithPartialAsync<\n TSchema extends Schema,\n TKeys extends ObjectKeys<TSchema> | undefined,\n> = TSchema extends\n | ObjectSchemaAsync<infer TEntries, ErrorMessage<ObjectIssue> | undefined>\n | StrictObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: PartialEntries<TEntries, TKeys>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<PartialEntries<TEntries, TKeys>>,\n InferObjectOutput<PartialEntries<TEntries, TKeys>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<PartialEntries<TEntries, TKeys>>,\n InferIssue<TSchema>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<PartialEntries<TEntries, TKeys>>;\n readonly output: InferObjectOutput<PartialEntries<TEntries, TKeys>>;\n readonly issue: InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: PartialEntries<TEntries, TKeys>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: unknown;\n },\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: unknown;\n },\n InferIssue<TSchema>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n PartialEntries<TEntries, TKeys>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n PartialEntries<TEntries, TKeys>\n > & {\n [key: string]: unknown;\n };\n readonly issue: InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchemaAsync<\n infer TEntries,\n infer TRest,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: PartialEntries<TEntries, TKeys>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: InferInput<TRest>;\n },\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: InferOutput<TRest>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<PartialEntries<TEntries, TKeys>> & {\n [key: string]: InferOutput<TRest>;\n },\n InferIssue<TSchema>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n PartialEntries<TEntries, TKeys>\n > & {\n [key: string]: InferInput<TRest>;\n };\n readonly output: InferObjectOutput<\n PartialEntries<TEntries, TKeys>\n > & { [key: string]: InferOutput<TRest> };\n readonly issue: InferIssue<TSchema>;\n }\n | undefined;\n }\n : never;\n\n/**\n * Creates a modified copy of an object schema that marks all entries as optional.\n *\n * @param schema The schema to modify.\n *\n * @returns An object schema.\n */\nexport function partialAsync<const TSchema extends Schema>(\n schema: TSchema\n): SchemaWithPartialAsync<TSchema, undefined>;\n\n/**\n * Creates a modified copy of an object schema that marks the selected entries\n * as optional.\n *\n * @param schema The schema to modify.\n * @param keys The selected entries.\n *\n * @returns An object schema.\n */\nexport function partialAsync<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n>(schema: TSchema, keys: TKeys): SchemaWithPartialAsync<TSchema, TKeys>;\n\n// @__NO_SIDE_EFFECTS__\nexport function partialAsync(\n schema: Schema,\n keys?: ObjectKeys<Schema>\n): SchemaWithPartialAsync<Schema, ObjectKeys<Schema> | undefined> {\n // Create modified object entries\n const entries: PartialEntries<ObjectEntriesAsync, ObjectKeys<Schema>> = {};\n for (const key in schema.entries) {\n // @ts-expect-error\n entries[key] =\n !keys || keys.includes(key)\n ? optionalAsync(schema.entries[key])\n : schema.entries[key];\n }\n\n // Return modified copy of schema\n return {\n ...schema,\n entries,\n get '~standard'() {\n return _getStandardProps(this);\n },\n };\n}\n","import type {\n LooseObjectIssue,\n LooseObjectSchema,\n LooseObjectSchemaAsync,\n ObjectIssue,\n ObjectSchema,\n ObjectSchemaAsync,\n ObjectWithRestIssue,\n ObjectWithRestSchema,\n ObjectWithRestSchemaAsync,\n StrictObjectIssue,\n StrictObjectSchema,\n StrictObjectSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n InferOutput,\n ObjectEntries,\n ObjectEntriesAsync,\n ObjectKeys,\n OutputDataset,\n SchemaWithoutPipe,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * The schema type.\n */\ntype Schema = SchemaWithoutPipe<\n | LooseObjectSchema<ObjectEntries, ErrorMessage<LooseObjectIssue> | undefined>\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n>;\n\n/**\n * Schema with pick type.\n */\nexport type SchemaWithPick<\n TSchema extends Schema,\n TKeys extends ObjectKeys<TSchema>,\n> = TSchema extends\n | ObjectSchema<infer TEntries, ErrorMessage<ObjectIssue> | undefined>\n | StrictObjectSchema<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Pick<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Pick<TEntries, TKeys[number]>>,\n InferObjectOutput<Pick<TEntries, TKeys[number]>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<Pick<TEntries, TKeys[number]>>,\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<Pick<TEntries, TKeys[number]>>;\n readonly output: InferObjectOutput<Pick<TEntries, TKeys[number]>>;\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends\n | ObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<ObjectIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Pick<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Pick<TEntries, TKeys[number]>>,\n InferObjectOutput<Pick<TEntries, TKeys[number]>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<Pick<TEntries, TKeys[number]>>,\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<Pick<TEntries, TKeys[number]>>;\n readonly output: InferObjectOutput<Pick<TEntries, TKeys[number]>>;\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchema<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Pick<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Pick<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n Pick<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Pick<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: unknown;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Pick<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n Pick<TEntries, TKeys[number]>\n > & {\n [key: string]: unknown;\n };\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchema<\n infer TEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Pick<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: InferInput<TSchema['rest']>;\n },\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Pick<TEntries, TKeys[number]>\n > & {\n [key: string]: InferInput<TSchema['rest']>;\n };\n readonly output: InferObjectOutput<\n Pick<TEntries, TKeys[number]>\n > & { [key: string]: InferOutput<TSchema['rest']> };\n readonly issue:\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchemaAsync<\n infer TEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: Pick<TEntries, TKeys[number]>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: InferInput<TSchema['rest']>;\n },\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<Pick<TEntries, TKeys[number]>> & {\n [key: string]: InferOutput<TSchema['rest']>;\n },\n | Extract<InferIssue<TSchema>, { type: TSchema['type'] }>\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n Pick<TEntries, TKeys[number]>\n > & {\n [key: string]: InferInput<TSchema['rest']>;\n };\n readonly output: InferObjectOutput<\n Pick<TEntries, TKeys[number]>\n > & { [key: string]: InferOutput<TSchema['rest']> };\n readonly issue:\n | Extract<\n InferIssue<TSchema>,\n { type: TSchema['type'] }\n >\n | InferObjectIssue<Pick<TEntries, TKeys[number]>>\n | InferIssue<TSchema['rest']>;\n }\n | undefined;\n }\n : never;\n\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__\nexport function pick<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n>(schema: TSchema, keys: TKeys): SchemaWithPick<TSchema, TKeys> {\n // Create modified object entries\n // @ts-expect-error\n const entries: Pick<TSchema['entries'], TKeys[number]> = {};\n for (const key of keys) {\n // @ts-expect-error\n entries[key] = schema.entries[key];\n }\n\n // Return modified copy of schema\n // @ts-expect-error\n return {\n ...schema,\n entries,\n get '~standard'() {\n return _getStandardProps(this);\n },\n };\n}\n","import {\n type LooseObjectIssue,\n type LooseObjectSchema,\n nonOptional,\n type NonOptionalIssue,\n type NonOptionalSchema,\n type ObjectIssue,\n type ObjectSchema,\n type ObjectWithRestIssue,\n type ObjectWithRestSchema,\n type StrictObjectIssue,\n type StrictObjectSchema,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectOutput,\n InferOutput,\n ObjectEntries,\n ObjectKeys,\n OutputDataset,\n SchemaWithoutPipe,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema = SchemaWithoutPipe<\n | LooseObjectSchema<ObjectEntries, ErrorMessage<LooseObjectIssue> | undefined>\n | ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n>;\n\n/**\n * Required entries type.\n */\ntype RequiredEntries<\n TEntries extends ObjectEntries,\n TKeys extends readonly (keyof TEntries)[] | undefined,\n TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n> = {\n [TKey in keyof TEntries]: TKeys extends readonly (keyof TEntries)[]\n ? TKey extends TKeys[number]\n ? NonOptionalSchema<TEntries[TKey], TMessage>\n : TEntries[TKey]\n : NonOptionalSchema<TEntries[TKey], TMessage>;\n };\n\n/**\n * Schema with required type.\n */\nexport type SchemaWithRequired<\n TSchema extends Schema,\n TKeys extends ObjectKeys<TSchema> | undefined,\n TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n> = TSchema extends\n | ObjectSchema<infer TEntries, ErrorMessage<ObjectIssue> | undefined>\n | StrictObjectSchema<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: RequiredEntries<TEntries, TKeys, TMessage>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<RequiredEntries<TEntries, TKeys, TMessage>>,\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>>,\n NonOptionalIssue | InferIssue<TSchema>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n RequiredEntries<TEntries, TKeys, TMessage>\n >;\n readonly output: InferObjectOutput<\n RequiredEntries<TEntries, TKeys, TMessage>\n >;\n readonly issue: NonOptionalIssue | InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchema<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: RequiredEntries<TEntries, TKeys, TMessage>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: unknown;\n },\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: unknown;\n },\n NonOptionalIssue | InferIssue<TSchema>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & {\n [key: string]: unknown;\n };\n readonly issue: NonOptionalIssue | InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchema<\n infer TEntries,\n infer TRest,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: RequiredEntries<TEntries, TKeys, TMessage>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: InferInput<TRest>;\n },\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: InferOutput<TRest>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => OutputDataset<\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: InferOutput<TRest>;\n },\n NonOptionalIssue | InferIssue<TSchema>\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & {\n [key: string]: InferInput<TRest>;\n };\n readonly output: InferObjectOutput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & { [key: string]: InferOutput<TRest> };\n readonly issue: NonOptionalIssue | InferIssue<TSchema>;\n }\n | undefined;\n }\n : never;\n\n/**\n * Creates a modified copy of an object schema that marks all entries as required.\n *\n * @param schema The schema to modify.\n *\n * @returns An object schema.\n */\n// @ts-expect-error FIXME: TypeScript incorrectly claims that the overload\n// signature is not compatible with the implementation signature\nexport function required<const TSchema extends Schema>(\n schema: TSchema\n): SchemaWithRequired<TSchema, undefined, undefined>;\n\n/**\n * Creates a modified copy of an object schema that marks all entries as required.\n *\n * @param schema The schema to modify.\n * @param message The error message.\n *\n * @returns An object schema.\n */\nexport function required<\n const TSchema extends Schema,\n const TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n>(\n schema: TSchema,\n message: TMessage\n): SchemaWithRequired<TSchema, undefined, TMessage>;\n\n/**\n * Creates a modified copy of an object schema that marks the selected entries\n * as required.\n *\n * @param schema The schema to modify.\n * @param keys The selected entries.\n *\n * @returns An object schema.\n */\nexport function required<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n>(schema: TSchema, keys: TKeys): SchemaWithRequired<TSchema, TKeys, undefined>;\n\n/**\n * Creates a modified copy of an object schema that marks the selected entries\n * as required.\n *\n * @param schema The schema to modify.\n * @param keys The selected entries.\n * @param message The error message.\n *\n * @returns An object schema.\n */\nexport function required<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n const TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n>(\n schema: TSchema,\n keys: TKeys,\n message: TMessage\n): SchemaWithRequired<TSchema, TKeys, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function required(\n schema: Schema,\n arg2?: ErrorMessage<NonOptionalIssue> | ObjectKeys<Schema>,\n arg3?: ErrorMessage<NonOptionalIssue>\n): SchemaWithRequired<\n Schema,\n ObjectKeys<Schema> | undefined,\n ErrorMessage<NonOptionalIssue> | undefined\n> {\n // Get keys and message from arguments\n const keys = Array.isArray(arg2) ? arg2 : undefined;\n const message = (Array.isArray(arg2) ? arg3 : arg2) as\n | ErrorMessage<NonOptionalIssue>\n | undefined;\n\n // Create modified object entries\n const entries: RequiredEntries<\n ObjectEntries,\n ObjectKeys<Schema>,\n ErrorMessage<NonOptionalIssue> | undefined\n > = {};\n for (const key in schema.entries) {\n // @ts-expect-error\n entries[key] =\n !keys || keys.includes(key)\n ? nonOptional(schema.entries[key], message)\n : schema.entries[key];\n }\n\n // Return modified copy of schema\n return {\n ...schema,\n entries,\n get '~standard'() {\n return _getStandardProps(this);\n },\n };\n}\n","import {\n type LooseObjectIssue,\n type LooseObjectSchemaAsync,\n nonOptionalAsync,\n type NonOptionalIssue,\n type NonOptionalSchemaAsync,\n type ObjectIssue,\n type ObjectSchemaAsync,\n type ObjectWithRestIssue,\n type ObjectWithRestSchemaAsync,\n type StrictObjectIssue,\n type StrictObjectSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectOutput,\n InferOutput,\n ObjectEntriesAsync,\n ObjectKeys,\n OutputDataset,\n SchemaWithoutPipe,\n StandardProps,\n UnknownDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema = SchemaWithoutPipe<\n | LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined>\n | ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n | StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n>;\n\n/**\n * Required entries type.\n */\ntype RequiredEntries<\n TEntries extends ObjectEntriesAsync,\n TKeys extends readonly (keyof TEntries)[] | undefined,\n TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n> = {\n [TKey in keyof TEntries]: TKeys extends readonly (keyof TEntries)[]\n ? TKey extends TKeys[number]\n ? NonOptionalSchemaAsync<TEntries[TKey], TMessage>\n : TEntries[TKey]\n : NonOptionalSchemaAsync<TEntries[TKey], TMessage>;\n };\n\n/**\n * Schema with required type.\n */\nexport type SchemaWithRequiredAsync<\n TSchema extends Schema,\n TKeys extends ObjectKeys<TSchema> | undefined,\n TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n> = TSchema extends\n | ObjectSchemaAsync<infer TEntries, ErrorMessage<ObjectIssue> | undefined>\n | StrictObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: RequiredEntries<TEntries, TKeys, TMessage>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<RequiredEntries<TEntries, TKeys, TMessage>>,\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>>\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>>,\n NonOptionalIssue | InferIssue<TSchema>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n RequiredEntries<TEntries, TKeys, TMessage>\n >;\n readonly output: InferObjectOutput<\n RequiredEntries<TEntries, TKeys, TMessage>\n >;\n readonly issue: NonOptionalIssue | InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends LooseObjectSchemaAsync<\n infer TEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: RequiredEntries<TEntries, TKeys, TMessage>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: unknown;\n },\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: unknown;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: unknown;\n },\n NonOptionalIssue | InferIssue<TSchema>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & {\n [key: string]: unknown;\n };\n readonly output: InferObjectOutput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & {\n [key: string]: unknown;\n };\n readonly issue: NonOptionalIssue | InferIssue<TSchema>;\n }\n | undefined;\n }\n : TSchema extends ObjectWithRestSchemaAsync<\n infer TEntries,\n infer TRest,\n ErrorMessage<ObjectWithRestIssue> | undefined\n >\n ? Omit<TSchema, 'entries' | '~standard' | '~run' | '~types'> & {\n /**\n * The object entries.\n */\n readonly entries: RequiredEntries<TEntries, TKeys, TMessage>;\n /**\n * The Standard Schema properties.\n *\n * @internal\n */\n readonly '~standard': StandardProps<\n InferObjectInput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: InferInput<TRest>;\n },\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: InferOutput<TRest>;\n }\n >;\n /**\n * Parses unknown input.\n *\n * @param dataset The input dataset.\n * @param config The configuration.\n *\n * @returns The output dataset.\n *\n * @internal\n */\n readonly '~run': (\n dataset: UnknownDataset,\n config: Config<BaseIssue<unknown>>\n ) => Promise<\n OutputDataset<\n InferObjectOutput<RequiredEntries<TEntries, TKeys, TMessage>> & {\n [key: string]: InferOutput<TRest>;\n },\n NonOptionalIssue | InferIssue<TSchema>\n >\n >;\n /**\n * The input, output and issue type.\n *\n * @internal\n */\n readonly '~types'?:\n | {\n readonly input: InferObjectInput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & {\n [key: string]: InferInput<TRest>;\n };\n readonly output: InferObjectOutput<\n RequiredEntries<TEntries, TKeys, TMessage>\n > & { [key: string]: InferOutput<TRest> };\n readonly issue: NonOptionalIssue | InferIssue<TSchema>;\n }\n | undefined;\n }\n : never;\n\n/**\n * Creates a modified copy of an object schema that marks all entries as required.\n *\n * @param schema The schema to modify.\n *\n * @returns An object schema.\n */\n// @ts-expect-error FIXME: TypeScript incorrectly claims that the overload\n// signature is not compatible with the implementation signature\nexport function requiredAsync<const TSchema extends Schema>(\n schema: TSchema\n): SchemaWithRequiredAsync<TSchema, undefined, undefined>;\n\n/**\n * Creates a modified copy of an object schema that marks all entries as required.\n *\n * @param schema The schema to modify.\n * @param message The error message.\n *\n * @returns An object schema.\n */\nexport function requiredAsync<\n const TSchema extends Schema,\n const TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n>(\n schema: TSchema,\n message: TMessage\n): SchemaWithRequiredAsync<TSchema, undefined, TMessage>;\n\n/**\n * Creates a modified copy of an object schema that marks the selected entries\n * as required.\n *\n * @param schema The schema to modify.\n * @param keys The selected entries.\n *\n * @returns An object schema.\n */\nexport function requiredAsync<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n>(\n schema: TSchema,\n keys: TKeys\n): SchemaWithRequiredAsync<TSchema, TKeys, undefined>;\n\n/**\n * Creates a modified copy of an object schema that marks the selected entries\n * as required.\n *\n * @param schema The schema to modify.\n * @param keys The selected entries.\n * @param message The error message.\n *\n * @returns An object schema.\n */\nexport function requiredAsync<\n const TSchema extends Schema,\n const TKeys extends ObjectKeys<TSchema>,\n const TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n>(\n schema: TSchema,\n keys: TKeys,\n message: TMessage\n): SchemaWithRequiredAsync<TSchema, TKeys, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function requiredAsync(\n schema: Schema,\n arg2?: ErrorMessage<NonOptionalIssue> | ObjectKeys<Schema>,\n arg3?: ErrorMessage<NonOptionalIssue>\n): SchemaWithRequiredAsync<\n Schema,\n ObjectKeys<Schema> | undefined,\n ErrorMessage<NonOptionalIssue> | undefined\n> {\n // Get keys and message from arguments\n const keys = Array.isArray(arg2) ? arg2 : undefined;\n const message = (Array.isArray(arg2) ? arg3 : arg2) as\n | ErrorMessage<NonOptionalIssue>\n | undefined;\n\n // Create modified object entries\n const entries: RequiredEntries<\n ObjectEntriesAsync,\n ObjectKeys<Schema>,\n ErrorMessage<NonOptionalIssue> | undefined\n > = {};\n for (const key in schema.entries) {\n // @ts-expect-error\n entries[key] =\n !keys || keys.includes(key)\n ? nonOptionalAsync(schema.entries[key], message)\n : schema.entries[key];\n }\n\n // Return modified copy of schema\n return {\n ...schema,\n entries,\n get '~standard'() {\n return _getStandardProps(this);\n },\n };\n}\n","import { getGlobalConfig } from '../storages/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Config,\n InferIssue,\n} from '../types/index.js';\nimport type { SafeParseResult } from './types/safeParse.js';\n\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__\nexport function safeParse<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n input: unknown,\n config?: Config<InferIssue<TSchema>>\n): SafeParseResult<TSchema> {\n const dataset = schema['~run']({ value: input }, getGlobalConfig(config));\n return {\n typed: dataset.typed,\n success: !dataset.issues,\n output: dataset.value,\n issues: dataset.issues,\n } as SafeParseResult<TSchema>;\n}\n","import { getGlobalConfig } from '../storages/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n} from '../types/index.js';\nimport type { SafeParseResult } from './types/safeParse.js';\n\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__\nexport async function safeParseAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n schema: TSchema,\n input: unknown,\n config?: Config<InferIssue<TSchema>>\n): Promise<SafeParseResult<TSchema>> {\n const dataset = await schema['~run'](\n { value: input },\n getGlobalConfig(config)\n );\n return {\n typed: dataset.typed,\n success: !dataset.issues,\n output: dataset.value,\n issues: dataset.issues,\n } as SafeParseResult<TSchema>;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n Config,\n InferIssue,\n} from '../types/index.js';\nimport { safeParse } from './safeParse.js';\nimport type { SafeParseResult } from './types/safeParse.js';\n\n/**\n * The safe parser interface.\n */\nexport interface SafeParser<\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TConfig extends Config<InferIssue<TSchema>> | undefined,\n> {\n /**\n * Parses an unknown input based on the schema.\n */\n (input: unknown): SafeParseResult<TSchema>;\n /**\n * The schema to be used.\n */\n readonly schema: TSchema;\n /**\n * The parser configuration.\n */\n readonly config: TConfig;\n}\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n *\n * @returns The parser function.\n */\nexport function safeParser<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): SafeParser<TSchema, undefined>;\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n * @param config The parser configuration.\n *\n * @returns The parser function.\n */\nexport function safeParser<\n const TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TConfig extends Config<InferIssue<TSchema>> | undefined,\n>(schema: TSchema, config: TConfig): SafeParser<TSchema, TConfig>;\n\n// @__NO_SIDE_EFFECTS__\nexport function safeParser(\n schema: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n config?: Config<InferIssue<BaseSchema<unknown, unknown, BaseIssue<unknown>>>>\n): SafeParser<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n> {\n const func: SafeParser<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n > = (input: unknown) => safeParse(schema, input, config);\n // @ts-expect-error\n func.schema = schema;\n // @ts-expect-error\n func.config = config;\n return func;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n} from '../types/index.js';\nimport { safeParseAsync } from './safeParseAsync.js';\nimport type { SafeParseResult } from './types/safeParse.js';\n\n\n/**\n * The safe parser async interface.\n */\nexport interface SafeParserAsync<\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TConfig extends Config<InferIssue<TSchema>> | undefined,\n> {\n /**\n * Parses an unknown input based on the schema.\n */\n (input: unknown): Promise<SafeParseResult<TSchema>>;\n /**\n * The schema to be used.\n */\n readonly schema: TSchema;\n /**\n * The parser configuration.\n */\n readonly config: TConfig;\n}\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n *\n * @returns The parser function.\n */\nexport function safeParserAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): SafeParserAsync<TSchema, undefined>;\n\n/**\n * Returns a function that parses an unknown input based on a schema.\n *\n * @param schema The schema to be used.\n * @param config The parser configuration.\n *\n * @returns The parser function.\n */\nexport function safeParserAsync<\n const TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TConfig extends Config<InferIssue<TSchema>> | undefined,\n>(schema: TSchema, config: TConfig): SafeParserAsync<TSchema, TConfig>;\n\n// @__NO_SIDE_EFFECTS__\nexport function safeParserAsync(\n schema:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n config?: Config<\n InferIssue<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n >\n >\n): SafeParserAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n> {\n const func: SafeParserAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n Config<BaseIssue<unknown>> | undefined\n > = (input: unknown) => safeParseAsync(schema, input, config);\n // @ts-expect-error\n func.schema = schema;\n // @ts-expect-error\n func.config = config;\n return func;\n}\n","import type {\n ExactOptionalSchema,\n ExactOptionalSchemaAsync,\n NonNullableIssue,\n NonNullableSchema,\n NonNullableSchemaAsync,\n NonNullishIssue,\n NonNullishSchema,\n NonNullishSchemaAsync,\n NonOptionalIssue,\n NonOptionalSchema,\n NonOptionalSchemaAsync,\n NullableSchema,\n NullableSchemaAsync,\n NullishSchema,\n NullishSchemaAsync,\n OptionalSchema,\n OptionalSchemaAsync,\n UndefinedableSchema,\n UndefinedableSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n} from '../types/index.js';\n\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__\nexport function unwrap<\n TSchema extends\n | ExactOptionalSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | ExactOptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | NonNullableSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullableIssue> | undefined\n >\n | NonNullableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullableIssue> | undefined\n >\n | NonNullishSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullishIssue> | undefined\n >\n | NonNullishSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullishIssue> | undefined\n >\n | NonOptionalSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonOptionalIssue> | undefined\n >\n | NonOptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonOptionalIssue> | undefined\n >\n | NullableSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown>\n | NullableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | NullishSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown>\n | NullishSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | OptionalSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown>\n | OptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | UndefinedableSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >\n | UndefinedableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n >,\n>(schema: TSchema): TSchema['wrapped'] {\n return schema.wrapped;\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseSchema,\n ErrorMessage,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n ObjectEntries,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _isValidObjectKey,\n} from '../utils/index.js';\nimport type { LooseObjectIssue } from './types/looseObject.js';\n\n/**\n * Loose object schema interface.\n */\nexport interface LooseObjectSchema<\n TEntries extends ObjectEntries,\n TMessage extends ErrorMessage<LooseObjectIssue> | undefined,\n> extends BaseSchema<\n InferObjectInput<TEntries> & { [key: string]: unknown },\n InferObjectOutput<TEntries> & { [key: string]: unknown },\n LooseObjectIssue | InferObjectIssue<TEntries>\n> {\n /**\n * The schema type.\n */\n readonly type: 'loose_object';\n /**\n * The schema reference.\n */\n readonly reference: typeof looseObject;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a loose object schema.\n *\n * @param entries The entries schema.\n *\n * @returns A loose object schema.\n */\nexport function looseObject<const TEntries extends ObjectEntries>(\n entries: TEntries\n): LooseObjectSchema<TEntries, undefined>;\n\n/**\n * Creates a loose object schema.\n *\n * @param entries The entries schema.\n * @param message The error message.\n *\n * @returns A loose object schema.\n */\nexport function looseObject<\n const TEntries extends ObjectEntries,\n const TMessage extends ErrorMessage<LooseObjectIssue> | undefined,\n>(entries: TEntries, message: TMessage): LooseObjectSchema<TEntries, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function looseObject(\n entries: ObjectEntries,\n message?: ErrorMessage<LooseObjectIssue>\n): LooseObjectSchema<\n ObjectEntries,\n ErrorMessage<LooseObjectIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'loose_object',\n reference: looseObject,\n expects: 'Object',\n async: false,\n entries,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Process each object entry of schema\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : getDefault(valueSchema);\n const valueDataset = valueSchema['~run']({ value }, config);\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Add rest to dataset if necessary\n // Hint: We exclude specific keys for security reasons\n if (!dataset.issues || !config.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n // @ts-expect-error\n dataset.value[key] = input[key];\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntries> & { [key: string]: unknown },\n LooseObjectIssue | InferObjectIssue<ObjectEntries>\n >;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseSchemaAsync,\n ErrorMessage,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n ObjectEntriesAsync,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _isValidObjectKey,\n} from '../utils/index.js';\nimport type { looseObject } from './looseObject.js';\nimport type { LooseObjectIssue } from './types/looseObject.js';\n\n/**\n * Object schema async interface.\n */\nexport interface LooseObjectSchemaAsync<\n TEntries extends ObjectEntriesAsync,\n TMessage extends ErrorMessage<LooseObjectIssue> | undefined,\n> extends BaseSchemaAsync<\n InferObjectInput<TEntries> & { [key: string]: unknown },\n InferObjectOutput<TEntries> & { [key: string]: unknown },\n LooseObjectIssue | InferObjectIssue<TEntries>\n> {\n /**\n * The schema type.\n */\n readonly type: 'loose_object';\n /**\n * The schema reference.\n */\n readonly reference: typeof looseObject | typeof looseObjectAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a loose object schema.\n *\n * @param entries The entries schema.\n *\n * @returns A loose object schema.\n */\nexport function looseObjectAsync<const TEntries extends ObjectEntriesAsync>(\n entries: TEntries\n): LooseObjectSchemaAsync<TEntries, undefined>;\n\n/**\n * Creates a loose object schema.\n *\n * @param entries The entries schema.\n * @param message The error message.\n *\n * @returns A loose object schema.\n */\nexport function looseObjectAsync<\n const TEntries extends ObjectEntriesAsync,\n const TMessage extends ErrorMessage<LooseObjectIssue> | undefined,\n>(\n entries: TEntries,\n message: TMessage\n): LooseObjectSchemaAsync<TEntries, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function looseObjectAsync(\n entries: ObjectEntriesAsync,\n message?: ErrorMessage<LooseObjectIssue>\n): LooseObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<LooseObjectIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'loose_object',\n reference: looseObjectAsync,\n expects: 'Object',\n async: true,\n entries,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value asynchronously\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : await getDefault(valueSchema);\n return [\n key,\n value,\n valueSchema,\n await valueSchema['~run']({ value }, config),\n ] as const;\n }\n return [\n key,\n // @ts-expect-error\n input[key] as unknown,\n valueSchema,\n null,\n ] as const;\n })\n );\n\n // Process each object entry of schema\n for (const [key, value, valueSchema, valueDataset] of valueDatasets) {\n // If key is present or its an optional schema with a default value,\n // process its value dataset\n if (valueDataset) {\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = await getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n value,\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Add rest to dataset if necessary\n // Hint: We exclude specific keys for security reasons\n if (!dataset.issues || !config.abortEarly) {\n for (const key in input) {\n if (_isValidObjectKey(input, key) && !(key in this.entries)) {\n // @ts-expect-error\n dataset.value[key] = input[key];\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntriesAsync> & { [key: string]: unknown },\n LooseObjectIssue | InferObjectIssue<ObjectEntriesAsync>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItems,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { LooseTupleIssue } from './types/looseTuple.js';\n\n/**\n * Loose tuple schema interface.\n */\nexport interface LooseTupleSchema<\n TItems extends TupleItems,\n TMessage extends ErrorMessage<LooseTupleIssue> | undefined,\n> extends BaseSchema<\n [...InferTupleInput<TItems>, ...unknown[]],\n [...InferTupleOutput<TItems>, ...unknown[]],\n LooseTupleIssue | InferTupleIssue<TItems>\n> {\n /**\n * The schema type.\n */\n readonly type: 'loose_tuple';\n /**\n * The schema reference.\n */\n readonly reference: typeof looseTuple;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a loose tuple schema.\n *\n * @param items The items schema.\n *\n * @returns A loose tuple schema.\n */\nexport function looseTuple<const TItems extends TupleItems>(\n items: TItems\n): LooseTupleSchema<TItems, undefined>;\n\n/**\n * Creates a loose tuple schema.\n *\n * @param items The items schema.\n * @param message The error message.\n *\n * @returns A loose tuple schema.\n */\nexport function looseTuple<\n const TItems extends TupleItems,\n const TMessage extends ErrorMessage<LooseTupleIssue> | undefined,\n>(items: TItems, message: TMessage): LooseTupleSchema<TItems, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function looseTuple(\n items: TupleItems,\n message?: ErrorMessage<LooseTupleIssue>\n): LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'loose_tuple',\n reference: looseTuple,\n expects: 'Array',\n async: false,\n items,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n for (let key = 0; key < this.items.length; key++) {\n const value = input[key];\n const itemDataset = this.items[key]['~run']({ value }, config);\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Add rest to dataset if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n // @ts-expect-error\n dataset.value.push(input[key]);\n }\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n LooseTupleIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchemaAsync,\n ErrorMessage,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { looseTuple } from './looseTuple.js';\nimport type { LooseTupleIssue } from './types/looseTuple.js';\n\n/**\n * Loose tuple schema async interface.\n */\nexport interface LooseTupleSchemaAsync<\n TItems extends TupleItemsAsync,\n TMessage extends ErrorMessage<LooseTupleIssue> | undefined,\n> extends BaseSchemaAsync<\n [...InferTupleInput<TItems>, ...unknown[]],\n [...InferTupleOutput<TItems>, ...unknown[]],\n LooseTupleIssue | InferTupleIssue<TItems>\n> {\n /**\n * The schema type.\n */\n readonly type: 'loose_tuple';\n /**\n * The schema reference.\n */\n readonly reference: typeof looseTuple | typeof looseTupleAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a loose tuple schema.\n *\n * @param items The items schema.\n *\n * @returns A loose tuple schema.\n */\nexport function looseTupleAsync<const TItems extends TupleItemsAsync>(\n items: TItems\n): LooseTupleSchemaAsync<TItems, undefined>;\n\n/**\n * Creates a loose tuple schema.\n *\n * @param items The items schema.\n * @param message The error message.\n *\n * @returns A loose tuple schema.\n */\nexport function looseTupleAsync<\n const TItems extends TupleItemsAsync,\n const TMessage extends ErrorMessage<LooseTupleIssue> | undefined,\n>(items: TItems, message: TMessage): LooseTupleSchemaAsync<TItems, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function looseTupleAsync(\n items: TupleItemsAsync,\n message?: ErrorMessage<LooseTupleIssue>\n): LooseTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<LooseTupleIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'loose_tuple',\n reference: looseTupleAsync,\n expects: 'Array',\n async: true,\n items,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value = input[key];\n return [key, value, await item['~run']({ value }, config)] as const;\n })\n );\n\n // Process each tuple item dataset\n for (const [key, value, itemDataset] of itemDatasets) {\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Add rest to dataset if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n // @ts-expect-error\n dataset.value.push(input[key]);\n }\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n LooseTupleIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferIssue,\n MapPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { InferMapInput, InferMapOutput, MapIssue } from './types/map.js';\n\n/**\n * Map schema interface.\n */\nexport interface MapSchema<\n TKey extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<MapIssue> | undefined,\n> extends BaseSchema<\n InferMapInput<TKey, TValue>,\n InferMapOutput<TKey, TValue>,\n MapIssue | InferIssue<TKey> | InferIssue<TValue>\n> {\n /**\n * The schema type.\n */\n readonly type: 'map';\n /**\n * The schema reference.\n */\n readonly reference: typeof map;\n /**\n * The expected property.\n */\n readonly expects: 'Map';\n /**\n * The map key schema.\n */\n readonly key: TKey;\n /**\n * The map value schema.\n */\n readonly value: TValue;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a map schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n *\n * @returns A map schema.\n */\nexport function map<\n const TKey extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(key: TKey, value: TValue): MapSchema<TKey, TValue, undefined>;\n\n/**\n * Creates a map schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n * @param message The error message.\n *\n * @returns A map schema.\n */\nexport function map<\n const TKey extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<MapIssue> | undefined,\n>(\n key: TKey,\n value: TValue,\n message: TMessage\n): MapSchema<TKey, TValue, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function map(\n key: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n value: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<MapIssue>\n): MapSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<MapIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'map',\n reference: map,\n expects: 'Map',\n async: false,\n key,\n value,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input instanceof Map) {\n // Set typed to `true` and value to empty map\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = new Map();\n\n // Parse schema of each map entry\n for (const [inputKey, inputValue] of input) {\n // Get dataset of key schema\n const keyDataset = this.key['~run']({ value: inputKey }, config);\n\n // If there are issues, capture them\n if (keyDataset.issues) {\n // Create map path item\n const pathItem: MapPathItem = {\n type: 'map',\n origin: 'key',\n input,\n key: inputKey,\n value: inputValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of keyDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = keyDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // Get dataset of value schema\n const valueDataset = this.value['~run'](\n { value: inputValue },\n config\n );\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create map path item\n const pathItem: MapPathItem = {\n type: 'map',\n origin: 'value',\n input,\n key: inputKey,\n value: inputValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, map typed to `false`\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add value to dataset\n // @ts-expect-error\n dataset.value.set(keyDataset.value, valueDataset.value);\n }\n\n // Otherwise, add map issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n Map<unknown, unknown>,\n MapIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferIssue,\n MapPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { map } from './map.js';\nimport type { InferMapInput, InferMapOutput, MapIssue } from './types/map.js';\n\n/**\n * Map schema async interface.\n */\nexport interface MapSchemaAsync<\n TKey extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<MapIssue> | undefined,\n> extends BaseSchemaAsync<\n InferMapInput<TKey, TValue>,\n InferMapOutput<TKey, TValue>,\n MapIssue | InferIssue<TKey> | InferIssue<TValue>\n> {\n /**\n * The schema type.\n */\n readonly type: 'map';\n /**\n * The schema reference.\n */\n readonly reference: typeof map | typeof mapAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Map';\n /**\n * The map key schema.\n */\n readonly key: TKey;\n /**\n * The map value schema.\n */\n readonly value: TValue;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a map schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n *\n * @returns A map schema.\n */\nexport function mapAsync<\n const TKey extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(key: TKey, value: TValue): MapSchemaAsync<TKey, TValue, undefined>;\n\n/**\n * Creates a map schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n * @param message The error message.\n *\n * @returns A map schema.\n */\nexport function mapAsync<\n const TKey extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<MapIssue> | undefined,\n>(\n key: TKey,\n value: TValue,\n message: TMessage\n): MapSchemaAsync<TKey, TValue, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function mapAsync(\n key:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n value:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<MapIssue>\n): MapSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<MapIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'map',\n reference: mapAsync,\n expects: 'Map',\n async: true,\n key,\n value,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input instanceof Map) {\n // Set typed to `true` and value to empty map\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = new Map();\n\n // Parse schema of each map entry\n const datasets = await Promise.all(\n [...input].map(([inputKey, inputValue]) =>\n Promise.all([\n inputKey,\n inputValue,\n this.key['~run']({ value: inputKey }, config),\n this.value['~run']({ value: inputValue }, config),\n ])\n )\n );\n\n // Process datasets of each map entry\n for (const [\n inputKey,\n inputValue,\n keyDataset,\n valueDataset,\n ] of datasets) {\n // If there are issues, capture them\n if (keyDataset.issues) {\n // Create map path item\n const pathItem: MapPathItem = {\n type: 'map',\n origin: 'key',\n input,\n key: inputKey,\n value: inputValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of keyDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = keyDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create map path item\n const pathItem: MapPathItem = {\n type: 'map',\n origin: 'value',\n input,\n key: inputKey,\n value: inputValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, map typed to `false`\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add value to dataset\n // @ts-expect-error\n dataset.value.set(keyDataset.value, valueDataset.value);\n }\n\n // Otherwise, add map issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n Map<unknown, unknown>,\n MapIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * NaN issue interface.\n */\nexport interface NanIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'nan';\n /**\n * The expected property.\n */\n readonly expected: 'NaN';\n}\n\n/**\n * NaN schema interface.\n */\nexport interface NanSchema<TMessage extends ErrorMessage<NanIssue> | undefined>\n extends BaseSchema<number, number, NanIssue> {\n /**\n * The schema type.\n */\n readonly type: 'nan';\n /**\n * The schema reference.\n */\n readonly reference: typeof nan;\n /**\n * The expected property.\n */\n readonly expects: 'NaN';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a NaN schema.\n *\n * @returns A NaN schema.\n */\nexport function nan(): NanSchema<undefined>;\n\n/**\n * Creates a NaN schema.\n *\n * @param message The error message.\n *\n * @returns A NaN schema.\n */\nexport function nan<const TMessage extends ErrorMessage<NanIssue> | undefined>(\n message: TMessage\n): NanSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nan(\n message?: ErrorMessage<NanIssue>\n): NanSchema<ErrorMessage<NanIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'nan',\n reference: nan,\n expects: 'NaN',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (Number.isNaN(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<number, NanIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n FailureDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Never issue interface.\n */\nexport interface NeverIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'never';\n /**\n * The expected property.\n */\n readonly expected: 'never';\n}\n\n/**\n * Never schema interface.\n */\nexport interface NeverSchema<\n TMessage extends ErrorMessage<NeverIssue> | undefined,\n> extends BaseSchema<never, never, NeverIssue> {\n /**\n * The schema type.\n */\n readonly type: 'never';\n /**\n * The schema reference.\n */\n readonly reference: typeof never;\n /**\n * The expected property.\n */\n readonly expects: 'never';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a never schema.\n *\n * @returns A never schema.\n */\nexport function never(): NeverSchema<undefined>;\n\n/**\n * Creates a never schema.\n *\n * @param message The error message.\n *\n * @returns A never schema.\n */\nexport function never<\n const TMessage extends ErrorMessage<NeverIssue> | undefined,\n>(message: TMessage): NeverSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function never(\n message?: ErrorMessage<NeverIssue>\n): NeverSchema<ErrorMessage<NeverIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'never',\n reference: never,\n expects: 'never',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n _addIssue(this, 'type', dataset, config);\n // @ts-expect-error\n return dataset as FailureDataset<NeverIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type {\n InferNonNullableInput,\n InferNonNullableIssue,\n InferNonNullableOutput,\n NonNullableIssue,\n} from './types/nonNullable.js';\n\n/**\n * Non nullable schema interface.\n */\nexport interface NonNullableSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<NonNullableIssue> | undefined,\n> extends BaseSchema<\n InferNonNullableInput<TWrapped>,\n InferNonNullableOutput<TWrapped>,\n NonNullableIssue | InferNonNullableIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'non_nullable';\n /**\n * The schema reference.\n */\n readonly reference: typeof nonNullable;\n /**\n * The expected property.\n */\n readonly expects: '!null';\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non nullable schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A non nullable schema.\n */\nexport function nonNullable<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NonNullableSchema<TWrapped, undefined>;\n\n/**\n * Creates a non nullable schema.\n *\n * @param wrapped The wrapped schema.\n * @param message The error message.\n *\n * @returns A non nullable schema.\n */\nexport function nonNullable<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<NonNullableIssue> | undefined,\n>(wrapped: TWrapped, message: TMessage): NonNullableSchema<TWrapped, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonNullable(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<NonNullableIssue> | undefined\n): NonNullableSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullableIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'non_nullable',\n reference: nonNullable,\n expects: '!null',\n async: false,\n wrapped,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // If value is not `null`, run wrapped schema\n if (dataset.value !== null) {\n // @ts-expect-error\n dataset = this.wrapped['~run'](dataset, config);\n }\n\n // If value is `null`, add issue to dataset\n if (dataset.value === null) {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { nonNullable } from './nonNullable.js';\nimport type {\n InferNonNullableInput,\n InferNonNullableIssue,\n InferNonNullableOutput,\n NonNullableIssue,\n} from './types/nonNullable.js';\n\n/**\n * Non nullable schema async interface.\n */\nexport interface NonNullableSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<NonNullableIssue> | undefined,\n> extends BaseSchemaAsync<\n InferNonNullableInput<TWrapped>,\n InferNonNullableOutput<TWrapped>,\n NonNullableIssue | InferNonNullableIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'non_nullable';\n /**\n * The schema reference.\n */\n readonly reference: typeof nonNullable | typeof nonNullableAsync;\n /**\n * The expected property.\n */\n readonly expects: '!null';\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non nullable schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A non nullable schema.\n */\nexport function nonNullableAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NonNullableSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates a non nullable schema.\n *\n * @param wrapped The wrapped schema.\n * @param message The error message.\n *\n * @returns A non nullable schema.\n */\nexport function nonNullableAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<NonNullableIssue> | undefined,\n>(\n wrapped: TWrapped,\n message: TMessage\n): NonNullableSchemaAsync<TWrapped, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonNullableAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<NonNullableIssue> | undefined\n): NonNullableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullableIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'non_nullable',\n reference: nonNullableAsync,\n expects: '!null',\n async: true,\n wrapped,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // If value is not `null`, run wrapped schema\n if (dataset.value !== null) {\n // @ts-expect-error\n dataset = await this.wrapped['~run'](dataset, config);\n }\n\n // If value is `null`, add issue to dataset\n if (dataset.value === null) {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type {\n InferNonNullishInput,\n InferNonNullishIssue,\n InferNonNullishOutput,\n NonNullishIssue,\n} from './types/nonNullish.js';\n\n/**\n * Non nullish schema interface.\n */\nexport interface NonNullishSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<NonNullishIssue> | undefined,\n> extends BaseSchema<\n InferNonNullishInput<TWrapped>,\n InferNonNullishOutput<TWrapped>,\n NonNullishIssue | InferNonNullishIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'non_nullish';\n /**\n * The schema reference.\n */\n readonly reference: typeof nonNullish;\n /**\n * The expected property.\n */\n readonly expects: '(!null & !undefined)';\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non nullish schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A non nullish schema.\n */\nexport function nonNullish<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NonNullishSchema<TWrapped, undefined>;\n\n/**\n * Creates a non nullish schema.\n *\n * @param wrapped The wrapped schema.\n * @param message The error message.\n *\n * @returns A non nullish schema.\n */\nexport function nonNullish<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<NonNullishIssue> | undefined,\n>(wrapped: TWrapped, message: TMessage): NonNullishSchema<TWrapped, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonNullish(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<NonNullishIssue> | undefined\n): NonNullishSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullishIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'non_nullish',\n reference: nonNullish,\n expects: '(!null & !undefined)',\n async: false,\n wrapped,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // If value is not `null` and `undefined`, run wrapped schema\n if (!(dataset.value === null || dataset.value === undefined)) {\n // @ts-expect-error\n dataset = this.wrapped['~run'](dataset, config);\n }\n\n // If value is `null` or `undefined`, add issue to dataset\n if (dataset.value === null || dataset.value === undefined) {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { nonNullish } from './nonNullish.js';\nimport type {\n InferNonNullishInput,\n InferNonNullishIssue,\n InferNonNullishOutput,\n NonNullishIssue,\n} from './types/nonNullish.js';\n\n/**\n * Non nullish schema async interface.\n */\nexport interface NonNullishSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<NonNullishIssue> | undefined,\n> extends BaseSchemaAsync<\n InferNonNullishInput<TWrapped>,\n InferNonNullishOutput<TWrapped>,\n NonNullishIssue | InferNonNullishIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'non_nullish';\n /**\n * The schema reference.\n */\n readonly reference: typeof nonNullish | typeof nonNullishAsync;\n /**\n * The expected property.\n */\n readonly expects: '(!null & !undefined)';\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non nullish schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A non nullish schema.\n */\nexport function nonNullishAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NonNullishSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates a non nullish schema.\n *\n * @param wrapped The wrapped schema.\n * @param message The error message.\n *\n * @returns A non nullish schema.\n */\nexport function nonNullishAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<NonNullishIssue> | undefined,\n>(\n wrapped: TWrapped,\n message: TMessage\n): NonNullishSchemaAsync<TWrapped, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonNullishAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<NonNullishIssue> | undefined\n): NonNullishSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonNullishIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'non_nullish',\n reference: nonNullishAsync,\n expects: '(!null & !undefined)',\n async: true,\n wrapped,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // If value is not `null` and `undefined`, run wrapped schema\n if (!(dataset.value === null || dataset.value === undefined)) {\n // @ts-expect-error\n dataset = await this.wrapped['~run'](dataset, config);\n }\n\n // If value is `null` or `undefined`, add issue to dataset\n if (dataset.value === null || dataset.value === undefined) {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type {\n InferNonOptionalInput,\n InferNonOptionalIssue,\n InferNonOptionalOutput,\n NonOptionalIssue,\n} from './types/nonOptional.js';\n\n/**\n * Non optional schema interface.\n */\nexport interface NonOptionalSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n> extends BaseSchema<\n InferNonOptionalInput<TWrapped>,\n InferNonOptionalOutput<TWrapped>,\n NonOptionalIssue | InferNonOptionalIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'non_optional';\n /**\n * The schema reference.\n */\n readonly reference: typeof nonOptional;\n /**\n * The expected property.\n */\n readonly expects: '!undefined';\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non optional schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A non optional schema.\n */\nexport function nonOptional<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NonOptionalSchema<TWrapped, undefined>;\n\n/**\n * Creates a non optional schema.\n *\n * @param wrapped The wrapped schema.\n * @param message The error message.\n *\n * @returns A non optional schema.\n */\nexport function nonOptional<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n>(wrapped: TWrapped, message: TMessage): NonOptionalSchema<TWrapped, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonOptional(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<NonOptionalIssue> | undefined\n): NonOptionalSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonOptionalIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'non_optional',\n reference: nonOptional,\n expects: '!undefined',\n async: false,\n wrapped,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // If value is not `undefined`, run wrapped schema\n if (dataset.value !== undefined) {\n // @ts-expect-error\n dataset = this.wrapped['~run'](dataset, config);\n }\n\n // If value is `undefined`, add issue to dataset\n if (dataset.value === undefined) {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { nonOptional } from './nonOptional.js';\nimport type {\n InferNonOptionalInput,\n InferNonOptionalIssue,\n InferNonOptionalOutput,\n NonOptionalIssue,\n} from './types/nonOptional.js';\n\n/**\n * Non optional schema async interface.\n */\nexport interface NonOptionalSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n> extends BaseSchemaAsync<\n InferNonOptionalInput<TWrapped>,\n InferNonOptionalOutput<TWrapped>,\n NonOptionalIssue | InferNonOptionalIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'non_optional';\n /**\n * The schema reference.\n */\n readonly reference: typeof nonOptional | typeof nonOptionalAsync;\n /**\n * The expected property.\n */\n readonly expects: '!undefined';\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non optional schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A non optional schema.\n */\nexport function nonOptionalAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NonOptionalSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates a non optional schema.\n *\n * @param wrapped The wrapped schema.\n * @param message The error message.\n *\n * @returns A non optional schema.\n */\nexport function nonOptionalAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<NonOptionalIssue> | undefined,\n>(\n wrapped: TWrapped,\n message: TMessage\n): NonOptionalSchemaAsync<TWrapped, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonOptionalAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<NonOptionalIssue> | undefined\n): NonOptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<NonOptionalIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'non_optional',\n reference: nonOptionalAsync,\n expects: '!undefined',\n async: true,\n wrapped,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // If value is not `undefined`, run wrapped schema\n if (dataset.value !== undefined) {\n // @ts-expect-error\n dataset = await this.wrapped['~run'](dataset, config);\n }\n\n // If value is `undefined`, add issue to dataset\n if (dataset.value === undefined) {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Null issue interface.\n */\nexport interface NullIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'null';\n /**\n * The expected property.\n */\n readonly expected: 'null';\n}\n\n/**\n * Null schema interface.\n */\nexport interface NullSchema<\n TMessage extends ErrorMessage<NullIssue> | undefined,\n> extends BaseSchema<null, null, NullIssue> {\n /**\n * The schema type.\n */\n readonly type: 'null';\n /**\n * The schema reference.\n */\n readonly reference: typeof null_;\n /**\n * The expected property.\n */\n readonly expects: 'null';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a null schema.\n *\n * @returns A null schema.\n */\nexport function null_(): NullSchema<undefined>;\n\n/**\n * Creates a null schema.\n *\n * @param message The error message.\n *\n * @returns A null schema.\n */\nexport function null_<\n const TMessage extends ErrorMessage<NullIssue> | undefined,\n>(message: TMessage): NullSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function null_(\n message?: ErrorMessage<NullIssue>\n): NullSchema<ErrorMessage<NullIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'null',\n reference: null_,\n expects: 'null',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value === null) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<null, NullIssue>;\n },\n };\n}\n\nexport { null_ as null };\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Default,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { InferNullableOutput } from './types/nullable.js';\n\n/**\n * Nullable schema interface.\n */\nexport interface NullableSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends Default<TWrapped, null>,\n> extends BaseSchema<\n InferInput<TWrapped> | null,\n InferNullableOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'nullable';\n /**\n * The schema reference.\n */\n readonly reference: typeof nullable;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | null)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates a nullable schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A nullable schema.\n */\nexport function nullable<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NullableSchema<TWrapped, undefined>;\n\n/**\n * Creates a nullable schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns A nullable schema.\n */\nexport function nullable<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends Default<TWrapped, null>,\n>(wrapped: TWrapped, default_: TDefault): NullableSchema<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nullable(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): NullableSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown> {\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, config) {\n // If value is `null`, override it with default or return dataset\n if (dataset.value === null) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = getDefault(this, dataset, config);\n }\n\n // If value is still `null`, return dataset\n if (dataset.value === null) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n DefaultAsync,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { nullable } from './nullable.js';\nimport type { InferNullableOutput } from './types/nullable.js';\n\n/**\n * Nullable schema async interface.\n */\nexport interface NullableSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends DefaultAsync<TWrapped, null>,\n> extends BaseSchemaAsync<\n InferInput<TWrapped> | null,\n InferNullableOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'nullable';\n /**\n * The schema reference.\n */\n readonly reference: typeof nullable | typeof nullableAsync;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | null)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates a nullable schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A nullable schema.\n */\nexport function nullableAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NullableSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates a nullable schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns A nullable schema.\n */\nexport function nullableAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends DefaultAsync<TWrapped, null>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): NullableSchemaAsync<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nullableAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): NullableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n // If value is `null`, override it with default or return dataset\n if (dataset.value === null) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = await getDefault(this, dataset, config);\n }\n\n // If value is still `null`, return dataset\n if (dataset.value === null) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Default,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { InferNullishOutput } from './types/nullish.js';\n\n/**\n * Nullish schema interface.\n */\nexport interface NullishSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends Default<TWrapped, null | undefined>,\n> extends BaseSchema<\n InferInput<TWrapped> | null | undefined,\n InferNullishOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'nullish';\n /**\n * The schema reference.\n */\n readonly reference: typeof nullish;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | null | undefined)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates a nullish schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A nullish schema.\n */\nexport function nullish<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NullishSchema<TWrapped, undefined>;\n\n/**\n * Creates a nullish schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns A nullish schema.\n */\nexport function nullish<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends Default<TWrapped, null | undefined>,\n>(wrapped: TWrapped, default_: TDefault): NullishSchema<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nullish(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): NullishSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown> {\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, config) {\n // If value is `null` or `undefined`, override it with default or return\n // dataset\n if (dataset.value === null || dataset.value === undefined) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = getDefault(this, dataset, config);\n }\n\n // If value is still `null` or `undefined`, return dataset\n if (dataset.value === null || dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n DefaultAsync,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { nullish } from './nullish.js';\nimport type { InferNullishOutput } from './types/nullish.js';\n\n/**\n * Nullish schema async interface.\n */\nexport interface NullishSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends DefaultAsync<TWrapped, null | undefined>,\n> extends BaseSchemaAsync<\n InferInput<TWrapped> | null | undefined,\n InferNullishOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'nullish';\n /**\n * The schema reference.\n */\n readonly reference: typeof nullish | typeof nullishAsync;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | null | undefined)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates a nullish schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns A nullish schema.\n */\nexport function nullishAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): NullishSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates a nullish schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns A nullish schema.\n */\nexport function nullishAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends DefaultAsync<TWrapped, null | undefined>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): NullishSchemaAsync<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nullishAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): NullishSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n // If value is `null` or `undefined`, override it with default or return\n // dataset\n if (dataset.value === null || dataset.value === undefined) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = await getDefault(this, dataset, config);\n }\n\n // If value is still `null` or `undefined`, return dataset\n if (dataset.value === null || dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Number issue interface.\n */\nexport interface NumberIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'number';\n /**\n * The expected property.\n */\n readonly expected: 'number';\n}\n\n/**\n * Number schema interface.\n */\nexport interface NumberSchema<\n TMessage extends ErrorMessage<NumberIssue> | undefined,\n> extends BaseSchema<number, number, NumberIssue> {\n /**\n * The schema type.\n */\n readonly type: 'number';\n /**\n * The schema reference.\n */\n readonly reference: typeof number;\n /**\n * The expected property.\n */\n readonly expects: 'number';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a number schema.\n *\n * @returns A number schema.\n */\nexport function number(): NumberSchema<undefined>;\n\n/**\n * Creates a number schema.\n *\n * @param message The error message.\n *\n * @returns A number schema.\n */\nexport function number<\n const TMessage extends ErrorMessage<NumberIssue> | undefined,\n>(message: TMessage): NumberSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function number(\n message?: ErrorMessage<NumberIssue>\n): NumberSchema<ErrorMessage<NumberIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'number',\n reference: number,\n expects: 'number',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (typeof dataset.value === 'number' && !isNaN(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<number, NumberIssue>;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseSchema,\n ErrorMessage,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n ObjectEntries,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { ObjectIssue } from './types/object.js';\n\n/**\n * Object schema interface.\n */\nexport interface ObjectSchema<\n TEntries extends ObjectEntries,\n TMessage extends ErrorMessage<ObjectIssue> | undefined,\n> extends BaseSchema<\n InferObjectInput<TEntries>,\n InferObjectOutput<TEntries>,\n ObjectIssue | InferObjectIssue<TEntries>\n> {\n /**\n * The schema type.\n */\n readonly type: 'object';\n /**\n * The schema reference.\n */\n readonly reference: typeof object;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an object schema.\n *\n * Hint: This schema removes unknown entries. The output will only include the\n * entries you specify. To include unknown entries, use `looseObject`. To\n * return an issue for unknown entries, use `strictObject`. To include and\n * validate unknown entries, use `objectWithRest`.\n *\n * @param entries The entries schema.\n *\n * @returns An object schema.\n */\nexport function object<const TEntries extends ObjectEntries>(\n entries: TEntries\n): ObjectSchema<TEntries, undefined>;\n\n/**\n * Creates an object schema.\n *\n * Hint: This schema removes unknown entries. The output will only include the\n * entries you specify. To include unknown entries, use `looseObject`. To\n * return an issue for unknown entries, use `strictObject`. To include and\n * validate unknown entries, use `objectWithRest`.\n *\n * @param entries The entries schema.\n * @param message The error message.\n *\n * @returns An object schema.\n */\nexport function object<\n const TEntries extends ObjectEntries,\n const TMessage extends ErrorMessage<ObjectIssue> | undefined,\n>(entries: TEntries, message: TMessage): ObjectSchema<TEntries, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function object(\n entries: ObjectEntries,\n message?: ErrorMessage<ObjectIssue>\n): ObjectSchema<ObjectEntries, ErrorMessage<ObjectIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'object',\n reference: object,\n expects: 'Object',\n async: false,\n entries,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Process each object entry of schema\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : getDefault(valueSchema);\n const valueDataset = valueSchema['~run']({ value }, config);\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntries>,\n ObjectIssue | InferObjectIssue<ObjectEntries>\n >;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseSchemaAsync,\n ErrorMessage,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n ObjectEntriesAsync,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { object } from './object.js';\nimport type { ObjectIssue } from './types/object.js';\n\n/**\n * Object schema async interface.\n */\nexport interface ObjectSchemaAsync<\n TEntries extends ObjectEntriesAsync,\n TMessage extends ErrorMessage<ObjectIssue> | undefined,\n> extends BaseSchemaAsync<\n InferObjectInput<TEntries>,\n InferObjectOutput<TEntries>,\n ObjectIssue | InferObjectIssue<TEntries>\n> {\n /**\n * The schema type.\n */\n readonly type: 'object';\n /**\n * The schema reference.\n */\n readonly reference: typeof object | typeof objectAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an object schema.\n *\n * Hint: This schema removes unknown entries. The output will only include the\n * entries you specify. To include unknown entries, use `looseObjectAsync`. To\n * return an issue for unknown entries, use `strictObjectAsync`. To include and\n * validate unknown entries, use `objectWithRestAsync`.\n *\n * @param entries The entries schema.\n *\n * @returns An object schema.\n */\nexport function objectAsync<const TEntries extends ObjectEntriesAsync>(\n entries: TEntries\n): ObjectSchemaAsync<TEntries, undefined>;\n\n/**\n * Creates an object schema.\n *\n * Hint: This schema removes unknown entries. The output will only include the\n * entries you specify. To include unknown entries, use `looseObjectAsync`. To\n * return an issue for unknown entries, use `strictObjectAsync`. To include and\n * validate unknown entries, use `objectWithRestAsync`.\n *\n * @param entries The entries schema.\n * @param message The error message.\n *\n * @returns An object schema.\n */\nexport function objectAsync<\n const TEntries extends ObjectEntriesAsync,\n const TMessage extends ErrorMessage<ObjectIssue> | undefined,\n>(entries: TEntries, message: TMessage): ObjectSchemaAsync<TEntries, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function objectAsync(\n entries: ObjectEntriesAsync,\n message?: ErrorMessage<ObjectIssue>\n): ObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<ObjectIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'object',\n reference: objectAsync,\n expects: 'Object',\n async: true,\n entries,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value asynchronously\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : await getDefault(valueSchema);\n return [\n key,\n value,\n valueSchema,\n await valueSchema['~run']({ value }, config),\n ] as const;\n }\n return [\n key,\n // @ts-expect-error\n input[key] as unknown,\n valueSchema,\n null,\n ] as const;\n })\n );\n\n // Process each object entry of schema\n for (const [key, value, valueSchema, valueDataset] of valueDatasets) {\n // If key is present or its an optional schema with a default value,\n // process its value dataset\n if (valueDataset) {\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = await getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n value,\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntriesAsync>,\n ObjectIssue | InferObjectIssue<ObjectEntriesAsync>\n >;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n InferOutput,\n ObjectEntries,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _isValidObjectKey,\n} from '../utils/index.js';\nimport type { ObjectWithRestIssue } from './types/objectWithRest.js';\n\n/**\n * Object with rest schema interface.\n */\nexport interface ObjectWithRestSchema<\n TEntries extends ObjectEntries,\n TRest extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<ObjectWithRestIssue> | undefined,\n> extends BaseSchema<\n InferObjectInput<TEntries> & { [key: string]: InferInput<TRest> },\n InferObjectOutput<TEntries> & { [key: string]: InferOutput<TRest> },\n ObjectWithRestIssue | InferObjectIssue<TEntries> | InferIssue<TRest>\n> {\n /**\n * The schema type.\n */\n readonly type: 'object_with_rest';\n /**\n * The schema reference.\n */\n readonly reference: typeof objectWithRest;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The rest schema.\n */\n readonly rest: TRest;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an object with rest schema.\n *\n * @param entries The entries schema.\n * @param rest The rest schema.\n *\n * @returns An object with rest schema.\n */\nexport function objectWithRest<\n const TEntries extends ObjectEntries,\n const TRest extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(\n entries: TEntries,\n rest: TRest\n): ObjectWithRestSchema<TEntries, TRest, undefined>;\n\n/**\n * Creates an object with rest schema.\n *\n * @param entries The entries schema.\n * @param rest The rest schema.\n * @param message The error message.\n *\n * @returns An object with rest schema.\n */\nexport function objectWithRest<\n const TEntries extends ObjectEntries,\n const TRest extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<ObjectWithRestIssue> | undefined,\n>(\n entries: TEntries,\n rest: TRest,\n message: TMessage\n): ObjectWithRestSchema<TEntries, TRest, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function objectWithRest(\n entries: ObjectEntries,\n rest: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<ObjectWithRestIssue>\n): ObjectWithRestSchema<\n ObjectEntries,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'object_with_rest',\n reference: objectWithRest,\n expects: 'Object',\n async: false,\n entries,\n rest,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Process each object entry of schema\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : getDefault(valueSchema);\n const valueDataset = valueSchema['~run']({ value }, config);\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Parse schema of each rest entry if necessary\n // Hint: We exclude specific keys for security reasons\n if (!dataset.issues || !config.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 config\n );\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntries> & { [key: string]: unknown },\n | ObjectWithRestIssue\n | InferObjectIssue<ObjectEntries>\n | BaseIssue<unknown>\n >;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n InferOutput,\n ObjectEntriesAsync,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _isValidObjectKey,\n} from '../utils/index.js';\nimport type { objectWithRest } from './objectWithRest.js';\nimport type { ObjectWithRestIssue } from './types/objectWithRest.js';\n\n/**\n * Object schema async interface.\n */\nexport interface ObjectWithRestSchemaAsync<\n TEntries extends ObjectEntriesAsync,\n TRest extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<ObjectWithRestIssue> | undefined,\n> extends BaseSchemaAsync<\n InferObjectInput<TEntries> & { [key: string]: InferInput<TRest> },\n InferObjectOutput<TEntries> & { [key: string]: InferOutput<TRest> },\n ObjectWithRestIssue | InferObjectIssue<TEntries> | InferIssue<TRest>\n> {\n /**\n * The schema type.\n */\n readonly type: 'object_with_rest';\n /**\n * The schema reference.\n */\n readonly reference: typeof objectWithRest | typeof objectWithRestAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The rest schema.\n */\n readonly rest: TRest;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an object with rest schema.\n *\n * @param entries The entries schema.\n * @param rest The rest schema.\n *\n * @returns An object with rest schema.\n */\nexport function objectWithRestAsync<\n const TEntries extends ObjectEntriesAsync,\n const TRest extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n entries: TEntries,\n rest: TRest\n): ObjectWithRestSchemaAsync<TEntries, TRest, undefined>;\n\n/**\n * Creates an object with rest schema.\n *\n * @param entries The entries schema.\n * @param rest The rest schema.\n * @param message The error message.\n *\n * @returns An object with rest schema.\n */\nexport function objectWithRestAsync<\n const TEntries extends ObjectEntriesAsync,\n const TRest extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<ObjectWithRestIssue> | undefined,\n>(\n entries: TEntries,\n rest: TRest,\n message: TMessage\n): ObjectWithRestSchemaAsync<TEntries, TRest, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function objectWithRestAsync(\n entries: ObjectEntriesAsync,\n rest:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<ObjectWithRestIssue>\n): ObjectWithRestSchemaAsync<\n ObjectEntriesAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<ObjectWithRestIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'object_with_rest',\n reference: objectWithRestAsync,\n expects: 'Object',\n async: true,\n entries,\n rest,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Parse each normal and rest entry\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 (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : await getDefault(valueSchema);\n return [\n key,\n value,\n valueSchema,\n await valueSchema['~run']({ value }, config),\n ] as const;\n }\n return [\n key,\n // @ts-expect-error\n input[key] as unknown,\n valueSchema,\n null,\n ] as const;\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)\n .filter(\n ([key]) =>\n _isValidObjectKey(input, key) && !(key in this.entries)\n )\n .map(\n async ([key, value]) =>\n [\n key,\n value,\n await this.rest['~run']({ value }, config),\n ] as const\n )\n ),\n ]);\n\n // Process each normal object entry of schema\n for (const [key, value, valueSchema, valueDataset] of normalDatasets) {\n // If key is present or its an optional schema with a default value,\n // process its value dataset\n if (valueDataset) {\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = await getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n value,\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Process each rest entry of schema if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (const [key, value, valueDataset] of restDatasets) {\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntriesAsync> & { [key: string]: unknown },\n | ObjectWithRestIssue\n | InferObjectIssue<ObjectEntriesAsync>\n | BaseIssue<unknown>\n >;\n },\n };\n}\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Default,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { InferOptionalOutput } from './types/optional.js';\n\n/**\n * Optional schema interface.\n */\nexport interface OptionalSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends Default<TWrapped, undefined>,\n> extends BaseSchema<\n InferInput<TWrapped> | undefined,\n InferOptionalOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'optional';\n /**\n * The schema reference.\n */\n readonly reference: typeof optional;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | undefined)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates an optional schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns An optional schema.\n */\nexport function optional<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): OptionalSchema<TWrapped, undefined>;\n\n/**\n * Creates an optional schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns An optional schema.\n */\nexport function optional<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends Default<TWrapped, undefined>,\n>(wrapped: TWrapped, default_: TDefault): OptionalSchema<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function optional(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): OptionalSchema<BaseSchema<unknown, unknown, BaseIssue<unknown>>, unknown> {\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, config) {\n // If value is `undefined`, override it with default or return dataset\n if (dataset.value === undefined) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = getDefault(this, dataset, config);\n }\n\n // If value is still `undefined`, return dataset\n if (dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n DefaultAsync,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { optional } from './optional.js';\nimport type { InferOptionalOutput } from './types/optional.js';\n\n/**\n * Optional schema async interface.\n */\nexport interface OptionalSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends DefaultAsync<TWrapped, undefined>,\n> extends BaseSchemaAsync<\n InferInput<TWrapped> | undefined,\n InferOptionalOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'optional';\n /**\n * The schema reference.\n */\n readonly reference: typeof optional | typeof optionalAsync;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | undefined)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates an optional schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns An optional schema.\n */\nexport function optionalAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): OptionalSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates an optional schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns An optional schema.\n */\nexport function optionalAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends DefaultAsync<TWrapped, undefined>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): OptionalSchemaAsync<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function optionalAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): OptionalSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n // If value is `undefined`, override it with default or return dataset\n if (dataset.value === undefined) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = await getDefault(this, dataset, config);\n }\n\n // If value is still `undefined`, return dataset\n if (dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n MaybeReadonly,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n _stringify,\n} from '../utils/index.js';\n\n/**\n * Picklist options type.\n */\nexport type PicklistOptions = MaybeReadonly<(string | number | bigint)[]>;\n\n/**\n * Picklist issue interface.\n */\nexport interface PicklistIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'picklist';\n /**\n * The expected property.\n */\n readonly expected: string;\n}\n\n/**\n * Picklist schema interface.\n */\nexport interface PicklistSchema<\n TOptions extends PicklistOptions,\n TMessage extends ErrorMessage<PicklistIssue> | undefined,\n> extends BaseSchema<TOptions[number], TOptions[number], PicklistIssue> {\n /**\n * The schema type.\n */\n readonly type: 'picklist';\n /**\n * The schema reference.\n */\n readonly reference: typeof picklist;\n /**\n * The picklist options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a picklist schema.\n *\n * @param options The picklist options.\n *\n * @returns A picklist schema.\n */\nexport function picklist<const TOptions extends PicklistOptions>(\n options: TOptions\n): PicklistSchema<TOptions, undefined>;\n\n/**\n * Creates a picklist schema.\n *\n * @param options The picklist options.\n * @param message The error message.\n *\n * @returns A picklist schema.\n */\nexport function picklist<\n const TOptions extends PicklistOptions,\n const TMessage extends ErrorMessage<PicklistIssue> | undefined,\n>(options: TOptions, message: TMessage): PicklistSchema<TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function picklist(\n options: PicklistOptions,\n message?: ErrorMessage<PicklistIssue>\n): PicklistSchema<PicklistOptions, ErrorMessage<PicklistIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'picklist',\n reference: picklist,\n expects: _joinExpects(options.map(_stringify), '|'),\n async: false,\n options,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // @ts-expect-error\n if (this.options.includes(dataset.value)) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<PicklistOptions[number], PicklistIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Promise issue interface.\n */\nexport interface PromiseIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'promise';\n /**\n * The expected property.\n */\n readonly expected: 'Promise';\n}\n\n/**\n * Promise schema interface.\n */\nexport interface PromiseSchema<\n TMessage extends ErrorMessage<PromiseIssue> | undefined,\n> extends BaseSchema<Promise<unknown>, Promise<unknown>, PromiseIssue> {\n /**\n * The schema type.\n */\n readonly type: 'promise';\n /**\n * The schema reference.\n */\n readonly reference: typeof promise;\n /**\n * The expected property.\n */\n readonly expects: 'Promise';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a promise schema.\n *\n * @returns A promise schema.\n */\nexport function promise(): PromiseSchema<undefined>;\n\n/**\n * Creates a promise schema.\n *\n * @param message The error message.\n *\n * @returns A promise schema.\n */\nexport function promise<\n const TMessage extends ErrorMessage<PromiseIssue> | undefined,\n>(message: TMessage): PromiseSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function promise(\n message?: ErrorMessage<PromiseIssue>\n): PromiseSchema<ErrorMessage<PromiseIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'promise',\n reference: promise,\n expects: 'Promise',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value instanceof Promise) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<Promise<unknown>, PromiseIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferIssue,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _isValidObjectKey,\n} from '../utils/index.js';\nimport type {\n InferRecordInput,\n InferRecordOutput,\n RecordIssue,\n} from './types/record.js';\n\n/**\n * Record schema interface.\n */\nexport interface RecordSchema<\n TKey extends BaseSchema<string, string | number | symbol, BaseIssue<unknown>>,\n TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<RecordIssue> | undefined,\n> extends BaseSchema<\n InferRecordInput<TKey, TValue>,\n InferRecordOutput<TKey, TValue>,\n RecordIssue | InferIssue<TKey> | InferIssue<TValue>\n> {\n /**\n * The schema type.\n */\n readonly type: 'record';\n /**\n * The schema reference.\n */\n readonly reference: typeof record;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The record key schema.\n */\n readonly key: TKey;\n /**\n * The record value schema.\n */\n readonly value: TValue;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a record schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n *\n * @returns A record schema.\n */\nexport function record<\n const TKey extends BaseSchema<\n string,\n string | number | symbol,\n BaseIssue<unknown>\n >,\n const TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(key: TKey, value: TValue): RecordSchema<TKey, TValue, undefined>;\n\n/**\n * Creates a record schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n * @param message The error message.\n *\n * @returns A record schema.\n */\nexport function record<\n const TKey extends BaseSchema<\n string,\n string | number | symbol,\n BaseIssue<unknown>\n >,\n const TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<RecordIssue> | undefined,\n>(\n key: TKey,\n value: TValue,\n message: TMessage\n): RecordSchema<TKey, TValue, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function record(\n key: BaseSchema<string, string | number | symbol, BaseIssue<unknown>>,\n value: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<RecordIssue>\n): RecordSchema<\n BaseSchema<string, string | number | symbol, BaseIssue<unknown>>,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<RecordIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'record',\n reference: record,\n expects: 'Object',\n async: false,\n key,\n value,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to empty object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Parse schema of each record entry\n // Hint: for...in loop always returns keys as strings\n // Hint: We exclude specific keys for security reasons\n for (const entryKey in input) {\n if (_isValidObjectKey(input, entryKey)) {\n // Get value of record entry\n const entryValue: unknown = input[entryKey as keyof typeof input];\n\n // Get dataset of key schema\n const keyDataset = this.key['~run']({ value: entryKey }, config);\n\n // If there are issues, capture them\n if (keyDataset.issues) {\n // Create record path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key: entryKey,\n value: entryValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of keyDataset.issues) {\n // @ts-expect-error\n issue.path = [pathItem];\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = keyDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // Get dataset of value schema\n const valueDataset = this.value['~run'](\n { value: entryValue },\n config\n );\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create record path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key: entryKey,\n value: entryValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n\n // If key is typed, add entry to dataset\n if (keyDataset.typed) {\n // @ts-expect-error\n dataset.value[keyDataset.value] = valueDataset.value;\n }\n }\n }\n\n // Otherwise, add record issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n Record<string | number | symbol, unknown>,\n RecordIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferIssue,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _isValidObjectKey,\n} from '../utils/index.js';\nimport type { record } from './record.js';\nimport type {\n InferRecordInput,\n InferRecordOutput,\n RecordIssue,\n} from './types/record.js';\n\n/**\n * Record schema async interface.\n */\nexport interface RecordSchemaAsync<\n TKey extends\n | BaseSchema<string, string | number | symbol, BaseIssue<unknown>>\n | BaseSchemaAsync<string, string | number | symbol, BaseIssue<unknown>>,\n TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<RecordIssue> | undefined,\n> extends BaseSchemaAsync<\n InferRecordInput<TKey, TValue>,\n InferRecordOutput<TKey, TValue>,\n RecordIssue | InferIssue<TKey> | InferIssue<TValue>\n> {\n /**\n * The schema type.\n */\n readonly type: 'record';\n /**\n * The schema reference.\n */\n readonly reference: typeof record | typeof recordAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The record key schema.\n */\n readonly key: TKey;\n /**\n * The record value schema.\n */\n readonly value: TValue;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a record schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n *\n * @returns A record schema.\n */\nexport function recordAsync<\n const TKey extends\n | BaseSchema<string, string | number | symbol, BaseIssue<unknown>>\n | BaseSchemaAsync<string, string | number | symbol, BaseIssue<unknown>>,\n const TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(key: TKey, value: TValue): RecordSchemaAsync<TKey, TValue, undefined>;\n\n/**\n * Creates a record schema.\n *\n * @param key The key schema.\n * @param value The value schema.\n * @param message The error message.\n *\n * @returns A record schema.\n */\nexport function recordAsync<\n const TKey extends\n | BaseSchema<string, string | number | symbol, BaseIssue<unknown>>\n | BaseSchemaAsync<string, string | number | symbol, BaseIssue<unknown>>,\n const TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<RecordIssue> | undefined,\n>(\n key: TKey,\n value: TValue,\n message: TMessage\n): RecordSchemaAsync<TKey, TValue, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function recordAsync(\n key:\n | BaseSchema<string, string | number | symbol, BaseIssue<unknown>>\n | BaseSchemaAsync<string, string | number | symbol, BaseIssue<unknown>>,\n value:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<RecordIssue>\n): RecordSchemaAsync<\n | BaseSchema<string, string | number | symbol, BaseIssue<unknown>>\n | BaseSchemaAsync<string, string | number | symbol, BaseIssue<unknown>>,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<RecordIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'record',\n reference: recordAsync,\n expects: 'Object',\n async: true,\n key,\n value,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to empty object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Parse schema of each record entry\n // Hint: `Object.entries(…)` always returns keys as strings\n // Hint: We exclude specific keys for security reasons\n const datasets = await Promise.all(\n Object.entries(input)\n .filter(([key]) => _isValidObjectKey(input, key))\n .map(([entryKey, entryValue]) =>\n Promise.all([\n entryKey,\n entryValue,\n this.key['~run']({ value: entryKey }, config),\n this.value['~run']({ value: entryValue }, config),\n ])\n )\n );\n\n // Process datasets of each record entry\n for (const [\n entryKey,\n entryValue,\n keyDataset,\n valueDataset,\n ] of datasets) {\n // If there are issues, capture them\n if (keyDataset.issues) {\n // Create record path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key: entryKey,\n value: entryValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of keyDataset.issues) {\n // @ts-expect-error\n issue.path = [pathItem];\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = keyDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create record path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key: entryKey,\n value: entryValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!keyDataset.typed || !valueDataset.typed) {\n dataset.typed = false;\n }\n\n // If key is typed, add entry to dataset\n if (keyDataset.typed) {\n // @ts-expect-error\n dataset.value[keyDataset.value] = valueDataset.value;\n }\n }\n\n // Otherwise, add record issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n Record<string | number | symbol, unknown>,\n RecordIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferIssue,\n OutputDataset,\n SetPathItem,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { InferSetInput, InferSetOutput, SetIssue } from './types/set.js';\n\n/**\n * Set schema interface.\n */\nexport interface SetSchema<\n TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<SetIssue> | undefined,\n> extends BaseSchema<\n InferSetInput<TValue>,\n InferSetOutput<TValue>,\n SetIssue | InferIssue<TValue>\n> {\n /**\n * The schema type.\n */\n readonly type: 'set';\n /**\n * The schema reference.\n */\n readonly reference: typeof set;\n /**\n * The expected property.\n */\n readonly expects: 'Set';\n /**\n * The set value schema.\n */\n readonly value: TValue;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a set schema.\n *\n * @param value The value schema.\n *\n * @returns A set schema.\n */\nexport function set<\n const TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(value: TValue): SetSchema<TValue, undefined>;\n\n/**\n * Creates a set schema.\n *\n * @param value The value schema.\n * @param message The error message.\n *\n * @returns A set schema.\n */\nexport function set<\n const TValue extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<SetIssue> | undefined,\n>(value: TValue, message: TMessage): SetSchema<TValue, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function set(\n value: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<SetIssue>\n): SetSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<SetIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'set',\n reference: set,\n expects: 'Set',\n async: false,\n value,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input instanceof Set) {\n // Set typed to `true` and value to empty set\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = new Set();\n\n // Parse schema of each set value\n for (const inputValue of input) {\n const valueDataset = this.value['~run'](\n { value: inputValue },\n config\n );\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create set path item\n const pathItem: SetPathItem = {\n type: 'set',\n origin: 'value',\n input,\n key: null,\n value: inputValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add value to dataset\n // @ts-expect-error\n dataset.value.add(valueDataset.value);\n }\n\n // Otherwise, add set issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n Set<unknown>,\n SetIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferIssue,\n OutputDataset,\n SetPathItem,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { set } from './set.js';\nimport type { InferSetInput, InferSetOutput, SetIssue } from './types/set.js';\n\n/**\n * Set schema async interface.\n */\nexport interface SetSchemaAsync<\n TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<SetIssue> | undefined,\n> extends BaseSchemaAsync<\n InferSetInput<TValue>,\n InferSetOutput<TValue>,\n SetIssue | InferIssue<TValue>\n> {\n /**\n * The schema type.\n */\n readonly type: 'set';\n /**\n * The schema reference.\n */\n readonly reference: typeof set | typeof setAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Set';\n /**\n * The set value schema.\n */\n readonly value: TValue;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a set schema.\n *\n * @param value The value schema.\n *\n * @returns A set schema.\n */\nexport function setAsync<\n const TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(value: TValue): SetSchemaAsync<TValue, undefined>;\n\n/**\n * Creates a set schema.\n *\n * @param value The value schema.\n * @param message The error message.\n *\n * @returns A set schema.\n */\nexport function setAsync<\n const TValue extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<SetIssue> | undefined,\n>(value: TValue, message: TMessage): SetSchemaAsync<TValue, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function setAsync(\n value:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<SetIssue>\n): SetSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<SetIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'set',\n reference: setAsync,\n expects: 'Set',\n async: true,\n value,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input instanceof Set) {\n // Set typed to `true` and value to empty set\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = new Set();\n\n // Parse schema of each set value\n const valueDatasets = await Promise.all(\n [...input].map(\n async (inputValue) =>\n [\n inputValue,\n await this.value['~run']({ value: inputValue }, config),\n ] as const\n )\n );\n\n // Process dataset of each set value\n for (const [inputValue, valueDataset] of valueDatasets) {\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create set path item\n const pathItem: SetPathItem = {\n type: 'set',\n origin: 'value',\n input,\n key: null,\n value: inputValue,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add value to dataset\n // @ts-expect-error\n dataset.value.add(valueDataset.value);\n }\n\n // Otherwise, add set issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n Set<unknown>,\n SetIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseSchema,\n ErrorMessage,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n ObjectEntries,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { StrictObjectIssue } from './types/strictObject.js';\n\n/**\n * Strict object schema interface.\n */\nexport interface StrictObjectSchema<\n TEntries extends ObjectEntries,\n TMessage extends ErrorMessage<StrictObjectIssue> | undefined,\n> extends BaseSchema<\n InferObjectInput<TEntries>,\n InferObjectOutput<TEntries>,\n StrictObjectIssue | InferObjectIssue<TEntries>\n> {\n /**\n * The schema type.\n */\n readonly type: 'strict_object';\n /**\n * The schema reference.\n */\n readonly reference: typeof strictObject;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a strict object schema.\n *\n * @param entries The entries schema.\n *\n * @returns A strict object schema.\n */\nexport function strictObject<const TEntries extends ObjectEntries>(\n entries: TEntries\n): StrictObjectSchema<TEntries, undefined>;\n\n/**\n * Creates a strict object schema.\n *\n * @param entries The entries schema.\n * @param message The error message.\n *\n * @returns A strict object schema.\n */\nexport function strictObject<\n const TEntries extends ObjectEntries,\n const TMessage extends ErrorMessage<StrictObjectIssue> | undefined,\n>(entries: TEntries, message: TMessage): StrictObjectSchema<TEntries, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function strictObject(\n entries: ObjectEntries,\n message?: ErrorMessage<StrictObjectIssue>\n): StrictObjectSchema<\n ObjectEntries,\n ErrorMessage<StrictObjectIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'strict_object',\n reference: strictObject,\n expects: 'Object',\n async: false,\n entries,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // Process each object entry of schema\n for (const key in this.entries) {\n const valueSchema = this.entries[key];\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : getDefault(valueSchema);\n const valueDataset = valueSchema['~run']({ value }, config);\n\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Check input for unknown keys if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (const key in input) {\n if (!(key in this.entries)) {\n _addIssue(this, 'key', dataset, config, {\n input: key,\n expected: 'never',\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n },\n ],\n });\n\n // Hint: We intentionally break the loop after the first unknown\n // entries. Otherwise, attackers could send large objects to\n // exhaust device resources. If you want an issue for every\n // unknown key, use the `objectWithRest` schema with `never` for\n // the `rest` argument.\n break;\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntries>,\n StrictObjectIssue | InferObjectIssue<ObjectEntries>\n >;\n },\n };\n}\n","import { getDefault, getFallback } from '../methods/index.js';\nimport type {\n BaseSchemaAsync,\n ErrorMessage,\n InferObjectInput,\n InferObjectIssue,\n InferObjectOutput,\n ObjectEntriesAsync,\n ObjectPathItem,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { strictObject } from './strictObject.js';\nimport type { StrictObjectIssue } from './types/strictObject.js';\n\n/**\n * Strict object schema async interface.\n */\nexport interface StrictObjectSchemaAsync<\n TEntries extends ObjectEntriesAsync,\n TMessage extends ErrorMessage<StrictObjectIssue> | undefined,\n> extends BaseSchemaAsync<\n InferObjectInput<TEntries>,\n InferObjectOutput<TEntries>,\n StrictObjectIssue | InferObjectIssue<TEntries>\n> {\n /**\n * The schema type.\n */\n readonly type: 'strict_object';\n /**\n * The schema reference.\n */\n readonly reference: typeof strictObject | typeof strictObjectAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The entries schema.\n */\n readonly entries: TEntries;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a strict object schema.\n *\n * @param entries The entries schema.\n *\n * @returns A strict object schema.\n */\nexport function strictObjectAsync<const TEntries extends ObjectEntriesAsync>(\n entries: TEntries\n): StrictObjectSchemaAsync<TEntries, undefined>;\n\n/**\n * Creates a strict object schema.\n *\n * @param entries The entries schema.\n * @param message The error message.\n *\n * @returns A strict object schema.\n */\nexport function strictObjectAsync<\n const TEntries extends ObjectEntriesAsync,\n const TMessage extends ErrorMessage<StrictObjectIssue> | undefined,\n>(\n entries: TEntries,\n message: TMessage\n): StrictObjectSchemaAsync<TEntries, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function strictObjectAsync(\n entries: ObjectEntriesAsync,\n message?: ErrorMessage<StrictObjectIssue>\n): StrictObjectSchemaAsync<\n ObjectEntriesAsync,\n ErrorMessage<StrictObjectIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'strict_object',\n reference: strictObjectAsync,\n expects: 'Object',\n async: true,\n entries,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Set typed to `true` and value to blank object\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = {};\n\n // If key is present or its an optional schema with a default value,\n // parse input of key or default value asynchronously\n const valueDatasets = await Promise.all(\n Object.entries(this.entries).map(async ([key, valueSchema]) => {\n if (\n key in input ||\n ((valueSchema.type === 'exact_optional' ||\n valueSchema.type === 'optional' ||\n valueSchema.type === 'nullish') &&\n // @ts-expect-error\n valueSchema.default !== undefined)\n ) {\n const value: unknown =\n key in input\n ? // @ts-expect-error\n input[key]\n : await getDefault(valueSchema);\n return [\n key,\n value,\n valueSchema,\n await valueSchema['~run']({ value }, config),\n ] as const;\n }\n return [\n key,\n // @ts-expect-error\n input[key] as unknown,\n valueSchema,\n null,\n ] as const;\n })\n );\n\n // Process each object entry of schema\n for (const [key, value, valueSchema, valueDataset] of valueDatasets) {\n // If key is present or its an optional schema with a default value,\n // process its value dataset\n if (valueDataset) {\n // If there are issues, capture them\n if (valueDataset.issues) {\n // Create object path item\n const pathItem: ObjectPathItem = {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key,\n value,\n };\n\n // Add modified entry dataset issues to issues\n for (const issue of valueDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = valueDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!valueDataset.typed) {\n dataset.typed = false;\n }\n\n // Add entry to dataset\n // @ts-expect-error\n dataset.value[key] = valueDataset.value;\n\n // Otherwise, if key is missing but has a fallback, use it\n // @ts-expect-error\n } else if (valueSchema.fallback !== undefined) {\n // @ts-expect-error\n dataset.value[key] = await getFallback(valueSchema);\n\n // Otherwise, if key is missing and required, add issue\n } else if (\n valueSchema.type !== 'exact_optional' &&\n valueSchema.type !== 'optional' &&\n valueSchema.type !== 'nullish'\n ) {\n _addIssue(this, 'key', dataset, config, {\n input: undefined,\n expected: `\"${key}\"`,\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n value,\n },\n ],\n });\n\n // If necessary, abort early\n if (config.abortEarly) {\n break;\n }\n }\n }\n\n // Check input for unknown keys if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (const key in input) {\n if (!(key in this.entries)) {\n _addIssue(this, 'key', dataset, config, {\n input: key,\n expected: 'never',\n path: [\n {\n type: 'object',\n origin: 'key',\n input: input as Record<string, unknown>,\n key,\n // @ts-expect-error\n value: input[key],\n },\n ],\n });\n\n // Hint: We intentionally break the loop after the first unknown\n // entries. Otherwise, attackers could send large objects to\n // exhaust device resources. If you want an issue for every\n // unknown key, use the `objectWithRest` schema with `never` for\n // the `rest` argument.\n break;\n }\n }\n }\n\n // Otherwise, add object issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferObjectOutput<ObjectEntriesAsync>,\n StrictObjectIssue | InferObjectIssue<ObjectEntriesAsync>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItems,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { StrictTupleIssue } from './types/strictTuple.js';\n\n/**\n * Strict tuple schema interface.\n */\nexport interface StrictTupleSchema<\n TItems extends TupleItems,\n TMessage extends ErrorMessage<StrictTupleIssue> | undefined,\n> extends BaseSchema<\n InferTupleInput<TItems>,\n InferTupleOutput<TItems>,\n StrictTupleIssue | InferTupleIssue<TItems>\n> {\n /**\n * The schema type.\n */\n readonly type: 'strict_tuple';\n /**\n * The schema reference.\n */\n readonly reference: typeof strictTuple;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a strict tuple schema.\n *\n * @param items The items schema.\n *\n * @returns A strict tuple schema.\n */\nexport function strictTuple<const TItems extends TupleItems>(\n items: TItems\n): StrictTupleSchema<TItems, undefined>;\n\n/**\n * Creates a strict tuple schema.\n *\n * @param items The items schema.\n * @param message The error message.\n *\n * @returns A strict tuple schema.\n */\nexport function strictTuple<\n const TItems extends TupleItems,\n const TMessage extends ErrorMessage<StrictTupleIssue> | undefined,\n>(items: TItems, message: TMessage): StrictTupleSchema<TItems, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function strictTuple(\n items: TupleItems,\n message?: ErrorMessage<StrictTupleIssue>\n): StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'strict_tuple',\n reference: strictTuple,\n expects: 'Array',\n async: false,\n items,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n for (let key = 0; key < this.items.length; key++) {\n const value = input[key];\n const itemDataset = this.items[key]['~run']({ value }, config);\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Check input for unknown items if necessary\n if (\n !(dataset.issues && config.abortEarly) &&\n this.items.length < input.length\n ) {\n _addIssue(this, 'type', dataset, config, {\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 // Hint: We intentionally only add one issue for unknown items.\n // Otherwise, attackers could send large arrays to exhaust\n // device resources. If you want an issue for every unknown item,\n // use the `tupleWithRest` schema with `never` for the `rest`\n // argument.\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n StrictTupleIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchemaAsync,\n ErrorMessage,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { strictTuple } from './strictTuple.js';\nimport type { StrictTupleIssue } from './types/strictTuple.js';\n\n/**\n * Strict tuple schema async interface.\n */\nexport interface StrictTupleSchemaAsync<\n TItems extends TupleItemsAsync,\n TMessage extends ErrorMessage<StrictTupleIssue> | undefined,\n> extends BaseSchemaAsync<\n InferTupleInput<TItems>,\n InferTupleOutput<TItems>,\n StrictTupleIssue | InferTupleIssue<TItems>\n> {\n /**\n * The schema type.\n */\n readonly type: 'strict_tuple';\n /**\n * The schema reference.\n */\n readonly reference: typeof strictTuple | typeof strictTupleAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a strict tuple schema.\n *\n * @param items The items schema.\n *\n * @returns A strict tuple schema.\n */\nexport function strictTupleAsync<const TItems extends TupleItemsAsync>(\n items: TItems\n): StrictTupleSchemaAsync<TItems, undefined>;\n\n/**\n * Creates a strict tuple schema.\n *\n * @param items The items schema.\n * @param message The error message.\n *\n * @returns A strict tuple schema.\n */\nexport function strictTupleAsync<\n const TItems extends TupleItemsAsync,\n const TMessage extends ErrorMessage<StrictTupleIssue> | undefined,\n>(items: TItems, message: TMessage): StrictTupleSchemaAsync<TItems, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function strictTupleAsync(\n items: TupleItemsAsync,\n message?: ErrorMessage<StrictTupleIssue>\n): StrictTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<StrictTupleIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'strict_tuple',\n reference: strictTupleAsync,\n expects: 'Array',\n async: true,\n items,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value = input[key];\n return [key, value, await item['~run']({ value }, config)] as const;\n })\n );\n\n // Process each tuple item dataset\n for (const [key, value, itemDataset] of itemDatasets) {\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Check input for unknown items if necessary\n if (\n !(dataset.issues && config.abortEarly) &&\n this.items.length < input.length\n ) {\n _addIssue(this, 'type', dataset, config, {\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 // Hint: We intentionally only add one issue for unknown items.\n // Otherwise, attackers could send large arrays to exhaust\n // device resources. If you want an issue for every unknown item,\n // use the `tupleWithRest` schema with `never` for the `rest`\n // argument.\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n StrictTupleIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * String issue interface.\n */\nexport interface StringIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'string';\n /**\n * The expected property.\n */\n readonly expected: 'string';\n}\n\n/**\n * String schema interface.\n */\nexport interface StringSchema<\n TMessage extends ErrorMessage<StringIssue> | undefined,\n> extends BaseSchema<string, string, StringIssue> {\n /**\n * The schema type.\n */\n readonly type: 'string';\n /**\n * The schema reference.\n */\n readonly reference: typeof string;\n /**\n * The expected property.\n */\n readonly expects: 'string';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a string schema.\n *\n * @returns A string schema.\n */\nexport function string(): StringSchema<undefined>;\n\n/**\n * Creates a string schema.\n *\n * @param message The error message.\n *\n * @returns A string schema.\n */\nexport function string<\n const TMessage extends ErrorMessage<StringIssue> | undefined,\n>(message: TMessage): StringSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function string(\n message?: ErrorMessage<StringIssue>\n): StringSchema<ErrorMessage<StringIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'string',\n reference: string,\n expects: 'string',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (typeof dataset.value === 'string') {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<string, StringIssue>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Symbol issue interface.\n */\nexport interface SymbolIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'symbol';\n /**\n * The expected property.\n */\n readonly expected: 'symbol';\n}\n\n/**\n * Symbol schema interface.\n */\nexport interface SymbolSchema<\n TMessage extends ErrorMessage<SymbolIssue> | undefined,\n> extends BaseSchema<symbol, symbol, SymbolIssue> {\n /**\n * The schema type.\n */\n readonly type: 'symbol';\n /**\n * The schema reference.\n */\n readonly reference: typeof symbol;\n /**\n * The expected property.\n */\n readonly expects: 'symbol';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a symbol schema.\n *\n * @returns A symbol schema.\n */\nexport function symbol(): SymbolSchema<undefined>;\n\n/**\n * Creates a symbol schema.\n *\n * @param message The error message.\n *\n * @returns A symbol schema.\n */\nexport function symbol<\n const TMessage extends ErrorMessage<SymbolIssue> | undefined,\n>(message: TMessage): SymbolSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function symbol(\n message?: ErrorMessage<SymbolIssue>\n): SymbolSchema<ErrorMessage<SymbolIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'symbol',\n reference: symbol,\n expects: 'symbol',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (typeof dataset.value === 'symbol') {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<symbol, SymbolIssue>;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItems,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { TupleIssue } from './types/tuple.js';\n\n/**\n * Tuple schema interface.\n */\nexport interface TupleSchema<\n TItems extends TupleItems,\n TMessage extends ErrorMessage<TupleIssue> | undefined,\n> extends BaseSchema<\n InferTupleInput<TItems>,\n InferTupleOutput<TItems>,\n TupleIssue | InferTupleIssue<TItems>\n> {\n /**\n * The schema type.\n */\n readonly type: 'tuple';\n /**\n * The schema reference.\n */\n readonly reference: typeof tuple;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a tuple schema.\n *\n * Hint: This schema removes unknown items. The output will only include the\n * items you specify. To include unknown items, use `looseTuple`. To\n * return an issue for unknown items, use `strictTuple`. To include and\n * validate unknown items, use `tupleWithRest`.\n *\n * @param items The items schema.\n *\n * @returns A tuple schema.\n */\nexport function tuple<const TItems extends TupleItems>(\n items: TItems\n): TupleSchema<TItems, undefined>;\n\n/**\n * Creates a tuple schema.\n *\n * Hint: This schema removes unknown items. The output will only include the\n * items you specify. To include unknown items, use `looseTuple`. To\n * return an issue for unknown items, use `strictTuple`. To include and\n * validate unknown items, use `tupleWithRest`.\n *\n * @param items The items schema.\n * @param message The error message.\n *\n * @returns A tuple schema.\n */\nexport function tuple<\n const TItems extends TupleItems,\n const TMessage extends ErrorMessage<TupleIssue> | undefined,\n>(items: TItems, message: TMessage): TupleSchema<TItems, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function tuple(\n items: TupleItems,\n message?: ErrorMessage<TupleIssue>\n): TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'tuple',\n reference: tuple,\n expects: 'Array',\n async: false,\n items,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n for (let key = 0; key < this.items.length; key++) {\n const value = input[key];\n const itemDataset = this.items[key]['~run']({ value }, config);\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n TupleIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchemaAsync,\n ErrorMessage,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { tuple } from './tuple.js';\nimport type { TupleIssue } from './types/tuple.js';\n\n/**\n * Tuple schema async interface.\n */\nexport interface TupleSchemaAsync<\n TItems extends TupleItemsAsync,\n TMessage extends ErrorMessage<TupleIssue> | undefined,\n> extends BaseSchemaAsync<\n InferTupleInput<TItems>,\n InferTupleOutput<TItems>,\n TupleIssue | InferTupleIssue<TItems>\n> {\n /**\n * The schema type.\n */\n readonly type: 'tuple';\n /**\n * The schema reference.\n */\n readonly reference: typeof tuple | typeof tupleAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a tuple schema.\n *\n * Hint: This schema removes unknown items. The output will only include the\n * items you specify. To include unknown items, use `looseTupleAsync`. To\n * return an issue for unknown items, use `strictTupleAsync`. To include and\n * validate unknown items, use `tupleWithRestAsync`.\n *\n * @param items The items schema.\n *\n * @returns A tuple schema.\n */\nexport function tupleAsync<const TItems extends TupleItemsAsync>(\n items: TItems\n): TupleSchemaAsync<TItems, undefined>;\n\n/**\n * Creates a tuple schema.\n *\n * Hint: This schema removes unknown items. The output will only include the\n * items you specify. To include unknown items, use `looseTupleAsync`. To\n * return an issue for unknown items, use `strictTupleAsync`. To include and\n * validate unknown items, use `tupleWithRestAsync`.\n *\n * @param items The items schema.\n * @param message The error message.\n *\n * @returns A tuple schema.\n */\nexport function tupleAsync<\n const TItems extends TupleItemsAsync,\n const TMessage extends ErrorMessage<TupleIssue> | undefined,\n>(items: TItems, message: TMessage): TupleSchemaAsync<TItems, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function tupleAsync(\n items: TupleItemsAsync,\n message?: ErrorMessage<TupleIssue>\n): TupleSchemaAsync<TupleItemsAsync, ErrorMessage<TupleIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'tuple',\n reference: tupleAsync,\n expects: 'Array',\n async: true,\n items,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n const itemDatasets = await Promise.all(\n this.items.map(async (item, key) => {\n const value = input[key];\n return [key, value, await item['~run']({ value }, config)] as const;\n })\n );\n\n // Process each tuple item dataset\n for (const [key, value, itemDataset] of itemDatasets) {\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n TupleIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferOutput,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItems,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { TupleWithRestIssue } from './types/tupleWithRest.js';\n\n/**\n * Tuple with rest schema interface.\n */\nexport interface TupleWithRestSchema<\n TItems extends TupleItems,\n TRest extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<TupleWithRestIssue> | undefined,\n> extends BaseSchema<\n [...InferTupleInput<TItems>, ...InferInput<TRest>[]],\n [...InferTupleOutput<TItems>, ...InferOutput<TRest>[]],\n TupleWithRestIssue | InferTupleIssue<TItems> | InferIssue<TRest>\n> {\n /**\n * The schema type.\n */\n readonly type: 'tuple_with_rest';\n /**\n * The schema reference.\n */\n readonly reference: typeof tupleWithRest;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The rest schema.\n */\n readonly rest: TRest;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a tuple with rest schema.\n *\n * @param items The items schema.\n * @param rest The rest schema.\n *\n * @returns A tuple with rest schema.\n */\nexport function tupleWithRest<\n const TItems extends TupleItems,\n const TRest extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(items: TItems, rest: TRest): TupleWithRestSchema<TItems, TRest, undefined>;\n\n/**\n * Creates a tuple with rest schema.\n *\n * @param items The items schema.\n * @param rest The rest schema.\n * @param message The error message.\n *\n * @returns A tuple with rest schema.\n */\nexport function tupleWithRest<\n const TItems extends TupleItems,\n const TRest extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<TupleWithRestIssue> | undefined,\n>(\n items: TItems,\n rest: TRest,\n message: TMessage\n): TupleWithRestSchema<TItems, TRest, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function tupleWithRest(\n items: TupleItems,\n rest: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<TupleWithRestIssue>\n): TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n> {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse schema of each tuple item\n for (let key = 0; key < this.items.length; key++) {\n const value = input[key];\n const itemDataset = this.items[key]['~run']({ value }, config);\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Parse rest with schema if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (let key = this.items.length; key < input.length; key++) {\n const value = input[key];\n const itemDataset = this.rest['~run']({ value }, config);\n\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n TupleWithRestIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n ArrayPathItem,\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n InferInput,\n InferIssue,\n InferOutput,\n InferTupleInput,\n InferTupleIssue,\n InferTupleOutput,\n OutputDataset,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\nimport type { tupleWithRest } from './tupleWithRest.js';\nimport type { TupleWithRestIssue } from './types/tupleWithRest.js';\n\n/**\n * Tuple with rest schema async interface.\n */\nexport interface TupleWithRestSchemaAsync<\n TItems extends TupleItemsAsync,\n TRest extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TMessage extends ErrorMessage<TupleWithRestIssue> | undefined,\n> extends BaseSchemaAsync<\n [...InferTupleInput<TItems>, ...InferInput<TRest>[]],\n [...InferTupleOutput<TItems>, ...InferOutput<TRest>[]],\n TupleWithRestIssue | InferTupleIssue<TItems> | InferIssue<TRest>\n> {\n /**\n * The schema type.\n */\n readonly type: 'tuple_with_rest';\n /**\n * The schema reference.\n */\n readonly reference: typeof tupleWithRest | typeof tupleWithRestAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Array';\n /**\n * The items schema.\n */\n readonly items: TItems;\n /**\n * The rest schema.\n */\n readonly rest: TRest;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a tuple with rest schema.\n *\n * @param items The items schema.\n * @param rest The rest schema.\n *\n * @returns A tuple with rest schema.\n */\nexport function tupleWithRestAsync<\n const TItems extends TupleItemsAsync,\n const TRest extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(\n items: TItems,\n rest: TRest\n): TupleWithRestSchemaAsync<TItems, TRest, undefined>;\n\n/**\n * Creates a tuple with rest schema.\n *\n * @param items The items schema.\n * @param rest The rest schema.\n * @param message The error message.\n *\n * @returns A tuple with rest schema.\n */\nexport function tupleWithRestAsync<\n const TItems extends TupleItemsAsync,\n const TRest extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TMessage extends ErrorMessage<TupleWithRestIssue> | undefined,\n>(\n items: TItems,\n rest: TRest,\n message: TMessage\n): TupleWithRestSchemaAsync<TItems, TRest, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function tupleWithRestAsync(\n items: TupleItemsAsync,\n rest:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n message?: ErrorMessage<TupleWithRestIssue>\n): TupleWithRestSchemaAsync<\n TupleItemsAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n> {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (Array.isArray(input)) {\n // Set typed to `true` and value to empty array\n // @ts-expect-error\n dataset.typed = true;\n dataset.value = [];\n\n // Parse each normal and rest item\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 value = input[key];\n return [\n key,\n value,\n await item['~run']({ value }, config),\n ] as const;\n })\n ),\n\n // Parse other items with rest schema\n Promise.all(\n input.slice(this.items.length).map(async (value, key) => {\n return [\n key + this.items.length,\n value,\n await this.rest['~run']({ value }, config),\n ] as const;\n })\n ),\n ]);\n\n // Process each tuple item dataset\n for (const [key, value, itemDataset] of normalDatasets) {\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n\n // Parse rest with schema if necessary\n if (!dataset.issues || !config.abortEarly) {\n for (const [key, value, itemDataset] of restDatasets) {\n // If there are issues, capture them\n if (itemDataset.issues) {\n // Create tuple path item\n const pathItem: ArrayPathItem = {\n type: 'array',\n origin: 'value',\n input,\n key,\n value,\n };\n\n // Add modified item dataset issues to issues\n for (const issue of itemDataset.issues) {\n if (issue.path) {\n issue.path.unshift(pathItem);\n } else {\n // @ts-expect-error\n issue.path = [pathItem];\n }\n // @ts-expect-error\n dataset.issues?.push(issue);\n }\n if (!dataset.issues) {\n // @ts-expect-error\n dataset.issues = itemDataset.issues;\n }\n\n // If necessary, abort early\n if (config.abortEarly) {\n dataset.typed = false;\n break;\n }\n }\n\n // If not typed, set typed to `false`\n if (!itemDataset.typed) {\n dataset.typed = false;\n }\n\n // Add item to dataset\n // @ts-expect-error\n dataset.value.push(itemDataset.value);\n }\n }\n\n // Otherwise, add tuple issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n unknown[],\n TupleWithRestIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Undefined issue interface.\n */\nexport interface UndefinedIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'undefined';\n /**\n * The expected property.\n */\n readonly expected: 'undefined';\n}\n\n/**\n * Undefined schema interface.\n */\nexport interface UndefinedSchema<\n TMessage extends ErrorMessage<UndefinedIssue> | undefined,\n> extends BaseSchema<undefined, undefined, UndefinedIssue> {\n /**\n * The schema type.\n */\n readonly type: 'undefined';\n /**\n * The schema reference.\n */\n readonly reference: typeof undefined_;\n /**\n * The expected property.\n */\n readonly expects: 'undefined';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an undefined schema.\n *\n * @returns An undefined schema.\n */\nexport function undefined_(): UndefinedSchema<undefined>;\n\n/**\n * Creates an undefined schema.\n *\n * @param message The error message.\n *\n * @returns An undefined schema.\n */\nexport function undefined_<\n const TMessage extends ErrorMessage<UndefinedIssue> | undefined,\n>(message: TMessage): UndefinedSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function undefined_(\n message?: ErrorMessage<UndefinedIssue>\n): UndefinedSchema<ErrorMessage<UndefinedIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'undefined',\n reference: undefined_,\n expects: 'undefined',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<undefined, UndefinedIssue>;\n },\n };\n}\n\nexport { undefined_ as undefined };\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n Default,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { InferUndefinedableOutput } from './types/undefinedable.js';\n\n/**\n * Undefinedable schema interface.\n */\nexport interface UndefinedableSchema<\n TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends Default<TWrapped, undefined>,\n> extends BaseSchema<\n InferInput<TWrapped> | undefined,\n InferUndefinedableOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'undefinedable';\n /**\n * The schema reference.\n */\n readonly reference: typeof undefinedable;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | undefined)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates an undefinedable schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns An undefinedable schema.\n */\nexport function undefinedable<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): UndefinedableSchema<TWrapped, undefined>;\n\n/**\n * Creates an undefinedable schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns An undefinedable schema.\n */\nexport function undefinedable<\n const TWrapped extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends Default<TWrapped, undefined>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): UndefinedableSchema<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function undefinedable(\n wrapped: BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): UndefinedableSchema<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n // If value is `undefined`, override it with default or return dataset\n if (dataset.value === undefined) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = getDefault(this, dataset, config);\n }\n\n // If value is still `undefined`, return dataset\n if (dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import { getDefault } from '../methods/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n DefaultAsync,\n InferInput,\n InferIssue,\n SuccessDataset,\n} from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\nimport type { InferUndefinedableOutput } from './types/undefinedable.js';\nimport type { undefinedable } from './undefinedable.js';\n\n/**\n * Undefinedable schema async interface.\n */\nexport interface UndefinedableSchemaAsync<\n TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n TDefault extends DefaultAsync<TWrapped, undefined>,\n> extends BaseSchemaAsync<\n InferInput<TWrapped> | undefined,\n InferUndefinedableOutput<TWrapped, TDefault>,\n InferIssue<TWrapped>\n> {\n /**\n * The schema type.\n */\n readonly type: 'undefinedable';\n /**\n * The schema reference.\n */\n readonly reference: typeof undefinedable | typeof undefinedableAsync;\n /**\n * The expected property.\n */\n readonly expects: `(${TWrapped['expects']} | undefined)`;\n /**\n * The wrapped schema.\n */\n readonly wrapped: TWrapped;\n /**\n * The default value.\n */\n readonly default: TDefault;\n}\n\n/**\n * Creates an undefinedable schema.\n *\n * @param wrapped The wrapped schema.\n *\n * @returns An undefinedable schema.\n */\nexport function undefinedableAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(wrapped: TWrapped): UndefinedableSchemaAsync<TWrapped, undefined>;\n\n/**\n * Creates an undefinedable schema.\n *\n * @param wrapped The wrapped schema.\n * @param default_ The default value.\n *\n * @returns An undefinedable schema.\n */\nexport function undefinedableAsync<\n const TWrapped extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n const TDefault extends DefaultAsync<TWrapped, undefined>,\n>(\n wrapped: TWrapped,\n default_: TDefault\n): UndefinedableSchemaAsync<TWrapped, TDefault>;\n\n// @__NO_SIDE_EFFECTS__\nexport function undefinedableAsync(\n wrapped:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n default_?: unknown\n): UndefinedableSchemaAsync<\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n unknown\n> {\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, config) {\n // If value is `undefined`, override it with default or return dataset\n if (dataset.value === undefined) {\n // If default is specified, override value of dataset\n if (this.default !== undefined) {\n dataset.value = await getDefault(this, dataset, config);\n }\n\n // If value is still `undefined`, return dataset\n if (dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n }\n }\n\n // Otherwise, return dataset of wrapped schema\n return this.wrapped['~run'](dataset, config);\n },\n };\n}\n","import type { BaseIssue, OutputDataset } from '../types/index.js';\n\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__\nexport function _subIssues(\n datasets: OutputDataset<unknown, BaseIssue<unknown>>[] | undefined\n): [BaseIssue<unknown>, ...BaseIssue<unknown>[]] | undefined {\n let issues: [BaseIssue<unknown>, ...BaseIssue<unknown>[]] | undefined;\n if (datasets) {\n for (const dataset of datasets) {\n if (issues) {\n // Hint: According to the implementation of `union` and `unionAsync`,\n // `dataset.issues` can never be `undefined`.\n issues.push(...dataset.issues!);\n } else {\n issues = dataset.issues;\n }\n }\n }\n return issues;\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n FailureDataset,\n InferInput,\n InferIssue,\n InferOutput,\n MaybeReadonly,\n OutputDataset,\n PartialDataset,\n SuccessDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n} from '../utils/index.js';\nimport type { UnionIssue } from './types/union.js';\nimport { _subIssues } from './_subIssues.js';\n\n/**\n * Union options type.\n */\nexport type UnionOptions = MaybeReadonly<\n BaseSchema<unknown, unknown, BaseIssue<unknown>>[]\n>;\n\n/**\n * Union schema interface.\n */\nexport interface UnionSchema<\n TOptions extends UnionOptions,\n TMessage extends\n | ErrorMessage<UnionIssue<InferIssue<TOptions[number]>>>\n | undefined,\n> extends BaseSchema<\n InferInput<TOptions[number]>,\n InferOutput<TOptions[number]>,\n UnionIssue<InferIssue<TOptions[number]>> | InferIssue<TOptions[number]>\n> {\n /**\n * The schema type.\n */\n readonly type: 'union';\n /**\n * The schema reference.\n */\n readonly reference: typeof union;\n /**\n * The union options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an union schema.\n *\n * @param options The union options.\n *\n * @returns An union schema.\n */\nexport function union<const TOptions extends UnionOptions>(\n options: TOptions\n): UnionSchema<TOptions, undefined>;\n\n/**\n * Creates an union schema.\n *\n * @param options The union options.\n * @param message The error message.\n *\n * @returns An union schema.\n */\nexport function union<\n const TOptions extends UnionOptions,\n const TMessage extends\n | ErrorMessage<UnionIssue<InferIssue<TOptions[number]>>>\n | undefined,\n>(options: TOptions, message: TMessage): UnionSchema<TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function union(\n options: UnionOptions,\n message?: ErrorMessage<UnionIssue<BaseIssue<unknown>>>\n): UnionSchema<\n UnionOptions,\n ErrorMessage<UnionIssue<BaseIssue<unknown>>> | undefined\n> {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Create variables to collect datasets\n let validDataset: SuccessDataset<unknown> | undefined;\n let typedDatasets:\n | PartialDataset<unknown, BaseIssue<unknown>>[]\n | undefined;\n let untypedDatasets: FailureDataset<BaseIssue<unknown>>[] | undefined;\n\n // Parse schema of each option and collect datasets\n for (const schema of this.options) {\n const optionDataset = schema['~run']({ value: dataset.value }, config);\n\n // If typed, add it to valid or typed datasets\n if (optionDataset.typed) {\n // If there are issues, add it to typed datasets\n if (optionDataset.issues) {\n if (typedDatasets) {\n typedDatasets.push(optionDataset);\n } else {\n typedDatasets = [optionDataset];\n }\n\n // Otherwise, add it as valid dataset and break loop\n } else {\n validDataset = optionDataset;\n break;\n }\n\n // Otherwise, add it to untyped datasets\n } else {\n if (untypedDatasets) {\n untypedDatasets.push(optionDataset);\n } else {\n untypedDatasets = [optionDataset];\n }\n }\n }\n\n // If there is a valid dataset, return it\n if (validDataset) {\n return validDataset;\n }\n\n // If there are typed datasets process only those\n if (typedDatasets) {\n // If there is only one typed dataset, return it\n if (typedDatasets.length === 1) {\n return typedDatasets[0];\n }\n\n // Otherwise, add issue with typed subissues\n // Hint: If there is more than one typed dataset, we use a general\n // union issue with subissues because the issues could contradict\n // each other.\n _addIssue(this, 'type', dataset, config, {\n issues: _subIssues(typedDatasets),\n });\n\n // And set typed to `true`\n // @ts-expect-error\n dataset.typed = true;\n\n // Otherwise, if there is exactly one untyped dataset, return it\n } else if (untypedDatasets?.length === 1) {\n return untypedDatasets[0];\n\n // Otherwise, add issue with untyped subissues\n } else {\n // Hint: If there are zero or more than one untyped results, we use a\n // general union issue with subissues because the issues could\n // contradict each other.\n _addIssue(this, 'type', dataset, config, {\n issues: _subIssues(untypedDatasets),\n });\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n ErrorMessage,\n FailureDataset,\n InferInput,\n InferIssue,\n InferOutput,\n MaybeReadonly,\n OutputDataset,\n PartialDataset,\n SuccessDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n} from '../utils/index.js';\nimport type { UnionIssue } from './types/union.js';\nimport type { union } from './union.js';\nimport { _subIssues } from './_subIssues.js';\n\n/**\n * Union options async type.\n */\nexport type UnionOptionsAsync = MaybeReadonly<\n (\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n )[]\n>;\n\n/**\n * Union schema async interface.\n */\nexport interface UnionSchemaAsync<\n TOptions extends UnionOptionsAsync,\n TMessage extends\n | ErrorMessage<UnionIssue<InferIssue<TOptions[number]>>>\n | undefined,\n> extends BaseSchemaAsync<\n InferInput<TOptions[number]>,\n InferOutput<TOptions[number]>,\n UnionIssue<InferIssue<TOptions[number]>> | InferIssue<TOptions[number]>\n> {\n /**\n * The schema type.\n */\n readonly type: 'union';\n /**\n * The schema reference.\n */\n readonly reference: typeof union | typeof unionAsync;\n /**\n * The union options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an union schema.\n *\n * @param options The union options.\n *\n * @returns An union schema.\n */\nexport function unionAsync<const TOptions extends UnionOptionsAsync>(\n options: TOptions\n): UnionSchemaAsync<TOptions, undefined>;\n\n/**\n * Creates an union schema.\n *\n * @param options The union options.\n * @param message The error message.\n *\n * @returns An union schema.\n */\nexport function unionAsync<\n const TOptions extends UnionOptionsAsync,\n const TMessage extends\n | ErrorMessage<UnionIssue<InferIssue<TOptions[number]>>>\n | undefined,\n>(options: TOptions, message: TMessage): UnionSchemaAsync<TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function unionAsync(\n options: UnionOptionsAsync,\n message?: ErrorMessage<UnionIssue<BaseIssue<unknown>>>\n): UnionSchemaAsync<\n UnionOptionsAsync,\n ErrorMessage<UnionIssue<BaseIssue<unknown>>> | undefined\n> {\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,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Create variables to collect datasets\n let validDataset: SuccessDataset<unknown> | undefined;\n let typedDatasets:\n | PartialDataset<unknown, BaseIssue<unknown>>[]\n | undefined;\n let untypedDatasets: FailureDataset<BaseIssue<unknown>>[] | undefined;\n\n // Parse schema of each option and collect datasets\n for (const schema of this.options) {\n const optionDataset = await schema['~run'](\n { value: dataset.value },\n config\n );\n\n // If typed, add it to valid or typed datasets\n if (optionDataset.typed) {\n // If there are issues, add it to typed datasets\n if (optionDataset.issues) {\n if (typedDatasets) {\n typedDatasets.push(optionDataset);\n } else {\n typedDatasets = [optionDataset];\n }\n\n // Otherwise, add it as valid dataset and break loop\n } else {\n validDataset = optionDataset;\n break;\n }\n\n // Otherwise, add it to untyped datasets\n } else {\n if (untypedDatasets) {\n untypedDatasets.push(optionDataset);\n } else {\n untypedDatasets = [optionDataset];\n }\n }\n }\n\n // If there is a valid dataset, return it\n if (validDataset) {\n return validDataset;\n }\n\n // If there are typed datasets process only those\n if (typedDatasets) {\n // If there is only one typed dataset, return it\n if (typedDatasets.length === 1) {\n return typedDatasets[0];\n }\n\n // Otherwise, add issue with typed subissues\n // Hint: If there is more than one typed dataset, we use a general\n // union issue with subissues because the issues could contradict\n // each other.\n _addIssue(this, 'type', dataset, config, {\n issues: _subIssues(typedDatasets),\n });\n\n // And set typed to `true`\n // @ts-expect-error\n dataset.typed = true;\n\n // Otherwise, if there is exactly one untyped dataset, return it\n } else if (untypedDatasets?.length === 1) {\n return untypedDatasets[0];\n\n // Otherwise, add issue with untyped subissues\n } else {\n // Hint: If there are zero or more than one untyped results, we use a\n // general union issue with subissues because the issues could\n // contradict each other.\n _addIssue(this, 'type', dataset, config, {\n issues: _subIssues(untypedDatasets),\n });\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<unknown, BaseIssue<unknown>>;\n },\n };\n}\n","import type { BaseSchema, SuccessDataset } from '../types/index.js';\nimport { _getStandardProps } from '../utils/index.js';\n\n/**\n * Unknown schema interface.\n */\nexport interface UnknownSchema extends BaseSchema<unknown, unknown, never> {\n /**\n * The schema type.\n */\n readonly type: 'unknown';\n /**\n * The schema reference.\n */\n readonly reference: typeof unknown;\n /**\n * The expected property.\n */\n readonly expects: 'unknown';\n}\n\n/**\n * Creates a unknown schema.\n *\n * @returns A unknown schema.\n */\n// @__NO_SIDE_EFFECTS__\nexport function unknown(): UnknownSchema {\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 // @ts-expect-error\n dataset.typed = true;\n // @ts-expect-error\n return dataset as SuccessDataset<unknown>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n InferInput,\n InferOutput,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n} from '../utils/index.js';\nimport type {\n InferVariantIssue,\n VariantIssue,\n VariantOptions,\n VariantOptionSchema,\n} from './types/variant.js';\n\n/**\n * Variant schema interface.\n */\nexport interface VariantSchema<\n TKey extends string,\n TOptions extends VariantOptions<TKey>,\n TMessage extends ErrorMessage<VariantIssue> | undefined,\n> extends BaseSchema<\n InferInput<TOptions[number]>,\n InferOutput<TOptions[number]>,\n VariantIssue | InferVariantIssue<TOptions>\n> {\n /**\n * The schema type.\n */\n readonly type: 'variant';\n /**\n * The schema reference.\n */\n readonly reference: typeof variant;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The discriminator key.\n */\n readonly key: TKey;\n /**\n * The variant options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a variant schema.\n *\n * @param key The discriminator key.\n * @param options The variant options.\n *\n * @returns A variant schema.\n */\nexport function variant<\n const TKey extends string,\n const TOptions extends VariantOptions<TKey>,\n>(key: TKey, options: TOptions): VariantSchema<TKey, TOptions, undefined>;\n\n/**\n * Creates a variant schema.\n *\n * @param key The discriminator key.\n * @param options The variant options.\n * @param message The error message.\n *\n * @returns An variant schema.\n */\nexport function variant<\n const TKey extends string,\n const TOptions extends VariantOptions<TKey>,\n const TMessage extends ErrorMessage<VariantIssue> | undefined,\n>(\n key: TKey,\n options: TOptions,\n message: TMessage\n): VariantSchema<TKey, TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function variant(\n key: string,\n options: VariantOptions<string>,\n message?: ErrorMessage<VariantIssue>\n): VariantSchema<\n string,\n VariantOptions<string>,\n ErrorMessage<VariantIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'variant',\n reference: variant,\n expects: 'Object',\n async: false,\n key,\n options,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Create output dataset variable\n let outputDataset:\n | OutputDataset<unknown, BaseIssue<unknown>>\n | undefined;\n\n // Create variables to store invalid discriminator information\n let maxDiscriminatorPriority = 0;\n let invalidDiscriminatorKey = this.key;\n let expectedDiscriminators: string[] = [];\n\n // Create recursive function to parse nested variant options\n const parseOptions = (\n variant: VariantOptionSchema<string>,\n allKeys: Set<string>\n ) => {\n for (const schema of variant.options) {\n // If it is a variant schema, parse its options recursively\n if (schema.type === 'variant') {\n parseOptions(schema, new Set(allKeys).add(schema.key));\n\n // Otherwise, check discriminators and parse object schema\n } else {\n // Create variables to store local discriminator information\n let keysAreValid = true;\n let currentPriority = 0;\n\n // Check if all discriminator keys are valid and collect\n // information about invalid discriminator keys if not\n for (const currentKey of allKeys) {\n // If any discriminator is invalid, mark keys as invalid\n const discriminatorSchema = schema.entries[currentKey];\n if (\n currentKey in input\n ? discriminatorSchema['~run'](\n // @ts-expect-error\n { typed: false, value: input[currentKey] },\n { abortEarly: true }\n ).issues\n : discriminatorSchema.type !== 'exact_optional' &&\n discriminatorSchema.type !== 'optional' &&\n discriminatorSchema.type !== 'nullish'\n ) {\n keysAreValid = false;\n\n // If invalid discriminator key is not equal to current key\n // and if current key has a higher priority or same priority\n // but is the first one present in input, reset invalid\n // discriminator information\n if (\n invalidDiscriminatorKey !== currentKey &&\n (maxDiscriminatorPriority < currentPriority ||\n (maxDiscriminatorPriority === currentPriority &&\n currentKey in input &&\n !(invalidDiscriminatorKey in input)))\n ) {\n maxDiscriminatorPriority = currentPriority;\n invalidDiscriminatorKey = currentKey;\n expectedDiscriminators = [];\n }\n\n // If invalid discriminator key is equal to current key,\n // store its expected value\n if (invalidDiscriminatorKey === currentKey) {\n expectedDiscriminators.push(\n schema.entries[currentKey].expects\n );\n }\n\n // Break loop on first invalid discriminator key\n break;\n }\n\n // Increase priority for next discriminator key\n currentPriority++;\n }\n\n // If all discriminators are valid, parse input with schema of option\n if (keysAreValid) {\n const optionDataset = schema['~run']({ value: input }, config);\n\n // Store output dataset if necessary\n // Hint: Only the first untyped or typed dataset is returned, and\n // typed datasets take precedence over untyped ones.\n if (\n !outputDataset ||\n (!outputDataset.typed && optionDataset.typed)\n ) {\n outputDataset = optionDataset;\n }\n }\n }\n\n // If valid option is found, break loop\n // Hint: The `break` statement is intentionally placed at the end of\n // the loop to break any outer loops in case of recursive execution.\n if (outputDataset && !outputDataset.issues) {\n break;\n }\n }\n };\n\n // Parse input with nested variant options recursively\n parseOptions(this, new Set([this.key]));\n\n // If any output dataset is available, return it\n if (outputDataset) {\n return outputDataset;\n }\n\n // Otherwise, add discriminator issue\n _addIssue(this, 'type', dataset, config, {\n // @ts-expect-error\n input: input[invalidDiscriminatorKey],\n expected: _joinExpects(expectedDiscriminators, '|'),\n path: [\n {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key: invalidDiscriminatorKey,\n // @ts-expect-error\n value: input[invalidDiscriminatorKey],\n },\n ],\n });\n\n // Otherwise, add variant issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Finally, return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferOutput<VariantOptions<string>[number]>,\n VariantIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchemaAsync,\n ErrorMessage,\n InferInput,\n InferOutput,\n OutputDataset,\n} from '../types/index.js';\nimport {\n _addIssue,\n _getStandardProps,\n _joinExpects,\n} from '../utils/index.js';\nimport type {\n InferVariantIssue,\n VariantIssue,\n VariantOptionsAsync,\n VariantOptionSchema,\n VariantOptionSchemaAsync,\n} from './types/variant.js';\nimport type { variant } from './variant.js';\n\n/**\n * Variant schema async interface.\n */\nexport interface VariantSchemaAsync<\n TKey extends string,\n TOptions extends VariantOptionsAsync<TKey>,\n TMessage extends ErrorMessage<VariantIssue> | undefined,\n> extends BaseSchemaAsync<\n InferInput<TOptions[number]>,\n InferOutput<TOptions[number]>,\n VariantIssue | InferVariantIssue<TOptions>\n> {\n /**\n * The schema type.\n */\n readonly type: 'variant';\n /**\n * The schema reference.\n */\n readonly reference: typeof variant | typeof variantAsync;\n /**\n * The expected property.\n */\n readonly expects: 'Object';\n /**\n * The discriminator key.\n */\n readonly key: TKey;\n /**\n * The variant options.\n */\n readonly options: TOptions;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a variant schema.\n *\n * @param key The discriminator key.\n * @param options The variant options.\n *\n * @returns A variant schema.\n */\nexport function variantAsync<\n const TKey extends string,\n const TOptions extends VariantOptionsAsync<TKey>,\n>(key: TKey, options: TOptions): VariantSchemaAsync<TKey, TOptions, undefined>;\n\n/**\n * Creates a variant schema.\n *\n * @param key The discriminator key.\n * @param options The variant options.\n * @param message The error message.\n *\n * @returns An variant schema.\n */\nexport function variantAsync<\n const TKey extends string,\n const TOptions extends VariantOptionsAsync<TKey>,\n const TMessage extends ErrorMessage<VariantIssue> | undefined,\n>(\n key: TKey,\n options: TOptions,\n message: TMessage\n): VariantSchemaAsync<TKey, TOptions, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function variantAsync(\n key: string,\n options: VariantOptionsAsync<string>,\n message?: ErrorMessage<VariantIssue>\n): VariantSchemaAsync<\n string,\n VariantOptionsAsync<string>,\n ErrorMessage<VariantIssue> | undefined\n> {\n return {\n kind: 'schema',\n type: 'variant',\n reference: variantAsync,\n expects: 'Object',\n async: true,\n key,\n options,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n async '~run'(dataset, config) {\n // Get input value from dataset\n const input = dataset.value;\n\n // If root type is valid, check nested types\n if (input && typeof input === 'object') {\n // Create output dataset variable\n let outputDataset:\n | OutputDataset<unknown, BaseIssue<unknown>>\n | undefined;\n\n // Create variables to store invalid discriminator information\n let maxDiscriminatorPriority = 0;\n let invalidDiscriminatorKey = this.key;\n let expectedDiscriminators: string[] = [];\n\n // Create recursive function to parse nested variant options\n const parseOptions = async (\n variant:\n | VariantOptionSchema<string>\n | VariantOptionSchemaAsync<string>,\n allKeys: Set<string>\n ) => {\n for (const schema of variant.options) {\n // If it is a variant schema, parse its options recursively\n if (schema.type === 'variant') {\n await parseOptions(schema, new Set(allKeys).add(schema.key));\n\n // Otherwise, check discriminators and parse object schema\n } else {\n // Create variables to store local discriminator information\n let keysAreValid = true;\n let currentPriority = 0;\n\n // Check if all discriminator keys are valid and collect\n // information about invalid discriminator keys if not\n for (const currentKey of allKeys) {\n // If any discriminator is invalid, mark keys as invalid\n const discriminatorSchema = schema.entries[currentKey];\n if (\n currentKey in input\n ? (\n await discriminatorSchema['~run'](\n // @ts-expect-error\n { typed: false, value: input[currentKey] },\n { abortEarly: true }\n )\n ).issues\n : discriminatorSchema.type !== 'exact_optional' &&\n discriminatorSchema.type !== 'optional' &&\n discriminatorSchema.type !== 'nullish'\n ) {\n keysAreValid = false;\n\n // If invalid discriminator key is not equal to current key\n // and if current key has a higher priority or same priority\n // but is the first one present in input, reset invalid\n // discriminator information\n if (\n invalidDiscriminatorKey !== currentKey &&\n (maxDiscriminatorPriority < currentPriority ||\n (maxDiscriminatorPriority === currentPriority &&\n currentKey in input &&\n !(invalidDiscriminatorKey in input)))\n ) {\n maxDiscriminatorPriority = currentPriority;\n invalidDiscriminatorKey = currentKey;\n expectedDiscriminators = [];\n }\n\n // If invalid discriminator key is equal to current key,\n // store its expected value\n if (invalidDiscriminatorKey === currentKey) {\n expectedDiscriminators.push(\n schema.entries[currentKey].expects\n );\n }\n\n // Break loop on first invalid discriminator key\n break;\n }\n\n // Increase priority for next discriminator key\n currentPriority++;\n }\n\n // If all discriminators are valid, parse input with schema of option\n if (keysAreValid) {\n const optionDataset = await schema['~run'](\n { value: input },\n config\n );\n\n // Store output dataset if necessary\n // Hint: Only the first untyped or typed dataset is returned, and\n // typed datasets take precedence over untyped ones.\n if (\n !outputDataset ||\n (!outputDataset.typed && optionDataset.typed)\n ) {\n outputDataset = optionDataset;\n }\n }\n }\n\n // If valid option is found, break loop\n // Hint: The `break` statement is intentionally placed at the end of\n // the loop to break any outer loops in case of recursive execution.\n if (outputDataset && !outputDataset.issues) {\n break;\n }\n }\n };\n\n // Parse input with nested variant options recursively\n await parseOptions(this, new Set([this.key]));\n\n // If any output dataset is available, return it\n if (outputDataset) {\n return outputDataset;\n }\n\n // Otherwise, add discriminator issue\n _addIssue(this, 'type', dataset, config, {\n // @ts-expect-error\n input: input[invalidDiscriminatorKey],\n expected: _joinExpects(expectedDiscriminators, '|'),\n path: [\n {\n type: 'object',\n origin: 'value',\n input: input as Record<string, unknown>,\n key: invalidDiscriminatorKey,\n // @ts-expect-error\n value: input[invalidDiscriminatorKey],\n },\n ],\n });\n\n // Otherwise, add variant issue\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n\n // Finally, return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n InferOutput<VariantOptionsAsync<string>[number]>,\n VariantIssue | BaseIssue<unknown>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _getStandardProps } from '../utils/index.js';\n\n/**\n * Void issue interface.\n */\nexport interface VoidIssue extends BaseIssue<unknown> {\n /**\n * The issue kind.\n */\n readonly kind: 'schema';\n /**\n * The issue type.\n */\n readonly type: 'void';\n /**\n * The expected property.\n */\n readonly expected: 'void';\n}\n\n/**\n * Void schema interface.\n */\nexport interface VoidSchema<\n TMessage extends ErrorMessage<VoidIssue> | undefined,\n> extends BaseSchema<void, void, VoidIssue> {\n /**\n * The schema type.\n */\n readonly type: 'void';\n /**\n * The schema reference.\n */\n readonly reference: typeof void_;\n /**\n * The expected property.\n */\n readonly expects: 'void';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a void schema.\n *\n * @returns A void schema.\n */\nexport function void_(): VoidSchema<undefined>;\n\n/**\n * Creates a void schema.\n *\n * @param message The error message.\n *\n * @returns A void schema.\n */\nexport function void_<\n const TMessage extends ErrorMessage<VoidIssue> | undefined,\n>(message: TMessage): VoidSchema<TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function void_(\n message?: ErrorMessage<VoidIssue>\n): VoidSchema<ErrorMessage<VoidIssue> | undefined> {\n return {\n kind: 'schema',\n type: 'void',\n reference: void_,\n expects: 'void',\n async: false,\n message,\n get '~standard'() {\n return _getStandardProps(this);\n },\n '~run'(dataset, config) {\n if (dataset.value === undefined) {\n // @ts-expect-error\n dataset.typed = true;\n } else {\n _addIssue(this, 'type', dataset, config);\n }\n // @ts-expect-error\n return dataset as OutputDataset<void, VoidIssue>;\n },\n };\n}\n\nexport { void_ as void };\n","import { pipe } from '../methods/pipe.js';\nimport { pipeAsync } from '../methods/pipeAsync.js';\nimport {\n array as _array,\n arrayAsync as _arrayAsync,\n bigint as _bigint,\n blob as _blob,\n boolean as _boolean,\n custom as _custom,\n customAsync as _customAsync,\n date as _date,\n enum_ as _enum,\n file as _file,\n function_ as _function,\n instance as _instance,\n intersect as _intersect,\n intersectAsync as _intersectAsync,\n literal as _literal,\n looseObject as _looseObject,\n looseObjectAsync as _looseObjectAsync,\n looseTuple as _looseTuple,\n looseTupleAsync as _looseTupleAsync,\n map as _map,\n mapAsync as _mapAsync,\n nan as _nan,\n never as _never,\n nonNullable as _nonNullable,\n nonNullableAsync as _nonNullableAsync,\n nonNullish as _nonNullish,\n nonNullishAsync as _nonNullishAsync,\n nonOptional as _nonOptional,\n nonOptionalAsync as _nonOptionalAsync,\n null_ as _null,\n number as _number,\n object as _object,\n objectAsync as _objectAsync,\n objectWithRest as _objectWithRest,\n objectWithRestAsync as _objectWithRestAsync,\n picklist as _picklist,\n promise as _promise,\n record as _record,\n recordAsync as _recordAsync,\n set as _set,\n setAsync as _setAsync,\n strictObject as _strictObject,\n strictObjectAsync as _strictObjectAsync,\n strictTuple as _strictTuple,\n strictTupleAsync as _strictTupleAsync,\n string as _string,\n symbol as _symbol,\n tuple as _tuple,\n tupleAsync as _tupleAsync,\n tupleWithRest as _tupleWithRest,\n tupleWithRestAsync as _tupleWithRestAsync,\n undefined_ as _undefined,\n union as _union,\n unionAsync as _unionAsync,\n variant as _variant,\n variantAsync as _variantAsync,\n void_ as _void,\n} from '../schemas/index.js';\n\ntype CompatActions = readonly unknown[];\ntype WithActions0<T> = T & ((actions: CompatActions) => any);\ntype WithActions1<T> = T & ((arg0: any, actions: CompatActions) => any);\ntype WithActions2<T> = T & ((arg0: any, arg1: any, actions: CompatActions) => any);\n\nfunction wrap0<TFactory extends (...args: any[]) => any>(\n factory: TFactory\n): WithActions0<TFactory> {\n return ((arg?: unknown) =>\n Array.isArray(arg) ? pipe(factory(), ...arg) : factory(arg as never)) as WithActions0<TFactory>;\n}\n\nfunction wrap1<TFactory extends (...args: any[]) => any>(\n factory: TFactory\n): WithActions1<TFactory> {\n return ((arg0: unknown, arg1?: unknown) =>\n Array.isArray(arg1)\n ? pipe(factory(arg0), ...arg1)\n : factory(arg0, arg1 as never)) as WithActions1<TFactory>;\n}\n\nfunction wrap2<TFactory extends (...args: any[]) => any>(\n factory: TFactory\n): WithActions2<TFactory> {\n return ((arg0: unknown, arg1: unknown, arg2?: unknown) =>\n Array.isArray(arg2)\n ? pipe(factory(arg0, arg1), ...arg2)\n : factory(arg0, arg1, arg2 as never)) as WithActions2<TFactory>;\n}\n\nfunction wrapAsync1<TFactory extends (...args: any[]) => any>(\n factory: TFactory\n): WithActions1<TFactory> {\n return ((arg0: unknown, arg1?: unknown) =>\n Array.isArray(arg1)\n ? pipeAsync(factory(arg0), ...arg1)\n : factory(arg0, arg1 as never)) as WithActions1<TFactory>;\n}\n\nfunction wrapAsync2<TFactory extends (...args: any[]) => any>(\n factory: TFactory\n): WithActions2<TFactory> {\n return ((arg0: unknown, arg1: unknown, arg2?: unknown) =>\n Array.isArray(arg2)\n ? pipeAsync(factory(arg0, arg1), ...arg2)\n : factory(arg0, arg1, arg2 as never)) as WithActions2<TFactory>;\n}\n\nexport const string = wrap0(_string);\nexport const number = wrap0(_number);\nexport const boolean = wrap0(_boolean);\nexport const bigint = wrap0(_bigint);\nexport const blob = wrap0(_blob);\nexport const date = wrap0(_date);\nexport const file = wrap0(_file);\nexport const function_ = wrap0(_function);\nexport const nan = wrap0(_nan);\nexport const never = wrap0(_never);\nexport const null_ = wrap0(_null);\nexport const promise = wrap0(_promise);\nexport const symbol = wrap0(_symbol);\nexport const undefined_ = wrap0(_undefined);\nexport const void_ = wrap0(_void);\n\nexport const array = wrap1(_array);\nexport const custom = wrap1(_custom);\nexport const enum_ = wrap1(_enum);\nexport const instance = wrap1(_instance);\nexport const intersect = wrap1(_intersect);\nexport const literal = wrap1(_literal);\nexport const looseObject = wrap1(_looseObject);\nexport const looseTuple = wrap1(_looseTuple);\nexport const nonNullable = wrap1(_nonNullable);\nexport const nonNullish = wrap1(_nonNullish);\nexport const nonOptional = wrap1(_nonOptional);\nexport const object = wrap1(_object);\nexport const picklist = wrap1(_picklist);\nexport const set = wrap1(_set);\nexport const strictObject = wrap1(_strictObject);\nexport const strictTuple = wrap1(_strictTuple);\nexport const tuple = wrap1(_tuple);\nexport const union = wrap1(_union);\n\nexport const map = wrap2(_map);\nexport const objectWithRest = wrap2(_objectWithRest);\nexport const record = wrap2(_record);\nexport const tupleWithRest = wrap2(_tupleWithRest);\nexport const variant = wrap2(_variant);\n\nexport const arrayAsync = wrapAsync1(_arrayAsync);\nexport const customAsync = wrapAsync1(_customAsync);\nexport const intersectAsync = wrapAsync1(_intersectAsync);\nexport const looseObjectAsync = wrapAsync1(_looseObjectAsync);\nexport const looseTupleAsync = wrapAsync1(_looseTupleAsync);\nexport const nonNullableAsync = wrapAsync1(_nonNullableAsync);\nexport const nonNullishAsync = wrapAsync1(_nonNullishAsync);\nexport const nonOptionalAsync = wrapAsync1(_nonOptionalAsync);\nexport const objectAsync = wrapAsync1(_objectAsync);\nexport const setAsync = wrapAsync1(_setAsync);\nexport const strictObjectAsync = wrapAsync1(_strictObjectAsync);\nexport const strictTupleAsync = wrapAsync1(_strictTupleAsync);\nexport const tupleAsync = wrapAsync1(_tupleAsync);\nexport const unionAsync = wrapAsync1(_unionAsync);\n\nexport const mapAsync = wrapAsync2(_mapAsync);\nexport const objectWithRestAsync = wrapAsync2(_objectWithRestAsync);\nexport const recordAsync = wrapAsync2(_recordAsync);\nexport const tupleWithRestAsync = wrapAsync2(_tupleWithRestAsync);\nexport const variantAsync = wrapAsync2(_variantAsync);\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n} from '../types/index.js';\n\nexport type JsonSchema = Record<string, unknown>;\n\nexport interface ToJsonSchemaOptions {\n readonly strict?: boolean | undefined;\n}\n\nfunction fail(message: string, options?: ToJsonSchemaOptions): never | JsonSchema {\n if (options?.strict) {\n throw new Error(message);\n }\n return {};\n}\n\nfunction cloneSchema(schema: JsonSchema): JsonSchema {\n return JSON.parse(JSON.stringify(schema)) as JsonSchema;\n}\n\nfunction applyPipeItem(\n schema: JsonSchema,\n item: { kind?: string; type?: string; requirement?: unknown; options?: unknown[] },\n options?: ToJsonSchemaOptions\n): JsonSchema {\n if (item.kind === 'schema') {\n return toJsonSchema(item as AnySchema, options);\n }\n\n if (item.kind !== 'validation') {\n return schema;\n }\n\n switch (item.type) {\n case 'min_length':\n schema.minLength = item.requirement;\n return schema;\n case 'max_length':\n schema.maxLength = item.requirement;\n return schema;\n case 'email':\n schema.format = 'email';\n return schema;\n case 'min_value':\n schema.minimum = item.requirement;\n return schema;\n case 'max_value':\n schema.maximum = item.requirement;\n return schema;\n case 'integer':\n schema.type = 'integer';\n return schema;\n case 'check':\n case 'raw_check':\n return fail(\n `Cannot express validation \"${item.type}\" as JSON Schema without a custom keyword.`,\n options\n );\n default:\n return schema;\n }\n}\n\ntype AnySchema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | { schema: BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>> };\n\nfunction unwrapSchema(input: AnySchema) {\n return 'schema' in input ? input.schema : input;\n}\n\nexport function toJsonSchema(\n input: AnySchema,\n options?: ToJsonSchemaOptions\n): JsonSchema {\n const schema = unwrapSchema(input) as Record<string, any>;\n\n if ('pipe' in schema && Array.isArray(schema.pipe)) {\n const [root, ...rest] = schema.pipe as Array<Record<string, any>>;\n let jsonSchema = toJsonSchema(root as AnySchema, options);\n for (const item of rest) {\n jsonSchema = applyPipeItem(jsonSchema, item, options);\n }\n return jsonSchema;\n }\n\n switch (schema.type) {\n case 'string':\n return { type: 'string' };\n case 'number':\n return { type: 'number' };\n case 'boolean':\n return { type: 'boolean' };\n case 'bigint':\n return { type: 'integer' };\n case 'null':\n return { type: 'null' };\n case 'literal':\n return { const: schema.literal };\n case 'picklist':\n return { enum: [...schema.options] };\n case 'enum':\n return { enum: Object.values(schema.enum) };\n case 'array':\n return {\n type: 'array',\n items: toJsonSchema(schema.item as AnySchema, options),\n };\n case 'object': {\n const properties: Record<string, unknown> = {};\n const required: string[] = [];\n\n for (const [key, value] of Object.entries(schema.entries)) {\n properties[key] = toJsonSchema(value as AnySchema, options);\n if (!['optional', 'exact_optional', 'nullish'].includes((value as Record<string, any>).type)) {\n required.push(key);\n }\n }\n\n const jsonSchema: JsonSchema = {\n type: 'object',\n properties,\n additionalProperties: false,\n };\n\n if (required.length) {\n jsonSchema.required = required;\n }\n\n return jsonSchema;\n }\n case 'loose_object': {\n const jsonSchema = toJsonSchema({ ...schema, type: 'object' } as AnySchema, options);\n delete jsonSchema.additionalProperties;\n return jsonSchema;\n }\n case 'strict_object': {\n const jsonSchema = toJsonSchema({ ...schema, type: 'object' } as AnySchema, options);\n jsonSchema.additionalProperties = false;\n return jsonSchema;\n }\n case 'optional':\n case 'undefinedable':\n return toJsonSchema(schema.wrapped as AnySchema, options);\n case 'nullable': {\n const wrapped = cloneSchema(toJsonSchema(schema.wrapped as AnySchema, options));\n return { anyOf: [wrapped, { type: 'null' }] };\n }\n case 'nullish': {\n const wrapped = cloneSchema(toJsonSchema(schema.wrapped as AnySchema, options));\n return { anyOf: [wrapped, { type: 'null' }] };\n }\n case 'non_nullable':\n case 'non_nullish':\n case 'non_optional':\n return toJsonSchema(schema.wrapped as AnySchema, options);\n case 'union':\n return {\n anyOf: schema.options.map((option: AnySchema) => toJsonSchema(option, options)),\n };\n default:\n return fail(`JSON Schema conversion is not implemented for schema type \"${schema.type}\".`, options);\n }\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n} from '../types/index.js';\nimport { ValidationError } from './ValidationError.js';\nimport { toJsonSchema, type JsonSchema, type ToJsonSchemaOptions } from './jsonSchema.js';\n\nexport interface AjvIssue {\n readonly instancePath: string;\n readonly keyword: string;\n readonly message: string;\n readonly params: Record<string, unknown>;\n}\n\nexport interface AjvSafeParseSuccess<TData> {\n readonly success: true;\n readonly data: TData;\n readonly schema: JsonSchema;\n}\n\nexport interface AjvSafeParseFailure {\n readonly success: false;\n readonly error: ValidationError<any>;\n readonly issues: AjvIssue[];\n readonly schema: JsonSchema;\n}\n\ntype AjvSafeParseResult<TData> = AjvSafeParseSuccess<TData> | AjvSafeParseFailure;\n\nfunction pointer(path: Array<string | number>) {\n return path.length ? `/${path.join('/')}` : '';\n}\n\nfunction emailLike(value: string) {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/u.test(value);\n}\n\nfunction validateJsonSchema(\n schema: JsonSchema,\n input: unknown,\n path: Array<string | number> = []\n): AjvIssue[] {\n const issues: AjvIssue[] = [];\n\n if (Array.isArray(schema.anyOf)) {\n const matches = schema.anyOf.some((option) => validateJsonSchema(option as JsonSchema, input, path).length === 0);\n if (!matches) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'anyOf',\n message: 'must match at least one allowed schema',\n params: {},\n });\n }\n return issues;\n }\n\n if ('const' in schema && input !== schema.const) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'const',\n message: 'must be equal to the allowed constant',\n params: { allowedValue: schema.const },\n });\n return issues;\n }\n\n if (Array.isArray(schema.enum) && !schema.enum.includes(input)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'enum',\n message: 'must be equal to one of the allowed values',\n params: { allowedValues: schema.enum },\n });\n return issues;\n }\n\n switch (schema.type) {\n case 'string':\n if (typeof input !== 'string') {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: 'must be string',\n params: { type: 'string' },\n });\n return issues;\n }\n if (typeof schema.minLength === 'number' && input.length < schema.minLength) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'minLength',\n message: `must NOT have fewer than ${schema.minLength} characters`,\n params: { limit: schema.minLength },\n });\n }\n if (typeof schema.maxLength === 'number' && input.length > schema.maxLength) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'maxLength',\n message: `must NOT have more than ${schema.maxLength} characters`,\n params: { limit: schema.maxLength },\n });\n }\n if (schema.format === 'email' && !emailLike(input)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'format',\n message: 'must match format \"email\"',\n params: { format: 'email' },\n });\n }\n return issues;\n case 'number':\n case 'integer':\n if (typeof input !== 'number' || Number.isNaN(input)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: `must be ${schema.type}`,\n params: { type: schema.type },\n });\n return issues;\n }\n if (schema.type === 'integer' && !Number.isInteger(input)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: 'must be integer',\n params: { type: 'integer' },\n });\n }\n if (typeof schema.minimum === 'number' && input < schema.minimum) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'minimum',\n message: `must be >= ${schema.minimum}`,\n params: { limit: schema.minimum },\n });\n }\n if (typeof schema.maximum === 'number' && input > schema.maximum) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'maximum',\n message: `must be <= ${schema.maximum}`,\n params: { limit: schema.maximum },\n });\n }\n return issues;\n case 'boolean':\n if (typeof input !== 'boolean') {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: 'must be boolean',\n params: { type: 'boolean' },\n });\n }\n return issues;\n case 'null':\n if (input !== null) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: 'must be null',\n params: { type: 'null' },\n });\n }\n return issues;\n case 'array':\n if (!Array.isArray(input)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: 'must be array',\n params: { type: 'array' },\n });\n return issues;\n }\n if (schema.items) {\n input.forEach((item, index) => {\n issues.push(...validateJsonSchema(schema.items as JsonSchema, item, [...path, index]));\n });\n }\n return issues;\n case 'object': {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'type',\n message: 'must be object',\n params: { type: 'object' },\n });\n return issues;\n }\n\n const objectInput = input as Record<string, unknown>;\n const properties = (schema.properties ?? {}) as Record<string, JsonSchema>;\n const required = Array.isArray(schema.required) ? (schema.required as string[]) : [];\n\n for (const key of required) {\n if (!(key in objectInput)) {\n issues.push({\n instancePath: pointer(path),\n keyword: 'required',\n message: `must have required property '${key}'`,\n params: { missingProperty: key },\n });\n }\n }\n\n for (const [key, childSchema] of Object.entries(properties)) {\n if (key in objectInput) {\n issues.push(...validateJsonSchema(childSchema, objectInput[key], [...path, key]));\n }\n }\n\n if (schema.additionalProperties === false) {\n for (const key of Object.keys(objectInput)) {\n if (!(key in properties)) {\n issues.push({\n instancePath: pointer([...path, key]),\n keyword: 'additionalProperties',\n message: 'must NOT have additional properties',\n params: { additionalProperty: key },\n });\n }\n }\n }\n\n return issues;\n }\n default:\n return issues;\n }\n}\n\nfunction toValidationError(issues: AjvIssue[]): ValidationError<any> {\n const normalized = issues.map((issue) => ({\n kind: 'validation' as const,\n type: `ajv_${issue.keyword}`,\n input: issue.instancePath,\n expected: null,\n received: issue.instancePath || '<root>',\n message: issue.message,\n requirement: issue.params,\n path: issue.instancePath\n ? issue.instancePath\n .split('/')\n .filter(Boolean)\n .map((segment) => ({\n type: 'unknown' as const,\n origin: 'value' as const,\n input: undefined,\n key: /^\\d+$/.test(segment) ? Number(segment) : segment,\n value: undefined,\n }))\n : undefined,\n issues: undefined,\n })) as [any, ...any[]];\n\n return new ValidationError(normalized);\n}\n\nexport async function ajvSafeParse<TData = unknown>(\n schema:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n | { schema: BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>> },\n input: unknown,\n options?: ToJsonSchemaOptions\n): Promise<AjvSafeParseResult<TData>> {\n const jsonSchema = toJsonSchema(schema as any, options);\n const issues = validateJsonSchema(jsonSchema, input);\n\n if (issues.length === 0) {\n return { success: true, data: input as TData, schema: jsonSchema };\n }\n\n return {\n success: false,\n issues,\n error: toValidationError(issues),\n schema: jsonSchema,\n };\n}\n","import {\n array,\n boolean,\n check,\n email,\n integer,\n intersect,\n literal,\n maxLength,\n maxValue,\n minLength,\n minValue,\n nonNullable,\n null_,\n nullable,\n nullish,\n number,\n object,\n optional,\n parse,\n parseAsync,\n pipe,\n safeParse,\n safeParseAsync,\n string,\n toLowerCase,\n transform,\n trim,\n union,\n} from '../index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n Config,\n InferIssue,\n InferOutput,\n} from '../types/index.js';\nimport { ValidationError } from './ValidationError.js';\nimport { ajvSafeParse } from './ajv.js';\nimport { toJsonSchema } from './jsonSchema.js';\n\ntype AnySchema =\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>;\n\ntype SafeParseLike<TSchema extends AnySchema> =\n | { readonly success: true; readonly data: InferOutput<TSchema> }\n | { readonly success: false; readonly error: ValidationError<TSchema> };\n\nfunction applyPipe(schema: AnySchema, ...items: unknown[]): AnySchema {\n return pipe(\n schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ...(items as never[])\n ) as unknown as AnySchema;\n}\n\nfunction toValidationError<TSchema extends AnySchema>(\n result: ReturnType<typeof safeParse> | Awaited<ReturnType<typeof safeParseAsync>>\n): ValidationError<TSchema> {\n return new ValidationError(result.issues as [InferIssue<TSchema>, ...InferIssue<TSchema>[]]);\n}\n\nexport class ChainSchema<TSchema extends AnySchema> {\n public readonly schema: TSchema;\n\n constructor(schema: TSchema) {\n this.schema = schema;\n }\n\n unwrap(): TSchema {\n return this.schema;\n }\n\n parse(input: unknown, config?: Config<InferIssue<TSchema>>): InferOutput<TSchema> {\n return parse(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, input, config as any) as InferOutput<TSchema>;\n }\n\n async parseAsync(input: unknown, config?: Config<InferIssue<TSchema>>): Promise<InferOutput<TSchema>> {\n if (this.schema.async) {\n return parseAsync(this.schema as BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>, input, config as any) as Promise<InferOutput<TSchema>>;\n }\n return this.parse(input, config);\n }\n\n safeParse(input: unknown, config?: Config<InferIssue<TSchema>>): SafeParseLike<TSchema> {\n const result = safeParse(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, input, config as any);\n return result.success\n ? { success: true, data: result.output as InferOutput<TSchema> }\n : { success: false, error: toValidationError<TSchema>(result) };\n }\n\n async safeParseAsync(input: unknown, config?: Config<InferIssue<TSchema>>): Promise<SafeParseLike<TSchema>> {\n const result = this.schema.async\n ? await safeParseAsync(this.schema as BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>, input, config as any)\n : safeParse(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, input, config as any);\n return result.success\n ? { success: true, data: result.output as InferOutput<TSchema> }\n : { success: false, error: toValidationError<TSchema>(result) };\n }\n\n optional(defaultValue?: unknown): ChainSchema<any> {\n return wrap(optional(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, defaultValue as never));\n }\n\n nullable(defaultValue?: unknown): ChainSchema<any> {\n return wrap(nullable(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, defaultValue as never));\n }\n\n nullish(defaultValue?: unknown): ChainSchema<any> {\n return wrap(nullish(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, defaultValue as never));\n }\n\n array(messageOrActions?: unknown): ChainSchema<any> {\n return wrap(array(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, messageOrActions as never));\n }\n\n or(other: ChainSchema<AnySchema> | AnySchema): ChainSchema<any> {\n return wrap(union([this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, unwrap(other) as BaseSchema<unknown, unknown, BaseIssue<unknown>>]));\n }\n\n and(other: ChainSchema<AnySchema> | AnySchema): ChainSchema<any> {\n return wrap(intersect([this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, unwrap(other) as BaseSchema<unknown, unknown, BaseIssue<unknown>>]));\n }\n\n refine(requirement: (input: InferOutput<TSchema>) => boolean, message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, check(requirement as (input: unknown) => boolean, message)));\n }\n\n transform<TOutput>(operation: (input: InferOutput<TSchema>) => TOutput): ChainSchema<any> {\n return wrap(applyPipe(this.schema, transform(operation as (input: unknown) => TOutput)));\n }\n\n pipe(...items: unknown[]): ChainSchema<any> {\n return wrap(applyPipe(this.schema, ...items));\n }\n\n nonNullable(message?: string): ChainSchema<any> {\n return wrap(nonNullable(this.schema as BaseSchema<unknown, unknown, BaseIssue<unknown>>, message));\n }\n\n toJSONSchema() {\n return toJsonSchema(this.schema);\n }\n\n ajvSafeParse(input: unknown) {\n return ajvSafeParse(this.schema, input);\n }\n}\n\nexport class StringChainSchema<TSchema extends AnySchema> extends ChainSchema<TSchema> {\n min(length: number, message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, minLength(length, message) as any));\n }\n\n max(length: number, message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, maxLength(length, message) as any));\n }\n\n email(message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, email(message) as any));\n }\n\n trim(): ChainSchema<any> {\n return wrap(applyPipe(this.schema, trim() as any));\n }\n\n toLowerCase(): ChainSchema<any> {\n return wrap(applyPipe(this.schema, toLowerCase() as any));\n }\n}\n\nexport class NumberChainSchema<TSchema extends AnySchema> extends ChainSchema<TSchema> {\n min(value: number, message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, minValue(value, message) as any));\n }\n\n max(value: number, message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, maxValue(value, message) as any));\n }\n\n int(message?: string): ChainSchema<any> {\n return wrap(applyPipe(this.schema, integer(message) as any));\n }\n}\n\nfunction unwrap(input: ChainSchema<AnySchema> | AnySchema): AnySchema {\n return input instanceof ChainSchema ? input.schema : input;\n}\n\nfunction wrap<TSchema extends AnySchema>(schema: TSchema): ChainSchema<any> {\n switch ((schema as unknown as Record<string, unknown>).type) {\n case 'string':\n return new StringChainSchema(schema);\n case 'number':\n return new NumberChainSchema(schema);\n default:\n return new ChainSchema(schema);\n }\n}\n\nexport const z = {\n string: () => new StringChainSchema(string()),\n number: () => new NumberChainSchema(number()),\n boolean: () => new ChainSchema(boolean()),\n literal: <TLiteral extends string | number | boolean | null>(value: TLiteral) => new ChainSchema(literal(value as never)),\n object: <TEntries extends Record<string, AnySchema | ChainSchema<AnySchema>>>(entries: TEntries) =>\n new ChainSchema(\n object(\n Object.fromEntries(\n Object.entries(entries).map(([key, value]) => [key, unwrap(value as AnySchema | ChainSchema<AnySchema>)])\n ) as Record<string, BaseSchema<unknown, unknown, BaseIssue<unknown>>>\n )\n ),\n array: (item: ChainSchema<AnySchema> | AnySchema) => new ChainSchema(array(unwrap(item) as BaseSchema<unknown, unknown, BaseIssue<unknown>>)),\n union: (options: Array<ChainSchema<AnySchema> | AnySchema>) =>\n new ChainSchema(union(options.map((option) => unwrap(option) as BaseSchema<unknown, unknown, BaseIssue<unknown>>))),\n nullable: (input: ChainSchema<AnySchema> | AnySchema) =>\n wrap(nullable(unwrap(input) as BaseSchema<unknown, unknown, BaseIssue<unknown>>)),\n optional: (input: ChainSchema<AnySchema> | AnySchema) =>\n wrap(optional(unwrap(input) as BaseSchema<unknown, unknown, BaseIssue<unknown>>)),\n nullish: (input: ChainSchema<AnySchema> | AnySchema) =>\n wrap(nullish(unwrap(input) as BaseSchema<unknown, unknown, BaseIssue<unknown>>)),\n from: <TSchema extends AnySchema>(schema: TSchema) => wrap(schema),\n};\n\nexport function chain<TSchema extends AnySchema>(schema: TSchema): ChainSchema<any> {\n return wrap(schema);\n}\n","import type {\n LooseTupleIssue,\n LooseTupleSchema,\n StrictTupleIssue,\n StrictTupleSchema,\n TupleIssue,\n TupleSchema,\n TupleWithRestIssue,\n TupleWithRestSchema,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseTransformation,\n ErrorMessage,\n InferInput,\n TupleItems,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined>\n | StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined>\n | TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined>\n | TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >;\n\n/**\n * Args action type.\n */\nexport interface ArgsAction<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends Schema,\n> extends BaseTransformation<\n TInput,\n (...args: InferInput<TSchema>) => ReturnType<TInput>,\n never\n> {\n /**\n * The action type.\n */\n readonly type: 'args';\n /**\n * The action reference.\n */\n readonly reference: typeof args;\n /**\n * The arguments schema.\n */\n readonly schema: TSchema;\n}\n\n/**\n * Creates a function arguments transformation action.\n *\n * @param schema The arguments schema.\n *\n * @returns An args action.\n */\nexport function args<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends Schema,\n>(schema: TSchema): ArgsAction<TInput, TSchema>;\n\n// @__NO_SIDE_EFFECTS__\nexport function args(\n schema: Schema\n): ArgsAction<(...args: unknown[]) => unknown, Schema> {\n return {\n kind: 'transformation',\n type: 'args',\n reference: args,\n async: false,\n schema,\n '~run'(dataset, config) {\n const func = dataset.value;\n dataset.value = (...args_) => {\n const argsDataset = this.schema['~run']({ value: args_ }, config);\n if (argsDataset.issues) {\n throw new ValidationError(argsDataset.issues);\n }\n return func(...argsDataset.value);\n };\n return dataset;\n },\n };\n}\n","import type {\n LooseTupleIssue,\n LooseTupleSchema,\n LooseTupleSchemaAsync,\n StrictTupleIssue,\n StrictTupleSchema,\n StrictTupleSchemaAsync,\n TupleIssue,\n TupleSchema,\n TupleSchemaAsync,\n TupleWithRestIssue,\n TupleWithRestSchema,\n TupleWithRestSchemaAsync,\n} from '../schemas/index.js';\nimport type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n BaseTransformation,\n ErrorMessage,\n InferInput,\n SuccessDataset,\n TupleItems,\n TupleItemsAsync,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\n/**\n * Schema type.\n */\ntype Schema =\n | LooseTupleSchema<TupleItems, ErrorMessage<LooseTupleIssue> | undefined>\n | LooseTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<LooseTupleIssue> | undefined\n >\n | StrictTupleSchema<TupleItems, ErrorMessage<StrictTupleIssue> | undefined>\n | StrictTupleSchemaAsync<\n TupleItemsAsync,\n ErrorMessage<StrictTupleIssue> | undefined\n >\n | TupleSchema<TupleItems, ErrorMessage<TupleIssue> | undefined>\n | TupleSchemaAsync<TupleItemsAsync, ErrorMessage<TupleIssue> | undefined>\n | TupleWithRestSchema<\n TupleItems,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >\n | TupleWithRestSchemaAsync<\n TupleItemsAsync,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n ErrorMessage<TupleWithRestIssue> | undefined\n >;\n\n/**\n * Args action async type.\n */\nexport interface ArgsActionAsync<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends Schema,\n> extends BaseTransformation<\n TInput,\n (...args: InferInput<TSchema>) => Promise<Awaited<ReturnType<TInput>>>,\n never\n> {\n /**\n * The action type.\n */\n readonly type: 'args';\n /**\n * The action reference.\n */\n readonly reference: typeof argsAsync;\n /**\n * The arguments schema.\n */\n readonly schema: TSchema;\n}\n\n/**\n * Creates a function arguments transformation action.\n *\n * @param schema The arguments schema.\n *\n * @returns An args action.\n */\nexport function argsAsync<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends Schema,\n>(schema: TSchema): ArgsActionAsync<TInput, TSchema>;\n\n// @__NO_SIDE_EFFECTS__\nexport function argsAsync(\n schema: Schema\n): ArgsActionAsync<(...args: unknown[]) => unknown, Schema> {\n return {\n kind: 'transformation',\n type: 'args',\n reference: argsAsync,\n async: false,\n schema,\n '~run'(dataset, config) {\n const func = dataset.value;\n dataset.value = async (...args) => {\n const argsDataset = await schema['~run']({ value: args }, config);\n if (argsDataset.issues) {\n throw new ValidationError(argsDataset.issues);\n }\n return func(...argsDataset.value);\n };\n return dataset as SuccessDataset<\n (...args: unknown[]) => Promise<unknown>\n >;\n },\n };\n}\n","import type {\n BaseTransformationAsync,\n SuccessDataset,\n} from '../types/index.js';\n\n/**\n * Await action async interface.\n */\nexport interface AwaitActionAsync<TInput extends Promise<unknown>>\n extends BaseTransformationAsync<TInput, Awaited<TInput>, never> {\n /**\n * The action type.\n */\n readonly type: 'await';\n /**\n * The action reference.\n */\n readonly reference: typeof awaitAsync;\n}\n\n/**\n * Creates an await transformation action.\n *\n * @returns An await action.\n */\n// @__NO_SIDE_EFFECTS__\nexport function awaitAsync<\n TInput extends Promise<unknown>,\n>(): AwaitActionAsync<TInput> {\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 as SuccessDataset<Awaited<TInput>>;\n },\n };\n}\n","/**\n * [Base64](https://en.wikipedia.org/wiki/Base64) regex.\n */\nexport const BASE64_REGEX: RegExp =\n /^(?:[\\da-z+/]{4})*(?:[\\da-z+/]{2}==|[\\da-z+/]{3}=)?$/iu;\n\n/**\n * [BIC](https://en.wikipedia.org/wiki/ISO_9362) regex.\n */\nexport const BIC_REGEX: RegExp = /^[A-Z]{6}(?!00)[\\dA-Z]{2}(?:[\\dA-Z]{3})?$/u;\n\n/**\n * [Cuid2](https://github.com/paralleldrive/cuid2) regex.\n */\nexport const CUID2_REGEX: RegExp = /^[a-z][\\da-z]*$/u;\n\n/**\n * [Decimal](https://en.wikipedia.org/wiki/Decimal) regex.\n */\n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive\nexport const DECIMAL_REGEX: RegExp = /^[+-]?(?:\\d*\\.)?\\d+$/u;\n\n/**\n * [Digits](https://en.wikipedia.org/wiki/Numerical_digit) regex.\n */\nexport const DIGITS_REGEX: RegExp = /^\\d+$/u;\n\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 */\nexport const DOMAIN_REGEX: RegExp =\n /^(?=.{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/**\n * [Email address](https://en.wikipedia.org/wiki/Email_address) regex.\n */\nexport const EMAIL_REGEX: RegExp =\n /^[\\w+-]+(?:\\.[\\w+-]+)*@[\\da-z]+(?:[.-][\\da-z]+)*\\.[a-z]{2,}$/iu;\n\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 */\nexport const EMOJI_REGEX: RegExp =\n // eslint-disable-next-line redos-detector/no-unsafe-regex -- 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_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/**\n * [Hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) regex.\n *\n * Hint: We decided against the `i` flag for better JSON Schema compatibility.\n */\nexport const HEXADECIMAL_REGEX: RegExp = /^(?:0[hx])?[\\da-fA-F]+$/u;\n\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 */\nexport const HEX_COLOR_REGEX: RegExp =\n /^#(?:[\\da-fA-F]{3,4}|[\\da-fA-F]{6}|[\\da-fA-F]{8})$/u;\n\n/**\n * [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) regex.\n */\nexport const IMEI_REGEX: RegExp = /^\\d{15}$|^\\d{2}-\\d{6}-\\d{6}-\\d$/u;\n\n/**\n * [IPv4](https://en.wikipedia.org/wiki/IPv4) regex.\n */\nexport const IPV4_REGEX: RegExp =\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\n/**\n * [IPv6](https://en.wikipedia.org/wiki/IPv6) regex.\n */\nexport const IPV6_REGEX: RegExp =\n /^(?:(?:[\\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/**\n * [IP](https://en.wikipedia.org/wiki/IP_address) regex.\n */\nexport const IP_REGEX: RegExp =\n /^(?:(?:[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/**\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date regex.\n */\nexport const ISO_DATE_REGEX: RegExp =\n /^\\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\\d|0[1-9]|3[01])$/u;\n\n/**\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time regex.\n */\nexport const ISO_DATE_TIME_REGEX: RegExp =\n /^\\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/**\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time regex.\n */\nexport const ISO_TIME_REGEX: RegExp = /^(?:0\\d|1\\d|2[0-3]):[0-5]\\d$/u;\n\n/**\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time with seconds regex.\n */\nexport const ISO_TIME_SECOND_REGEX: RegExp =\n /^(?:0\\d|1\\d|2[0-3])(?::[0-5]\\d){2}$/u;\n\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 */\nexport const ISO_TIMESTAMP_REGEX: RegExp =\n /^\\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/**\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) week regex.\n */\nexport const ISO_WEEK_REGEX: RegExp = /^\\d{4}-W(?:0[1-9]|[1-4]\\d|5[0-3])$/u;\n\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 */\nexport const JWS_COMPACT_REGEX: RegExp =\n /^(?:[\\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/**\n * [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code) regex.\n */\nexport const ISRC_REGEX: RegExp =\n /^(?:[A-Z]{2}[A-Z\\d]{3}\\d{7}|[A-Z]{2}-[A-Z\\d]{3}-\\d{2}-\\d{5})$/u;\n\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 */\nexport const MAC48_REGEX: RegExp =\n /^(?:[\\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/**\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 */\nexport const MAC64_REGEX: RegExp =\n /^(?:[\\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/**\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 */\nexport const MAC_REGEX: RegExp =\n /^(?:[\\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/**\n * [Nano ID](https://github.com/ai/nanoid) regex.\n */\nexport const NANO_ID_REGEX: RegExp = /^[\\w-]+$/u;\n\n/**\n * [Octal](https://en.wikipedia.org/wiki/Octal) regex.\n */\nexport const OCTAL_REGEX: RegExp = /^(?:0o)?[0-7]+$/u;\n\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 */\nexport const RFC_EMAIL_REGEX: RegExp =\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\n/**\n * [Slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) regex.\n */\nexport const SLUG_REGEX: RegExp = /^[\\da-z]+(?:[-_][\\da-z]+)*$/u;\n\n/**\n * [ULID](https://github.com/ulid/spec) regex.\n *\n * Hint: We decided against the `i` flag for better JSON Schema compatibility.\n */\nexport const ULID_REGEX: RegExp = /^[\\da-hjkmnp-tv-zA-HJKMNP-TV-Z]{26}$/u;\n\n/**\n * [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) regex.\n */\nexport const UUID_REGEX: RegExp =\n /^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$/iu;\n","import { BASE64_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Base64 issue interface.\n */\nexport interface Base64Issue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'base64';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The Base64 regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Base64 action interface.\n */\nexport interface Base64Action<\n TInput extends string,\n TMessage extends ErrorMessage<Base64Issue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, Base64Issue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'base64';\n /**\n * The action reference.\n */\n readonly reference: typeof base64;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The Base64 regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [Base64](https://en.wikipedia.org/wiki/Base64) validation action.\n *\n * @returns A Base64 action.\n */\nexport function base64<TInput extends string>(): Base64Action<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [Base64](https://en.wikipedia.org/wiki/Base64) validation action.\n *\n * @param message The error message.\n *\n * @returns A Base64 action.\n */\nexport function base64<\n TInput extends string,\n const TMessage extends ErrorMessage<Base64Issue<TInput>> | undefined,\n>(message: TMessage): Base64Action<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function base64(\n message?: ErrorMessage<Base64Issue<string>>\n): Base64Action<string, ErrorMessage<Base64Issue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'base64',\n reference: base64,\n async: false,\n expects: null,\n requirement: BASE64_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'Base64', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { BIC_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * BIC issue interface.\n */\nexport interface BicIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'bic';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The BIC regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * BIC action interface.\n */\nexport interface BicAction<\n TInput extends string,\n TMessage extends ErrorMessage<BicIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, BicIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'bic';\n /**\n * The action reference.\n */\n readonly reference: typeof bic;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The BIC regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [BIC](https://en.wikipedia.org/wiki/ISO_9362) validation action.\n *\n * @returns A BIC action.\n */\nexport function bic<TInput extends string>(): BicAction<TInput, undefined>;\n\n/**\n * Creates a [BIC](https://en.wikipedia.org/wiki/ISO_9362) validation action.\n *\n * @param message The error message.\n *\n * @returns A BIC action.\n */\nexport function bic<\n TInput extends string,\n const TMessage extends ErrorMessage<BicIssue<TInput>> | undefined,\n>(message: TMessage): BicAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function bic(\n message?: ErrorMessage<BicIssue<string>>\n): BicAction<string, ErrorMessage<BicIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'bic',\n reference: bic,\n async: false,\n expects: null,\n requirement: BIC_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'BIC', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\n\n/**\n * Brand symbol.\n */\nexport declare const BrandSymbol: unique symbol;\n\n/**\n * Brand name type.\n */\nexport type BrandName = string | number | symbol;\n\n/**\n * Brand interface.\n */\nexport interface Brand<TName extends BrandName> {\n [BrandSymbol]: { [TValue in TName]: TValue };\n}\n\n/**\n * Brand action interface.\n */\nexport interface BrandAction<TInput, TName extends BrandName>\n extends BaseTransformation<TInput, TInput & Brand<TName>, never> {\n /**\n * The action type.\n */\n readonly type: 'brand';\n /**\n * The action reference.\n */\n readonly reference: typeof brand;\n /**\n * The brand name.\n */\n readonly name: TName;\n}\n\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__\nexport function brand<TInput, TName extends BrandName>(\n name: TName\n): BrandAction<TInput, TName> {\n return {\n kind: 'transformation',\n type: 'brand',\n reference: brand,\n async: false,\n name,\n '~run'(dataset) {\n return dataset as SuccessDataset<TInput & Brand<TName>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getByteCount } from '../utils/index.js';\n\n/**\n * Bytes issue interface.\n */\nexport interface BytesIssue<TInput extends string, TRequirement extends number>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'bytes';\n /**\n * The expected property.\n */\n readonly expected: `${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The required bytes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Bytes action interface.\n */\nexport interface BytesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends ErrorMessage<BytesIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, BytesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'bytes';\n /**\n * The action reference.\n */\n readonly reference: typeof bytes;\n /**\n * The expected property.\n */\n readonly expects: `${TRequirement}`;\n /**\n * The required bytes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The required bytes.\n *\n * @returns A bytes action.\n */\nexport function bytes<TInput extends string, const TRequirement extends number>(\n requirement: TRequirement\n): BytesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The required bytes.\n * @param message The error message.\n *\n * @returns A bytes action.\n */\nexport function bytes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<BytesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): BytesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function bytes(\n requirement: number,\n message?: ErrorMessage<BytesIssue<string, number>>\n): BytesAction<\n string,\n number,\n ErrorMessage<BytesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'bytes',\n reference: bytes,\n async: false,\n expects: `${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const length = _getByteCount(dataset.value);\n if (length !== this.requirement) {\n _addIssue(this, 'bytes', dataset, config, {\n received: `${length}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type { BaseValidation, ErrorMessage } from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { CheckIssue } from './types/check.js';\n\n/**\n * Check action interface.\n */\nexport interface CheckAction<\n TInput,\n TMessage extends ErrorMessage<CheckIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, CheckIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'check';\n /**\n * The action reference.\n */\n readonly reference: typeof check;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: TInput) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a check validation action.\n *\n * @param requirement The validation function.\n *\n * @returns A check action.\n */\nexport function check<TInput>(\n requirement: (input: TInput) => boolean\n): CheckAction<TInput, undefined>;\n\n/**\n * Creates a check validation action.\n *\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns A check action.\n */\nexport function check<\n TInput,\n const TMessage extends ErrorMessage<CheckIssue<TInput>> | undefined,\n>(\n requirement: (input: TInput) => boolean,\n message: TMessage\n): CheckAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function check(\n requirement: (input: unknown) => boolean,\n message?: ErrorMessage<CheckIssue<unknown>>\n): CheckAction<unknown, ErrorMessage<CheckIssue<unknown>> | undefined> {\n return {\n kind: 'validation',\n type: 'check',\n reference: check,\n async: false,\n expects: null,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'input', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseValidationAsync,\n ErrorMessage,\n MaybePromise,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { CheckIssue } from './types/check.js';\n\n/**\n * Check action async interface.\n */\nexport interface CheckActionAsync<\n TInput,\n TMessage extends ErrorMessage<CheckIssue<TInput>> | undefined,\n> extends BaseValidationAsync<TInput, TInput, CheckIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'check';\n /**\n * The action reference.\n */\n readonly reference: typeof checkAsync;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: TInput) => MaybePromise<boolean>;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a check validation action.\n *\n * @param requirement The validation function.\n *\n * @returns A check action.\n */\nexport function checkAsync<TInput>(\n requirement: (input: TInput) => MaybePromise<boolean>\n): CheckActionAsync<TInput, undefined>;\n\n/**\n * Creates a check validation action.\n *\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns A check action.\n */\nexport function checkAsync<\n TInput,\n const TMessage extends ErrorMessage<CheckIssue<TInput>> | undefined,\n>(\n requirement: (input: TInput) => MaybePromise<boolean>,\n message: TMessage\n): CheckActionAsync<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function checkAsync(\n requirement: (input: unknown) => MaybePromise<boolean>,\n message?: ErrorMessage<CheckIssue<unknown>>\n): CheckActionAsync<unknown, ErrorMessage<CheckIssue<unknown>> | undefined> {\n return {\n kind: 'validation',\n type: 'check',\n reference: checkAsync,\n async: true,\n expects: null,\n requirement,\n message,\n async '~run'(dataset, config) {\n if (dataset.typed && !(await this.requirement(dataset.value))) {\n _addIssue(this, 'input', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseValidation, ErrorMessage } from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { ArrayInput, ArrayRequirement } from './types.js';\nimport type { CheckItemsIssue } from './types/checkItems.js';\n\n/**\n * Check items action interface.\n */\nexport interface CheckItemsAction<\n TInput extends ArrayInput,\n TMessage extends ErrorMessage<CheckItemsIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, CheckItemsIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'check_items';\n /**\n * The action reference.\n */\n readonly reference: typeof checkItems;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: ArrayRequirement<TInput>;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an check items validation action.\n *\n * @param requirement The validation function.\n *\n * @returns An check items action.\n */\nexport function checkItems<TInput extends ArrayInput>(\n requirement: ArrayRequirement<TInput>\n): CheckItemsAction<TInput, undefined>;\n\n/**\n * Creates an check items validation action.\n *\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns An check items action.\n */\nexport function checkItems<\n TInput extends ArrayInput,\n const TMessage extends ErrorMessage<CheckItemsIssue<TInput>> | undefined,\n>(\n requirement: ArrayRequirement<TInput>,\n message: TMessage\n): CheckItemsAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function checkItems(\n requirement: ArrayRequirement<unknown[]>,\n message?: ErrorMessage<CheckItemsIssue<unknown[]>>\n): CheckItemsAction<\n unknown[],\n ErrorMessage<CheckItemsIssue<unknown[]>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'check_items',\n reference: checkItems,\n async: false,\n expects: null,\n requirement,\n message,\n '~run'(dataset, config) {\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, config, {\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","import type { BaseValidationAsync, ErrorMessage } from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { ArrayInput, ArrayRequirementAsync } from './types.js';\nimport type { CheckItemsIssue } from './types/checkItems.js';\n\n/**\n * Check items action async interface.\n */\nexport interface CheckItemsActionAsync<\n TInput extends ArrayInput,\n TMessage extends ErrorMessage<CheckItemsIssue<TInput>> | undefined,\n> extends BaseValidationAsync<TInput, TInput, CheckItemsIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'check_items';\n /**\n * The action reference.\n */\n readonly reference: typeof checkItemsAsync;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: ArrayRequirementAsync<TInput>;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a check items validation action.\n *\n * @param requirement The validation function.\n *\n * @returns A check items action.\n */\nexport function checkItemsAsync<TInput extends ArrayInput>(\n requirement: ArrayRequirementAsync<TInput>\n): CheckItemsActionAsync<TInput, undefined>;\n\n/**\n * Creates a check items validation action.\n *\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns A check items action.\n */\nexport function checkItemsAsync<\n TInput extends ArrayInput,\n const TMessage extends ErrorMessage<CheckItemsIssue<TInput>> | undefined,\n>(\n requirement: ArrayRequirementAsync<TInput>,\n message: TMessage\n): CheckItemsActionAsync<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function checkItemsAsync(\n requirement: ArrayRequirementAsync<unknown[]>,\n message?: ErrorMessage<CheckItemsIssue<unknown[]>>\n): CheckItemsActionAsync<\n unknown[],\n ErrorMessage<CheckItemsIssue<unknown[]>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'check_items',\n reference: checkItemsAsync,\n async: true,\n expects: null,\n requirement,\n message,\n async '~run'(dataset, config) {\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, config, {\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","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _isLuhnAlgo } from '../utils/index.js';\n\n/**\n * Credit card issue interface.\n */\nexport interface CreditCardIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'credit_card';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n}\n\n/**\n * Credit card action interface.\n */\nexport interface CreditCardAction<\n TInput extends string,\n TMessage extends ErrorMessage<CreditCardIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, CreditCardIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'credit_card';\n /**\n * The action reference.\n */\n readonly reference: typeof creditCard;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Credit card regex.\n */\nconst CREDIT_CARD_REGEX =\n /^(?:\\d{13,19}|\\d{4}(?: \\d{3,6}){2,4}|\\d{4}(?:-\\d{3,6}){2,4})$/u;\n\n/**\n * Sanitize regex.\n */\nconst SANITIZE_REGEX = /[- ]/gu;\n\n/**\n * Provider regex list.\n */\nconst 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\n/**\n * Creates a [credit card](https://en.wikipedia.org/wiki/Payment_card_number) validation action.\n *\n * @returns A Credit card action.\n */\nexport function creditCard<TInput extends string>(): CreditCardAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [credit card](https://en.wikipedia.org/wiki/Payment_card_number) validation action.\n *\n * @param message The error message.\n *\n * @returns A credit card action.\n */\nexport function creditCard<\n TInput extends string,\n const TMessage extends ErrorMessage<CreditCardIssue<TInput>> | undefined,\n>(message: TMessage): CreditCardAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function creditCard(\n message?: ErrorMessage<CreditCardIssue<string>>\n): CreditCardAction<string, ErrorMessage<CreditCardIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'credit_card',\n reference: creditCard,\n async: false,\n expects: null,\n requirement(input) {\n let sanitized: string | undefined;\n return (CREDIT_CARD_REGEX.test(input) &&\n // Remove any hyphens and blanks\n (sanitized = input.replace(SANITIZE_REGEX, '')) &&\n // Check if it matches a provider\n PROVIDER_REGEX_LIST.some((regex) => regex.test(sanitized!)) &&\n // Check if passes luhn algorithm\n _isLuhnAlgo(sanitized)) as boolean;\n },\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'credit card', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { CUID2_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Cuid2 issue interface.\n */\nexport interface Cuid2Issue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'cuid2';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The Cuid2 regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Cuid2 action interface.\n */\nexport interface Cuid2Action<\n TInput extends string,\n TMessage extends ErrorMessage<Cuid2Issue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, Cuid2Issue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'cuid2';\n /**\n * The action reference.\n */\n readonly reference: typeof cuid2;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The Cuid2 regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [Cuid2](https://github.com/paralleldrive/cuid2) validation action.\n *\n * @returns A Cuid2 action.\n */\nexport function cuid2<TInput extends string>(): Cuid2Action<TInput, undefined>;\n\n/**\n * Creates a [Cuid2](https://github.com/paralleldrive/cuid2) validation action.\n *\n * @param message The error message.\n *\n * @returns A Cuid2 action.\n */\nexport function cuid2<\n TInput extends string,\n const TMessage extends ErrorMessage<Cuid2Issue<TInput>> | undefined,\n>(message: TMessage): Cuid2Action<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function cuid2(\n message?: ErrorMessage<Cuid2Issue<string>>\n): Cuid2Action<string, ErrorMessage<Cuid2Issue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'cuid2',\n reference: cuid2,\n async: false,\n expects: null,\n requirement: CUID2_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'Cuid2', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { DECIMAL_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Decimal issue interface.\n */\nexport interface DecimalIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'decimal';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The decimal regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Decimal action interface.\n */\nexport interface DecimalAction<\n TInput extends string,\n TMessage extends ErrorMessage<DecimalIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, DecimalIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'decimal';\n /**\n * The action reference.\n */\n readonly reference: typeof decimal;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The decimal regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [decimal](https://en.wikipedia.org/wiki/Decimal) validation action.\n *\n * The difference between `decimal` and `digits` is that `decimal` accepts\n * floating point numbers and negative numbers, while `digits` accepts only the\n * digits 0-9.\n *\n * @returns An decimal action.\n */\nexport function decimal<TInput extends string>(): DecimalAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [decimal](https://en.wikipedia.org/wiki/Decimal) validation action.\n *\n * The difference between `decimal` and `digits` is that `decimal` accepts\n * floating point numbers and negative numbers, while `digits` accepts only the\n * digits 0-9.\n *\n * @param message The error message.\n *\n * @returns An decimal action.\n */\nexport function decimal<\n TInput extends string,\n const TMessage extends ErrorMessage<DecimalIssue<TInput>> | undefined,\n>(message: TMessage): DecimalAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function decimal(\n message?: ErrorMessage<DecimalIssue<string>>\n): DecimalAction<string, ErrorMessage<DecimalIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'decimal',\n reference: decimal,\n async: false,\n expects: null,\n requirement: DECIMAL_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'decimal', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseMetadata } from '../types/index.js';\n\n/**\n * Description action interface.\n */\nexport interface DescriptionAction<TInput, TDescription extends string>\n extends BaseMetadata<TInput> {\n /**\n * The action type.\n */\n readonly type: 'description';\n /**\n * The action reference.\n */\n readonly reference: typeof description;\n /**\n * The description text.\n */\n readonly description: TDescription;\n}\n\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__\nexport function description<TInput, TDescription extends string>(\n description_: TDescription\n): DescriptionAction<TInput, TDescription> {\n return {\n kind: 'metadata',\n type: 'description',\n reference: description,\n description: description_,\n };\n}\n","import { DIGITS_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Digits issue interface.\n */\nexport interface DigitsIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'digits';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The digits regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Digits action interface.\n */\nexport interface DigitsAction<\n TInput extends string,\n TMessage extends ErrorMessage<DigitsIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, DigitsIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'digits';\n /**\n * The action reference.\n */\n readonly reference: typeof digits;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The digits regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [digits](https://en.wikipedia.org/wiki/Numerical_digit) validation action.\n *\n * The difference between `digits` and `decimal` is that `digits` accepts only\n * the digits 0-9, while `decimal` accepts floating point numbers and negative\n * numbers.\n *\n * @returns An digits action.\n */\nexport function digits<TInput extends string>(): DigitsAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [digits](https://en.wikipedia.org/wiki/Numerical_digit) validation action.\n *\n * The difference between `digits` and `decimal` is that `digits` accepts only\n * the digits 0-9, while `decimal` accepts floating point numbers and negative\n * numbers.\n *\n * @param message The error message.\n *\n * @returns An digits action.\n */\nexport function digits<\n TInput extends string,\n const TMessage extends ErrorMessage<DigitsIssue<TInput>> | undefined,\n>(message: TMessage): DigitsAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function digits(\n message?: ErrorMessage<DigitsIssue<string>>\n): DigitsAction<string, ErrorMessage<DigitsIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'digits',\n reference: digits,\n async: false,\n expects: null,\n requirement: DIGITS_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'digits', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { DOMAIN_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Domain issue interface.\n *\n * @beta\n */\nexport interface DomainIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'domain';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The domain regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Domain action interface.\n *\n * @beta\n */\nexport interface DomainAction<\n TInput extends string,\n TMessage extends ErrorMessage<DomainIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, DomainIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'domain';\n /**\n * The action reference.\n */\n readonly reference: typeof domain;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The domain regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [domain name](https://en.wikipedia.org/wiki/Domain_name) validation\n * action.\n *\n * Hint: ASCII-only validation. Internationalized domain names (IDNs) are not\n * supported, including Punycode-encoded labels.\n *\n * @returns A domain action.\n *\n * @beta\n */\nexport function domain<TInput extends string>(): DomainAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [domain name](https://en.wikipedia.org/wiki/Domain_name) validation\n * action.\n *\n * Hint: ASCII-only validation. Internationalized domain names (IDNs) are not\n * supported, including Punycode-encoded labels.\n *\n * @param message The error message.\n *\n * @returns A domain action.\n *\n * @beta\n */\nexport function domain<\n TInput extends string,\n const TMessage extends ErrorMessage<DomainIssue<TInput>> | undefined,\n>(message: TMessage): DomainAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function domain(\n message?: ErrorMessage<DomainIssue<string>>\n): DomainAction<string, ErrorMessage<DomainIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'domain',\n reference: domain,\n expects: null,\n async: false,\n requirement: DOMAIN_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'domain', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { EMAIL_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Email issue interface.\n */\nexport interface EmailIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'email';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The email regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Email action interface.\n */\nexport interface EmailAction<\n TInput extends string,\n TMessage extends ErrorMessage<EmailIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, EmailIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'email';\n /**\n * The action reference.\n */\n readonly reference: typeof email;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The email regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [email](https://en.wikipedia.org/wiki/Email_address) validation\n * action.\n *\n * Hint: This validation action intentionally only validates common email\n * addresses. If you are interested in an action that covers the entire\n * specification, please use the `rfcEmail` action instead.\n *\n * @returns An email action.\n */\nexport function email<TInput extends string>(): EmailAction<TInput, undefined>;\n\n/**\n * Creates an [email](https://en.wikipedia.org/wiki/Email_address) validation\n * action.\n *\n * Hint: This validation action intentionally only validates common email\n * addresses. If you are interested in an action that covers the entire\n * specification, please use the `rfcEmail` action instead.\n *\n * @param message The error message.\n *\n * @returns An email action.\n */\nexport function email<\n TInput extends string,\n const TMessage extends ErrorMessage<EmailIssue<TInput>> | undefined,\n>(message: TMessage): EmailAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function email(\n message?: ErrorMessage<EmailIssue<string>>\n): EmailAction<string, ErrorMessage<EmailIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'email',\n reference: email,\n expects: null,\n async: false,\n requirement: EMAIL_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'email', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { EMOJI_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Emoji issue interface.\n */\nexport interface EmojiIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'emoji';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The emoji regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Emoji action interface.\n */\nexport interface EmojiAction<\n TInput extends string,\n TMessage extends ErrorMessage<EmojiIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, EmojiIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'emoji';\n /**\n * The action reference.\n */\n readonly reference: typeof emoji;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The emoji regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [emoji](https://en.wikipedia.org/wiki/Emoji) validation action.\n *\n * @returns An emoji action.\n */\nexport function emoji<TInput extends string>(): EmojiAction<TInput, undefined>;\n\n/**\n * Creates an [emoji](https://en.wikipedia.org/wiki/Emoji) validation action.\n *\n * @param message The error message.\n *\n * @returns An emoji action.\n */\nexport function emoji<\n TInput extends string,\n const TMessage extends ErrorMessage<EmojiIssue<TInput>> | undefined,\n>(message: TMessage): EmojiAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function emoji(\n message?: ErrorMessage<EmojiIssue<string>>\n): EmojiAction<string, ErrorMessage<EmojiIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'emoji',\n reference: emoji,\n async: false,\n expects: null,\n requirement: EMOJI_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'emoji', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { LengthInput } from './types.js';\n\n/**\n * Empty issue interface.\n */\nexport interface EmptyIssue<TInput extends LengthInput>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'empty';\n /**\n * The expected input.\n */\n readonly expected: '0';\n /**\n * The received input.\n */\n readonly received: `${number}`;\n}\n\n/**\n * Empty action interface.\n */\nexport interface EmptyAction<\n TInput extends LengthInput,\n TMessage extends ErrorMessage<EmptyIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, EmptyIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'empty';\n /**\n * The action reference.\n */\n readonly reference: typeof empty;\n /**\n * The expected property.\n */\n readonly expects: '0';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an empty validation action.\n *\n * @returns An empty action.\n */\nexport function empty<TInput extends LengthInput>(): EmptyAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an empty validation action.\n *\n * @param message The error message.\n *\n * @returns An empty action.\n */\nexport function empty<\n TInput extends LengthInput,\n const TMessage extends ErrorMessage<EmptyIssue<TInput>> | undefined,\n>(message: TMessage): EmptyAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function empty(\n message?: ErrorMessage<EmptyIssue<LengthInput>>\n): EmptyAction<LengthInput, ErrorMessage<EmptyIssue<LengthInput>> | undefined> {\n return {\n kind: 'validation',\n type: 'empty',\n reference: empty,\n async: false,\n expects: '0',\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.length > 0) {\n _addIssue(this, 'length', dataset, config, {\n received: `${dataset.value.length}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Ends with issue interface.\n */\nexport interface EndsWithIssue<\n TInput extends string,\n TRequirement extends string,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'ends_with';\n /**\n * The expected property.\n */\n readonly expected: `\"${TRequirement}\"`;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The end string.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Ends with action interface.\n */\nexport interface EndsWithAction<\n TInput extends string,\n TRequirement extends string,\n TMessage extends\n | ErrorMessage<EndsWithIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, EndsWithIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'ends_with';\n /**\n * The action reference.\n */\n readonly reference: typeof endsWith;\n /**\n * The expected property.\n */\n readonly expects: `\"${TRequirement}\"`;\n /**\n * The end string.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an ends with validation action.\n *\n * @param requirement The end string.\n *\n * @returns An ends with action.\n */\nexport function endsWith<\n TInput extends string,\n const TRequirement extends string,\n>(requirement: TRequirement): EndsWithAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates an ends with validation action.\n *\n * @param requirement The end string.\n * @param message The error message.\n *\n * @returns An ends with action.\n */\nexport function endsWith<\n TInput extends string,\n const TRequirement extends string,\n const TMessage extends\n | ErrorMessage<EndsWithIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): EndsWithAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function endsWith(\n requirement: string,\n message?: ErrorMessage<EndsWithIssue<string, string>>\n): EndsWithAction<\n string,\n string,\n ErrorMessage<EndsWithIssue<string, string>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'ends_with',\n reference: endsWith,\n async: false,\n expects: `\"${requirement}\"`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !dataset.value.endsWith(this.requirement)) {\n _addIssue(this, 'end', dataset, config, {\n received: `\"${dataset.value.slice(-this.requirement.length)}\"`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { EntriesInput } from './types.js';\n\n/**\n * Entries issue interface.\n *\n * @beta\n */\nexport interface EntriesIssue<\n TInput extends EntriesInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'entries';\n /**\n * The expected property.\n */\n readonly expected: `${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The required entries.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Entries action interface.\n *\n * @beta\n */\nexport interface EntriesAction<\n TInput extends EntriesInput,\n TRequirement extends number,\n TMessage extends ErrorMessage<EntriesIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, EntriesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'entries';\n /**\n * The action reference.\n */\n readonly reference: typeof entries;\n /**\n * The expected property.\n */\n readonly expects: `${TRequirement}`;\n /**\n * The required entries.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an entries validation action.\n *\n * @param requirement The required entries.\n *\n * @returns An entries action.\n *\n * @beta\n */\nexport function entries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n>(requirement: TRequirement): EntriesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates an entries validation action.\n *\n * @param requirement The required entries.\n * @param message The error message.\n *\n * @returns An entries action.\n *\n * @beta\n */\nexport function entries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<EntriesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): EntriesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function entries(\n requirement: number,\n message?: ErrorMessage<EntriesIssue<EntriesInput, number>>\n): EntriesAction<\n EntriesInput,\n number,\n ErrorMessage<EntriesIssue<EntriesInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'entries',\n reference: entries,\n async: false,\n expects: `${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\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, config, {\n received: `${count}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { ArrayInput, ArrayRequirement } from './types.js';\n\n/**\n * Every item issue interface.\n */\nexport interface EveryItemIssue<TInput extends ArrayInput>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'every_item';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The validation function.\n */\n readonly requirement: ArrayRequirement<TInput>;\n}\n\n/**\n * Every item action interface.\n */\nexport interface EveryItemAction<\n TInput extends ArrayInput,\n TMessage extends ErrorMessage<EveryItemIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, EveryItemIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'every_item';\n /**\n * The action reference.\n */\n readonly reference: typeof everyItem;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: ArrayRequirement<TInput>;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an every item validation action.\n *\n * @param requirement The validation function.\n *\n * @returns An every item action.\n */\nexport function everyItem<TInput extends ArrayInput>(\n requirement: ArrayRequirement<TInput>\n): EveryItemAction<TInput, undefined>;\n\n/**\n * Creates an every item validation action.\n *\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns An every item action.\n */\nexport function everyItem<\n TInput extends ArrayInput,\n const TMessage extends ErrorMessage<EveryItemIssue<TInput>> | undefined,\n>(\n requirement: ArrayRequirement<TInput>,\n message: TMessage\n): EveryItemAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function everyItem(\n requirement: ArrayRequirement<unknown[]>,\n message?: ErrorMessage<EveryItemIssue<unknown[]>>\n): EveryItemAction<\n unknown[],\n ErrorMessage<EveryItemIssue<unknown[]>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'every_item',\n reference: everyItem,\n async: false,\n expects: null,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !dataset.value.every(this.requirement)) {\n _addIssue(this, 'item', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseMetadata } from '../types/index.js';\n\n/**\n * Examples action interface.\n */\nexport interface ExamplesAction<TInput, TExamples extends readonly TInput[]>\n extends BaseMetadata<TInput> {\n /**\n * The action type.\n */\n readonly type: 'examples';\n /**\n * The action reference.\n */\n readonly reference: typeof examples;\n /**\n * The examples.\n */\n readonly examples: TExamples;\n}\n\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__\nexport function examples<TInput, const TExamples extends readonly TInput[]>(\n examples_: TExamples\n): ExamplesAction<TInput, TExamples> {\n return {\n kind: 'metadata',\n type: 'examples',\n reference: examples,\n examples: examples_,\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ContentInput, ContentRequirement } from './types.js';\n\n/**\n * Excludes issue interface.\n */\nexport interface ExcludesIssue<\n TInput extends ContentInput,\n TRequirement extends ContentRequirement<TInput>,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'excludes';\n /**\n * The expected property.\n */\n readonly expected: string;\n /**\n * The content to be excluded.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Excludes action interface.\n */\nexport interface ExcludesAction<\n TInput extends ContentInput,\n TRequirement extends ContentRequirement<TInput>,\n TMessage extends\n | ErrorMessage<ExcludesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, ExcludesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'excludes';\n /**\n * The action reference.\n */\n readonly reference: typeof excludes;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The content to be excluded.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an excludes validation action.\n *\n * @param requirement The content to be excluded.\n *\n * @returns An excludes action.\n */\nexport function excludes<\n TInput extends ContentInput,\n const TRequirement extends ContentRequirement<TInput>,\n>(requirement: TRequirement): ExcludesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates an excludes validation action.\n *\n * @param requirement The content to be excluded.\n * @param message The error message.\n *\n * @returns An excludes action.\n */\nexport function excludes<\n TInput extends ContentInput,\n const TRequirement extends ContentRequirement<TInput>,\n const TMessage extends\n | ErrorMessage<ExcludesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): ExcludesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function excludes(\n requirement: ContentRequirement<ContentInput>,\n message?: ErrorMessage<\n ExcludesIssue<ContentInput, ContentRequirement<ContentInput>>\n >\n): ExcludesAction<\n ContentInput,\n ContentRequirement<ContentInput>,\n | ErrorMessage<ExcludesIssue<ContentInput, ContentRequirement<ContentInput>>>\n | undefined\n> {\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,\n '~run'(dataset, config) {\n // @ts-expect-error\n if (dataset.typed && dataset.value.includes(this.requirement)) {\n _addIssue(this, 'content', dataset, config, { received });\n }\n return dataset;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\nimport type { ArrayInput, ArrayRequirement } from './types.js';\n\n/**\n * Filter items action interface.\n */\nexport interface FilterItemsAction<TInput extends ArrayInput>\n extends BaseTransformation<TInput, TInput, never> {\n /**\n * The action type.\n */\n readonly type: 'filter_items';\n /**\n * The action reference.\n */\n readonly reference: typeof filterItems;\n /**\n * The filter items operation.\n */\n readonly operation: ArrayRequirement<TInput>;\n}\n\n/**\n * Creates a filter items transformation action.\n *\n * @param operation The filter items operation.\n *\n * @returns A filter items action.\n */\nexport function filterItems<TInput extends ArrayInput>(\n operation: ArrayRequirement<TInput>\n): FilterItemsAction<TInput>;\n\n// @__NO_SIDE_EFFECTS__\nexport function filterItems(\n operation: ArrayRequirement<unknown[]>\n): FilterItemsAction<unknown[]> {\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","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\nimport type { ArrayInput } from './types.js';\n\n/**\n * Array requirement type.\n */\ntype ArrayRequirement<\n TInput extends ArrayInput,\n TOuput extends TInput[number],\n> =\n | ((item: TInput[number], index: number, array: TInput) => item is TOuput)\n | ((item: TInput[number], index: number, array: TInput) => boolean);\n\n/**\n * Find item action interface.\n */\nexport interface FindItemAction<\n TInput extends ArrayInput,\n TOuput extends TInput[number],\n> extends BaseTransformation<TInput, TOuput | undefined, never> {\n /**\n * The action type.\n */\n readonly type: 'find_item';\n /**\n * The action reference.\n */\n readonly reference: typeof findItem;\n /**\n * The find item operation.\n */\n readonly operation: ArrayRequirement<TInput, TOuput>;\n}\n\n/**\n * Creates a find item transformation action.\n *\n * @param operation The find item operation.\n *\n * @returns A find item action.\n */\nexport function findItem<\n TInput extends ArrayInput,\n TOuput extends TInput[number],\n>(operation: ArrayRequirement<TInput, TOuput>): FindItemAction<TInput, TOuput>;\n\n// @__NO_SIDE_EFFECTS__\nexport function findItem(\n operation: ArrayRequirement<unknown[], unknown>\n): FindItemAction<unknown[], unknown> {\n return {\n kind: 'transformation',\n type: 'find_item',\n reference: findItem,\n async: false,\n operation,\n '~run'(dataset) {\n // @ts-expect-error\n dataset.value = dataset.value.find(this.operation);\n return dataset as SuccessDataset<unknown | undefined>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Finite issue interface.\n */\nexport interface FiniteIssue<TInput extends number> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'finite';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The validation function.\n */\n readonly requirement: (input: number) => boolean;\n}\n\n/**\n * Finite action interface.\n */\nexport interface FiniteAction<\n TInput extends number,\n TMessage extends ErrorMessage<FiniteIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, FiniteIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'finite';\n /**\n * The action reference.\n */\n readonly reference: typeof finite;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: number) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [finite](https://en.wikipedia.org/wiki/Finite) validation action.\n *\n * @returns A finite action.\n */\nexport function finite<TInput extends number>(): FiniteAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [finite](https://en.wikipedia.org/wiki/Finite) validation action.\n *\n * @param message The error message.\n *\n * @returns A finite action.\n */\nexport function finite<\n TInput extends number,\n const TMessage extends ErrorMessage<FiniteIssue<TInput>> | undefined,\n>(message: TMessage): FiniteAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function finite(\n message?: ErrorMessage<FiniteIssue<number>>\n): FiniteAction<number, ErrorMessage<FiniteIssue<number>> | undefined> {\n return {\n kind: 'validation',\n type: 'finite',\n reference: finite,\n async: false,\n expects: null,\n requirement: Number.isFinite,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'finite', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\n\n/**\n * Flavor symbol.\n *\n * @beta\n */\nexport declare const FlavorSymbol: unique symbol;\n\n/**\n * Flavor name type.\n *\n * @beta\n */\nexport type FlavorName = string | number | symbol;\n\n/**\n * Flavor interface.\n *\n * @beta\n */\nexport interface Flavor<TName extends FlavorName> {\n [FlavorSymbol]?: { [TValue in TName]: TValue };\n}\n\n/**\n * Flavor action interface.\n *\n * @beta\n */\nexport interface FlavorAction<TInput, TName extends FlavorName>\n extends BaseTransformation<TInput, TInput & Flavor<TName>, never> {\n /**\n * The action type.\n */\n readonly type: 'flavor';\n /**\n * The action reference.\n */\n readonly reference: typeof flavor;\n /**\n * The flavor name.\n */\n readonly name: TName;\n}\n\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__\nexport function flavor<TInput, TName extends FlavorName>(\n name: TName\n): FlavorAction<TInput, TName> {\n return {\n kind: 'transformation',\n type: 'flavor',\n reference: flavor,\n async: false,\n name,\n '~run'(dataset) {\n return dataset as SuccessDataset<TInput & Flavor<TName>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getGraphemeCount } from '../utils/index.js';\n\n/**\n * Graphemes issue interface.\n */\nexport interface GraphemesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'graphemes';\n /**\n * The expected property.\n */\n readonly expected: `${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The required graphemes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Graphemes action interface.\n */\nexport interface GraphemesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<GraphemesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, GraphemesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'graphemes';\n /**\n * The action reference.\n */\n readonly reference: typeof graphemes;\n /**\n * The expected property.\n */\n readonly expects: `${TRequirement}`;\n /**\n * The required graphemes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a graphemes validation action.\n *\n * @param requirement The required graphemes.\n *\n * @returns A graphemes action.\n */\nexport function graphemes<\n TInput extends string,\n const TRequirement extends number,\n>(requirement: TRequirement): GraphemesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a graphemes validation action.\n *\n * @param requirement The required graphemes.\n * @param message The error message.\n *\n * @returns A graphemes action.\n */\nexport function graphemes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<GraphemesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): GraphemesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function graphemes(\n requirement: number,\n message?: ErrorMessage<GraphemesIssue<string, number>>\n): GraphemesAction<\n string,\n number,\n ErrorMessage<GraphemesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'graphemes',\n reference: graphemes,\n async: false,\n expects: `${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count !== this.requirement) {\n _addIssue(this, 'graphemes', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Greater than value issue type.\n */\nexport interface GtValueIssue<\n TInput extends ValueInput,\n TRequirement extends TInput,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'gt_value';\n /**\n * The expected property.\n */\n readonly expected: `>${string}`;\n /**\n * The greater than value.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Greater than value action type.\n */\nexport interface GtValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n TMessage extends ErrorMessage<GtValueIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, GtValueIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'gt_value';\n /**\n * The action reference.\n */\n readonly reference: typeof gtValue;\n /**\n * The expected property.\n */\n readonly expects: `>${string}`;\n /**\n * The greater than value.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a greater than value validation action.\n *\n * @param requirement The greater than value.\n *\n * @returns A greater than value action.\n */\nexport function gtValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): GtValueAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a greater than value validation action.\n *\n * @param requirement The greater than value.\n * @param message The error message.\n *\n * @returns A greater than value action.\n */\nexport function gtValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n const TMessage extends\n | ErrorMessage<GtValueIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): GtValueAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function gtValue(\n requirement: ValueInput,\n message?: ErrorMessage<GtValueIssue<ValueInput, ValueInput>>\n): GtValueAction<\n ValueInput,\n ValueInput,\n ErrorMessage<GtValueIssue<ValueInput, ValueInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'gt_value',\n reference: gtValue,\n async: false,\n expects: `>${requirement instanceof Date\n ? requirement.toJSON()\n : _stringify(requirement)\n }`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !(dataset.value > this.requirement)) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Guard function type.\n *\n * @beta\n */\nexport type GuardFunction<TInput> = (\n input: TInput\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) => input is any;\n\n/**\n * Infer guard output type.\n *\n * @beta\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type InferGuardOutput<TGuard extends GuardFunction<any>> =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TGuard extends (input: any) => input is infer TOutput ? TOutput : unknown;\n\n/**\n * Guard issue interface.\n *\n * @beta\n */\nexport interface GuardIssue<TInput, TGuard extends GuardFunction<TInput>>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'guard';\n /**\n * The guard function.\n */\n readonly requirement: TGuard;\n}\n\n/**\n * Guard action interface.\n *\n * @beta\n */\nexport interface GuardAction<\n TInput,\n TGuard extends GuardFunction<TInput>,\n TMessage extends ErrorMessage<GuardIssue<TInput, TGuard>> | undefined,\n> extends BaseTransformation<\n TInput,\n // intersect in case guard is actually wider\n TInput & InferGuardOutput<TGuard>,\n GuardIssue<TInput, TGuard>\n> {\n /**\n * The action type.\n */\n readonly type: 'guard';\n /**\n * The action reference.\n */\n readonly reference: typeof guard;\n /**\n * The guard function.\n */\n readonly requirement: TGuard;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a guard transformation action.\n *\n * @param requirement The guard function.\n *\n * @returns A guard action.\n *\n * @beta\n */\n// known input from pipe\nexport function guard<TInput, const TGuard extends GuardFunction<TInput>>(\n requirement: TGuard\n): GuardAction<TInput, TGuard, undefined>;\n\n/**\n * Creates a guard transformation action.\n *\n * @param requirement The guard function.\n *\n * @returns A guard action.\n *\n * @beta\n */\n// unknown input, e.g. standalone\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function guard<const TGuard extends GuardFunction<any>>(\n requirement: TGuard\n): GuardAction<Parameters<TGuard>[0], TGuard, undefined>;\n\n/**\n * Creates a guard transformation action.\n *\n * @param requirement The guard function.\n * @param message The error message.\n *\n * @returns A guard action.\n *\n * @beta\n */\n// known input from pipe\nexport function guard<\n TInput,\n const TGuard extends GuardFunction<TInput>,\n const TMessage extends ErrorMessage<GuardIssue<TInput, TGuard>> | undefined,\n>(\n requirement: TGuard,\n message: TMessage\n): GuardAction<TInput, TGuard, TMessage>;\n\n/**\n * Creates a guard transformation action.\n *\n * @param requirement The guard function.\n * @param message The error message.\n *\n * @returns A guard action.\n *\n * @beta\n */\n// unknown input, e.g. standalone\nexport function guard<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const TGuard extends GuardFunction<any>,\n const TMessage extends\n | ErrorMessage<GuardIssue<Parameters<TGuard>[0], TGuard>>\n | undefined,\n>(\n requirement: TGuard,\n message: TMessage\n): GuardAction<Parameters<TGuard>[0], TGuard, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function guard(\n requirement: GuardFunction<unknown>,\n message?: ErrorMessage<GuardIssue<unknown, GuardFunction<unknown>>>\n): GuardAction<\n unknown,\n GuardFunction<unknown>,\n ErrorMessage<GuardIssue<unknown, GuardFunction<unknown>>> | undefined\n> {\n return {\n kind: 'transformation',\n type: 'guard',\n reference: guard,\n async: false,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'input', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Hash lengths object.\n */\nconst 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} as const;\n\n/**\n * Hash type type.\n */\nexport type HashType = keyof typeof HASH_LENGTHS;\n\n/**\n * Hash issue interface.\n */\nexport interface HashIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'hash';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The hash regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Hash action interface.\n */\nexport interface HashAction<\n TInput extends string,\n TMessage extends ErrorMessage<HashIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, HashIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'hash';\n /**\n * The action reference.\n */\n readonly reference: typeof hash;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The hash regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [hash](https://en.wikipedia.org/wiki/Hash_function) validation action.\n *\n * @param types The hash types.\n *\n * @returns A hash action.\n */\nexport function hash<TInput extends string>(\n types: [HashType, ...HashType[]]\n): HashAction<TInput, undefined>;\n\n/**\n * Creates a [hash](https://en.wikipedia.org/wiki/Hash_function) validation action.\n *\n * @param types The hash types.\n * @param message The error message.\n *\n * @returns A hash action.\n */\nexport function hash<\n TInput extends string,\n const TMessage extends ErrorMessage<HashIssue<TInput>> | undefined,\n>(\n types: [HashType, ...HashType[]],\n message: TMessage\n): HashAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function hash(\n types: [HashType, ...HashType[]],\n message?: ErrorMessage<HashIssue<string>>\n): HashAction<string, ErrorMessage<HashIssue<string>> | undefined> {\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-fA-F0-9]{${HASH_LENGTHS[type]}}$`).join('|'),\n 'u'\n ),\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'hash', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { HEXADECIMAL_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Hexadecimal issue interface.\n */\nexport interface HexadecimalIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'hexadecimal';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The hexadecimal regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Hexadecimal action interface.\n */\nexport interface HexadecimalAction<\n TInput extends string,\n TMessage extends ErrorMessage<HexadecimalIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, HexadecimalIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'hexadecimal';\n /**\n * The action reference.\n */\n readonly reference: typeof hexadecimal;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The hexadecimal regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) validation action.\n *\n * @returns A hexadecimal action.\n */\nexport function hexadecimal<TInput extends string>(): HexadecimalAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) validation action.\n *\n * @param message The error message.\n *\n * @returns A hexadecimal action.\n */\nexport function hexadecimal<\n TInput extends string,\n const TMessage extends ErrorMessage<HexadecimalIssue<TInput>> | undefined,\n>(message: TMessage): HexadecimalAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function hexadecimal(\n message?: ErrorMessage<HexadecimalIssue<string>>\n): HexadecimalAction<\n string,\n ErrorMessage<HexadecimalIssue<string>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'hexadecimal',\n reference: hexadecimal,\n async: false,\n expects: null,\n requirement: HEXADECIMAL_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'hexadecimal', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { HEX_COLOR_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Hex color issue interface.\n */\nexport interface HexColorIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'hex_color';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The hex color regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Hex color action interface.\n */\nexport interface HexColorAction<\n TInput extends string,\n TMessage extends ErrorMessage<HexColorIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, HexColorIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'hex_color';\n /**\n * The action reference.\n */\n readonly reference: typeof hexColor;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The hex color regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [hex color](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) validation action.\n *\n * @returns A hex color action.\n */\nexport function hexColor<TInput extends string>(): HexColorAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [hex color](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) validation action.\n *\n * @param message The error message.\n *\n * @returns A hex color action.\n */\nexport function hexColor<\n TInput extends string,\n const TMessage extends ErrorMessage<HexColorIssue<TInput>> | undefined,\n>(message: TMessage): HexColorAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function hexColor(\n message?: ErrorMessage<HexColorIssue<string>>\n): HexColorAction<string, ErrorMessage<HexColorIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'hex color', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { IMEI_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _isLuhnAlgo } from '../utils/index.js';\n\n/**\n * IMEI issue interface.\n */\nexport interface ImeiIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'imei';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n}\n\n/**\n * IMEI action interface.\n */\nexport interface ImeiAction<\n TInput extends string,\n TMessage extends ErrorMessage<ImeiIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, ImeiIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'imei';\n /**\n * The action reference.\n */\n readonly reference: typeof imei;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) validation action.\n *\n * Formats:\n * - AABBBBBBCCCCCCD\n * - AA-BBBBBB-CCCCCC-D\n *\n * @returns An IMEI action.\n */\nexport function imei<TInput extends string>(): ImeiAction<TInput, undefined>;\n\n/**\n * Creates an [IMEI](https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity) validation action.\n *\n * Formats:\n * - AABBBBBBCCCCCCD\n * - AA-BBBBBB-CCCCCC-D\n *\n * @param message The error message.\n *\n * @returns An IMEI action.\n */\nexport function imei<\n TInput extends string,\n const TMessage extends ErrorMessage<ImeiIssue<TInput>> | undefined,\n>(message: TMessage): ImeiAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function imei(\n message?: ErrorMessage<ImeiIssue<string>>\n): ImeiAction<string, ErrorMessage<ImeiIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'IMEI', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ContentInput, ContentRequirement } from './types.js';\n\n/**\n * Includes issue interface.\n */\nexport interface IncludesIssue<\n TInput extends ContentInput,\n TRequirement extends ContentRequirement<TInput>,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'includes';\n /**\n * The expected property.\n */\n readonly expected: string;\n /**\n * The content to be included.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Includes action interface.\n */\nexport interface IncludesAction<\n TInput extends ContentInput,\n TRequirement extends ContentRequirement<TInput>,\n TMessage extends\n | ErrorMessage<IncludesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, IncludesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'includes';\n /**\n * The action reference.\n */\n readonly reference: typeof includes;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The content to be included.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an includes validation action.\n *\n * @param requirement The content to be included.\n *\n * @returns An includes action.\n */\nexport function includes<\n TInput extends ContentInput,\n const TRequirement extends ContentRequirement<TInput>,\n>(requirement: TRequirement): IncludesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates an includes validation action.\n *\n * @param requirement The content to be included.\n * @param message The error message.\n *\n * @returns An includes action.\n */\nexport function includes<\n TInput extends ContentInput,\n const TRequirement extends ContentRequirement<TInput>,\n const TMessage extends\n | ErrorMessage<IncludesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): IncludesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function includes(\n requirement: ContentRequirement<ContentInput>,\n message?: ErrorMessage<\n IncludesIssue<ContentInput, ContentRequirement<ContentInput>>\n >\n): IncludesAction<\n ContentInput,\n ContentRequirement<ContentInput>,\n | ErrorMessage<IncludesIssue<ContentInput, ContentRequirement<ContentInput>>>\n | undefined\n> {\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,\n '~run'(dataset, config) {\n // @ts-expect-error\n if (dataset.typed && !dataset.value.includes(this.requirement)) {\n _addIssue(this, 'content', dataset, config, {\n received: `!${expects}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Integer issue interface.\n */\nexport interface IntegerIssue<TInput extends number> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'integer';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The validation function.\n */\n readonly requirement: (input: number) => boolean;\n}\n\n/**\n * Integer action interface.\n */\nexport interface IntegerAction<\n TInput extends number,\n TMessage extends ErrorMessage<IntegerIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IntegerIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'integer';\n /**\n * The action reference.\n */\n readonly reference: typeof integer;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: number) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [integer](https://en.wikipedia.org/wiki/Integer) validation action.\n *\n * @returns An integer action.\n */\nexport function integer<TInput extends number>(): IntegerAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [integer](https://en.wikipedia.org/wiki/Integer) validation action.\n *\n * @param message The error message.\n *\n * @returns An integer action.\n */\nexport function integer<\n TInput extends number,\n const TMessage extends ErrorMessage<IntegerIssue<TInput>> | undefined,\n>(message: TMessage): IntegerAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function integer(\n message?: ErrorMessage<IntegerIssue<number>>\n): IntegerAction<number, ErrorMessage<IntegerIssue<number>> | undefined> {\n return {\n kind: 'validation',\n type: 'integer',\n reference: integer,\n async: false,\n expects: null,\n requirement: Number.isInteger,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'integer', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { IP_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * IP issue interface.\n */\nexport interface IpIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'ip';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The IP regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * IP action interface.\n */\nexport interface IpAction<\n TInput extends string,\n TMessage extends ErrorMessage<IpIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IpIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'ip';\n /**\n * The action reference.\n */\n readonly reference: typeof ip;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The IP regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [IP address](https://en.wikipedia.org/wiki/IP_address) validation action.\n *\n * @returns An IP action.\n */\nexport function ip<TInput extends string>(): IpAction<TInput, undefined>;\n\n/**\n * Creates an [IP address](https://en.wikipedia.org/wiki/IP_address) validation action.\n *\n * @param message The error message.\n *\n * @returns An IP action.\n */\nexport function ip<\n TInput extends string,\n const TMessage extends ErrorMessage<IpIssue<TInput>> | undefined,\n>(message: TMessage): IpAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function ip(\n message?: ErrorMessage<IpIssue<string>>\n): IpAction<string, ErrorMessage<IpIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'ip',\n reference: ip,\n async: false,\n expects: null,\n requirement: IP_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'IP', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { IPV4_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * IPv4 issue interface.\n */\nexport interface Ipv4Issue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'ipv4';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The IPv4 regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * IPv4 action interface.\n */\nexport interface Ipv4Action<\n TInput extends string,\n TMessage extends ErrorMessage<Ipv4Issue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, Ipv4Issue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'ipv4';\n /**\n * The action reference.\n */\n readonly reference: typeof ipv4;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The IPv4 regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [IPv4](https://en.wikipedia.org/wiki/IPv4) address validation action.\n *\n * @returns An IPv4 action.\n */\nexport function ipv4<TInput extends string>(): Ipv4Action<TInput, undefined>;\n\n/**\n * Creates an [IPv4](https://en.wikipedia.org/wiki/IPv4) address validation action.\n *\n * @param message The error message.\n *\n * @returns An IPv4 action.\n */\nexport function ipv4<\n TInput extends string,\n const TMessage extends ErrorMessage<Ipv4Issue<TInput>> | undefined,\n>(message: TMessage): Ipv4Action<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function ipv4(\n message?: ErrorMessage<Ipv4Issue<string>>\n): Ipv4Action<string, ErrorMessage<Ipv4Issue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'ipv4',\n reference: ipv4,\n async: false,\n expects: null,\n requirement: IPV4_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'IPv4', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { IPV6_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * IPv6 issue interface.\n */\nexport interface Ipv6Issue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'ipv6';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The IPv6 regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * IPv6 action interface.\n */\nexport interface Ipv6Action<\n TInput extends string,\n TMessage extends ErrorMessage<Ipv6Issue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, Ipv6Issue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'ipv6';\n /**\n * The action reference.\n */\n readonly reference: typeof ipv6;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The IPv6 regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [IPv6](https://en.wikipedia.org/wiki/IPv6) address validation action.\n *\n * @returns An IPv6 action.\n */\nexport function ipv6<TInput extends string>(): Ipv6Action<TInput, undefined>;\n\n/**\n * Creates an [IPv6](https://en.wikipedia.org/wiki/IPv6) address validation action.\n *\n * @param message The error message.\n *\n * @returns An IPv6 action.\n */\nexport function ipv6<\n TInput extends string,\n const TMessage extends ErrorMessage<Ipv6Issue<TInput>> | undefined,\n>(message: TMessage): Ipv6Action<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function ipv6(\n message?: ErrorMessage<Ipv6Issue<string>>\n): Ipv6Action<string, ErrorMessage<Ipv6Issue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'ipv6',\n reference: ipv6,\n async: false,\n expects: null,\n requirement: IPV6_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'IPv6', dataset, config);\n }\n return dataset;\n },\n };\n}\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 */\nexport function _isIsbn10(input: string): boolean {\n const digits = input.split('').map((c) => (c === 'X' ? 10 : parseInt(c)));\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n sum += digits[i] * (10 - i);\n }\n return sum % 11 === 0;\n}\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 */\nexport function _isIsbn13(input: string): boolean {\n const digits = input.split('').map((c) => parseInt(c));\n let sum = 0;\n for (let i = 0; i < 13; i++) {\n sum += digits[i] * (i % 2 === 0 ? 1 : 3);\n }\n return sum % 10 === 0;\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport { _isIsbn10 } from './_isIsbn10.js';\nimport { _isIsbn13 } from './_isIsbn13.js';\n\n/**\n * ISBN issue interface.\n */\nexport interface IsbnIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'isbn';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n}\n\n/**\n * ISBN action interface.\n */\nexport interface IsbnAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsbnIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsbnIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'isbn';\n /**\n * The action reference.\n */\n readonly reference: typeof isbn;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * ISBN separator regex.\n */\nconst ISBN_SEPARATOR_REGEX = /[- ]/gu;\n\n/**\n * ISBN-10 detection regex.\n */\nconst ISBN_10_DETECTION_REGEX = /^\\d{9}[\\dX]$/u;\n\n/**\n * ISBN-13 detection regex.\n */\nconst ISBN_13_DETECTION_REGEX = /^\\d{13}$/u;\n\n/**\n * Creates an [ISBN](https://en.wikipedia.org/wiki/ISBN) action.\n *\n * @returns An ISBN action.\n *\n * @beta\n */\nexport function isbn<TInput extends string>(): IsbnAction<TInput, undefined>;\n\n/**\n * Creates an [ISBN](https://en.wikipedia.org/wiki/ISBN) action.\n *\n * @param message The error message.\n *\n * @returns An ISBN action.\n *\n * @beta\n */\nexport function isbn<\n TInput extends string,\n const TMessage extends ErrorMessage<IsbnIssue<TInput>> | undefined,\n>(message: TMessage): IsbnAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isbn(\n message?: ErrorMessage<IsbnIssue<string>>\n): IsbnAction<string, ErrorMessage<IsbnIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'isbn',\n reference: isbn,\n async: false,\n expects: null,\n requirement(input) {\n const replacedInput = input.replace(ISBN_SEPARATOR_REGEX, '');\n if (ISBN_10_DETECTION_REGEX.test(replacedInput)) {\n return _isIsbn10(replacedInput);\n } else if (ISBN_13_DETECTION_REGEX.test(replacedInput)) {\n return _isIsbn13(replacedInput);\n }\n return false;\n },\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'ISBN', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISO_DATE_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISO date issue interface.\n */\nexport interface IsoDateIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'iso_date';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISO date regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISO date action interface.\n */\nexport interface IsoDateAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsoDateIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsoDateIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'iso_date';\n /**\n * The action reference.\n */\n readonly reference: typeof isoDate;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISO date regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISO date](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: yyyy-mm-dd\n *\n * Hint: The regex used cannot validate the maximum number of days based on\n * year and month. For example, \"2023-06-31\" is valid although June has only\n * 30 days.\n *\n * @returns An ISO date action.\n */\nexport function isoDate<TInput extends string>(): IsoDateAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [ISO date](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: yyyy-mm-dd\n *\n * Hint: The regex used cannot validate the maximum number of days based on\n * year and month. For example, \"2023-06-31\" is valid although June has only\n * 30 days.\n *\n * @param message The error message.\n *\n * @returns An ISO date action.\n */\nexport function isoDate<\n TInput extends string,\n const TMessage extends ErrorMessage<IsoDateIssue<TInput>> | undefined,\n>(message: TMessage): IsoDateAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isoDate(\n message?: ErrorMessage<IsoDateIssue<string>>\n): IsoDateAction<string, ErrorMessage<IsoDateIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'date', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISO_DATE_TIME_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISO date time issue interface.\n */\nexport interface IsoDateTimeIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'iso_date_time';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISO date time regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISO date time action interface.\n */\nexport interface IsoDateTimeAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsoDateTimeIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsoDateTimeIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'iso_date_time';\n /**\n * The action reference.\n */\n readonly reference: typeof isoDateTime;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISO date time regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISO date time](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: yyyy-mm-ddThh:mm\n *\n * Hint: The regex used cannot validate the maximum number of days based on\n * year and month. For example, \"2023-06-31T00:00\" is valid although June has only\n * 30 days.\n *\n * Hint: The regex also allows a space as a separator between the date and time\n * parts instead of the \"T\" character.\n *\n * @returns An ISO date time action.\n */\nexport function isoDateTime<TInput extends string>(): IsoDateTimeAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [ISO date time](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: yyyy-mm-ddThh:mm\n *\n * Hint: The regex used cannot validate the maximum number of days based on\n * year and month. For example, \"2023-06-31T00:00\" is valid although June has only\n * 30 days.\n *\n * Hint: The regex also allows a space as a separator between the date and time\n * parts instead of the \"T\" character.\n *\n * @param message The error message.\n *\n * @returns An ISO date time action.\n */\nexport function isoDateTime<\n TInput extends string,\n const TMessage extends ErrorMessage<IsoDateTimeIssue<TInput>> | undefined,\n>(message: TMessage): IsoDateTimeAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isoDateTime(\n message?: ErrorMessage<IsoDateTimeIssue<string>>\n): IsoDateTimeAction<\n string,\n ErrorMessage<IsoDateTimeIssue<string>> | undefined\n> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'date-time', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISO_TIME_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISO time issue interface.\n */\nexport interface IsoTimeIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'iso_time';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISO time regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISO time action interface.\n */\nexport interface IsoTimeAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsoTimeIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsoTimeIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'iso_time';\n /**\n * The action reference.\n */\n readonly reference: typeof isoTime;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISO time regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISO time](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: hh:mm\n *\n * @returns An ISO time action.\n */\nexport function isoTime<TInput extends string>(): IsoTimeAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [ISO time](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: hh:mm\n *\n * @param message The error message.\n *\n * @returns An ISO time action.\n */\nexport function isoTime<\n TInput extends string,\n const TMessage extends ErrorMessage<IsoTimeIssue<TInput>> | undefined,\n>(message: TMessage): IsoTimeAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isoTime(\n message?: ErrorMessage<IsoTimeIssue<string>>\n): IsoTimeAction<string, ErrorMessage<IsoTimeIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'time', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISO_TIME_SECOND_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISO time second issue interface.\n */\nexport interface IsoTimeSecondIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'iso_time_second';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISO time with seconds regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISO time second action interface.\n */\nexport interface IsoTimeSecondAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsoTimeSecondIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsoTimeSecondIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'iso_time_second';\n /**\n * The action reference.\n */\n readonly reference: typeof isoTimeSecond;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISO time second regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISO time second](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: hh:mm:ss\n *\n * @returns An ISO time second action.\n */\nexport function isoTimeSecond<TInput extends string>(): IsoTimeSecondAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [ISO time second](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: hh:mm:ss\n *\n * @param message The error message.\n *\n * @returns An ISO time second action.\n */\nexport function isoTimeSecond<\n TInput extends string,\n const TMessage extends ErrorMessage<IsoTimeSecondIssue<TInput>> | undefined,\n>(message: TMessage): IsoTimeSecondAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isoTimeSecond(\n message?: ErrorMessage<IsoTimeSecondIssue<string>>\n): IsoTimeSecondAction<\n string,\n ErrorMessage<IsoTimeSecondIssue<string>> | undefined\n> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'time-second', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISO_TIMESTAMP_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISO timestamp issue interface.\n */\nexport interface IsoTimestampIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'iso_timestamp';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISO timestamp regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISO timestamp action interface.\n */\nexport interface IsoTimestampAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsoTimestampIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsoTimestampIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'iso_timestamp';\n /**\n * The action reference.\n */\n readonly reference: typeof isoTimestamp;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISO timestamp regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISO timestamp](https://en.wikipedia.org/wiki/ISO_8601) validation\n * action.\n *\n * Formats:\n * - yyyy-mm-ddThh:mm:ss.sssZ\n * - yyyy-mm-ddThh:mm:ss.sss±hh:mm\n * - yyyy-mm-ddThh:mm:ss.sss±hhmm\n *\n * Hint: To support timestamps with lower or higher accuracy, the millisecond\n * specification can be removed or contain up to 9 digits.\n *\n * Hint: The regex used cannot validate the maximum number of days based on\n * year and month. For example, \"2023-06-31T00:00:00.000Z\" is valid although\n * June has only 30 days.\n *\n * Hint: The regex also allows a space as a separator between the date and time\n * parts instead of the \"T\" character.\n *\n * Hint: The regex also allows a space before the UTC offset (e.g., \" +00:00\")\n * to support PostgreSQL's `timestamptz` output format.\n *\n * @returns An ISO timestamp action.\n */\nexport function isoTimestamp<TInput extends string>(): IsoTimestampAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [ISO timestamp](https://en.wikipedia.org/wiki/ISO_8601) validation\n * action.\n *\n * Formats:\n * - yyyy-mm-ddThh:mm:ss.sssZ\n * - yyyy-mm-ddThh:mm:ss.sss±hh:mm\n * - yyyy-mm-ddThh:mm:ss.sss±hhmm\n * - yyyy-mm-ddThh:mm:ss.sss±hh\n *\n * Hint: To support timestamps with lower or higher accuracy, the millisecond\n * specification can be removed or contain up to 9 digits.\n *\n * Hint: The regex used cannot validate the maximum number of days based on\n * year and month. For example, \"2023-06-31T00:00:00.000Z\" is valid although\n * June has only 30 days.\n *\n * Hint: The regex also allows a space as a separator between the date and time\n * parts instead of the \"T\" character.\n *\n * Hint: The regex also allows a space before the UTC offset (e.g., \" +00:00\")\n * to support PostgreSQL's `timestamptz` output format.\n *\n * @param message The error message.\n *\n * @returns An ISO timestamp action.\n */\nexport function isoTimestamp<\n TInput extends string,\n const TMessage extends ErrorMessage<IsoTimestampIssue<TInput>> | undefined,\n>(message: TMessage): IsoTimestampAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isoTimestamp(\n message?: ErrorMessage<IsoTimestampIssue<string>>\n): IsoTimestampAction<\n string,\n ErrorMessage<IsoTimestampIssue<string>> | undefined\n> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'timestamp', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISO_WEEK_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISO week issue interface.\n */\nexport interface IsoWeekIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'iso_week';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISO week regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISO week action interface.\n */\nexport interface IsoWeekAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsoWeekIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsoWeekIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'iso_week';\n /**\n * The action reference.\n */\n readonly reference: typeof isoWeek;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISO week regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISO week](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: yyyy-Www\n *\n * Hint: The regex used cannot validate the maximum number of weeks based on\n * the year. For example, \"2021W53\" is valid although 2021 has only 52 weeks.\n *\n * @returns An ISO week action.\n */\nexport function isoWeek<TInput extends string>(): IsoWeekAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates an [ISO week](https://en.wikipedia.org/wiki/ISO_8601) validation action.\n *\n * Format: yyyy-Www\n *\n * Hint: The regex used cannot validate the maximum number of weeks based on\n * the year. For example, \"2021W53\" is valid although 2021 has only 52 weeks.\n *\n * @param message The error message.\n *\n * @returns An ISO week action.\n */\nexport function isoWeek<\n TInput extends string,\n const TMessage extends ErrorMessage<IsoWeekIssue<TInput>> | undefined,\n>(message: TMessage): IsoWeekAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isoWeek(\n message?: ErrorMessage<IsoWeekIssue<string>>\n): IsoWeekAction<string, ErrorMessage<IsoWeekIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'week', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { ISRC_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ISRC issue interface.\n */\nexport interface IsrcIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'isrc';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ISRC regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ISRC action interface.\n */\nexport interface IsrcAction<\n TInput extends string,\n TMessage extends ErrorMessage<IsrcIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, IsrcIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'isrc';\n /**\n * The action reference.\n */\n readonly reference: typeof isrc;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ISRC regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code) validation action.\n *\n * Formats:\n * - CCXXXYYNNNNN\n * - CC-XXX-YY-NNNNN\n *\n * @returns An ISRC action.\n *\n * @beta\n */\nexport function isrc<TInput extends string>(): IsrcAction<TInput, undefined>;\n\n/**\n * Creates an [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code) validation action.\n *\n * @param message The error message.\n *\n * @returns An ISRC action.\n *\n * @beta\n */\nexport function isrc<\n TInput extends string,\n const TMessage extends ErrorMessage<IsrcIssue<TInput>> | undefined,\n>(message: TMessage): IsrcAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function isrc(\n message?: ErrorMessage<IsrcIssue<string>>\n): IsrcAction<string, ErrorMessage<IsrcIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'isrc',\n reference: isrc,\n async: false,\n expects: null,\n requirement: ISRC_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'ISRC', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { JWS_COMPACT_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * JWS compact issue interface.\n *\n * @beta\n */\nexport interface JwsCompactIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'jws_compact';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The JWS compact regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * JWS compact action interface.\n *\n * @beta\n */\nexport interface JwsCompactAction<\n TInput extends string,\n TMessage extends ErrorMessage<JwsCompactIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, JwsCompactIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'jws_compact';\n /**\n * The action reference.\n */\n readonly reference: typeof jwsCompact;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The JWS compact regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [JWS compact serialization](https://datatracker.ietf.org/doc/html/rfc7515#section-3.1)\n * validation action.\n *\n * Hint: This validation action only checks the three-part compact string shape\n * with unpadded Base64URL-like segments. It does not decode the segments,\n * verify the signature, or validate claims.\n *\n * @returns A JWS compact action.\n *\n * @beta\n */\nexport function jwsCompact<TInput extends string>(): JwsCompactAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [JWS compact serialization](https://datatracker.ietf.org/doc/html/rfc7515#section-3.1)\n * validation action.\n *\n * Hint: This validation action only checks the three-part compact string shape\n * with unpadded Base64URL-like segments. It does not decode the segments,\n * verify the signature, or validate claims.\n *\n * @param message The error message.\n *\n * @returns A JWS compact action.\n *\n * @beta\n */\nexport function jwsCompact<\n TInput extends string,\n const TMessage extends ErrorMessage<JwsCompactIssue<TInput>> | undefined,\n>(message: TMessage): JwsCompactAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function jwsCompact(\n message?: ErrorMessage<JwsCompactIssue<string>>\n): JwsCompactAction<string, ErrorMessage<JwsCompactIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'jws_compact',\n reference: jwsCompact,\n async: false,\n expects: null,\n requirement: JWS_COMPACT_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'JWS compact', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { LengthInput } from './types.js';\n\n/**\n * Length issue interface.\n */\nexport interface LengthIssue<\n TInput extends LengthInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'length';\n /**\n * The expected property.\n */\n readonly expected: `${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The required length.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Length action interface.\n */\nexport interface LengthAction<\n TInput extends LengthInput,\n TRequirement extends number,\n TMessage extends ErrorMessage<LengthIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, LengthIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'length';\n /**\n * The action reference.\n */\n readonly reference: typeof length;\n /**\n * The expected property.\n */\n readonly expects: `${TRequirement}`;\n /**\n * The required length.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a length validation action.\n *\n * @param requirement The required length.\n *\n * @returns A length action.\n */\nexport function length<\n TInput extends LengthInput,\n const TRequirement extends number,\n>(requirement: TRequirement): LengthAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a length validation action.\n *\n * @param requirement The required length.\n * @param message The error message.\n *\n * @returns A length action.\n */\nexport function length<\n TInput extends LengthInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<LengthIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): LengthAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function length(\n requirement: number,\n message?: ErrorMessage<LengthIssue<LengthInput, number>>\n): LengthAction<\n LengthInput,\n number,\n ErrorMessage<LengthIssue<LengthInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'length',\n reference: length,\n async: false,\n expects: `${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.length !== this.requirement) {\n _addIssue(this, 'length', dataset, config, {\n received: `${dataset.value.length}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Less than value issue type.\n */\nexport interface LtValueIssue<\n TInput extends ValueInput,\n TRequirement extends TInput,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'lt_value';\n /**\n * The expected property.\n */\n readonly expected: `<${string}`;\n /**\n * The less than value.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Less than value action type.\n */\nexport interface LtValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n TMessage extends ErrorMessage<LtValueIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, LtValueIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'lt_value';\n /**\n * The action reference.\n */\n readonly reference: typeof ltValue;\n /**\n * The expected property.\n */\n readonly expects: `<${string}`;\n /**\n * The less than value.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a less than value validation action.\n *\n * @param requirement The less than value.\n *\n * @returns A less than value action.\n */\nexport function ltValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): LtValueAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a less than value validation action.\n *\n * @param requirement The less than value.\n * @param message The error message.\n *\n * @returns A less than value action.\n */\nexport function ltValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n const TMessage extends\n | ErrorMessage<LtValueIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): LtValueAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function ltValue(\n requirement: ValueInput,\n message?: ErrorMessage<LtValueIssue<ValueInput, ValueInput>>\n): LtValueAction<\n ValueInput,\n ValueInput,\n ErrorMessage<LtValueIssue<ValueInput, ValueInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'lt_value',\n reference: ltValue,\n async: false,\n expects: `<${requirement instanceof Date\n ? requirement.toJSON()\n : _stringify(requirement)\n }`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !(dataset.value < this.requirement)) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import { MAC_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * MAC issue interface.\n */\nexport interface MacIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'mac';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The MAC regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * MAC action interface.\n */\nexport interface MacAction<\n TInput extends string,\n TMessage extends ErrorMessage<MacIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, MacIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'mac';\n /**\n * The action reference.\n */\n readonly reference: typeof mac;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The MAC regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [MAC address](https://en.wikipedia.org/wiki/MAC_address) validation action.\n *\n * @returns A MAC action.\n */\nexport function mac<TInput extends string>(): MacAction<TInput, undefined>;\n\n/**\n * Creates a [MAC address](https://en.wikipedia.org/wiki/MAC_address) validation action.\n *\n * @param message The error message.\n *\n * @returns A MAC action.\n */\nexport function mac<\n TInput extends string,\n const TMessage extends ErrorMessage<MacIssue<TInput>> | undefined,\n>(message: TMessage): MacAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function mac(\n message?: ErrorMessage<MacIssue<string>>\n): MacAction<string, ErrorMessage<MacIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'mac',\n reference: mac,\n async: false,\n expects: null,\n requirement: MAC_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'MAC', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { MAC48_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * 48-bit MAC issue interface.\n */\nexport interface Mac48Issue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'mac48';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The 48-bit MAC regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * 48-bit MAC action interface.\n */\nexport interface Mac48Action<\n TInput extends string,\n TMessage extends ErrorMessage<Mac48Issue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, Mac48Issue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'mac48';\n /**\n * The action reference.\n */\n readonly reference: typeof mac48;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The 48-bit MAC regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a 48-bit [MAC address](https://en.wikipedia.org/wiki/MAC_address) validation action.\n *\n * @returns A 48-bit MAC action.\n */\nexport function mac48<TInput extends string>(): Mac48Action<TInput, undefined>;\n\n/**\n * Creates a 48-bit [MAC address](https://en.wikipedia.org/wiki/MAC_address) validation action.\n *\n * @param message The error message.\n *\n * @returns A 48-bit MAC action.\n */\nexport function mac48<\n TInput extends string,\n const TMessage extends ErrorMessage<Mac48Issue<TInput>> | undefined,\n>(message: TMessage): Mac48Action<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function mac48(\n message?: ErrorMessage<Mac48Issue<string>>\n): Mac48Action<string, ErrorMessage<Mac48Issue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'mac48',\n reference: mac48,\n async: false,\n expects: null,\n requirement: MAC48_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, '48-bit MAC', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { MAC64_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * 64-bit MAC issue interface.\n */\nexport interface Mac64Issue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'mac64';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The 64-bit MAC regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * 64-bit MAC action interface.\n */\nexport interface Mac64Action<\n TInput extends string,\n TMessage extends ErrorMessage<Mac64Issue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, Mac64Issue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'mac64';\n /**\n * The action reference.\n */\n readonly reference: typeof mac64;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The 64-bit MAC regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a 64-bit [MAC address](https://en.wikipedia.org/wiki/MAC_address) validation action.\n *\n * @returns A 64-bit MAC action.\n */\nexport function mac64<TInput extends string>(): Mac64Action<TInput, undefined>;\n\n/**\n * Creates a 64-bit [MAC address](https://en.wikipedia.org/wiki/MAC_address) validation action.\n *\n * @param message The error message.\n *\n * @returns A 64-bit MAC action.\n */\nexport function mac64<\n TInput extends string,\n const TMessage extends ErrorMessage<Mac64Issue<TInput>> | undefined,\n>(message: TMessage): Mac64Action<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function mac64(\n message?: ErrorMessage<Mac64Issue<string>>\n): Mac64Action<string, ErrorMessage<Mac64Issue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'mac64',\n reference: mac64,\n async: false,\n expects: null,\n requirement: MAC64_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, '64-bit MAC', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\nimport type { ArrayInput } from './types.js';\n\n/**\n * Array action type.\n */\ntype ArrayAction<TInput extends ArrayInput, TOutput> = (\n item: TInput[number],\n index: number,\n array: TInput\n) => TOutput;\n\n/**\n * Map items action interface.\n */\nexport interface MapItemsAction<TInput extends ArrayInput, TOutput>\n extends BaseTransformation<TInput, TOutput[], never> {\n /**\n * The action type.\n */\n readonly type: 'map_items';\n /**\n * The action reference.\n */\n readonly reference: typeof mapItems;\n /**\n * The map items operation.\n */\n readonly operation: ArrayAction<TInput, TOutput>;\n}\n\n/**\n * Creates a map items transformation action.\n *\n * @param operation The map items operation.\n *\n * @returns A map items action.\n */\nexport function mapItems<TInput extends ArrayInput, TOutput>(\n operation: ArrayAction<TInput, TOutput>\n): MapItemsAction<TInput, TOutput>;\n\n// @__NO_SIDE_EFFECTS__\nexport function mapItems(\n operation: ArrayAction<unknown[], unknown>\n): MapItemsAction<unknown[], unknown> {\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","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getByteCount } from '../utils/index.js';\n\n/**\n * Max bytes issue interface.\n */\nexport interface MaxBytesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_bytes';\n /**\n * The expected property.\n */\n readonly expected: `<=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The maximum bytes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max bytes action interface.\n */\nexport interface MaxBytesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MaxBytesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MaxBytesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'max_bytes';\n /**\n * The action reference.\n */\n readonly reference: typeof maxBytes;\n /**\n * The expected property.\n */\n readonly expects: `<=${TRequirement}`;\n /**\n * The maximum bytes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The maximum bytes.\n *\n * @returns A max bytes action.\n */\nexport function maxBytes<\n TInput extends string,\n const TRequirement extends number,\n>(requirement: TRequirement): MaxBytesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a max [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The maximum bytes.\n * @param message The error message.\n *\n * @returns A max bytes action.\n */\nexport function maxBytes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MaxBytesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MaxBytesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxBytes(\n requirement: number,\n message?: ErrorMessage<MaxBytesIssue<string, number>>\n): MaxBytesAction<\n string,\n number,\n ErrorMessage<MaxBytesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_bytes',\n reference: maxBytes,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const length = _getByteCount(dataset.value);\n if (length > this.requirement) {\n _addIssue(this, 'bytes', dataset, config, {\n received: `${length}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { EntriesInput } from './types.js';\n\n/**\n * Max entries issue interface.\n *\n * @beta\n */\nexport interface MaxEntriesIssue<\n TInput extends EntriesInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_entries';\n /**\n * The expected property.\n */\n readonly expected: `<=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The maximum entries.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max entries action interface.\n *\n * @beta\n */\nexport interface MaxEntriesAction<\n TInput extends EntriesInput,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MaxEntriesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n MaxEntriesIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'max_entries';\n /**\n * The action reference.\n */\n readonly reference: typeof maxEntries;\n /**\n * The expected property.\n */\n readonly expects: `<=${TRequirement}`;\n /**\n * The maximum entries.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max entries validation action.\n *\n * @param requirement The maximum entries.\n *\n * @returns A max entries action.\n *\n * @beta\n */\nexport function maxEntries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n>(requirement: TRequirement): MaxEntriesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a max entries validation action.\n *\n * @param requirement The maximum entries.\n * @param message The error message.\n *\n * @returns A max entries action.\n *\n * @beta\n */\nexport function maxEntries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MaxEntriesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MaxEntriesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxEntries(\n requirement: number,\n message?: ErrorMessage<MaxEntriesIssue<EntriesInput, number>>\n): MaxEntriesAction<\n EntriesInput,\n number,\n ErrorMessage<MaxEntriesIssue<EntriesInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_entries',\n reference: maxEntries,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\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, config, {\n received: `${count}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getGraphemeCount } from '../utils/index.js';\n\n/**\n * Max graphemes issue interface.\n */\nexport interface MaxGraphemesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_graphemes';\n /**\n * The expected property.\n */\n readonly expected: `<=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The maximum graphemes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max graphemes action interface.\n */\nexport interface MaxGraphemesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MaxGraphemesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n MaxGraphemesIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'max_graphemes';\n /**\n * The action reference.\n */\n readonly reference: typeof maxGraphemes;\n /**\n * The expected property.\n */\n readonly expects: `<=${TRequirement}`;\n /**\n * The maximum graphemes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max graphemes validation action.\n *\n * @param requirement The maximum graphemes.\n *\n * @returns A max graphemes action.\n */\nexport function maxGraphemes<\n TInput extends string,\n const TRequirement extends number,\n>(\n requirement: TRequirement\n): MaxGraphemesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a max graphemes validation action.\n *\n * @param requirement The maximum graphemes.\n * @param message The error message.\n *\n * @returns A max graphemes action.\n */\nexport function maxGraphemes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MaxGraphemesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MaxGraphemesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxGraphemes(\n requirement: number,\n message?: ErrorMessage<MaxGraphemesIssue<string, number>>\n): MaxGraphemesAction<\n string,\n number,\n ErrorMessage<MaxGraphemesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_graphemes',\n reference: maxGraphemes,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count > this.requirement) {\n _addIssue(this, 'graphemes', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { LengthInput } from './types.js';\n\n/**\n * Max length issue interface.\n */\nexport interface MaxLengthIssue<\n TInput extends LengthInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_length';\n /**\n * The expected property.\n */\n readonly expected: `<=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The maximum length.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max length action interface.\n */\nexport interface MaxLengthAction<\n TInput extends LengthInput,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MaxLengthIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MaxLengthIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'max_length';\n /**\n * The action reference.\n */\n readonly reference: typeof maxLength;\n /**\n * The expected property.\n */\n readonly expects: `<=${TRequirement}`;\n /**\n * The maximum length.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max length validation action.\n *\n * @param requirement The maximum length.\n *\n * @returns A max length action.\n */\nexport function maxLength<\n TInput extends LengthInput,\n const TRequirement extends number,\n>(requirement: TRequirement): MaxLengthAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a max length validation action.\n *\n * @param requirement The maximum length.\n * @param message The error message.\n *\n * @returns A max length action.\n */\nexport function maxLength<\n TInput extends LengthInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MaxLengthIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MaxLengthAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxLength(\n requirement: number,\n message?: ErrorMessage<MaxLengthIssue<LengthInput, number>>\n): MaxLengthAction<\n LengthInput,\n number,\n ErrorMessage<MaxLengthIssue<LengthInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_length',\n reference: maxLength,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.length > this.requirement) {\n _addIssue(this, 'length', dataset, config, {\n received: `${dataset.value.length}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { SizeInput } from './types.js';\n\n/**\n * Max size issue interface.\n */\nexport interface MaxSizeIssue<\n TInput extends SizeInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_size';\n /**\n * The expected property.\n */\n readonly expected: `<=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The maximum size.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max size action interface.\n */\nexport interface MaxSizeAction<\n TInput extends SizeInput,\n TRequirement extends number,\n TMessage extends ErrorMessage<MaxSizeIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, MaxSizeIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'max_size';\n /**\n * The action reference.\n */\n readonly reference: typeof maxSize;\n /**\n * The expected property.\n */\n readonly expects: `<=${TRequirement}`;\n /**\n * The maximum size.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max size validation action.\n *\n * @param requirement The maximum size.\n *\n * @returns A max size action.\n */\nexport function maxSize<\n TInput extends SizeInput,\n const TRequirement extends number,\n>(requirement: TRequirement): MaxSizeAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a max size validation action.\n *\n * @param requirement The maximum size.\n * @param message The error message.\n *\n * @returns A max size action.\n */\nexport function maxSize<\n TInput extends SizeInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MaxSizeIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MaxSizeAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxSize(\n requirement: number,\n message?: ErrorMessage<MaxSizeIssue<SizeInput, number>>\n): MaxSizeAction<\n SizeInput,\n number,\n ErrorMessage<MaxSizeIssue<SizeInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_size',\n reference: maxSize,\n async: false,\n expects: `<=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.size > this.requirement) {\n _addIssue(this, 'size', dataset, config, {\n received: `${dataset.value.size}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Max value issue interface.\n */\nexport interface MaxValueIssue<\n TInput extends ValueInput,\n TRequirement extends ValueInput,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_value';\n /**\n * The expected property.\n */\n readonly expected: `<=${string}`;\n /**\n * The maximum value.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max value action interface.\n */\nexport interface MaxValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n TMessage extends\n | ErrorMessage<MaxValueIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MaxValueIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'max_value';\n /**\n * The action reference.\n */\n readonly reference: typeof maxValue;\n /**\n * The expected property.\n */\n readonly expects: `<=${string}`;\n /**\n * The maximum value.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max value validation action.\n *\n * @param requirement The maximum value.\n *\n * @returns A max value action.\n */\nexport function maxValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): MaxValueAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a max value validation action.\n *\n * @param requirement The maximum value.\n * @param message The error message.\n *\n * @returns A max value action.\n */\nexport function maxValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n const TMessage extends\n | ErrorMessage<MaxValueIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MaxValueAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxValue(\n requirement: ValueInput,\n message?: ErrorMessage<MaxValueIssue<ValueInput, ValueInput>>\n): MaxValueAction<\n ValueInput,\n ValueInput,\n ErrorMessage<MaxValueIssue<ValueInput, ValueInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_value',\n reference: maxValue,\n async: false,\n expects: `<=${requirement instanceof Date\n ? requirement.toJSON()\n : _stringify(requirement)\n }`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !(dataset.value <= this.requirement)) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getWordCount } from '../utils/index.js';\n\n/**\n * Max words issue interface.\n */\nexport interface MaxWordsIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'max_words';\n /**\n * The expected property.\n */\n readonly expected: `<=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The maximum words.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Max words action interface.\n */\nexport interface MaxWordsAction<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MaxWordsIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MaxWordsIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'max_words';\n /**\n * The action reference.\n */\n readonly reference: typeof maxWords;\n /**\n * The expected property.\n */\n readonly expects: `<=${TRequirement}`;\n /**\n * The locales to be used.\n */\n readonly locales: TLocales;\n /**\n * The maximum words.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a max words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The maximum words.\n *\n * @returns A max words action.\n */\nexport function maxWords<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n>(\n locales: TLocales,\n requirement: TRequirement\n): MaxWordsAction<TInput, TLocales, TRequirement, undefined>;\n\n/**\n * Creates a max words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The maximum words.\n * @param message The error message.\n *\n * @returns A max words action.\n */\nexport function maxWords<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MaxWordsIssue<TInput, TRequirement>>\n | undefined,\n>(\n locales: TLocales,\n requirement: TRequirement,\n message: TMessage\n): MaxWordsAction<TInput, TLocales, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function maxWords(\n locales: Intl.LocalesArgument,\n requirement: number,\n message?: ErrorMessage<MaxWordsIssue<string, number>>\n): MaxWordsAction<\n string,\n Intl.LocalesArgument,\n number,\n ErrorMessage<MaxWordsIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'max_words',\n reference: maxWords,\n async: false,\n expects: `<=${requirement}`,\n locales,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count > this.requirement) {\n _addIssue(this, 'words', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type { BaseMetadata } from '../types/index.js';\n\n/**\n * Metadata action interface.\n */\nexport interface MetadataAction<\n TInput,\n TMetadata extends Record<string, unknown>,\n> extends BaseMetadata<TInput> {\n /**\n * The action type.\n */\n readonly type: 'metadata';\n /**\n * The action reference.\n */\n readonly reference: typeof metadata;\n /**\n * The metadata object.\n */\n readonly metadata: TMetadata;\n}\n\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__\nexport function metadata<\n TInput,\n const TMetadata extends Record<string, unknown>,\n>(metadata_: TMetadata): MetadataAction<TInput, TMetadata> {\n return {\n kind: 'metadata',\n type: 'metadata',\n reference: metadata,\n metadata: metadata_,\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _joinExpects } from '../utils/index.js';\n\n/**\n * Requirement type.\n */\ntype Requirement = readonly `${string}/${string}`[];\n\n/**\n * MIME type issue interface.\n */\nexport interface MimeTypeIssue<\n TInput extends Blob,\n TRequirement extends Requirement,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'mime_type';\n /**\n * The expected input.\n */\n readonly expected: string;\n /**\n * The received input.\n */\n readonly received: `\"${string}\"`;\n /**\n * The MIME types.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * MIME type action interface.\n */\nexport interface MimeTypeAction<\n TInput extends Blob,\n TRequirement extends Requirement,\n TMessage extends\n | ErrorMessage<MimeTypeIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MimeTypeIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'mime_type';\n /**\n * The action reference.\n */\n readonly reference: typeof mimeType;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The MIME types.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [MIME type](https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types) validation action.\n *\n * @param requirement The MIME types.\n *\n * @returns A MIME type action.\n */\nexport function mimeType<\n TInput extends Blob,\n const TRequirement extends Requirement,\n>(requirement: TRequirement): MimeTypeAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a [MIME type](https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types) validation action.\n *\n * @param requirement The MIME types.\n * @param message The error message.\n *\n * @returns A MIME type action.\n */\nexport function mimeType<\n TInput extends Blob,\n const TRequirement extends Requirement,\n const TMessage extends\n | ErrorMessage<MimeTypeIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MimeTypeAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function mimeType(\n requirement: Requirement,\n message?: ErrorMessage<MimeTypeIssue<Blob, Requirement>>\n): MimeTypeAction<\n Blob,\n Requirement,\n ErrorMessage<MimeTypeIssue<Blob, Requirement>> | undefined\n> {\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,\n '~run'(dataset, config) {\n if (\n dataset.typed &&\n !this.requirement.includes(dataset.value.type as `${string}/${string}`)\n ) {\n _addIssue(this, 'MIME type', dataset, config, {\n received: `\"${dataset.value.type}\"`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getByteCount } from '../utils/index.js';\n\n/**\n * Min bytes issue interface.\n */\nexport interface MinBytesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_bytes';\n /**\n * The expected property.\n */\n readonly expected: `>=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The minimum bytes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min bytes action interface.\n */\nexport interface MinBytesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MinBytesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MinBytesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'min_bytes';\n /**\n * The action reference.\n */\n readonly reference: typeof minBytes;\n /**\n * The expected property.\n */\n readonly expects: `>=${TRequirement}`;\n /**\n * The minimum bytes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The minimum bytes.\n *\n * @returns A min bytes action.\n */\nexport function minBytes<\n TInput extends string,\n const TRequirement extends number,\n>(requirement: TRequirement): MinBytesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a min [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The minimum bytes.\n * @param message The error message.\n *\n * @returns A min bytes action.\n */\nexport function minBytes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MinBytesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MinBytesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minBytes(\n requirement: number,\n message?: ErrorMessage<MinBytesIssue<string, number>>\n): MinBytesAction<\n string,\n number,\n ErrorMessage<MinBytesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_bytes',\n reference: minBytes,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const length = _getByteCount(dataset.value);\n if (length < this.requirement) {\n _addIssue(this, 'bytes', dataset, config, {\n received: `${length}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { EntriesInput } from './types.js';\n\n/**\n * Min entries issue interface.\n *\n * @beta\n */\nexport interface MinEntriesIssue<\n TInput extends EntriesInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_entries';\n /**\n * The expected property.\n */\n readonly expected: `>=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The minimum entries.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min entries action interface.\n *\n * @beta\n */\nexport interface MinEntriesAction<\n TInput extends EntriesInput,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MinEntriesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n MinEntriesIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'min_entries';\n /**\n * The action reference.\n */\n readonly reference: typeof minEntries;\n /**\n * The expected property.\n */\n readonly expects: `>=${TRequirement}`;\n /**\n * The minimum entries.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min entries validation action.\n *\n * @param requirement The minimum entries.\n *\n * @returns A min entries action.\n *\n * @beta\n */\nexport function minEntries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n>(requirement: TRequirement): MinEntriesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a min entries validation action.\n *\n * @param requirement The minimum entries.\n * @param message The error message.\n *\n * @returns A min entries action.\n *\n * @beta\n */\nexport function minEntries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MinEntriesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MinEntriesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minEntries(\n requirement: number,\n message?: ErrorMessage<MinEntriesIssue<EntriesInput, number>>\n): MinEntriesAction<\n EntriesInput,\n number,\n ErrorMessage<MinEntriesIssue<EntriesInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_entries',\n reference: minEntries,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\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, config, {\n received: `${count}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getGraphemeCount } from '../utils/index.js';\n\n/**\n * Min graphemes issue interface.\n */\nexport interface MinGraphemesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_graphemes';\n /**\n * The expected property.\n */\n readonly expected: `>=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The minimum graphemes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min graphemes action interface.\n */\nexport interface MinGraphemesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MinGraphemesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n MinGraphemesIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'min_graphemes';\n /**\n * The action reference.\n */\n readonly reference: typeof minGraphemes;\n /**\n * The expected property.\n */\n readonly expects: `>=${TRequirement}`;\n /**\n * The minimum graphemes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min graphemes validation action.\n *\n * @param requirement The minimum graphemes.\n *\n * @returns A min graphemes action.\n */\nexport function minGraphemes<\n TInput extends string,\n const TRequirement extends number,\n>(\n requirement: TRequirement\n): MinGraphemesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a min graphemes validation action.\n *\n * @param requirement The minimum graphemes.\n * @param message The error message.\n *\n * @returns A min graphemes action.\n */\nexport function minGraphemes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MinGraphemesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MinGraphemesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minGraphemes(\n requirement: number,\n message?: ErrorMessage<MinGraphemesIssue<string, number>>\n): MinGraphemesAction<\n string,\n number,\n ErrorMessage<MinGraphemesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_graphemes',\n reference: minGraphemes,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count < this.requirement) {\n _addIssue(this, 'graphemes', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { LengthInput } from './types.js';\n\n/**\n * Min length issue interface.\n */\nexport interface MinLengthIssue<\n TInput extends LengthInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_length';\n /**\n * The expected property.\n */\n readonly expected: `>=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The minimum length.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min length action interface.\n */\nexport interface MinLengthAction<\n TInput extends LengthInput,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MinLengthIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MinLengthIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'min_length';\n /**\n * The action reference.\n */\n readonly reference: typeof minLength;\n /**\n * The expected property.\n */\n readonly expects: `>=${TRequirement}`;\n /**\n * The minimum length.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min length validation action.\n *\n * @param requirement The minimum length.\n *\n * @returns A min length action.\n */\nexport function minLength<\n TInput extends LengthInput,\n const TRequirement extends number,\n>(requirement: TRequirement): MinLengthAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a min length validation action.\n *\n * @param requirement The minimum length.\n * @param message The error message.\n *\n * @returns A min length action.\n */\nexport function minLength<\n TInput extends LengthInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MinLengthIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MinLengthAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minLength(\n requirement: number,\n message?: ErrorMessage<MinLengthIssue<LengthInput, number>>\n): MinLengthAction<\n LengthInput,\n number,\n ErrorMessage<MinLengthIssue<LengthInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_length',\n reference: minLength,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.length < this.requirement) {\n _addIssue(this, 'length', dataset, config, {\n received: `${dataset.value.length}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { SizeInput } from './types.js';\n\n/**\n * Min size issue interface.\n */\nexport interface MinSizeIssue<\n TInput extends SizeInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_size';\n /**\n * The expected property.\n */\n readonly expected: `>=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The minimum size.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min size action interface.\n */\nexport interface MinSizeAction<\n TInput extends SizeInput,\n TRequirement extends number,\n TMessage extends ErrorMessage<MinSizeIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, MinSizeIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'min_size';\n /**\n * The action reference.\n */\n readonly reference: typeof minSize;\n /**\n * The expected property.\n */\n readonly expects: `>=${TRequirement}`;\n /**\n * The minimum size.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min size validation action.\n *\n * @param requirement The minimum size.\n *\n * @returns A min size action.\n */\nexport function minSize<\n TInput extends SizeInput,\n const TRequirement extends number,\n>(requirement: TRequirement): MinSizeAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a min size validation action.\n *\n * @param requirement The minimum size.\n * @param message The error message.\n *\n * @returns A min size action.\n */\nexport function minSize<\n TInput extends SizeInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MinSizeIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MinSizeAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minSize(\n requirement: number,\n message?: ErrorMessage<MinSizeIssue<SizeInput, number>>\n): MinSizeAction<\n SizeInput,\n number,\n ErrorMessage<MinSizeIssue<SizeInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_size',\n reference: minSize,\n async: false,\n expects: `>=${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.size < this.requirement) {\n _addIssue(this, 'size', dataset, config, {\n received: `${dataset.value.size}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Min value issue interface.\n */\nexport interface MinValueIssue<\n TInput extends ValueInput,\n TRequirement extends ValueInput,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_value';\n /**\n * The expected property.\n */\n readonly expected: `>=${string}`;\n /**\n * The minimum value.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min value action interface.\n */\nexport interface MinValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n TMessage extends\n | ErrorMessage<MinValueIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MinValueIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'min_value';\n /**\n * The action reference.\n */\n readonly reference: typeof minValue;\n /**\n * The expected property.\n */\n readonly expects: `>=${string}`;\n /**\n * The minimum value.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min value validation action.\n *\n * @param requirement The minimum value.\n *\n * @returns A min value action.\n */\nexport function minValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): MinValueAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a min value validation action.\n *\n * @param requirement The minimum value.\n * @param message The error message.\n *\n * @returns A min value action.\n */\nexport function minValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n const TMessage extends\n | ErrorMessage<MinValueIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MinValueAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minValue(\n requirement: ValueInput,\n message?: ErrorMessage<MinValueIssue<ValueInput, ValueInput>>\n): MinValueAction<\n ValueInput,\n ValueInput,\n ErrorMessage<MinValueIssue<ValueInput, ValueInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_value',\n reference: minValue,\n async: false,\n expects: `>=${requirement instanceof Date\n ? requirement.toJSON()\n : _stringify(requirement)\n }`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !(dataset.value >= this.requirement)) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getWordCount } from '../utils/index.js';\n\n/**\n * Min words issue interface.\n */\nexport interface MinWordsIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'min_words';\n /**\n * The expected property.\n */\n readonly expected: `>=${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The minimum words.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Min words action interface.\n */\nexport interface MinWordsAction<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<MinWordsIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, MinWordsIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'min_words';\n /**\n * The action reference.\n */\n readonly reference: typeof minWords;\n /**\n * The expected property.\n */\n readonly expects: `>=${TRequirement}`;\n /**\n * The locales to be used.\n */\n readonly locales: TLocales;\n /**\n * The minimum words.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a min words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The minimum words.\n *\n * @returns A min words action.\n */\nexport function minWords<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n>(\n locales: TLocales,\n requirement: TRequirement\n): MinWordsAction<TInput, TLocales, TRequirement, undefined>;\n\n/**\n * Creates a min words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The minimum words.\n * @param message The error message.\n *\n * @returns A min words action.\n */\nexport function minWords<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MinWordsIssue<TInput, TRequirement>>\n | undefined,\n>(\n locales: TLocales,\n requirement: TRequirement,\n message: TMessage\n): MinWordsAction<TInput, TLocales, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function minWords(\n locales: Intl.LocalesArgument,\n requirement: number,\n message?: ErrorMessage<MinWordsIssue<string, number>>\n): MinWordsAction<\n string,\n Intl.LocalesArgument,\n number,\n ErrorMessage<MinWordsIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'min_words',\n reference: minWords,\n async: false,\n expects: `>=${requirement}`,\n locales,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count < this.requirement) {\n _addIssue(this, 'words', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Input type\n */\ntype Input = number | bigint;\n\n/**\n * Multiple of issue interface.\n */\nexport interface MultipleOfIssue<\n TInput extends Input,\n TRequirement extends Input,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'multiple_of';\n /**\n * The expected property.\n */\n readonly expected: `%${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${TInput}`;\n /**\n * The divisor.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Multiple of action interface.\n */\nexport interface MultipleOfAction<\n TInput extends Input,\n TRequirement extends Input,\n TMessage extends\n | ErrorMessage<MultipleOfIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n MultipleOfIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'multiple_of';\n /**\n * The action reference.\n */\n readonly reference: typeof multipleOf;\n /**\n * The expected property.\n */\n readonly expects: `%${TRequirement}`;\n /**\n * The divisor.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [multiple](https://en.wikipedia.org/wiki/Multiple_(mathematics)) of validation action.\n *\n * @param requirement The divisor.\n *\n * @returns A multiple of action.\n */\nexport function multipleOf<\n TInput extends number,\n const TRequirement extends number,\n>(requirement: TRequirement): MultipleOfAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a [multiple](https://en.wikipedia.org/wiki/Multiple_(mathematics)) of validation action.\n *\n * @param requirement The divisor.\n *\n * @returns A multiple of action.\n */\nexport function multipleOf<\n TInput extends bigint,\n const TRequirement extends bigint,\n>(requirement: TRequirement): MultipleOfAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a [multiple](https://en.wikipedia.org/wiki/Multiple_(mathematics)) of validation action.\n *\n * @param requirement The divisor.\n * @param message The error message.\n *\n * @returns A multiple of action.\n */\nexport function multipleOf<\n TInput extends number,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<MultipleOfIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MultipleOfAction<TInput, TRequirement, TMessage>;\n\n/**\n * Creates a [multiple](https://en.wikipedia.org/wiki/Multiple_(mathematics)) of validation action.\n *\n * @param requirement The divisor.\n * @param message The error message.\n *\n * @returns A multiple of action.\n */\nexport function multipleOf<\n TInput extends bigint,\n const TRequirement extends bigint,\n const TMessage extends\n | ErrorMessage<MultipleOfIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): MultipleOfAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function multipleOf(\n requirement: Input,\n message?: ErrorMessage<MultipleOfIssue<Input, Input>>\n): MultipleOfAction<\n Input,\n Input,\n ErrorMessage<MultipleOfIssue<Input, Input>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'multiple_of',\n reference: multipleOf,\n async: false,\n expects: `%${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n // @ts-expect-error\n if (dataset.typed && dataset.value % this.requirement != 0) {\n _addIssue(this, 'multiple', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { NANO_ID_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Nano ID issue interface.\n */\nexport interface NanoIdIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'nanoid';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: string;\n /**\n * The Nano ID regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Nano ID issue type.\n *\n * @deprecated Use `NanoIdIssue` instead.\n */\nexport type NanoIDIssue<TInput extends string> = NanoIdIssue<TInput>;\n\n/**\n * Nano ID action interface.\n */\nexport interface NanoIdAction<\n TInput extends string,\n TMessage extends ErrorMessage<NanoIdIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, NanoIdIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'nanoid';\n /**\n * The action reference.\n */\n readonly reference: typeof nanoid;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The Nano ID regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Nano ID action type.\n *\n * @deprecated Use `NanoIdAction` instead.\n */\nexport type NanoIDAction<\n TInput extends string,\n TMessage extends ErrorMessage<NanoIdIssue<TInput>> | undefined,\n> = NanoIdAction<TInput, TMessage>;\n\n/**\n * Creates a [Nano ID](https://github.com/ai/nanoid) validation action.\n *\n * @returns A Nano ID action.\n */\nexport function nanoid<TInput extends string>(): NanoIdAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [Nano ID](https://github.com/ai/nanoid) validation action.\n *\n * @param message The error message.\n *\n * @returns A Nano ID action.\n */\nexport function nanoid<\n TInput extends string,\n const TMessage extends ErrorMessage<NanoIdIssue<TInput>> | undefined,\n>(message: TMessage): NanoIdAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nanoid(\n message?: ErrorMessage<NanoIdIssue<string>>\n): NanoIdAction<string, ErrorMessage<NanoIdIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'nanoid',\n reference: nanoid,\n async: false,\n expects: null,\n requirement: NANO_ID_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'Nano ID', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { LengthInput } from './types.js';\n\n/**\n * Non empty issue interface.\n */\nexport interface NonEmptyIssue<TInput extends LengthInput>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'non_empty';\n /**\n * The expected input.\n */\n readonly expected: '!0';\n /**\n * The received input.\n */\n readonly received: '0';\n}\n\n/**\n * Non empty action interface.\n */\nexport interface NonEmptyAction<\n TInput extends LengthInput,\n TMessage extends ErrorMessage<NonEmptyIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, NonEmptyIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'non_empty';\n /**\n * The action reference.\n */\n readonly reference: typeof nonEmpty;\n /**\n * The expected property.\n */\n readonly expects: '!0';\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a non-empty validation action.\n *\n * @returns A non-empty action.\n */\nexport function nonEmpty<TInput extends LengthInput>(): NonEmptyAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a non-empty validation action.\n *\n * @param message The error message.\n *\n * @returns A non-empty action.\n */\nexport function nonEmpty<\n TInput extends LengthInput,\n const TMessage extends ErrorMessage<NonEmptyIssue<TInput>> | undefined,\n>(message: TMessage): NonEmptyAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function nonEmpty(\n message?: ErrorMessage<NonEmptyIssue<LengthInput>>\n): NonEmptyAction<\n LengthInput,\n ErrorMessage<NonEmptyIssue<LengthInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'non_empty',\n reference: nonEmpty,\n async: false,\n expects: '!0',\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.length === 0) {\n _addIssue(this, 'length', dataset, config, {\n received: '0',\n });\n }\n return dataset;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\n\n/**\n * Normalize form type.\n */\nexport type NormalizeForm = 'NFC' | 'NFD' | 'NFKC' | 'NFKD';\n\n/**\n * Normalize action interface.\n */\nexport interface NormalizeAction<TForm extends NormalizeForm | undefined>\n extends BaseTransformation<string, string, never> {\n /**\n * The action type.\n */\n readonly type: 'normalize';\n /**\n * The action reference.\n */\n readonly reference: typeof normalize;\n /**\n * The normalization form.\n */\n readonly form: TForm;\n}\n\n/**\n * Creates a normalize transformation action.\n *\n * @returns A normalize action.\n */\nexport function normalize(): NormalizeAction<undefined>;\n\n/**\n * Creates a normalize transformation action.\n *\n * @param form The normalization form.\n *\n * @returns A normalize action.\n */\nexport function normalize<TForm extends NormalizeForm | undefined>(\n form: TForm\n): NormalizeAction<TForm>;\n\n// @__NO_SIDE_EFFECTS__\nexport function normalize(\n form?: NormalizeForm\n): NormalizeAction<NormalizeForm | undefined> {\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","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getByteCount } from '../utils/index.js';\n\n/**\n * Not bytes issue interface.\n */\nexport interface NotBytesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_bytes';\n /**\n * The expected property.\n */\n readonly expected: `!${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The not required bytes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not bytes action interface.\n */\nexport interface NotBytesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<NotBytesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, NotBytesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'not_bytes';\n /**\n * The action reference.\n */\n readonly reference: typeof notBytes;\n /**\n * The expected property.\n */\n readonly expects: `!${TRequirement}`;\n /**\n * The not required bytes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The not required bytes.\n *\n * @returns A not bytes action.\n */\nexport function notBytes<\n TInput extends string,\n const TRequirement extends number,\n>(requirement: TRequirement): NotBytesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not [bytes](https://en.wikipedia.org/wiki/Byte) validation action.\n *\n * @param requirement The not required bytes.\n * @param message The error message.\n *\n * @returns A not bytes action.\n */\nexport function notBytes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<NotBytesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotBytesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notBytes(\n requirement: number,\n message?: ErrorMessage<NotBytesIssue<string, number>>\n): NotBytesAction<\n string,\n number,\n ErrorMessage<NotBytesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_bytes',\n reference: notBytes,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const length = _getByteCount(dataset.value);\n if (length === this.requirement) {\n _addIssue(this, 'bytes', dataset, config, {\n received: `${length}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { EntriesInput } from './types.js';\n\n/**\n * Not entries issue interface.\n *\n * @beta\n */\nexport interface NotEntriesIssue<\n TInput extends EntriesInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_entries';\n /**\n * The expected property.\n */\n readonly expected: `!${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The not required entries.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not entries action interface.\n *\n * @beta\n */\nexport interface NotEntriesAction<\n TInput extends EntriesInput,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<NotEntriesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n NotEntriesIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'not_entries';\n /**\n * The action reference.\n */\n readonly reference: typeof notEntries;\n /**\n * The expected property.\n */\n readonly expects: `!${TRequirement}`;\n /**\n * The not required entries.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not entries validation action.\n *\n * @param requirement The not required entries.\n *\n * @returns A not entries action.\n *\n * @beta\n */\nexport function notEntries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n>(requirement: TRequirement): NotEntriesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not entries validation action.\n *\n * @param requirement The not required entries.\n * @param message The error message.\n *\n * @returns A not entries action.\n *\n * @beta\n */\nexport function notEntries<\n TInput extends EntriesInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<NotEntriesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotEntriesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notEntries(\n requirement: number,\n message?: ErrorMessage<NotEntriesIssue<EntriesInput, number>>\n): NotEntriesAction<\n EntriesInput,\n number,\n ErrorMessage<NotEntriesIssue<EntriesInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_entries',\n reference: notEntries,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\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, config, {\n received: `${count}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getGraphemeCount } from '../utils/index.js';\n\n/**\n * Not graphemes issue interface.\n */\nexport interface NotGraphemesIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_graphemes';\n /**\n * The expected property.\n */\n readonly expected: `!${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The not required graphemes.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not graphemes action interface.\n */\nexport interface NotGraphemesAction<\n TInput extends string,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<NotGraphemesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n NotGraphemesIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'not_graphemes';\n /**\n * The action reference.\n */\n readonly reference: typeof notGraphemes;\n /**\n * The expected property.\n */\n readonly expects: `!${TRequirement}`;\n /**\n * The not required graphemes.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not graphemes validation action.\n *\n * @param requirement The not required graphemes.\n *\n * @returns A not graphemes action.\n */\nexport function notGraphemes<\n TInput extends string,\n const TRequirement extends number,\n>(\n requirement: TRequirement\n): NotGraphemesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not graphemes validation action.\n *\n * @param requirement The not required graphemes.\n * @param message The error message.\n *\n * @returns A not graphemes action.\n */\nexport function notGraphemes<\n TInput extends string,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<NotGraphemesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotGraphemesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notGraphemes(\n requirement: number,\n message?: ErrorMessage<NotGraphemesIssue<string, number>>\n): NotGraphemesAction<\n string,\n number,\n ErrorMessage<NotGraphemesIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_graphemes',\n reference: notGraphemes,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getGraphemeCount(dataset.value);\n if (count === this.requirement) {\n _addIssue(this, 'graphemes', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { LengthInput } from './types.js';\n\n/**\n * Not length issue interface.\n */\nexport interface NotLengthIssue<\n TInput extends LengthInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_length';\n /**\n * The expected property.\n */\n readonly expected: `!${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${TRequirement}`;\n /**\n * The not required length.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not length action interface.\n */\nexport interface NotLengthAction<\n TInput extends LengthInput,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<NotLengthIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, NotLengthIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'not_length';\n /**\n * The action reference.\n */\n readonly reference: typeof notLength;\n /**\n * The expected property.\n */\n readonly expects: `!${TRequirement}`;\n /**\n * The not required length.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not length validation action.\n *\n * @param requirement The not required length.\n *\n * @returns A not length action.\n */\nexport function notLength<\n TInput extends LengthInput,\n const TRequirement extends number,\n>(requirement: TRequirement): NotLengthAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not length validation action.\n *\n * @param requirement The not required length.\n * @param message The error message.\n *\n * @returns A not length action.\n */\nexport function notLength<\n TInput extends LengthInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<NotLengthIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotLengthAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notLength(\n requirement: number,\n message?: ErrorMessage<NotLengthIssue<LengthInput, number>>\n): NotLengthAction<\n LengthInput,\n number,\n ErrorMessage<NotLengthIssue<LengthInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_length',\n reference: notLength,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.length === this.requirement) {\n _addIssue(this, 'length', dataset, config, {\n received: `${dataset.value.length}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { SizeInput } from './types.js';\n\n/**\n * Not size issue interface.\n */\nexport interface NotSizeIssue<\n TInput extends SizeInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_size';\n /**\n * The expected property.\n */\n readonly expected: `!${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${TRequirement}`;\n /**\n * The not required size.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not size action interface.\n */\nexport interface NotSizeAction<\n TInput extends SizeInput,\n TRequirement extends number,\n TMessage extends ErrorMessage<NotSizeIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, NotSizeIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'not_size';\n /**\n * The action reference.\n */\n readonly reference: typeof notSize;\n /**\n * The expected property.\n */\n readonly expects: `!${TRequirement}`;\n /**\n * The not required size.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not size validation action.\n *\n * @param requirement The not required size.\n *\n * @returns A not size action.\n */\nexport function notSize<\n TInput extends SizeInput,\n const TRequirement extends number,\n>(requirement: TRequirement): NotSizeAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not size validation action.\n *\n * @param requirement The not required size.\n * @param message The error message.\n *\n * @returns A not size action.\n */\nexport function notSize<\n TInput extends SizeInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<NotSizeIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotSizeAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notSize(\n requirement: number,\n message?: ErrorMessage<NotSizeIssue<SizeInput, number>>\n): NotSizeAction<\n SizeInput,\n number,\n ErrorMessage<NotSizeIssue<SizeInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_size',\n reference: notSize,\n async: false,\n expects: `!${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.size === this.requirement) {\n _addIssue(this, 'size', dataset, config, {\n received: `${dataset.value.size}`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Not value issue interface.\n */\nexport interface NotValueIssue<\n TInput extends ValueInput,\n TRequirement extends TInput,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_value';\n /**\n * The expected property.\n */\n readonly expected: `!${string}`;\n /**\n * The not required value.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not value action interface.\n */\nexport interface NotValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n TMessage extends\n | ErrorMessage<NotValueIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, NotValueIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'not_value';\n /**\n * The action reference.\n */\n readonly reference: typeof notValue;\n /**\n * The expected property.\n */\n readonly expects: `!${string}`;\n /**\n * The not required value.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not value validation action.\n *\n * @param requirement The not required value.\n *\n * @returns A not value action.\n */\nexport function notValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): NotValueAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not value validation action.\n *\n * @param requirement The not required value.\n * @param message The error message.\n *\n * @returns A not value action.\n */\nexport function notValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n const TMessage extends\n | ErrorMessage<NotValueIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotValueAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notValue(\n requirement: ValueInput,\n message?: ErrorMessage<NotValueIssue<ValueInput, ValueInput>>\n): NotValueAction<\n ValueInput,\n ValueInput,\n ErrorMessage<NotValueIssue<ValueInput, ValueInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_value',\n reference: notValue,\n async: false,\n expects:\n requirement instanceof Date\n ? `!${requirement.toJSON()}`\n : `!${_stringify(requirement)}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (\n dataset.typed &&\n this.requirement <= dataset.value &&\n this.requirement >= dataset.value\n ) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _joinExpects, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Not values issue type.\n */\nexport interface NotValuesIssue<\n TInput extends ValueInput,\n TRequirement extends readonly TInput[],\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_values';\n /**\n * The expected property.\n */\n readonly expected: `!${string}`;\n /**\n * The not required values.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not values action type.\n */\nexport interface NotValuesAction<\n TInput extends ValueInput,\n TRequirement extends readonly TInput[],\n TMessage extends\n | ErrorMessage<NotValuesIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, NotValuesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'not_values';\n /**\n * The action reference.\n */\n readonly reference: typeof notValues;\n /**\n * The expected property.\n */\n readonly expects: `!${string}`;\n /**\n * The not required values.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not values validation action.\n *\n * @param requirement The not required values.\n *\n * @returns A not values action.\n */\nexport function notValues<\n TInput extends ValueInput,\n const TRequirement extends readonly TInput[],\n>(requirement: TRequirement): NotValuesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a not values validation action.\n *\n * @param requirement The not required values.\n * @param message The error message.\n *\n * @returns A not values action.\n */\nexport function notValues<\n TInput extends ValueInput,\n const TRequirement extends readonly TInput[],\n const TMessage extends\n | ErrorMessage<NotValuesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): NotValuesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notValues(\n requirement: readonly ValueInput[],\n message?: ErrorMessage<NotValuesIssue<ValueInput, readonly ValueInput[]>>\n): NotValuesAction<\n ValueInput,\n readonly ValueInput[],\n ErrorMessage<NotValuesIssue<ValueInput, readonly ValueInput[]>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_values',\n reference: notValues,\n async: false,\n expects: `!${_joinExpects(\n requirement.map((value) =>\n value instanceof Date ? value.toJSON() : _stringify(value)\n ),\n '|'\n )}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (\n dataset.typed &&\n this.requirement.some(\n (value) => value <= dataset.value && value >= dataset.value\n )\n ) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getWordCount } from '../utils/index.js';\n\n/**\n * Not words issue interface.\n */\nexport interface NotWordsIssue<\n TInput extends string,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'not_words';\n /**\n * The expected property.\n */\n readonly expected: `!${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The not required words.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Not words action interface.\n */\nexport interface NotWordsAction<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n TRequirement extends number,\n TMessage extends\n | ErrorMessage<NotWordsIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<TInput, TInput, NotWordsIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'not_words';\n /**\n * The action reference.\n */\n readonly reference: typeof notWords;\n /**\n * The expected property.\n */\n readonly expects: `!${TRequirement}`;\n /**\n * The locales to be used.\n */\n readonly locales: TLocales;\n /**\n * The not required words.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a not words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The not required words.\n *\n * @returns A not words action.\n */\nexport function notWords<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n>(\n locales: TLocales,\n requirement: TRequirement\n): NotWordsAction<TInput, TLocales, TRequirement, undefined>;\n\n/**\n * Creates a not words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The not required words.\n * @param message The error message.\n *\n * @returns A not words action.\n */\nexport function notWords<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<NotWordsIssue<TInput, TRequirement>>\n | undefined,\n>(\n locales: TLocales,\n requirement: TRequirement,\n message: TMessage\n): NotWordsAction<TInput, TLocales, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function notWords(\n locales: Intl.LocalesArgument,\n requirement: number,\n message?: ErrorMessage<NotWordsIssue<string, number>>\n): NotWordsAction<\n string,\n Intl.LocalesArgument,\n number,\n ErrorMessage<NotWordsIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'not_words',\n reference: notWords,\n async: false,\n expects: `!${requirement}`,\n locales,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count === this.requirement) {\n _addIssue(this, 'words', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n","import { OCTAL_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Octal issue interface.\n */\nexport interface OctalIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'octal';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The octal regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Octal action interface.\n */\nexport interface OctalAction<\n TInput extends string,\n TMessage extends ErrorMessage<OctalIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, OctalIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'octal';\n /**\n * The action reference.\n */\n readonly reference: typeof octal;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The octal regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [octal](https://en.wikipedia.org/wiki/Octal) validation action.\n *\n * @returns An octal action.\n */\nexport function octal<TInput extends string>(): OctalAction<TInput, undefined>;\n\n/**\n * Creates an [octal](https://en.wikipedia.org/wiki/Octal) validation action.\n *\n * @param message The error message.\n *\n * @returns An octal action.\n */\nexport function octal<\n TInput extends string,\n const TMessage extends ErrorMessage<OctalIssue<TInput>> | undefined,\n>(message: TMessage): OctalAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function octal(\n message?: ErrorMessage<OctalIssue<string>>\n): OctalAction<string, ErrorMessage<OctalIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'octal',\n reference: octal,\n async: false,\n expects: null,\n requirement: OCTAL_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'octal', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n MaybeReadonly,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue, _joinExpects, _stringify } from '../utils/index.js';\n\nconst TRUTHY = [true, 1, 'true', '1', 'yes', 'y', 'on', 'enabled'];\nconst FALSY = [false, 0, 'false', '0', 'no', 'n', 'off', 'disabled'];\n\n/**\n * Parse boolean config interface.\n *\n * @beta\n */\nexport interface ParseBooleanConfig {\n /**\n * The truthy values.\n */\n truthy?: MaybeReadonly<unknown[]> | undefined;\n /**\n * The falsy values.\n */\n falsy?: MaybeReadonly<unknown[]> | undefined;\n}\n\n/**\n * Parse boolean issue interface.\n *\n * @beta\n */\nexport interface ParseBooleanIssue<TInput> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'parse_boolean';\n /**\n * The expected property.\n */\n readonly expected: string;\n}\n\n/**\n * Parse boolean action interface.\n *\n * @beta\n */\nexport interface ParseBooleanAction<\n TInput,\n TConfig extends ParseBooleanConfig | undefined,\n TMessage extends\n | ErrorMessage<ParseBooleanIssue<TInput>>\n | undefined = undefined,\n> extends BaseTransformation<TInput, boolean, ParseBooleanIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'parse_boolean';\n /**\n * The action reference.\n */\n readonly reference: typeof parseBoolean;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The parse boolean config.\n */\n readonly config: TConfig;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a parse boolean transformation action.\n *\n * @returns A parse boolean action.\n *\n * @beta\n */\nexport function parseBoolean<TInput>(): ParseBooleanAction<\n TInput,\n undefined,\n undefined\n>;\n\n/**\n * Creates a parse boolean transformation action.\n *\n * @param config The parse boolean config.\n *\n * @returns A parse boolean action.\n *\n * @beta\n */\nexport function parseBoolean<\n TInput,\n const TConfig extends ParseBooleanConfig | undefined,\n>(config: TConfig): ParseBooleanAction<TInput, TConfig, undefined>;\n\n/**\n * Creates a parse boolean transformation action.\n *\n * @param config The parse boolean config.\n * @param message The error message.\n *\n * @returns A parse boolean action.\n *\n * @beta\n */\nexport function parseBoolean<\n TInput,\n const TConfig extends ParseBooleanConfig | undefined,\n const TMessage extends ErrorMessage<ParseBooleanIssue<TInput>> | undefined,\n>(\n config: TConfig,\n message: TMessage\n): ParseBooleanAction<TInput, TConfig, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function parseBoolean(\n config?: ParseBooleanConfig,\n message?: ErrorMessage<ParseBooleanIssue<unknown>>\n): ParseBooleanAction<\n unknown,\n ParseBooleanConfig | undefined,\n ErrorMessage<ParseBooleanIssue<unknown>> | undefined\n> {\n const normalize = (v: unknown) =>\n typeof v === 'string' ? v.toLowerCase() : v;\n const truthyRaw = config?.truthy ?? TRUTHY;\n const falsyRaw = config?.falsy ?? FALSY;\n const truthy = config?.truthy ? config.truthy.map(normalize) : TRUTHY;\n const falsy = config?.falsy ? config.falsy.map(normalize) : FALSY;\n return {\n kind: 'transformation',\n type: 'parse_boolean',\n reference: parseBoolean,\n expects: _joinExpects([...truthyRaw, ...falsyRaw].map(_stringify), '|'),\n config,\n message,\n async: false,\n '~run'(dataset, config) {\n const input = normalize(dataset.value);\n if (truthy.includes(input)) {\n dataset.value = true;\n } else if (falsy.includes(input)) {\n dataset.value = false;\n } else {\n _addIssue(this, 'boolean', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n return dataset as OutputDataset<boolean, ParseBooleanIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Parse JSON config interface.\n *\n * @beta\n */\nexport interface ParseJsonConfig {\n /**\n * The JSON reviver function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reviver?: (this: any, key: string, value: any) => any;\n}\n\n/**\n * Parse JSON issue interface.\n *\n * @beta\n */\nexport interface ParseJsonIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'parse_json';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n}\n\n/**\n * Parse JSON action interface.\n *\n * @beta\n */\nexport interface ParseJsonAction<\n TInput extends string,\n TConfig extends ParseJsonConfig | undefined,\n TMessage extends ErrorMessage<ParseJsonIssue<TInput>> | undefined,\n> extends BaseTransformation<TInput, unknown, ParseJsonIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'parse_json';\n /**\n * The action reference.\n */\n readonly reference: typeof parseJson;\n /**\n * The action config.\n */\n readonly config: TConfig;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a parse JSON transformation action.\n *\n * @returns A parse JSON action.\n *\n * @beta\n */\nexport function parseJson<TInput extends string>(): ParseJsonAction<\n TInput,\n undefined,\n undefined\n>;\n\n/**\n * Creates a parse JSON transformation action.\n *\n * @param config The action config.\n *\n * @returns A parse JSON action.\n *\n * @beta\n */\nexport function parseJson<\n TInput extends string,\n const TConfig extends ParseJsonConfig | undefined,\n>(config: TConfig): ParseJsonAction<TInput, TConfig, undefined>;\n\n/**\n * Creates a parse JSON transformation action.\n *\n * @param config The action config.\n * @param message The error message.\n *\n * @returns A parse JSON action.\n *\n * @beta\n */\nexport function parseJson<\n TInput extends string,\n const TConfig extends ParseJsonConfig | undefined,\n const TMessage extends ErrorMessage<ParseJsonIssue<TInput>> | undefined,\n>(\n config: TConfig,\n message: TMessage\n): ParseJsonAction<TInput, TConfig, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function parseJson(\n config?: ParseJsonConfig,\n message?: ErrorMessage<ParseJsonIssue<string>>\n): ParseJsonAction<\n string,\n ParseJsonConfig | undefined,\n ErrorMessage<ParseJsonIssue<string>> | undefined\n> {\n return {\n kind: 'transformation',\n type: 'parse_json',\n reference: parseJson,\n config,\n message,\n async: false,\n '~run'(dataset, config) {\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, config, {\n received: `\"${error.message}\"`,\n });\n // @ts-expect-error\n dataset.typed = false;\n } else {\n throw error;\n }\n }\n return dataset;\n },\n };\n}\n","import type { BaseIssue, OutputDataset } from '../types/index.js';\nimport type { Paths } from './types/partialCheck.js';\n\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__\nexport function _isPartiallyTyped(\n dataset: OutputDataset<unknown, BaseIssue<unknown>>,\n paths: Paths\n): boolean {\n // If issues exist, check if a specified path matches path of a schema issue\n if (dataset.issues) {\n for (const path of paths) {\n for (const issue of dataset.issues) {\n // Hint: We also mark the data as untyped if there are validation\n // issues, since the data could potentially be untyped if a pipeline\n // contains a transformation action.\n\n // Create typed variable\n let typed = false;\n\n // Calculate bound of match check\n const bound = Math.min(path.length, issue.path?.length ?? 0);\n\n // Mark data as typed if any path items of same index do not match\n for (let index = 0; index < bound; index++) {\n if (\n // @ts-expect-error\n path[index] !== issue.path[index].key &&\n // @ts-expect-error\n (path[index] !== '$' || issue.path[index].type !== 'array')\n ) {\n typed = true;\n break;\n }\n }\n\n // Return false if untyped\n if (!typed) {\n return false;\n }\n }\n }\n }\n\n // Return true if typed\n return true;\n}\n","import type { BaseValidation, ErrorMessage } from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type {\n DeepPickN,\n PartialCheckIssue,\n PartialInput,\n Paths,\n RequiredPaths,\n ValidPaths,\n} from './types/partialCheck.js';\nimport { _isPartiallyTyped } from './_isPartiallyTyped.js';\n\n/**\n * Partial check action interface.\n */\nexport interface PartialCheckAction<\n TInput extends PartialInput,\n TPaths extends Paths,\n TSelection extends DeepPickN<TInput, TPaths>,\n TMessage extends ErrorMessage<PartialCheckIssue<TSelection>> | undefined,\n> extends BaseValidation<TInput, TInput, PartialCheckIssue<TSelection>> {\n /**\n * The action type.\n */\n readonly type: 'partial_check';\n /**\n * The action reference.\n */\n readonly reference: typeof partialCheck;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The selected paths.\n */\n readonly paths: TPaths;\n /**\n * The validation function.\n */\n readonly requirement: (input: TSelection) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a partial check validation action.\n *\n * @param paths The selected paths.\n * @param requirement The validation function.\n *\n * @returns A partial check action.\n */\nexport function partialCheck<\n TInput extends PartialInput,\n const TPaths extends RequiredPaths,\n const TSelection extends DeepPickN<TInput, TPaths>,\n>(\n paths: ValidPaths<TInput, TPaths>,\n requirement: (input: TSelection) => boolean\n): PartialCheckAction<TInput, TPaths, TSelection, undefined>;\n\n/**\n * Creates a partial check validation action.\n *\n * @param paths The selected paths.\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns A partial check action.\n */\nexport function partialCheck<\n TInput extends PartialInput,\n const TPaths extends RequiredPaths,\n const TSelection extends DeepPickN<TInput, TPaths>,\n const TMessage extends\n | ErrorMessage<PartialCheckIssue<TSelection>>\n | undefined,\n>(\n paths: ValidPaths<TInput, TPaths>,\n requirement: (input: TSelection) => boolean,\n message: TMessage\n): PartialCheckAction<TInput, TPaths, TSelection, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function partialCheck(\n paths: Paths,\n requirement: (input: PartialInput) => boolean,\n message?: ErrorMessage<PartialCheckIssue<PartialInput>>\n): PartialCheckAction<\n PartialInput,\n Paths,\n PartialInput,\n ErrorMessage<PartialCheckIssue<PartialInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'partial_check',\n reference: partialCheck,\n async: false,\n expects: null,\n paths,\n requirement,\n message,\n '~run'(dataset, config) {\n if (\n (dataset.typed || _isPartiallyTyped(dataset, paths)) &&\n // @ts-expect-error\n !this.requirement(dataset.value)\n ) {\n _addIssue(this, 'input', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseValidationAsync,\n ErrorMessage,\n MaybePromise,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type {\n DeepPickN,\n PartialCheckIssue,\n PartialInput,\n Paths,\n RequiredPaths,\n ValidPaths,\n} from './types/partialCheck.js';\nimport { _isPartiallyTyped } from './_isPartiallyTyped.js';\n\n/**\n * Partial check action async interface.\n */\nexport interface PartialCheckActionAsync<\n TInput extends PartialInput,\n TPaths extends Paths,\n TSelection extends DeepPickN<TInput, TPaths>,\n TMessage extends ErrorMessage<PartialCheckIssue<TSelection>> | undefined,\n> extends BaseValidationAsync<TInput, TInput, PartialCheckIssue<TSelection>> {\n /**\n * The action type.\n */\n readonly type: 'partial_check';\n /**\n * The action reference.\n */\n readonly reference: typeof partialCheckAsync;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The selected paths.\n */\n readonly paths: TPaths;\n /**\n * The validation function.\n */\n readonly requirement: (input: TSelection) => MaybePromise<boolean>;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a partial check validation action.\n *\n * @param paths The selected paths.\n * @param requirement The validation function.\n *\n * @returns A partial check action.\n */\nexport function partialCheckAsync<\n TInput extends PartialInput,\n const TPaths extends RequiredPaths,\n const TSelection extends DeepPickN<TInput, TPaths>,\n>(\n paths: ValidPaths<TInput, TPaths>,\n requirement: (input: TSelection) => MaybePromise<boolean>\n): PartialCheckActionAsync<TInput, TPaths, TSelection, undefined>;\n\n/**\n * Creates a partial check validation action.\n *\n * @param paths The selected paths.\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns A partial check action.\n */\nexport function partialCheckAsync<\n TInput extends PartialInput,\n const TPaths extends RequiredPaths,\n const TSelection extends DeepPickN<TInput, TPaths>,\n const TMessage extends\n | ErrorMessage<PartialCheckIssue<TSelection>>\n | undefined,\n>(\n paths: ValidPaths<TInput, TPaths>,\n requirement: (input: TSelection) => MaybePromise<boolean>,\n message: TMessage\n): PartialCheckActionAsync<TInput, TPaths, TSelection, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function partialCheckAsync(\n paths: Paths,\n requirement: (input: PartialInput) => MaybePromise<boolean>,\n message?: ErrorMessage<PartialCheckIssue<PartialInput>>\n): PartialCheckActionAsync<\n PartialInput,\n Paths,\n PartialInput,\n ErrorMessage<PartialCheckIssue<PartialInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'partial_check',\n reference: partialCheckAsync,\n async: true,\n expects: null,\n paths,\n requirement,\n message,\n async '~run'(dataset, config) {\n if (\n (dataset.typed || _isPartiallyTyped(dataset, paths)) &&\n // @ts-expect-error\n !(await this.requirement(dataset.value))\n ) {\n _addIssue(this, 'input', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseValidation } from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { RawCheckContext, RawCheckIssue } from './types/rawCheck.js';\n\n/**\n * Raw check action interface.\n */\nexport interface RawCheckAction<TInput>\n extends BaseValidation<TInput, TInput, RawCheckIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'raw_check';\n /**\n * The action reference.\n */\n readonly reference: typeof rawCheck;\n /**\n * The expected property.\n */\n readonly expects: null;\n}\n\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__\nexport function rawCheck<TInput>(\n action: (context: RawCheckContext<TInput>) => void\n): RawCheckAction<TInput> {\n return {\n kind: 'validation',\n type: 'raw_check',\n reference: rawCheck,\n async: false,\n expects: null,\n '~run'(dataset, config) {\n action({\n dataset,\n config,\n addIssue: (info) =>\n _addIssue(this, info?.label ?? 'input', dataset, config, info),\n });\n return dataset;\n },\n };\n}\n","import type { BaseValidationAsync, MaybePromise } from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { RawCheckContext, RawCheckIssue } from './types/rawCheck.js';\n\n/**\n * Raw check action async interface.\n */\nexport interface RawCheckActionAsync<TInput>\n extends BaseValidationAsync<TInput, TInput, RawCheckIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'raw_check';\n /**\n * The action reference.\n */\n readonly reference: typeof rawCheckAsync;\n /**\n * The expected property.\n */\n readonly expects: null;\n}\n\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__\nexport function rawCheckAsync<TInput>(\n action: (context: RawCheckContext<TInput>) => MaybePromise<void>\n): RawCheckActionAsync<TInput> {\n return {\n kind: 'validation',\n type: 'raw_check',\n reference: rawCheckAsync,\n async: true,\n expects: null,\n async '~run'(dataset, config) {\n await action({\n dataset,\n config,\n addIssue: (info) =>\n _addIssue(this, info?.label ?? 'input', dataset, config, info),\n });\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { RawTransformContext, RawTransformIssue } from './types/rawTransform.js';\n\n/**\n * Raw transform action interface.\n */\nexport interface RawTransformAction<TInput, TOutput>\n extends BaseTransformation<TInput, TOutput, RawTransformIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'raw_transform';\n /**\n * The action reference.\n */\n readonly reference: typeof rawTransform;\n}\n\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__\nexport function rawTransform<TInput, TOutput>(\n action: (context: RawTransformContext<TInput>) => TOutput\n): RawTransformAction<TInput, TOutput> {\n return {\n kind: 'transformation',\n type: 'raw_transform',\n reference: rawTransform,\n async: false,\n '~run'(dataset, config) {\n // Execute action and get its output\n const output = action({\n dataset,\n config,\n addIssue: (info) =>\n _addIssue(this, info?.label ?? 'input', dataset, config, info),\n NEVER: null as never,\n });\n\n // Update dataset depending on issues\n if (dataset.issues) {\n // @ts-expect-error\n dataset.typed = false;\n } else {\n // @ts-expect-error\n dataset.value = output;\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n TOutput,\n BaseIssue<unknown> | RawTransformIssue<TInput>\n >;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformationAsync,\n MaybePromise,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { RawTransformContext, RawTransformIssue } from './types/rawTransform.js';\n\n/**\n * Raw transform action async interface.\n */\nexport interface RawTransformActionAsync<TInput, TOutput>\n extends BaseTransformationAsync<TInput, TOutput, RawTransformIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'raw_transform';\n /**\n * The action reference.\n */\n readonly reference: typeof rawTransformAsync;\n}\n\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__\nexport function rawTransformAsync<TInput, TOutput>(\n action: (context: RawTransformContext<TInput>) => MaybePromise<TOutput>\n): RawTransformActionAsync<TInput, TOutput> {\n return {\n kind: 'transformation',\n type: 'raw_transform',\n reference: rawTransformAsync,\n async: true,\n async '~run'(dataset, config) {\n // Execute action and get its output\n const output = await action({\n dataset,\n config,\n addIssue: (info) =>\n _addIssue(this, info?.label ?? 'input', dataset, config, info),\n NEVER: null as never,\n });\n\n // Update dataset depending on issues\n if (dataset.issues) {\n // @ts-expect-error\n dataset.typed = false;\n } else {\n // @ts-expect-error\n dataset.value = output;\n }\n\n // Return output dataset\n // @ts-expect-error\n return dataset as OutputDataset<\n TOutput,\n BaseIssue<unknown> | RawTransformIssue<TInput>\n >;\n },\n };\n}\n","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\n\n/**\n * Readonly output type.\n */\ntype ReadonlyOutput<TInput> =\n TInput extends Map<infer TKey, infer TValue>\n ? ReadonlyMap<TKey, TValue>\n : TInput extends Set<infer TValue>\n ? ReadonlySet<TValue>\n : Readonly<TInput>;\n\n/**\n * Readonly action interface.\n */\nexport interface ReadonlyAction<TInput>\n extends BaseTransformation<TInput, ReadonlyOutput<TInput>, never> {\n /**\n * The action type.\n */\n readonly type: 'readonly';\n /**\n * The action reference.\n */\n readonly reference: typeof readonly;\n}\n\n/**\n * Creates a readonly transformation action.\n *\n * @returns A readonly action.\n */\nexport function readonly<TInput>(): ReadonlyAction<TInput>;\n\n// @__NO_SIDE_EFFECTS__\nexport function readonly(): ReadonlyAction<unknown> {\n return {\n kind: 'transformation',\n type: 'readonly',\n reference: readonly,\n async: false,\n '~run'(dataset) {\n return dataset as SuccessDataset<Readonly<unknown>>;\n },\n };\n}\n","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\nimport type { ArrayInput } from './types.js';\n\n/**\n * Array action type.\n */\ntype ArrayAction<TInput extends ArrayInput, TOutput> = (\n output: TOutput,\n item: TInput[number],\n index: number,\n array: TInput\n) => TOutput;\n\n/**\n * Reduce items action interface.\n */\nexport interface ReduceItemsAction<TInput extends ArrayInput, TOutput>\n extends BaseTransformation<TInput, TOutput, never> {\n /**\n * The action type.\n */\n readonly type: 'reduce_items';\n /**\n * The action reference.\n */\n readonly reference: typeof reduceItems;\n /**\n * The reduce items operation.\n */\n readonly operation: ArrayAction<TInput, TOutput>;\n /**\n * The initial value.\n */\n readonly initial: TOutput;\n}\n\n/**\n * Creates a reduce items transformation action.\n *\n * @param operation The reduce items operation.\n * @param initial The initial value.\n *\n * @returns A reduce items action.\n */\nexport function reduceItems<TInput extends ArrayInput, TOutput>(\n operation: ArrayAction<TInput, TOutput>,\n initial: TOutput\n): ReduceItemsAction<TInput, TOutput>;\n\n// @__NO_SIDE_EFFECTS__\nexport function reduceItems(\n operation: ArrayAction<unknown[], unknown>,\n initial: unknown\n): ReduceItemsAction<unknown[], unknown> {\n return {\n kind: 'transformation',\n type: 'reduce_items',\n reference: reduceItems,\n async: false,\n operation,\n initial,\n '~run'(dataset) {\n // @ts-expect-error\n dataset.value = dataset.value.reduce(this.operation, this.initial);\n return dataset as SuccessDataset<unknown>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Regex issue interface.\n */\nexport interface RegexIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'regex';\n /**\n * The expected input.\n */\n readonly expected: string;\n /**\n * The received input.\n */\n readonly received: `\"${string}\"`;\n /**\n * The regex pattern.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Regex action interface.\n */\nexport interface RegexAction<\n TInput extends string,\n TMessage extends ErrorMessage<RegexIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, RegexIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'regex';\n /**\n * The action reference.\n */\n readonly reference: typeof regex;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The regex pattern.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [regex](https://en.wikipedia.org/wiki/Regular_expression) validation action.\n *\n * Hint: Be careful with the global flag `g` in your regex pattern, as it can lead to unexpected results. See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test#using_test_on_a_regex_with_the_global_flag) for more information.\n *\n * @param requirement The regex pattern.\n *\n * @returns A regex action.\n */\nexport function regex<TInput extends string>(\n requirement: RegExp\n): RegexAction<TInput, undefined>;\n\n/**\n * Creates a [regex](https://en.wikipedia.org/wiki/Regular_expression) validation action.\n *\n * Hint: Be careful with the global flag `g` in your regex pattern, as it can lead to unexpected results. See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test#using_test_on_a_regex_with_the_global_flag) for more information.\n *\n * @param requirement The regex pattern.\n * @param message The error message.\n *\n * @returns A regex action.\n */\nexport function regex<\n TInput extends string,\n const TMessage extends ErrorMessage<RegexIssue<TInput>> | undefined,\n>(requirement: RegExp, message: TMessage): RegexAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function regex(\n requirement: RegExp,\n message?: ErrorMessage<RegexIssue<string>>\n): RegexAction<string, ErrorMessage<RegexIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'regex',\n reference: regex,\n async: false,\n expects: `${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'format', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseTransformation,\n InferOutput,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\n/**\n * Returns action type.\n */\nexport interface ReturnsAction<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n> extends BaseTransformation<\n TInput,\n (...args: Parameters<TInput>) => InferOutput<TSchema>,\n never\n> {\n /**\n * The action type.\n */\n readonly type: 'returns';\n /**\n * The action reference.\n */\n readonly reference: typeof returns;\n /**\n * The arguments schema.\n */\n readonly schema: TSchema;\n}\n\n/**\n * Creates a function return transformation action.\n *\n * @param schema The arguments schema.\n *\n * @returns An returns action.\n */\nexport function returns<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends BaseSchema<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): ReturnsAction<TInput, TSchema>;\n\n// @__NO_SIDE_EFFECTS__\nexport function returns(\n schema: BaseSchema<unknown, unknown, BaseIssue<unknown>>\n): ReturnsAction<\n (...args: unknown[]) => unknown,\n BaseSchema<unknown, unknown, BaseIssue<unknown>>\n> {\n return {\n kind: 'transformation',\n type: 'returns',\n reference: returns,\n async: false,\n schema,\n '~run'(dataset, config) {\n const func = dataset.value;\n dataset.value = (...args_) => {\n const returnsDataset = this.schema['~run'](\n { value: func(...args_) },\n config\n );\n if (returnsDataset.issues) {\n throw new ValidationError(returnsDataset.issues);\n }\n return returnsDataset.value;\n };\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseSchema,\n BaseSchemaAsync,\n BaseTransformation,\n InferOutput,\n SuccessDataset,\n} from '../types/index.js';\nimport { ValidationError } from '../utils/index.js';\n\n/**\n * Returns action async type.\n */\nexport interface ReturnsActionAsync<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n> extends BaseTransformation<\n TInput,\n (...args: Parameters<TInput>) => Promise<Awaited<InferOutput<TSchema>>>,\n never\n> {\n /**\n * The action type.\n */\n readonly type: 'returns';\n /**\n * The action reference.\n */\n readonly reference: typeof returnsAsync;\n /**\n * The arguments schema.\n */\n readonly schema: TSchema;\n}\n\n/**\n * Creates a function arguments transformation action.\n *\n * @param schema The arguments schema.\n *\n * @returns An returns action.\n */\nexport function returnsAsync<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TInput extends (...args: any[]) => unknown,\n TSchema extends\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>,\n>(schema: TSchema): ReturnsActionAsync<TInput, TSchema>;\n\n// @__NO_SIDE_EFFECTS__\nexport function returnsAsync(\n schema:\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n): ReturnsActionAsync<\n (...args: unknown[]) => unknown,\n | BaseSchema<unknown, unknown, BaseIssue<unknown>>\n | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>\n> {\n return {\n kind: 'transformation',\n type: 'returns',\n reference: returnsAsync,\n async: false,\n schema,\n '~run'(dataset, config) {\n const func = dataset.value;\n dataset.value = async (...args_) => {\n const returnsDataset = await this.schema['~run'](\n { value: await func(...args_) },\n config\n );\n if (returnsDataset.issues) {\n throw new ValidationError(returnsDataset.issues);\n }\n return returnsDataset.value;\n };\n return dataset as SuccessDataset<\n (...args: unknown[]) => Promise<unknown>\n >;\n },\n };\n}\n","import { RFC_EMAIL_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * RFC email issue interface.\n */\nexport interface RfcEmailIssue<TInput extends string>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'rfc_email';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The RFC email regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * RFC email action interface.\n */\nexport interface RfcEmailAction<\n TInput extends string,\n TMessage extends ErrorMessage<RfcEmailIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, RfcEmailIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'rfc_email';\n /**\n * The action reference.\n */\n readonly reference: typeof rfcEmail;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The RFC email regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [RFC email](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1)\n * validation action.\n *\n * Hint: This validation action intentionally validates the entire RFC 5322\n * specification. If you are interested in an action that only covers common\n * email addresses, please use the `email` action instead.\n *\n * @returns A RFC email action.\n */\nexport function rfcEmail<TInput extends string>(): RfcEmailAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a [RFC email](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1)\n * validation action.\n *\n * Hint: This validation action intentionally validates the entire RFC 5322\n * specification. If you are interested in an action that only covers common\n * email addresses, please use the `email` action instead.\n *\n * @param message The error message.\n *\n * @returns A RFC email action.\n */\nexport function rfcEmail<\n TInput extends string,\n const TMessage extends ErrorMessage<RfcEmailIssue<TInput>> | undefined,\n>(message: TMessage): RfcEmailAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function rfcEmail(\n message?: ErrorMessage<RfcEmailIssue<string>>\n): RfcEmailAction<string, ErrorMessage<RfcEmailIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'email', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Safe integer issue interface.\n */\nexport interface SafeIntegerIssue<TInput extends number>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'safe_integer';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The validation function.\n */\n readonly requirement: (input: number) => boolean;\n}\n\n/**\n * Safe integer action interface.\n */\nexport interface SafeIntegerAction<\n TInput extends number,\n TMessage extends ErrorMessage<SafeIntegerIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, SafeIntegerIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'safe_integer';\n /**\n * The action reference.\n */\n readonly reference: typeof safeInteger;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: number) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a safe integer validation action.\n *\n * @returns A safe integer action.\n */\nexport function safeInteger<TInput extends number>(): SafeIntegerAction<\n TInput,\n undefined\n>;\n\n/**\n * Creates a safe integer validation action.\n *\n * @param message The error message.\n *\n * @returns A safe integer action.\n */\nexport function safeInteger<\n TInput extends number,\n const TMessage extends ErrorMessage<SafeIntegerIssue<TInput>> | undefined,\n>(message: TMessage): SafeIntegerAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function safeInteger(\n message?: ErrorMessage<SafeIntegerIssue<number>>\n): SafeIntegerAction<\n number,\n ErrorMessage<SafeIntegerIssue<number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'safe_integer',\n reference: safeInteger,\n async: false,\n expects: null,\n requirement: Number.isSafeInteger,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'safe integer', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { SizeInput } from './types.js';\n\n/**\n * Size issue interface.\n */\nexport interface SizeIssue<\n TInput extends SizeInput,\n TRequirement extends number,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'size';\n /**\n * The expected property.\n */\n readonly expected: `${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The required size.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Size action interface.\n */\nexport interface SizeAction<\n TInput extends SizeInput,\n TRequirement extends number,\n TMessage extends ErrorMessage<SizeIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, SizeIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'size';\n /**\n * The action reference.\n */\n readonly reference: typeof size;\n /**\n * The expected property.\n */\n readonly expects: `${TRequirement}`;\n /**\n * The required size.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a size validation action.\n *\n * @param requirement The required size.\n *\n * @returns A size action.\n */\nexport function size<\n TInput extends SizeInput,\n const TRequirement extends number,\n>(requirement: TRequirement): SizeAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a size validation action.\n *\n * @param requirement The required size.\n * @param message The error message.\n *\n * @returns A size action.\n */\nexport function size<\n TInput extends SizeInput,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<SizeIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): SizeAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function size(\n requirement: number,\n message?: ErrorMessage<SizeIssue<SizeInput, number>>\n): SizeAction<\n SizeInput,\n number,\n ErrorMessage<SizeIssue<SizeInput, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'size',\n reference: size,\n async: false,\n expects: `${requirement}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && dataset.value.size !== this.requirement) {\n _addIssue(this, 'size', dataset, config, {\n received: `${dataset.value.size}`,\n });\n }\n return dataset;\n },\n };\n}\n","import { SLUG_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Slug issue type.\n */\nexport interface SlugIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'slug';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The slug regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * Slug action type.\n */\nexport interface SlugAction<\n TInput extends string,\n TMessage extends ErrorMessage<SlugIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, SlugIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'slug';\n /**\n * The action reference.\n */\n readonly reference: typeof slug;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The slug regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a [slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) validation action.\n *\n * @returns A slug action.\n */\nexport function slug<TInput extends string>(): SlugAction<TInput, undefined>;\n\n/**\n * Creates a [slug](https://en.wikipedia.org/wiki/Clean_URL#Slug) validation action.\n *\n * @param message The error message.\n *\n * @returns A slug action.\n */\nexport function slug<\n TInput extends string,\n const TMessage extends ErrorMessage<SlugIssue<TInput>> | undefined,\n>(message: TMessage): SlugAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function slug(\n message?: ErrorMessage<SlugIssue<string>>\n): SlugAction<string, ErrorMessage<SlugIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'slug',\n reference: slug,\n async: false,\n expects: null,\n requirement: SLUG_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'slug', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\nimport type { ArrayInput, ArrayRequirement } from './types.js';\n\n/**\n * Some item issue interface.\n */\nexport interface SomeItemIssue<TInput extends ArrayInput>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'some_item';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The validation function.\n */\n readonly requirement: ArrayRequirement<TInput>;\n}\n\n/**\n * Some item action interface.\n */\nexport interface SomeItemAction<\n TInput extends ArrayInput,\n TMessage extends ErrorMessage<SomeItemIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, SomeItemIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'some_item';\n /**\n * The action reference.\n */\n readonly reference: typeof someItem;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: ArrayRequirement<TInput>;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a some item validation action.\n *\n * @param requirement The validation function.\n *\n * @returns A some item action.\n */\nexport function someItem<TInput extends ArrayInput>(\n requirement: ArrayRequirement<TInput>\n): SomeItemAction<TInput, undefined>;\n\n/**\n * Creates a some item validation action.\n *\n * @param requirement The validation function.\n * @param message The error message.\n *\n * @returns A some item action.\n */\nexport function someItem<\n TInput extends ArrayInput,\n const TMessage extends ErrorMessage<SomeItemIssue<TInput>> | undefined,\n>(\n requirement: ArrayRequirement<TInput>,\n message: TMessage\n): SomeItemAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function someItem(\n requirement: ArrayRequirement<unknown[]>,\n message?: ErrorMessage<SomeItemIssue<unknown[]>>\n): SomeItemAction<\n unknown[],\n ErrorMessage<SomeItemIssue<unknown[]>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'some_item',\n reference: someItem,\n async: false,\n expects: null,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !dataset.value.some(this.requirement)) {\n _addIssue(this, 'item', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\nimport type { ArrayInput } from './types.js';\n\n/**\n * Array action type.\n */\ntype ArrayAction<TInput extends ArrayInput> = (\n itemA: TInput[number],\n itemB: TInput[number]\n) => number;\n\n/**\n * Sort items action interface.\n */\nexport interface SortItemsAction<TInput extends ArrayInput>\n extends BaseTransformation<TInput, TInput, never> {\n /**\n * The action type.\n */\n readonly type: 'sort_items';\n /**\n * The action reference.\n */\n readonly reference: typeof sortItems;\n /**\n * The sort items operation.\n */\n readonly operation: ArrayAction<TInput> | undefined;\n}\n\n/**\n * Creates a sort items transformation action.\n *\n * @param operation The sort items operation.\n *\n * @returns A sort items action.\n */\nexport function sortItems<TInput extends ArrayInput>(\n operation?: ArrayAction<TInput>\n): SortItemsAction<TInput>;\n\n// @__NO_SIDE_EFFECTS__\nexport function sortItems(\n operation?: ArrayAction<unknown[]>\n): SortItemsAction<unknown[]> {\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","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Starts with issue interface.\n */\nexport interface StartsWithIssue<\n TInput extends string,\n TRequirement extends string,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'starts_with';\n /**\n * The expected property.\n */\n readonly expected: `\"${TRequirement}\"`;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The start string.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Starts with action interface.\n */\nexport interface StartsWithAction<\n TInput extends string,\n TRequirement extends string,\n TMessage extends\n | ErrorMessage<StartsWithIssue<TInput, TRequirement>>\n | undefined,\n> extends BaseValidation<\n TInput,\n TInput,\n StartsWithIssue<TInput, TRequirement>\n> {\n /**\n * The action type.\n */\n readonly type: 'starts_with';\n /**\n * The action reference.\n */\n readonly reference: typeof startsWith;\n /**\n * The expected property.\n */\n readonly expects: `\"${TRequirement}\"`;\n /**\n * The start string.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a starts with validation action.\n *\n * @param requirement The start string.\n *\n * @returns A starts with action.\n */\nexport function startsWith<\n TInput extends string,\n const TRequirement extends string,\n>(requirement: TRequirement): StartsWithAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a starts with validation action.\n *\n * @param requirement The start string.\n * @param message The error message.\n *\n * @returns A starts with action.\n */\nexport function startsWith<\n TInput extends string,\n const TRequirement extends string,\n const TMessage extends\n | ErrorMessage<StartsWithIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): StartsWithAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function startsWith(\n requirement: string,\n message?: ErrorMessage<StartsWithIssue<string, string>>\n): StartsWithAction<\n string,\n string,\n ErrorMessage<StartsWithIssue<string, string>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'starts_with',\n reference: startsWith,\n async: false,\n expects: `\"${requirement}\"`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !dataset.value.startsWith(this.requirement)) {\n _addIssue(this, 'start', dataset, config, {\n received: `\"${dataset.value.slice(0, this.requirement.length)}\"`,\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * Stringify JSON config interface.\n *\n * @beta\n */\nexport interface StringifyJsonConfig {\n /**\n * The JSON replacer function or array.\n */\n replacer?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((this: any, key: string, value: any) => any) | (number | string)[];\n /**\n * The JSON space option.\n */\n space?: string | number;\n}\n\n/**\n * Stringify JSON issue interface.\n *\n * @beta\n */\nexport interface StringifyJsonIssue<TInput> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'stringify_json';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n}\n\n/**\n * Stringify JSON action interface.\n *\n * @beta\n */\nexport interface StringifyJsonAction<\n TInput,\n TConfig extends StringifyJsonConfig | undefined,\n TMessage extends ErrorMessage<StringifyJsonIssue<TInput>> | undefined,\n> extends BaseTransformation<TInput, string, StringifyJsonIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'stringify_json';\n /**\n * The action reference.\n */\n readonly reference: typeof stringifyJson;\n /**\n * The action config.\n */\n readonly config: TConfig;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a stringify JSON transformation action.\n *\n * @returns A stringify JSON action.\n *\n * @beta\n */\nexport function stringifyJson<TInput>(): StringifyJsonAction<\n TInput,\n undefined,\n undefined\n>;\n\n/**\n * Creates a stringify JSON transformation action.\n *\n * @param config The action config.\n *\n * @returns A stringify JSON action.\n *\n * @beta\n */\nexport function stringifyJson<\n TInput,\n const TConfig extends StringifyJsonConfig | undefined,\n>(config: TConfig): StringifyJsonAction<TInput, TConfig, undefined>;\n\n/**\n * Creates a stringify JSON transformation action.\n *\n * @param config The action config.\n * @param message The error message.\n *\n * @returns A stringify JSON action.\n *\n * @beta\n */\nexport function stringifyJson<\n TInput,\n const TConfig extends StringifyJsonConfig | undefined,\n const TMessage extends ErrorMessage<StringifyJsonIssue<TInput>> | undefined,\n>(\n config: TConfig,\n message: TMessage\n): StringifyJsonAction<TInput, TConfig, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function stringifyJson(\n config?: StringifyJsonConfig,\n message?: ErrorMessage<StringifyJsonIssue<unknown>>\n): StringifyJsonAction<\n unknown,\n StringifyJsonConfig | undefined,\n ErrorMessage<StringifyJsonIssue<unknown>> | undefined\n> {\n return {\n kind: 'transformation',\n type: 'stringify_json',\n reference: stringifyJson,\n message,\n config,\n async: false,\n '~run'(dataset, config) {\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 === undefined) {\n _addIssue(this, 'JSON', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n dataset.value = output;\n } catch (error) {\n if (error instanceof Error) {\n _addIssue(this, 'JSON', dataset, config, {\n received: `\"${error.message}\"`,\n });\n // @ts-expect-error\n dataset.typed = false;\n } else {\n throw error;\n }\n }\n return dataset as OutputDataset<string, StringifyJsonIssue<unknown>>;\n },\n };\n}\n","import type { BaseMetadata } from '../types/index.js';\n\n/**\n * Title action interface.\n */\nexport interface TitleAction<TInput, TTitle extends string>\n extends BaseMetadata<TInput> {\n /**\n * The action type.\n */\n readonly type: 'title';\n /**\n * The action reference.\n */\n readonly reference: typeof title;\n /**\n * The title text.\n */\n readonly title: TTitle;\n}\n\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__\nexport function title<TInput, TTitle extends string>(\n title_: TTitle\n): TitleAction<TInput, TTitle> {\n return {\n kind: 'metadata',\n type: 'title',\n reference: title,\n title: title_,\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * To bigint issue interface.\n */\nexport interface ToBigintIssue<TInput> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'to_bigint';\n /**\n * The expected property.\n */\n readonly expected: null;\n}\n\n/**\n * To bigint action interface.\n */\nexport interface ToBigintAction<\n TInput,\n TMessage extends ErrorMessage<ToBigintIssue<TInput>> | undefined,\n> extends BaseTransformation<TInput, bigint, ToBigintIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'to_bigint';\n /**\n * The action reference.\n */\n readonly reference: typeof toBigint;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a to bigint transformation action.\n *\n * @returns A to bigint action.\n *\n * @beta\n */\nexport function toBigint<TInput>(): ToBigintAction<TInput, undefined>;\n\n/**\n * Creates a to bigint transformation action.\n *\n * @param message The error message.\n *\n * @returns A to bigint action.\n *\n * @beta\n */\nexport function toBigint<\n TInput,\n const TMessage extends ErrorMessage<ToBigintIssue<TInput>> | undefined,\n>(message: TMessage): ToBigintAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function toBigint(\n message?: ErrorMessage<ToBigintIssue<unknown>>\n): ToBigintAction<unknown, ErrorMessage<ToBigintIssue<unknown>> | undefined> {\n return {\n kind: 'transformation',\n type: 'to_bigint',\n reference: toBigint,\n async: false,\n message,\n '~run'(dataset, config) {\n try {\n // @ts-expect-error\n dataset.value = BigInt(dataset.value);\n } catch {\n _addIssue(this, 'bigint', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n return dataset as OutputDataset<bigint, ToBigintIssue<unknown>>;\n },\n };\n}\n","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\n\n/**\n * To boolean action interface.\n */\nexport interface ToBooleanAction<TInput>\n extends BaseTransformation<TInput, boolean, never> {\n /**\n * The action type.\n */\n readonly type: 'to_boolean';\n /**\n * The action reference.\n */\n readonly reference: typeof toBoolean;\n}\n\n/**\n * Creates a to boolean transformation action.\n *\n * @returns A to boolean action.\n *\n * @beta\n */\n// @__NO_SIDE_EFFECTS__\nexport function toBoolean<TInput>(): ToBooleanAction<TInput> {\n return {\n kind: 'transformation',\n type: 'to_boolean',\n reference: toBoolean,\n async: false,\n '~run'(dataset) {\n // @ts-expect-error\n dataset.value = Boolean(dataset.value);\n return dataset as SuccessDataset<boolean>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * To date issue interface.\n */\nexport interface ToDateIssue<TInput> extends BaseIssue<TInput | Date> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'to_date';\n /**\n * The expected property.\n */\n readonly expected: null;\n}\n\n/**\n * To date action interface.\n */\nexport interface ToDateAction<\n TInput,\n TMessage extends ErrorMessage<ToDateIssue<TInput>> | undefined,\n> extends BaseTransformation<TInput, Date, ToDateIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'to_date';\n /**\n * The action reference.\n */\n readonly reference: typeof toDate;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a to date transformation action.\n *\n * @returns A to date action.\n *\n * @beta\n */\nexport function toDate<TInput>(): ToDateAction<TInput, undefined>;\n\n/**\n * Creates a to date transformation action.\n *\n * @param message The error message.\n *\n * @returns A to date action.\n *\n * @beta\n */\nexport function toDate<\n TInput,\n const TMessage extends ErrorMessage<ToDateIssue<TInput>> | undefined,\n>(message: TMessage): ToDateAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function toDate(\n message?: ErrorMessage<ToDateIssue<unknown>>\n): ToDateAction<unknown, ErrorMessage<ToDateIssue<unknown>> | undefined> {\n return {\n kind: 'transformation',\n type: 'to_date',\n reference: toDate,\n async: false,\n message,\n '~run'(dataset, config) {\n try {\n // @ts-expect-error\n dataset.value = new Date(dataset.value);\n // @ts-expect-error\n if (isNaN(dataset.value)) {\n _addIssue(this, 'date', dataset, config, {\n received: '\"Invalid Date\"',\n });\n // @ts-expect-error\n dataset.typed = false;\n }\n } catch {\n _addIssue(this, 'date', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n return dataset as OutputDataset<Date, ToDateIssue<unknown>>;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\n\n/**\n * To lower case action interface.\n */\nexport interface ToLowerCaseAction\n extends BaseTransformation<string, string, never> {\n /**\n * The action type.\n */\n readonly type: 'to_lower_case';\n /**\n * The action reference.\n */\n readonly reference: typeof toLowerCase;\n}\n\n/**\n * Creates a to lower case transformation action.\n *\n * @returns A to lower case action.\n */\n// @__NO_SIDE_EFFECTS__\nexport function toLowerCase(): ToLowerCaseAction {\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","import type { BaseTransformation } from '../types/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * To max value action interface.\n */\nexport interface ToMaxValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n> extends BaseTransformation<TInput, TInput, never> {\n /**\n * The action type.\n */\n readonly type: 'to_max_value';\n /**\n * The action reference.\n */\n readonly reference: typeof toMaxValue;\n /**\n * The maximum value.\n */\n readonly requirement: TRequirement;\n}\n\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__\nexport function toMaxValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): ToMaxValueAction<TInput, TRequirement> {\n return {\n kind: 'transformation',\n type: 'to_max_value',\n reference: toMaxValue,\n async: false,\n requirement,\n '~run'(dataset) {\n dataset.value =\n dataset.value > this.requirement ? this.requirement : dataset.value;\n return dataset;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * To min value action interface.\n */\nexport interface ToMinValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n> extends BaseTransformation<TInput, TInput, never> {\n /**\n * The action type.\n */\n readonly type: 'to_min_value';\n /**\n * The action reference.\n */\n readonly reference: typeof toMinValue;\n /**\n * The minimum value.\n */\n readonly requirement: TRequirement;\n}\n\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__\nexport function toMinValue<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): ToMinValueAction<TInput, TRequirement> {\n return {\n kind: 'transformation',\n type: 'to_min_value',\n reference: toMinValue,\n async: false,\n requirement,\n '~run'(dataset) {\n dataset.value =\n dataset.value < this.requirement ? this.requirement : dataset.value;\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * To number issue interface.\n */\nexport interface ToNumberIssue<TInput> extends BaseIssue<TInput | number> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'to_number';\n /**\n * The expected property.\n */\n readonly expected: null;\n}\n\n/**\n * To number action interface.\n */\nexport interface ToNumberAction<\n TInput,\n TMessage extends ErrorMessage<ToNumberIssue<TInput>> | undefined,\n> extends BaseTransformation<TInput, number, ToNumberIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'to_number';\n /**\n * The action reference.\n */\n readonly reference: typeof toNumber;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a to number transformation action.\n *\n * @returns A to number action.\n *\n * @beta\n */\nexport function toNumber<TInput>(): ToNumberAction<TInput, undefined>;\n\n/**\n * Creates a to number transformation action.\n *\n * @param message The error message.\n *\n * @returns A to number action.\n *\n * @beta\n */\nexport function toNumber<\n TInput,\n const TMessage extends ErrorMessage<ToNumberIssue<TInput>> | undefined,\n>(message: TMessage): ToNumberAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function toNumber(\n message?: ErrorMessage<ToNumberIssue<unknown>>\n): ToNumberAction<unknown, ErrorMessage<ToNumberIssue<unknown>> | undefined> {\n return {\n kind: 'transformation',\n type: 'to_number',\n reference: toNumber,\n async: false,\n message,\n '~run'(dataset, config) {\n try {\n dataset.value = Number(dataset.value);\n // @ts-expect-error\n if (isNaN(dataset.value)) {\n _addIssue(this, 'number', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n } catch {\n _addIssue(this, 'number', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n return dataset as OutputDataset<number, ToNumberIssue<unknown>>;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseTransformation,\n ErrorMessage,\n OutputDataset,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * To string issue interface.\n */\nexport interface ToStringIssue<TInput> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'transformation';\n /**\n * The issue type.\n */\n readonly type: 'to_string';\n /**\n * The expected property.\n */\n readonly expected: null;\n}\n\n/**\n * To string action interface.\n */\nexport interface ToStringAction<\n TInput,\n TMessage extends ErrorMessage<ToStringIssue<TInput>> | undefined,\n> extends BaseTransformation<TInput, string, ToStringIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'to_string';\n /**\n * The action reference.\n */\n readonly reference: typeof toString;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a to string transformation action.\n *\n * @returns A to string action.\n *\n * @beta\n */\nexport function toString<TInput>(): ToStringAction<TInput, undefined>;\n\n/**\n * Creates a to string transformation action.\n *\n * @param message The error message.\n *\n * @returns A to string action.\n *\n * @beta\n */\nexport function toString<\n TInput,\n const TMessage extends ErrorMessage<ToStringIssue<TInput>> | undefined,\n>(message: TMessage): ToStringAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function toString(\n message?: ErrorMessage<ToStringIssue<unknown>>\n): ToStringAction<unknown, ErrorMessage<ToStringIssue<unknown>> | undefined> {\n return {\n kind: 'transformation',\n type: 'to_string',\n reference: toString,\n async: false,\n message,\n '~run'(dataset, config) {\n try {\n dataset.value = String(dataset.value);\n } catch {\n _addIssue(this, 'string', dataset, config);\n // @ts-expect-error\n dataset.typed = false;\n }\n return dataset as OutputDataset<string, ToStringIssue<unknown>>;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\n\n/**\n * To upper case action interface.\n */\nexport interface ToUpperCaseAction\n extends BaseTransformation<string, string, never> {\n /**\n * The action type.\n */\n readonly type: 'to_upper_case';\n /**\n * The action reference.\n */\n readonly reference: typeof toUpperCase;\n}\n\n/**\n * Creates a to upper case transformation action.\n *\n * @returns A to upper case action.\n */\n// @__NO_SIDE_EFFECTS__\nexport function toUpperCase(): ToUpperCaseAction {\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","import type { BaseTransformation, SuccessDataset } from '../types/index.js';\n\n/**\n * Transform action interface.\n */\nexport interface TransformAction<TInput, TOutput>\n extends BaseTransformation<TInput, TOutput, never> {\n /**\n * The action type.\n */\n readonly type: 'transform';\n /**\n * The action reference.\n */\n readonly reference: typeof transform;\n /**\n * The transformation operation.\n */\n readonly operation: (input: TInput) => TOutput;\n}\n\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__\nexport function transform<TInput, TOutput>(\n operation: (input: TInput) => TOutput\n): TransformAction<TInput, TOutput> {\n return {\n kind: 'transformation',\n type: 'transform',\n reference: transform,\n async: false,\n operation,\n '~run'(dataset) {\n // @ts-expect-error\n dataset.value = this.operation(dataset.value);\n // @ts-expect-error\n return dataset as SuccessDataset<TOutput>;\n },\n };\n}\n","import type {\n BaseTransformationAsync,\n SuccessDataset,\n} from '../types/index.js';\n\n/**\n * Transform action async interface.\n */\nexport interface TransformActionAsync<TInput, TOutput>\n extends BaseTransformationAsync<TInput, TOutput, never> {\n /**\n * The action type.\n */\n readonly type: 'transform';\n /**\n * The action reference.\n */\n readonly reference: typeof transformAsync;\n /**\n * The transformation operation.\n */\n readonly operation: (input: TInput) => Promise<TOutput>;\n}\n\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__\nexport function transformAsync<TInput, TOutput>(\n operation: (input: TInput) => Promise<TOutput>\n): TransformActionAsync<TInput, TOutput> {\n return {\n kind: 'transformation',\n type: 'transform',\n reference: transformAsync,\n async: true,\n operation,\n async '~run'(dataset) {\n // @ts-expect-error\n dataset.value = await this.operation(dataset.value);\n // @ts-expect-error\n return dataset as SuccessDataset<TOutput>;\n },\n };\n}\n","import type { BaseTransformation } from '../types/index.js';\n\n/**\n * Trim action interface.\n */\nexport interface TrimAction extends BaseTransformation<string, string, never> {\n /**\n * The action type.\n */\n readonly type: 'trim';\n /**\n * The action reference.\n */\n readonly reference: typeof trim;\n}\n\n/**\n * Creates a trim transformation action.\n *\n * @returns A trim action.\n */\n// @__NO_SIDE_EFFECTS__\nexport function trim(): TrimAction {\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","import type { BaseTransformation } from '../types/index.js';\n\n/**\n * Trim end action interface.\n */\nexport interface TrimEndAction\n extends BaseTransformation<string, string, never> {\n /**\n * The action type.\n */\n readonly type: 'trim_end';\n /**\n * The action reference.\n */\n readonly reference: typeof trimEnd;\n}\n\n/**\n * Creates a trim end transformation action.\n *\n * @returns A trim end action.\n */\n// @__NO_SIDE_EFFECTS__\nexport function trimEnd(): TrimEndAction {\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","import type { BaseTransformation } from '../types/index.js';\n\n/**\n * Trim start action interface.\n */\nexport interface TrimStartAction\n extends BaseTransformation<string, string, never> {\n /**\n * The action type.\n */\n readonly type: 'trim_start';\n /**\n * The action reference.\n */\n readonly reference: typeof trimStart;\n}\n\n/**\n * Creates a trim start transformation action.\n *\n * @returns A trim start action.\n */\n// @__NO_SIDE_EFFECTS__\nexport function trimStart(): TrimStartAction {\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","import { ULID_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * ULID issue interface.\n */\nexport interface UlidIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'ulid';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The ULID regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * ULID action interface.\n */\nexport interface UlidAction<\n TInput extends string,\n TMessage extends ErrorMessage<UlidIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, UlidIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'ulid';\n /**\n * The action reference.\n */\n readonly reference: typeof ulid;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The ULID regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [ULID](https://github.com/ulid/spec) validation action.\n *\n * @returns An ULID action.\n */\nexport function ulid<TInput extends string>(): UlidAction<TInput, undefined>;\n\n/**\n * Creates an [ULID](https://github.com/ulid/spec) validation action.\n *\n * @param message The error message.\n *\n * @returns An ULID action.\n */\nexport function ulid<\n TInput extends string,\n const TMessage extends ErrorMessage<UlidIssue<TInput>> | undefined,\n>(message: TMessage): UlidAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function ulid(\n message?: ErrorMessage<UlidIssue<string>>\n): UlidAction<string, ErrorMessage<UlidIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'ulid',\n reference: ulid,\n async: false,\n expects: null,\n requirement: ULID_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'ULID', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * URL issue interface.\n */\nexport interface UrlIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'url';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n}\n\n/**\n * URL action interface.\n */\nexport interface UrlAction<\n TInput extends string,\n TMessage extends ErrorMessage<UrlIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, UrlIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'url';\n /**\n * The action reference.\n */\n readonly reference: typeof url;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The validation function.\n */\n readonly requirement: (input: string) => boolean;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [URL](https://en.wikipedia.org/wiki/URL) validation action.\n *\n * Hint: The value is passed to the URL constructor to check if it is valid.\n * This check is not perfect. For example, values like \"abc:1234\" are accepted.\n *\n * @returns An URL action.\n */\nexport function url<TInput extends string>(): UrlAction<TInput, undefined>;\n\n/**\n * Creates an [URL](https://en.wikipedia.org/wiki/URL) validation action.\n *\n * Hint: The value is passed to the URL constructor to check if it is valid.\n * This check is not perfect. For example, values like \"abc:1234\" are accepted.\n *\n * @param message The error message.\n *\n * @returns An URL action.\n */\nexport function url<\n TInput extends string,\n const TMessage extends ErrorMessage<UrlIssue<TInput>> | undefined,\n>(message: TMessage): UrlAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function url(\n message?: ErrorMessage<UrlIssue<string>> | undefined\n): UrlAction<string, ErrorMessage<UrlIssue<string>> | undefined> {\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,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement(dataset.value)) {\n _addIssue(this, 'URL', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import { UUID_REGEX } from '../regex.js';\nimport type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue } from '../utils/index.js';\n\n/**\n * UUID issue interface.\n */\nexport interface UuidIssue<TInput extends string> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'uuid';\n /**\n * The expected property.\n */\n readonly expected: null;\n /**\n * The received property.\n */\n readonly received: `\"${string}\"`;\n /**\n * The UUID regex.\n */\n readonly requirement: RegExp;\n}\n\n/**\n * UUID action interface.\n */\nexport interface UuidAction<\n TInput extends string,\n TMessage extends ErrorMessage<UuidIssue<TInput>> | undefined,\n> extends BaseValidation<TInput, TInput, UuidIssue<TInput>> {\n /**\n * The action type.\n */\n readonly type: 'uuid';\n /**\n * The action reference.\n */\n readonly reference: typeof uuid;\n /**\n * The expected property.\n */\n readonly expects: null;\n /**\n * The UUID regex.\n */\n readonly requirement: RegExp;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates an [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) validation action.\n *\n * @returns An UUID action.\n */\nexport function uuid<TInput extends string>(): UuidAction<TInput, undefined>;\n\n/**\n * Creates an [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) validation action.\n *\n * @param message The error message.\n *\n * @returns An UUID action.\n */\nexport function uuid<\n TInput extends string,\n const TMessage extends ErrorMessage<UuidIssue<TInput>> | undefined,\n>(message: TMessage): UuidAction<TInput, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function uuid(\n message?: ErrorMessage<UuidIssue<string>>\n): UuidAction<string, ErrorMessage<UuidIssue<string>> | undefined> {\n return {\n kind: 'validation',\n type: 'uuid',\n reference: uuid,\n async: false,\n expects: null,\n requirement: UUID_REGEX,\n message,\n '~run'(dataset, config) {\n if (dataset.typed && !this.requirement.test(dataset.value)) {\n _addIssue(this, 'UUID', dataset, config);\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Value issue interface.\n */\nexport interface ValueIssue<\n TInput extends ValueInput,\n TRequirement extends TInput,\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'value';\n /**\n * The expected property.\n */\n readonly expected: string;\n /**\n * The required value.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Value action interface.\n */\nexport interface ValueAction<\n TInput extends ValueInput,\n TRequirement extends TInput,\n TMessage extends ErrorMessage<ValueIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, ValueIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'value';\n /**\n * The action reference.\n */\n readonly reference: typeof value;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The required value.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a value validation action.\n *\n * @param requirement The required value.\n *\n * @returns A value action.\n */\nexport function value<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n>(requirement: TRequirement): ValueAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a value validation action.\n *\n * @param requirement The required value.\n * @param message The error message.\n *\n * @returns A value action.\n */\nexport function value<\n TInput extends ValueInput,\n const TRequirement extends TInput,\n const TMessage extends\n | ErrorMessage<ValueIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): ValueAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function value(\n requirement: ValueInput,\n message?: ErrorMessage<ValueIssue<ValueInput, ValueInput>>\n): ValueAction<\n ValueInput,\n ValueInput,\n ErrorMessage<ValueIssue<ValueInput, ValueInput>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'value',\n reference: value,\n async: false,\n expects:\n requirement instanceof Date\n ? requirement.toJSON()\n : _stringify(requirement),\n requirement,\n message,\n '~run'(dataset, config) {\n if (\n dataset.typed &&\n !(\n this.requirement <= dataset.value && this.requirement >= dataset.value\n )\n ) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _joinExpects, _stringify } from '../utils/index.js';\nimport type { ValueInput } from './types.js';\n\n/**\n * Values issue type.\n */\nexport interface ValuesIssue<\n TInput extends ValueInput,\n TRequirement extends readonly TInput[],\n> extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'values';\n /**\n * The expected property.\n */\n readonly expected: string;\n /**\n * The required values.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Values action type.\n */\nexport interface ValuesAction<\n TInput extends ValueInput,\n TRequirement extends readonly TInput[],\n TMessage extends ErrorMessage<ValuesIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, ValuesIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'values';\n /**\n * The action reference.\n */\n readonly reference: typeof values;\n /**\n * The expected property.\n */\n readonly expects: string;\n /**\n * The required values.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a values validation action.\n *\n * @param requirement The required values.\n *\n * @returns A values action.\n */\nexport function values<\n TInput extends ValueInput,\n const TRequirement extends readonly TInput[],\n>(requirement: TRequirement): ValuesAction<TInput, TRequirement, undefined>;\n\n/**\n * Creates a values validation action.\n *\n * @param requirement The required values.\n * @param message The error message.\n *\n * @returns A values action.\n */\nexport function values<\n TInput extends ValueInput,\n const TRequirement extends readonly TInput[],\n const TMessage extends\n | ErrorMessage<ValuesIssue<TInput, TRequirement>>\n | undefined,\n>(\n requirement: TRequirement,\n message: TMessage\n): ValuesAction<TInput, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function values(\n requirement: readonly ValueInput[],\n message?: ErrorMessage<ValuesIssue<ValueInput, readonly ValueInput[]>>\n): ValuesAction<\n ValueInput,\n readonly ValueInput[],\n ErrorMessage<ValuesIssue<ValueInput, readonly ValueInput[]>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'values',\n reference: values,\n async: false,\n expects: `${_joinExpects(\n requirement.map((value) =>\n value instanceof Date ? value.toJSON() : _stringify(value)\n ),\n '|'\n )}`,\n requirement,\n message,\n '~run'(dataset, config) {\n if (\n dataset.typed &&\n !this.requirement.some(\n (value) => value <= dataset.value && value >= dataset.value\n )\n ) {\n _addIssue(this, 'value', dataset, config, {\n received:\n dataset.value instanceof Date\n ? dataset.value.toJSON()\n : _stringify(dataset.value),\n });\n }\n return dataset;\n },\n };\n}\n","import type {\n BaseIssue,\n BaseValidation,\n ErrorMessage,\n} from '../types/index.js';\nimport { _addIssue, _getWordCount } from '../utils/index.js';\n\n/**\n * Words issue interface.\n */\nexport interface WordsIssue<TInput extends string, TRequirement extends number>\n extends BaseIssue<TInput> {\n /**\n * The issue kind.\n */\n readonly kind: 'validation';\n /**\n * The issue type.\n */\n readonly type: 'words';\n /**\n * The expected property.\n */\n readonly expected: `${TRequirement}`;\n /**\n * The received property.\n */\n readonly received: `${number}`;\n /**\n * The required words.\n */\n readonly requirement: TRequirement;\n}\n\n/**\n * Words action interface.\n */\nexport interface WordsAction<\n TInput extends string,\n TLocales extends Intl.LocalesArgument,\n TRequirement extends number,\n TMessage extends ErrorMessage<WordsIssue<TInput, TRequirement>> | undefined,\n> extends BaseValidation<TInput, TInput, WordsIssue<TInput, TRequirement>> {\n /**\n * The action type.\n */\n readonly type: 'words';\n /**\n * The action reference.\n */\n readonly reference: typeof words;\n /**\n * The expected property.\n */\n readonly expects: `${TRequirement}`;\n /**\n * The locales to be used.\n */\n readonly locales: TLocales;\n /**\n * The required words.\n */\n readonly requirement: TRequirement;\n /**\n * The error message.\n */\n readonly message: TMessage;\n}\n\n/**\n * Creates a words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The required words.\n *\n * @returns A words action.\n */\nexport function words<\n TInput extends string,\n const TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n>(\n locales: TLocales,\n requirement: TRequirement\n): WordsAction<TInput, TLocales, TRequirement, undefined>;\n\n/**\n * Creates a words validation action.\n *\n * @param locales The locales to be used.\n * @param requirement The required words.\n * @param message The error message.\n *\n * @returns A words action.\n */\nexport function words<\n TInput extends string,\n const TLocales extends Intl.LocalesArgument,\n const TRequirement extends number,\n const TMessage extends\n | ErrorMessage<WordsIssue<TInput, TRequirement>>\n | undefined,\n>(\n locales: TLocales,\n requirement: TRequirement,\n message: TMessage\n): WordsAction<TInput, TLocales, TRequirement, TMessage>;\n\n// @__NO_SIDE_EFFECTS__\nexport function words(\n locales: Intl.LocalesArgument,\n requirement: number,\n message?: ErrorMessage<WordsIssue<string, number>>\n): WordsAction<\n string,\n Intl.LocalesArgument,\n number,\n ErrorMessage<WordsIssue<string, number>> | undefined\n> {\n return {\n kind: 'validation',\n type: 'words',\n reference: words,\n async: false,\n expects: `${requirement}`,\n locales,\n requirement,\n message,\n '~run'(dataset, config) {\n if (dataset.typed) {\n const count = _getWordCount(this.locales, dataset.value);\n if (count !== this.requirement) {\n _addIssue(this, 'words', dataset, config, {\n received: `${count}`,\n });\n }\n }\n return dataset;\n },\n };\n}\n"],"mappings":"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","names":["store","setGlobalConfig","config","getGlobalConfig","deleteGlobalConfig","store","setGlobalMessage","message","lang","getGlobalMessage","deleteGlobalMessage","store","setSchemaMessage","message","lang","getSchemaMessage","deleteSchemaMessage","store","setSpecificMessage","reference","message","lang","getSpecificMessage","deleteSpecificMessage","_stringify","input","type","_addIssue","context","label","dataset","config","other","input","expected","received","_stringify","issue","isSchema","message","getSpecificMessage","getSchemaMessage","getGlobalMessage","_cloneDataset","dataset","textEncoder","_getByteCount","input","segmenter","_getGraphemeCount","input","segments","count","_","_getLastMetadata","schema","type","nestedSchemas","index","item","nestedSchema","result","_getStandardProps","context","value","getGlobalConfig","store","_getWordCount","locales","input","segments","count","segment","NON_DIGIT_REGEX","_isLuhnAlgo","input","number","length","bit","sum","value","_isValidObjectKey","object","key","_joinExpects","values","separator","list","entriesFromList","list","schema","entries","key","entriesFromObjects","schemas","entries","schema","getDotPath","issue","key","item","isOfKind","kind","object","isOfType","type","object","isValidationError","error","ValidationError","createNode","formatIssues","issues","root","issue","cursor","item","key","flatten","issues","flatErrors","issue","dotPath","getDotPath","summarize","issues","summary","issue","dotPath","getDotPath","ValidationError","issues","summary","summarize","flatten","formatIssues","pipe","_getStandardProps","dataset","config","item","pipeAsync","pipe","_getStandardProps","dataset","config","item","any","_getStandardProps","dataset","array","item","message","_getStandardProps","dataset","config","input","key","value","itemDataset","pathItem","issue","_addIssue","arrayAsync","item","message","_getStandardProps","dataset","config","input","itemDatasets","value","key","itemDataset","pathItem","issue","_addIssue","bigint","message","_getStandardProps","dataset","config","_addIssue","blob","message","_getStandardProps","dataset","config","_addIssue","boolean","message","_getStandardProps","dataset","config","_addIssue","custom","check","message","_getStandardProps","dataset","config","_addIssue","customAsync","check","message","_getStandardProps","dataset","config","_addIssue","date","message","_getStandardProps","dataset","config","_addIssue","enum_","enum__","message","options","key","_joinExpects","_stringify","_getStandardProps","dataset","config","_addIssue","exactOptional","wrapped","default_","_getStandardProps","dataset","config","exactOptionalAsync","wrapped","default_","_getStandardProps","dataset","config","file","message","_getStandardProps","dataset","config","_addIssue","function_","message","_getStandardProps","dataset","config","_addIssue","instance","class_","message","_getStandardProps","dataset","config","_addIssue","_merge","value1","value2","key","dataset","index","intersect","options","message","_joinExpects","option","_getStandardProps","dataset","config","input","outputs","schema","optionDataset","index","mergeDataset","_merge","_addIssue","intersectAsync","options","message","_joinExpects","option","_getStandardProps","dataset","config","input","outputs","optionDatasets","schema","optionDataset","index","mergeDataset","_merge","_addIssue","lazy","getter","_getStandardProps","dataset","config","lazyAsync","getter","_getStandardProps","dataset","config","literal","literal_","message","_stringify","_getStandardProps","dataset","config","_addIssue","assert","schema","input","issues","ValidationError","_LruCache","config","#stringify","input","type","id","key","entry","value","timestamp","cache","schema","config","_LruCache","_getStandardProps","dataset","runConfig","key","outputDataset","_cloneDataset","cacheAsync","schema","config","activeRuns","_LruCache","_getStandardProps","dataset","runConfig","key","cached","_cloneDataset","promise","outputDataset","config","schema","_getStandardProps","dataset","config_","getFallback","schema","dataset","config","fallback","schema","_getStandardProps","dataset","config","outputDataset","getFallback","fallbackAsync","schema","fallback","_getStandardProps","dataset","config","outputDataset","getFallback","forward","action","path","dataset","config","prevIssues","issue","pathInput","key","pathValue","pathItem","forwardAsync","action","path","dataset","config","prevIssues","issue","pathInput","key","pathValue","pathItem","getDefault","schema","dataset","config","getDefaults","schema","object","key","getDefault","getDefaultsAsync","schema","key","value","getDefault","getDescription","schema","_getLastMetadata","getExamples","schema","examples","depthFirstCollect","item","getFallbacks","schema","object","key","getFallback","getFallbacksAsync","schema","key","value","getFallback","getMetadata","schema","result","depthFirstMerge","item","getTitle","schema","_getLastMetadata","is","schema","input","keyof","schema","message","picklist","message","schema","message_","_getStandardProps","dataset","config","omit","schema","keys","entries","key","_getStandardProps","parse","schema","input","config","dataset","getGlobalConfig","ValidationError","parseAsync","schema","input","config","dataset","getGlobalConfig","ValidationError","parser","schema","config","func","input","parse","parserAsync","schema","config","func","input","parseAsync","partial","schema","keys","entries","key","optional","_getStandardProps","partialAsync","schema","keys","entries","key","optionalAsync","_getStandardProps","pick","schema","keys","entries","key","_getStandardProps","required","schema","arg2","arg3","keys","message","entries","key","nonOptional","_getStandardProps","requiredAsync","schema","arg2","arg3","keys","message","entries","key","nonOptionalAsync","_getStandardProps","safeParse","schema","input","config","dataset","getGlobalConfig","safeParseAsync","schema","input","config","dataset","getGlobalConfig","safeParser","schema","config","func","input","safeParse","safeParserAsync","schema","config","func","input","safeParseAsync","unwrap","schema","looseObject","entries","message","_getStandardProps","dataset","config","input","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","_isValidObjectKey","looseObjectAsync","entries","message","_getStandardProps","dataset","config","input","valueDatasets","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","_isValidObjectKey","looseTuple","items","message","_getStandardProps","dataset","config","input","key","value","itemDataset","pathItem","issue","_addIssue","looseTupleAsync","items","message","_getStandardProps","dataset","config","input","itemDatasets","item","key","value","itemDataset","pathItem","issue","_addIssue","map","key","value","message","_getStandardProps","dataset","config","input","inputKey","inputValue","keyDataset","pathItem","issue","valueDataset","_addIssue","mapAsync","key","value","message","_getStandardProps","dataset","config","input","datasets","inputKey","inputValue","keyDataset","valueDataset","pathItem","issue","_addIssue","nan","message","_getStandardProps","dataset","config","_addIssue","never","message","_getStandardProps","dataset","config","_addIssue","nonNullable","wrapped","message","_getStandardProps","dataset","config","_addIssue","nonNullableAsync","wrapped","message","_getStandardProps","dataset","config","_addIssue","nonNullish","wrapped","message","_getStandardProps","dataset","config","_addIssue","nonNullishAsync","wrapped","message","_getStandardProps","dataset","config","_addIssue","nonOptional","wrapped","message","_getStandardProps","dataset","config","_addIssue","nonOptionalAsync","wrapped","message","_getStandardProps","dataset","config","_addIssue","null_","message","_getStandardProps","dataset","config","_addIssue","nullable","wrapped","default_","_getStandardProps","dataset","config","getDefault","nullableAsync","wrapped","default_","_getStandardProps","dataset","config","getDefault","nullish","wrapped","default_","_getStandardProps","dataset","config","getDefault","nullishAsync","wrapped","default_","_getStandardProps","dataset","config","getDefault","number","message","_getStandardProps","dataset","config","_addIssue","object","entries","message","_getStandardProps","dataset","config","input","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","objectAsync","entries","message","_getStandardProps","dataset","config","input","valueDatasets","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","objectWithRest","entries","rest","message","_getStandardProps","dataset","config","input","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","_isValidObjectKey","objectWithRestAsync","entries","rest","message","_getStandardProps","dataset","config","input","normalDatasets","restDatasets","key","valueSchema","value","getDefault","_isValidObjectKey","valueDataset","pathItem","issue","getFallback","_addIssue","optional","wrapped","default_","_getStandardProps","dataset","config","getDefault","optionalAsync","wrapped","default_","_getStandardProps","dataset","config","getDefault","picklist","options","message","_joinExpects","_stringify","_getStandardProps","dataset","config","_addIssue","promise","message","_getStandardProps","dataset","config","_addIssue","record","key","value","message","_getStandardProps","dataset","config","input","entryKey","_isValidObjectKey","entryValue","keyDataset","pathItem","issue","valueDataset","_addIssue","recordAsync","key","value","message","_getStandardProps","dataset","config","input","datasets","_isValidObjectKey","entryKey","entryValue","keyDataset","valueDataset","pathItem","issue","_addIssue","set","value","message","_getStandardProps","dataset","config","input","inputValue","valueDataset","pathItem","issue","_addIssue","setAsync","value","message","_getStandardProps","dataset","config","input","valueDatasets","inputValue","valueDataset","pathItem","issue","_addIssue","strictObject","entries","message","_getStandardProps","dataset","config","input","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","strictObjectAsync","entries","message","_getStandardProps","dataset","config","input","valueDatasets","key","valueSchema","value","getDefault","valueDataset","pathItem","issue","getFallback","_addIssue","strictTuple","items","message","_getStandardProps","dataset","config","input","key","value","itemDataset","pathItem","issue","_addIssue","strictTupleAsync","items","message","_getStandardProps","dataset","config","input","itemDatasets","item","key","value","itemDataset","pathItem","issue","_addIssue","string","message","_getStandardProps","dataset","config","_addIssue","symbol","message","_getStandardProps","dataset","config","_addIssue","tuple","items","message","_getStandardProps","dataset","config","input","key","value","itemDataset","pathItem","issue","_addIssue","tupleAsync","items","message","_getStandardProps","dataset","config","input","itemDatasets","item","key","value","itemDataset","pathItem","issue","_addIssue","tupleWithRest","items","rest","message","_getStandardProps","dataset","config","input","key","value","itemDataset","pathItem","issue","_addIssue","tupleWithRestAsync","items","rest","message","_getStandardProps","dataset","config","input","normalDatasets","restDatasets","item","key","value","itemDataset","pathItem","issue","_addIssue","undefined_","message","_getStandardProps","dataset","config","_addIssue","undefinedable","wrapped","default_","_getStandardProps","dataset","config","getDefault","undefinedableAsync","wrapped","default_","_getStandardProps","dataset","config","getDefault","_subIssues","datasets","issues","dataset","union","options","message","_joinExpects","option","_getStandardProps","dataset","config","validDataset","typedDatasets","untypedDatasets","schema","optionDataset","_addIssue","_subIssues","unionAsync","options","message","_joinExpects","option","_getStandardProps","dataset","config","validDataset","typedDatasets","untypedDatasets","schema","optionDataset","_addIssue","_subIssues","unknown","_getStandardProps","dataset","variant","key","options","message","_getStandardProps","dataset","config","input","outputDataset","maxDiscriminatorPriority","invalidDiscriminatorKey","expectedDiscriminators","parseOptions","allKeys","schema","keysAreValid","currentPriority","currentKey","discriminatorSchema","optionDataset","_addIssue","_joinExpects","variantAsync","key","options","message","_getStandardProps","dataset","config","input","outputDataset","maxDiscriminatorPriority","invalidDiscriminatorKey","expectedDiscriminators","parseOptions","variant","allKeys","schema","keysAreValid","currentPriority","currentKey","discriminatorSchema","optionDataset","_addIssue","_joinExpects","void_","message","_getStandardProps","dataset","config","_addIssue","wrap0","factory","arg","pipe","wrap1","arg0","arg1","wrap2","arg2","wrapAsync1","pipeAsync","wrapAsync2","string","number","boolean","bigint","blob","date","file","function_","nan","never","null_","promise","symbol","undefined_","void_","array","custom","enum_","instance","intersect","literal","looseObject","looseTuple","nonNullable","nonNullish","nonOptional","object","picklist","set","strictObject","strictTuple","tuple","union","map","objectWithRest","record","tupleWithRest","variant","arrayAsync","customAsync","intersectAsync","looseObjectAsync","looseTupleAsync","nonNullableAsync","nonNullishAsync","nonOptionalAsync","objectAsync","setAsync","strictObjectAsync","strictTupleAsync","tupleAsync","unionAsync","mapAsync","objectWithRestAsync","recordAsync","tupleWithRestAsync","variantAsync","fail","message","options","cloneSchema","schema","applyPipeItem","item","toJsonSchema","unwrapSchema","input","root","rest","jsonSchema","properties","required","key","value","option","pointer","path","emailLike","value","validateJsonSchema","schema","input","issues","option","item","index","objectInput","properties","required","key","childSchema","toValidationError","normalized","issue","segment","ValidationError","ajvSafeParse","options","jsonSchema","toJsonSchema","applyPipe","schema","items","pipe","toValidationError","result","ValidationError","ChainSchema","input","config","parse","parseAsync","safeParse","safeParseAsync","defaultValue","wrap","optional","nullable","nullish","messageOrActions","array","other","union","unwrap","intersect","requirement","message","check","operation","transform","nonNullable","toJsonSchema","ajvSafeParse","StringChainSchema","length","minLength","maxLength","email","trim","toLowerCase","NumberChainSchema","value","minValue","maxValue","integer","z","string","number","boolean","literal","entries","object","key","item","options","option","chain","args","schema","dataset","config","func","args_","argsDataset","ValidationError","argsAsync","schema","dataset","config","func","args","argsDataset","ValidationError","awaitAsync","dataset","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_TIME_REGEX","ISO_TIME_SECOND_REGEX","ISO_TIMESTAMP_REGEX","ISO_WEEK_REGEX","JWS_COMPACT_REGEX","ISRC_REGEX","MAC48_REGEX","MAC64_REGEX","MAC_REGEX","NANO_ID_REGEX","OCTAL_REGEX","RFC_EMAIL_REGEX","SLUG_REGEX","ULID_REGEX","UUID_REGEX","base64","message","BASE64_REGEX","dataset","config","_addIssue","bic","message","BIC_REGEX","dataset","config","_addIssue","brand","name","dataset","bytes","requirement","message","dataset","config","length","_getByteCount","_addIssue","check","requirement","message","dataset","config","_addIssue","checkAsync","requirement","message","dataset","config","_addIssue","checkItems","requirement","message","dataset","config","index","item","_addIssue","checkItemsAsync","requirement","message","dataset","config","requirementResults","index","item","_addIssue","CREDIT_CARD_REGEX","SANITIZE_REGEX","PROVIDER_REGEX_LIST","creditCard","message","input","sanitized","regex","_isLuhnAlgo","dataset","config","_addIssue","cuid2","message","CUID2_REGEX","dataset","config","_addIssue","decimal","message","DECIMAL_REGEX","dataset","config","_addIssue","description","description_","digits","message","DIGITS_REGEX","dataset","config","_addIssue","domain","message","DOMAIN_REGEX","dataset","config","_addIssue","email","message","EMAIL_REGEX","dataset","config","_addIssue","emoji","message","EMOJI_REGEX","dataset","config","_addIssue","empty","message","dataset","config","_addIssue","endsWith","requirement","message","dataset","config","_addIssue","entries","requirement","message","dataset","config","count","_addIssue","everyItem","requirement","message","dataset","config","_addIssue","examples","examples_","excludes","requirement","message","received","_stringify","dataset","config","_addIssue","filterItems","operation","dataset","findItem","operation","dataset","finite","message","dataset","config","_addIssue","flavor","name","dataset","graphemes","requirement","message","dataset","config","count","_getGraphemeCount","_addIssue","gtValue","requirement","message","_stringify","dataset","config","_addIssue","guard","requirement","message","dataset","config","_addIssue","HASH_LENGTHS","hash","types","message","type","dataset","config","_addIssue","hexadecimal","message","HEXADECIMAL_REGEX","dataset","config","_addIssue","hexColor","message","HEX_COLOR_REGEX","dataset","config","_addIssue","imei","message","input","IMEI_REGEX","_isLuhnAlgo","dataset","config","_addIssue","includes","requirement","message","expects","_stringify","dataset","config","_addIssue","integer","message","dataset","config","_addIssue","ip","message","IP_REGEX","dataset","config","_addIssue","ipv4","message","IPV4_REGEX","dataset","config","_addIssue","ipv6","message","IPV6_REGEX","dataset","config","_addIssue","_isIsbn10","input","digits","c","sum","i","_isIsbn13","input","digits","c","sum","i","ISBN_SEPARATOR_REGEX","ISBN_10_DETECTION_REGEX","ISBN_13_DETECTION_REGEX","isbn","message","input","replacedInput","_isIsbn10","_isIsbn13","dataset","config","_addIssue","isoDate","message","ISO_DATE_REGEX","dataset","config","_addIssue","isoDateTime","message","ISO_DATE_TIME_REGEX","dataset","config","_addIssue","isoTime","message","ISO_TIME_REGEX","dataset","config","_addIssue","isoTimeSecond","message","ISO_TIME_SECOND_REGEX","dataset","config","_addIssue","isoTimestamp","message","ISO_TIMESTAMP_REGEX","dataset","config","_addIssue","isoWeek","message","ISO_WEEK_REGEX","dataset","config","_addIssue","isrc","message","ISRC_REGEX","dataset","config","_addIssue","jwsCompact","message","JWS_COMPACT_REGEX","dataset","config","_addIssue","length","requirement","message","dataset","config","_addIssue","ltValue","requirement","message","_stringify","dataset","config","_addIssue","mac","message","MAC_REGEX","dataset","config","_addIssue","mac48","message","MAC48_REGEX","dataset","config","_addIssue","mac64","message","MAC64_REGEX","dataset","config","_addIssue","mapItems","operation","dataset","maxBytes","requirement","message","dataset","config","length","_getByteCount","_addIssue","maxEntries","requirement","message","dataset","config","count","_addIssue","maxGraphemes","requirement","message","dataset","config","count","_getGraphemeCount","_addIssue","maxLength","requirement","message","dataset","config","_addIssue","maxSize","requirement","message","dataset","config","_addIssue","maxValue","requirement","message","_stringify","dataset","config","_addIssue","maxWords","locales","requirement","message","dataset","config","count","_getWordCount","_addIssue","metadata","metadata_","mimeType","requirement","message","_joinExpects","option","dataset","config","_addIssue","minBytes","requirement","message","dataset","config","length","_getByteCount","_addIssue","minEntries","requirement","message","dataset","config","count","_addIssue","minGraphemes","requirement","message","dataset","config","count","_getGraphemeCount","_addIssue","minLength","requirement","message","dataset","config","_addIssue","minSize","requirement","message","dataset","config","_addIssue","minValue","requirement","message","_stringify","dataset","config","_addIssue","minWords","locales","requirement","message","dataset","config","count","_getWordCount","_addIssue","multipleOf","requirement","message","dataset","config","_addIssue","nanoid","message","NANO_ID_REGEX","dataset","config","_addIssue","nonEmpty","message","dataset","config","_addIssue","normalize","form","dataset","notBytes","requirement","message","dataset","config","length","_getByteCount","_addIssue","notEntries","requirement","message","dataset","config","count","_addIssue","notGraphemes","requirement","message","dataset","config","count","_getGraphemeCount","_addIssue","notLength","requirement","message","dataset","config","_addIssue","notSize","requirement","message","dataset","config","_addIssue","notValue","requirement","message","_stringify","dataset","config","_addIssue","notValues","requirement","message","_joinExpects","value","_stringify","dataset","config","_addIssue","notWords","locales","requirement","message","dataset","config","count","_getWordCount","_addIssue","octal","message","OCTAL_REGEX","dataset","config","_addIssue","TRUTHY","FALSY","parseBoolean","config","message","normalize","v","truthyRaw","falsyRaw","truthy","falsy","_joinExpects","_stringify","dataset","input","_addIssue","parseJson","config","message","dataset","error","_addIssue","_isPartiallyTyped","dataset","paths","path","issue","typed","bound","index","partialCheck","paths","requirement","message","dataset","config","_isPartiallyTyped","_addIssue","partialCheckAsync","paths","requirement","message","dataset","config","_isPartiallyTyped","_addIssue","rawCheck","action","dataset","config","info","_addIssue","rawCheckAsync","action","dataset","config","info","_addIssue","rawTransform","action","dataset","config","output","info","_addIssue","rawTransformAsync","action","dataset","config","output","info","_addIssue","readonly","dataset","reduceItems","operation","initial","dataset","regex","requirement","message","dataset","config","_addIssue","returns","schema","dataset","config","func","args_","returnsDataset","ValidationError","returnsAsync","schema","dataset","config","func","args_","returnsDataset","ValidationError","rfcEmail","message","RFC_EMAIL_REGEX","dataset","config","_addIssue","safeInteger","message","dataset","config","_addIssue","size","requirement","message","dataset","config","_addIssue","slug","message","SLUG_REGEX","dataset","config","_addIssue","someItem","requirement","message","dataset","config","_addIssue","sortItems","operation","dataset","startsWith","requirement","message","dataset","config","_addIssue","stringifyJson","config","message","dataset","output","_addIssue","error","title","title_","toBigint","message","dataset","config","_addIssue","toBoolean","dataset","toDate","message","dataset","config","_addIssue","toLowerCase","dataset","toMaxValue","requirement","dataset","toMinValue","requirement","dataset","toNumber","message","dataset","config","_addIssue","toString","message","dataset","config","_addIssue","toUpperCase","dataset","transform","operation","dataset","transformAsync","operation","dataset","trim","dataset","trimEnd","dataset","trimStart","dataset","ulid","message","ULID_REGEX","dataset","config","_addIssue","url","message","input","dataset","config","_addIssue","uuid","message","UUID_REGEX","dataset","config","_addIssue","value","requirement","message","_stringify","dataset","config","_addIssue","values","requirement","message","_joinExpects","value","_stringify","dataset","config","_addIssue","words","locales","requirement","message","dataset","config","count","_getWordCount","_addIssue"]}