@oxog/vld 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +97 -103
- package/README.md +78 -13
- package/dist/coercion/bigint.d.ts +27 -0
- package/dist/coercion/bigint.d.ts.map +1 -0
- package/dist/coercion/bigint.js +108 -0
- package/dist/coercion/bigint.js.map +1 -0
- package/dist/coercion/boolean.d.ts +20 -0
- package/dist/coercion/boolean.d.ts.map +1 -0
- package/dist/coercion/boolean.js +63 -0
- package/dist/coercion/boolean.js.map +1 -0
- package/dist/coercion/date.d.ts +20 -0
- package/dist/coercion/date.d.ts.map +1 -0
- package/dist/coercion/date.js +52 -0
- package/dist/coercion/date.js.map +1 -0
- package/dist/coercion/number.d.ts +35 -0
- package/dist/coercion/number.d.ts.map +1 -0
- package/dist/coercion/number.js +144 -0
- package/dist/coercion/number.js.map +1 -0
- package/dist/coercion/string.d.ts +38 -0
- package/dist/coercion/string.d.ts.map +1 -0
- package/dist/coercion/string.js +168 -0
- package/dist/coercion/string.js.map +1 -0
- package/dist/index-new.d.ts.map +1 -0
- package/dist/index.d.ts +64 -257
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -1164
- package/dist/index.js.map +1 -1
- package/dist/utils/deep-merge.d.ts +18 -0
- package/dist/utils/deep-merge.d.ts.map +1 -0
- package/dist/utils/deep-merge.js +68 -0
- package/dist/utils/deep-merge.js.map +1 -0
- package/dist/validators/any.d.ts +19 -0
- package/dist/validators/any.d.ts.map +1 -0
- package/dist/validators/any.js +25 -0
- package/dist/validators/any.js.map +1 -0
- package/dist/validators/array.d.ts +48 -0
- package/dist/validators/array.d.ts.map +1 -0
- package/dist/validators/array.js +135 -0
- package/dist/validators/array.js.map +1 -0
- package/dist/validators/base.d.ts +155 -0
- package/dist/validators/base.d.ts.map +1 -0
- package/dist/validators/base.js +245 -0
- package/dist/validators/base.js.map +1 -0
- package/dist/validators/bigint.d.ts +60 -0
- package/dist/validators/bigint.d.ts.map +1 -0
- package/dist/validators/bigint.js +104 -0
- package/dist/validators/bigint.js.map +1 -0
- package/dist/validators/boolean.d.ts +32 -0
- package/dist/validators/boolean.d.ts.map +1 -0
- package/dist/validators/boolean.js +86 -0
- package/dist/validators/boolean.js.map +1 -0
- package/dist/validators/date.d.ts +68 -0
- package/dist/validators/date.d.ts.map +1 -0
- package/dist/validators/date.js +148 -0
- package/dist/validators/date.js.map +1 -0
- package/dist/validators/enum.d.ts +25 -0
- package/dist/validators/enum.d.ts.map +1 -0
- package/dist/validators/enum.js +45 -0
- package/dist/validators/enum.js.map +1 -0
- package/dist/validators/index.d.ts +27 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/index.js +30 -0
- package/dist/validators/index.js.map +1 -0
- package/dist/validators/intersection.d.ts +25 -0
- package/dist/validators/intersection.d.ts.map +1 -0
- package/dist/validators/intersection.js +57 -0
- package/dist/validators/intersection.js.map +1 -0
- package/dist/validators/literal.d.ts +25 -0
- package/dist/validators/literal.d.ts.map +1 -0
- package/dist/validators/literal.js +45 -0
- package/dist/validators/literal.js.map +1 -0
- package/dist/validators/map.d.ts +26 -0
- package/dist/validators/map.d.ts.map +1 -0
- package/dist/validators/map.js +54 -0
- package/dist/validators/map.js.map +1 -0
- package/dist/validators/never.d.ts +19 -0
- package/dist/validators/never.d.ts.map +1 -0
- package/dist/validators/never.js +29 -0
- package/dist/validators/never.js.map +1 -0
- package/dist/validators/number.d.ts +92 -0
- package/dist/validators/number.d.ts.map +1 -0
- package/dist/validators/number.js +173 -0
- package/dist/validators/number.js.map +1 -0
- package/dist/validators/object-optimized.d.ts +23 -0
- package/dist/validators/object-optimized.d.ts.map +1 -0
- package/dist/validators/object-optimized.js +179 -0
- package/dist/validators/object-optimized.js.map +1 -0
- package/dist/validators/object-ultra.d.ts +34 -0
- package/dist/validators/object-ultra.d.ts.map +1 -0
- package/dist/validators/object-ultra.js +175 -0
- package/dist/validators/object-ultra.js.map +1 -0
- package/dist/validators/object.d.ts +73 -0
- package/dist/validators/object.d.ts.map +1 -0
- package/dist/validators/object.js +285 -0
- package/dist/validators/object.js.map +1 -0
- package/dist/validators/record.d.ts +25 -0
- package/dist/validators/record.d.ts.map +1 -0
- package/dist/validators/record.js +52 -0
- package/dist/validators/record.js.map +1 -0
- package/dist/validators/set.d.ts +25 -0
- package/dist/validators/set.d.ts.map +1 -0
- package/dist/validators/set.js +51 -0
- package/dist/validators/set.js.map +1 -0
- package/dist/validators/string-ultra.d.ts +49 -0
- package/dist/validators/string-ultra.d.ts.map +1 -0
- package/dist/validators/string-ultra.js +217 -0
- package/dist/validators/string-ultra.js.map +1 -0
- package/dist/validators/string.d.ts +109 -0
- package/dist/validators/string.d.ts.map +1 -0
- package/dist/validators/string.js +242 -0
- package/dist/validators/string.js.map +1 -0
- package/dist/validators/symbol.d.ts +24 -0
- package/dist/validators/symbol.d.ts.map +1 -0
- package/dist/validators/symbol.js +42 -0
- package/dist/validators/symbol.js.map +1 -0
- package/dist/validators/tuple.d.ts +31 -0
- package/dist/validators/tuple.d.ts.map +1 -0
- package/dist/validators/tuple.js +55 -0
- package/dist/validators/tuple.js.map +1 -0
- package/dist/validators/union-optimized.d.ts +15 -0
- package/dist/validators/union-optimized.d.ts.map +1 -0
- package/dist/validators/union-optimized.js +92 -0
- package/dist/validators/union-optimized.js.map +1 -0
- package/dist/validators/union.d.ts +33 -0
- package/dist/validators/union.d.ts.map +1 -0
- package/dist/validators/union.js +121 -0
- package/dist/validators/union.js.map +1 -0
- package/dist/validators/unknown.d.ts +19 -0
- package/dist/validators/unknown.d.ts.map +1 -0
- package/dist/validators/unknown.js +25 -0
- package/dist/validators/unknown.js.map +1 -0
- package/dist/validators/void.d.ts +19 -0
- package/dist/validators/void.d.ts.map +1 -0
- package/dist/validators/void.js +35 -0
- package/dist/validators/void.js.map +1 -0
- 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":"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","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;"]}
|
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/validators/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAczC;;GAEG;AACH,MAAM,OAAO,QAAY,SAAQ,OAAuB;IAGtD;;OAEG;IACH,YAAoB,MAA+B;QACjD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAI,aAAkC;QACjD,OAAO,IAAI,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,YAAY,CAAC,CAAC;QAC1E,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACtF,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7F,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7F,CAAC;QAED,uDAAuD;QACvD,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,wCAAwC;QACxE,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAO,CAAC;YAC5B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACnE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACrD,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,IAAI,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,MAAc,EAAE,OAAgB;QAClC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,MAAc,EAAE,OAAgB;QAClC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;YACd,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAc,EAAE,OAAgB;QACrC,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;YACd,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAgB;QACvB,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;YACd,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,UAAU;SAClD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAgB;QACrB,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,OAAO,IAAI,iCAAiC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAW,EAAE,GAAW,EAAE,OAAgB;QAChD,OAAO,IAAI,QAAQ,CAAC;YAClB,GAAG,IAAI,CAAC,MAAM;YACd,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,YAAY,EAAE,OAAO,IAAI,gCAAgC,GAAG,QAAQ,GAAG,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Configuration for array validator\n */\ninterface ArrayValidatorConfig<T> {\n readonly itemValidator: VldBase<unknown, T>;\n readonly minLength?: number;\n readonly maxLength?: number;\n readonly exactLength?: number;\n readonly unique?: boolean;\n readonly errorMessage?: string;\n}\n\n/**\n * Immutable array validator with chainable methods\n */\nexport class VldArray<T> extends VldBase<unknown[], T[]> {\n private readonly config: ArrayValidatorConfig<T>;\n \n /**\n * Private constructor to enforce immutability\n */\n private constructor(config: ArrayValidatorConfig<T>) {\n super();\n this.config = config;\n }\n \n /**\n * Create a new array validator\n */\n static create<T>(itemValidator: VldBase<unknown, T>): VldArray<T> {\n return new VldArray({ itemValidator });\n }\n \n /**\n * Parse and validate an array value\n */\n parse(value: unknown): T[] {\n if (!Array.isArray(value)) {\n throw new Error(this.config.errorMessage || getMessages().invalidArray);\n }\n \n // Validate length constraints\n if (this.config.exactLength !== undefined && value.length !== this.config.exactLength) {\n throw new Error(this.config.errorMessage || getMessages().arrayLength(this.config.exactLength));\n }\n \n if (this.config.minLength !== undefined && value.length < this.config.minLength) {\n throw new Error(this.config.errorMessage || getMessages().arrayMin(this.config.minLength));\n }\n \n if (this.config.maxLength !== undefined && value.length > this.config.maxLength) {\n throw new Error(this.config.errorMessage || getMessages().arrayMax(this.config.maxLength));\n }\n \n // Validate each item with optimized loop and safeParse\n const result: T[] = [];\n const length = value.length;\n \n for (let i = 0; i < length; i++) {\n const parseResult = this.config.itemValidator.safeParse(value[i]);\n if (!parseResult.success) {\n throw new Error(getMessages().arrayItem(i, parseResult.error.message));\n }\n result[i] = parseResult.data; // Direct assignment is faster than push\n }\n \n // Check uniqueness if required\n if (this.config.unique) {\n const seen = new Set<any>();\n for (const item of result) {\n const key = typeof item === 'object' ? JSON.stringify(item) : item;\n if (seen.has(key)) {\n throw new Error('Array must contain unique items');\n }\n seen.add(key);\n }\n }\n \n return result;\n }\n \n /**\n * Safely parse and validate an array value\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 /**\n * Create a new validator with minimum length constraint\n */\n min(length: number, message?: string): VldArray<T> {\n return new VldArray({\n ...this.config,\n minLength: length,\n errorMessage: message || getMessages().arrayMin(length)\n });\n }\n \n /**\n * Create a new validator with maximum length constraint\n */\n max(length: number, message?: string): VldArray<T> {\n return new VldArray({\n ...this.config,\n maxLength: length,\n errorMessage: message || getMessages().arrayMax(length)\n });\n }\n \n /**\n * Create a new validator with exact length constraint\n */\n length(length: number, message?: string): VldArray<T> {\n return new VldArray({\n ...this.config,\n exactLength: length,\n minLength: undefined,\n maxLength: undefined,\n errorMessage: message || getMessages().arrayLength(length)\n });\n }\n \n /**\n * Create a new validator that ensures array is not empty\n */\n nonempty(message?: string): VldArray<T> {\n return new VldArray({\n ...this.config,\n minLength: 1,\n errorMessage: message || getMessages().arrayEmpty\n });\n }\n \n /**\n * Create a new validator that ensures array contains unique items\n */\n unique(message?: string): VldArray<T> {\n return new VldArray({\n ...this.config,\n unique: true,\n errorMessage: message || 'Array must contain unique items'\n });\n }\n \n /**\n * Create a new validator with a range constraint for length\n */\n between(min: number, max: number, message?: string): VldArray<T> {\n return new VldArray({\n ...this.config,\n minLength: min,\n maxLength: max,\n errorMessage: message || `Array length must be between ${min} and ${max}`\n });\n }\n}"]}
|