@oxog/vld 1.0.0 → 1.1.1

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.
Files changed (138) hide show
  1. package/CHANGELOG.md +117 -102
  2. package/README.md +78 -13
  3. package/dist/coercion/bigint.d.ts +27 -0
  4. package/dist/coercion/bigint.d.ts.map +1 -0
  5. package/dist/coercion/bigint.js +108 -0
  6. package/dist/coercion/bigint.js.map +1 -0
  7. package/dist/coercion/boolean.d.ts +20 -0
  8. package/dist/coercion/boolean.d.ts.map +1 -0
  9. package/dist/coercion/boolean.js +63 -0
  10. package/dist/coercion/boolean.js.map +1 -0
  11. package/dist/coercion/date.d.ts +20 -0
  12. package/dist/coercion/date.d.ts.map +1 -0
  13. package/dist/coercion/date.js +52 -0
  14. package/dist/coercion/date.js.map +1 -0
  15. package/dist/coercion/number.d.ts +35 -0
  16. package/dist/coercion/number.d.ts.map +1 -0
  17. package/dist/coercion/number.js +144 -0
  18. package/dist/coercion/number.js.map +1 -0
  19. package/dist/coercion/string.d.ts +38 -0
  20. package/dist/coercion/string.d.ts.map +1 -0
  21. package/dist/coercion/string.js +168 -0
  22. package/dist/coercion/string.js.map +1 -0
  23. package/dist/index-new.d.ts.map +1 -0
  24. package/dist/index.d.ts +64 -257
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +86 -1164
  27. package/dist/index.js.map +1 -1
  28. package/dist/locales/af.js +3 -3
  29. package/dist/locales/af.js.map +1 -1
  30. package/dist/utils/deep-merge.d.ts +18 -0
  31. package/dist/utils/deep-merge.d.ts.map +1 -0
  32. package/dist/utils/deep-merge.js +68 -0
  33. package/dist/utils/deep-merge.js.map +1 -0
  34. package/dist/validators/any.d.ts +19 -0
  35. package/dist/validators/any.d.ts.map +1 -0
  36. package/dist/validators/any.js +25 -0
  37. package/dist/validators/any.js.map +1 -0
  38. package/dist/validators/array.d.ts +48 -0
  39. package/dist/validators/array.d.ts.map +1 -0
  40. package/dist/validators/array.js +135 -0
  41. package/dist/validators/array.js.map +1 -0
  42. package/dist/validators/base.d.ts +155 -0
  43. package/dist/validators/base.d.ts.map +1 -0
  44. package/dist/validators/base.js +245 -0
  45. package/dist/validators/base.js.map +1 -0
  46. package/dist/validators/bigint.d.ts +60 -0
  47. package/dist/validators/bigint.d.ts.map +1 -0
  48. package/dist/validators/bigint.js +104 -0
  49. package/dist/validators/bigint.js.map +1 -0
  50. package/dist/validators/boolean.d.ts +32 -0
  51. package/dist/validators/boolean.d.ts.map +1 -0
  52. package/dist/validators/boolean.js +86 -0
  53. package/dist/validators/boolean.js.map +1 -0
  54. package/dist/validators/date.d.ts +68 -0
  55. package/dist/validators/date.d.ts.map +1 -0
  56. package/dist/validators/date.js +148 -0
  57. package/dist/validators/date.js.map +1 -0
  58. package/dist/validators/enum.d.ts +25 -0
  59. package/dist/validators/enum.d.ts.map +1 -0
  60. package/dist/validators/enum.js +45 -0
  61. package/dist/validators/enum.js.map +1 -0
  62. package/dist/validators/index.d.ts +27 -0
  63. package/dist/validators/index.d.ts.map +1 -0
  64. package/dist/validators/index.js +30 -0
  65. package/dist/validators/index.js.map +1 -0
  66. package/dist/validators/intersection.d.ts +25 -0
  67. package/dist/validators/intersection.d.ts.map +1 -0
  68. package/dist/validators/intersection.js +57 -0
  69. package/dist/validators/intersection.js.map +1 -0
  70. package/dist/validators/literal.d.ts +25 -0
  71. package/dist/validators/literal.d.ts.map +1 -0
  72. package/dist/validators/literal.js +45 -0
  73. package/dist/validators/literal.js.map +1 -0
  74. package/dist/validators/map.d.ts +26 -0
  75. package/dist/validators/map.d.ts.map +1 -0
  76. package/dist/validators/map.js +54 -0
  77. package/dist/validators/map.js.map +1 -0
  78. package/dist/validators/never.d.ts +19 -0
  79. package/dist/validators/never.d.ts.map +1 -0
  80. package/dist/validators/never.js +29 -0
  81. package/dist/validators/never.js.map +1 -0
  82. package/dist/validators/number.d.ts +92 -0
  83. package/dist/validators/number.d.ts.map +1 -0
  84. package/dist/validators/number.js +173 -0
  85. package/dist/validators/number.js.map +1 -0
  86. package/dist/validators/object-optimized.d.ts +23 -0
  87. package/dist/validators/object-optimized.d.ts.map +1 -0
  88. package/dist/validators/object-optimized.js +179 -0
  89. package/dist/validators/object-optimized.js.map +1 -0
  90. package/dist/validators/object-ultra.d.ts +34 -0
  91. package/dist/validators/object-ultra.d.ts.map +1 -0
  92. package/dist/validators/object-ultra.js +175 -0
  93. package/dist/validators/object-ultra.js.map +1 -0
  94. package/dist/validators/object.d.ts +73 -0
  95. package/dist/validators/object.d.ts.map +1 -0
  96. package/dist/validators/object.js +289 -0
  97. package/dist/validators/object.js.map +1 -0
  98. package/dist/validators/record.d.ts +25 -0
  99. package/dist/validators/record.d.ts.map +1 -0
  100. package/dist/validators/record.js +52 -0
  101. package/dist/validators/record.js.map +1 -0
  102. package/dist/validators/set.d.ts +25 -0
  103. package/dist/validators/set.d.ts.map +1 -0
  104. package/dist/validators/set.js +51 -0
  105. package/dist/validators/set.js.map +1 -0
  106. package/dist/validators/string-ultra.d.ts +49 -0
  107. package/dist/validators/string-ultra.d.ts.map +1 -0
  108. package/dist/validators/string-ultra.js +217 -0
  109. package/dist/validators/string-ultra.js.map +1 -0
  110. package/dist/validators/string.d.ts +109 -0
  111. package/dist/validators/string.d.ts.map +1 -0
  112. package/dist/validators/string.js +242 -0
  113. package/dist/validators/string.js.map +1 -0
  114. package/dist/validators/symbol.d.ts +24 -0
  115. package/dist/validators/symbol.d.ts.map +1 -0
  116. package/dist/validators/symbol.js +42 -0
  117. package/dist/validators/symbol.js.map +1 -0
  118. package/dist/validators/tuple.d.ts +31 -0
  119. package/dist/validators/tuple.d.ts.map +1 -0
  120. package/dist/validators/tuple.js +55 -0
  121. package/dist/validators/tuple.js.map +1 -0
  122. package/dist/validators/union-optimized.d.ts +15 -0
  123. package/dist/validators/union-optimized.d.ts.map +1 -0
  124. package/dist/validators/union-optimized.js +92 -0
  125. package/dist/validators/union-optimized.js.map +1 -0
  126. package/dist/validators/union.d.ts +33 -0
  127. package/dist/validators/union.d.ts.map +1 -0
  128. package/dist/validators/union.js +121 -0
  129. package/dist/validators/union.js.map +1 -0
  130. package/dist/validators/unknown.d.ts +19 -0
  131. package/dist/validators/unknown.d.ts.map +1 -0
  132. package/dist/validators/unknown.js +25 -0
  133. package/dist/validators/unknown.js.map +1 -0
  134. package/dist/validators/void.d.ts +19 -0
  135. package/dist/validators/void.d.ts.map +1 -0
  136. package/dist/validators/void.js +35 -0
  137. package/dist/validators/void.js.map +1 -0
  138. package/package.json +12 -6
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["// VLD - Fast, Type-Safe Validation Library\n// Zero dependencies, blazing fast performance\n\nimport { getMessages, setLocale, getLocale, type Locale } from './locales/index';\n\nexport type ParseResult<T> = \n | { readonly success: true; readonly data: T }\n | { readonly success: false; readonly error: Error };\n\n// Base class for all validators\nabstract class VldBase<T> {\n abstract parse(value: unknown): T;\n abstract safeParse(value: unknown): ParseResult<T>;\n\n // Refine with custom validation\n refine<R extends T>(predicate: (value: T) => value is R, message?: string): VldRefine<T, R>;\n refine(predicate: (value: T) => boolean, message?: string): VldRefine<T, T>;\n refine(predicate: (value: T) => boolean, message?: string): VldRefine<T, T> {\n return new VldRefine(this, predicate, message);\n }\n\n // Transform data after validation\n transform<U>(fn: (value: T) => U): VldTransform<T, U> {\n return new VldTransform(this, fn);\n }\n\n // Add default value\n default(value: T): VldDefault<T> {\n return new VldDefault(this, value);\n }\n\n // Catch validation errors and provide fallback\n catch(value: T): VldCatch<T> {\n return new VldCatch(this, value);\n }\n}\n\n// Pre-compiled regex patterns\nconst EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;\nconst UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\nconst URL_REGEX = /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/;\nconst IPV4_REGEX = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\nconst IPV6_REGEX = /^(([0-9a-fA-F]{1,4}:){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}(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}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\n\n// Helper function for deep merging objects in intersection\nfunction deepMerge(obj1: any, obj2: any): any {\n const result = { ...obj1 };\n \n for (const key in obj2) {\n if (obj2.hasOwnProperty(key)) {\n if (typeof obj2[key] === 'object' && obj2[key] !== null && !Array.isArray(obj2[key]) &&\n typeof obj1[key] === 'object' && obj1[key] !== null && !Array.isArray(obj1[key])) {\n result[key] = deepMerge(obj1[key], obj2[key]);\n } else {\n result[key] = obj2[key];\n }\n }\n }\n \n return result;\n}\n\n// String validator\nexport class VldString extends VldBase<string> {\n private checks: Array<(v: string) => boolean> = [];\n private transforms: Array<(v: string) => string> = [];\n private errorMessage = getMessages().invalidString;\n\n parse(value: unknown): string {\n if (typeof value !== 'string') {\n throw new Error(this.errorMessage || getMessages().invalidString);\n }\n\n let val = value;\n \n // Apply transforms\n for (const transform of this.transforms) {\n val = transform(val);\n }\n\n // Apply checks\n for (const check of this.checks) {\n if (!check(val)) {\n throw new Error(this.errorMessage || getMessages().invalidString);\n }\n }\n\n return val;\n }\n\n safeParse(value: unknown): ParseResult<string> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n\n // Chainable methods\n min(length: number, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.length >= length];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringMin(length);\n return newValidator;\n }\n\n max(length: number, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.length <= length];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringMax(length);\n return newValidator;\n }\n\n length(length: number, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.length === length];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringLength(length);\n return newValidator;\n }\n\n email(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => EMAIL_REGEX.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringEmail;\n return newValidator;\n }\n\n url(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => URL_REGEX.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringUrl;\n return newValidator;\n }\n\n uuid(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => UUID_REGEX.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringUuid;\n return newValidator;\n }\n\n regex(pattern: RegExp, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => pattern.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringRegex;\n return newValidator;\n }\n\n trim(): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks];\n newValidator.transforms = [...this.transforms, (v: string) => v.trim()];\n newValidator.errorMessage = this.errorMessage;\n return newValidator;\n }\n\n toLowerCase(): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks];\n newValidator.transforms = [...this.transforms, (v: string) => v.toLowerCase()];\n newValidator.errorMessage = this.errorMessage;\n return newValidator;\n }\n\n toUpperCase(): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks];\n newValidator.transforms = [...this.transforms, (v: string) => v.toUpperCase()];\n newValidator.errorMessage = this.errorMessage;\n return newValidator;\n }\n\n startsWith(str: string, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.startsWith(str)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringStartsWith(str);\n return newValidator;\n }\n\n endsWith(str: string, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.endsWith(str)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringEndsWith(str);\n return newValidator;\n }\n\n includes(str: string, message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.includes(str)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringIncludes(str);\n return newValidator;\n }\n\n ip(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => IPV4_REGEX.test(v) || IPV6_REGEX.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringIp;\n return newValidator;\n }\n\n ipv4(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => IPV4_REGEX.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringIpv4;\n return newValidator;\n }\n\n ipv6(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => IPV6_REGEX.test(v)];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringIpv6;\n return newValidator;\n }\n\n nonempty(message?: string): VldString {\n const newValidator = new VldString();\n newValidator.checks = [...this.checks, (v: string) => v.length > 0];\n newValidator.transforms = [...this.transforms];\n newValidator.errorMessage = message || getMessages().stringEmpty;\n return newValidator;\n }\n}\n\n// Number validator\nexport class VldNumber extends VldBase<number> {\n private checks: Array<(v: number) => boolean> = [];\n private errorMessage = getMessages().invalidNumber;\n\n parse(value: unknown): number {\n if (typeof value !== 'number' || isNaN(value)) {\n throw new Error(this.errorMessage || getMessages().invalidNumber);\n }\n\n for (const check of this.checks) {\n if (!check(value)) {\n throw new Error(this.errorMessage || getMessages().invalidNumber);\n }\n }\n\n return value;\n }\n\n safeParse(value: unknown): ParseResult<number> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n\n min(value: number, message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v >= value];\n newValidator.errorMessage = message || getMessages().numberMin(value);\n return newValidator;\n }\n\n max(value: number, message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v <= value];\n newValidator.errorMessage = message || getMessages().numberMax(value);\n return newValidator;\n }\n\n int(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => Number.isInteger(v)];\n newValidator.errorMessage = message || getMessages().numberInt;\n return newValidator;\n }\n\n positive(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v > 0];\n newValidator.errorMessage = message || getMessages().numberPositive;\n return newValidator;\n }\n\n negative(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v < 0];\n newValidator.errorMessage = message || getMessages().numberNegative;\n return newValidator;\n }\n\n nonnegative(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v >= 0];\n newValidator.errorMessage = message || getMessages().numberNonnegative;\n return newValidator;\n }\n\n nonpositive(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v <= 0];\n newValidator.errorMessage = message || getMessages().numberNonpositive;\n return newValidator;\n }\n\n finite(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => Number.isFinite(v)];\n newValidator.errorMessage = message || getMessages().numberFinite;\n return newValidator;\n }\n\n safe(message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => Number.isSafeInteger(v)];\n newValidator.errorMessage = message || getMessages().numberSafe;\n return newValidator;\n }\n\n multipleOf(value: number, message?: string): VldNumber {\n const newValidator = new VldNumber();\n newValidator.checks = [...this.checks, (v: number) => v % value === 0];\n newValidator.errorMessage = message || getMessages().numberMultipleOf(value);\n return newValidator;\n }\n\n step(value: number, message?: string): VldNumber {\n return this.multipleOf(value, message);\n }\n}\n\n// Boolean validator\nexport class VldBoolean extends VldBase<boolean> {\n private errorMessage = getMessages().invalidBoolean;\n\n parse(value: unknown): boolean {\n if (typeof value !== 'boolean') {\n throw new Error(this.errorMessage || getMessages().invalidBoolean);\n }\n return value;\n }\n\n safeParse(value: unknown): ParseResult<boolean> {\n if (typeof value === 'boolean') {\n return { success: true, data: value };\n }\n return { success: false, error: new Error(this.errorMessage) };\n }\n}\n\n// Array validator\nexport class VldArray<T> extends VldBase<T[]> {\n constructor(private itemValidator: VldBase<T>) {\n super();\n }\n\n parse(value: unknown): T[] {\n if (!Array.isArray(value)) {\n throw new Error(getMessages().invalidArray);\n }\n\n return value.map((item, index) => {\n try {\n return this.itemValidator.parse(item);\n } catch (error) {\n throw new Error(getMessages().arrayItem(index, (error as Error).message));\n }\n });\n }\n\n safeParse(value: unknown): ParseResult<T[]> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n\n min(length: number, message?: string): VldArray<T> {\n const originalParse = this.parse.bind(this);\n this.parse = (value: unknown) => {\n const arr = originalParse(value);\n if (arr.length < length) {\n throw new Error(message || getMessages().arrayMin(length));\n }\n return arr;\n };\n return this;\n }\n\n max(length: number, message?: string): VldArray<T> {\n const originalParse = this.parse.bind(this);\n this.parse = (value: unknown) => {\n const arr = originalParse(value);\n if (arr.length > length) {\n throw new Error(message || getMessages().arrayMax(length));\n }\n return arr;\n };\n return this;\n }\n\n length(length: number, message?: string): VldArray<T> {\n const originalParse = this.parse.bind(this);\n this.parse = (value: unknown) => {\n const arr = originalParse(value);\n if (arr.length !== length) {\n throw new Error(message || getMessages().arrayLength(length));\n }\n return arr;\n };\n return this;\n }\n\n nonempty(message?: string): VldArray<T> {\n return this.min(1, message || getMessages().arrayEmpty);\n }\n}\n\n// Object validator\nexport class VldObject<T extends Record<string, any>> extends VldBase<T> {\n constructor(private shape: { [K in keyof T]: VldBase<T[K]> }) {\n super();\n }\n\n parse(value: unknown): T {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(getMessages().invalidObject);\n }\n\n const result: any = {};\n const obj = value as Record<string, unknown>;\n\n for (const [key, validator] of Object.entries(this.shape)) {\n try {\n result[key] = validator.parse(obj[key]);\n } catch (error) {\n throw new Error(getMessages().objectField(key, (error as Error).message));\n }\n }\n\n return result as T;\n }\n\n safeParse(value: unknown): ParseResult<T> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n\n partial(): VldObject<Partial<T>> {\n const partialShape: any = {};\n for (const [key, validator] of Object.entries(this.shape)) {\n partialShape[key] = new VldOptional(validator as any);\n }\n return new VldObject(partialShape);\n }\n\n strict(): VldObject<T> {\n const originalParse = this.parse.bind(this);\n this.parse = (value: unknown) => {\n const result = originalParse(value);\n const obj = value as Record<string, unknown>;\n const extraKeys = Object.keys(obj).filter(key => !(key in this.shape));\n if (extraKeys.length > 0) {\n throw new Error(getMessages().unexpectedKeys(extraKeys));\n }\n return result;\n };\n return this;\n }\n\n pick<K extends keyof T>(...keys: K[]): VldObject<Pick<T, K>> {\n const pickedShape: any = {};\n for (const key of keys) {\n if (key in this.shape) {\n pickedShape[key] = this.shape[key];\n }\n }\n return new VldObject(pickedShape);\n }\n\n omit<K extends keyof T>(...keys: K[]): VldObject<Omit<T, K>> {\n const omittedShape: any = {};\n for (const [key, validator] of Object.entries(this.shape)) {\n if (!keys.includes(key as K)) {\n omittedShape[key] = validator;\n }\n }\n return new VldObject(omittedShape);\n }\n\n extend<U extends Record<string, any>>(\n extension: { [K in keyof U]: VldBase<U[K]> }\n ): VldObject<T & U> {\n const extendedShape: any = { ...this.shape };\n for (const [key, validator] of Object.entries(extension)) {\n extendedShape[key] = validator;\n }\n return new VldObject(extendedShape);\n }\n}\n\n// Optional validator\nexport class VldOptional<T> extends VldBase<T | undefined> {\n constructor(private validator: VldBase<T>) {\n super();\n }\n\n parse(value: unknown): T | undefined {\n if (value === undefined) {\n return undefined;\n }\n return this.validator.parse(value);\n }\n\n safeParse(value: unknown): ParseResult<T | undefined> {\n if (value === undefined) {\n return { success: true, data: undefined };\n }\n return this.validator.safeParse(value);\n }\n}\n\n// Nullable validator\nexport class VldNullable<T> extends VldBase<T | null> {\n constructor(private validator: VldBase<T>) {\n super();\n }\n\n parse(value: unknown): T | null {\n if (value === null) {\n return null;\n }\n return this.validator.parse(value);\n }\n\n safeParse(value: unknown): ParseResult<T | null> {\n if (value === null) {\n return { success: true, data: null };\n }\n return this.validator.safeParse(value);\n }\n}\n\n// Union validator\nexport class VldUnion<T extends readonly VldBase<any>[]> extends VldBase<T[number] extends VldBase<infer U> ? U : never> {\n constructor(private validators: T) {\n super();\n }\n\n parse(value: unknown): T[number] extends VldBase<infer U> ? U : never {\n const errors: Error[] = [];\n \n for (const validator of this.validators) {\n try {\n return validator.parse(value);\n } catch (error) {\n errors.push(error as Error);\n }\n }\n\n throw new Error(getMessages().unionNoMatch(errors.map(e => e.message)));\n }\n\n safeParse(value: unknown): ParseResult<T[number] extends VldBase<infer U> ? U : never> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Intersection validator\nexport class VldIntersection<A, B> extends VldBase<A & B> {\n constructor(private validatorA: VldBase<A>, private validatorB: VldBase<B>) {\n super();\n }\n\n parse(value: unknown): A & B {\n try {\n // Both validators must pass\n const resultA = this.validatorA.parse(value);\n const resultB = this.validatorB.parse(value);\n \n // For object types, deep merge the results\n if (typeof resultA === 'object' && resultA !== null && \n typeof resultB === 'object' && resultB !== null &&\n !Array.isArray(resultA) && !Array.isArray(resultB)) {\n return deepMerge(resultA, resultB) as A & B;\n }\n \n // For primitive types, both must be the same value\n if ((resultA as any) === (resultB as any)) {\n return resultA as A & B;\n }\n \n // If they're different primitive values, this is an error\n throw new Error(getMessages().intersectionError('Values must be identical for intersection of primitive types'));\n } catch (error) {\n throw new Error(getMessages().intersectionError((error as Error).message));\n }\n }\n\n safeParse(value: unknown): ParseResult<A & B> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Literal validator\nexport class VldLiteral<T extends string | number | boolean> extends VldBase<T> {\n constructor(private literal: T) {\n super();\n }\n\n parse(value: unknown): T {\n if (value !== this.literal) {\n throw new Error(getMessages().literalExpected(JSON.stringify(this.literal), JSON.stringify(value)));\n }\n return this.literal;\n }\n\n safeParse(value: unknown): ParseResult<T> {\n if (value === this.literal) {\n return { success: true, data: this.literal };\n }\n return { success: false, error: new Error(getMessages().literalExpected(JSON.stringify(this.literal), 'received')) };\n }\n}\n\n// Enum validator\nexport class VldEnum<T extends readonly [string, ...string[]]> extends VldBase<T[number]> {\n constructor(private values: T) {\n super();\n }\n\n parse(value: unknown): T[number] {\n if (!this.values.includes(value as string)) {\n throw new Error(getMessages().enumExpected([...this.values], JSON.stringify(value)));\n }\n return value as T[number];\n }\n\n safeParse(value: unknown): ParseResult<T[number]> {\n if (this.values.includes(value as string)) {\n return { success: true, data: value as T[number] };\n }\n return { success: false, error: new Error(getMessages().enumExpected([...this.values], 'received')) };\n }\n}\n\n// Date validator\nexport class VldDate extends VldBase<Date> {\n private checks: Array<(v: Date) => boolean> = [];\n private errorMessage = getMessages().invalidDate;\n\n parse(value: unknown): Date {\n let date: Date;\n \n if (value instanceof Date) {\n date = value;\n } else if (typeof value === 'string' || typeof value === 'number') {\n date = new Date(value);\n } else {\n throw new Error(this.errorMessage || getMessages().invalidDate);\n }\n\n if (isNaN(date.getTime())) {\n throw new Error(this.errorMessage || getMessages().invalidDate);\n }\n\n for (const check of this.checks) {\n if (!check(date)) {\n throw new Error(this.errorMessage || getMessages().invalidDate);\n }\n }\n\n return date;\n }\n\n safeParse(value: unknown): ParseResult<Date> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n\n min(date: Date, message?: string): VldDate {\n const newValidator = new VldDate();\n newValidator.checks = [...this.checks, (v: Date) => v >= date];\n newValidator.errorMessage = message || getMessages().dateMin(date);\n return newValidator;\n }\n\n max(date: Date, message?: string): VldDate {\n const newValidator = new VldDate();\n newValidator.checks = [...this.checks, (v: Date) => v <= date];\n newValidator.errorMessage = message || getMessages().dateMax(date);\n return newValidator;\n }\n}\n\n// Any validator\nexport class VldAny extends VldBase<any> {\n parse(value: unknown): any {\n return value;\n }\n\n safeParse(value: unknown): ParseResult<any> {\n return { success: true, data: value };\n }\n}\n\n// Unknown validator\nexport class VldUnknown extends VldBase<unknown> {\n parse(value: unknown): unknown {\n return value;\n }\n\n safeParse(value: unknown): ParseResult<unknown> {\n return { success: true, data: value };\n }\n}\n\n// Void validator\nexport class VldVoid extends VldBase<void> {\n parse(value: unknown): void {\n if (value !== undefined) {\n throw new Error(getMessages().expectedUndefined);\n }\n return undefined;\n }\n\n safeParse(value: unknown): ParseResult<void> {\n if (value === undefined) {\n return { success: true, data: undefined };\n }\n return { success: false, error: new Error(getMessages().expectedUndefined) };\n }\n}\n\n// Never validator\nexport class VldNever extends VldBase<never> {\n parse(_value: unknown): never {\n throw new Error(getMessages().neverType);\n }\n\n safeParse(_value: unknown): ParseResult<never> {\n return { success: false, error: new Error(getMessages().neverType) };\n }\n}\n\n// BigInt validator\nexport class VldBigInt extends VldBase<bigint> {\n private checks: Array<(v: bigint) => boolean> = [];\n private errorMessage = getMessages().invalidBigint;\n\n parse(value: unknown): bigint {\n if (typeof value !== 'bigint') {\n throw new Error(this.errorMessage || getMessages().invalidBigint);\n }\n\n for (const check of this.checks) {\n if (!check(value)) {\n throw new Error(this.errorMessage || getMessages().invalidBigint);\n }\n }\n\n return value;\n }\n\n safeParse(value: unknown): ParseResult<bigint> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Symbol validator\nexport class VldSymbol extends VldBase<symbol> {\n private errorMessage = getMessages().invalidSymbol;\n\n parse(value: unknown): symbol {\n if (typeof value !== 'symbol') {\n throw new Error(this.errorMessage || getMessages().invalidSymbol);\n }\n return value;\n }\n\n safeParse(value: unknown): ParseResult<symbol> {\n if (typeof value === 'symbol') {\n return { success: true, data: value };\n }\n return { success: false, error: new Error(this.errorMessage) };\n }\n}\n\n// Tuple validator\nexport class VldTuple<T extends readonly VldBase<any>[]> extends VldBase<{ [K in keyof T]: T[K] extends VldBase<infer U> ? U : never }> {\n constructor(private validators: T) {\n super();\n }\n\n parse(value: unknown): { [K in keyof T]: T[K] extends VldBase<infer U> ? U : never } {\n if (!Array.isArray(value)) {\n throw new Error(getMessages().invalidTuple);\n }\n\n if (value.length !== this.validators.length) {\n throw new Error(getMessages().tupleLength(this.validators.length, value.length));\n }\n\n const result: any[] = [];\n for (let i = 0; i < this.validators.length; i++) {\n try {\n result[i] = this.validators[i].parse(value[i]);\n } catch (error) {\n throw new Error(getMessages().arrayItem(i, (error as Error).message));\n }\n }\n\n return result as { [K in keyof T]: T[K] extends VldBase<infer U> ? U : never };\n }\n\n safeParse(value: unknown): ParseResult<{ [K in keyof T]: T[K] extends VldBase<infer U> ? U : never }> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Record validator\nexport class VldRecord<T> extends VldBase<Record<string, T>> {\n constructor(private valueValidator: VldBase<T>) {\n super();\n }\n\n parse(value: unknown): Record<string, T> {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(getMessages().invalidRecord);\n }\n\n const result: Record<string, T> = {};\n const obj = value as Record<string, unknown>;\n\n for (const [key, val] of Object.entries(obj)) {\n try {\n result[key] = this.valueValidator.parse(val);\n } catch (error) {\n throw new Error(getMessages().objectField(key, (error as Error).message));\n }\n }\n\n return result;\n }\n\n safeParse(value: unknown): ParseResult<Record<string, T>> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Set validator\nexport class VldSet<T> extends VldBase<Set<T>> {\n constructor(private itemValidator: VldBase<T>) {\n super();\n }\n\n parse(value: unknown): Set<T> {\n if (!(value instanceof Set)) {\n throw new Error(getMessages().invalidSet);\n }\n\n const result = new Set<T>();\n for (const item of value) {\n try {\n result.add(this.itemValidator.parse(item));\n } catch (error) {\n throw new Error((error as Error).message);\n }\n }\n\n return result;\n }\n\n safeParse(value: unknown): ParseResult<Set<T>> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Map validator\nexport class VldMap<K, V> extends VldBase<Map<K, V>> {\n constructor(private keyValidator: VldBase<K>, private valueValidator: VldBase<V>) {\n super();\n }\n\n parse(value: unknown): Map<K, V> {\n if (!(value instanceof Map)) {\n throw new Error(getMessages().invalidMap);\n }\n\n const result = new Map<K, V>();\n for (const [key, val] of value) {\n try {\n const validKey = this.keyValidator.parse(key);\n const validValue = this.valueValidator.parse(val);\n result.set(validKey, validValue);\n } catch (error) {\n throw new Error((error as Error).message);\n }\n }\n\n return result;\n }\n\n safeParse(value: unknown): ParseResult<Map<K, V>> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Coercion classes\nexport class VldCoerceString extends VldString {\n parse(value: unknown): string {\n try {\n // Attempt coercion to string\n if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('string', value));\n }\n const coerced = String(value);\n // Call parent parse with coerced value\n return super.parse(coerced);\n } catch (error) {\n const errorMessage = (error as Error).message;\n // If it's a coercion error, re-throw as is\n if (errorMessage.includes('Cannot coerce')) {\n throw error;\n }\n // If it's a validation error from parent, re-throw as is\n if (errorMessage.includes('String must') || errorMessage.includes('Invalid')) {\n throw error;\n }\n // Otherwise, it's a coercion failure\n throw new Error(getMessages().coercionFailed('string', value));\n }\n }\n\n safeParse(value: unknown): ParseResult<string> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\nexport class VldCoerceNumber extends VldNumber {\n parse(value: unknown): number {\n try {\n // Attempt coercion to number\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') {\n throw new Error(getMessages().coercionFailed('number', value));\n }\n const coerced = Number(trimmed);\n if (isNaN(coerced)) {\n throw new Error(getMessages().coercionFailed('number', value));\n }\n return super.parse(coerced);\n } else if (typeof value === 'boolean') {\n return super.parse(value ? 1 : 0);\n } else if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('number', value));\n }\n return super.parse(Number(value));\n } catch (error) {\n if ((error as Error).message.includes('coercionFailed')) {\n throw error;\n }\n throw new Error(getMessages().coercionFailed('number', value));\n }\n }\n\n safeParse(value: unknown): ParseResult<number> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\nexport class VldCoerceBoolean extends VldBoolean {\n parse(value: unknown): boolean {\n try {\n // Attempt coercion to boolean\n if (typeof value === 'string') {\n const lower = value.toLowerCase().trim();\n if (lower === 'true' || lower === '1' || lower === 'yes') return true;\n if (lower === 'false' || lower === '0' || lower === 'no') return false;\n throw new Error(getMessages().coercionFailed('boolean', value));\n } else if (typeof value === 'number') {\n if (value === 1) return true;\n if (value === 0) return false;\n throw new Error(getMessages().coercionFailed('boolean', value));\n } else if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('boolean', value));\n }\n return super.parse(Boolean(value));\n } catch (error) {\n if ((error as Error).message.includes('coercionFailed')) {\n throw error;\n }\n throw new Error(getMessages().coercionFailed('boolean', value));\n }\n }\n\n safeParse(value: unknown): ParseResult<boolean> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\nexport class VldCoerceBigInt extends VldBigInt {\n parse(value: unknown): bigint {\n try {\n // Attempt coercion to bigint\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n return super.parse(BigInt(trimmed));\n } else if (typeof value === 'number') {\n if (!Number.isInteger(value)) {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n return super.parse(BigInt(value));\n } else if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n return super.parse(BigInt(value as any));\n } catch (error) {\n if ((error as Error).message.includes('coercionFailed')) {\n throw error;\n }\n throw new Error(getMessages().coercionFailed('bigint', value));\n }\n }\n\n safeParse(value: unknown): ParseResult<bigint> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\nexport class VldCoerceDate extends VldDate {\n parse(value: unknown): Date {\n try {\n // Attempt coercion to date\n if (typeof value === 'string' || typeof value === 'number') {\n return super.parse(new Date(value));\n } else if (value === null || value === undefined) {\n throw new Error(getMessages().coercionFailed('date', value));\n }\n return super.parse(value);\n } catch (error) {\n if ((error as Error).message.includes('coercionFailed')) {\n throw error;\n }\n throw new Error(getMessages().coercionFailed('date', value));\n }\n }\n\n safeParse(value: unknown): ParseResult<Date> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Refine validator - adds custom validation\nexport class VldRefine<T, U extends T = T> extends VldBase<U> {\n constructor(\n private baseValidator: VldBase<T>,\n private predicate: (value: T) => boolean,\n private customMessage?: string\n ) {\n super();\n }\n\n parse(value: unknown): U {\n const baseResult = this.baseValidator.parse(value);\n \n try {\n if (!this.predicate(baseResult)) {\n throw new Error(this.customMessage || 'Refinement condition not met');\n }\n } catch (error) {\n throw new Error(getMessages().customValidationError((error as Error).message));\n }\n \n return baseResult as U;\n }\n\n safeParse(value: unknown): ParseResult<U> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Transform validator - transforms data after validation\nexport class VldTransform<T, U> extends VldBase<U> {\n constructor(\n private baseValidator: VldBase<T>,\n private transformer: (value: T) => U\n ) {\n super();\n }\n\n parse(value: unknown): U {\n const baseResult = this.baseValidator.parse(value);\n \n try {\n return this.transformer(baseResult);\n } catch (error) {\n throw new Error(getMessages().transformError((error as Error).message));\n }\n }\n\n safeParse(value: unknown): ParseResult<U> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n}\n\n// Default validator - provides default value for undefined\nexport class VldDefault<T> extends VldBase<T> {\n constructor(\n private baseValidator: VldBase<T>,\n private defaultValue: T\n ) {\n super();\n }\n\n parse(value: unknown): T {\n if (value === undefined) {\n return this.defaultValue;\n }\n return this.baseValidator.parse(value);\n }\n\n safeParse(value: unknown): ParseResult<T> {\n if (value === undefined) {\n return { success: true, data: this.defaultValue };\n }\n return this.baseValidator.safeParse(value);\n }\n}\n\n// Catch validator - provides fallback value on validation error\nexport class VldCatch<T> extends VldBase<T> {\n constructor(\n private baseValidator: VldBase<T>,\n private fallbackValue: T\n ) {\n super();\n }\n\n parse(value: unknown): T {\n try {\n return this.baseValidator.parse(value);\n } catch {\n return this.fallbackValue;\n }\n }\n\n safeParse(value: unknown): ParseResult<T> {\n const result = this.baseValidator.safeParse(value);\n if (result.success) {\n return result;\n } else {\n return { success: true, data: this.fallbackValue };\n }\n }\n}\n\n// Main API\nexport const v = {\n string: () => new VldString(),\n number: () => new VldNumber(),\n boolean: () => new VldBoolean(),\n bigint: () => new VldBigInt(),\n symbol: () => new VldSymbol(),\n array: <T>(item: VldBase<T>) => new VldArray(item),\n tuple: <T extends readonly VldBase<any>[]>(...validators: T) => new VldTuple(validators),\n object: <T extends Record<string, any>>(shape: { [K in keyof T]: VldBase<T[K]> }) => new VldObject(shape),\n record: <T>(valueValidator: VldBase<T>) => new VldRecord(valueValidator),\n set: <T>(item: VldBase<T>) => new VldSet(item),\n map: <K, V>(key: VldBase<K>, value: VldBase<V>) => new VldMap(key, value),\n optional: <T>(validator: VldBase<T>) => new VldOptional(validator),\n nullable: <T>(validator: VldBase<T>) => new VldNullable(validator),\n union: <T extends readonly VldBase<any>[]>(...validators: T) => new VldUnion(validators),\n intersection: <A, B>(a: VldBase<A>, b: VldBase<B>) => new VldIntersection(a, b),\n literal: <T extends string | number | boolean>(value: T) => new VldLiteral(value),\n enum: <T extends readonly [string, ...string[]]>(...values: T) => new VldEnum(values),\n date: () => new VldDate(),\n any: () => new VldAny(),\n unknown: () => new VldUnknown(),\n void: () => new VldVoid(),\n never: () => new VldNever(),\n \n // Coercion API\n coerce: {\n string: () => new VldCoerceString(),\n number: () => new VldCoerceNumber(),\n boolean: () => new VldCoerceBoolean(),\n bigint: () => new VldCoerceBigInt(),\n date: () => new VldCoerceDate(),\n }\n};\n\n// Type inference helpers\nexport type Infer<T extends VldBase<any>> = T extends VldBase<infer U> ? U : never;\n\n// Export all validators for direct use\nexport {\n VldBase,\n};\n\n// Export locale functionality\nexport { setLocale, getLocale, getMessages, type Locale } from './locales';\n\n// Export error formatting utilities\nexport { \n VldError, \n VldIssue, \n VldErrorCode,\n VldErrorTree,\n VldFlattenedError,\n treeifyError, \n prettifyError, \n flattenError \n} from './errors';"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMpD,uCAAuC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,iCAAiC;AACjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAe,MAAM,WAAW,CAAC;AAE3E,uCAAuC;AACvC,OAAO,EACL,QAAQ,EAKR,YAAY,EACZ,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,uBAAuB;IACvB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;IAChC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;IAChC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;IAClC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;IAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;IAChC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;IAEhC,qBAAqB;IACrB,KAAK,EAAE,CAAI,IAAyB,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAgC,KAAiD,EAAE,EAAE,CAC3F,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IACzB,KAAK,EAAE,CAAyC,GAAG,KAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;IACzF,MAAM,EAAE,CAAI,KAA0B,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;IAClE,GAAG,EAAE,CAAI,IAAyB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1D,GAAG,EAAE,CAAO,GAAwB,EAAE,KAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;IAE9F,yBAAyB;IACzB,KAAK,EAAE,CAAyC,GAAG,UAAa,EAAE,EAAE,CAClE,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;IAChC,YAAY,EAAE,CAAO,KAA0B,EAAE,MAA2B,EAAE,EAAE,CAC9E,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvC,mBAAmB;IACnB,OAAO,EAAE,CAAyD,KAAQ,EAAE,EAAE,CAC5E,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;IAC1B,IAAI,EAAE,CAA2C,GAAG,MAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAa,CAAC;IAE/F,qBAAqB;IACrB,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;IAC1B,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE;IAClC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;IAC5B,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;IAE9B,qBAAqB;IACrB,QAAQ,EAAE,CAAI,SAA8B,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;IAC9E,QAAQ,EAAE,CAAI,SAA8B,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;IAC9E,OAAO,EAAE,CAAI,SAA8B,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;IAE5E,eAAe;IACf,MAAM,EAAE;QACN,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE;QACtC,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE;QACtC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE;QACxC,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE;QAClC,MAAM,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE;KACvC;CACF,CAAC;AAEF,8CAA8C;AAC9C,eAAe,CAAC,CAAC","sourcesContent":["/**\n * VLD - Fast, Type-Safe Validation Library\n * Zero dependencies, blazing fast performance\n * \n * This is the new modular implementation with:\n * - Immutable validators (no memory leaks)\n * - Secure deepMerge (no prototype pollution)\n * - TypeScript strict mode support\n * - Better performance through pooling and memoization\n */\n\n// Import base class\nimport { VldBase } from './validators/base';\n\n// Import validators\nimport { VldString } from './validators/string';\nimport { VldNumber } from './validators/number';\nimport { VldBoolean } from './validators/boolean';\nimport { VldDate } from './validators/date';\nimport { VldArray } from './validators/array';\nimport { VldObject } from './validators/object';\nimport { VldUnion } from './validators/union';\nimport { VldLiteral } from './validators/literal';\nimport { VldBigInt } from './validators/bigint';\nimport { VldSymbol } from './validators/symbol';\nimport { VldTuple } from './validators/tuple';\nimport { VldRecord } from './validators/record';\nimport { VldSet } from './validators/set';\nimport { VldMap } from './validators/map';\nimport { VldEnum } from './validators/enum';\nimport { VldIntersection } from './validators/intersection';\nimport { VldAny } from './validators/any';\nimport { VldUnknown } from './validators/unknown';\nimport { VldVoid } from './validators/void';\nimport { VldNever } from './validators/never';\nimport { VldOptional } from './validators/base';\nimport { VldNullable } from './validators/base';\nimport { VldNullish } from './validators/base';\n\n// Import coercion validators\nimport { VldCoerceString } from './coercion/string';\nimport { VldCoerceNumber } from './coercion/number';\nimport { VldCoerceBoolean } from './coercion/boolean';\nimport { VldCoerceDate } from './coercion/date';\nimport { VldCoerceBigInt } from './coercion/bigint';\n\n// Re-export types\nexport type { ParseResult } from './validators/base';\nexport type { Infer } from './validators';\n\n// Re-export base classes for extension\nexport { VldBase } from './validators/base';\nexport { VldIntersection } from './validators/intersection';\n\n// Re-export locale functionality\nexport { setLocale, getLocale, getMessages, type Locale } from './locales';\n\n// Re-export error formatting utilities\nexport { \n VldError, \n VldIssue, \n VldErrorCode,\n VldErrorTree,\n VldFlattenedError,\n treeifyError, \n prettifyError, \n flattenError \n} from './errors';\n\n/**\n * Main API object with factory methods for all validators\n */\nexport const v = {\n // Primitive validators\n string: () => VldString.create(),\n number: () => VldNumber.create(),\n boolean: () => VldBoolean.create(),\n date: () => VldDate.create(),\n bigint: () => VldBigInt.create(),\n symbol: () => VldSymbol.create(),\n \n // Complex validators\n array: <T>(item: VldBase<unknown, T>) => VldArray.create(item),\n object: <T extends Record<string, any>>(shape: { [K in keyof T]: VldBase<unknown, T[K]> }) => \n VldObject.create(shape),\n tuple: <T extends readonly VldBase<any, any>[]>(...items: T) => VldTuple.create(...items),\n record: <T>(value: VldBase<unknown, T>) => VldRecord.create(value),\n set: <T>(item: VldBase<unknown, T>) => VldSet.create(item),\n map: <K, V>(key: VldBase<unknown, K>, value: VldBase<unknown, V>) => VldMap.create(key, value),\n \n // Union and intersection\n union: <T extends readonly VldBase<any, any>[]>(...validators: T) => \n VldUnion.create(...validators),\n intersection: <A, B>(first: VldBase<unknown, A>, second: VldBase<unknown, B>) => \n VldIntersection.create(first, second),\n \n // Literal and enum\n literal: <T extends string | number | boolean | null | undefined>(value: T) => \n VldLiteral.create(value),\n enum: <T extends readonly [string, ...string[]]>(...values: T) => VldEnum.create(values as any),\n \n // Special validators\n any: () => VldAny.create(),\n unknown: () => VldUnknown.create(),\n void: () => VldVoid.create(),\n never: () => VldNever.create(),\n \n // Utility validators\n optional: <T>(validator: VldBase<unknown, T>) => VldOptional.create(validator),\n nullable: <T>(validator: VldBase<unknown, T>) => VldNullable.create(validator),\n nullish: <T>(validator: VldBase<unknown, T>) => VldNullish.create(validator),\n \n // Coercion API\n coerce: {\n string: () => VldCoerceString.create(),\n number: () => VldCoerceNumber.create(),\n boolean: () => VldCoerceBoolean.create(),\n date: () => VldCoerceDate.create(),\n bigint: () => VldCoerceBigInt.create(),\n }\n};\n\n// For backward compatibility during migration\nexport default v;"]}
@@ -19,14 +19,14 @@ export const af = {
19
19
  invalidNumber: 'Ongeldige getal',
20
20
  numberMin: (min) => `Getal moet ten minste ${min} wees`,
21
21
  numberMax: (max) => `Getal mag hoogstens ${max} wees`,
22
- numberInt: 'Getal moet \'n heelgetal wees',
22
+ numberInt: "Getal moet 'n heelgetal wees",
23
23
  numberPositive: 'Getal moet positief wees',
24
24
  numberNegative: 'Getal moet negatief wees',
25
25
  numberNonnegative: 'Getal mag nie negatief wees nie',
26
26
  numberNonpositive: 'Getal mag nie positief wees nie',
27
27
  numberFinite: 'Getal moet eindig wees',
28
- numberSafe: 'Getal moet \'n veilige heelgetal wees',
29
- numberMultipleOf: (value) => `Getal moet \'n veelvoud van ${value} wees`,
28
+ numberSafe: "Getal moet 'n veilige heelgetal wees",
29
+ numberMultipleOf: (value) => `Getal moet 'n veelvoud van ${value} wees`,
30
30
  // Boolean validation messages
31
31
  invalidBoolean: 'Ongeldige boolean waarde',
32
32
  // Date validation messages
@@ -1 +1 @@
1
- {"version":3,"file":"af.js","sourceRoot":"","sources":["../../src/locales/af.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const af: LocaleMessages = {\n // String validation messages\n invalidString: 'Ongeldige string',\n stringMin: (min: number) => `String moet ten minste ${min} karakters lank wees`,\n stringMax: (max: number) => `String mag hoogstens ${max} karakters lank wees`,\n stringLength: (length: number) => `String moet presies ${length} karakters lank wees`,\n stringEmail: 'Ongeldige e-pos adres',\n stringUrl: 'Ongeldige URL',\n stringUuid: 'Ongeldige UUID',\n stringRegex: 'Ongeldige formaat',\n stringStartsWith: (prefix: string) => `String moet begin met \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `String moet eindig met \"${suffix}\"`,\n stringIncludes: (substring: string) => `String moet \"${substring}\" bevat`,\n stringIp: 'Ongeldige IP adres',\n stringIpv4: 'Ongeldige IPv4 adres',\n stringIpv6: 'Ongeldige IPv6 adres',\n stringEmpty: 'String mag nie leeg wees nie',\n\n // Number validation messages\n invalidNumber: 'Ongeldige getal',\n numberMin: (min: number) => `Getal moet ten minste ${min} wees`,\n numberMax: (max: number) => `Getal mag hoogstens ${max} wees`,\n numberInt: 'Getal moet \\'n heelgetal wees',\n numberPositive: 'Getal moet positief wees',\n numberNegative: 'Getal moet negatief wees',\n numberNonnegative: 'Getal mag nie negatief wees nie',\n numberNonpositive: 'Getal mag nie positief wees nie',\n numberFinite: 'Getal moet eindig wees',\n numberSafe: 'Getal moet \\'n veilige heelgetal wees',\n numberMultipleOf: (value: number) => `Getal moet \\'n veelvoud van ${value} wees`,\n\n // Boolean validation messages\n invalidBoolean: 'Ongeldige boolean waarde',\n\n // Date validation messages\n invalidDate: 'Ongeldige datum',\n dateMin: (date: Date) => `Datum moet na ${date.toISOString()} wees`,\n dateMax: (date: Date) => `Datum moet voor ${date.toISOString()} wees`,\n\n // Object validation messages\n invalidObject: 'Ongeldige objek',\n unexpectedKeys: (keys: string[]) => `Onverwagte sleutels: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Ongeldige skikking',\n arrayMin: (min: number) => `Skikking moet ten minste ${min} elemente hê`,\n arrayMax: (max: number) => `Skikking mag hoogstens ${max} elemente hê`,\n arrayLength: (length: number) => `Skikking moet presies ${length} elemente hê`,\n arrayEmpty: 'Skikking mag nie leeg wees nie',\n arrayItem: (index: number, error: string) => `Ongeldige element by indeks ${index}: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `Ongeldige veld \"${field}\": ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Geen union lid het gepas nie: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Intersection validasie het gefaal: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `Verwag ${expected}, ontvang ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `Verwag een van [${values.join(', ')}], ontvang ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'Verwag undefined',\n neverType: 'Never tipe kan nie geparseer word nie',\n\n // New advanced type validation messages\n invalidBigint: 'Ongeldige bigint',\n invalidSymbol: 'Ongeldige simbool',\n invalidTuple: 'Ongeldige tupel',\n tupleLength: (expected: number, received: number) => `Tupel moet presies ${expected} elemente hê, ontvang ${received}`,\n invalidRecord: 'Ongeldige rekord',\n invalidSet: 'Ongeldige Set',\n invalidMap: 'Ongeldige Map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Transformasie het gefaal: ${error}`,\n refinementError: (error: string) => `Verfyning het gefaal: ${error}`,\n customValidationError: (error: string) => `Pasgemaakte validasie het misluk: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `Kan nie ${JSON.stringify(value)} na ${type} dwing nie`\n};"]}
1
+ {"version":3,"file":"af.js","sourceRoot":"","sources":["../../src/locales/af.ts"],"names":[],"mappings":"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","sourcesContent":["import { LocaleMessages } from './types';\n\nexport const af: LocaleMessages = {\n // String validation messages\n invalidString: 'Ongeldige string',\n stringMin: (min: number) => `String moet ten minste ${min} karakters lank wees`,\n stringMax: (max: number) => `String mag hoogstens ${max} karakters lank wees`,\n stringLength: (length: number) => `String moet presies ${length} karakters lank wees`,\n stringEmail: 'Ongeldige e-pos adres',\n stringUrl: 'Ongeldige URL',\n stringUuid: 'Ongeldige UUID',\n stringRegex: 'Ongeldige formaat',\n stringStartsWith: (prefix: string) => `String moet begin met \"${prefix}\"`,\n stringEndsWith: (suffix: string) => `String moet eindig met \"${suffix}\"`,\n stringIncludes: (substring: string) => `String moet \"${substring}\" bevat`,\n stringIp: 'Ongeldige IP adres',\n stringIpv4: 'Ongeldige IPv4 adres',\n stringIpv6: 'Ongeldige IPv6 adres',\n stringEmpty: 'String mag nie leeg wees nie',\n\n // Number validation messages\n invalidNumber: 'Ongeldige getal',\n numberMin: (min: number) => `Getal moet ten minste ${min} wees`,\n numberMax: (max: number) => `Getal mag hoogstens ${max} wees`,\n numberInt: \"Getal moet 'n heelgetal wees\",\n numberPositive: 'Getal moet positief wees',\n numberNegative: 'Getal moet negatief wees',\n numberNonnegative: 'Getal mag nie negatief wees nie',\n numberNonpositive: 'Getal mag nie positief wees nie',\n numberFinite: 'Getal moet eindig wees',\n numberSafe: \"Getal moet 'n veilige heelgetal wees\",\n numberMultipleOf: (value: number) => `Getal moet 'n veelvoud van ${value} wees`,\n\n // Boolean validation messages\n invalidBoolean: 'Ongeldige boolean waarde',\n\n // Date validation messages\n invalidDate: 'Ongeldige datum',\n dateMin: (date: Date) => `Datum moet na ${date.toISOString()} wees`,\n dateMax: (date: Date) => `Datum moet voor ${date.toISOString()} wees`,\n\n // Object validation messages\n invalidObject: 'Ongeldige objek',\n unexpectedKeys: (keys: string[]) => `Onverwagte sleutels: ${keys.join(', ')}`,\n\n // Array validation messages\n invalidArray: 'Ongeldige skikking',\n arrayMin: (min: number) => `Skikking moet ten minste ${min} elemente hê`,\n arrayMax: (max: number) => `Skikking mag hoogstens ${max} elemente hê`,\n arrayLength: (length: number) => `Skikking moet presies ${length} elemente hê`,\n arrayEmpty: 'Skikking mag nie leeg wees nie',\n arrayItem: (index: number, error: string) => `Ongeldige element by indeks ${index}: ${error}`,\n\n // Object field validation\n objectField: (field: string, error: string) => `Ongeldige veld \"${field}\": ${error}`,\n\n // Union validation messages\n unionNoMatch: (errors: string[]) => `Geen union lid het gepas nie: ${errors.join(', ')}`,\n\n // Intersection validation messages\n intersectionError: (error: string) => `Intersection validasie het gefaal: ${error}`,\n\n // Literal validation messages\n literalExpected: (expected: string, received: string) => `Verwag ${expected}, ontvang ${received}`,\n\n // Enum validation messages\n enumExpected: (values: any[], received: string) => `Verwag een van [${values.join(', ')}], ontvang ${received}`,\n\n // Special type validation messages\n expectedUndefined: 'Verwag undefined',\n neverType: 'Never tipe kan nie geparseer word nie',\n\n // New advanced type validation messages\n invalidBigint: 'Ongeldige bigint',\n invalidSymbol: 'Ongeldige simbool',\n invalidTuple: 'Ongeldige tupel',\n tupleLength: (expected: number, received: number) => `Tupel moet presies ${expected} elemente hê, ontvang ${received}`,\n invalidRecord: 'Ongeldige rekord',\n invalidSet: 'Ongeldige Set',\n invalidMap: 'Ongeldige Map',\n \n // Transformation and refinement messages\n transformError: (error: string) => `Transformasie het gefaal: ${error}`,\n refinementError: (error: string) => `Verfyning het gefaal: ${error}`,\n customValidationError: (error: string) => `Pasgemaakte validasie het misluk: ${error}`,\n \n // Coercion messages\n coercionFailed: (type: string, value: unknown) => `Kan nie ${JSON.stringify(value)} na ${type} dwing nie`\n};"]}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Type guard to check if a value is a plain object
3
+ */
4
+ export declare function isPlainObject(obj: any): obj is Record<string, any>;
5
+ /**
6
+ * Safely deep merge two objects without prototype pollution vulnerability
7
+ * @param target The target object
8
+ * @param source The source object to merge from
9
+ * @returns A new merged object
10
+ */
11
+ export declare function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T;
12
+ /**
13
+ * Freeze an object deeply to prevent any mutations
14
+ * @param obj Object to freeze
15
+ * @returns The frozen object
16
+ */
17
+ export declare function deepFreeze<T>(obj: T): Readonly<T>;
18
+ //# sourceMappingURL=deep-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-merge.d.ts","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAOlE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACjB,CAAC,CA+BH;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAuBjD"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Type guard to check if a value is a plain object
3
+ */
4
+ export function isPlainObject(obj) {
5
+ return (obj !== null &&
6
+ typeof obj === 'object' &&
7
+ obj.constructor === Object &&
8
+ Object.prototype.toString.call(obj) === '[object Object]');
9
+ }
10
+ /**
11
+ * Safely deep merge two objects without prototype pollution vulnerability
12
+ * @param target The target object
13
+ * @param source The source object to merge from
14
+ * @returns A new merged object
15
+ */
16
+ export function deepMerge(target, source) {
17
+ // Prevent prototype pollution
18
+ const DANGEROUS_KEYS = ['__proto__', 'constructor', 'prototype'];
19
+ // Create a new object to avoid mutations
20
+ const result = { ...target };
21
+ for (const key in source) {
22
+ // Skip dangerous keys that could lead to prototype pollution
23
+ if (DANGEROUS_KEYS.includes(key)) {
24
+ continue;
25
+ }
26
+ // Only process own properties, not inherited ones
27
+ if (!Object.prototype.hasOwnProperty.call(source, key)) {
28
+ continue;
29
+ }
30
+ const sourceValue = source[key];
31
+ const targetValue = target[key];
32
+ // If both values are plain objects, merge them recursively
33
+ if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {
34
+ result[key] = deepMerge(targetValue, sourceValue);
35
+ }
36
+ else {
37
+ // Otherwise, use the source value (including undefined)
38
+ result[key] = sourceValue;
39
+ }
40
+ }
41
+ return result;
42
+ }
43
+ /**
44
+ * Freeze an object deeply to prevent any mutations
45
+ * @param obj Object to freeze
46
+ * @returns The frozen object
47
+ */
48
+ export function deepFreeze(obj) {
49
+ // Primitive values don't need processing
50
+ if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
51
+ return obj;
52
+ }
53
+ // Check if already frozen to prevent infinite recursion
54
+ if (Object.isFrozen(obj)) {
55
+ return obj;
56
+ }
57
+ // Freeze the object/function itself
58
+ Object.freeze(obj);
59
+ // Recursively freeze all properties
60
+ Object.getOwnPropertyNames(obj).forEach(prop => {
61
+ const value = obj[prop];
62
+ if (value !== null && (typeof value === 'object' || typeof value === 'function')) {
63
+ deepFreeze(value);
64
+ }
65
+ });
66
+ return obj;
67
+ }
68
+ //# sourceMappingURL=deep-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../../src/utils/deep-merge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,CAAC,WAAW,KAAK,MAAM;QAC1B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAC1D,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,MAAS,EACT,MAAkB;IAElB,8BAA8B;IAC9B,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAEjE,yCAAyC;IACzC,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAO,CAAC;IAElC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,6DAA6D;QAC7D,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YACvD,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhC,2DAA2D;QAC3D,IAAI,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,MAAc,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,WAAkB,EAAE,WAAkB,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,wDAAwD;YACvD,MAAc,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAI,GAAM;IAClC,yCAAyC;IACzC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC;QAC3E,OAAO,GAAG,CAAC;IACb,CAAC;IAED,wDAAwD;IACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oCAAoC;IACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEnB,oCAAoC;IACpC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC7C,MAAM,KAAK,GAAI,GAAW,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;YACjF,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["/**\n * Type guard to check if a value is a plain object\n */\nexport function isPlainObject(obj: any): obj is Record<string, any> {\n return (\n obj !== null &&\n typeof obj === 'object' &&\n obj.constructor === Object &&\n Object.prototype.toString.call(obj) === '[object Object]'\n );\n}\n\n/**\n * Safely deep merge two objects without prototype pollution vulnerability\n * @param target The target object\n * @param source The source object to merge from\n * @returns A new merged object\n */\nexport function deepMerge<T extends Record<string, any>>(\n target: T,\n source: Partial<T>\n): T {\n // Prevent prototype pollution\n const DANGEROUS_KEYS = ['__proto__', 'constructor', 'prototype'];\n \n // Create a new object to avoid mutations\n const result = { ...target } as T;\n \n for (const key in source) {\n // Skip dangerous keys that could lead to prototype pollution\n if (DANGEROUS_KEYS.includes(key)) {\n continue;\n }\n \n // Only process own properties, not inherited ones\n if (!Object.prototype.hasOwnProperty.call(source, key)) {\n continue;\n }\n \n const sourceValue = source[key];\n const targetValue = target[key];\n \n // If both values are plain objects, merge them recursively\n if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {\n (result as any)[key] = deepMerge(targetValue as any, sourceValue as any);\n } else {\n // Otherwise, use the source value (including undefined)\n (result as any)[key] = sourceValue;\n }\n }\n \n return result;\n}\n\n/**\n * Freeze an object deeply to prevent any mutations\n * @param obj Object to freeze\n * @returns The frozen object\n */\nexport function deepFreeze<T>(obj: T): Readonly<T> {\n // Primitive values don't need processing\n if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n return obj;\n }\n \n // Check if already frozen to prevent infinite recursion\n if (Object.isFrozen(obj)) {\n return obj;\n }\n \n // Freeze the object/function itself\n Object.freeze(obj);\n \n // Recursively freeze all properties\n Object.getOwnPropertyNames(obj).forEach(prop => {\n const value = (obj as any)[prop];\n if (value !== null && (typeof value === 'object' || typeof value === 'function')) {\n deepFreeze(value);\n }\n });\n \n return obj;\n}"]}
@@ -0,0 +1,19 @@
1
+ import { VldBase, ParseResult } from './base';
2
+ /**
3
+ * Validator that accepts any value
4
+ */
5
+ export declare class VldAny extends VldBase<any, any> {
6
+ /**
7
+ * Create a new any validator
8
+ */
9
+ static create(): VldAny;
10
+ /**
11
+ * Parse any value (always succeeds)
12
+ */
13
+ parse(value: unknown): any;
14
+ /**
15
+ * Safely parse any value (always succeeds)
16
+ */
17
+ safeParse(value: unknown): ParseResult<any>;
18
+ }
19
+ //# sourceMappingURL=any.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"any.d.ts","sourceRoot":"","sources":["../../src/validators/any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE9C;;GAEG;AACH,qBAAa,MAAO,SAAQ,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAC3C;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,MAAM;IAIvB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG;IAI1B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC;CAG5C"}
@@ -0,0 +1,25 @@
1
+ import { VldBase } from './base.js';
2
+ /**
3
+ * Validator that accepts any value
4
+ */
5
+ export class VldAny extends VldBase {
6
+ /**
7
+ * Create a new any validator
8
+ */
9
+ static create() {
10
+ return new VldAny();
11
+ }
12
+ /**
13
+ * Parse any value (always succeeds)
14
+ */
15
+ parse(value) {
16
+ return value;
17
+ }
18
+ /**
19
+ * Safely parse any value (always succeeds)
20
+ */
21
+ safeParse(value) {
22
+ return { success: true, data: value };
23
+ }
24
+ }
25
+ //# sourceMappingURL=any.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"any.js","sourceRoot":"","sources":["../../src/validators/any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,OAAiB;IAC3C;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,MAAM,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\n\n/**\n * Validator that accepts any value\n */\nexport class VldAny extends VldBase<any, any> {\n /**\n * Create a new any validator\n */\n static create(): VldAny {\n return new VldAny();\n }\n \n /**\n * Parse any value (always succeeds)\n */\n parse(value: unknown): any {\n return value;\n }\n \n /**\n * Safely parse any value (always succeeds)\n */\n safeParse(value: unknown): ParseResult<any> {\n return { success: true, data: value };\n }\n}"]}
@@ -0,0 +1,48 @@
1
+ import { VldBase, ParseResult } from './base';
2
+ /**
3
+ * Immutable array validator with chainable methods
4
+ */
5
+ export declare class VldArray<T> extends VldBase<unknown[], T[]> {
6
+ private readonly config;
7
+ /**
8
+ * Private constructor to enforce immutability
9
+ */
10
+ private constructor();
11
+ /**
12
+ * Create a new array validator
13
+ */
14
+ static create<T>(itemValidator: VldBase<unknown, T>): VldArray<T>;
15
+ /**
16
+ * Parse and validate an array value
17
+ */
18
+ parse(value: unknown): T[];
19
+ /**
20
+ * Safely parse and validate an array value
21
+ */
22
+ safeParse(value: unknown): ParseResult<T[]>;
23
+ /**
24
+ * Create a new validator with minimum length constraint
25
+ */
26
+ min(length: number, message?: string): VldArray<T>;
27
+ /**
28
+ * Create a new validator with maximum length constraint
29
+ */
30
+ max(length: number, message?: string): VldArray<T>;
31
+ /**
32
+ * Create a new validator with exact length constraint
33
+ */
34
+ length(length: number, message?: string): VldArray<T>;
35
+ /**
36
+ * Create a new validator that ensures array is not empty
37
+ */
38
+ nonempty(message?: string): VldArray<T>;
39
+ /**
40
+ * Create a new validator that ensures array contains unique items
41
+ */
42
+ unique(message?: string): VldArray<T>;
43
+ /**
44
+ * Create a new validator with a range constraint for length
45
+ */
46
+ between(min: number, max: number, message?: string): VldArray<T>;
47
+ }
48
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/validators/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAe9C;;GAEG;AACH,qBAAa,QAAQ,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD;;OAEG;IACH,OAAO;IAKP;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE;IA6C1B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC;IAQ3C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAQlD;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAQlD;;OAEG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAUrD;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAQvC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAQrC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;CAQjE"}
@@ -0,0 +1,135 @@
1
+ import { VldBase } from './base.js';
2
+ import { getMessages } from '../locales.js';
3
+ /**
4
+ * Immutable array validator with chainable methods
5
+ */
6
+ export class VldArray extends VldBase {
7
+ /**
8
+ * Private constructor to enforce immutability
9
+ */
10
+ constructor(config) {
11
+ super();
12
+ this.config = config;
13
+ }
14
+ /**
15
+ * Create a new array validator
16
+ */
17
+ static create(itemValidator) {
18
+ return new VldArray({ itemValidator });
19
+ }
20
+ /**
21
+ * Parse and validate an array value
22
+ */
23
+ parse(value) {
24
+ if (!Array.isArray(value)) {
25
+ throw new Error(this.config.errorMessage || getMessages().invalidArray);
26
+ }
27
+ // Validate length constraints
28
+ if (this.config.exactLength !== undefined && value.length !== this.config.exactLength) {
29
+ throw new Error(this.config.errorMessage || getMessages().arrayLength(this.config.exactLength));
30
+ }
31
+ if (this.config.minLength !== undefined && value.length < this.config.minLength) {
32
+ throw new Error(this.config.errorMessage || getMessages().arrayMin(this.config.minLength));
33
+ }
34
+ if (this.config.maxLength !== undefined && value.length > this.config.maxLength) {
35
+ throw new Error(this.config.errorMessage || getMessages().arrayMax(this.config.maxLength));
36
+ }
37
+ // Validate each item with optimized loop and safeParse
38
+ const result = [];
39
+ const length = value.length;
40
+ for (let i = 0; i < length; i++) {
41
+ const parseResult = this.config.itemValidator.safeParse(value[i]);
42
+ if (!parseResult.success) {
43
+ throw new Error(getMessages().arrayItem(i, parseResult.error.message));
44
+ }
45
+ result[i] = parseResult.data; // Direct assignment is faster than push
46
+ }
47
+ // Check uniqueness if required
48
+ if (this.config.unique) {
49
+ const seen = new Set();
50
+ for (const item of result) {
51
+ const key = typeof item === 'object' ? JSON.stringify(item) : item;
52
+ if (seen.has(key)) {
53
+ throw new Error('Array must contain unique items');
54
+ }
55
+ seen.add(key);
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ /**
61
+ * Safely parse and validate an array value
62
+ */
63
+ safeParse(value) {
64
+ try {
65
+ return { success: true, data: this.parse(value) };
66
+ }
67
+ catch (error) {
68
+ return { success: false, error: error };
69
+ }
70
+ }
71
+ /**
72
+ * Create a new validator with minimum length constraint
73
+ */
74
+ min(length, message) {
75
+ return new VldArray({
76
+ ...this.config,
77
+ minLength: length,
78
+ errorMessage: message || getMessages().arrayMin(length)
79
+ });
80
+ }
81
+ /**
82
+ * Create a new validator with maximum length constraint
83
+ */
84
+ max(length, message) {
85
+ return new VldArray({
86
+ ...this.config,
87
+ maxLength: length,
88
+ errorMessage: message || getMessages().arrayMax(length)
89
+ });
90
+ }
91
+ /**
92
+ * Create a new validator with exact length constraint
93
+ */
94
+ length(length, message) {
95
+ return new VldArray({
96
+ ...this.config,
97
+ exactLength: length,
98
+ minLength: undefined,
99
+ maxLength: undefined,
100
+ errorMessage: message || getMessages().arrayLength(length)
101
+ });
102
+ }
103
+ /**
104
+ * Create a new validator that ensures array is not empty
105
+ */
106
+ nonempty(message) {
107
+ return new VldArray({
108
+ ...this.config,
109
+ minLength: 1,
110
+ errorMessage: message || getMessages().arrayEmpty
111
+ });
112
+ }
113
+ /**
114
+ * Create a new validator that ensures array contains unique items
115
+ */
116
+ unique(message) {
117
+ return new VldArray({
118
+ ...this.config,
119
+ unique: true,
120
+ errorMessage: message || 'Array must contain unique items'
121
+ });
122
+ }
123
+ /**
124
+ * Create a new validator with a range constraint for length
125
+ */
126
+ between(min, max, message) {
127
+ return new VldArray({
128
+ ...this.config,
129
+ minLength: min,
130
+ maxLength: max,
131
+ errorMessage: message || `Array length must be between ${min} and ${max}`
132
+ });
133
+ }
134
+ }
135
+ //# sourceMappingURL=array.js.map