runcheck 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/runcheck.ts","../src/rc_object.ts","../src/rc_discriminated_union.ts","../src/rc_intersection.ts"],"sourcesContent":["export {\n rc_discriminated_union,\n rc_discriminated_union_builder,\n} from './rc_discriminated_union'\nexport { rc_intersection } from './rc_intersection'\nexport {\n rc_enable_obj_strict,\n rc_get_from_key_as_fallback,\n rc_get_obj_shape,\n rc_obj_builder,\n rc_obj_extends,\n rc_obj_merge,\n rc_obj_omit,\n rc_obj_pick,\n rc_obj_strict,\n rc_object,\n} from './rc_object'\nimport { StandardSchemaV1 } from '@standard-schema/spec'\n\nexport type RcParseResult<T> =\n | {\n /** @deprecated use errors instead */\n error: false\n errors: false\n ok: true\n /** @deprecated use value instead */\n data: T\n value: T\n warnings: string[] | false\n }\n | {\n ok: false\n /** @deprecated use errors instead */\n error: true\n errors: string[]\n }\n\nexport type RcInferType<T extends RcType<any>> =\n T extends RcType<infer U> ? U : never\n\ntype ParseResultCtx = {\n warnings_: string[]\n path_: string\n objErrShortCircuit_: boolean\n objErrKeyIndex_: number\n strictObj_: boolean\n noWarnings_: boolean\n noLooseArray_: boolean\n}\n\ntype InternalParseResult<T> =\n | { ok: true; data: T; errors: undefined }\n | { ok: false; errors: ErrorWithPath[]; data: undefined }\n\ntype WithFallback<T> = (fallback: T | (() => T)) => RcType<T>\n\ntype RemoveArrayNever<T> = T extends never[] ? never : T\n\nexport type RcOptionalKeyType<T> = RcBase<T, true>\n\nexport type RcType<T> = RcBase<T, false>\n\ntype Schema<T> = (t: T) => T\n\nexport type RcBase<T, RequiredKey extends boolean> = {\n __rc_type: Schema<T>\n readonly withFallback: WithFallback<T>\n readonly where: (\n predicate: (input: T) => boolean | { error: string },\n ) => RcType<T>\n /** RcType | undefined */\n readonly optional: () => RcType<T | undefined>\n /** { key?: RcType | undefined } */\n readonly optionalKey: () => RcOptionalKeyType<T | undefined>\n /** RcType | null */\n readonly orNull: () => RcType<T | null>\n /** RcType | null | undefined */\n readonly orNullish: () => RcType<T | null | undefined>\n readonly withAutofix: (\n customAutofix: (input: unknown) => false | { fixed: T },\n ) => RcType<T>\n readonly default: <D extends NotUndefined<T>>(\n defaultValue: D | (() => D),\n ) => RcType<NotUndefined<T> | RemoveArrayNever<D>>\n readonly nullishDefault: <D extends NotNullish<T>>(\n defaultValue: D | (() => D),\n ) => RcType<NotNullish<T> | RemoveArrayNever<D>>\n\n readonly or: <O>(schema: RcType<O>) => RcType<T | O>\n readonly parse: (input: unknown, options?: ParseOptions) => RcParseResult<T>\n\n // This should not be stripped out because it is used in type inference\n readonly _optional_key_?: RequiredKey\n /** @internal */\n readonly _parse_: (\n input: unknown,\n ctx: ParseResultCtx,\n ) => InternalParseResult<T>\n /** @internal */\n readonly _kind_: string\n /** @internal */\n readonly _fallback_: T | (() => T) | undefined\n /** @internal */\n readonly _optional_: boolean\n /** @internal */\n readonly _orNullish_: boolean\n /** @internal */\n readonly _orNull_: boolean\n /** @internal */\n readonly _useAutFix_: boolean\n /** @internal */\n readonly _is_extend_obj_: boolean\n /** @internal */\n readonly _is_object_: boolean\n /** @internal */\n readonly _array_item_type_: RcType<any> | undefined\n /** @internal */\n readonly _show_value_in_error_: boolean\n /** @internal */\n readonly _alternative_key_: string | undefined\n /** @internal */\n _detailed_obj_shape_: string | undefined\n /** @internal */\n readonly _obj_shape_: Record<string, RcType<any>> | undefined\n /** @internal */\n readonly _autoFix_: ((input: unknown) => false | { fixed: T }) | undefined\n}\n\nconst getUndefined = () => undefined\n\nfunction withFallback(this: RcType<any>, fallback: any): RcType<any> {\n return {\n ...this,\n _fallback_: fallback === undefined ? getUndefined : fallback,\n }\n}\n\nfunction defaultMethod<T>(\n this: RcType<T>,\n defaultValue: NotUndefined<T> | (() => NotUndefined<T>),\n): RcType<NotUndefined<T>> {\n return rc_default(this, defaultValue)\n}\n\nfunction nullishDefaultMethod<T>(\n this: RcType<T>,\n defaultValue: NotNullish<T> | (() => NotNullish<T>),\n): RcType<NotNullish<T>> {\n return rc_nullish_default(this, defaultValue)\n}\n\nfunction orMethod<T, O>(this: RcType<T>, schema: RcType<O>): RcType<T | O> {\n return rc_union(this, schema)\n}\n\nfunction parseMethod<T>(\n this: RcType<T>,\n input: unknown,\n options: ParseOptions,\n): RcParseResult<T> {\n return rc_parse(input, this, options)\n}\n\n/** @internal */\nexport type ErrorWithPath = string & { __withPath: true }\ntype ErrorWithoutPath = string & { __withPath?: never }\n\nexport function getWarningOrErrorWithPath(\n ctx: { path_: string },\n message: ErrorWithoutPath,\n): ErrorWithPath {\n return `${ctx.path_ ? `$${ctx.path_}: ` : ''}${message}` as ErrorWithPath\n}\n\nfunction addWarning(ctx: ParseResultCtx, warning: string) {\n ctx.warnings_.push(\n warning.startsWith('$') ? warning : getWarningOrErrorWithPath(ctx, warning),\n )\n}\n\nfunction addWarnings(ctx: ParseResultCtx, warnings: string[]) {\n warnings.forEach((warning) => addWarning(ctx, warning))\n}\n\ntype IsValid<T> =\n | boolean\n | { data: T; errors: false }\n | { data: undefined; errors: ErrorWithPath[] }\n\nexport function parse<T>(\n type: RcType<T>,\n input: unknown,\n ctx: ParseResultCtx,\n checkIfIsValid: () => IsValid<T>,\n): InternalParseResult<T> {\n if (type._optional_) {\n if (input === undefined) {\n return { ok: true, data: input as T, errors: undefined }\n }\n }\n\n if (type._orNullish_) {\n if (input === null || input === undefined) {\n return { ok: true, data: input as T, errors: undefined }\n }\n }\n\n if (type._orNull_) {\n if (input === null) {\n return { ok: true, data: input as T, errors: undefined }\n }\n }\n\n const isValid = checkIfIsValid()\n\n if (isValid) {\n if (isValid === true || !isValid.errors) {\n const validResult = isValid === true ? (input as T) : isValid.data\n\n return { ok: true, data: validResult, errors: undefined }\n }\n }\n\n if (!ctx.noWarnings_) {\n const fb = type._fallback_\n\n if (fb !== undefined) {\n addWarning(\n ctx,\n `Fallback used, errors -> ${getResultErrors(\n isValid,\n ctx,\n type,\n input,\n )}`,\n )\n\n return { ok: true, data: isFn(fb) ? fb() : fb, errors: undefined }\n }\n\n if (type._useAutFix_ && type._autoFix_) {\n const autofixed = type._autoFix_(input)\n\n if (autofixed) {\n addWarning(\n ctx,\n `Autofixed from error \"${getResultErrors(\n isValid,\n ctx,\n type,\n input,\n )}\"`,\n )\n\n return { ok: true, data: autofixed.fixed, errors: undefined }\n }\n }\n }\n\n return {\n ok: false,\n data: undefined,\n errors:\n isValid ?\n isValid.errors\n : [getWarningOrErrorWithPath(ctx, getErrorMsg(type, input))],\n }\n}\n\nfunction getResultErrors(\n isValid: false | { errors: string[] },\n ctx: ParseResultCtx,\n type: RcType<any>,\n input: unknown,\n) {\n return isValid ?\n isValid.errors.map((err) => err.replace(ctx.path_, '')).join('; ')\n : getErrorMsg(type, input)\n}\n\nfunction withAutofix(\n this: RcType<any>,\n customAutofix: (input: unknown) => any,\n): RcType<any> {\n return {\n ...this,\n _useAutFix_: true,\n _autoFix_: customAutofix,\n }\n}\n\nfunction where(\n this: RcType<any>,\n predicate: (input: any) => boolean | { error: string },\n): RcType<any> {\n return {\n ...this,\n _parse_: (input, ctx) => {\n return parse(this, input, ctx, () => {\n const result = this._parse_(input, ctx)\n\n if (!result.ok) {\n return {\n errors: result.errors,\n data: undefined,\n }\n }\n\n const predicateResult = predicate(result.data)\n\n if (predicateResult !== true) {\n return {\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n `Predicate failed${\n predicateResult === false ?\n ` for type '${this._kind_}'`\n : `: ${predicateResult.error}`\n }`,\n ),\n ],\n data: undefined,\n }\n }\n\n return { errors: false, data: result.data }\n })\n },\n }\n}\n\nfunction optional(this: RcType<any>): RcType<any> {\n return {\n ...this,\n _optional_: true,\n _kind_: `undefined | ${this._kind_}`,\n }\n}\n\nfunction getErrorMsg(type: RcType<any>, input: unknown): string {\n return `Type '${normalizedTypeOf(\n input,\n !!type._show_value_in_error_,\n )}' is not assignable to '${type._kind_}'`\n}\n\nfunction orNull(this: RcType<any>): RcType<any> {\n return {\n ...this,\n _orNull_: true,\n _kind_: `null | ${this._kind_}`,\n }\n}\n\nfunction orNullish(this: RcType<any>): RcType<any> {\n return {\n ...this,\n _orNullish_: true,\n _kind_: `null | undefined | ${this._kind_}`,\n }\n}\n\nexport const defaultProps: Omit<RcType<any>, '_parse_' | '_kind_'> = {\n __rc_type: undefined as any,\n withFallback,\n where,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- perf improvement to avoid polymorphic deoptimizations\n // @ts-ignore\n _parse_: undefined as any,\n _kind_: undefined as any,\n optional,\n optionalKey: optional as any,\n orNullish,\n withAutofix,\n orNull,\n default: defaultMethod as any,\n nullishDefault: nullishDefaultMethod as any,\n or: orMethod as any,\n parse: parseMethod as any,\n _array_item_type_: undefined,\n _fallback_: undefined,\n _predicate_: undefined,\n _optional_: false,\n _orNull_: false,\n _orNullish_: false,\n _useAutFix_: false,\n _show_value_in_error_: false,\n _alternative_key_: undefined,\n _autoFix_: undefined,\n _obj_shape_: undefined,\n _detailed_obj_shape_: undefined,\n _is_object_: false,\n _is_extend_obj_: false,\n}\n\nexport const rc_undefined: RcType<undefined> = {\n ...(defaultProps as Omit<RcType<undefined>, '_parse_' | '_kind_'>),\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => input === undefined)\n },\n _kind_: 'undefined',\n}\n\nexport const rc_null: RcType<null> = {\n ...(defaultProps as Omit<RcType<null>, '_parse_' | '_kind_'>),\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => input === null)\n },\n _kind_: 'null',\n}\n\nexport const rc_any: RcType<any> = {\n ...defaultProps,\n _parse_(input) {\n return { ok: true, data: input, errors: undefined }\n },\n _kind_: 'any',\n}\n\nexport const rc_unknown: RcType<unknown> = {\n ...defaultProps,\n _parse_(input) {\n return { ok: true, data: input, errors: undefined }\n },\n _kind_: 'unknown',\n}\n\nexport const rc_boolean: RcType<boolean> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => typeof input === 'boolean')\n },\n _kind_: 'boolean',\n}\n\nexport const rc_string: RcType<string> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => typeof input === 'string')\n },\n _kind_: 'string',\n}\n\nexport const rc_number: RcType<number> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(\n this,\n input,\n ctx,\n () => typeof input === 'number' && !Number.isNaN(input),\n )\n },\n _kind_: 'number',\n}\n\nexport const rc_date: RcType<Date> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n return (\n typeof input === 'object' &&\n input instanceof Date &&\n !Number.isNaN(input.getTime())\n )\n })\n },\n _kind_: 'date',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function rc_instanceof<T extends Function>(classToCheck: T): RcType<T> {\n return {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n return input instanceof classToCheck\n })\n },\n _kind_: `instanceof_${classToCheck.name ? `_${classToCheck.name}` : ''}`,\n }\n}\n\nexport function rc_literals<T extends (string | number | boolean)[]>(\n ...literals: T\n): RcType<T[number]> {\n if (literals.length === 0) {\n throw new Error('rc_literal requires at least one literal')\n }\n\n return {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n for (const literal of literals) {\n if (input === literal) {\n return true\n }\n }\n\n return false\n })\n },\n _show_value_in_error_: true,\n _kind_:\n literals.length == 1 ?\n normalizedTypeOf(literals[0], true)\n : literals.map((literal) => normalizedTypeOf(literal, true)).join(' | '),\n }\n}\n\nconst maxShallowObjErrors = 1\n\nexport function rc_union<T extends RcType<any>[]>(\n ...types: T\n): RcType<RcInferType<T[number]>> {\n if (types.length === 0) {\n throw new Error('Unions should have at least one type')\n }\n\n let kind = ''\n let allIsObject = false\n\n for (const type of types) {\n if (kind) {\n kind += ' | '\n }\n\n kind += type._kind_\n\n if (!allIsObject && type._is_object_) {\n allIsObject = true\n }\n }\n\n return {\n ...defaultProps,\n _kind_: kind,\n _is_object_: allIsObject,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n const basePath = ctx.path_\n const shallowObjErrors: ErrorWithPath[] = []\n let shallowObjErrorsCount = 0\n let hasNonObjTypeMember = false\n const nonShallowObjErrors: ErrorWithPath[] = []\n\n let i = 0\n for (const type of types) {\n i += 1\n\n if (type._is_object_) {\n ctx.path_ = `${basePath}|union ${i}|`\n }\n\n const currentObjErrShortCircuit = ctx.objErrShortCircuit_\n ctx.objErrShortCircuit_ = true\n ctx.objErrKeyIndex_ = 0\n\n const parseResult = type._parse_(input, ctx)\n\n const objErrIndex = ctx.objErrKeyIndex_\n\n ctx.objErrShortCircuit_ = currentObjErrShortCircuit\n ctx.objErrKeyIndex_ = 0\n\n if (parseResult.ok) {\n return { data: parseResult.data, errors: false }\n } else if (type._is_object_ && objErrIndex !== -1) {\n if (objErrIndex > 0) {\n nonShallowObjErrors.push(...parseResult.errors)\n } else {\n if (shallowObjErrorsCount < maxShallowObjErrors) {\n shallowObjErrors.push(...parseResult.errors)\n }\n\n shallowObjErrorsCount += 1\n }\n } else {\n hasNonObjTypeMember = true\n }\n }\n\n ctx.path_ = basePath\n\n if (nonShallowObjErrors.length > 0 || shallowObjErrors.length > 0) {\n if (\n shallowObjErrorsCount > maxShallowObjErrors ||\n hasNonObjTypeMember\n ) {\n shallowObjErrors.push(\n getWarningOrErrorWithPath(\n ctx,\n 'not matches any other union member',\n ),\n )\n }\n\n return {\n errors: [...nonShallowObjErrors, ...shallowObjErrors],\n data: undefined,\n }\n }\n\n return false\n })\n },\n }\n}\n\ntype NotUndefined<T> = Exclude<T, undefined>\n\n/** Generate a schema with valid fallback value for undefined inputs */\nexport function rc_default<T>(\n schema: RcType<T>,\n defaultValue: NotUndefined<T> | (() => NotUndefined<T>),\n): RcType<NotUndefined<T>> {\n return {\n ...(schema as unknown as RcType<NotUndefined<T>>),\n _optional_: false,\n _orNullish_: false,\n _orNull_: false,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (input === undefined) {\n return getDefaultResult()\n }\n\n const parseResult = schema._parse_(input, ctx)\n\n if (parseResult.ok) {\n if (parseResult.data === undefined) {\n return getDefaultResult()\n }\n\n return { data: parseResult.data as NotUndefined<T>, errors: false }\n } else {\n return { data: undefined, errors: parseResult.errors }\n }\n })\n },\n _kind_: `${schema._kind_}_default`,\n }\n\n function getDefaultResult(): IsValid<NotUndefined<T>> {\n return {\n data: isFn(defaultValue) ? defaultValue() : defaultValue,\n errors: false,\n }\n }\n}\n\ntype NotNullish<T> = Exclude<T, null | undefined>\n\nexport function rc_nullish_default<T>(\n schema: RcType<T>,\n defaultValue: NotNullish<T> | (() => NotNullish<T>),\n): RcType<NotNullish<T>> {\n return {\n ...(schema as unknown as RcType<NotNullish<T>>),\n _optional_: false,\n _orNullish_: false,\n _orNull_: false,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (input === null || input === undefined) {\n return getDefaultResult()\n }\n\n const parseResult = schema._parse_(input, ctx)\n\n if (parseResult.ok) {\n if (parseResult.data === null || parseResult.data === undefined) {\n return getDefaultResult()\n }\n\n return { data: parseResult.data as NotNullish<T>, errors: false }\n } else {\n return { data: undefined, errors: parseResult.errors }\n }\n })\n },\n _kind_: `${schema._kind_}_nullish_default`,\n }\n\n function getDefaultResult(): IsValid<NotNullish<T>> {\n return {\n data: isFn(defaultValue) ? defaultValue() : defaultValue,\n errors: false,\n }\n }\n}\n\n/** returns a fallback in case of wrong inputs without adding a warning */\nexport function rc_safe_fallback<T>(\n schema: RcType<T>,\n fallback: NoInfer<T> | (() => NoInfer<T>),\n): RcType<T> {\n return {\n ...(schema as unknown as RcType<T>),\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n const parseResult = schema._parse_(input, ctx)\n\n if (parseResult.ok) {\n return { data: parseResult.data, errors: false }\n }\n\n return { data: isFn(fallback) ? fallback() : fallback, errors: false }\n })\n },\n }\n}\n\nexport function rc_record<V>(\n valueType: RcType<V>,\n {\n checkKey,\n looseCheck,\n }: { checkKey?: (key: string) => boolean; looseCheck?: boolean } = {},\n): RcType<Record<string, V>> {\n return {\n ...defaultProps,\n _kind_: `record<string, ${valueType._kind_}>`,\n _is_object_: true,\n _parse_(inputObj, ctx) {\n return parse<Record<string, V>>(this, inputObj, ctx, () => {\n if (!isObject(inputObj)) return false\n\n const resultObj: Record<any, string> = {} as any\n const resultErrors: ErrorWithPath[] = []\n\n const parentPath = ctx.path_\n\n for (const [key, inputValue] of Object.entries(inputObj)) {\n const subPath =\n key === '' || key.includes(' ') ? `['${key}']` : `.${key}`\n\n const path = `${parentPath}${subPath}`\n ctx.path_ = path\n\n if (checkKey && !checkKey(key)) {\n resultErrors.push(\n getWarningOrErrorWithPath(ctx, `Key '${key}' is not allowed`),\n )\n continue\n }\n\n const input = inputObj[key]\n\n const parseResult = valueType._parse_(inputValue, ctx)\n\n if (parseResult.ok) {\n resultObj[key] = input\n }\n //\n else {\n const errors = parseResult.errors\n\n for (const subError of errors) {\n resultErrors.push(subError)\n }\n\n if (ctx.objErrShortCircuit_) {\n break\n }\n }\n }\n\n if (resultErrors.length > 0) {\n if (looseCheck) {\n addWarnings(ctx, resultErrors)\n } else {\n return { errors: resultErrors, data: undefined }\n }\n }\n\n ctx.path_ = parentPath\n\n return { errors: false, data: resultObj as any }\n })\n },\n }\n}\n\n/** instead of returning a general error, rejects invalid keys and returns warnings for these items */\nexport function rc_loose_record<V>(\n valueType: RcType<V>,\n { checkKey }: { checkKey?: (key: string) => boolean } = {},\n): RcType<Record<string, V>> {\n return rc_record(valueType, { checkKey, looseCheck: true })\n}\n\nfunction checkArrayItems(\n this: RcType<any>,\n input: any[],\n types: RcType<any> | readonly RcType<any>[],\n ctx: ParseResultCtx,\n _loose = false,\n options?: ArrayOptions<RcType<any>>,\n): IsValid<any[]> {\n const useLooseMode = _loose && !ctx.noWarnings_ && !ctx.noLooseArray_\n const unique = options?.unique\n\n const looseErrors: [err: ErrorWithPath[], path: string][] = []\n const arrayResult: any[] = []\n const uniqueValues = unique ? new Set<any>() : undefined\n\n const parentPath = ctx.path_\n\n const isTuple = Array.isArray(types)\n\n let index = -1\n for (const _item of input) {\n index++\n\n const type: RcType<any> = isTuple ? types[index] : types\n\n const subPath = `[${index}]`\n\n const path = `${parentPath}${subPath}`\n\n ctx.path_ = path\n\n if (options?.filter) {\n const filterResult = options.filter(_item)\n\n if (typeof filterResult === 'boolean') {\n if (!filterResult) {\n continue\n }\n } else if ('errors' in filterResult) {\n if (!useLooseMode) {\n return { errors: filterResult.errors, data: undefined }\n } else {\n looseErrors.push([filterResult.errors, path])\n continue\n }\n }\n\n ctx.path_ = path\n }\n\n let parseResult = type._parse_(_item, ctx)\n\n ctx.path_ = path\n\n if (parseResult.ok && uniqueValues) {\n let uniqueValueToCheck = parseResult.data\n\n const isUniqueKey = typeof unique === 'string'\n\n if (isUniqueKey) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n uniqueValueToCheck = parseResult.data[unique]\n } else if (typeof unique === 'function') {\n uniqueValueToCheck = unique(parseResult.data)\n }\n\n if (uniqueValues.has(uniqueValueToCheck)) {\n if (isUniqueKey) {\n ctx.path_ = `${parentPath}${subPath}.${unique}`\n }\n\n parseResult = {\n ok: false,\n data: undefined,\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n isUniqueKey ?\n `Type '${type._obj_shape_?.[unique]?._kind_}' with value \"${uniqueValueToCheck}\" is not unique`\n : typeof unique === 'function' ?\n `Type '${type._kind_}' unique fn return with value \"${uniqueValueToCheck}\" is not unique`\n : `${type._kind_} value is not unique`,\n ),\n ],\n }\n } else {\n uniqueValues.add(uniqueValueToCheck)\n }\n }\n\n if (!parseResult.ok) {\n if (!useLooseMode) {\n return {\n errors: parseResult.errors,\n data: undefined,\n }\n } else {\n looseErrors.push([parseResult.errors, path])\n continue\n }\n } else {\n arrayResult.push(parseResult.data)\n }\n }\n\n if (looseErrors.length > 0) {\n const adjustedLooseErrors: ErrorWithPath[] = []\n\n for (const [errors, path] of looseErrors) {\n for (const err of errors) {\n let itemError = err.slice(path.length + 1)\n\n if (itemError.startsWith(': ')) {\n itemError = itemError.slice(2)\n }\n\n if (itemError.startsWith('.') || itemError.startsWith('[')) {\n itemError = `#${itemError}`\n }\n\n const newError = `$${path}: Rejected, error -> ${itemError}`\n\n adjustedLooseErrors.push(newError as ErrorWithPath)\n }\n\n addWarnings(ctx, adjustedLooseErrors)\n }\n }\n\n return { errors: false, data: arrayResult }\n}\n\ntype ArrayOptions<T extends RcType<any>> = {\n unique?: RcInferType<T> extends Record<string, any> ?\n keyof RcInferType<T> | ((parsedItem: RcInferType<T>) => any)\n : boolean | ((parsedItem: RcInferType<T>) => any)\n filter?: (item: RcInferType<T>) => boolean | { errors: ErrorWithPath[] }\n}\n\nexport function rc_array<T extends RcType<any>>(\n type: T,\n options?: ArrayOptions<T>,\n): RcType<RcInferType<T>[]> {\n return {\n ...defaultProps,\n _kind_: `${type._kind_}[]`,\n _array_item_type_: type,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, false, options)\n })\n },\n }\n}\n\nexport function rc_get_array_item_type<T>(type: RcType<T[]>): RcType<T> {\n if (!type._array_item_type_) {\n throw new Error(`Type does not have an item type`)\n }\n\n return type._array_item_type_\n}\n\nexport function rc_disable_loose_array<T extends RcType<any>>(\n type: T,\n { nonRecursive = false }: { nonRecursive?: boolean } = {},\n): T {\n if (nonRecursive) {\n if (!type._kind_.endsWith('[]')) {\n throw new Error(\n `rc_disable_loose_array: nonRecursive option can only be used with array types`,\n )\n }\n\n return {\n ...type,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, false)\n })\n },\n }\n }\n\n return {\n ...type,\n _parse_(input, ctx) {\n const parentDisableLooseArray = ctx.noLooseArray_\n\n ctx.noLooseArray_ = true\n const result = type._parse_(input, ctx)\n ctx.noLooseArray_ = parentDisableLooseArray\n\n return result\n },\n }\n}\n\n/** instead of returning a general error, rejects invalid array items and returns warnings for these items */\nexport function rc_loose_array<T extends RcType<any>>(\n type: T,\n options?: ArrayOptions<T>,\n): RcType<RcInferType<T>[]> {\n return {\n ...defaultProps,\n _array_item_type_: type,\n _kind_: `${type._kind_}[]`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, true, options)\n })\n },\n }\n}\n\nexport function rc_array_filter_from_schema<B, T>(\n filterSchema: RcType<B>,\n filterFn: (item: B) => boolean,\n type: RcType<T>,\n options?: Omit<ArrayOptions<RcType<any>>, 'filter'> & {\n loose?: boolean\n },\n): RcType<T[]> {\n return {\n ...defaultProps,\n _array_item_type_: type,\n _kind_: `${type._kind_}[]`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, options?.loose, {\n ...options,\n filter(item) {\n const filterResult = filterSchema._parse_(item, ctx)\n\n if (!filterResult.ok) {\n return { errors: filterResult.errors }\n }\n\n return filterFn(filterResult.data)\n },\n })\n })\n },\n }\n}\n\ntype MapTupleToTypes<T extends readonly [...any[]]> = {\n -readonly [K in keyof T]: RcInferType<T[K]>\n}\n\n/**\n * Check for a tuple of types\n *\n * TS equivalent example: [string, number, boolean]\n */\nexport function rc_tuple<const T extends readonly RcType<any>[]>(\n types: T,\n): RcType<MapTupleToTypes<T>> {\n return {\n ...defaultProps,\n _kind_: `[${types.map((type) => type._kind_).join(', ')}]`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length !== types.length) return false\n\n return checkArrayItems.call(this, input, types, ctx) as boolean\n })\n },\n }\n}\n\ntype ParseOptions = {\n /** ignore fallback and autofix */\n noWarnings?: boolean\n}\n\n/**\n * Parse a runcheck type. If valid return the valid input, with warning for autofix\n * and fallback, or the errors if invalid\n */\nexport function rc_parse<S>(\n input: any,\n type: RcType<S>,\n { noWarnings = false }: ParseOptions = {},\n): RcParseResult<S> {\n const ctx: ParseResultCtx = {\n warnings_: [],\n path_: '',\n objErrShortCircuit_: false,\n objErrKeyIndex_: 0,\n noWarnings_: noWarnings,\n strictObj_: false,\n noLooseArray_: false,\n }\n\n const parseResult = type._parse_(input, ctx)\n\n if (parseResult.ok) {\n return {\n error: false,\n errors: false,\n ok: true,\n data: parseResult.data,\n value: parseResult.data,\n warnings: ctx.warnings_.length > 0 ? ctx.warnings_ : false,\n }\n }\n\n return {\n ok: false,\n error: true,\n errors: parseResult.errors,\n }\n}\n\nexport type RcParser<T> = (input: any) => RcParseResult<T>\n\n/** create a reusable parser for a certain type */\nexport function rc_parser<S>(type: RcType<S>): RcParser<S> {\n return (input: any) => rc_parse(input, type)\n}\n\n/** @deprecated use rc_unwrap_or_null instead */\nexport function rc_loose_parse<S>(\n input: any,\n type: RcType<S>,\n options?: ParseOptions,\n): { data: S | null; errors: string[] | false; warnings: string[] | false } {\n const result = rc_parse(input, type, options)\n\n if (result.error) {\n return {\n data: null,\n errors: result.errors,\n warnings: false,\n }\n }\n\n return { data: result.value, errors: false, warnings: result.warnings }\n}\n\nexport function rc_unwrap_or_null<R>(result: RcParseResult<R>): {\n value: R | null\n errors: string[] | false\n warnings: string[] | false\n} {\n return rc_unwrap_or(result, null)\n}\n\nexport function rc_unwrap_or<R, F = NoInfer<R>>(\n result: RcParseResult<R>,\n fallback: F,\n): {\n value: R | F\n errors: string[] | false\n warnings: string[] | false\n} {\n if (result.error) {\n return {\n value: fallback,\n errors: result.errors,\n warnings: false,\n }\n }\n\n return { value: result.value, errors: false, warnings: result.warnings }\n}\n\nexport class RcValidationError extends Error {\n constructor(public readonly errors: string[]) {\n super(errors.join('\\n'))\n }\n}\n\nexport function rc_unwrap<R>(result: RcParseResult<R>): {\n value: R\n warnings: string[] | false\n} {\n if (result.error) {\n throw new RcValidationError(result.errors)\n }\n\n return result\n}\n\nexport function rc_is_valid<S>(input: any, type: RcType<S>): input is S {\n const ctx: ParseResultCtx = {\n warnings_: [],\n path_: '',\n objErrShortCircuit_: false,\n objErrKeyIndex_: 0,\n noWarnings_: false,\n strictObj_: false,\n noLooseArray_: false,\n }\n\n return type._parse_(input, ctx).ok\n}\n\nexport function rc_validator<S>(type: RcType<S>) {\n return (input: any): input is S => rc_is_valid(input, type)\n}\n\nexport function rc_recursive<T extends RcBase<any, any>>(type: () => T): T {\n let recursiveType: { -readonly [K in keyof T]: T[K] } | undefined = undefined\n\n return {\n ...defaultProps,\n _kind_: 'recursive',\n _parse_(input, ctx) {\n if (!recursiveType) {\n recursiveType = {\n ...type(),\n }\n\n if (this._optional_) {\n recursiveType._optional_ = this._optional_\n }\n\n if (this._orNullish_) {\n recursiveType._orNullish_ = this._orNullish_\n }\n\n if (this._orNull_) {\n recursiveType._orNull_ = this._orNull_\n }\n\n if (this._autoFix_) {\n recursiveType._autoFix_ = this._autoFix_\n }\n\n if (this._fallback_) {\n recursiveType._fallback_ = this._fallback_\n }\n\n if (this._alternative_key_) {\n recursiveType._alternative_key_ = this._alternative_key_\n }\n }\n\n return recursiveType._parse_(input, ctx)\n },\n } as T\n}\n\ntype TransformOptions<T> = {\n /**\n * @deprecated will be removed in the next major version\n *\n * if the input type is invalid, the transform will be ignore\n * schema will be used to validate the input\n */\n outputSchema?: RcType<T>\n /** @deprecated will be removed in the next major version */\n disableStrictOutputSchema?: boolean\n}\n\nfunction validateTransformOutput<T>(\n ctx: ParseResultCtx,\n outputSchema: RcType<T>,\n input: any,\n disableStrictOutputSchema: boolean | undefined,\n): InternalParseResult<T> {\n const parentPath = ctx.path_\n const parentObjErrShortCircuit = ctx.objErrShortCircuit_\n const parentStrictObj = ctx.strictObj_\n const parentNoWarnings = ctx.noWarnings_\n\n ctx.objErrShortCircuit_ = true\n ctx.path_ = `${parentPath}|output|`\n\n if (!disableStrictOutputSchema) {\n ctx.strictObj_ = true\n ctx.noWarnings_ = true\n }\n\n const result = outputSchema._parse_(input, ctx)\n\n ctx.strictObj_ = parentStrictObj\n ctx.noWarnings_ = parentNoWarnings\n ctx.path_ = parentPath\n ctx.objErrShortCircuit_ = parentObjErrShortCircuit\n\n return result\n}\n\n/** validate a input or subset of input and transform the valid result */\nexport function rc_transform<Input, Transformed>(\n type: RcType<Input>,\n transform: (input: Input, inputSchema: RcType<Input>) => Transformed,\n {\n outputSchema,\n disableStrictOutputSchema,\n }: TransformOptions<Transformed> = {},\n): RcType<Transformed> {\n return {\n ...defaultProps,\n _kind_: `${type._kind_}_transform`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n let outputResultErrors: ErrorWithPath[] | null = null\n\n if (outputSchema) {\n const parseResult = validateTransformOutput(\n ctx,\n outputSchema,\n input,\n disableStrictOutputSchema,\n )\n\n if (parseResult.ok) {\n return {\n data: parseResult.data,\n errors: false,\n }\n } else {\n outputResultErrors = parseResult.errors\n }\n }\n\n // TODO: optimize this\n const newType = {\n ...type,\n _kind_: this._kind_,\n }\n\n const parseResult = newType._parse_(input, ctx)\n\n if (parseResult.ok) {\n return {\n errors: false,\n data: transform(parseResult.data, type),\n }\n } else {\n return {\n errors: [...(outputResultErrors || []), ...parseResult.errors],\n data: undefined,\n }\n }\n })\n },\n }\n}\n\n/** Create transforms which result can be validated with the same schema */\nexport function rc_narrow<Input, Narrowed extends Input>(\n type: RcType<Input>,\n narrow: (input: Input, inputSchema: RcType<Input>) => Narrowed,\n): RcType<Narrowed> {\n return rc_transform(type, narrow)\n}\n\n/** Allows the transform function to return a error if transformation is invalid */\nexport function rc_unsafe_transform<Input, Transformed>(\n type: RcType<Input>,\n transform: (\n input: Input,\n inputSchema: RcType<Input>,\n ) =>\n | { ok: true; data: Transformed }\n | { ok: false; errors: string | string[] },\n {\n outputSchema,\n disableStrictOutputSchema,\n }: TransformOptions<Transformed> = {},\n): RcType<Transformed> {\n return {\n ...defaultProps,\n _kind_: `${type._kind_}_transform`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, (): IsValid<Transformed> => {\n let outputResultErrors: ErrorWithPath[] | null = null\n\n if (outputSchema) {\n const parseResult = validateTransformOutput(\n ctx,\n outputSchema,\n input,\n disableStrictOutputSchema,\n )\n\n if (parseResult.ok) {\n return {\n errors: false,\n data: parseResult.data,\n }\n } else {\n outputResultErrors = parseResult.errors\n }\n }\n\n // TODO: optimize this\n const newType = {\n ...type,\n _kind_: this._kind_,\n }\n\n const parseResult = newType._parse_(input, ctx)\n\n if (parseResult.ok) {\n const transformResult = transform(parseResult.data, type)\n\n if (transformResult.ok) {\n return { errors: false, data: transformResult.data }\n } else {\n return {\n errors:\n typeof transformResult.errors === 'string' ?\n [getWarningOrErrorWithPath(ctx, transformResult.errors)]\n : transformResult.errors.map((error) =>\n getWarningOrErrorWithPath(ctx, error),\n ),\n data: undefined,\n }\n }\n }\n\n return {\n errors: [...(outputResultErrors || []), ...parseResult.errors],\n data: undefined,\n }\n })\n },\n }\n}\n\nexport function normalizedTypeOf(\n input: unknown,\n showValueInError: boolean,\n): string {\n const typeOf = typeof input\n\n const type = ((): string => {\n if (typeOf === 'object') {\n if (Array.isArray(input)) {\n return 'array'\n }\n\n if (!input) {\n return 'null'\n }\n }\n\n if (typeof input === 'number' && Number.isNaN(input)) {\n return 'NaN'\n }\n\n return typeOf\n })()\n\n return (\n showValueInError &&\n (type === 'string' || type === 'number' || type === 'boolean')\n ) ?\n `${type}(${input})`\n : type\n}\n\ntype NonArrayObject = {\n [x: string]: any\n [y: number]: never\n}\n\nexport function rc_assert_is_valid<S>(\n result: RcParseResult<S>,\n): asserts result is {\n ok: true\n error: false\n errors: false\n data: S\n value: S\n warnings: string[] | false\n} {\n if (result.error) {\n throw new Error(`invalid input: ${result.errors.join(', ')}`)\n }\n}\n\n/** @internal */\nexport function isObject(value: any): value is NonArrayObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n/** @internal */\nexport function snakeCase(str: string): string {\n return str\n .replace(/\\W+/g, ' ')\n .split(/ |\\B(?=[A-Z])/)\n .map((word) => word.toLowerCase())\n .join('_')\n}\n\nexport function rc_parse_json<T>(\n jsonString: unknown,\n schema: RcType<T>,\n options?: ParseOptions,\n): RcParseResult<T> {\n try {\n if (typeof jsonString !== 'string') {\n return {\n ok: false,\n error: true,\n errors: [\n `expected a json string, got ${normalizedTypeOf(jsonString, true)}`,\n ],\n }\n }\n\n const parsed = JSON.parse(jsonString)\n\n return rc_parse(parsed, schema, options)\n } catch (err) {\n return {\n ok: false,\n error: true,\n errors: [`json parsing error: ${isObject(err) ? err.message : ''}`],\n }\n }\n}\n\nfunction isFn(value: any): value is () => any {\n return typeof value === 'function'\n}\n\nexport type Prettify<T> =\n T extends Record<string, any> ?\n {\n [K in keyof T]: Prettify<T[K]>\n }\n : T\n\nexport type RcPrettyInferType<T extends RcType<any>> = Prettify<RcInferType<T>>\n\nexport function isRcType(value: any): value is RcType<any> {\n return isObject(value) && '__rc_type' in value\n}\n\n/** workaround for the typescript limitation: https://github.com/microsoft/TypeScript/issues/52295 */\nexport function joinAsRcTypeUnion<T>(\n type: T,\n): RcType<T extends RcType<infer U> ? U : never> {\n return type as any\n}\n\nexport function getSchemaKind(schema: RcType<any>): string {\n return schema._kind_\n}\n\nexport function rc_to_standard<T>(\n schemaOrResult: RcType<T> | RcParseResult<T>,\n {\n errorOnWarnings = false,\n }: {\n errorOnWarnings?: boolean\n } = {},\n): StandardSchemaV1<T> {\n return {\n '~standard': {\n validate(value) {\n const result =\n 'ok' in schemaOrResult ? schemaOrResult : (\n rc_parse(value, schemaOrResult)\n )\n\n return parseResultToStandard(result, errorOnWarnings)\n },\n vendor: 'runcheck',\n version: 1,\n },\n }\n}\n\nfunction parseResultToStandard<T>(\n result: RcParseResult<T>,\n errorOnWarnings: boolean,\n): StandardSchemaV1.Result<T> {\n if (errorOnWarnings && result.ok && result.warnings) {\n return {\n issues: result.warnings.map((warning) => ({\n message: warning,\n })),\n }\n }\n\n if (result.ok) {\n return { value: result.value }\n }\n\n return {\n issues: result.errors.map((error) => ({\n message: error,\n })),\n }\n}\n","import {\n ErrorWithPath,\n RcBase,\n RcInferType,\n RcOptionalKeyType,\n RcType,\n defaultProps,\n getWarningOrErrorWithPath,\n isObject,\n isRcType,\n normalizedTypeOf,\n parse,\n rc_array,\n rc_loose_array,\n snakeCase,\n} from './runcheck'\n\n/**\n * If the schema key value is undefined uses a value from the fallback key as a safe value\n * Can be used to rename keys from input\n */\nexport function rc_get_from_key_as_fallback<T extends RcType<any>>(\n fallbackKey: string,\n type: T,\n): RcType<RcInferType<T>> {\n return {\n ...type,\n _alternative_key_: fallbackKey,\n }\n}\n\nexport type RcObject = {\n [key: string]: RcBase<any, any> | RcObject\n}\n\nexport type TypeOfObjectType<T extends RcObject> = Flatten<\n AddQuestionMarks<{\n [K in keyof T]: T[K] extends RcType<infer U> ? RequiredKey<U>\n : T[K] extends RcOptionalKeyType<infer W> ? W\n : T[K] extends RcObject ? RequiredKey<TypeOfObjectType<T[K]>>\n : never\n }>\n>\n\nexport type RcObjTypeReturn<T extends RcObject> = RcType<TypeOfObjectType<T>>\n\ntype RequiredKey<T> = { _required_key_: T }\n\ntype RequiredKeys<T extends object> = {\n [k in keyof T]: T[k] extends RequiredKey<any> ? k : never\n}[keyof T]\n\ntype AddQuestionMarks<\n T extends object,\n R extends keyof T = RequiredKeys<T>,\n> = Pick<Required<T>, R> & Partial<Omit<T, R>>\n\ntype Identity<T> = T\n\ntype Flatten<T> = Identity<{\n [k in keyof T]: T[k] extends RequiredKey<infer U> ? U : T[k]\n}>\n\nfunction unwrapToObjSchema(input: unknown): RcType<any> {\n if (isRcType(input)) {\n return input\n } else if (isObject(input)) {\n const objSchema: Record<string, RcType<any>> = {}\n\n for (const [key, value] of Object.entries(input)) {\n objSchema[key] = unwrapToObjSchema(value)\n }\n\n return rc_object(objSchema)\n } else if (Array.isArray(input)) {\n const [type, value] = input\n\n switch (type) {\n case 'optional':\n return unwrapToObjSchema(value).optional()\n case 'nullish_or':\n return unwrapToObjSchema(value).orNullish()\n case 'null_or':\n return unwrapToObjSchema(value).orNull()\n case 'array_of':\n return rc_array(unwrapToObjSchema(value))\n case 'loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value))\n case 'optional_array_of':\n return rc_array(unwrapToObjSchema(value)).optional()\n case 'optional_loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value)).optional()\n case 'null_or_array_of':\n return rc_array(unwrapToObjSchema(value)).orNull()\n case 'null_or_loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value)).orNull()\n case 'nullish_or_array_of':\n return rc_array(unwrapToObjSchema(value)).orNullish()\n case 'nullish_or_loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value)).orNullish()\n default:\n return type\n }\n }\n\n throw new Error(`invalid schema: ${input}`)\n}\n\nexport type ObjOptions = {\n normalizeKeysFrom?: 'snake_case'\n}\n\nexport function rc_object<T extends RcObject>(\n shape: T,\n { normalizeKeysFrom }: ObjOptions = {},\n): RcObjTypeReturn<T> {\n const objShape: Record<string, RcType<any>> = {}\n\n for (const [key, value] of Object.entries(shape)) {\n objShape[key] = unwrapToObjSchema(value)\n }\n\n const shapeEntries = Object.entries(objShape).map(([key, type]) => {\n return { key, type }\n })\n\n return {\n ...defaultProps,\n _obj_shape_: objShape,\n _kind_: 'object',\n _detailed_obj_shape_: '',\n _is_object_: true,\n _parse_(inputObj, ctx) {\n return parse<TypeOfObjectType<T>>(this, inputObj, ctx, () => {\n if (!isObject(inputObj)) {\n ctx.objErrKeyIndex_ = -1\n\n if (ctx.objErrShortCircuit_ && !this._detailed_obj_shape_) {\n return false\n }\n\n if (!this._detailed_obj_shape_) {\n let detailedObjShapeDescription = `${this._kind_}{ `\n let i = 0\n for (const { key, type } of shapeEntries) {\n if (detailedObjShapeDescription.length > 100) {\n detailedObjShapeDescription += `, ...`\n break\n }\n\n if (i !== 0) {\n detailedObjShapeDescription += `, `\n }\n\n detailedObjShapeDescription += `${key}: ${type._kind_}`\n i++\n }\n\n detailedObjShapeDescription += ` }`\n this._detailed_obj_shape_ = detailedObjShapeDescription\n }\n\n return {\n data: undefined,\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n `Type '${normalizedTypeOf(inputObj, false)}' is not assignable to '${this._detailed_obj_shape_}'`,\n ),\n ],\n }\n }\n\n const isStrict = this._kind_ === 'strict_obj' || ctx.strictObj_\n\n const excessKeys =\n isStrict ? new Set<string>(Object.keys(inputObj)) : undefined\n\n if (excessKeys && excessKeys.size > shapeEntries.length) {\n ctx.objErrKeyIndex_ = -1\n const errors: ErrorWithPath[] = []\n\n if (ctx.objErrShortCircuit_) {\n return {\n data: undefined,\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n `Expected strict object with ${shapeEntries.length} keys but got ${excessKeys.size}`,\n ),\n ],\n }\n }\n\n for (const { key } of shapeEntries) {\n if (!excessKeys.has(key)) {\n errors.push(\n getWarningOrErrorWithPath(ctx, `Key '${key}' is missing`),\n )\n } else {\n excessKeys.delete(key)\n }\n }\n\n for (const key of excessKeys) {\n errors.push(\n getWarningOrErrorWithPath(\n ctx,\n `Key '${key}' is not defined in the object shape`,\n ),\n )\n }\n\n return {\n data: undefined,\n errors,\n }\n }\n\n const resultObj: Record<any, string> = {} as any\n const resultErrors: ErrorWithPath[] = []\n\n const parentPath = ctx.path_\n\n let i = -1\n for (const shapeEntry of shapeEntries) {\n const key = shapeEntry.key\n const type = shapeEntry.type\n\n const typekey = key as keyof T\n i += 1\n\n const subPath =\n key === '' || key.includes(' ') ? `['${key}']` : `.${key}`\n\n const path = `${parentPath}${subPath}`\n\n ctx.path_ = path\n\n let input = inputObj[key]\n let keyToDeleteFromExcessKeys = key\n\n if (input === undefined && type._alternative_key_) {\n input = inputObj[type._alternative_key_]\n keyToDeleteFromExcessKeys = type._alternative_key_\n }\n\n if (input === undefined && normalizeKeysFrom === 'snake_case') {\n const snakeCaseKey = snakeCase(key)\n\n input = inputObj[snakeCaseKey]\n keyToDeleteFromExcessKeys = snakeCaseKey\n }\n\n excessKeys?.delete(keyToDeleteFromExcessKeys)\n\n const parseResult = type._parse_(input, ctx)\n\n if (parseResult.ok) {\n resultObj[typekey] = parseResult.data\n }\n //\n else {\n for (const subError of parseResult.errors) {\n ctx.path_ = path\n resultErrors.push(subError)\n }\n\n if (ctx.objErrShortCircuit_) {\n ctx.objErrKeyIndex_ = i\n break\n }\n }\n }\n\n if (excessKeys) {\n if (excessKeys.size > 0) {\n for (const key of excessKeys) {\n ctx.path_ = parentPath\n\n resultErrors.push(\n getWarningOrErrorWithPath(\n ctx,\n `Key '${key}' is not defined in the object shape`,\n ),\n )\n }\n }\n }\n\n if (resultErrors.length > 0) {\n return { errors: resultErrors, data: undefined }\n }\n\n ctx.path_ = parentPath\n\n if (this._is_extend_obj_) {\n return {\n errors: false,\n data: {\n ...(inputObj as any),\n ...(resultObj as any),\n },\n }\n }\n\n return { errors: false, data: resultObj as any }\n })\n },\n }\n}\n\nexport function rc_obj_extends<T extends RcObject>(\n shape: T,\n options?: ObjOptions,\n): RcObjTypeReturn<T> {\n return {\n ...rc_object(shape, options),\n _kind_: `extends_object`,\n _is_extend_obj_: true,\n }\n}\n\nexport function rc_get_obj_shape<T extends Record<string, any>>(\n type: RcType<T>,\n): {\n [K in keyof T]: RcType<T[K]>\n} {\n if (!type._obj_shape_) {\n throw new Error(`type does not have an object shape`)\n }\n\n return type._obj_shape_ as T\n}\n\n/** return an error if the obj has more keys than the expected type */\nexport function rc_obj_strict<T extends RcObject>(\n shape: T,\n options?: ObjOptions,\n): RcObjTypeReturn<T> {\n return {\n ...rc_object(shape, options),\n _kind_: `strict_obj`,\n }\n}\n\nexport function rc_enable_obj_strict<T extends RcType<any>>(\n type: T,\n {\n nonRecursive,\n }: {\n nonRecursive?: boolean\n } = {},\n): T {\n if (nonRecursive) {\n if (!type._obj_shape_) {\n throw new Error(\n `rc_enable_obj_strict: nonRecursive option can only be used on object types`,\n )\n }\n\n return {\n ...type,\n _kind_: `strict_obj`,\n }\n }\n\n return {\n ...type,\n _parse_(input, ctx) {\n const parentStrictObj = ctx.strictObj_\n ctx.strictObj_ = true\n const result = type._parse_(input, ctx)\n ctx.strictObj_ = parentStrictObj\n return result\n },\n }\n}\n\ntype AnyObj = Record<string, unknown>\n\ntype Extends<T extends AnyObj, W extends AnyObj> = Omit<T, keyof W> & W\n\nexport function rc_obj_merge<A extends AnyObj, B extends AnyObj>(\n ...objs: [RcType<A>, RcType<B>]\n): RcType<Extends<A, B>>\nexport function rc_obj_merge<\n A extends AnyObj,\n B extends AnyObj,\n C extends AnyObj,\n>(...objs: [RcType<A>, RcType<B>, RcType<C>]): RcType<Extends<Extends<A, B>, C>>\nexport function rc_obj_merge<\n A extends AnyObj,\n B extends AnyObj,\n C extends AnyObj,\n D extends AnyObj,\n>(\n ...objs: [RcType<A>, RcType<B>, RcType<C>, RcType<D>]\n): RcType<Extends<Extends<Extends<A, B>, C>, D>>\nexport function rc_obj_merge(\n ...objs: RcType<Record<string, unknown>>[]\n): RcType<any> {\n const finalShape = {} as any\n\n for (const objShape of objs) {\n Object.assign(finalShape, objShape._obj_shape_)\n }\n\n return rc_object(finalShape)\n}\n\nexport function rc_obj_pick<O extends AnyObj, K extends keyof O>(\n obj: RcType<O>,\n keys: K[],\n): RcType<Pick<O, K>> {\n const shape = {} as any\n\n if (!obj._obj_shape_) {\n throw new Error('rc_obj_pick: obj must be an object type')\n }\n\n for (const key of keys) {\n const keyShape = obj._obj_shape_[key as string]\n if (keyShape) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n shape[key] = keyShape\n }\n }\n\n return rc_object(shape) as any\n}\n\nexport function rc_obj_omit<O extends AnyObj, K extends keyof O>(\n obj: RcType<O>,\n keys: K[],\n): RcType<Omit<O, K>> {\n const shape = {} as any\n\n if (!obj._obj_shape_) {\n throw new Error('rc_obj_omit: obj must be an object type')\n }\n\n for (const key of Object.keys(obj._obj_shape_)) {\n if (!(keys as any[]).includes(key)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n shape[key] = obj._obj_shape_[key]\n }\n }\n\n return rc_object(shape) as any\n}\n\ntype ExpectedSchema<T> = (t: T) => T\n\ntype RcTypeWithSchemaEqualTo<T> = { __rc_type: ExpectedSchema<T> }\n\ntype StrictObjTypeToRcType<T> = {\n [K in keyof T]-?: StrictTypeToRcType<T[K]>\n}\n\ntype IsUnion<T, U extends T = T> =\n T extends unknown ?\n [U] extends [T] ?\n false\n : true\n : false\n\ntype StrictTypeToRcType<T> =\n [T] extends [(infer U)[]] ?\n | ['array_of' | 'loose_array_of', StrictTypeToRcType<U>]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [(infer U)[] | undefined] ?\n | ['optional_array_of' | 'optional_loose_array_of', StrictTypeToRcType<U>]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [(infer U)[] | null] ?\n | ['null_or_array_of' | 'null_or_loose_array_of', StrictTypeToRcType<U>]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [(infer U)[] | undefined | null] ?\n | [\n 'nullish_or_array_of' | 'nullish_or_loose_array_of',\n StrictTypeToRcType<U>,\n ]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any>] ?\n IsUnion<T> extends true ?\n RcTypeWithSchemaEqualTo<T>\n : StrictObjTypeToRcType<T> | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any> | null] ?\n ['null_or', StrictObjTypeToRcType<T>] | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any> | undefined] ?\n ['optional', StrictObjTypeToRcType<T>] | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any> | null | undefined] ?\n ['nullish_or', StrictObjTypeToRcType<T>] | RcTypeWithSchemaEqualTo<T>\n : RcTypeWithSchemaEqualTo<T>\n\nexport type StrictTypeToRcTypeBase<T extends Record<string, any>> = {\n [K in keyof T]-?: StrictTypeToRcType<T[K]>\n}\n\nexport function rc_obj_builder<T extends Record<string, any>>() {\n return <S extends StrictTypeToRcTypeBase<T>>(\n schema: {\n [K in keyof S]: K extends keyof T ? S[K] : never\n },\n options?: ObjOptions,\n ): RcType<T> => {\n return rc_object(schema as any, options) as any\n }\n}\n","import {\n RcObject,\n StrictTypeToRcTypeBase,\n TypeOfObjectType,\n rc_object,\n} from './rc_object'\nimport {\n Prettify,\n RcBase,\n RcType,\n defaultProps,\n getWarningOrErrorWithPath,\n isObject,\n isRcType,\n normalizedTypeOf,\n parse,\n} from './runcheck'\n\nexport function rc_discriminated_union<\n K extends string,\n T extends Record<string, RcObject | RcBase<any, any>>,\n>(\n discriminatorKey: K,\n types: T,\n): RcType<\n Prettify<\n {\n [P in keyof T]: {\n [Q in K]: P\n } & (T[P] extends RcType<infer U> ? U\n : T[P] extends RcObject ? TypeOfObjectType<T[P]>\n : never)\n }[keyof T]\n >\n> {\n const preComputedTypesShape = {} as Record<string, RcType<any>>\n\n for (const [key, type] of Object.entries(types)) {\n preComputedTypesShape[key] = isRcType(type) ? type : rc_object(type as any)\n }\n\n return {\n ...defaultProps,\n _kind_: `discriminated_union`,\n _is_object_: true,\n _parse_(input, ctx) {\n return parse<any>(this, input, ctx, () => {\n if (!isObject(input)) {\n ctx.objErrKeyIndex_ = -1\n return false\n }\n\n const discriminator = input[discriminatorKey]\n\n const parentPath = ctx.path_\n\n const type = preComputedTypesShape[discriminator]\n\n if (!type) {\n const invalidValueType = normalizedTypeOf(discriminator, true)\n\n return {\n errors: [\n getWarningOrErrorWithPath(\n { path_: `${parentPath}.${discriminatorKey}` },\n `Type '${invalidValueType}' is not a valid discriminator`,\n ),\n ],\n data: undefined,\n }\n }\n\n ctx.path_ = `${parentPath}|${discriminatorKey}: ${discriminator}|`\n\n const parseResult = type._parse_(input, ctx)\n\n ctx.path_ = parentPath\n\n if (!parseResult.ok) {\n return { errors: parseResult.errors, data: undefined }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n parseResult.data[discriminatorKey] = discriminator\n\n return { errors: false, data: parseResult.data }\n })\n },\n }\n}\n\ntype OmitDiscriminator<K, D extends Record<string, unknown>> =\n D extends any ? Omit<D, K & string> : never\n\nexport function rc_discriminated_union_builder<\n D extends Record<string, unknown>,\n K extends keyof D,\n>(discriminatorKey: K) {\n return (schema: {\n [P in D[K] & string]: StrictTypeToRcTypeBase<\n OmitDiscriminator<K, D & { [Q in K]: P }>\n >\n }): RcType<D> => {\n return rc_discriminated_union(\n discriminatorKey as any,\n schema as any,\n ) as unknown as RcType<D>\n }\n}\n","import { RcType, defaultProps, parse } from './runcheck'\n\nexport function rc_intersection<A, B>(a: RcType<A>, b: RcType<B>): RcType<A & B>\nexport function rc_intersection<A, B, C>(\n a: RcType<A>,\n b: RcType<B>,\n c: RcType<C>,\n): RcType<A & B & C>\nexport function rc_intersection<A, B, C, D>(\n a: RcType<A>,\n b: RcType<B>,\n c: RcType<C>,\n d: RcType<D>,\n): RcType<A & B & C & D>\nexport function rc_intersection(...types: RcType<any>[]): RcType<any> {\n let kind = ''\n let allIsObject = true\n\n for (const type of types) {\n if (kind) {\n kind += ' & '\n }\n\n if (!type._is_object_) {\n allIsObject = false\n }\n\n kind += type._kind_.includes('|') ? `(${type._kind_})` : type._kind_\n }\n\n return {\n ...defaultProps,\n _kind_: kind,\n _is_object_: allIsObject,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n let objResultData: Record<string, unknown> | null = null\n\n for (const type of types) {\n const result = type._parse_(input, ctx)\n\n if (!result.ok) {\n if (type._is_object_) {\n return result\n }\n\n return false\n } else {\n if (type._is_object_) {\n objResultData = { ...(objResultData || {}), ...result.data }\n }\n }\n }\n\n if (objResultData) {\n return {\n data: objResultData as any,\n errors: false,\n }\n }\n\n return true\n })\n },\n }\n}\n"],"mappings":"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","names":["runcheck_exports","__export","RcValidationError","defaultProps","getSchemaKind","getWarningOrErrorWithPath","isObject","isRcType","joinAsRcTypeUnion","normalizedTypeOf","parse","rc_any","rc_array","rc_array_filter_from_schema","rc_assert_is_valid","rc_boolean","rc_date","rc_default","rc_disable_loose_array","rc_discriminated_union","rc_discriminated_union_builder","rc_enable_obj_strict","rc_get_array_item_type","rc_get_from_key_as_fallback","rc_get_obj_shape","rc_instanceof","rc_intersection","rc_is_valid","rc_literals","rc_loose_array","rc_loose_parse","rc_loose_record","rc_narrow","rc_null","rc_nullish_default","rc_number","rc_obj_builder","rc_obj_extends","rc_obj_merge","rc_obj_omit","rc_obj_pick","rc_obj_strict","rc_object","rc_parse","rc_parse_json","rc_parser","rc_record","rc_recursive","rc_safe_fallback","rc_string","rc_to_standard","rc_transform","rc_tuple","rc_undefined","rc_union","rc_unknown","rc_unsafe_transform","rc_unwrap","rc_unwrap_or","rc_unwrap_or_null","rc_validator","snakeCase","__toCommonJS","rc_get_from_key_as_fallback","fallbackKey","type","_alternative_key_","unwrapToObjSchema","input","isRcType","isObject","objSchema","key","value","rc_object","rc_array","rc_loose_array","shape","normalizeKeysFrom","objShape","shapeEntries","defaultProps","_obj_shape_","_kind_","_detailed_obj_shape_","_is_object_","_parse_","inputObj","ctx","parse","objErrKeyIndex_","objErrShortCircuit_","detailedObjShapeDescription","i","getWarningOrErrorWithPath","normalizedTypeOf","excessKeys","strictObj_","errors","resultObj","resultErrors","parentPath","path_","shapeEntry","typekey","subPath","path","keyToDeleteFromExcessKeys","snakeCaseKey","snakeCase","parseResult","subError","_is_extend_obj_","rc_obj_extends","options","rc_get_obj_shape","rc_obj_strict","rc_enable_obj_strict","nonRecursive","parentStrictObj","result","rc_obj_merge","objs","finalShape","rc_obj_pick","obj","keys","keyShape","rc_obj_omit","rc_obj_builder","schema","rc_discriminated_union","discriminatorKey","types","preComputedTypesShape","key","type","isRcType","rc_object","defaultProps","_kind_","_is_object_","_parse_","input","ctx","parse","isObject","objErrKeyIndex_","discriminator","parentPath","path_","invalidValueType","normalizedTypeOf","getWarningOrErrorWithPath","parseResult","rc_discriminated_union_builder","schema","rc_intersection","types","kind","allIsObject","type","_is_object_","_kind_","defaultProps","_parse_","input","ctx","parse","objResultData","result","getUndefined","withFallback","fallback","_fallback_","defaultMethod","defaultValue","rc_default","nullishDefaultMethod","rc_nullish_default","orMethod","schema","rc_union","parseMethod","input","options","rc_parse","getWarningOrErrorWithPath","ctx","message","path_","addWarning","warning","warnings_","addWarnings","warnings","parse","type","checkIfIsValid","_optional_","_orNullish_","_orNull_","isValid","noWarnings_","fb","getResultErrors","isFn","_useAutFix_","_autoFix_","autofixed","getErrorMsg","err","withAutofix","customAutofix","where","predicate","_parse_","result","predicateResult","_kind_","optional","normalizedTypeOf","_show_value_in_error_","orNull","orNullish","defaultProps","_array_item_type_","_predicate_","_alternative_key_","_obj_shape_","_detailed_obj_shape_","_is_object_","_is_extend_obj_","rc_undefined","rc_null","rc_any","rc_unknown","rc_boolean","rc_string","rc_number","rc_date","rc_instanceof","classToCheck","rc_literals","literals","literal","maxShallowObjErrors","types","kind","allIsObject","basePath","shallowObjErrors","shallowObjErrorsCount","hasNonObjTypeMember","nonShallowObjErrors","i","currentObjErrShortCircuit","objErrShortCircuit_","objErrKeyIndex_","parseResult","objErrIndex","getDefaultResult","rc_safe_fallback","rc_record","valueType","checkKey","looseCheck","inputObj","isObject","resultObj","resultErrors","parentPath","key","inputValue","subPath","path","errors","subError","rc_loose_record","checkArrayItems","_loose","useLooseMode","noLooseArray_","unique","looseErrors","arrayResult","uniqueValues","isTuple","index","_item","filterResult","uniqueValueToCheck","isUniqueKey","adjustedLooseErrors","itemError","newError","rc_array","rc_get_array_item_type","rc_disable_loose_array","nonRecursive","parentDisableLooseArray","rc_loose_array","rc_array_filter_from_schema","filterSchema","filterFn","item","rc_tuple","noWarnings","strictObj_","rc_parser","rc_loose_parse","rc_unwrap_or_null","rc_unwrap_or","RcValidationError","rc_unwrap","rc_is_valid","rc_validator","rc_recursive","recursiveType","validateTransformOutput","outputSchema","disableStrictOutputSchema","parentObjErrShortCircuit","parentStrictObj","parentNoWarnings","rc_transform","transform","outputResultErrors","rc_narrow","narrow","rc_unsafe_transform","transformResult","error","showValueInError","typeOf","rc_assert_is_valid","value","snakeCase","str","word","rc_parse_json","jsonString","parsed","isRcType","joinAsRcTypeUnion","getSchemaKind","rc_to_standard","schemaOrResult","errorOnWarnings","parseResultToStandard"]}
1
+ {"version":3,"sources":["../src/runcheck.ts","../src/rc_object.ts","../src/rc_discriminated_union.ts","../src/rc_intersection.ts"],"sourcesContent":["export {\n rc_discriminated_union,\n rc_discriminated_union_builder,\n} from './rc_discriminated_union'\nexport { rc_intersection } from './rc_intersection'\nexport {\n rc_enable_obj_strict,\n rc_get_from_key_as_fallback,\n rc_get_obj_shape,\n rc_obj_builder,\n rc_obj_extends,\n rc_obj_merge,\n rc_obj_omit,\n rc_obj_pick,\n rc_obj_strict,\n rc_object,\n} from './rc_object'\nimport { StandardSchemaV1 } from '@standard-schema/spec'\n\nexport type RcOkResult<T> = {\n /** @deprecated use errors instead */\n error: false\n errors: false\n ok: true\n /** @deprecated use value instead */\n data: T\n value: T\n warnings: string[] | false\n unwrap: () => T\n unwrapOr: (defaultValue: T) => T\n unwrapOrNull: () => T | null\n}\n\nexport type RcErrorResult<T> = {\n ok: false\n /** @deprecated use errors instead */\n error: true\n errors: string[]\n unwrap: () => T\n unwrapOr: (defaultValue: T) => T\n unwrapOrNull: () => T | null\n}\n\nexport type RcParseResult<T> = RcOkResult<T> | RcErrorResult<T>\n\nexport type RcInferType<T extends RcType<any>> =\n T extends RcType<infer U> ? U : never\n\ntype ParseResultCtx = {\n warnings_: string[]\n path_: string\n objErrShortCircuit_: boolean\n objErrKeyIndex_: number\n strictObj_: boolean\n noWarnings_: boolean\n noLooseArray_: boolean\n}\n\ntype InternalParseResult<T> =\n | { ok: true; data: T; errors: undefined }\n | { ok: false; errors: ErrorWithPath[]; data: undefined }\n\ntype WithFallback<T> = (fallback: T | (() => T)) => RcType<T>\n\ntype RemoveArrayNever<T> = T extends never[] ? never : T\n\nexport type RcOptionalKeyType<T> = RcBase<T, true>\n\nexport type RcType<T> = RcBase<T, false>\n\ntype Schema<T> = (t: T) => T\n\nexport type RcBase<T, RequiredKey extends boolean> = {\n __rc_type: Schema<T>\n readonly withFallback: WithFallback<T>\n readonly where: (\n predicate: (input: T) => boolean | { error: string },\n ) => RcType<T>\n /** RcType | undefined */\n readonly optional: () => RcType<T | undefined>\n /** { key?: RcType | undefined } */\n readonly optionalKey: () => RcOptionalKeyType<T | undefined>\n /** RcType | null */\n readonly orNull: () => RcType<T | null>\n /** RcType | null | undefined */\n readonly orNullish: () => RcType<T | null | undefined>\n readonly withAutofix: (\n customAutofix: (input: unknown) => false | { fixed: T },\n ) => RcType<T>\n readonly default: <D extends NotUndefined<T>>(\n defaultValue: D | (() => D),\n ) => RcType<NotUndefined<T> | RemoveArrayNever<D>>\n readonly nullishDefault: <D extends NotNullish<T>>(\n defaultValue: D | (() => D),\n ) => RcType<NotNullish<T> | RemoveArrayNever<D>>\n\n readonly or: <O>(schema: RcType<O>) => RcType<T | O>\n readonly parse: (input: unknown, options?: ParseOptions) => RcParseResult<T>\n\n // This should not be stripped out because it is used in type inference\n readonly _optional_key_?: RequiredKey\n /** @internal */\n readonly _parse_: (\n input: unknown,\n ctx: ParseResultCtx,\n ) => InternalParseResult<T>\n /** @internal */\n readonly _kind_: string\n /** @internal */\n readonly _fallback_: T | (() => T) | undefined\n /** @internal */\n readonly _optional_: boolean\n /** @internal */\n readonly _orNullish_: boolean\n /** @internal */\n readonly _orNull_: boolean\n /** @internal */\n readonly _useAutFix_: boolean\n /** @internal */\n readonly _is_extend_obj_: boolean\n /** @internal */\n readonly _is_object_: boolean\n /** @internal */\n readonly _array_item_type_: RcType<any> | undefined\n /** @internal */\n readonly _show_value_in_error_: boolean\n /** @internal */\n readonly _alternative_key_: string | undefined\n /** @internal */\n _detailed_obj_shape_: string | undefined\n /** @internal */\n readonly _obj_shape_: Record<string, RcType<any>> | undefined\n /** @internal */\n readonly _autoFix_: ((input: unknown) => false | { fixed: T }) | undefined\n}\n\nconst getUndefined = () => undefined\n\nfunction withFallback(this: RcType<any>, fallback: any): RcType<any> {\n return {\n ...this,\n _fallback_: fallback === undefined ? getUndefined : fallback,\n }\n}\n\nfunction defaultMethod<T>(\n this: RcType<T>,\n defaultValue: NotUndefined<T> | (() => NotUndefined<T>),\n): RcType<NotUndefined<T>> {\n return rc_default(this, defaultValue)\n}\n\nfunction nullishDefaultMethod<T>(\n this: RcType<T>,\n defaultValue: NotNullish<T> | (() => NotNullish<T>),\n): RcType<NotNullish<T>> {\n return rc_nullish_default(this, defaultValue)\n}\n\nfunction orMethod<T, O>(this: RcType<T>, schema: RcType<O>): RcType<T | O> {\n return rc_union(this, schema)\n}\n\nfunction parseMethod<T>(\n this: RcType<T>,\n input: unknown,\n options: ParseOptions,\n): RcParseResult<T> {\n return rc_parse(input, this, options)\n}\n\n/** @internal */\nexport type ErrorWithPath = string & { __withPath: true }\ntype ErrorWithoutPath = string & { __withPath?: never }\n\nexport function getWarningOrErrorWithPath(\n ctx: { path_: string },\n message: ErrorWithoutPath,\n): ErrorWithPath {\n return `${ctx.path_ ? `$${ctx.path_}: ` : ''}${message}` as ErrorWithPath\n}\n\nfunction addWarning(ctx: ParseResultCtx, warning: string) {\n ctx.warnings_.push(\n warning.startsWith('$') ? warning : getWarningOrErrorWithPath(ctx, warning),\n )\n}\n\nfunction addWarnings(ctx: ParseResultCtx, warnings: string[]) {\n warnings.forEach((warning) => addWarning(ctx, warning))\n}\n\ntype IsValid<T> =\n | boolean\n | { data: T; errors: false }\n | { data: undefined; errors: ErrorWithPath[] }\n\nexport function parse<T>(\n type: RcType<T>,\n input: unknown,\n ctx: ParseResultCtx,\n checkIfIsValid: () => IsValid<T>,\n): InternalParseResult<T> {\n if (type._optional_) {\n if (input === undefined) {\n return { ok: true, data: input as T, errors: undefined }\n }\n }\n\n if (type._orNullish_) {\n if (input === null || input === undefined) {\n return { ok: true, data: input as T, errors: undefined }\n }\n }\n\n if (type._orNull_) {\n if (input === null) {\n return { ok: true, data: input as T, errors: undefined }\n }\n }\n\n const isValid = checkIfIsValid()\n\n if (isValid) {\n if (isValid === true || !isValid.errors) {\n const validResult = isValid === true ? (input as T) : isValid.data\n\n return { ok: true, data: validResult, errors: undefined }\n }\n }\n\n if (!ctx.noWarnings_) {\n const fb = type._fallback_\n\n if (fb !== undefined) {\n addWarning(\n ctx,\n `Fallback used, errors -> ${getResultErrors(\n isValid,\n ctx,\n type,\n input,\n )}`,\n )\n\n return { ok: true, data: isFn(fb) ? fb() : fb, errors: undefined }\n }\n\n if (type._useAutFix_ && type._autoFix_) {\n const autofixed = type._autoFix_(input)\n\n if (autofixed) {\n addWarning(\n ctx,\n `Autofixed from error \"${getResultErrors(\n isValid,\n ctx,\n type,\n input,\n )}\"`,\n )\n\n return { ok: true, data: autofixed.fixed, errors: undefined }\n }\n }\n }\n\n return {\n ok: false,\n data: undefined,\n errors:\n isValid ?\n isValid.errors\n : [getWarningOrErrorWithPath(ctx, getErrorMsg(type, input))],\n }\n}\n\nfunction getResultErrors(\n isValid: false | { errors: string[] },\n ctx: ParseResultCtx,\n type: RcType<any>,\n input: unknown,\n) {\n return isValid ?\n isValid.errors.map((err) => err.replace(ctx.path_, '')).join('; ')\n : getErrorMsg(type, input)\n}\n\nfunction withAutofix(\n this: RcType<any>,\n customAutofix: (input: unknown) => any,\n): RcType<any> {\n return {\n ...this,\n _useAutFix_: true,\n _autoFix_: customAutofix,\n }\n}\n\nfunction where(\n this: RcType<any>,\n predicate: (input: any) => boolean | { error: string },\n): RcType<any> {\n return {\n ...this,\n _parse_: (input, ctx) => {\n return parse(this, input, ctx, () => {\n const result = this._parse_(input, ctx)\n\n if (!result.ok) {\n return {\n errors: result.errors,\n data: undefined,\n }\n }\n\n const predicateResult = predicate(result.data)\n\n if (predicateResult !== true) {\n return {\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n `Predicate failed${\n predicateResult === false ?\n ` for type '${this._kind_}'`\n : `: ${predicateResult.error}`\n }`,\n ),\n ],\n data: undefined,\n }\n }\n\n return { errors: false, data: result.data }\n })\n },\n }\n}\n\nfunction optional(this: RcType<any>): RcType<any> {\n return {\n ...this,\n _optional_: true,\n _kind_: `undefined | ${this._kind_}`,\n }\n}\n\nfunction getErrorMsg(type: RcType<any>, input: unknown): string {\n return `Type '${normalizedTypeOf(\n input,\n !!type._show_value_in_error_,\n )}' is not assignable to '${type._kind_}'`\n}\n\nfunction orNull(this: RcType<any>): RcType<any> {\n return {\n ...this,\n _orNull_: true,\n _kind_: `null | ${this._kind_}`,\n }\n}\n\nfunction orNullish(this: RcType<any>): RcType<any> {\n return {\n ...this,\n _orNullish_: true,\n _kind_: `null | undefined | ${this._kind_}`,\n }\n}\n\nexport const defaultProps: Omit<RcType<any>, '_parse_' | '_kind_'> = {\n __rc_type: undefined as any,\n withFallback,\n where,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- perf improvement to avoid polymorphic deoptimizations\n // @ts-ignore\n _parse_: undefined as any,\n _kind_: undefined as any,\n optional,\n optionalKey: optional as any,\n orNullish,\n withAutofix,\n orNull,\n default: defaultMethod as any,\n nullishDefault: nullishDefaultMethod as any,\n or: orMethod as any,\n parse: parseMethod as any,\n _array_item_type_: undefined,\n _fallback_: undefined,\n _predicate_: undefined,\n _optional_: false,\n _orNull_: false,\n _orNullish_: false,\n _useAutFix_: false,\n _show_value_in_error_: false,\n _alternative_key_: undefined,\n _autoFix_: undefined,\n _obj_shape_: undefined,\n _detailed_obj_shape_: undefined,\n _is_object_: false,\n _is_extend_obj_: false,\n}\n\nexport const rc_undefined: RcType<undefined> = {\n ...(defaultProps as Omit<RcType<undefined>, '_parse_' | '_kind_'>),\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => input === undefined)\n },\n _kind_: 'undefined',\n}\n\nexport const rc_null: RcType<null> = {\n ...(defaultProps as Omit<RcType<null>, '_parse_' | '_kind_'>),\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => input === null)\n },\n _kind_: 'null',\n}\n\nexport const rc_any: RcType<any> = {\n ...defaultProps,\n _parse_(input) {\n return { ok: true, data: input, errors: undefined }\n },\n _kind_: 'any',\n}\n\nexport const rc_unknown: RcType<unknown> = {\n ...defaultProps,\n _parse_(input) {\n return { ok: true, data: input, errors: undefined }\n },\n _kind_: 'unknown',\n}\n\nexport const rc_boolean: RcType<boolean> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => typeof input === 'boolean')\n },\n _kind_: 'boolean',\n}\n\nexport const rc_string: RcType<string> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => typeof input === 'string')\n },\n _kind_: 'string',\n}\n\nexport const rc_number: RcType<number> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(\n this,\n input,\n ctx,\n () => typeof input === 'number' && !Number.isNaN(input),\n )\n },\n _kind_: 'number',\n}\n\nexport const rc_date: RcType<Date> = {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n return (\n typeof input === 'object' &&\n input instanceof Date &&\n !Number.isNaN(input.getTime())\n )\n })\n },\n _kind_: 'date',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function rc_instanceof<T extends Function>(classToCheck: T): RcType<T> {\n return {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n return input instanceof classToCheck\n })\n },\n _kind_: `instanceof_${classToCheck.name ? `_${classToCheck.name}` : ''}`,\n }\n}\n\nexport function rc_literals<T extends (string | number | boolean)[]>(\n ...literals: T\n): RcType<T[number]> {\n if (literals.length === 0) {\n throw new Error('rc_literal requires at least one literal')\n }\n\n return {\n ...defaultProps,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n for (const literal of literals) {\n if (input === literal) {\n return true\n }\n }\n\n return false\n })\n },\n _show_value_in_error_: true,\n _kind_:\n literals.length == 1 ?\n normalizedTypeOf(literals[0], true)\n : literals.map((literal) => normalizedTypeOf(literal, true)).join(' | '),\n }\n}\n\nconst maxShallowObjErrors = 1\n\nexport function rc_union<T extends RcType<any>[]>(\n ...types: T\n): RcType<RcInferType<T[number]>> {\n if (types.length === 0) {\n throw new Error('Unions should have at least one type')\n }\n\n let kind = ''\n let allIsObject = false\n\n for (const type of types) {\n if (kind) {\n kind += ' | '\n }\n\n kind += type._kind_\n\n if (!allIsObject && type._is_object_) {\n allIsObject = true\n }\n }\n\n return {\n ...defaultProps,\n _kind_: kind,\n _is_object_: allIsObject,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n const basePath = ctx.path_\n const shallowObjErrors: ErrorWithPath[] = []\n let shallowObjErrorsCount = 0\n let hasNonObjTypeMember = false\n const nonShallowObjErrors: ErrorWithPath[] = []\n\n let i = 0\n for (const type of types) {\n i += 1\n\n if (type._is_object_) {\n ctx.path_ = `${basePath}|union ${i}|`\n }\n\n const currentObjErrShortCircuit = ctx.objErrShortCircuit_\n ctx.objErrShortCircuit_ = true\n ctx.objErrKeyIndex_ = 0\n\n const parseResult = type._parse_(input, ctx)\n\n const objErrIndex = ctx.objErrKeyIndex_\n\n ctx.objErrShortCircuit_ = currentObjErrShortCircuit\n ctx.objErrKeyIndex_ = 0\n\n if (parseResult.ok) {\n return { data: parseResult.data, errors: false }\n } else if (type._is_object_ && objErrIndex !== -1) {\n if (objErrIndex > 0) {\n nonShallowObjErrors.push(...parseResult.errors)\n } else {\n if (shallowObjErrorsCount < maxShallowObjErrors) {\n shallowObjErrors.push(...parseResult.errors)\n }\n\n shallowObjErrorsCount += 1\n }\n } else {\n hasNonObjTypeMember = true\n }\n }\n\n ctx.path_ = basePath\n\n if (nonShallowObjErrors.length > 0 || shallowObjErrors.length > 0) {\n if (\n shallowObjErrorsCount > maxShallowObjErrors ||\n hasNonObjTypeMember\n ) {\n shallowObjErrors.push(\n getWarningOrErrorWithPath(\n ctx,\n 'not matches any other union member',\n ),\n )\n }\n\n return {\n errors: [...nonShallowObjErrors, ...shallowObjErrors],\n data: undefined,\n }\n }\n\n return false\n })\n },\n }\n}\n\ntype NotUndefined<T> = Exclude<T, undefined>\n\n/** Generate a schema with valid fallback value for undefined inputs */\nexport function rc_default<T>(\n schema: RcType<T>,\n defaultValue: NotUndefined<T> | (() => NotUndefined<T>),\n): RcType<NotUndefined<T>> {\n return {\n ...(schema as unknown as RcType<NotUndefined<T>>),\n _optional_: false,\n _orNullish_: false,\n _orNull_: false,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (input === undefined) {\n return getDefaultResult()\n }\n\n const parseResult = schema._parse_(input, ctx)\n\n if (parseResult.ok) {\n if (parseResult.data === undefined) {\n return getDefaultResult()\n }\n\n return { data: parseResult.data as NotUndefined<T>, errors: false }\n } else {\n return { data: undefined, errors: parseResult.errors }\n }\n })\n },\n _kind_: `${schema._kind_}_default`,\n }\n\n function getDefaultResult(): IsValid<NotUndefined<T>> {\n return {\n data: isFn(defaultValue) ? defaultValue() : defaultValue,\n errors: false,\n }\n }\n}\n\ntype NotNullish<T> = Exclude<T, null | undefined>\n\nexport function rc_nullish_default<T>(\n schema: RcType<T>,\n defaultValue: NotNullish<T> | (() => NotNullish<T>),\n): RcType<NotNullish<T>> {\n return {\n ...(schema as unknown as RcType<NotNullish<T>>),\n _optional_: false,\n _orNullish_: false,\n _orNull_: false,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (input === null || input === undefined) {\n return getDefaultResult()\n }\n\n const parseResult = schema._parse_(input, ctx)\n\n if (parseResult.ok) {\n if (parseResult.data === null || parseResult.data === undefined) {\n return getDefaultResult()\n }\n\n return { data: parseResult.data as NotNullish<T>, errors: false }\n } else {\n return { data: undefined, errors: parseResult.errors }\n }\n })\n },\n _kind_: `${schema._kind_}_nullish_default`,\n }\n\n function getDefaultResult(): IsValid<NotNullish<T>> {\n return {\n data: isFn(defaultValue) ? defaultValue() : defaultValue,\n errors: false,\n }\n }\n}\n\n/** returns a fallback in case of wrong inputs without adding a warning */\nexport function rc_safe_fallback<T>(\n schema: RcType<T>,\n fallback: NoInfer<T> | (() => NoInfer<T>),\n): RcType<T> {\n return {\n ...(schema as unknown as RcType<T>),\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n const parseResult = schema._parse_(input, ctx)\n\n if (parseResult.ok) {\n return { data: parseResult.data, errors: false }\n }\n\n return { data: isFn(fallback) ? fallback() : fallback, errors: false }\n })\n },\n }\n}\n\nexport function rc_record<V>(\n valueType: RcType<V>,\n {\n checkKey,\n looseCheck,\n }: { checkKey?: (key: string) => boolean; looseCheck?: boolean } = {},\n): RcType<Record<string, V>> {\n return {\n ...defaultProps,\n _kind_: `record<string, ${valueType._kind_}>`,\n _is_object_: true,\n _parse_(inputObj, ctx) {\n return parse<Record<string, V>>(this, inputObj, ctx, () => {\n if (!isObject(inputObj)) return false\n\n const resultObj: Record<any, string> = {} as any\n const resultErrors: ErrorWithPath[] = []\n\n const parentPath = ctx.path_\n\n for (const [key, inputValue] of Object.entries(inputObj)) {\n const subPath =\n key === '' || key.includes(' ') ? `['${key}']` : `.${key}`\n\n const path = `${parentPath}${subPath}`\n ctx.path_ = path\n\n if (checkKey && !checkKey(key)) {\n resultErrors.push(\n getWarningOrErrorWithPath(ctx, `Key '${key}' is not allowed`),\n )\n continue\n }\n\n const input = inputObj[key]\n\n const parseResult = valueType._parse_(inputValue, ctx)\n\n if (parseResult.ok) {\n resultObj[key] = input\n }\n //\n else {\n const errors = parseResult.errors\n\n for (const subError of errors) {\n resultErrors.push(subError)\n }\n\n if (ctx.objErrShortCircuit_) {\n break\n }\n }\n }\n\n if (resultErrors.length > 0) {\n if (looseCheck) {\n addWarnings(ctx, resultErrors)\n } else {\n return { errors: resultErrors, data: undefined }\n }\n }\n\n ctx.path_ = parentPath\n\n return { errors: false, data: resultObj as any }\n })\n },\n }\n}\n\n/** instead of returning a general error, rejects invalid keys and returns warnings for these items */\nexport function rc_loose_record<V>(\n valueType: RcType<V>,\n { checkKey }: { checkKey?: (key: string) => boolean } = {},\n): RcType<Record<string, V>> {\n return rc_record(valueType, { checkKey, looseCheck: true })\n}\n\nfunction checkArrayItems(\n this: RcType<any>,\n input: any[],\n types: RcType<any> | readonly RcType<any>[],\n ctx: ParseResultCtx,\n _loose = false,\n options?: ArrayOptions<RcType<any>>,\n): IsValid<any[]> {\n const useLooseMode = _loose && !ctx.noWarnings_ && !ctx.noLooseArray_\n const unique = options?.unique\n\n const looseErrors: [err: ErrorWithPath[], path: string][] = []\n const arrayResult: any[] = []\n const uniqueValues = unique ? new Set<any>() : undefined\n\n const parentPath = ctx.path_\n\n const isTuple = Array.isArray(types)\n\n let index = -1\n for (const _item of input) {\n index++\n\n const type: RcType<any> = isTuple ? types[index] : types\n\n const subPath = `[${index}]`\n\n const path = `${parentPath}${subPath}`\n\n ctx.path_ = path\n\n if (options?.filter) {\n const filterResult = options.filter(_item)\n\n if (typeof filterResult === 'boolean') {\n if (!filterResult) {\n continue\n }\n } else if ('errors' in filterResult) {\n if (!useLooseMode) {\n return { errors: filterResult.errors, data: undefined }\n } else {\n looseErrors.push([filterResult.errors, path])\n continue\n }\n }\n\n ctx.path_ = path\n }\n\n let parseResult = type._parse_(_item, ctx)\n\n ctx.path_ = path\n\n if (parseResult.ok && uniqueValues) {\n let uniqueValueToCheck = parseResult.data\n\n const isUniqueKey = typeof unique === 'string'\n\n if (isUniqueKey) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n uniqueValueToCheck = parseResult.data[unique]\n } else if (typeof unique === 'function') {\n uniqueValueToCheck = unique(parseResult.data)\n }\n\n if (uniqueValues.has(uniqueValueToCheck)) {\n if (isUniqueKey) {\n ctx.path_ = `${parentPath}${subPath}.${unique}`\n }\n\n parseResult = {\n ok: false,\n data: undefined,\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n isUniqueKey ?\n `Type '${type._obj_shape_?.[unique]?._kind_}' with value \"${uniqueValueToCheck}\" is not unique`\n : typeof unique === 'function' ?\n `Type '${type._kind_}' unique fn return with value \"${uniqueValueToCheck}\" is not unique`\n : `${type._kind_} value is not unique`,\n ),\n ],\n }\n } else {\n uniqueValues.add(uniqueValueToCheck)\n }\n }\n\n if (!parseResult.ok) {\n if (!useLooseMode) {\n return {\n errors: parseResult.errors,\n data: undefined,\n }\n } else {\n looseErrors.push([parseResult.errors, path])\n continue\n }\n } else {\n arrayResult.push(parseResult.data)\n }\n }\n\n if (looseErrors.length > 0) {\n const adjustedLooseErrors: ErrorWithPath[] = []\n\n for (const [errors, path] of looseErrors) {\n for (const err of errors) {\n let itemError = err.slice(path.length + 1)\n\n if (itemError.startsWith(': ')) {\n itemError = itemError.slice(2)\n }\n\n if (itemError.startsWith('.') || itemError.startsWith('[')) {\n itemError = `#${itemError}`\n }\n\n const newError = `$${path}: Rejected, error -> ${itemError}`\n\n adjustedLooseErrors.push(newError as ErrorWithPath)\n }\n\n addWarnings(ctx, adjustedLooseErrors)\n }\n }\n\n return { errors: false, data: arrayResult }\n}\n\ntype ArrayOptions<T extends RcType<any>> = {\n unique?: RcInferType<T> extends Record<string, any> ?\n keyof RcInferType<T> | ((parsedItem: RcInferType<T>) => any)\n : boolean | ((parsedItem: RcInferType<T>) => any)\n filter?: (item: RcInferType<T>) => boolean | { errors: ErrorWithPath[] }\n}\n\nexport function rc_array<T extends RcType<any>>(\n type: T,\n options?: ArrayOptions<T>,\n): RcType<RcInferType<T>[]> {\n return {\n ...defaultProps,\n _kind_: `${type._kind_}[]`,\n _array_item_type_: type,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, false, options)\n })\n },\n }\n}\n\nexport function rc_get_array_item_type<T>(type: RcType<T[]>): RcType<T> {\n if (!type._array_item_type_) {\n throw new Error(`Type does not have an item type`)\n }\n\n return type._array_item_type_\n}\n\nexport function rc_disable_loose_array<T extends RcType<any>>(\n type: T,\n { nonRecursive = false }: { nonRecursive?: boolean } = {},\n): T {\n if (nonRecursive) {\n if (!type._kind_.endsWith('[]')) {\n throw new Error(\n `rc_disable_loose_array: nonRecursive option can only be used with array types`,\n )\n }\n\n return {\n ...type,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, false)\n })\n },\n }\n }\n\n return {\n ...type,\n _parse_(input, ctx) {\n const parentDisableLooseArray = ctx.noLooseArray_\n\n ctx.noLooseArray_ = true\n const result = type._parse_(input, ctx)\n ctx.noLooseArray_ = parentDisableLooseArray\n\n return result\n },\n }\n}\n\n/** instead of returning a general error, rejects invalid array items and returns warnings for these items */\nexport function rc_loose_array<T extends RcType<any>>(\n type: T,\n options?: ArrayOptions<T>,\n): RcType<RcInferType<T>[]> {\n return {\n ...defaultProps,\n _array_item_type_: type,\n _kind_: `${type._kind_}[]`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, true, options)\n })\n },\n }\n}\n\nexport function rc_array_filter_from_schema<B, T>(\n filterSchema: RcType<B>,\n filterFn: (item: B) => boolean,\n type: RcType<T>,\n options?: Omit<ArrayOptions<RcType<any>>, 'filter'> & {\n loose?: boolean\n },\n): RcType<T[]> {\n return {\n ...defaultProps,\n _array_item_type_: type,\n _kind_: `${type._kind_}[]`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length === 0) return true\n\n return checkArrayItems.call(this, input, type, ctx, options?.loose, {\n ...options,\n filter(item) {\n const filterResult = filterSchema._parse_(item, ctx)\n\n if (!filterResult.ok) {\n return { errors: filterResult.errors }\n }\n\n return filterFn(filterResult.data)\n },\n })\n })\n },\n }\n}\n\ntype MapTupleToTypes<T extends readonly [...any[]]> = {\n -readonly [K in keyof T]: RcInferType<T[K]>\n}\n\n/**\n * Check for a tuple of types\n *\n * TS equivalent example: [string, number, boolean]\n */\nexport function rc_tuple<const T extends readonly RcType<any>[]>(\n types: T,\n): RcType<MapTupleToTypes<T>> {\n return {\n ...defaultProps,\n _kind_: `[${types.map((type) => type._kind_).join(', ')}]`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n if (!Array.isArray(input)) return false\n\n if (input.length !== types.length) return false\n\n return checkArrayItems.call(this, input, types, ctx) as boolean\n })\n },\n }\n}\n\ntype ParseOptions = {\n /** ignore fallback and autofix */\n noWarnings?: boolean\n}\n\nfunction showWarnings(result: RcOkResult<any>) {\n if (result.warnings && result.warnings.length > 0) {\n console.warn(`Unwrap warnings: ${result.warnings.join('\\n')}`)\n }\n}\n\nfunction unwrap(this: RcParseResult<any>) {\n if (this.errors) {\n throw new RcValidationError(this.errors)\n }\n\n showWarnings(this)\n\n return this.value\n}\n\nfunction unwrapOr(this: RcParseResult<any>, defaultValue: any) {\n if (this.errors) {\n return defaultValue\n }\n\n showWarnings(this)\n\n return this.value\n}\n\nfunction unwrapOrNull(this: RcParseResult<any>) {\n if (this.errors) {\n return null\n }\n\n showWarnings(this)\n\n return this.value\n}\n\n/**\n * Parse a runcheck type. If valid return the valid input, with warning for autofix\n * and fallback, or the errors if invalid\n */\nexport function rc_parse<S>(\n input: any,\n type: RcType<S>,\n { noWarnings = false }: ParseOptions = {},\n): RcParseResult<S> {\n const ctx: ParseResultCtx = {\n warnings_: [],\n path_: '',\n objErrShortCircuit_: false,\n objErrKeyIndex_: 0,\n noWarnings_: noWarnings,\n strictObj_: false,\n noLooseArray_: false,\n }\n\n const parseResult = type._parse_(input, ctx)\n\n if (parseResult.ok) {\n return {\n error: false,\n errors: false,\n ok: true,\n data: parseResult.data,\n value: parseResult.data,\n warnings: ctx.warnings_.length > 0 ? ctx.warnings_ : false,\n unwrap,\n unwrapOr,\n unwrapOrNull,\n }\n }\n\n return {\n ok: false,\n error: true,\n errors: parseResult.errors,\n unwrap,\n unwrapOr,\n unwrapOrNull,\n }\n}\n\nexport type RcParser<T> = (input: any) => RcParseResult<T>\n\n/** create a reusable parser for a certain type */\nexport function rc_parser<S>(type: RcType<S>): RcParser<S> {\n return (input: any) => rc_parse(input, type)\n}\n\n/** @deprecated use rc_unwrap_or_null instead */\nexport function rc_loose_parse<S>(\n input: any,\n type: RcType<S>,\n options?: ParseOptions,\n): { data: S | null; errors: string[] | false; warnings: string[] | false } {\n const result = rc_parse(input, type, options)\n\n if (result.errors) {\n return {\n data: null,\n errors: result.errors,\n warnings: false,\n }\n }\n\n return { data: result.value, errors: false, warnings: result.warnings }\n}\n\n/** @deprecated use rc_parse(...).unwrapOrNull() instead */\nexport function rc_unwrap_or_null<R>(result: RcParseResult<R>): {\n value: R | null\n errors: string[] | false\n warnings: string[] | false\n} {\n return rc_unwrap_or(result, null)\n}\n\n/** @deprecated use rc_parse(...).unwrapOr(defaultValue) instead */\nexport function rc_unwrap_or<R, F = NoInfer<R>>(\n result: RcParseResult<R>,\n fallback: F,\n): {\n value: R | F\n errors: string[] | false\n warnings: string[] | false\n} {\n if (result.error) {\n return {\n value: fallback,\n errors: result.errors,\n warnings: false,\n }\n }\n\n return { value: result.value, errors: false, warnings: result.warnings }\n}\n\nexport class RcValidationError extends Error {\n name = 'RcValidationError'\n\n constructor(public readonly errors: string[]) {\n super(errors.join('\\n'))\n }\n}\n\n/** @deprecated use rc_parse(...).unwrap() instead */\nexport function rc_unwrap<R>(result: RcParseResult<R>): {\n value: R\n warnings: string[] | false\n} {\n if (result.errors) {\n throw new RcValidationError(result.errors)\n }\n\n return result\n}\n\nexport function rc_is_valid<S>(input: any, type: RcType<S>): input is S {\n const ctx: ParseResultCtx = {\n warnings_: [],\n path_: '',\n objErrShortCircuit_: false,\n objErrKeyIndex_: 0,\n noWarnings_: false,\n strictObj_: false,\n noLooseArray_: false,\n }\n\n return type._parse_(input, ctx).ok\n}\n\nexport function rc_validator<S>(type: RcType<S>) {\n return (input: any): input is S => rc_is_valid(input, type)\n}\n\nexport function rc_recursive<T extends RcBase<any, any>>(type: () => T): T {\n let recursiveType: { -readonly [K in keyof T]: T[K] } | undefined = undefined\n\n return {\n ...defaultProps,\n _kind_: 'recursive',\n _parse_(input, ctx) {\n if (!recursiveType) {\n recursiveType = {\n ...type(),\n }\n\n if (this._optional_) {\n recursiveType._optional_ = this._optional_\n }\n\n if (this._orNullish_) {\n recursiveType._orNullish_ = this._orNullish_\n }\n\n if (this._orNull_) {\n recursiveType._orNull_ = this._orNull_\n }\n\n if (this._autoFix_) {\n recursiveType._autoFix_ = this._autoFix_\n }\n\n if (this._fallback_) {\n recursiveType._fallback_ = this._fallback_\n }\n\n if (this._alternative_key_) {\n recursiveType._alternative_key_ = this._alternative_key_\n }\n }\n\n return recursiveType._parse_(input, ctx)\n },\n } as T\n}\n\ntype TransformOptions<T> = {\n /**\n * @deprecated will be removed in the next major version\n *\n * if the input type is invalid, the transform will be ignore\n * schema will be used to validate the input\n */\n outputSchema?: RcType<T>\n /** @deprecated will be removed in the next major version */\n disableStrictOutputSchema?: boolean\n}\n\nfunction validateTransformOutput<T>(\n ctx: ParseResultCtx,\n outputSchema: RcType<T>,\n input: any,\n disableStrictOutputSchema: boolean | undefined,\n): InternalParseResult<T> {\n const parentPath = ctx.path_\n const parentObjErrShortCircuit = ctx.objErrShortCircuit_\n const parentStrictObj = ctx.strictObj_\n const parentNoWarnings = ctx.noWarnings_\n\n ctx.objErrShortCircuit_ = true\n ctx.path_ = `${parentPath}|output|`\n\n if (!disableStrictOutputSchema) {\n ctx.strictObj_ = true\n ctx.noWarnings_ = true\n }\n\n const result = outputSchema._parse_(input, ctx)\n\n ctx.strictObj_ = parentStrictObj\n ctx.noWarnings_ = parentNoWarnings\n ctx.path_ = parentPath\n ctx.objErrShortCircuit_ = parentObjErrShortCircuit\n\n return result\n}\n\n/** validate a input or subset of input and transform the valid result */\nexport function rc_transform<Input, Transformed>(\n type: RcType<Input>,\n transform: (input: Input, inputSchema: RcType<Input>) => Transformed,\n {\n outputSchema,\n disableStrictOutputSchema,\n }: TransformOptions<Transformed> = {},\n): RcType<Transformed> {\n return {\n ...defaultProps,\n _kind_: `${type._kind_}_transform`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n let outputResultErrors: ErrorWithPath[] | null = null\n\n if (outputSchema) {\n const parseResult = validateTransformOutput(\n ctx,\n outputSchema,\n input,\n disableStrictOutputSchema,\n )\n\n if (parseResult.ok) {\n return {\n data: parseResult.data,\n errors: false,\n }\n } else {\n outputResultErrors = parseResult.errors\n }\n }\n\n // TODO: optimize this\n const newType = {\n ...type,\n _kind_: this._kind_,\n }\n\n const parseResult = newType._parse_(input, ctx)\n\n if (parseResult.ok) {\n return {\n errors: false,\n data: transform(parseResult.data, type),\n }\n } else {\n return {\n errors: [...(outputResultErrors || []), ...parseResult.errors],\n data: undefined,\n }\n }\n })\n },\n }\n}\n\n/** Create transforms which result can be validated with the same schema */\nexport function rc_narrow<Input, Narrowed extends Input>(\n type: RcType<Input>,\n narrow: (input: Input, inputSchema: RcType<Input>) => Narrowed,\n): RcType<Narrowed> {\n return rc_transform(type, narrow)\n}\n\n/** Allows the transform function to return a error if transformation is invalid */\nexport function rc_unsafe_transform<Input, Transformed>(\n type: RcType<Input>,\n transform: (\n input: Input,\n inputSchema: RcType<Input>,\n ) =>\n | { ok: true; data: Transformed }\n | { ok: false; errors: string | string[] },\n {\n outputSchema,\n disableStrictOutputSchema,\n }: TransformOptions<Transformed> = {},\n): RcType<Transformed> {\n return {\n ...defaultProps,\n _kind_: `${type._kind_}_transform`,\n _parse_(input, ctx) {\n return parse(this, input, ctx, (): IsValid<Transformed> => {\n let outputResultErrors: ErrorWithPath[] | null = null\n\n if (outputSchema) {\n const parseResult = validateTransformOutput(\n ctx,\n outputSchema,\n input,\n disableStrictOutputSchema,\n )\n\n if (parseResult.ok) {\n return {\n errors: false,\n data: parseResult.data,\n }\n } else {\n outputResultErrors = parseResult.errors\n }\n }\n\n // TODO: optimize this\n const newType = {\n ...type,\n _kind_: this._kind_,\n }\n\n const parseResult = newType._parse_(input, ctx)\n\n if (parseResult.ok) {\n const transformResult = transform(parseResult.data, type)\n\n if (transformResult.ok) {\n return { errors: false, data: transformResult.data }\n } else {\n return {\n errors:\n typeof transformResult.errors === 'string' ?\n [getWarningOrErrorWithPath(ctx, transformResult.errors)]\n : transformResult.errors.map((error) =>\n getWarningOrErrorWithPath(ctx, error),\n ),\n data: undefined,\n }\n }\n }\n\n return {\n errors: [...(outputResultErrors || []), ...parseResult.errors],\n data: undefined,\n }\n })\n },\n }\n}\n\nexport function normalizedTypeOf(\n input: unknown,\n showValueInError: boolean,\n): string {\n const typeOf = typeof input\n\n const type = ((): string => {\n if (typeOf === 'object') {\n if (Array.isArray(input)) {\n return 'array'\n }\n\n if (!input) {\n return 'null'\n }\n }\n\n if (typeof input === 'number' && Number.isNaN(input)) {\n return 'NaN'\n }\n\n return typeOf\n })()\n\n return (\n showValueInError &&\n (type === 'string' || type === 'number' || type === 'boolean')\n ) ?\n `${type}(${input})`\n : type\n}\n\ntype NonArrayObject = {\n [x: string]: any\n [y: number]: never\n}\n\nexport function rc_assert_is_valid<S>(\n result: RcParseResult<S>,\n): asserts result is {\n ok: true\n error: false\n errors: false\n data: S\n value: S\n warnings: string[] | false\n unwrap: () => S\n unwrapOr: (defaultValue: S) => S\n unwrapOrNull: () => S | null\n} {\n if (result.errors) {\n throw new Error(`invalid input: ${result.errors.join(', ')}`)\n }\n}\n\n/** @internal */\nexport function isObject(value: any): value is NonArrayObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n/** @internal */\nexport function snakeCase(str: string): string {\n return str\n .replace(/\\W+/g, ' ')\n .split(/ |\\B(?=[A-Z])/)\n .map((word) => word.toLowerCase())\n .join('_')\n}\n\nexport function rc_parse_json<T>(\n jsonString: unknown,\n schema: RcType<T>,\n options?: ParseOptions,\n): RcParseResult<T> {\n try {\n if (typeof jsonString !== 'string') {\n return {\n ok: false,\n error: true,\n errors: [\n `expected a json string, got ${normalizedTypeOf(jsonString, true)}`,\n ],\n unwrap,\n unwrapOr,\n unwrapOrNull,\n }\n }\n\n const parsed = JSON.parse(jsonString)\n\n return rc_parse(parsed, schema, options)\n } catch (err) {\n return {\n ok: false,\n error: true,\n errors: [`json parsing error: ${isObject(err) ? err.message : ''}`],\n unwrap,\n unwrapOr,\n unwrapOrNull,\n }\n }\n}\n\nfunction isFn(value: any): value is () => any {\n return typeof value === 'function'\n}\n\nexport type Prettify<T> =\n T extends Record<string, any> ?\n {\n [K in keyof T]: Prettify<T[K]>\n }\n : T\n\nexport type RcPrettyInferType<T extends RcType<any>> = Prettify<RcInferType<T>>\n\nexport function isRcType(value: any): value is RcType<any> {\n return isObject(value) && '__rc_type' in value\n}\n\n/** workaround for the typescript limitation: https://github.com/microsoft/TypeScript/issues/52295 */\nexport function joinAsRcTypeUnion<T>(\n type: T,\n): RcType<T extends RcType<infer U> ? U : never> {\n return type as any\n}\n\nexport function getSchemaKind(schema: RcType<any>): string {\n return schema._kind_\n}\n\nexport function rc_to_standard<T>(\n schemaOrResult: RcType<T> | RcParseResult<T>,\n {\n errorOnWarnings = false,\n }: {\n errorOnWarnings?: boolean\n } = {},\n): StandardSchemaV1<T> {\n return {\n '~standard': {\n validate(value) {\n const result =\n 'ok' in schemaOrResult ? schemaOrResult : (\n rc_parse(value, schemaOrResult)\n )\n\n return parseResultToStandard(result, errorOnWarnings)\n },\n vendor: 'runcheck',\n version: 1,\n },\n }\n}\n\nfunction parseResultToStandard<T>(\n result: RcParseResult<T>,\n errorOnWarnings: boolean,\n): StandardSchemaV1.Result<T> {\n if (errorOnWarnings && result.ok && result.warnings) {\n return {\n issues: result.warnings.map((warning) => ({\n message: warning,\n })),\n }\n }\n\n if (result.ok) {\n return { value: result.value }\n }\n\n return {\n issues: result.errors.map((error) => ({\n message: error,\n })),\n }\n}\n","import {\n ErrorWithPath,\n RcBase,\n RcInferType,\n RcOptionalKeyType,\n RcType,\n defaultProps,\n getWarningOrErrorWithPath,\n isObject,\n isRcType,\n normalizedTypeOf,\n parse,\n rc_array,\n rc_loose_array,\n snakeCase,\n} from './runcheck'\n\n/**\n * If the schema key value is undefined uses a value from the fallback key as a safe value\n * Can be used to rename keys from input\n */\nexport function rc_get_from_key_as_fallback<T extends RcType<any>>(\n fallbackKey: string,\n type: T,\n): RcType<RcInferType<T>> {\n return {\n ...type,\n _alternative_key_: fallbackKey,\n }\n}\n\nexport type RcObject = {\n [key: string]: RcBase<any, any> | RcObject\n}\n\nexport type TypeOfObjectType<T extends RcObject> = Flatten<\n AddQuestionMarks<{\n [K in keyof T]: T[K] extends RcType<infer U> ? RequiredKey<U>\n : T[K] extends RcOptionalKeyType<infer W> ? W\n : T[K] extends RcObject ? RequiredKey<TypeOfObjectType<T[K]>>\n : never\n }>\n>\n\nexport type RcObjTypeReturn<T extends RcObject> = RcType<TypeOfObjectType<T>>\n\ntype RequiredKey<T> = { _required_key_: T }\n\ntype RequiredKeys<T extends object> = {\n [k in keyof T]: T[k] extends RequiredKey<any> ? k : never\n}[keyof T]\n\ntype AddQuestionMarks<\n T extends object,\n R extends keyof T = RequiredKeys<T>,\n> = Pick<Required<T>, R> & Partial<Omit<T, R>>\n\ntype Identity<T> = T\n\ntype Flatten<T> = Identity<{\n [k in keyof T]: T[k] extends RequiredKey<infer U> ? U : T[k]\n}>\n\nfunction unwrapToObjSchema(input: unknown): RcType<any> {\n if (isRcType(input)) {\n return input\n } else if (isObject(input)) {\n const objSchema: Record<string, RcType<any>> = {}\n\n for (const [key, value] of Object.entries(input)) {\n objSchema[key] = unwrapToObjSchema(value)\n }\n\n return rc_object(objSchema)\n } else if (Array.isArray(input)) {\n const [type, value] = input\n\n switch (type) {\n case 'optional':\n return unwrapToObjSchema(value).optional()\n case 'nullish_or':\n return unwrapToObjSchema(value).orNullish()\n case 'null_or':\n return unwrapToObjSchema(value).orNull()\n case 'array_of':\n return rc_array(unwrapToObjSchema(value))\n case 'loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value))\n case 'optional_array_of':\n return rc_array(unwrapToObjSchema(value)).optional()\n case 'optional_loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value)).optional()\n case 'null_or_array_of':\n return rc_array(unwrapToObjSchema(value)).orNull()\n case 'null_or_loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value)).orNull()\n case 'nullish_or_array_of':\n return rc_array(unwrapToObjSchema(value)).orNullish()\n case 'nullish_or_loose_array_of':\n return rc_loose_array(unwrapToObjSchema(value)).orNullish()\n default:\n return type\n }\n }\n\n throw new Error(`invalid schema: ${input}`)\n}\n\nexport type ObjOptions = {\n normalizeKeysFrom?: 'snake_case'\n}\n\nexport function rc_object<T extends RcObject>(\n shape: T,\n { normalizeKeysFrom }: ObjOptions = {},\n): RcObjTypeReturn<T> {\n const objShape: Record<string, RcType<any>> = {}\n\n for (const [key, value] of Object.entries(shape)) {\n objShape[key] = unwrapToObjSchema(value)\n }\n\n const shapeEntries = Object.entries(objShape).map(([key, type]) => {\n return { key, type }\n })\n\n return {\n ...defaultProps,\n _obj_shape_: objShape,\n _kind_: 'object',\n _detailed_obj_shape_: '',\n _is_object_: true,\n _parse_(inputObj, ctx) {\n return parse<TypeOfObjectType<T>>(this, inputObj, ctx, () => {\n if (!isObject(inputObj)) {\n ctx.objErrKeyIndex_ = -1\n\n if (ctx.objErrShortCircuit_ && !this._detailed_obj_shape_) {\n return false\n }\n\n if (!this._detailed_obj_shape_) {\n let detailedObjShapeDescription = `${this._kind_}{ `\n let i = 0\n for (const { key, type } of shapeEntries) {\n if (detailedObjShapeDescription.length > 100) {\n detailedObjShapeDescription += `, ...`\n break\n }\n\n if (i !== 0) {\n detailedObjShapeDescription += `, `\n }\n\n detailedObjShapeDescription += `${key}: ${type._kind_}`\n i++\n }\n\n detailedObjShapeDescription += ` }`\n this._detailed_obj_shape_ = detailedObjShapeDescription\n }\n\n return {\n data: undefined,\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n `Type '${normalizedTypeOf(inputObj, false)}' is not assignable to '${this._detailed_obj_shape_}'`,\n ),\n ],\n }\n }\n\n const isStrict = this._kind_ === 'strict_obj' || ctx.strictObj_\n\n const excessKeys =\n isStrict ? new Set<string>(Object.keys(inputObj)) : undefined\n\n if (excessKeys && excessKeys.size > shapeEntries.length) {\n ctx.objErrKeyIndex_ = -1\n const errors: ErrorWithPath[] = []\n\n if (ctx.objErrShortCircuit_) {\n return {\n data: undefined,\n errors: [\n getWarningOrErrorWithPath(\n ctx,\n `Expected strict object with ${shapeEntries.length} keys but got ${excessKeys.size}`,\n ),\n ],\n }\n }\n\n for (const { key } of shapeEntries) {\n if (!excessKeys.has(key)) {\n errors.push(\n getWarningOrErrorWithPath(ctx, `Key '${key}' is missing`),\n )\n } else {\n excessKeys.delete(key)\n }\n }\n\n for (const key of excessKeys) {\n errors.push(\n getWarningOrErrorWithPath(\n ctx,\n `Key '${key}' is not defined in the object shape`,\n ),\n )\n }\n\n return {\n data: undefined,\n errors,\n }\n }\n\n const resultObj: Record<any, string> = {} as any\n const resultErrors: ErrorWithPath[] = []\n\n const parentPath = ctx.path_\n\n let i = -1\n for (const shapeEntry of shapeEntries) {\n const key = shapeEntry.key\n const type = shapeEntry.type\n\n const typekey = key as keyof T\n i += 1\n\n const subPath =\n key === '' || key.includes(' ') ? `['${key}']` : `.${key}`\n\n const path = `${parentPath}${subPath}`\n\n ctx.path_ = path\n\n let input = inputObj[key]\n let keyToDeleteFromExcessKeys = key\n\n if (input === undefined && type._alternative_key_) {\n input = inputObj[type._alternative_key_]\n keyToDeleteFromExcessKeys = type._alternative_key_\n }\n\n if (input === undefined && normalizeKeysFrom === 'snake_case') {\n const snakeCaseKey = snakeCase(key)\n\n input = inputObj[snakeCaseKey]\n keyToDeleteFromExcessKeys = snakeCaseKey\n }\n\n excessKeys?.delete(keyToDeleteFromExcessKeys)\n\n const parseResult = type._parse_(input, ctx)\n\n if (parseResult.ok) {\n resultObj[typekey] = parseResult.data\n }\n //\n else {\n for (const subError of parseResult.errors) {\n ctx.path_ = path\n resultErrors.push(subError)\n }\n\n if (ctx.objErrShortCircuit_) {\n ctx.objErrKeyIndex_ = i\n break\n }\n }\n }\n\n if (excessKeys) {\n if (excessKeys.size > 0) {\n for (const key of excessKeys) {\n ctx.path_ = parentPath\n\n resultErrors.push(\n getWarningOrErrorWithPath(\n ctx,\n `Key '${key}' is not defined in the object shape`,\n ),\n )\n }\n }\n }\n\n if (resultErrors.length > 0) {\n return { errors: resultErrors, data: undefined }\n }\n\n ctx.path_ = parentPath\n\n if (this._is_extend_obj_) {\n return {\n errors: false,\n data: {\n ...(inputObj as any),\n ...(resultObj as any),\n },\n }\n }\n\n return { errors: false, data: resultObj as any }\n })\n },\n }\n}\n\nexport function rc_obj_extends<T extends RcObject>(\n shape: T,\n options?: ObjOptions,\n): RcObjTypeReturn<T> {\n return {\n ...rc_object(shape, options),\n _kind_: `extends_object`,\n _is_extend_obj_: true,\n }\n}\n\nexport function rc_get_obj_shape<T extends Record<string, any>>(\n type: RcType<T>,\n): {\n [K in keyof T]: RcType<T[K]>\n} {\n if (!type._obj_shape_) {\n throw new Error(`type does not have an object shape`)\n }\n\n return type._obj_shape_ as T\n}\n\n/** return an error if the obj has more keys than the expected type */\nexport function rc_obj_strict<T extends RcObject>(\n shape: T,\n options?: ObjOptions,\n): RcObjTypeReturn<T> {\n return {\n ...rc_object(shape, options),\n _kind_: `strict_obj`,\n }\n}\n\nexport function rc_enable_obj_strict<T extends RcType<any>>(\n type: T,\n {\n nonRecursive,\n }: {\n nonRecursive?: boolean\n } = {},\n): T {\n if (nonRecursive) {\n if (!type._obj_shape_) {\n throw new Error(\n `rc_enable_obj_strict: nonRecursive option can only be used on object types`,\n )\n }\n\n return {\n ...type,\n _kind_: `strict_obj`,\n }\n }\n\n return {\n ...type,\n _parse_(input, ctx) {\n const parentStrictObj = ctx.strictObj_\n ctx.strictObj_ = true\n const result = type._parse_(input, ctx)\n ctx.strictObj_ = parentStrictObj\n return result\n },\n }\n}\n\ntype AnyObj = Record<string, unknown>\n\ntype Extends<T extends AnyObj, W extends AnyObj> = Omit<T, keyof W> & W\n\nexport function rc_obj_merge<A extends AnyObj, B extends AnyObj>(\n ...objs: [RcType<A>, RcType<B>]\n): RcType<Extends<A, B>>\nexport function rc_obj_merge<\n A extends AnyObj,\n B extends AnyObj,\n C extends AnyObj,\n>(...objs: [RcType<A>, RcType<B>, RcType<C>]): RcType<Extends<Extends<A, B>, C>>\nexport function rc_obj_merge<\n A extends AnyObj,\n B extends AnyObj,\n C extends AnyObj,\n D extends AnyObj,\n>(\n ...objs: [RcType<A>, RcType<B>, RcType<C>, RcType<D>]\n): RcType<Extends<Extends<Extends<A, B>, C>, D>>\nexport function rc_obj_merge(\n ...objs: RcType<Record<string, unknown>>[]\n): RcType<any> {\n const finalShape = {} as any\n\n for (const objShape of objs) {\n Object.assign(finalShape, objShape._obj_shape_)\n }\n\n return rc_object(finalShape)\n}\n\nexport function rc_obj_pick<O extends AnyObj, K extends keyof O>(\n obj: RcType<O>,\n keys: K[],\n): RcType<Pick<O, K>> {\n const shape = {} as any\n\n if (!obj._obj_shape_) {\n throw new Error('rc_obj_pick: obj must be an object type')\n }\n\n for (const key of keys) {\n const keyShape = obj._obj_shape_[key as string]\n if (keyShape) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n shape[key] = keyShape\n }\n }\n\n return rc_object(shape) as any\n}\n\nexport function rc_obj_omit<O extends AnyObj, K extends keyof O>(\n obj: RcType<O>,\n keys: K[],\n): RcType<Omit<O, K>> {\n const shape = {} as any\n\n if (!obj._obj_shape_) {\n throw new Error('rc_obj_omit: obj must be an object type')\n }\n\n for (const key of Object.keys(obj._obj_shape_)) {\n if (!(keys as any[]).includes(key)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n shape[key] = obj._obj_shape_[key]\n }\n }\n\n return rc_object(shape) as any\n}\n\ntype ExpectedSchema<T> = (t: T) => T\n\ntype RcTypeWithSchemaEqualTo<T> = { __rc_type: ExpectedSchema<T> }\n\ntype StrictObjTypeToRcType<T> = {\n [K in keyof T]-?: StrictTypeToRcType<T[K]>\n}\n\ntype IsUnion<T, U extends T = T> =\n T extends unknown ?\n [U] extends [T] ?\n false\n : true\n : false\n\ntype StrictTypeToRcType<T> =\n [T] extends [(infer U)[]] ?\n | ['array_of' | 'loose_array_of', StrictTypeToRcType<U>]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [(infer U)[] | undefined] ?\n | ['optional_array_of' | 'optional_loose_array_of', StrictTypeToRcType<U>]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [(infer U)[] | null] ?\n | ['null_or_array_of' | 'null_or_loose_array_of', StrictTypeToRcType<U>]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [(infer U)[] | undefined | null] ?\n | [\n 'nullish_or_array_of' | 'nullish_or_loose_array_of',\n StrictTypeToRcType<U>,\n ]\n | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any>] ?\n IsUnion<T> extends true ?\n RcTypeWithSchemaEqualTo<T>\n : StrictObjTypeToRcType<T> | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any> | null] ?\n ['null_or', StrictObjTypeToRcType<T>] | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any> | undefined] ?\n ['optional', StrictObjTypeToRcType<T>] | RcTypeWithSchemaEqualTo<T>\n : [T] extends [Record<string, any> | null | undefined] ?\n ['nullish_or', StrictObjTypeToRcType<T>] | RcTypeWithSchemaEqualTo<T>\n : RcTypeWithSchemaEqualTo<T>\n\nexport type StrictTypeToRcTypeBase<T extends Record<string, any>> = {\n [K in keyof T]-?: StrictTypeToRcType<T[K]>\n}\n\nexport function rc_obj_builder<T extends Record<string, any>>() {\n return <S extends StrictTypeToRcTypeBase<T>>(\n schema: {\n [K in keyof S]: K extends keyof T ? S[K] : never\n },\n options?: ObjOptions,\n ): RcType<T> => {\n return rc_object(schema as any, options) as any\n }\n}\n","import {\n RcObject,\n StrictTypeToRcTypeBase,\n TypeOfObjectType,\n rc_object,\n} from './rc_object'\nimport {\n Prettify,\n RcBase,\n RcType,\n defaultProps,\n getWarningOrErrorWithPath,\n isObject,\n isRcType,\n normalizedTypeOf,\n parse,\n} from './runcheck'\n\nexport function rc_discriminated_union<\n K extends string,\n T extends Record<string, RcObject | RcBase<any, any>>,\n>(\n discriminatorKey: K,\n types: T,\n): RcType<\n Prettify<\n {\n [P in keyof T]: {\n [Q in K]: P\n } & (T[P] extends RcType<infer U> ? U\n : T[P] extends RcObject ? TypeOfObjectType<T[P]>\n : never)\n }[keyof T]\n >\n> {\n const preComputedTypesShape = {} as Record<string, RcType<any>>\n\n for (const [key, type] of Object.entries(types)) {\n preComputedTypesShape[key] = isRcType(type) ? type : rc_object(type as any)\n }\n\n return {\n ...defaultProps,\n _kind_: `discriminated_union`,\n _is_object_: true,\n _parse_(input, ctx) {\n return parse<any>(this, input, ctx, () => {\n if (!isObject(input)) {\n ctx.objErrKeyIndex_ = -1\n return false\n }\n\n const discriminator = input[discriminatorKey]\n\n const parentPath = ctx.path_\n\n const type = preComputedTypesShape[discriminator]\n\n if (!type) {\n const invalidValueType = normalizedTypeOf(discriminator, true)\n\n return {\n errors: [\n getWarningOrErrorWithPath(\n { path_: `${parentPath}.${discriminatorKey}` },\n `Type '${invalidValueType}' is not a valid discriminator`,\n ),\n ],\n data: undefined,\n }\n }\n\n ctx.path_ = `${parentPath}|${discriminatorKey}: ${discriminator}|`\n\n const parseResult = type._parse_(input, ctx)\n\n ctx.path_ = parentPath\n\n if (!parseResult.ok) {\n return { errors: parseResult.errors, data: undefined }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n parseResult.data[discriminatorKey] = discriminator\n\n return { errors: false, data: parseResult.data }\n })\n },\n }\n}\n\ntype OmitDiscriminator<K, D extends Record<string, unknown>> =\n D extends any ? Omit<D, K & string> : never\n\nexport function rc_discriminated_union_builder<\n D extends Record<string, unknown>,\n K extends keyof D,\n>(discriminatorKey: K) {\n return (schema: {\n [P in D[K] & string]: StrictTypeToRcTypeBase<\n OmitDiscriminator<K, D & { [Q in K]: P }>\n >\n }): RcType<D> => {\n return rc_discriminated_union(\n discriminatorKey as any,\n schema as any,\n ) as unknown as RcType<D>\n }\n}\n","import { RcType, defaultProps, parse } from './runcheck'\n\nexport function rc_intersection<A, B>(a: RcType<A>, b: RcType<B>): RcType<A & B>\nexport function rc_intersection<A, B, C>(\n a: RcType<A>,\n b: RcType<B>,\n c: RcType<C>,\n): RcType<A & B & C>\nexport function rc_intersection<A, B, C, D>(\n a: RcType<A>,\n b: RcType<B>,\n c: RcType<C>,\n d: RcType<D>,\n): RcType<A & B & C & D>\nexport function rc_intersection(...types: RcType<any>[]): RcType<any> {\n let kind = ''\n let allIsObject = true\n\n for (const type of types) {\n if (kind) {\n kind += ' & '\n }\n\n if (!type._is_object_) {\n allIsObject = false\n }\n\n kind += type._kind_.includes('|') ? `(${type._kind_})` : type._kind_\n }\n\n return {\n ...defaultProps,\n _kind_: kind,\n _is_object_: allIsObject,\n _parse_(input, ctx) {\n return parse(this, input, ctx, () => {\n let objResultData: Record<string, unknown> | null = null\n\n for (const type of types) {\n const result = type._parse_(input, ctx)\n\n if (!result.ok) {\n if (type._is_object_) {\n return result\n }\n\n return false\n } else {\n if (type._is_object_) {\n objResultData = { ...(objResultData || {}), ...result.data }\n }\n }\n }\n\n if (objResultData) {\n return {\n data: objResultData as any,\n errors: false,\n }\n }\n\n return true\n })\n },\n }\n}\n"],"mappings":"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","names":["runcheck_exports","__export","RcValidationError","defaultProps","getSchemaKind","getWarningOrErrorWithPath","isObject","isRcType","joinAsRcTypeUnion","normalizedTypeOf","parse","rc_any","rc_array","rc_array_filter_from_schema","rc_assert_is_valid","rc_boolean","rc_date","rc_default","rc_disable_loose_array","rc_discriminated_union","rc_discriminated_union_builder","rc_enable_obj_strict","rc_get_array_item_type","rc_get_from_key_as_fallback","rc_get_obj_shape","rc_instanceof","rc_intersection","rc_is_valid","rc_literals","rc_loose_array","rc_loose_parse","rc_loose_record","rc_narrow","rc_null","rc_nullish_default","rc_number","rc_obj_builder","rc_obj_extends","rc_obj_merge","rc_obj_omit","rc_obj_pick","rc_obj_strict","rc_object","rc_parse","rc_parse_json","rc_parser","rc_record","rc_recursive","rc_safe_fallback","rc_string","rc_to_standard","rc_transform","rc_tuple","rc_undefined","rc_union","rc_unknown","rc_unsafe_transform","rc_unwrap","rc_unwrap_or","rc_unwrap_or_null","rc_validator","snakeCase","__toCommonJS","rc_get_from_key_as_fallback","fallbackKey","type","_alternative_key_","unwrapToObjSchema","input","isRcType","isObject","objSchema","key","value","rc_object","rc_array","rc_loose_array","shape","normalizeKeysFrom","objShape","shapeEntries","defaultProps","_obj_shape_","_kind_","_detailed_obj_shape_","_is_object_","_parse_","inputObj","ctx","parse","objErrKeyIndex_","objErrShortCircuit_","detailedObjShapeDescription","i","getWarningOrErrorWithPath","normalizedTypeOf","excessKeys","strictObj_","errors","resultObj","resultErrors","parentPath","path_","shapeEntry","typekey","subPath","path","keyToDeleteFromExcessKeys","snakeCaseKey","snakeCase","parseResult","subError","_is_extend_obj_","rc_obj_extends","options","rc_get_obj_shape","rc_obj_strict","rc_enable_obj_strict","nonRecursive","parentStrictObj","result","rc_obj_merge","objs","finalShape","rc_obj_pick","obj","keys","keyShape","rc_obj_omit","rc_obj_builder","schema","rc_discriminated_union","discriminatorKey","types","preComputedTypesShape","key","type","isRcType","rc_object","defaultProps","_kind_","_is_object_","_parse_","input","ctx","parse","isObject","objErrKeyIndex_","discriminator","parentPath","path_","invalidValueType","normalizedTypeOf","getWarningOrErrorWithPath","parseResult","rc_discriminated_union_builder","schema","rc_intersection","types","kind","allIsObject","type","_is_object_","_kind_","defaultProps","_parse_","input","ctx","parse","objResultData","result","getUndefined","withFallback","fallback","_fallback_","defaultMethod","defaultValue","rc_default","nullishDefaultMethod","rc_nullish_default","orMethod","schema","rc_union","parseMethod","input","options","rc_parse","getWarningOrErrorWithPath","ctx","message","path_","addWarning","warning","warnings_","addWarnings","warnings","parse","type","checkIfIsValid","_optional_","_orNullish_","_orNull_","isValid","noWarnings_","fb","getResultErrors","isFn","_useAutFix_","_autoFix_","autofixed","getErrorMsg","err","withAutofix","customAutofix","where","predicate","_parse_","result","predicateResult","_kind_","optional","normalizedTypeOf","_show_value_in_error_","orNull","orNullish","defaultProps","_array_item_type_","_predicate_","_alternative_key_","_obj_shape_","_detailed_obj_shape_","_is_object_","_is_extend_obj_","rc_undefined","rc_null","rc_any","rc_unknown","rc_boolean","rc_string","rc_number","rc_date","rc_instanceof","classToCheck","rc_literals","literals","literal","maxShallowObjErrors","types","kind","allIsObject","basePath","shallowObjErrors","shallowObjErrorsCount","hasNonObjTypeMember","nonShallowObjErrors","i","currentObjErrShortCircuit","objErrShortCircuit_","objErrKeyIndex_","parseResult","objErrIndex","getDefaultResult","rc_safe_fallback","rc_record","valueType","checkKey","looseCheck","inputObj","isObject","resultObj","resultErrors","parentPath","key","inputValue","subPath","path","errors","subError","rc_loose_record","checkArrayItems","_loose","useLooseMode","noLooseArray_","unique","looseErrors","arrayResult","uniqueValues","isTuple","index","_item","filterResult","uniqueValueToCheck","isUniqueKey","adjustedLooseErrors","itemError","newError","rc_array","rc_get_array_item_type","rc_disable_loose_array","nonRecursive","parentDisableLooseArray","rc_loose_array","rc_array_filter_from_schema","filterSchema","filterFn","item","rc_tuple","showWarnings","unwrap","RcValidationError","unwrapOr","unwrapOrNull","noWarnings","strictObj_","rc_parser","rc_loose_parse","rc_unwrap_or_null","rc_unwrap_or","rc_unwrap","rc_is_valid","rc_validator","rc_recursive","recursiveType","validateTransformOutput","outputSchema","disableStrictOutputSchema","parentObjErrShortCircuit","parentStrictObj","parentNoWarnings","rc_transform","transform","outputResultErrors","rc_narrow","narrow","rc_unsafe_transform","transformResult","error","showValueInError","typeOf","rc_assert_is_valid","value","snakeCase","str","word","rc_parse_json","jsonString","parsed","isRcType","joinAsRcTypeUnion","getSchemaKind","rc_to_standard","schemaOrResult","errorOnWarnings","parseResultToStandard"]}
@@ -85,7 +85,7 @@ declare function rc_intersection<A, B>(a: RcType<A>, b: RcType<B>): RcType<A & B
85
85
  declare function rc_intersection<A, B, C>(a: RcType<A>, b: RcType<B>, c: RcType<C>): RcType<A & B & C>;
86
86
  declare function rc_intersection<A, B, C, D>(a: RcType<A>, b: RcType<B>, c: RcType<C>, d: RcType<D>): RcType<A & B & C & D>;
87
87
 
88
- type RcParseResult<T> = {
88
+ type RcOkResult<T> = {
89
89
  /** @deprecated use errors instead */
90
90
  error: false;
91
91
  errors: false;
@@ -94,12 +94,20 @@ type RcParseResult<T> = {
94
94
  data: T;
95
95
  value: T;
96
96
  warnings: string[] | false;
97
- } | {
97
+ unwrap: () => T;
98
+ unwrapOr: (defaultValue: T) => T;
99
+ unwrapOrNull: () => T | null;
100
+ };
101
+ type RcErrorResult<T> = {
98
102
  ok: false;
99
103
  /** @deprecated use errors instead */
100
104
  error: true;
101
105
  errors: string[];
106
+ unwrap: () => T;
107
+ unwrapOr: (defaultValue: T) => T;
108
+ unwrapOrNull: () => T | null;
102
109
  };
110
+ type RcParseResult<T> = RcOkResult<T> | RcErrorResult<T>;
103
111
  type RcInferType<T extends RcType<any>> = T extends RcType<infer U> ? U : never;
104
112
  type ParseResultCtx = {
105
113
  warnings_: string[];
@@ -231,11 +239,13 @@ declare function rc_loose_parse<S>(input: any, type: RcType<S>, options?: ParseO
231
239
  errors: string[] | false;
232
240
  warnings: string[] | false;
233
241
  };
242
+ /** @deprecated use rc_parse(...).unwrapOrNull() instead */
234
243
  declare function rc_unwrap_or_null<R>(result: RcParseResult<R>): {
235
244
  value: R | null;
236
245
  errors: string[] | false;
237
246
  warnings: string[] | false;
238
247
  };
248
+ /** @deprecated use rc_parse(...).unwrapOr(defaultValue) instead */
239
249
  declare function rc_unwrap_or<R, F = NoInfer<R>>(result: RcParseResult<R>, fallback: F): {
240
250
  value: R | F;
241
251
  errors: string[] | false;
@@ -243,8 +253,10 @@ declare function rc_unwrap_or<R, F = NoInfer<R>>(result: RcParseResult<R>, fallb
243
253
  };
244
254
  declare class RcValidationError extends Error {
245
255
  readonly errors: string[];
256
+ name: string;
246
257
  constructor(errors: string[]);
247
258
  }
259
+ /** @deprecated use rc_parse(...).unwrap() instead */
248
260
  declare function rc_unwrap<R>(result: RcParseResult<R>): {
249
261
  value: R;
250
262
  warnings: string[] | false;
@@ -283,6 +295,9 @@ declare function rc_assert_is_valid<S>(result: RcParseResult<S>): asserts result
283
295
  data: S;
284
296
  value: S;
285
297
  warnings: string[] | false;
298
+ unwrap: () => S;
299
+ unwrapOr: (defaultValue: S) => S;
300
+ unwrapOrNull: () => S | null;
286
301
  };
287
302
  declare function rc_parse_json<T>(jsonString: unknown, schema: RcType<T>, options?: ParseOptions): RcParseResult<T>;
288
303
  type Prettify<T> = T extends Record<string, any> ? {
@@ -297,4 +312,4 @@ declare function rc_to_standard<T>(schemaOrResult: RcType<T> | RcParseResult<T>,
297
312
  errorOnWarnings?: boolean;
298
313
  }): StandardSchemaV1<T>;
299
314
 
300
- export { type Prettify, type RcBase, type RcInferType, type RcOptionalKeyType, type RcParseResult, type RcParser, type RcPrettyInferType, type RcType, RcValidationError, defaultProps, getSchemaKind, getWarningOrErrorWithPath, isRcType, joinAsRcTypeUnion, normalizedTypeOf, parse, rc_any, rc_array, rc_array_filter_from_schema, rc_assert_is_valid, rc_boolean, rc_date, rc_default, rc_disable_loose_array, rc_discriminated_union, rc_discriminated_union_builder, rc_enable_obj_strict, rc_get_array_item_type, rc_get_from_key_as_fallback, rc_get_obj_shape, rc_instanceof, rc_intersection, rc_is_valid, rc_literals, rc_loose_array, rc_loose_parse, rc_loose_record, rc_narrow, rc_null, rc_nullish_default, rc_number, rc_obj_builder, rc_obj_extends, rc_obj_merge, rc_obj_omit, rc_obj_pick, rc_obj_strict, rc_object, rc_parse, rc_parse_json, rc_parser, rc_record, rc_recursive, rc_safe_fallback, rc_string, rc_to_standard, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_unsafe_transform, rc_unwrap, rc_unwrap_or, rc_unwrap_or_null, rc_validator };
315
+ export { type Prettify, type RcBase, type RcErrorResult, type RcInferType, type RcOkResult, type RcOptionalKeyType, type RcParseResult, type RcParser, type RcPrettyInferType, type RcType, RcValidationError, defaultProps, getSchemaKind, getWarningOrErrorWithPath, isRcType, joinAsRcTypeUnion, normalizedTypeOf, parse, rc_any, rc_array, rc_array_filter_from_schema, rc_assert_is_valid, rc_boolean, rc_date, rc_default, rc_disable_loose_array, rc_discriminated_union, rc_discriminated_union_builder, rc_enable_obj_strict, rc_get_array_item_type, rc_get_from_key_as_fallback, rc_get_obj_shape, rc_instanceof, rc_intersection, rc_is_valid, rc_literals, rc_loose_array, rc_loose_parse, rc_loose_record, rc_narrow, rc_null, rc_nullish_default, rc_number, rc_obj_builder, rc_obj_extends, rc_obj_merge, rc_obj_omit, rc_obj_pick, rc_obj_strict, rc_object, rc_parse, rc_parse_json, rc_parser, rc_record, rc_recursive, rc_safe_fallback, rc_string, rc_to_standard, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_unsafe_transform, rc_unwrap, rc_unwrap_or, rc_unwrap_or_null, rc_validator };
@@ -85,7 +85,7 @@ declare function rc_intersection<A, B>(a: RcType<A>, b: RcType<B>): RcType<A & B
85
85
  declare function rc_intersection<A, B, C>(a: RcType<A>, b: RcType<B>, c: RcType<C>): RcType<A & B & C>;
86
86
  declare function rc_intersection<A, B, C, D>(a: RcType<A>, b: RcType<B>, c: RcType<C>, d: RcType<D>): RcType<A & B & C & D>;
87
87
 
88
- type RcParseResult<T> = {
88
+ type RcOkResult<T> = {
89
89
  /** @deprecated use errors instead */
90
90
  error: false;
91
91
  errors: false;
@@ -94,12 +94,20 @@ type RcParseResult<T> = {
94
94
  data: T;
95
95
  value: T;
96
96
  warnings: string[] | false;
97
- } | {
97
+ unwrap: () => T;
98
+ unwrapOr: (defaultValue: T) => T;
99
+ unwrapOrNull: () => T | null;
100
+ };
101
+ type RcErrorResult<T> = {
98
102
  ok: false;
99
103
  /** @deprecated use errors instead */
100
104
  error: true;
101
105
  errors: string[];
106
+ unwrap: () => T;
107
+ unwrapOr: (defaultValue: T) => T;
108
+ unwrapOrNull: () => T | null;
102
109
  };
110
+ type RcParseResult<T> = RcOkResult<T> | RcErrorResult<T>;
103
111
  type RcInferType<T extends RcType<any>> = T extends RcType<infer U> ? U : never;
104
112
  type ParseResultCtx = {
105
113
  warnings_: string[];
@@ -231,11 +239,13 @@ declare function rc_loose_parse<S>(input: any, type: RcType<S>, options?: ParseO
231
239
  errors: string[] | false;
232
240
  warnings: string[] | false;
233
241
  };
242
+ /** @deprecated use rc_parse(...).unwrapOrNull() instead */
234
243
  declare function rc_unwrap_or_null<R>(result: RcParseResult<R>): {
235
244
  value: R | null;
236
245
  errors: string[] | false;
237
246
  warnings: string[] | false;
238
247
  };
248
+ /** @deprecated use rc_parse(...).unwrapOr(defaultValue) instead */
239
249
  declare function rc_unwrap_or<R, F = NoInfer<R>>(result: RcParseResult<R>, fallback: F): {
240
250
  value: R | F;
241
251
  errors: string[] | false;
@@ -243,8 +253,10 @@ declare function rc_unwrap_or<R, F = NoInfer<R>>(result: RcParseResult<R>, fallb
243
253
  };
244
254
  declare class RcValidationError extends Error {
245
255
  readonly errors: string[];
256
+ name: string;
246
257
  constructor(errors: string[]);
247
258
  }
259
+ /** @deprecated use rc_parse(...).unwrap() instead */
248
260
  declare function rc_unwrap<R>(result: RcParseResult<R>): {
249
261
  value: R;
250
262
  warnings: string[] | false;
@@ -283,6 +295,9 @@ declare function rc_assert_is_valid<S>(result: RcParseResult<S>): asserts result
283
295
  data: S;
284
296
  value: S;
285
297
  warnings: string[] | false;
298
+ unwrap: () => S;
299
+ unwrapOr: (defaultValue: S) => S;
300
+ unwrapOrNull: () => S | null;
286
301
  };
287
302
  declare function rc_parse_json<T>(jsonString: unknown, schema: RcType<T>, options?: ParseOptions): RcParseResult<T>;
288
303
  type Prettify<T> = T extends Record<string, any> ? {
@@ -297,4 +312,4 @@ declare function rc_to_standard<T>(schemaOrResult: RcType<T> | RcParseResult<T>,
297
312
  errorOnWarnings?: boolean;
298
313
  }): StandardSchemaV1<T>;
299
314
 
300
- export { type Prettify, type RcBase, type RcInferType, type RcOptionalKeyType, type RcParseResult, type RcParser, type RcPrettyInferType, type RcType, RcValidationError, defaultProps, getSchemaKind, getWarningOrErrorWithPath, isRcType, joinAsRcTypeUnion, normalizedTypeOf, parse, rc_any, rc_array, rc_array_filter_from_schema, rc_assert_is_valid, rc_boolean, rc_date, rc_default, rc_disable_loose_array, rc_discriminated_union, rc_discriminated_union_builder, rc_enable_obj_strict, rc_get_array_item_type, rc_get_from_key_as_fallback, rc_get_obj_shape, rc_instanceof, rc_intersection, rc_is_valid, rc_literals, rc_loose_array, rc_loose_parse, rc_loose_record, rc_narrow, rc_null, rc_nullish_default, rc_number, rc_obj_builder, rc_obj_extends, rc_obj_merge, rc_obj_omit, rc_obj_pick, rc_obj_strict, rc_object, rc_parse, rc_parse_json, rc_parser, rc_record, rc_recursive, rc_safe_fallback, rc_string, rc_to_standard, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_unsafe_transform, rc_unwrap, rc_unwrap_or, rc_unwrap_or_null, rc_validator };
315
+ export { type Prettify, type RcBase, type RcErrorResult, type RcInferType, type RcOkResult, type RcOptionalKeyType, type RcParseResult, type RcParser, type RcPrettyInferType, type RcType, RcValidationError, defaultProps, getSchemaKind, getWarningOrErrorWithPath, isRcType, joinAsRcTypeUnion, normalizedTypeOf, parse, rc_any, rc_array, rc_array_filter_from_schema, rc_assert_is_valid, rc_boolean, rc_date, rc_default, rc_disable_loose_array, rc_discriminated_union, rc_discriminated_union_builder, rc_enable_obj_strict, rc_get_array_item_type, rc_get_from_key_as_fallback, rc_get_obj_shape, rc_instanceof, rc_intersection, rc_is_valid, rc_literals, rc_loose_array, rc_loose_parse, rc_loose_record, rc_narrow, rc_null, rc_nullish_default, rc_number, rc_obj_builder, rc_obj_extends, rc_obj_merge, rc_obj_omit, rc_obj_pick, rc_obj_strict, rc_object, rc_parse, rc_parse_json, rc_parser, rc_record, rc_recursive, rc_safe_fallback, rc_string, rc_to_standard, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_unsafe_transform, rc_unwrap, rc_unwrap_or, rc_unwrap_or_null, rc_validator };