{"version":3,"file":"index.cjs","sources":["../src/lib/introspect.ts","../src/lib/result.ts","../src/lib/validator.ts","../src/modifiers/color.ts","../src/modifiers/email.ts","../src/modifiers/emoji.ts","../src/modifiers/ip.ts","../src/modifiers/isoDate.ts","../src/modifiers/endsWith.ts","../src/modifiers/equals.ts","../src/modifiers/includes.ts","../src/modifiers/integer.ts","../src/modifiers/length.ts","../src/modifiers/multipleOf.ts","../src/modifiers/oneOf.ts","../src/modifiers/positive.ts","../src/modifiers/regex.ts","../src/modifiers/size.ts","../src/modifiers/startsWith.ts","../src/modifiers/url.ts","../src/validators/any.ts","../src/validators/array.ts","../src/validators/boolean.ts","../src/validators/date.ts","../src/validators/enum.ts","../src/validators/intersection.ts","../src/validators/literal.ts","../src/validators/null.ts","../src/validators/nullable.ts","../src/validators/number.ts","../src/validators/object.ts","../src/validators/optional.ts","../src/validators/record.ts","../src/validators/string.ts","../src/validators/union.ts","../src/validators/void.ts","../src/index.ts","../src/transformers/case.ts","../src/transformers/trim.ts"],"sourcesContent":["import { ValidationType } from './types';\n\nexport interface IntrospectedType {\n  examples: any[];\n  items?: IntrospectedType[];\n  properties?: Record<string, IntrospectedType>;\n  type: string;\n  name?: string;\n  description?: string;\n  optional: boolean;\n  nullable: boolean;\n}\n\nexport let introspectType = (type: ValidationType<any>): IntrospectedType => ({\n  examples: type.examples ?? [],\n  items: type.items\n    ? Array.isArray(type.items)\n      ? type.items.map(introspectType)\n      : [introspectType(type.items)]\n    : undefined,\n  properties: type.properties\n    ? Object.fromEntries(\n        Object.entries(type.properties)\n          .filter(([_, v]) => !v.hidden)\n          .map(([key, value]) => [key, introspectType(value)])\n      )\n    : undefined,\n  type: type.type,\n  name: type.name,\n  description: type.description,\n  optional: !!type.optional,\n  nullable: !!type.nullable\n});\n","import { ValidationError, ValidationResult } from './types';\n\nexport let success = <T>(value: T): ValidationResult<T> => ({\n  success: true,\n  value\n});\n\nexport let error = (errors: ValidationError[]): ValidationResult<any> => ({\n  success: false,\n  errors\n});\n","import { error, success } from './result';\nimport {\n  Preprocessor,\n  Transformer,\n  ValidationError,\n  ValidationModifier,\n  ValidationResult,\n  ValidationType,\n  ValidatorOptions\n} from './types';\n\nlet preprocess = (preprocessors: Preprocessor[], value: any) => {\n  return preprocessors.reduce((val, fn) => fn(val), value);\n};\n\nlet modify = <T>(modifiers: ValidationModifier<T>[], value: T) => {\n  return modifiers.reduce((errors, fn) => errors.concat(fn(value)), [] as ValidationError[]);\n};\n\nlet transform = <T>(transformers: Transformer<T>[], value: T) => {\n  return transformers.reduce((val, fn) => fn(val), value);\n};\n\nexport let createValidator =\n  <Type, Opts extends ValidatorOptions<Type>>(\n    type: string,\n    handler: (opts: Opts, value: any) => ValidationResult<Type>\n  ) =>\n  (opts?: Opts): ValidationType<Type> => ({\n    validate: rawValue => {\n      try {\n        let value =\n          !opts?.preprocessors || !opts?.preprocessors.length\n            ? rawValue\n            : preprocess(opts?.preprocessors, rawValue);\n\n        let handlerRes = handler(opts ?? ({} as any), value);\n        if (!handlerRes.success) return handlerRes;\n\n        let modifierErrors =\n          !opts?.modifiers || !opts?.modifiers.length ? [] : modify(opts?.modifiers, value);\n        if (modifierErrors.length) return error(modifierErrors);\n\n        return success(\n          !opts?.transformers || !opts?.transformers.length\n            ? handlerRes.value\n            : transform(opts?.transformers, handlerRes.value)\n        );\n      } catch (err) {\n        return error([\n          {\n            code: 'invalid_type',\n            message: opts?.message ?? 'Unable to validate value'\n          }\n        ]);\n      }\n    },\n    examples: opts?.examples ?? [],\n    type,\n    name: opts?.name,\n    description: opts?.description,\n    hidden: !!opts?.hidden\n  });\n","import { ValidationModifier } from '../lib/types';\n\nlet colorRegex = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\nexport let color =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!colorRegex.test(value)) {\n      return [\n        {\n          code: 'invalid_color',\n          message: opts?.message ?? 'Invalid color'\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nlet emailRegex = /^[\\w+-]+(?:\\.[\\w+-]+)*@[A-Z0-9]+(?:(?:\\.|-)[A-Z0-9]+)*\\.[A-Z]{2,}$/i;\n\nexport let email =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!emailRegex.test(value)) {\n      return [\n        {\n          code: 'invalid_email',\n          message: opts?.message ?? 'Invalid email address'\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nlet emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\n\nexport let emoji =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!emojiRegex.test(value)) {\n      return [\n        {\n          code: 'invalid_emoji',\n          message: opts?.message ?? 'Invalid emoji'\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nlet ipV4Regex = /^((25[0-5]|(2[0-4]|1\\d|[1-9]|)\\d)\\.?\\b){4}$/;\nlet ipV6Regex =\n  /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\n\nexport let ip =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!ipV4Regex.test(value) && !ipV6Regex.test(value)) {\n      return [\n        {\n          code: 'invalid_ip',\n          message: opts?.message ?? 'Invalid ip address'\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let ipV4 =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!ipV4Regex.test(value)) {\n      return [\n        {\n          code: 'invalid_ip_v4',\n          message: opts?.message ?? 'Invalid ip v4 address'\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let ipV6 =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!ipV6Regex.test(value)) {\n      return [\n        {\n          code: 'invalid_ip_v6',\n          message: opts?.message ?? 'Invalid ip v6 address'\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nlet isoDateRegex = /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])$/;\nlet isoDateTimeRegex =\n  /^\\d{4}-(0[1-9]|1[0-2])-([12]\\d|0[1-9]|3[01])T(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\nlet isoTimeRegex = /^(0[0-9]|1\\d|2[0-3]):[0-5]\\d$/;\n\nexport let isoDate =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!isoDateRegex.test(value)) {\n      return [\n        {\n          code: 'invalid_iso_date',\n          message: opts?.message ?? 'Invalid iso date'\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let isoDateTime =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!isoDateTimeRegex.test(value)) {\n      return [\n        {\n          code: 'invalid_iso_date_time',\n          message: opts?.message ?? 'Invalid iso date time'\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let isoTime =\n  (opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!isoTimeRegex.test(value)) {\n      return [\n        {\n          code: 'invalid_iso_time',\n          message: opts?.message ?? 'Invalid iso time'\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let endsWith =\n  (suffix: string, opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!value.endsWith(suffix)) {\n      return [\n        {\n          code: 'invalid_suffix',\n          message: opts?.message ?? `Invalid suffix, expected ${suffix}`,\n          expected: suffix,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let equals =\n  (\n    expected: string | number | boolean,\n    opts?: { message?: string }\n  ): ValidationModifier<string> =>\n  value => {\n    if (value !== expected) {\n      return [\n        {\n          code: 'invalid_equals',\n          message: opts?.message ?? `Invalid value, expected ${expected}`,\n          expected: expected,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let notEquals =\n  (\n    expected: string | number | boolean,\n    opts?: { message?: string }\n  ): ValidationModifier<string> =>\n  value => {\n    if (value === expected) {\n      return [\n        {\n          code: 'invalid_not_equals',\n          message: opts?.message ?? `Invalid value, expected not ${expected}`,\n          expected: expected,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let includes =\n  (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!value.includes(substring)) {\n      return [\n        {\n          code: 'invalid_includes',\n          message: opts?.message ?? `Invalid substring, expected ${substring}`,\n          expected: substring,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let notIncludes =\n  (substring: string, opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (value.includes(substring)) {\n      return [\n        {\n          code: 'invalid_not_includes',\n          message: opts?.message ?? `Invalid substring, expected not ${substring}`,\n          expected: substring,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let integer =\n  (opts?: { message?: string }): ValidationModifier<number> =>\n  value => {\n    if (!Number.isInteger(value)) {\n      return [\n        {\n          code: 'invalid_integer',\n          message: opts?.message ?? `Invalid value, expected integer`,\n          expected: value,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let length =\n  (length: number): ValidationModifier<string> =>\n  value => {\n    if (value.length !== length) {\n      return [\n        {\n          code: 'invalid_length',\n          message: `Invalid length, expected ${length}`,\n          expected: length,\n          received: value.length\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let minLength =\n  (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n  value => {\n    if (value.length < length) {\n      return [\n        {\n          code: 'invalid_min_length',\n          message: opts?.message ?? `Invalid min length, expected ${length}`,\n          expected: length,\n          received: value.length,\n          min: length\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let maxLength =\n  (length: number, opts?: { message?: string }): ValidationModifier<string | any[]> =>\n  value => {\n    if (value.length > length) {\n      return [\n        {\n          code: 'invalid_max_length',\n          message: opts?.message ?? `Invalid max length, expected ${length}`,\n          expected: length,\n          received: value.length,\n          max: length\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let multipleOf =\n  (multi: number, opts?: { message?: string }): ValidationModifier<number> =>\n  value => {\n    if (value % multi !== 0) {\n      return [\n        {\n          code: 'invalid_multiple_of',\n          message: opts?.message ?? `Invalid multiple of ${multi}, expected ${value}`,\n          received: value,\n          multipleOf: multi\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let oneOf =\n  (allowed: string[], opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!allowed.includes(value)) {\n      return [\n        {\n          code: 'invalid_value',\n          message: opts?.message ?? `Value must be one of: ${allowed.join(', ')}`\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let positive =\n  (opts?: { message?: string }): ValidationModifier<number> =>\n  value => {\n    if (value <= 0) {\n      return [\n        {\n          code: 'invalid_positive',\n          message: opts?.message ?? `Invalid positive, expected ${value}`,\n          received: value,\n          positive: true\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let negative =\n  (opts?: { message?: string }): ValidationModifier<number> =>\n  value => {\n    if (value >= 0) {\n      return [\n        {\n          code: 'invalid_negative',\n          message: opts?.message ?? `Invalid negative, expected ${value}`,\n          received: value,\n          negative: true\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let regex =\n  (pattern: RegExp, opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!pattern.test(value)) {\n      return [\n        {\n          code: 'invalid_regex',\n          message: opts?.message ?? `Invalid regex, expected ${pattern}`,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let minValue =\n  (min: number, opts?: { message?: string }): ValidationModifier<number> =>\n  value => {\n    if (value < min) {\n      return [\n        {\n          code: 'invalid_min',\n          message: opts?.message ?? `Invalid min, expected ${min}`,\n          expected: min,\n          received: value,\n          min\n        }\n      ];\n    }\n\n    return [];\n  };\n\nexport let maxValue =\n  (max: number, opts?: { message?: string }): ValidationModifier<number> =>\n  value => {\n    if (value > max) {\n      return [\n        {\n          code: 'invalid_max',\n          message: opts?.message ?? `Invalid max, expected ${max}`,\n          expected: max,\n          received: value,\n          max\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let startsWith =\n  (prefix: string, opts?: { message?: string }): ValidationModifier<string> =>\n  value => {\n    if (!value.startsWith(prefix)) {\n      return [\n        {\n          code: 'invalid_prefix',\n          message: opts?.message ?? `Invalid prefix, expected ${prefix}`,\n          expected: prefix,\n          received: value\n        }\n      ];\n    }\n\n    return [];\n  };\n","import { ValidationModifier } from '../lib/types';\n\nexport let url =\n  (opts?: { message?: string; hostnames?: string[] }): ValidationModifier<string> =>\n  value => {\n    try {\n      let url = new URL(value);\n\n      if (opts?.hostnames && !opts.hostnames.includes(url.hostname)) {\n        return [\n          {\n            code: 'invalid_hostname',\n            message: opts?.message ?? `Invalid hostname`,\n            expected: opts?.hostnames,\n            received: url.hostname\n          }\n        ];\n      }\n\n      return [];\n    } catch (err) {\n      return [\n        {\n          code: 'invalid_url',\n          message: opts?.message ?? `Invalid URL`,\n          received: value\n        }\n      ];\n    }\n  };\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let any = createValidator<any, ValidatorOptions<any>>('any', (opts, value) => {\n  return { success: true, value };\n});\n\nexport let typedAny = <T>(name: string) =>\n  createValidator<T, ValidatorOptions<T>>(name, (opts, value) => {\n    return { success: true, value };\n  })();\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let array = <Validator extends ValidationType<any>>(\n  validator: Validator,\n  opts?: ValidatorOptions<ValidationTypeValue<Validator>[]>\n): ValidationType<ValidationTypeValue<Validator>[]> => ({\n  type: 'array',\n  items: validator,\n  name: opts?.name,\n  description: opts?.description,\n  examples: Array.isArray(validator.examples)\n    ? validator.examples.map(v => [v, v])\n    : undefined,\n  validate: value => {\n    if (!Array.isArray(value)) {\n      return error([\n        {\n          code: 'invalid_type',\n          message: `Invalid input, expected array, received ${typeof value}`,\n          received: typeof value,\n          expected: 'array'\n        }\n      ]);\n    }\n\n    let values: ValidationTypeValue<Validator>[] = [];\n\n    for (let [key, val] of value.entries()) {\n      let result = validator.validate(val);\n\n      if (!result.success) {\n        return error(\n          result.errors.map(e => ({ ...e, path: [key.toString(), ...(e.path ?? [])] }))\n        );\n      }\n\n      values.push(result.value);\n    }\n\n    return success(values);\n  }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let boolean = createValidator<boolean, ValidatorOptions<boolean>>(\n  'boolean',\n  (opts, value) => {\n    let serializedValue: boolean | undefined;\n\n    if (typeof value == 'string') {\n      if (value == 'true') {\n        serializedValue = true;\n      } else if (value == 'false') {\n        serializedValue = false;\n      }\n    } else if (typeof value == 'boolean') {\n      serializedValue = value;\n    }\n\n    if (serializedValue === undefined) {\n      return error([\n        {\n          code: 'invalid_type',\n          message:\n            opts.message ?? `Invalid input, expected a boolean, received ${typeof value}`,\n          received: typeof value,\n          expected: 'boolean'\n        }\n      ]);\n    }\n\n    return { success: true, value: serializedValue };\n  }\n);\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let date = createValidator<Date, ValidatorOptions<Date>>('date', (opts, value) => {\n  if (typeof value === 'string') {\n    let date = new Date(value);\n\n    if (!isNaN(date.getTime())) {\n      value = date;\n    }\n  }\n\n  if (!(value instanceof Date)) {\n    return error([\n      {\n        code: 'invalid_type',\n        message: opts.message ?? `Invalid input, expected a date, received ${typeof value}`,\n        received: typeof value,\n        expected: 'date'\n      }\n    ]);\n  }\n\n  return { success: true, value };\n});\n","import { error } from '../lib/result';\nimport { ValidationType } from '../lib/types';\n\n// export let enumType = <\n//   A extends string | number | boolean,\n//   Rest extends (string | number | boolean)[]\n// >(\n//   ...values: [A, ...Rest]\n// ): ValidationType<A | Rest[number]> => ({\n//   type: 'enum',\n//   examples: values,\n//   validate: value => {\n//     if (!values.includes(value)) {\n//       return error([\n//         {\n//           code: 'invalid_enum',\n//           message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n//           received: value,\n//           expected: values\n//         }\n//       ]);\n//     }\n\n//     return { success: true, value };\n//   }\n// });\n\nexport let enumOf = <\n  const A extends string | number | boolean,\n  Rest extends (string | number | boolean)[]\n>(\n  values: [A, ...Rest],\n  opts?: {\n    name?: string;\n    description?: string;\n  }\n): ValidationType<A | Rest[number]> => ({\n  type: 'enum',\n  examples: values,\n  name: opts?.name,\n  description: opts?.description,\n  validate: value => {\n    if (!values.includes(value)) {\n      return error([\n        {\n          code: 'invalid_enum',\n          message: `Invalid input, expected one of ${values.join(', ')}, received ${value}`,\n          received: value,\n          expected: values\n        }\n      ]);\n    }\n\n    return { success: true, value };\n  }\n});\n","import { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let intersection = <A extends ValidationType<object>, B extends ValidationType<object>>(\n  validators: [A, B],\n  opts?: ValidatorOptions<ValidationTypeValue<A> & ValidationTypeValue<B>>\n): ValidationType<ValidationTypeValue<A> & ValidationTypeValue<B>> => ({\n  type: 'intersection',\n  name: opts?.name,\n  items: validators,\n  description: opts?.description,\n  examples: [],\n  validate: value => {\n    let fullValue: any = {};\n\n    for (let validator of validators) {\n      let result = validator.validate(value);\n      if (!result.success) return result;\n\n      fullValue = { ...fullValue, ...result.value };\n    }\n\n    return { success: true, value: fullValue };\n  }\n});\n","import { error } from '../lib/result';\nimport { ValidationType, ValidatorOptions } from '../lib/types';\n\nexport let literal = <A extends string | number | boolean>(\n  value: A,\n  opts?: ValidatorOptions<A>\n): ValidationType<A> => ({\n  type: 'literal',\n  examples: [value],\n  name: opts?.name,\n  description: opts?.description,\n  validate: input => {\n    if (input != value) {\n      return error([\n        {\n          code: 'invalid_literal',\n          message: opts?.message ?? `Invalid input, expected ${value}, received ${input}`,\n          received: input,\n          expected: value\n        }\n      ]);\n    }\n\n    return { success: true, value };\n  }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let nullValue = createValidator<null, ValidatorOptions<null>>('null', (opts, value) => {\n  if (value !== null) {\n    return error([\n      {\n        code: 'invalid_type',\n        message: opts.message ?? `Invalid input, expected null, received ${typeof value}`,\n        received: typeof value,\n        expected: 'null'\n      }\n    ]);\n  }\n\n  return { success: true, value: null };\n});\n","import { ValidationType, ValidationTypeValue } from '../lib/types';\n\nexport let nullable = <A extends ValidationType<any>>(\n  validator: A\n): ValidationType<ValidationTypeValue<A> | null> => ({\n  ...validator,\n\n  nullable: true,\n  validate: value => {\n    if (value === null) {\n      return { success: true, value };\n    }\n\n    return validator.validate(value);\n  }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let number = createValidator<number, ValidatorOptions<number>>(\n  'number',\n  (opts, value) => {\n    let number = typeof value == 'string' ? parseFloat(value) : value;\n\n    if (typeof number != 'number' || isNaN(number)) {\n      return error([\n        {\n          code: 'invalid_type',\n          message: opts.message ?? `Invalid input, expected number, received ${typeof value}`,\n          received: typeof value,\n          expected: 'number'\n        }\n      ]);\n    }\n\n    return { success: true, value: number };\n  }\n);\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\ntype KeysWhichExtend<T, SelectedType> = {\n  [key in keyof T]: SelectedType extends T[key] ? key : never;\n}[keyof T];\ntype Optional<T> = Partial<Pick<T, KeysWhichExtend<T, undefined>>>;\ntype Required<T> = Omit<T, KeysWhichExtend<T, undefined>>;\nexport type UndefinedIsOptional<T> = Optional<T> & Required<T>;\n\nexport let object = <Validator extends { [key: string]: ValidationType<any> }>(\n  shape: Validator,\n  opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<\n  UndefinedIsOptional<{\n    [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n  }>\n> => ({\n  type: 'object',\n  name: opts?.name,\n  description: opts?.description,\n  properties: shape,\n  examples: [\n    Object.fromEntries(\n      Object.entries(shape)\n        .map(([key, validator]) => {\n          let example = validator.examples?.[0];\n          // For nullable fields, if there's no example, don't include it\n          // This prevents undefined from becoming {} in Object.fromEntries\n          if (example === undefined && validator.nullable) {\n            return null; // Will be filtered out\n          }\n          return [key, example];\n        })\n        .filter((entry): entry is [string, any] => entry !== null)\n    )\n  ] as any,\n  validate: value => {\n    if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n      return error([\n        {\n          code: 'invalid_type',\n          message: `Invalid input, expected object, received ${typeof value}`,\n          received: Array.isArray(value) ? 'array' : typeof value,\n          expected: 'object'\n        }\n      ]);\n    }\n\n    let values: {\n      [key in keyof Validator]: ValidationTypeValue<Validator[key]>;\n    } = {} as any;\n\n    for (let [key, validator] of Object.entries(shape)) {\n      let result = validator.validate(value[key]);\n\n      if (!result.success) {\n        return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n      }\n\n      values[key as keyof Validator] = result.value;\n    }\n\n    return success(values);\n  }\n});\n","import { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let optional = <A extends ValidationType<any>>(\n  validator: A,\n  opts?: ValidatorOptions<ValidationTypeValue<A> | undefined>\n): ValidationType<ValidationTypeValue<A> | undefined> => ({\n  ...validator,\n  optional: true,\n  description: opts?.description ?? validator.description,\n  validate: value => {\n    if (value === undefined) {\n      return { success: true, value };\n    }\n\n    return validator.validate(value);\n  }\n});\n","import { error, success } from '../lib/result';\nimport { ValidationType, ValidationTypeValue, ValidatorOptions } from '../lib/types';\n\nexport let record = <Validator extends ValidationType<any>>(\n  validator: Validator,\n  opts?: ValidatorOptions<Record<string, ValidationTypeValue<Validator>>>\n): ValidationType<Record<string, ValidationTypeValue<Validator>>> => ({\n  type: 'record',\n  items: validator,\n  name: opts?.name,\n  description: opts?.description,\n  examples: Array.isArray(validator.examples)\n    ? [\n        {\n          key1: validator.examples[0]\n        }\n      ]\n    : undefined,\n  validate: value => {\n    if (typeof value != 'object' || value === null || Array.isArray(value)) {\n      return error([\n        {\n          code: 'invalid_type',\n          message: `Invalid input, expected object`,\n          received: value,\n          expected: 'object'\n        }\n      ]);\n    }\n\n    let values: Record<string, ValidationTypeValue<Validator>> = {};\n\n    for (let [key, val] of Object.entries(value)) {\n      if (typeof key != 'string') {\n        return error([\n          {\n            code: 'invalid_type',\n            message: `Invalid input, expected object with string keys, received ${typeof key}`,\n            received: key,\n            expected: 'string'\n          }\n        ]);\n      }\n\n      let result = validator.validate(val);\n\n      if (!result.success) {\n        return error(result.errors.map(e => ({ ...e, path: [key, ...(e.path ?? [])] })));\n      }\n\n      values[key] = result.value;\n    }\n\n    return success(values);\n  }\n});\n","import { error } from '../lib/result';\nimport { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let string = createValidator<string, ValidatorOptions<string>>(\n  'string',\n  (opts, value) => {\n    if (typeof value != 'string') {\n      return error([\n        {\n          code: 'invalid_type',\n          message: opts.message ?? `Invalid input, expected string, received ${typeof value}`,\n          received: typeof value,\n          expected: 'string'\n        }\n      ]);\n    }\n\n    if (value.length > 100_000) {\n      return error([\n        {\n          code: 'max_length',\n          message: 'Input is too long'\n        }\n      ]);\n    }\n\n    return { success: true, value };\n  }\n);\n","import { error } from '../lib/result';\nimport {\n  ValidationError,\n  ValidationType,\n  ValidationTypeValue,\n  ValidatorOptions\n} from '../lib/types';\n\nexport let union = <\n  A extends ValidationType<any>,\n  B extends ValidationType<any>,\n  Rest extends ValidationType<any>[]\n>(\n  validators: [A, B, ...Rest],\n  opts?: ValidatorOptions<\n    ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n  >\n): ValidationType<\n  ValidationTypeValue<A> | ValidationTypeValue<B> | ValidationTypeValue<Rest[number]>\n> => ({\n  type: 'union',\n  name: opts?.name,\n  items: validators,\n  description: opts?.description,\n  examples: validators.flatMap(v => v.examples || []),\n  validate: value => {\n    let errors: ValidationError[] = [];\n\n    for (let validator of validators) {\n      let result = validator.validate(value);\n      if (result.success) return result;\n\n      errors.push(...result.errors);\n    }\n\n    return error(errors);\n  }\n});\n","import { ValidatorOptions } from '../lib/types';\nimport { createValidator } from '../lib/validator';\n\nexport let voidType = createValidator<void, ValidatorOptions<void>>('void', (opts, value) => {\n  return { success: true, value: undefined };\n});\n","// export * from './lib/result';\n// export * from './lib/validator';\n// export * from './modifiers';\n// export * from './transformers';\n// export * from './validators';\n\nexport * from './lib/introspect';\nexport * from './lib/types';\nexport * from './lib/validator';\n\nimport * as introspect from './lib/introspect';\nimport * as result from './lib/result';\nimport * as validator from './lib/validator';\nimport * as modifiers from './modifiers';\nimport * as transformers from './transformers';\nimport * as validators from './validators';\n\nexport type { UndefinedIsOptional } from './validators/object';\n\n// export default {\n//   ...modifiers,\n//   ...introspect,\n//   ...transformers,\n//   ...validators,\n//   ...result,\n//   ...validator\n// };\n\nexport let v = {\n  ...modifiers,\n  ...introspect,\n  ...transformers,\n  ...validators,\n  ...result,\n  ...validator\n};\n","import { Transformer } from '../lib/types';\n\nexport let upperCase: Transformer<string> = value => value.toUpperCase();\n\nexport let lowerCase: Transformer<string> = value => value.toLowerCase();\n","import { Transformer } from '../lib/types';\n\nexport let trim: Transformer<string> = value => value.trim();\n\nexport let trimStart: Transformer<string> = value => value.trimStart();\n\nexport let trimEnd: Transformer<string> = value => value.trimEnd();\n"],"names":["introspectType","type","_type$examples","examples","items","Array","isArray","map","undefined","properties","Object","fromEntries","entries","filter","_ref","hidden","_ref2","name","description","optional","nullable","success","value","error","errors","createValidator","handler","opts","_opts$examples","validate","rawValue","preprocessors","length","reduce","val","fn","preprocess","handlerRes","modifierErrors","modifiers","concat","modify","transformers","transform","err","_opts$message","code","message","colorRegex","emailRegex","emojiRegex","ipV4Regex","ipV6Regex","isoDateRegex","isoDateTimeRegex","isoTimeRegex","test","suffix","endsWith","expected","received","_opts$message2","substring","includes","Number","isInteger","_opts$message3","min","max","multi","multipleOf","allowed","join","positive","negative","pattern","prefix","startsWith","url","URL","hostnames","hostname","validator","v","_ret","_step","values","_loop","_step$value","key","result","e","_e$path","_extends","path","toString","push","_iterator","_createForOfIteratorHelperLoose","done","serializedValue","date","Date","isNaN","getTime","validators","fullValue","input","number","parseFloat","shape","_validator$examples","example","entry","_Object$entries$_i","_Object$entries","_i","_opts$description","key1","flatMap","apply","introspect","toUpperCase","toLowerCase","trim","trimStart","trimEnd"],"mappings":"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"}