@oxog/vld 1.3.1 → 1.4.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 +49 -0
- package/README.md +1129 -1128
- package/dist/coercion/bigint.js +1 -1
- package/dist/coercion/boolean.js +1 -1
- package/dist/coercion/date.js +1 -1
- package/dist/coercion/number.d.ts.map +1 -1
- package/dist/coercion/number.js +20 -4
- package/dist/coercion/number.js.map +1 -1
- package/dist/coercion/string.d.ts.map +1 -1
- package/dist/coercion/string.js +9 -73
- package/dist/coercion/string.js.map +1 -1
- package/dist/index.d.ts +593 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -5
- package/dist/index.js.map +1 -1
- package/dist/locales/af.d.ts.map +1 -1
- package/dist/locales/af.js +18 -1
- package/dist/locales/af.js.map +1 -1
- package/dist/locales/ar.d.ts.map +1 -1
- package/dist/locales/ar.js +18 -1
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/backup-en.d.ts +3 -0
- package/dist/locales/backup-en.d.ts.map +1 -0
- package/dist/locales/backup-en.js +105 -0
- package/dist/locales/backup-en.js.map +1 -0
- package/dist/locales/bn.d.ts.map +1 -1
- package/dist/locales/bn.js +18 -1
- package/dist/locales/bn.js.map +1 -1
- package/dist/locales/da.d.ts.map +1 -1
- package/dist/locales/da.js +18 -1
- package/dist/locales/da.js.map +1 -1
- package/dist/locales/de.d.ts.map +1 -1
- package/dist/locales/de.js +18 -1
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/en.js +18 -1
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es-MX.d.ts.map +1 -1
- package/dist/locales/es-MX.js +17 -1
- package/dist/locales/es-MX.js.map +1 -1
- package/dist/locales/es.d.ts.map +1 -1
- package/dist/locales/es.js +18 -1
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/fi.d.ts.map +1 -1
- package/dist/locales/fi.js +18 -1
- package/dist/locales/fi.js.map +1 -1
- package/dist/locales/fr.d.ts.map +1 -1
- package/dist/locales/fr.js +18 -1
- package/dist/locales/fr.js.map +1 -1
- package/dist/locales/hi.d.ts.map +1 -1
- package/dist/locales/hi.js +18 -1
- package/dist/locales/hi.js.map +1 -1
- package/dist/locales/id.d.ts.map +1 -1
- package/dist/locales/id.js +18 -1
- package/dist/locales/id.js.map +1 -1
- package/dist/locales/it.d.ts.map +1 -1
- package/dist/locales/it.js +18 -1
- package/dist/locales/it.js.map +1 -1
- package/dist/locales/ja.d.ts.map +1 -1
- package/dist/locales/ja.js +18 -1
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.d.ts.map +1 -1
- package/dist/locales/ko.js +18 -1
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/nl.d.ts.map +1 -1
- package/dist/locales/nl.js +18 -1
- package/dist/locales/nl.js.map +1 -1
- package/dist/locales/no.d.ts.map +1 -1
- package/dist/locales/no.js +18 -1
- package/dist/locales/no.js.map +1 -1
- package/dist/locales/pl.d.ts.map +1 -1
- package/dist/locales/pl.js +18 -1
- package/dist/locales/pl.js.map +1 -1
- package/dist/locales/pt-BR.d.ts.map +1 -1
- package/dist/locales/pt-BR.js +18 -1
- package/dist/locales/pt-BR.js.map +1 -1
- package/dist/locales/pt.d.ts.map +1 -1
- package/dist/locales/pt.js +18 -1
- package/dist/locales/pt.js.map +1 -1
- package/dist/locales/ru.d.ts.map +1 -1
- package/dist/locales/ru.js +18 -1
- package/dist/locales/ru.js.map +1 -1
- package/dist/locales/sv.d.ts.map +1 -1
- package/dist/locales/sv.js +18 -1
- package/dist/locales/sv.js.map +1 -1
- package/dist/locales/sw.d.ts.map +1 -1
- package/dist/locales/sw.js +18 -1
- package/dist/locales/sw.js.map +1 -1
- package/dist/locales/th.d.ts.map +1 -1
- package/dist/locales/th.js +18 -1
- package/dist/locales/th.js.map +1 -1
- package/dist/locales/tr.d.ts.map +1 -1
- package/dist/locales/tr.js +18 -1
- package/dist/locales/tr.js.map +1 -1
- package/dist/locales/types.d.ts +13 -0
- package/dist/locales/types.d.ts.map +1 -1
- package/dist/locales/types.js.map +1 -1
- package/dist/locales/vi.d.ts.map +1 -1
- package/dist/locales/vi.js +18 -1
- package/dist/locales/vi.js.map +1 -1
- package/dist/locales/zh.d.ts.map +1 -1
- package/dist/locales/zh.js +18 -1
- package/dist/locales/zh.js.map +1 -1
- package/dist/utils/codec-utils.d.ts +2 -0
- package/dist/utils/codec-utils.d.ts.map +1 -1
- package/dist/utils/codec-utils.js +22 -4
- package/dist/utils/codec-utils.js.map +1 -1
- package/dist/utils/deep-merge.d.ts +2 -0
- package/dist/utils/deep-merge.d.ts.map +1 -1
- package/dist/utils/deep-merge.js +22 -39
- package/dist/utils/deep-merge.js.map +1 -1
- package/dist/utils/ip-validation.d.ts +11 -0
- package/dist/utils/ip-validation.d.ts.map +1 -0
- package/dist/utils/ip-validation.js +78 -0
- package/dist/utils/ip-validation.js.map +1 -0
- package/dist/utils/security.d.ts +12 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +61 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/validators/array.d.ts +3 -1
- package/dist/validators/array.d.ts.map +1 -1
- package/dist/validators/array.js +41 -15
- package/dist/validators/array.js.map +1 -1
- package/dist/validators/base.d.ts +131 -0
- package/dist/validators/base.d.ts.map +1 -1
- package/dist/validators/base.js +247 -1
- package/dist/validators/base.js.map +1 -1
- package/dist/validators/base64.js +1 -1
- package/dist/validators/bigint.d.ts +20 -0
- package/dist/validators/bigint.d.ts.map +1 -1
- package/dist/validators/bigint.js +39 -1
- package/dist/validators/bigint.js.map +1 -1
- package/dist/validators/boolean.js +29 -1
- package/dist/validators/boolean.js.map +1 -1
- package/dist/validators/codec.js +1 -1
- package/dist/validators/custom.d.ts +47 -0
- package/dist/validators/custom.d.ts.map +1 -0
- package/dist/validators/custom.js +50 -0
- package/dist/validators/custom.js.map +1 -0
- package/dist/validators/date.d.ts +16 -0
- package/dist/validators/date.d.ts.map +1 -1
- package/dist/validators/date.js +62 -7
- package/dist/validators/date.js.map +1 -1
- package/dist/validators/discriminated-union.d.ts +29 -0
- package/dist/validators/discriminated-union.d.ts.map +1 -0
- package/dist/validators/discriminated-union.js +98 -0
- package/dist/validators/discriminated-union.js.map +1 -0
- package/dist/validators/enum.d.ts +10 -0
- package/dist/validators/enum.d.ts.map +1 -1
- package/dist/validators/enum.js +38 -1
- package/dist/validators/enum.js.map +1 -1
- package/dist/validators/file.d.ts +57 -0
- package/dist/validators/file.d.ts.map +1 -0
- package/dist/validators/file.js +114 -0
- package/dist/validators/file.js.map +1 -0
- package/dist/validators/function.d.ts +26 -0
- package/dist/validators/function.d.ts.map +1 -0
- package/dist/validators/function.js +45 -0
- package/dist/validators/function.js.map +1 -0
- package/dist/validators/hex.d.ts.map +1 -1
- package/dist/validators/hex.js +3 -2
- package/dist/validators/hex.js.map +1 -1
- package/dist/validators/index.d.ts +18 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +16 -1
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/intersection.d.ts.map +1 -1
- package/dist/validators/intersection.js +15 -8
- package/dist/validators/intersection.js.map +1 -1
- package/dist/validators/json.d.ts +26 -0
- package/dist/validators/json.d.ts.map +1 -0
- package/dist/validators/json.js +64 -0
- package/dist/validators/json.js.map +1 -0
- package/dist/validators/lazy.d.ts +28 -0
- package/dist/validators/lazy.d.ts.map +1 -0
- package/dist/validators/lazy.js +42 -0
- package/dist/validators/lazy.js.map +1 -0
- package/dist/validators/literal.js +1 -1
- package/dist/validators/map.js +1 -1
- package/dist/validators/nan.d.ts +17 -0
- package/dist/validators/nan.d.ts.map +1 -0
- package/dist/validators/nan.js +32 -0
- package/dist/validators/nan.js.map +1 -0
- package/dist/validators/never.js +1 -1
- package/dist/validators/null.d.ts +16 -0
- package/dist/validators/null.d.ts.map +1 -0
- package/dist/validators/null.js +31 -0
- package/dist/validators/null.js.map +1 -0
- package/dist/validators/number.d.ts +22 -0
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/number.js +47 -8
- package/dist/validators/number.js.map +1 -1
- package/dist/validators/object.d.ts +32 -0
- package/dist/validators/object.d.ts.map +1 -1
- package/dist/validators/object.js +125 -8
- package/dist/validators/object.js.map +1 -1
- package/dist/validators/record.d.ts +15 -2
- package/dist/validators/record.d.ts.map +1 -1
- package/dist/validators/record.js +74 -4
- package/dist/validators/record.js.map +1 -1
- package/dist/validators/set.js +1 -1
- package/dist/validators/string-bool.d.ts +61 -0
- package/dist/validators/string-bool.d.ts.map +1 -0
- package/dist/validators/string-bool.js +127 -0
- package/dist/validators/string-bool.js.map +1 -0
- package/dist/validators/string-formats.d.ts +97 -0
- package/dist/validators/string-formats.d.ts.map +1 -0
- package/dist/validators/string-formats.js +120 -0
- package/dist/validators/string-formats.js.map +1 -0
- package/dist/validators/string.d.ts.map +1 -1
- package/dist/validators/string.js +2 -73
- package/dist/validators/string.js.map +1 -1
- package/dist/validators/symbol.js +1 -1
- package/dist/validators/template-literal.d.ts +32 -0
- package/dist/validators/template-literal.d.ts.map +1 -0
- package/dist/validators/template-literal.js +101 -0
- package/dist/validators/template-literal.js.map +1 -0
- package/dist/validators/tuple.js +1 -1
- package/dist/validators/uint8array.d.ts +21 -4
- package/dist/validators/uint8array.d.ts.map +1 -1
- package/dist/validators/uint8array.js +34 -23
- package/dist/validators/uint8array.js.map +1 -1
- package/dist/validators/undefined.d.ts +16 -0
- package/dist/validators/undefined.d.ts.map +1 -0
- package/dist/validators/undefined.js +31 -0
- package/dist/validators/undefined.js.map +1 -0
- package/dist/validators/union.d.ts +2 -0
- package/dist/validators/union.d.ts.map +1 -1
- package/dist/validators/union.js +15 -21
- package/dist/validators/union.js.map +1 -1
- package/dist/validators/void.js +1 -1
- package/dist/validators/xor.d.ts +23 -0
- package/dist/validators/xor.d.ts.map +1 -0
- package/dist/validators/xor.js +64 -0
- package/dist/validators/xor.js.map +1 -0
- package/package.json +2 -2
- package/dist/index-new.d.ts.map +0 -1
- package/dist/locales.d.ts +0 -54
- package/dist/locales.d.ts.map +0 -1
- package/dist/locales.js +0 -732
- package/dist/locales.js.map +0 -1
- package/dist/validators/object-optimized.d.ts +0 -23
- package/dist/validators/object-optimized.d.ts.map +0 -1
- package/dist/validators/object-optimized.js +0 -179
- package/dist/validators/object-optimized.js.map +0 -1
- package/dist/validators/object-ultra.d.ts +0 -34
- package/dist/validators/object-ultra.d.ts.map +0 -1
- package/dist/validators/object-ultra.js +0 -175
- package/dist/validators/object-ultra.js.map +0 -1
- package/dist/validators/string-ultra.d.ts +0 -49
- package/dist/validators/string-ultra.d.ts.map +0 -1
- package/dist/validators/string-ultra.js +0 -217
- package/dist/validators/string-ultra.js.map +0 -1
- package/dist/validators/union-optimized.d.ts +0 -15
- package/dist/validators/union-optimized.d.ts.map +0 -1
- package/dist/validators/union-optimized.js +0 -92
- package/dist/validators/union-optimized.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"object-ultra.js","sourceRoot":"","sources":["../../src/validators/object-ultra.ts"],"names":[],"mappings":"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","sourcesContent":["import { VldBase, ParseResult, VldOptional } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Configuration for ultra-optimized object validator\n */\ninterface ObjectValidatorConfig<T extends Record<string, any>> {\n readonly shape: { readonly [K in keyof T]: VldBase<unknown, T[K]> };\n readonly strict?: boolean;\n readonly passthrough?: boolean;\n readonly errorMessage?: string;\n}\n\n/**\n * Ultra-optimized object validator for maximum performance\n * Features aggressive optimizations for speed over flexibility\n */\nexport class VldObjectUltra<T extends Record<string, any>> extends VldBase<unknown, T> {\n private readonly config: ObjectValidatorConfig<T>;\n private readonly shapeKeys: string[];\n private readonly validators: VldBase<unknown, any>[];\n private readonly keysLength: number;\n \n // Pre-computed validation function for hot path\n private readonly fastValidate: (obj: Record<string, unknown>) => T;\n \n private constructor(config: ObjectValidatorConfig<T>) {\n super();\n this.config = config;\n this.shapeKeys = Object.keys(config.shape);\n this.validators = this.shapeKeys.map(key => config.shape[key]);\n this.keysLength = this.shapeKeys.length;\n \n // Pre-compile optimized validation function\n this.fastValidate = this.createFastValidator();\n }\n \n /**\n * Create ultra-fast validator using direct property access\n */\n private createFastValidator(): (obj: Record<string, unknown>) => T {\n const keys = this.shapeKeys;\n const validators = this.validators;\n const length = this.keysLength;\n \n // Return optimized function with direct property access\n return (obj: Record<string, unknown>): T => {\n const result: any = {};\n \n // Unrolled loop for small objects (most common case)\n if (length <= 4) {\n // Manual unrolling for 1-4 properties\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n const validator = validators[i];\n const value = obj[key];\n \n // Inline fast-path validation\n if (validator.constructor.name === 'VldString') {\n if (typeof value !== 'string') {\n throw new Error(`Field ${key}: Expected string`);\n }\n result[key] = value;\n } else if (validator.constructor.name === 'VldNumber') {\n if (typeof value !== 'number' || isNaN(value)) {\n throw new Error(`Field ${key}: Expected number`);\n }\n result[key] = value;\n } else if (validator.constructor.name === 'VldBoolean') {\n if (typeof value !== 'boolean') {\n throw new Error(`Field ${key}: Expected boolean`);\n }\n result[key] = value;\n } else if (validator.constructor.name === 'VldDate') {\n if (!(value instanceof Date)) {\n throw new Error(`Field ${key}: Expected date`);\n }\n result[key] = value;\n } else {\n // Fallback to safeParse for complex validators\n const parseResult = validator.safeParse(value);\n if (!parseResult.success) {\n throw parseResult.error;\n }\n result[key] = parseResult.data;\n }\n }\n } else {\n // Standard loop for larger objects\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n const validator = validators[i];\n const value = obj[key];\n \n const parseResult = validator.safeParse(value);\n if (!parseResult.success) {\n throw new Error(getMessages().objectField(key, parseResult.error.message));\n }\n result[key] = parseResult.data;\n }\n }\n \n return result as T;\n };\n }\n \n static create<T extends Record<string, any>>(\n shape: { [K in keyof T]: VldBase<unknown, T[K]> }\n ): VldObjectUltra<T> {\n return new VldObjectUltra({ shape });\n }\n \n parse(value: unknown): T {\n // Ultra-fast type check\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new Error(this.config.errorMessage || getMessages().invalidObject);\n }\n \n return this.fastValidate(value as Record<string, unknown>);\n }\n \n safeParse(value: unknown): ParseResult<T> {\n // Ultra-fast type check\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return {\n success: false,\n error: new Error(this.config.errorMessage || getMessages().invalidObject)\n };\n }\n \n try {\n const result = this.fastValidate(value as Record<string, unknown>);\n return { success: true, data: result };\n } catch (error) {\n return { success: false, error: error as Error };\n }\n }\n \n // Minimal set of chainable methods for performance\n strict(message?: string): VldObjectUltra<T> {\n return new VldObjectUltra({\n ...this.config,\n strict: true,\n passthrough: false,\n errorMessage: message\n });\n }\n \n passthrough(): VldObjectUltra<T> {\n return new VldObjectUltra({\n ...this.config,\n strict: false,\n passthrough: true\n });\n }\n \n partial(): VldObjectUltra<{ [K in keyof T]?: T[K] }> {\n const partialShape: any = {};\n for (const key in this.config.shape) {\n partialShape[key] = new VldOptional(this.config.shape[key]);\n }\n return new VldObjectUltra({ \n ...this.config, \n shape: partialShape \n }) as any;\n }\n \n pick<K extends keyof T>(...keys: K[]): VldObjectUltra<Pick<T, K>> {\n const pickedShape: any = {};\n for (const key of keys) {\n if (key in this.config.shape) {\n pickedShape[key] = this.config.shape[key];\n }\n }\n return new VldObjectUltra({ \n ...this.config, \n shape: pickedShape \n });\n }\n \n omit<K extends keyof T>(...keys: K[]): VldObjectUltra<Omit<T, K>> {\n const omittedShape: any = {};\n const keysToOmit = new Set(keys);\n for (const key in this.config.shape) {\n if (!keysToOmit.has(key as any)) {\n omittedShape[key] = this.config.shape[key];\n }\n }\n return new VldObjectUltra({ \n ...this.config, \n shape: omittedShape \n });\n }\n \n extend<U extends Record<string, any>>(\n extension: { [K in keyof U]: VldBase<unknown, U[K]> }\n ): VldObjectUltra<T & U> {\n return new VldObjectUltra({\n ...this.config,\n shape: { ...this.config.shape, ...extension } as any\n });\n }\n \n merge<U extends Record<string, any>>(\n other: VldObjectUltra<U>\n ): VldObjectUltra<T & U> {\n return new VldObjectUltra({\n ...this.config,\n shape: { ...this.config.shape, ...other.config.shape } as any\n });\n }\n}"]}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
2
|
-
/**
|
|
3
|
-
* Ultra-optimized string validator with pre-compiled validations
|
|
4
|
-
*/
|
|
5
|
-
export declare class VldStringUltra extends VldBase<unknown, string> {
|
|
6
|
-
private readonly minLength?;
|
|
7
|
-
private readonly maxLength?;
|
|
8
|
-
private readonly exactLength?;
|
|
9
|
-
private readonly pattern?;
|
|
10
|
-
private readonly isEmail?;
|
|
11
|
-
private readonly isUrl?;
|
|
12
|
-
private readonly transform?;
|
|
13
|
-
private readonly customValidations;
|
|
14
|
-
private static readonly EMAIL_REGEX;
|
|
15
|
-
private static readonly URL_REGEX;
|
|
16
|
-
private constructor();
|
|
17
|
-
static create(): VldStringUltra;
|
|
18
|
-
/**
|
|
19
|
-
* Ultra-fast string validation with minimal overhead
|
|
20
|
-
*/
|
|
21
|
-
parse(value: unknown): string;
|
|
22
|
-
safeParse(value: unknown): ParseResult<string>;
|
|
23
|
-
min(length: number): VldStringUltra;
|
|
24
|
-
max(length: number): VldStringUltra;
|
|
25
|
-
length(length: number): VldStringUltra;
|
|
26
|
-
/**
|
|
27
|
-
* Ultra-fast email validation using simplified regex
|
|
28
|
-
*/
|
|
29
|
-
email(): VldStringUltra;
|
|
30
|
-
/**
|
|
31
|
-
* Ultra-fast URL validation
|
|
32
|
-
*/
|
|
33
|
-
url(): VldStringUltra;
|
|
34
|
-
/**
|
|
35
|
-
* Pattern matching with custom regex
|
|
36
|
-
*/
|
|
37
|
-
regex(pattern: RegExp): VldStringUltra;
|
|
38
|
-
/**
|
|
39
|
-
* Transform string after validation
|
|
40
|
-
*/
|
|
41
|
-
trim(): VldStringUltra;
|
|
42
|
-
toLowerCase(): VldStringUltra;
|
|
43
|
-
toUpperCase(): VldStringUltra;
|
|
44
|
-
nonempty(): VldStringUltra;
|
|
45
|
-
startsWith(prefix: string): VldStringUltra;
|
|
46
|
-
endsWith(suffix: string): VldStringUltra;
|
|
47
|
-
includes(substring: string): VldStringUltra;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=string-ultra.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-ultra.d.ts","sourceRoot":"","sources":["../../src/validators/string-ultra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG9C;;GAEG;AACH,qBAAa,cAAe,SAAQ,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyC;IAG3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAGnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAE1D,OAAO;IAmBP,MAAM,CAAC,MAAM,IAAI,cAAc;IAI/B;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAwD7B,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;IAS9C,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAYnC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAYnC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAYtC;;OAEG;IACH,KAAK,IAAI,cAAc;IAYvB;;OAEG;IACH,GAAG,IAAI,cAAc;IAYrB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAYtC;;OAEG;IACH,IAAI,IAAI,cAAc;IAetB,WAAW,IAAI,cAAc;IAe7B,WAAW,IAAI,cAAc;IAe7B,QAAQ,IAAI,cAAc;IAI1B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAK1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc;IAKxC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;CAI5C"}
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { getMessages } from '../locales.js';
|
|
3
|
-
/**
|
|
4
|
-
* Ultra-optimized string validator with pre-compiled validations
|
|
5
|
-
*/
|
|
6
|
-
export class VldStringUltra extends VldBase {
|
|
7
|
-
constructor(config = {}) {
|
|
8
|
-
super();
|
|
9
|
-
this.customValidations = [];
|
|
10
|
-
this.minLength = config.minLength;
|
|
11
|
-
this.maxLength = config.maxLength;
|
|
12
|
-
this.exactLength = config.exactLength;
|
|
13
|
-
this.pattern = config.pattern;
|
|
14
|
-
this.isEmail = config.isEmail;
|
|
15
|
-
this.isUrl = config.isUrl;
|
|
16
|
-
this.transform = config.transform;
|
|
17
|
-
}
|
|
18
|
-
static create() {
|
|
19
|
-
return new VldStringUltra();
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Ultra-fast string validation with minimal overhead
|
|
23
|
-
*/
|
|
24
|
-
parse(value) {
|
|
25
|
-
// Ultra-fast type check
|
|
26
|
-
if (typeof value !== 'string') {
|
|
27
|
-
throw new Error(getMessages().invalidString);
|
|
28
|
-
}
|
|
29
|
-
let str = value;
|
|
30
|
-
// Apply transform first if present
|
|
31
|
-
if (this.transform) {
|
|
32
|
-
str = this.transform(str);
|
|
33
|
-
}
|
|
34
|
-
const len = str.length;
|
|
35
|
-
// Fast length checks with bitwise operations for small numbers
|
|
36
|
-
if (this.exactLength !== undefined && len !== this.exactLength) {
|
|
37
|
-
throw new Error(getMessages().stringLength(this.exactLength));
|
|
38
|
-
}
|
|
39
|
-
if (this.minLength !== undefined && len < this.minLength) {
|
|
40
|
-
throw new Error(getMessages().stringMinLength(this.minLength));
|
|
41
|
-
}
|
|
42
|
-
if (this.maxLength !== undefined && len > this.maxLength) {
|
|
43
|
-
throw new Error(getMessages().stringMaxLength(this.maxLength));
|
|
44
|
-
}
|
|
45
|
-
// Ultra-fast email validation (simplified for speed)
|
|
46
|
-
if (this.isEmail && !VldStringUltra.EMAIL_REGEX.test(str)) {
|
|
47
|
-
throw new Error(getMessages().invalidEmail);
|
|
48
|
-
}
|
|
49
|
-
// Ultra-fast URL validation
|
|
50
|
-
if (this.isUrl && !VldStringUltra.URL_REGEX.test(str)) {
|
|
51
|
-
throw new Error(getMessages().invalidUrl);
|
|
52
|
-
}
|
|
53
|
-
// Pattern matching
|
|
54
|
-
if (this.pattern && !this.pattern.test(str)) {
|
|
55
|
-
throw new Error(getMessages().stringPattern);
|
|
56
|
-
}
|
|
57
|
-
// Custom validations (loop unrolling for small arrays)
|
|
58
|
-
const validationsLength = this.customValidations.length;
|
|
59
|
-
if (validationsLength > 0) {
|
|
60
|
-
for (let i = 0; i < validationsLength; i++) {
|
|
61
|
-
if (!this.customValidations[i](str)) {
|
|
62
|
-
throw new Error(getMessages().customValidation);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return str;
|
|
67
|
-
}
|
|
68
|
-
safeParse(value) {
|
|
69
|
-
try {
|
|
70
|
-
return { success: true, data: this.parse(value) };
|
|
71
|
-
}
|
|
72
|
-
catch (error) {
|
|
73
|
-
return { success: false, error: error };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// Chainable methods with ultra-fast creation
|
|
77
|
-
min(length) {
|
|
78
|
-
return new VldStringUltra({
|
|
79
|
-
minLength: length,
|
|
80
|
-
maxLength: this.maxLength,
|
|
81
|
-
exactLength: this.exactLength,
|
|
82
|
-
pattern: this.pattern,
|
|
83
|
-
isEmail: this.isEmail,
|
|
84
|
-
isUrl: this.isUrl,
|
|
85
|
-
transform: this.transform
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
max(length) {
|
|
89
|
-
return new VldStringUltra({
|
|
90
|
-
minLength: this.minLength,
|
|
91
|
-
maxLength: length,
|
|
92
|
-
exactLength: this.exactLength,
|
|
93
|
-
pattern: this.pattern,
|
|
94
|
-
isEmail: this.isEmail,
|
|
95
|
-
isUrl: this.isUrl,
|
|
96
|
-
transform: this.transform
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
length(length) {
|
|
100
|
-
return new VldStringUltra({
|
|
101
|
-
minLength: this.minLength,
|
|
102
|
-
maxLength: this.maxLength,
|
|
103
|
-
exactLength: length,
|
|
104
|
-
pattern: this.pattern,
|
|
105
|
-
isEmail: this.isEmail,
|
|
106
|
-
isUrl: this.isUrl,
|
|
107
|
-
transform: this.transform
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Ultra-fast email validation using simplified regex
|
|
112
|
-
*/
|
|
113
|
-
email() {
|
|
114
|
-
return new VldStringUltra({
|
|
115
|
-
minLength: this.minLength,
|
|
116
|
-
maxLength: this.maxLength,
|
|
117
|
-
exactLength: this.exactLength,
|
|
118
|
-
pattern: this.pattern,
|
|
119
|
-
isEmail: true,
|
|
120
|
-
isUrl: this.isUrl,
|
|
121
|
-
transform: this.transform
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Ultra-fast URL validation
|
|
126
|
-
*/
|
|
127
|
-
url() {
|
|
128
|
-
return new VldStringUltra({
|
|
129
|
-
minLength: this.minLength,
|
|
130
|
-
maxLength: this.maxLength,
|
|
131
|
-
exactLength: this.exactLength,
|
|
132
|
-
pattern: this.pattern,
|
|
133
|
-
isEmail: this.isEmail,
|
|
134
|
-
isUrl: true,
|
|
135
|
-
transform: this.transform
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Pattern matching with custom regex
|
|
140
|
-
*/
|
|
141
|
-
regex(pattern) {
|
|
142
|
-
return new VldStringUltra({
|
|
143
|
-
minLength: this.minLength,
|
|
144
|
-
maxLength: this.maxLength,
|
|
145
|
-
exactLength: this.exactLength,
|
|
146
|
-
pattern: pattern,
|
|
147
|
-
isEmail: this.isEmail,
|
|
148
|
-
isUrl: this.isUrl,
|
|
149
|
-
transform: this.transform
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Transform string after validation
|
|
154
|
-
*/
|
|
155
|
-
trim() {
|
|
156
|
-
const currentTransform = this.transform;
|
|
157
|
-
return new VldStringUltra({
|
|
158
|
-
minLength: this.minLength,
|
|
159
|
-
maxLength: this.maxLength,
|
|
160
|
-
exactLength: this.exactLength,
|
|
161
|
-
pattern: this.pattern,
|
|
162
|
-
isEmail: this.isEmail,
|
|
163
|
-
isUrl: this.isUrl,
|
|
164
|
-
transform: currentTransform ?
|
|
165
|
-
(str) => currentTransform(str).trim() :
|
|
166
|
-
(str) => str.trim()
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
toLowerCase() {
|
|
170
|
-
const currentTransform = this.transform;
|
|
171
|
-
return new VldStringUltra({
|
|
172
|
-
minLength: this.minLength,
|
|
173
|
-
maxLength: this.maxLength,
|
|
174
|
-
exactLength: this.exactLength,
|
|
175
|
-
pattern: this.pattern,
|
|
176
|
-
isEmail: this.isEmail,
|
|
177
|
-
isUrl: this.isUrl,
|
|
178
|
-
transform: currentTransform ?
|
|
179
|
-
(str) => currentTransform(str).toLowerCase() :
|
|
180
|
-
(str) => str.toLowerCase()
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
toUpperCase() {
|
|
184
|
-
const currentTransform = this.transform;
|
|
185
|
-
return new VldStringUltra({
|
|
186
|
-
minLength: this.minLength,
|
|
187
|
-
maxLength: this.maxLength,
|
|
188
|
-
exactLength: this.exactLength,
|
|
189
|
-
pattern: this.pattern,
|
|
190
|
-
isEmail: this.isEmail,
|
|
191
|
-
isUrl: this.isUrl,
|
|
192
|
-
transform: currentTransform ?
|
|
193
|
-
(str) => currentTransform(str).toUpperCase() :
|
|
194
|
-
(str) => str.toUpperCase()
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
nonempty() {
|
|
198
|
-
return this.min(1);
|
|
199
|
-
}
|
|
200
|
-
startsWith(prefix) {
|
|
201
|
-
this.customValidations.push((str) => str.startsWith(prefix));
|
|
202
|
-
return this;
|
|
203
|
-
}
|
|
204
|
-
endsWith(suffix) {
|
|
205
|
-
this.customValidations.push((str) => str.endsWith(suffix));
|
|
206
|
-
return this;
|
|
207
|
-
}
|
|
208
|
-
includes(substring) {
|
|
209
|
-
this.customValidations.push((str) => str.includes(substring));
|
|
210
|
-
return this;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
// Pre-compiled ultra-fast email regex (simplified but fast)
|
|
214
|
-
VldStringUltra.EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
215
|
-
// Pre-compiled URL regex
|
|
216
|
-
VldStringUltra.URL_REGEX = /^https?:\/\/[^\s]+$/;
|
|
217
|
-
//# sourceMappingURL=string-ultra.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string-ultra.js","sourceRoot":"","sources":["../../src/validators/string-ultra.ts"],"names":[],"mappings":"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","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Ultra-optimized string validator with pre-compiled validations\n */\nexport class VldStringUltra extends VldBase<unknown, string> {\n private readonly minLength?: number;\n private readonly maxLength?: number;\n private readonly exactLength?: number;\n private readonly pattern?: RegExp;\n private readonly isEmail?: boolean;\n private readonly isUrl?: boolean;\n private readonly transform?: (value: string) => string;\n private readonly customValidations: Array<(value: string) => boolean> = [];\n \n // Pre-compiled ultra-fast email regex (simplified but fast)\n private static readonly EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n \n // Pre-compiled URL regex\n private static readonly URL_REGEX = /^https?:\\/\\/[^\\s]+$/;\n \n private constructor(config: {\n minLength?: number;\n maxLength?: number;\n exactLength?: number;\n pattern?: RegExp;\n isEmail?: boolean;\n isUrl?: boolean;\n transform?: (value: string) => string;\n } = {}) {\n super();\n this.minLength = config.minLength;\n this.maxLength = config.maxLength;\n this.exactLength = config.exactLength;\n this.pattern = config.pattern;\n this.isEmail = config.isEmail;\n this.isUrl = config.isUrl;\n this.transform = config.transform;\n }\n \n static create(): VldStringUltra {\n return new VldStringUltra();\n }\n \n /**\n * Ultra-fast string validation with minimal overhead\n */\n parse(value: unknown): string {\n // Ultra-fast type check\n if (typeof value !== 'string') {\n throw new Error(getMessages().invalidString);\n }\n \n let str = value;\n \n // Apply transform first if present\n if (this.transform) {\n str = this.transform(str);\n }\n \n const len = str.length;\n \n // Fast length checks with bitwise operations for small numbers\n if (this.exactLength !== undefined && len !== this.exactLength) {\n throw new Error(getMessages().stringLength(this.exactLength));\n }\n \n if (this.minLength !== undefined && len < this.minLength) {\n throw new Error(getMessages().stringMinLength(this.minLength));\n }\n \n if (this.maxLength !== undefined && len > this.maxLength) {\n throw new Error(getMessages().stringMaxLength(this.maxLength));\n }\n \n // Ultra-fast email validation (simplified for speed)\n if (this.isEmail && !VldStringUltra.EMAIL_REGEX.test(str)) {\n throw new Error(getMessages().invalidEmail);\n }\n \n // Ultra-fast URL validation\n if (this.isUrl && !VldStringUltra.URL_REGEX.test(str)) {\n throw new Error(getMessages().invalidUrl);\n }\n \n // Pattern matching\n if (this.pattern && !this.pattern.test(str)) {\n throw new Error(getMessages().stringPattern);\n }\n \n // Custom validations (loop unrolling for small arrays)\n const validationsLength = this.customValidations.length;\n if (validationsLength > 0) {\n for (let i = 0; i < validationsLength; i++) {\n if (!this.customValidations[i](str)) {\n throw new Error(getMessages().customValidation);\n }\n }\n }\n \n return str;\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 with ultra-fast creation\n min(length: number): VldStringUltra {\n return new VldStringUltra({\n minLength: length,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: this.transform\n });\n }\n \n max(length: number): VldStringUltra {\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: length,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: this.transform\n });\n }\n \n length(length: number): VldStringUltra {\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: length,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: this.transform\n });\n }\n \n /**\n * Ultra-fast email validation using simplified regex\n */\n email(): VldStringUltra {\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: true,\n isUrl: this.isUrl,\n transform: this.transform\n });\n }\n \n /**\n * Ultra-fast URL validation\n */\n url(): VldStringUltra {\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: true,\n transform: this.transform\n });\n }\n \n /**\n * Pattern matching with custom regex\n */\n regex(pattern: RegExp): VldStringUltra {\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: this.transform\n });\n }\n \n /**\n * Transform string after validation\n */\n trim(): VldStringUltra {\n const currentTransform = this.transform;\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: currentTransform ? \n (str: string) => currentTransform(str).trim() : \n (str: string) => str.trim()\n });\n }\n \n toLowerCase(): VldStringUltra {\n const currentTransform = this.transform;\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: currentTransform ? \n (str: string) => currentTransform(str).toLowerCase() : \n (str: string) => str.toLowerCase()\n });\n }\n \n toUpperCase(): VldStringUltra {\n const currentTransform = this.transform;\n return new VldStringUltra({\n minLength: this.minLength,\n maxLength: this.maxLength,\n exactLength: this.exactLength,\n pattern: this.pattern,\n isEmail: this.isEmail,\n isUrl: this.isUrl,\n transform: currentTransform ? \n (str: string) => currentTransform(str).toUpperCase() : \n (str: string) => str.toUpperCase()\n });\n }\n \n nonempty(): VldStringUltra {\n return this.min(1);\n }\n \n startsWith(prefix: string): VldStringUltra {\n this.customValidations.push((str: string) => str.startsWith(prefix));\n return this;\n }\n \n endsWith(suffix: string): VldStringUltra {\n this.customValidations.push((str: string) => str.endsWith(suffix));\n return this;\n }\n \n includes(substring: string): VldStringUltra {\n this.customValidations.push((str: string) => str.includes(substring));\n return this;\n }\n}"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
2
|
-
/**
|
|
3
|
-
* Optimized union validator with better performance
|
|
4
|
-
*/
|
|
5
|
-
export declare class VldUnionOptimized<T extends readonly VldBase<any, any>[]> extends VldBase<unknown, T[number] extends VldBase<any, infer U> ? U : never> {
|
|
6
|
-
private readonly validators;
|
|
7
|
-
private readonly errorMessage?;
|
|
8
|
-
private readonly typeCheckers;
|
|
9
|
-
private constructor();
|
|
10
|
-
private createTypeChecker;
|
|
11
|
-
static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldUnionOptimized<T>;
|
|
12
|
-
parse(value: unknown): T[number] extends VldBase<any, infer U> ? U : never;
|
|
13
|
-
safeParse(value: unknown): ParseResult<T[number] extends VldBase<any, infer U> ? U : never>;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=union-optimized.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"union-optimized.d.ts","sourceRoot":"","sources":["../../src/validators/union-optimized.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG9C;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAE,SAAQ,OAAO,CACpF,OAAO,EACP,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CACpD;IACC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAI;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsD;IAEnF,OAAO;IAYP,OAAO,CAAC,iBAAiB;IAsBzB,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAI7F,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;IAgC1E,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAgC5F"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { getMessages } from '../locales.js';
|
|
3
|
-
/**
|
|
4
|
-
* Optimized union validator with better performance
|
|
5
|
-
*/
|
|
6
|
-
export class VldUnionOptimized extends VldBase {
|
|
7
|
-
constructor(validators, errorMessage) {
|
|
8
|
-
super();
|
|
9
|
-
this.validators = validators;
|
|
10
|
-
this.errorMessage = errorMessage;
|
|
11
|
-
this.typeCheckers = new Map();
|
|
12
|
-
// Pre-compile type checkers for common types
|
|
13
|
-
for (const validator of validators) {
|
|
14
|
-
this.typeCheckers.set(validator, this.createTypeChecker(validator));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
createTypeChecker(validator) {
|
|
18
|
-
// Quick type checks based on validator type
|
|
19
|
-
const className = validator.constructor.name;
|
|
20
|
-
switch (className) {
|
|
21
|
-
case 'VldString':
|
|
22
|
-
return (v) => typeof v === 'string';
|
|
23
|
-
case 'VldNumber':
|
|
24
|
-
return (v) => typeof v === 'number' && !isNaN(v);
|
|
25
|
-
case 'VldBoolean':
|
|
26
|
-
return (v) => typeof v === 'boolean';
|
|
27
|
-
case 'VldDate':
|
|
28
|
-
return (v) => v instanceof Date || (typeof v === 'string' && !isNaN(Date.parse(v)));
|
|
29
|
-
case 'VldArray':
|
|
30
|
-
return (v) => Array.isArray(v);
|
|
31
|
-
case 'VldObject':
|
|
32
|
-
return (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
33
|
-
default:
|
|
34
|
-
return () => true; // No quick check available
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
static create(...validators) {
|
|
38
|
-
return new VldUnionOptimized(validators);
|
|
39
|
-
}
|
|
40
|
-
parse(value) {
|
|
41
|
-
// Fast path: try validators that are likely to match based on type
|
|
42
|
-
for (const validator of this.validators) {
|
|
43
|
-
const typeChecker = this.typeCheckers.get(validator);
|
|
44
|
-
// Skip validators that definitely won't match
|
|
45
|
-
if (typeChecker && !typeChecker(value)) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
// Use safeParse to avoid try-catch overhead
|
|
49
|
-
const result = validator.safeParse(value);
|
|
50
|
-
if (result.success) {
|
|
51
|
-
return result.data;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Slow path: collect all errors
|
|
55
|
-
const errors = [];
|
|
56
|
-
for (const validator of this.validators) {
|
|
57
|
-
const result = validator.safeParse(value);
|
|
58
|
-
if (!result.success) {
|
|
59
|
-
errors.push(result.error.message);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
throw new Error(this.errorMessage ||
|
|
63
|
-
getMessages().unionNoMatch(errors));
|
|
64
|
-
}
|
|
65
|
-
safeParse(value) {
|
|
66
|
-
// Fast path with type checking
|
|
67
|
-
for (const validator of this.validators) {
|
|
68
|
-
const typeChecker = this.typeCheckers.get(validator);
|
|
69
|
-
if (typeChecker && !typeChecker(value)) {
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
const result = validator.safeParse(value);
|
|
73
|
-
if (result.success) {
|
|
74
|
-
return result;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// All failed
|
|
78
|
-
const errors = [];
|
|
79
|
-
for (const validator of this.validators) {
|
|
80
|
-
const result = validator.safeParse(value);
|
|
81
|
-
if (!result.success) {
|
|
82
|
-
errors.push(result.error.message);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return {
|
|
86
|
-
success: false,
|
|
87
|
-
error: new Error(this.errorMessage ||
|
|
88
|
-
getMessages().unionNoMatch(errors))
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=union-optimized.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"union-optimized.js","sourceRoot":"","sources":["../../src/validators/union-optimized.ts"],"names":[],"mappings":"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","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Optimized union validator with better performance\n */\nexport class VldUnionOptimized<T extends readonly VldBase<any, any>[]> extends VldBase<\n unknown,\n T[number] extends VldBase<any, infer U> ? U : never\n> {\n private readonly validators: T;\n private readonly errorMessage?: string;\n \n // Cache for type checking optimization\n private readonly typeCheckers: Map<VldBase<any, any>, (value: unknown) => boolean>;\n \n private constructor(validators: T, errorMessage?: string) {\n super();\n this.validators = validators;\n this.errorMessage = errorMessage;\n this.typeCheckers = new Map();\n \n // Pre-compile type checkers for common types\n for (const validator of validators) {\n this.typeCheckers.set(validator, this.createTypeChecker(validator));\n }\n }\n \n private createTypeChecker(validator: VldBase<any, any>): (value: unknown) => boolean {\n // Quick type checks based on validator type\n const className = validator.constructor.name;\n \n switch (className) {\n case 'VldString':\n return (v) => typeof v === 'string';\n case 'VldNumber':\n return (v) => typeof v === 'number' && !isNaN(v as number);\n case 'VldBoolean':\n return (v) => typeof v === 'boolean';\n case 'VldDate':\n return (v) => v instanceof Date || (typeof v === 'string' && !isNaN(Date.parse(v as string)));\n case 'VldArray':\n return (v) => Array.isArray(v);\n case 'VldObject':\n return (v) => typeof v === 'object' && v !== null && !Array.isArray(v);\n default:\n return () => true; // No quick check available\n }\n }\n \n static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldUnionOptimized<T> {\n return new VldUnionOptimized(validators);\n }\n \n parse(value: unknown): T[number] extends VldBase<any, infer U> ? U : never {\n // Fast path: try validators that are likely to match based on type\n for (const validator of this.validators) {\n const typeChecker = this.typeCheckers.get(validator);\n \n // Skip validators that definitely won't match\n if (typeChecker && !typeChecker(value)) {\n continue;\n }\n \n // Use safeParse to avoid try-catch overhead\n const result = validator.safeParse(value);\n if (result.success) {\n return result.data;\n }\n }\n \n // Slow path: collect all errors\n const errors: string[] = [];\n for (const validator of this.validators) {\n const result = validator.safeParse(value);\n if (!result.success) {\n errors.push(result.error.message);\n }\n }\n \n throw new Error(\n this.errorMessage || \n getMessages().unionNoMatch(errors)\n );\n }\n \n safeParse(value: unknown): ParseResult<T[number] extends VldBase<any, infer U> ? U : never> {\n // Fast path with type checking\n for (const validator of this.validators) {\n const typeChecker = this.typeCheckers.get(validator);\n \n if (typeChecker && !typeChecker(value)) {\n continue;\n }\n \n const result = validator.safeParse(value);\n if (result.success) {\n return result;\n }\n }\n \n // All failed\n const errors: string[] = [];\n for (const validator of this.validators) {\n const result = validator.safeParse(value);\n if (!result.success) {\n errors.push(result.error.message);\n }\n }\n \n return {\n success: false,\n error: new Error(\n this.errorMessage || \n getMessages().unionNoMatch(errors)\n )\n };\n }\n}"]}
|