{"version":3,"file":"rulr.cjs","sources":["../src/constrainedValues/integer/integer.ts","../src/constrainedValues/negativeInteger/negativeInteger.ts","../src/valueRules/number/number.ts","../src/constrainedValues/negativeNumber/negativeNumber.ts","../src/constrainedValues/positiveInteger/positiveInteger.ts","../src/constrainedValues/positiveNumber/positiveNumber.ts","../src/valueRules/string/string.ts","../src/constrainedStrings/email/email.ts","../src/constrainedStrings/iri/iri.ts","../src/constrainedStrings/iso8601FullDate/iso8601FullDate.ts","../src/constrainedStrings/iso8601Duration/iso8601Duration.ts","../src/constrainedStrings/iso8601Timestamp/iso8601Timestamp.ts","../src/constrainedStrings/locale/locale.ts","../src/constrainedStrings/mailto/mailto.ts","../src/constrainedStrings/mimeType/mimeType.ts","../src/constrainedStrings/mongoId/mongoId.ts","../src/valueRules/enum/enum.ts","../src/constrainedStrings/scormInteractionType/scormInteractionType.ts","../src/constrainedStrings/semanticVersion/semanticVersion.ts","../src/constrainedStrings/sha1/sha1.ts","../src/constrainedStrings/url/url.ts","../src/constrainedStrings/uuidv4/uuidv4.ts","../src/errors/ValidationError.ts","../src/errors/ValidationErrors.ts","../src/errors/KeyedValidationError.ts","../src/higherOrderRules/allowNull/allowNull.ts","../src/higherOrderRules/allowUndefined/allowUndefined.ts","../src/higherOrderRules/array/array.ts","../src/higherOrderRules/object/object.ts","../src/higherOrderRules/dictionary/dictionary.ts","../src/higherOrderRules/union/union.ts","../src/sanitizationRules/sanitizeBasicAuthFromString/sanitizeBasicAuthFromString.ts","../src/sanitizationRules/sanitizeBooleanFromString/sanitizeBooleanFromString.ts","../src/sanitizationRules/sanitizeJsonFromString/sanitizeJsonFromString.ts","../src/sanitizationRules/sanitizeNumberFromString/sanitizeNumberFromString.ts","../src/sizedStrings/nonEmptyString/nonEmptyString.ts","../src/sizedStrings/mediumText/mediumText.ts","../src/sizedStrings/text/text.ts","../src/sizedStrings/tinyText/tinyText.ts","../src/valueRules/bigint/bigint.ts","../src/valueRules/boolean/boolean.ts","../src/valueRules/trueRule/trueRule.ts","../src/valueRules/falseRule/falseRule.ts","../src/valueRules/constant/constant.ts","../src/valueRules/date/date.ts","../src/valueRules/literal/literal.ts","../src/valueRules/symbol/symbol.ts","../src/valueRules/any/any.ts","../src/core.ts","../src/ruleConstructors/regexRuleConstructor/regexRuleConstructor.ts","../src/ruleConstructors/sizedArrayRuleConstructor/sizedArrayRuleConstructor.ts","../src/higherOrderRules/tuple/tuple.ts","../src/valueRules/unknown/unknown.ts"],"sourcesContent":["import { BaseError } from 'make-error'\nimport { Constrained } from '../../core'\n\nexport class InvalidIntegerError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected integer')\n\t}\n}\n\nexport const integerSymbol = Symbol()\n\nexport type Integer = Constrained<typeof integerSymbol, number>\n\nexport function isInteger(input: unknown): input is Integer {\n\treturn Number.isInteger(input)\n}\n\nexport function integer(input: unknown) {\n\tif (isInteger(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidIntegerError()\n}\n","import { BaseError } from 'make-error'\nimport { Constrained } from '../../core'\nimport { isInteger } from '../integer/integer'\n\nexport class InvalidNegativeIntegerError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected negative integer')\n\t}\n}\n\nexport const negativeIntegerSymbol = Symbol()\n\nexport type NegativeInteger = Constrained<typeof negativeIntegerSymbol, number>\n\nexport function isNegativeInteger(input: unknown): input is NegativeInteger {\n\treturn isInteger(input) && input <= 0\n}\n\nexport function negativeInteger(input: unknown) {\n\tif (isNegativeInteger(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidNegativeIntegerError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidNumberError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected number`)\n\t}\n}\n\nexport function isNumber(input: unknown): input is number {\n\treturn typeof input === 'number' && Number.isNaN(input) === false\n}\n\n/** You might want to consider constraining this somehow to avoid display and storage bugs. */\nexport function number(input: unknown) {\n\tif (isNumber(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidNumberError()\n}\n","import { BaseError } from 'make-error'\nimport { Constrained } from '../../core'\nimport { isNumber } from '../../valueRules/number/number'\n\nexport class InvalidNegativeNumberError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected negative number')\n\t}\n}\n\nexport const negativeNumberSymbol = Symbol()\n\nexport type NegativeNumber = Constrained<typeof negativeNumberSymbol, number>\n\nexport function isNegativeNumber(input: unknown): input is NegativeNumber {\n\treturn isNumber(input) && input <= 0\n}\n\nexport function negativeNumber(input: unknown) {\n\tif (isNegativeNumber(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidNegativeNumberError()\n}\n","import { BaseError } from 'make-error'\nimport { Constrained } from '../../core'\nimport { isInteger } from '../integer/integer'\n\nexport class InvalidPositiveIntegerError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected positive integer')\n\t}\n}\n\nexport const positiveIntegerSymbol = Symbol()\n\nexport type PositiveInteger = Constrained<typeof positiveIntegerSymbol, number>\n\nexport function isPositiveInteger(input: unknown): input is PositiveInteger {\n\treturn isInteger(input) && input >= 0\n}\n\nexport function positiveInteger(input: unknown) {\n\tif (isPositiveInteger(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidPositiveIntegerError()\n}\n","import { BaseError } from 'make-error'\nimport { isNumber } from '../../valueRules/number/number'\nimport { Constrained } from '../../core'\n\nexport class InvalidPositiveNumberError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected positive number')\n\t}\n}\n\nexport const positiveNumberSymbol = Symbol()\n\nexport type PositiveNumber = Constrained<typeof positiveNumberSymbol, number>\n\nexport function isPositiveNumber(input: unknown): input is PositiveNumber {\n\treturn isNumber(input) && input >= 0\n}\n\nexport function positiveNumber(input: unknown) {\n\tif (isPositiveNumber(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidPositiveNumberError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidStringError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected string`)\n\t}\n}\n\nexport function isString(input: unknown): input is string {\n\treturn typeof input === 'string'\n}\n\n/** You might want to consider constraining this somehow to avoid display and storage bugs. */\nexport function string(input: unknown) {\n\tif (isString(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidStringError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidEmailError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected email')\n\t}\n}\n\nexport const emailSymbol = Symbol()\n\nexport type Email = Constrained<typeof emailSymbol, string>\n\nexport function isEmail(input: unknown): input is Email {\n\treturn isString(input) && validator.isEmail(input)\n}\n\nexport function email(input: unknown) {\n\tif (isEmail(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidEmailError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidIRIError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected iri')\n\t}\n}\n\nconst iriRegex = /^\\w+:/i\n\nexport const iriSymbol = Symbol()\n\nexport type IRI = Constrained<typeof iriSymbol, string>\n\nexport function isIRI(input: unknown): input is IRI {\n\treturn isString(input) && iriRegex.test(input)\n}\n\nexport function iri(input: unknown) {\n\tif (isIRI(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidIRIError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidISO8601FullDateError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected ISO 8601 Full Date')\n\t}\n}\n\nconst iso8601FullDateRegex = /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/i\n\nexport const iso8601FullDateSymbol = Symbol()\n\nexport type ISO8601FullDate = Constrained<typeof iso8601FullDateSymbol, string>\n\nexport function isISO8601FullDate(input: unknown): input is ISO8601FullDate {\n\tif (isString(input) && iso8601FullDateRegex.test(input)) {\n\t\tconst date = new Date(input);\n\t\treturn !isNaN(date.getTime());\n\t}\n\treturn false;\n}\n\nexport function iso8601FullDate(input: unknown) {\n\tif (isISO8601FullDate(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidISO8601FullDateError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidISO8601DurationError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected ISO 8601 Duration')\n\t}\n}\n\nconst iso8601DurationRegex = /^(-?)P(?=\\d|T\\d)(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)([DW]))?(?:T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$/\n\nexport const iso8601DurationSymbol = Symbol()\n\nexport type ISO8601Duration = Constrained<typeof iso8601DurationSymbol, string>\n\nexport function isISO8601Duration(input: unknown): input is ISO8601Duration {\n\treturn isString(input) && iso8601DurationRegex.test(input)\n}\n\nexport function iso8601Duration(input: unknown) {\n\tif (isISO8601Duration(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidISO8601DurationError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidISO8601TimestampError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected ISO 8601 Timestamp')\n\t}\n}\n\nexport const iso8601TimestampSymbol = Symbol()\n\nexport type ISO8601Timestamp = Constrained<typeof iso8601TimestampSymbol, string>\n\nexport function isISO8601Timestamp(input: unknown): input is ISO8601Timestamp {\n\treturn isString(input) && validator.isISO8601(input, { strict: true })\n}\n\nexport function iso8601Timestamp(input: unknown) {\n\tif (isISO8601Timestamp(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidISO8601TimestampError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidLocaleError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected locale')\n\t}\n}\n\nexport const localeSymbol = Symbol()\n\nexport type Locale = Constrained<typeof localeSymbol, string>\n\nexport function isLocale(input: unknown): input is Locale {\n\treturn isString(input) && validator.isLocale(input)\n}\n\nexport function locale(input: unknown) {\n\tif (isLocale(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidLocaleError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidMailtoError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected mailto')\n\t}\n}\n\nexport const mailtoSymbol = Symbol()\n\nexport type Mailto = Constrained<typeof mailtoSymbol, string>\n\nconst mailtoRegex = /^mailto:/\n\nexport function isMailto(input: unknown): input is Mailto {\n\treturn (\n\t\tisString(input) && mailtoRegex.test(input) && validator.isEmail(input.replace(mailtoRegex, ''))\n\t)\n}\n\nexport function mailto(input: unknown) {\n\tif (isMailto(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidMailtoError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidMimeTypeError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected MIME type')\n\t}\n}\n\nexport const mimeTypeSymbol = Symbol()\n\nexport type MimeType = Constrained<typeof mimeTypeSymbol, string>\n\nexport function isMimeType(input: unknown): input is MimeType {\n\treturn isString(input) && validator.isMimeType(input)\n}\n\n// MIME = Multi-purpose Internet Mail Extensions\nexport function mimeType(input: unknown) {\n\tif (isMimeType(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidMimeTypeError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidMongoIdError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected mongoId')\n\t}\n}\n\nexport const mongoIdSymbol = Symbol()\n\nexport type MongoId = Constrained<typeof mongoIdSymbol, string>\n\nexport function isMongoId(input: unknown): input is MongoId {\n\treturn isString(input) && validator.isMongoId(input)\n}\n\nexport function mongoId(input: unknown) {\n\tif (isMongoId(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidMongoIdError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidEnumError<T> extends BaseError {\n\tconstructor(public readonly enumValues: T[]) {\n\t\tsuper(`expected value from enum`)\n\t}\n}\n\ntype Values<T> = T[keyof T]\n\nexport function isEnum<Output extends { [s: string]: unknown }>(\n\tenumerator: Output,\n\tinput: unknown\n): input is Values<Output> {\n\tconst enumValues = Object.values(enumerator)\n\treturn enumValues.includes(input)\n}\n\nexport function enumerated<Output extends { [s: string]: unknown }>(enumerator: Output) {\n\treturn (input: unknown) => {\n\t\tif (isEnum(enumerator, input)) {\n\t\t\treturn input as Values<Output>\n\t\t}\n\t\tconst enumValues = Object.values(enumerator)\n\t\tthrow new InvalidEnumError(enumValues)\n\t}\n}\n","import { BaseError } from 'make-error'\nimport { isEnum } from '../../valueRules/enum/enum'\n\nexport class InvalidScormInteractionTypeError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected SCORM interaction type')\n\t}\n}\n\nexport const scormInteractionTypeSymbol = Symbol()\n\nexport enum ScormInteractionType {\n\tTrueFalse = 'true-false',\n\tChoice = 'choice',\n\tFillIn = 'fill-in',\n\tLongFillIn = 'long-fill-in',\n\tMatching = 'matching',\n\tPerformance = 'performance',\n\tSequencing = 'sequencing',\n\tLikert = 'likert',\n\tNumeric = 'numeric',\n\tOther = 'other',\n}\n\nexport function isScormInteractionType(input: unknown): input is ScormInteractionType {\n\treturn isEnum(ScormInteractionType, input)\n}\n\nexport function scormInteractionType(input: unknown) {\n\tif (isScormInteractionType(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidScormInteractionTypeError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidSemanticVersionError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected semantic version')\n\t}\n}\n\nexport const semanticVersionSymbol = Symbol()\n\nexport type SemanticVersion = Constrained<typeof semanticVersionSymbol, string>\n\nexport function isSemanticVersion(input: unknown): input is SemanticVersion {\n\treturn isString(input) && validator.isSemVer(input)\n}\n\nexport function semanticVersion(input: unknown) {\n\tif (isSemanticVersion(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidSemanticVersionError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidSHA1Error extends BaseError {\n\tconstructor() {\n\t\tsuper('expected sha1')\n\t}\n}\n\nexport const sha1Symbol = Symbol()\n\nexport type SHA1 = Constrained<typeof sha1Symbol, string>\n\nexport function isSHA1(input: unknown): input is SHA1 {\n\treturn isString(input) && validator.isHash(input, 'sha1')\n}\n\nexport function sha1(input: unknown) {\n\tif (isSHA1(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidSHA1Error()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidURLError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected url')\n\t}\n}\n\nexport const urlSymbol = Symbol()\n\nexport type URL = Constrained<typeof urlSymbol, string>\n\nexport function isURL(input: unknown): input is URL {\n\treturn isString(input) && validator.isURL(input)\n}\n\nexport function url(input: unknown) {\n\tif (isURL(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidURLError()\n}\n","import { BaseError } from 'make-error'\nimport validator from 'validator'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidUUIDV4Error extends BaseError {\n\tconstructor() {\n\t\tsuper('expected uuidv4')\n\t}\n}\n\nexport const uuidv4Symbol = Symbol()\n\nexport type UUIDV4 = Constrained<typeof uuidv4Symbol, string>\n\nexport function isUUIDV4(input: unknown): input is UUIDV4 {\n\treturn isString(input) && validator.isUUID(input, 4)\n}\n\nexport function uuidv4(input: unknown) {\n\tif (isUUIDV4(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidUUIDV4Error()\n}\n","import { BaseError } from 'make-error'\nimport { Key } from '../core'\n\nexport interface ErrorJson {\n\treadonly error: unknown\n\treadonly path: Key[]\n\treadonly input?: unknown\n}\n\nexport abstract class ValidationError extends BaseError {\n\tconstructor(message: string) {\n\t\tsuper(message)\n\t}\n\n\tpublic static getErrorsAsMessages(errors: ErrorJson[]) {\n\t\treturn errors.map((errorJson) => {\n\t\t\tconst path = errorJson.path.join('.')\n\t\t\tconst message = errorJson.error instanceof Error ? errorJson.error.message : errorJson.error\n\t\t\treturn `${path}: ${message}`\n\t\t})\n\t}\n\n\tpublic static getErrorsAsMessage(errors: ErrorJson[]) {\n\t\treturn ValidationError.getErrorsAsMessages(errors).join('\\n')\n\t}\n\n\tpublic getMessages() {\n\t\treturn ValidationError.getErrorsAsMessages(this.toJSON());\n\t}\n\n\tpublic abstract toJSON(): ErrorJson[]\n}\n","import { ValidationError, ErrorJson } from './ValidationError'\nimport { KeyedValidationError } from './KeyedValidationError'\n\nexport class ValidationErrors extends ValidationError {\n\tconstructor(public readonly errors: KeyedValidationError[]) {\n\t\tsuper(ValidationError.getErrorsAsMessage(ValidationErrors.getErrorsAsJson(errors)))\n\t}\n\n\tpublic static getErrorsAsJson(errors: KeyedValidationError[]) {\n\t\treturn errors.reduce<ErrorJson[]>((errorJson, error) => {\n\t\t\terrorJson.push(...error.toJSON())\n\t\t\treturn errorJson\n\t\t}, [])\n\t}\n\n\tpublic toJSON(): ErrorJson[] {\n\t\treturn ValidationErrors.getErrorsAsJson(this.errors);\n\t}\n}\n","import { ValidationError, ErrorJson } from './ValidationError'\nimport { Key } from '../core'\n\nexport class KeyedValidationError extends ValidationError {\n\tconstructor(\n\t\tpublic readonly input: unknown,\n\t\tpublic readonly error: unknown,\n\t\tpublic readonly key: Key\n\t) {\n\t\tsuper(ValidationError.getErrorsAsMessage(KeyedValidationError.getErrorAsJson(input, error, key)))\n\t}\n\n\tpublic static getErrorAsJson(input: unknown, error: unknown, key: Key) {\n\t\tif (error instanceof ValidationError) {\n\t\t\treturn error.toJSON().map((error) => {\n\t\t\t\treturn { ...error, path: [key, ...error.path] }\n\t\t\t})\n\t\t}\n\t\treturn [{ error, input, path: [key] }]\n\t}\n\n\tpublic toJSON(): ErrorJson[] {\n\t\treturn KeyedValidationError.getErrorAsJson(this.input, this.error, this.key);\n\t}\n}\n","import { Rule } from '../../core'\n\nexport function isNull(input: unknown): input is null {\n\treturn input === null\n}\n\nexport function allowNull<T>(rule: Rule<T>) {\n\treturn (input: unknown) => {\n\t\tif (isNull(input)) {\n\t\t\treturn input\n\t\t}\n\t\treturn rule(input)\n\t}\n}\n","import { Rule } from '../../core'\n\nexport function isUndefined(input: unknown): input is undefined {\n\treturn input === undefined\n}\n\nexport function allowUndefined<T>(rule: Rule<T>) {\n\treturn (input: unknown) => {\n\t\tif (isUndefined(input)) {\n\t\t\treturn input\n\t\t}\n\t\treturn rule(input)\n\t}\n}\n","import { Rule } from '../../core'\nimport { BaseError } from 'make-error'\nimport { KeyedValidationError } from '../../errors/KeyedValidationError'\nimport { ValidationErrors } from '../../errors/ValidationErrors'\n\nexport class InvalidArrayError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected array`)\n\t}\n}\n\nexport function validateArray(input: unknown) {\n\tif (Array.isArray(input)) {\n\t\treturn input as unknown[]\n\t}\n\tthrow new InvalidArrayError()\n}\n\ninterface Result<T> {\n\treadonly output: T[]\n\treadonly errors: KeyedValidationError[]\n}\n\nexport function array<T>(itemRule: Rule<T>) {\n\treturn (input: unknown) => {\n\t\tconst arrayInput = validateArray(input)\n\t\tconst output = [] as T[]\n\t\tconst errors = [] as KeyedValidationError[]\n\t\tconst initialResult = { output, errors }\n\t\tconst finalResult = arrayInput.reduce<Result<T>>((result, value, index) => {\n\t\t\ttry {\n\t\t\t\tresult.output[index] = itemRule(value)\n\t\t\t} catch (err) {\n\t\t\t\tresult.errors.push(new KeyedValidationError(value, err, index))\n\t\t\t}\n\t\t\treturn result\n\t\t}, initialResult)\n\t\tif (finalResult.errors.length > 0) {\n\t\t\tthrow new ValidationErrors(finalResult.errors)\n\t\t}\n\t\treturn finalResult.output\n\t}\n}\n","import { BaseError } from 'make-error'\nimport { Rule, Static } from '../../core'\nimport { KeyedValidationError } from '../../errors/KeyedValidationError'\nimport { ValidationErrors } from '../../errors/ValidationErrors'\n\nexport class InvalidObjectError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected object`)\n\t}\n}\n\nexport type PlainObject = { [key: string]: unknown }\n\nexport function validateObject(input: unknown) {\n\tif (\n\t\ttypeof input === 'object' // Prevents primitives like strings which extend Object\n\t\t&& input !== null // Prevent nulls\n\t\t&& (\n\t\t\tinput.constructor === Object // Prevents arrays and other build-in objects\n\t\t\t|| input.constructor === undefined // Allows Object.create(null)\n\t\t)\n\t) {\n\t\treturn input as PlainObject\n\t}\n\tthrow new InvalidObjectError()\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Schema = { [key: string]: Rule<any> }\ntype RequiredObject<Schema> = {\n\t[K in keyof Schema]: Static<Schema[K]>\n}\ntype PartialObject<Schema> = {\n\t[K in keyof Schema]?: Static<Schema[K]>\n}\ntype UnconstrainedObject<RequiredSchema, OptionalSchema> = RequiredObject<RequiredSchema> &\n\tPartialObject<OptionalSchema>\n\nfunction createRequiredValidator<T extends Schema>(schema: T, bail = false) {\n\tconst keys: (keyof T)[] = Object.keys(schema)\n\treturn (objectInput: PlainObject) => {\n\t\tconst output = {} as RequiredObject<T>\n\t\tconst errors = [] as KeyedValidationError[]\n\t\tconst initialResult = { output, errors }\n\t\tconst finalResult = keys.reduce((result, key) => {\n\t\t\tconst value = objectInput[key as string]\n\t\t\tconst rule = schema[key]\n\t\t\ttry {\n\t\t\t\tresult.output[key] = rule(value)\n\t\t\t} catch (err) {\n\t\t\t\tif (bail) {\n\t\t\t\t\tthrow err\n\t\t\t\t}\n\t\t\t\tresult.errors.push(new KeyedValidationError(value, err, key as string))\n\t\t\t}\n\t\t\treturn result\n\t\t}, initialResult)\n\t\treturn finalResult\n\t}\n}\n\nfunction createPartialValidator<T extends Schema>(schema: T, bail = false) {\n\tconst keys: (keyof T)[] = Object.keys(schema)\n\treturn (objectInput: PlainObject) => {\n\t\tconst output = {} as PartialObject<T>\n\t\tconst errors = [] as KeyedValidationError[]\n\t\tconst initialResult = { output, errors }\n\t\tconst finalResult = keys.reduce((result, key) => {\n\t\t\tconst value = objectInput[key as string]\n\t\t\tconst rule = schema[key]\n\t\t\ttry {\n\t\t\t\tif (value !== undefined) {\n\t\t\t\t\tresult.output[key] = rule(value)\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (bail) {\n\t\t\t\t\tthrow err\n\t\t\t\t}\n\t\t\t\tresult.errors.push(new KeyedValidationError(value, err, key as string))\n\t\t\t}\n\t\t\treturn result\n\t\t}, initialResult)\n\t\treturn finalResult\n\t}\n}\n\nexport function object<\n\tRequired extends Schema = Record<never, never>,\n\tOptional extends Schema = Record<never, never>\n>(opts: {\n\t/** Defaults to empty object */\n\treadonly required?: Required\n\n\t/** Defaults to empty object */\n\treadonly optional?: Optional\n\n\t/** Defaults to false. Will bail on first error. */\n\treadonly bail?: boolean\n}) {\n\tconst required = opts.required ?? {}\n\tconst optional = opts.optional ?? {}\n\tconst validateRequiredObject = createRequiredValidator(required, opts.bail)\n\tconst validatePartialObject = createPartialValidator(optional, opts.bail)\n\treturn (input: unknown) => {\n\t\tconst objectInput = validateObject(input)\n\t\tconst requiredObjectResult = validateRequiredObject(objectInput)\n\t\tconst optionalObjectResult = validatePartialObject(objectInput)\n\t\tconst errors = [...requiredObjectResult.errors, ...optionalObjectResult.errors]\n\t\tif (errors.length > 0) {\n\t\t\tthrow new ValidationErrors(errors)\n\t\t}\n\t\treturn {\n\t\t\t...requiredObjectResult.output,\n\t\t\t...optionalObjectResult.output,\n\t\t} as UnconstrainedObject<Required, Optional>\n\t}\n}\n","import { Rule, Key } from '../../core'\nimport { validateObject } from '../object/object'\nimport { KeyedValidationError } from '../../errors/KeyedValidationError'\nimport { ValidationErrors } from '../../errors/ValidationErrors'\n\nexport class DictionaryKeyValidationError extends KeyedValidationError {\n\tconstructor(error: unknown, key: Key) {\n\t\tsuper(key, error, key)\n\t}\n}\n\nfunction validate<Input, Output>(rule: Rule<Output>, input: Input) {\n\ttry {\n\t\tconst output = rule(input)\n\t\treturn { output }\n\t} catch (error) {\n\t\treturn { error }\n\t}\n}\n\nexport function dictionary<K extends Key, Value>(keyRule: Rule<K>, valueRule: Rule<Value>) {\n\treturn (input: unknown) => {\n\t\tconst objectInput = validateObject(input)\n\t\tconst keys: string[] = Object.keys(objectInput)\n\t\tconst output = {} as Record<K, Value>\n\t\tconst errors = [] as KeyedValidationError[]\n\t\tconst initialResult = { output, errors }\n\t\tconst finalResult = keys.reduce((result, key) => {\n\t\t\tconst value = objectInput[key]\n\t\t\tconst dictionaryKey = validate(keyRule, key)\n\t\t\tconst dictionaryValue = validate(valueRule, value)\n\t\t\tif (dictionaryKey.output === undefined || dictionaryValue.output === undefined) {\n\t\t\t\tif (dictionaryKey.error !== undefined && dictionaryValue.error !== undefined) {\n\t\t\t\t\tresult.errors.push(\n\t\t\t\t\t\tnew DictionaryKeyValidationError(dictionaryKey.error, key),\n\t\t\t\t\t\tnew KeyedValidationError(value, dictionaryValue.error, key)\n\t\t\t\t\t)\n\t\t\t\t} else if (dictionaryKey.error !== undefined) {\n\t\t\t\t\tresult.errors.push(new DictionaryKeyValidationError(dictionaryKey.error, key))\n\t\t\t\t} else if (dictionaryValue.error !== undefined) {\n\t\t\t\t\tresult.errors.push(new KeyedValidationError(value, dictionaryValue.error, key))\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t}\n\t\t\tresult.output[dictionaryKey.output] = dictionaryValue.output\n\t\t\treturn result\n\t\t}, initialResult)\n\t\tif (finalResult.errors.length > 0) {\n\t\t\tthrow new ValidationErrors(finalResult.errors)\n\t\t}\n\t\treturn finalResult.output\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Rule, Static } from '../../core'\nimport { ValidationError, ErrorJson } from '../../errors/ValidationError'\n\nexport class UnionValidationError extends ValidationError {\n\tconstructor(public readonly input: unknown, public readonly errors: unknown[]) {\n\t\tsuper(ValidationError.getErrorsAsMessage(UnionValidationError.getErrorsAsJson(input, errors)))\n\t}\n\n\tpublic static getErrorsAsJson(input: unknown, errors: unknown[]) {\n\t\treturn errors.reduce<ErrorJson[]>((errors, error) => {\n\t\t\tif (error instanceof ValidationError) {\n\t\t\t\terrors.push(...error.toJSON())\n\t\t\t\treturn errors\n\t\t\t}\n\t\t\terrors.push({\n\t\t\t\terror: error,\n\t\t\t\tinput: input,\n\t\t\t\tpath: [],\n\t\t\t})\n\t\t\treturn errors\n\t\t}, [])\n\t}\n\n\tpublic toJSON(): ErrorJson[] {\n\t\treturn UnionValidationError.getErrorsAsJson(this.input, this.errors);\n\t}\n}\n\ntype Union<Rules extends [Rule<any>, ...Rule<any>[]]> = Static<Rules[number]>\n\nexport function union<Rules extends [Rule<any>, ...Rule<any>[]]>(...rules: Rules) {\n\treturn (input: unknown): Static<Rules[number]> => {\n\t\tconst errors: unknown[] = []\n\t\tlet validInput: Union<Rules> = null as any\n\t\tconst isValid = rules.some((rule) => {\n\t\t\ttry {\n\t\t\t\tvalidInput = rule(input)\n\t\t\t\treturn true\n\t\t\t} catch (err) {\n\t\t\t\terrors.push(err)\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\t\tif (isValid) {\n\t\t\treturn validInput\n\t\t}\n\t\tthrow new UnionValidationError(input, errors)\n\t}\n}\n","import { BaseError } from 'make-error'\nimport atob from 'atob'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidBasicAuthAsString extends BaseError {\n\tconstructor() {\n\t\tsuper('expected basic auth from string')\n\t}\n}\n\n// @TODO - Change to basicAuthAsStringSymbol\nexport const basicAuthFromStringSymbol = Symbol()\n\nexport type BasicAuthAsString = Constrained<typeof basicAuthFromStringSymbol, string>\n\nconst encodedRegex = /^Basic [A-Za-z0-9+/=]+$/i\nconst prefixLength = 'Basic '.length\n\nfunction decodeBasicAuthValuesFromString(input: string) {\n\treturn atob(input.substring(prefixLength)).split(':')\n}\n\nexport function isBasicAuthAsString(input: unknown): input is BasicAuthAsString {\n\treturn (\n\t\tisString(input) &&\n\t\tencodedRegex.test(input) &&\n\t\tdecodeBasicAuthValuesFromString(input).length === 2\n\t)\n}\n\nexport class BasicAuth {\n\tconstructor(public readonly key: string, public readonly secret: string) {}\n}\n\nexport function sanitizeBasicAuthFromString(input: unknown): BasicAuth {\n\tif (isString(input) && encodedRegex.test(input)) {\n\t\tconst values = decodeBasicAuthValuesFromString(input)\n\t\tif (values.length === 2) {\n\t\t\treturn new BasicAuth(values[0], values[1])\n\t\t}\n\t}\n\tthrow new InvalidBasicAuthAsString()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidBooleanAsStringError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected boolean as string')\n\t}\n}\n\nexport const booleanAsStringSymbol = Symbol()\n\nexport type BooleanAsString = Constrained<typeof booleanAsStringSymbol, string>\n\nexport const truthyBooleanStrings = ['true', 'TRUE', 'yes', 'YES', 'on', 'ON', '1']\nexport const falsyBooleanStrings = ['false', 'FALSE', 'no', 'NO', 'off', 'OFF', '0']\n\nexport function isBooleanAsString(input: unknown): input is BooleanAsString {\n\treturn (\n\t\tisString(input) && (truthyBooleanStrings.includes(input) || falsyBooleanStrings.includes(input))\n\t)\n}\n\nexport function sanitizeBooleanFromString(input: unknown) {\n\tif (isBooleanAsString(input)) {\n\t\treturn truthyBooleanStrings.includes(input)\n\t}\n\tthrow new InvalidBooleanAsStringError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained, Rule } from '../../core'\n\nexport class InvalidJsonAsStringError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected JSON as string')\n\t}\n}\n\nexport const jsonAsStringSymbol = Symbol()\n\nexport type JsonAsString = Constrained<typeof jsonAsStringSymbol, string>\n\nfunction isJson(input: string) {\n\ttry {\n\t\tJSON.parse(input)\n\t\treturn true\n\t} catch {\n\t\treturn false\n\t}\n}\n\nexport function isJsonAsString(input: unknown): input is JsonAsString {\n\treturn isString(input) && isJson(input)\n}\n\nexport function sanitizeJsonFromString<T>(jsonRule: Rule<T>) {\n\treturn (input: unknown) => {\n\t\tif (isString(input)) {\n\t\t\treturn jsonRule(JSON.parse(input))\n\t\t}\n\t\tthrow new InvalidJsonAsStringError()\n\t}\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained, Rule } from '../../core'\n\nexport class InvalidNumberAsStringError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected number as string')\n\t}\n}\n\nexport const numberAsStringSymbol = Symbol()\n\nexport type NumberAsString = Constrained<typeof numberAsStringSymbol, string>\n\nexport function isNumberAsString(input: unknown): input is NumberAsString {\n\treturn isString(input) && !Number.isNaN(parseFloat(input))\n}\n\nexport function sanitizeNumberFromString<T>(numberRule: Rule<T>) {\n\treturn (input: unknown) => {\n\t\tif (isNumberAsString(input)) {\n\t\t\treturn numberRule(parseFloat(input))\n\t\t}\n\t\tthrow new InvalidNumberAsStringError()\n\t}\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidNonEmptyStringError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected some characters')\n\t}\n}\n\nexport const nonEmptyStringSymbol = Symbol()\n\nexport type NonEmptyString = Constrained<typeof nonEmptyStringSymbol, string>\n\nexport function isNonEmptyString(input: unknown): input is NonEmptyString {\n\treturn isString(input) && input.length >= 1\n}\n\nexport function nonEmptyString(input: unknown) {\n\tif (isNonEmptyString(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidNonEmptyStringError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidMediumTextError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected no more than 16,777,215 characters')\n\t}\n}\n\nexport const mediumTextSymbol = Symbol()\n\nexport type MediumText = Constrained<typeof mediumTextSymbol, string>\n\nexport function isMediumText(input: unknown): input is MediumText {\n\treturn isString(input) && input.length <= 16777215\n}\n\nexport function mediumText(input: unknown) {\n\tif (isMediumText(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidMediumTextError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidTextError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected no more than 65,535 characters')\n\t}\n}\n\nexport const textSymbol = Symbol()\n\nexport type Text = Constrained<typeof textSymbol, string>\n\nexport function isText(input: unknown): input is Text {\n\treturn isString(input) && input.length <= 65535\n}\n\nexport function text(input: unknown) {\n\tif (isText(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidTextError()\n}\n","import { BaseError } from 'make-error'\nimport { isString } from '../../valueRules/string/string'\nimport { Constrained } from '../../core'\n\nexport class InvalidTinyTextError extends BaseError {\n\tconstructor() {\n\t\tsuper('expected no more than 255 characters')\n\t}\n}\n\nexport const tinyTextSymbol = Symbol()\n\nexport type TinyText = Constrained<typeof tinyTextSymbol, string>\n\nexport function isTinyText(input: unknown): input is TinyText {\n\treturn isString(input) && input.length <= 255\n}\n\nexport function tinyText(input: unknown) {\n\tif (isTinyText(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidTinyTextError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidBigIntError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected bigint`)\n\t}\n}\n\nexport function isBigInt(input: unknown): input is bigint {\n\treturn typeof input === 'bigint'\n}\n\nexport function bigint(input: unknown) {\n\tif (isBigInt(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidBigIntError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidBooleanError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected boolean`)\n\t}\n}\n\nexport function isBoolean(input: unknown): input is boolean {\n\treturn typeof input === 'boolean'\n}\n\nexport function boolean(input: unknown) {\n\tif (isBoolean(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidBooleanError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidTrueError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected true`)\n\t}\n}\n\nexport function isTrue(input: unknown): input is true {\n\treturn input === true\n}\n\nexport function trueRule(input: unknown) {\n\tif (isTrue(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidTrueError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidFalseError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected false`)\n\t}\n}\n\nexport function isFalse(input: unknown): input is false {\n\treturn input === false\n}\n\nexport function falseRule(input: unknown) {\n\tif (isFalse(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidFalseError()\n}\n","import { BaseError } from 'make-error'\nimport { Constrained } from '../../core'\n\nexport class InvalidConstantError<T> extends BaseError {\n\tconstructor(public readonly constantValue: T) {\n\t\tsuper(`expected ${constantValue}`)\n\t}\n}\n\nexport function isConstant<ConstraintSymbol extends symbol, Type>(\n\t_symbol: ConstraintSymbol,\n\tconstantValue: Type,\n\tinput: unknown\n): input is Constrained<ConstraintSymbol, Type> {\n\treturn input === constantValue\n}\n\nexport function constant<ConstraintSymbol extends symbol, Type>(\n\tsymbol: ConstraintSymbol,\n\tconstantValue: Type\n) {\n\treturn (input: unknown) => {\n\t\tif (isConstant(symbol, constantValue, input)) {\n\t\t\treturn input\n\t\t}\n\t\tthrow new InvalidConstantError(constantValue)\n\t}\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidDateError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected date`)\n\t}\n}\n\nexport function isDate(input: unknown): input is Date {\n\treturn input instanceof Date\n}\n\nexport function date(input: unknown) {\n\tif (isDate(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidDateError()\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidLiteralError<Type> extends BaseError {\n\tconstructor(public readonly literalValue: Type) {\n\t\tsuper(`expected ${literalValue}`)\n\t}\n}\n\nexport function isLiteral<Type>(literalValue: Type, input: unknown): input is Type {\n\treturn input === literalValue\n}\n\nexport function literal<Type>(literalValue: Type) {\n\treturn (input: unknown) => {\n\t\tif (isLiteral(literalValue, input)) {\n\t\t\treturn literalValue\n\t\t}\n\t\tthrow new InvalidLiteralError(literalValue)\n\t}\n}\n","import { BaseError } from 'make-error'\n\nexport class InvalidSymbolError extends BaseError {\n\tconstructor() {\n\t\tsuper(`expected symbol`)\n\t}\n}\n\nexport function isSymbol(input: unknown): input is symbol {\n\treturn typeof input === 'symbol'\n}\n\nexport function symbol(input: unknown) {\n\tif (isSymbol(input)) {\n\t\treturn input\n\t}\n\tthrow new InvalidSymbolError()\n}\n","export function any(input: unknown) {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\treturn input as any\n}\n","export type Rule<Output> = (input: unknown) => Output\nexport type Static<Output> = Output extends Rule<infer V> ? V : Output\nexport type Key = string | number\n\nexport type Constrained<ConstraintSymbol extends symbol, Type> = Type & {\n\treadonly _constraintSymbol: ConstraintSymbol\n}\n\nexport function constrain<ConstraintSymbol extends symbol, T>(symbol: ConstraintSymbol, input: T) {\n\treturn input as Constrained<typeof symbol, T>\n}\n\nexport function guard<R extends Rule<unknown>>(rule: R) {\n\treturn (input: unknown): input is Static<R> => {\n\t\ttry {\n\t\t\trule(input)\n\t\t\treturn true\n\t\t} catch {\n\t\t\treturn false\n\t\t}\n\t}\n}\n","import { BaseError } from 'make-error';\nimport { Constrained, Rule } from '../../core'\nimport { isString } from '../../valueRules/string/string'\n\ntype Result<T extends symbol> = [\n\tRule<Constrained<T, string>>,\n\ttypeof BaseError,\n\t(input: unknown) => input is Constrained<T, string>\n]\n\nexport function regexRuleConstructor<T extends symbol>(regex: RegExp, symbol: T, ruleName = 'valid value'): Result<T> {\n\ttype RegexString = Constrained<typeof symbol, string>\n\n\tfunction guard(input: unknown): input is RegexString {\n\t\treturn isString(input) && regex.test(input)\n\t}\n\n\tclass InvalidValueError extends BaseError {\n\t\tconstructor() {\n\t\t\tsuper(`expected ${ruleName}`)\n\t\t}\n\t}\n\n\tfunction rule(input: unknown): RegexString {\n\t\tif (guard(input)) {\n\t\t\treturn input\n\t\t}\n\t\tthrow new InvalidValueError()\n\t}\n\n\treturn [rule, InvalidValueError, guard]\n}\n","import { BaseError } from 'make-error';\nimport { Constrained, Rule } from '../../core'\nimport { array } from '../../higherOrderRules/array/array'\n\ntype Result<Item, T extends symbol> = [\n\tRule<Constrained<T, Item[]>>,\n\ttypeof BaseError\n]\n\nexport function sizedArrayRuleConstructor<Item, RuleSymbol extends symbol>(\n\titemRule: Rule<Item>,\n\tminSize: number,\n\tmaxSize: number,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_symbol: RuleSymbol,\n): Result<Item, RuleSymbol> {\n\ttype SizedArray = Constrained<typeof _symbol, Item[]>;\n\tconst arrayRule = array(itemRule);\n\n\tclass InvalidArraySizeError extends BaseError {\n\t\tconstructor() {\n\t\t\tsuper(`expected only ${minSize} to ${maxSize} items`)\n\t\t}\n\t}\n\n\tfunction rule(input: unknown): SizedArray {\n\t\tconst arrayInput = arrayRule(input);\n\t\tif (arrayInput.length >= minSize && arrayInput.length <= maxSize) {\n\t\t\treturn arrayInput as SizedArray;\n\t\t}\n\t\tthrow new InvalidArraySizeError();\n\t}\n\n\treturn [rule, InvalidArraySizeError]\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Rule } from '../../core'\nimport { validateArray } from '../array/array'\nimport { KeyedValidationError } from '../../errors/KeyedValidationError'\nimport { ValidationErrors } from '../../errors/ValidationErrors'\n\ntype Tuple<Rules extends [Rule<any>, ...Rule<any>[]] | []> = {\n\t[K in keyof Rules]: Rules[K] extends Rule<infer Type> ? Type : never\n}\n\ninterface Result<T> {\n\treadonly output: T[]\n\treadonly errors: KeyedValidationError[]\n}\n\nexport function tuple<Rules extends [Rule<any>, ...Rule<any>[]]>(...rules: Rules) {\n\treturn (input: unknown): Tuple<Rules> => {\n\t\tconst arrayInput = validateArray(input)\n\t\tconst output = [] as any[]\n\t\tconst errors = [] as KeyedValidationError[]\n\t\tconst initialResult = { output, errors }\n\t\tconst finalResult = rules.reduce<Result<any>>((result, itemRule, index) => {\n\t\t\tconst value = arrayInput[index]\n\t\t\ttry {\n\t\t\t\tresult.output[index] = itemRule(value)\n\t\t\t} catch (err) {\n\t\t\t\tresult.errors.push(new KeyedValidationError(value, err, index))\n\t\t\t}\n\t\t\treturn result\n\t\t}, initialResult)\n\t\tif (finalResult.errors.length > 0) {\n\t\t\tthrow new ValidationErrors(finalResult.errors)\n\t\t}\n\t\treturn finalResult.output as Tuple<Rules>\n\t}\n}\n","export function unknown(input: unknown) {\n\treturn input\n}\n"],"names":["InvalidIntegerError","_BaseError","call","this","_inheritsLoose","BaseError","isInteger","input","Number","InvalidNegativeIntegerError","isNegativeInteger","InvalidNumberError","isNumber","isNaN","InvalidNegativeNumberError","isNegativeNumber","InvalidPositiveIntegerError","isPositiveInteger","InvalidPositiveNumberError","isPositiveNumber","InvalidStringError","isString","InvalidEmailError","isEmail","validator","InvalidIRIError","iriRegex","isIRI","test","InvalidISO8601FullDateError","iso8601FullDateRegex","isISO8601FullDate","date","Date","getTime","InvalidISO8601DurationError","iso8601DurationRegex","isISO8601Duration","InvalidISO8601TimestampError","isISO8601Timestamp","isISO8601","strict","InvalidLocaleError","isLocale","InvalidMailtoError","mailtoRegex","isMailto","replace","InvalidMimeTypeError","isMimeType","InvalidMongoIdError","isMongoId","InvalidEnumError","enumValues","_this","isEnum","enumerator","Object","values","includes","ScormInteractionType","InvalidScormInteractionTypeError","isScormInteractionType","InvalidSemanticVersionError","isSemanticVersion","isSemVer","InvalidSHA1Error","isSHA1","isHash","InvalidURLError","isURL","InvalidUUIDV4Error","isUUIDV4","isUUID","ValidationError","message","getErrorsAsMessages","errors","map","errorJson","path","join","error","Error","getErrorsAsMessage","prototype","getMessages","toJSON","ValidationErrors","_ValidationError","getErrorsAsJson","reduce","push","apply","KeyedValidationError","key","getErrorAsJson","_extends","concat","isNull","isUndefined","undefined","InvalidArrayError","validateArray","Array","isArray","array","itemRule","finalResult","result","value","index","output","err","length","InvalidObjectError","validateObject","constructor","DictionaryKeyValidationError","_KeyedValidationError","validate","rule","UnionValidationError","InvalidBasicAuthAsString","encodedRegex","decodeBasicAuthValuesFromString","atob","substring","split","BasicAuth","secret","InvalidBooleanAsStringError","truthyBooleanStrings","falsyBooleanStrings","isBooleanAsString","InvalidJsonAsStringError","InvalidNumberAsStringError","isNumberAsString","parseFloat","InvalidNonEmptyStringError","isNonEmptyString","InvalidMediumTextError","isMediumText","InvalidTextError","isText","InvalidTinyTextError","isTinyText","InvalidBigIntError","isBigInt","InvalidBooleanError","isBoolean","InvalidTrueError","isTrue","InvalidFalseError","isFalse","InvalidConstantError","constantValue","isConstant","_symbol","InvalidDateError","isDate","InvalidLiteralError","literalValue","isLiteral","InvalidSymbolError","isSymbol","symbol","keyRule","valueRule","objectInput","keys","dictionaryKey","dictionaryValue","_unused","JSON","parse","isJson","opts","_opts$required","_opts$optional","required","optional","validateRequiredObject","schema","bail","createRequiredValidator","validatePartialObject","createPartialValidator","requiredObjectResult","optionalObjectResult","regex","ruleName","guard","InvalidValueError","jsonRule","numberRule","minSize","maxSize","arrayRule","InvalidArraySizeError","arrayInput","_arguments","arguments","slice","validInput","some"],"mappings":"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"}