@oxog/vld 1.4.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +449 -333
- package/README.md +1171 -1130
- package/dist/chunks/bigint-ZKkWLdmi.js +1628 -0
- package/dist/chunks/bigint-ZKkWLdmi.js.map +1 -0
- package/dist/{coercion/string.js → chunks/date-7Iz2BGsL.js} +271 -5
- package/dist/chunks/date-7Iz2BGsL.js.map +1 -0
- package/dist/chunks/index-BoV-4S1F.js +894 -0
- package/dist/chunks/index-BoV-4S1F.js.map +1 -0
- package/dist/chunks/index-eWXdjyyy.js +426 -0
- package/dist/chunks/index-eWXdjyyy.js.map +1 -0
- package/dist/chunks/json-nIhyRPOU.js +1934 -0
- package/dist/chunks/json-nIhyRPOU.js.map +1 -0
- package/dist/{validators/unknown.js → chunks/unknown-CjSRcELI.js} +6 -3
- package/dist/chunks/unknown-CjSRcELI.js.map +1 -0
- package/dist/cjs/errors.cjs +387 -0
- package/dist/cjs/errors.cjs.map +1 -0
- package/dist/cjs/index.cjs +9815 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/locales/index.cjs +2877 -0
- package/dist/cjs/locales/index.cjs.map +1 -0
- package/dist/cjs/locales/lazy.cjs +3169 -0
- package/dist/cjs/locales/lazy.cjs.map +1 -0
- package/dist/cjs/mini.cjs +7161 -0
- package/dist/cjs/mini.cjs.map +1 -0
- package/dist/cli/bin.d.ts +8 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.d.ts +11 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/validate.d.ts +11 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/index.d.ts +59 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/codecs/index.d.ts.map +1 -1
- package/dist/codecs/index.js +4 -256
- package/dist/codecs/index.js.map +1 -1
- package/dist/coercion/boolean.d.ts.map +1 -1
- package/dist/coercion/index.d.ts +11 -0
- package/dist/coercion/index.d.ts.map +1 -0
- package/dist/coercion/{bigint.js → index.js} +7 -4
- package/dist/coercion/index.js.map +1 -0
- package/dist/compat/emitter.d.ts +73 -0
- package/dist/compat/emitter.d.ts.map +1 -0
- package/dist/compat/emitter.js +181 -0
- package/dist/compat/emitter.js.map +1 -0
- package/dist/compat/index.d.ts +15 -0
- package/dist/compat/index.d.ts.map +1 -0
- package/dist/compat/result.d.ts +128 -0
- package/dist/compat/result.d.ts.map +1 -0
- package/dist/compat/result.js +171 -0
- package/dist/compat/result.js.map +1 -0
- package/dist/errors.d.ts +58 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +106 -15
- package/dist/errors.js.map +1 -1
- package/dist/events.d.ts +140 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +230 -103
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +29 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +405 -0
- package/dist/kernel.js.map +1 -0
- package/dist/locales/af.js +4 -2
- package/dist/locales/af.js.map +1 -1
- package/dist/locales/ar.js +4 -2
- package/dist/locales/ar.js.map +1 -1
- package/dist/locales/bn.js +4 -2
- package/dist/locales/bn.js.map +1 -1
- package/dist/locales/da.js +4 -2
- package/dist/locales/da.js.map +1 -1
- package/dist/locales/de.js +4 -2
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/en.js +4 -2
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es-MX.js +4 -2
- package/dist/locales/es-MX.js.map +1 -1
- package/dist/locales/es.js +4 -2
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/fi.js +4 -2
- package/dist/locales/fi.js.map +1 -1
- package/dist/locales/fr.js +4 -2
- package/dist/locales/fr.js.map +1 -1
- package/dist/locales/hi.js +4 -2
- package/dist/locales/hi.js.map +1 -1
- package/dist/locales/id.js +4 -2
- package/dist/locales/id.js.map +1 -1
- package/dist/locales/index.js +3 -91
- package/dist/locales/index.js.map +1 -1
- package/dist/locales/it.js +4 -2
- package/dist/locales/it.js.map +1 -1
- package/dist/locales/ja.js +4 -2
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +4 -2
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/lazy.d.ts +111 -0
- package/dist/locales/lazy.d.ts.map +1 -0
- package/dist/locales/lazy.js +220 -0
- package/dist/locales/lazy.js.map +1 -0
- package/dist/locales/nl.js +4 -2
- package/dist/locales/nl.js.map +1 -1
- package/dist/locales/no.js +4 -2
- package/dist/locales/no.js.map +1 -1
- package/dist/locales/pl.js +4 -2
- package/dist/locales/pl.js.map +1 -1
- package/dist/locales/pt-BR.js +4 -2
- package/dist/locales/pt-BR.js.map +1 -1
- package/dist/locales/pt.js +4 -2
- package/dist/locales/pt.js.map +1 -1
- package/dist/locales/ru.js +4 -2
- package/dist/locales/ru.js.map +1 -1
- package/dist/locales/sv.js +4 -2
- package/dist/locales/sv.js.map +1 -1
- package/dist/locales/sw.js +4 -2
- package/dist/locales/sw.js.map +1 -1
- package/dist/locales/th.js +4 -2
- package/dist/locales/th.js.map +1 -1
- package/dist/locales/tr.js +4 -2
- package/dist/locales/tr.js.map +1 -1
- package/dist/locales/vi.js +4 -2
- package/dist/locales/vi.js.map +1 -1
- package/dist/locales/zh.js +4 -2
- package/dist/locales/zh.js.map +1 -1
- package/dist/logger.d.ts +94 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/mini.d.ts +182 -0
- package/dist/mini.d.ts.map +1 -0
- package/dist/mini.js +132 -0
- package/dist/mini.js.map +1 -0
- package/dist/pigment.d.ts +124 -0
- package/dist/pigment.d.ts.map +1 -0
- package/dist/pigment.js +178 -0
- package/dist/pigment.js.map +1 -0
- package/dist/plugins/index.d.ts +8 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/types.d.ts +186 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/utils/codec-utils.d.ts.map +1 -1
- package/dist/utils/ip-validation.d.ts.map +1 -1
- package/dist/validators/base.d.ts +3 -0
- package/dist/validators/base.d.ts.map +1 -1
- package/dist/validators/index.js +5 -45
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/object.d.ts.map +1 -1
- package/dist/validators/template-literal.d.ts.map +1 -1
- package/package.json +153 -79
- package/dist/coercion/bigint.js.map +0 -1
- package/dist/coercion/boolean.js +0 -67
- package/dist/coercion/boolean.js.map +0 -1
- package/dist/coercion/date.js +0 -52
- package/dist/coercion/date.js.map +0 -1
- package/dist/coercion/number.js +0 -160
- package/dist/coercion/number.js.map +0 -1
- package/dist/coercion/string.js.map +0 -1
- package/dist/locales/backup-en.js +0 -105
- package/dist/locales/backup-en.js.map +0 -1
- package/dist/locales/types.js +0 -2
- package/dist/locales/types.js.map +0 -1
- package/dist/utils/codec-utils.js +0 -223
- package/dist/utils/codec-utils.js.map +0 -1
- package/dist/utils/deep-merge.js +0 -76
- package/dist/utils/deep-merge.js.map +0 -1
- package/dist/utils/ip-validation.js +0 -78
- package/dist/utils/ip-validation.js.map +0 -1
- package/dist/utils/security.js +0 -61
- package/dist/utils/security.js.map +0 -1
- package/dist/validators/any.js +0 -25
- package/dist/validators/any.js.map +0 -1
- package/dist/validators/array.js +0 -190
- package/dist/validators/array.js.map +0 -1
- package/dist/validators/base.js +0 -491
- package/dist/validators/base.js.map +0 -1
- package/dist/validators/base64.js +0 -65
- package/dist/validators/base64.js.map +0 -1
- package/dist/validators/bigint.js +0 -142
- package/dist/validators/bigint.js.map +0 -1
- package/dist/validators/boolean.js +0 -114
- package/dist/validators/boolean.js.map +0 -1
- package/dist/validators/codec.js +0 -182
- package/dist/validators/codec.js.map +0 -1
- package/dist/validators/custom.js +0 -50
- package/dist/validators/custom.js.map +0 -1
- package/dist/validators/date.js +0 -227
- package/dist/validators/date.js.map +0 -1
- package/dist/validators/discriminated-union.js +0 -98
- package/dist/validators/discriminated-union.js.map +0 -1
- package/dist/validators/enum.js +0 -82
- package/dist/validators/enum.js.map +0 -1
- package/dist/validators/file.js +0 -114
- package/dist/validators/file.js.map +0 -1
- package/dist/validators/function.js +0 -45
- package/dist/validators/function.js.map +0 -1
- package/dist/validators/hex.js +0 -62
- package/dist/validators/hex.js.map +0 -1
- package/dist/validators/intersection.js +0 -64
- package/dist/validators/intersection.js.map +0 -1
- package/dist/validators/json.js +0 -64
- package/dist/validators/json.js.map +0 -1
- package/dist/validators/lazy.js +0 -42
- package/dist/validators/lazy.js.map +0 -1
- package/dist/validators/literal.js +0 -45
- package/dist/validators/literal.js.map +0 -1
- package/dist/validators/map.js +0 -54
- package/dist/validators/map.js.map +0 -1
- package/dist/validators/nan.js +0 -32
- package/dist/validators/nan.js.map +0 -1
- package/dist/validators/never.js +0 -29
- package/dist/validators/never.js.map +0 -1
- package/dist/validators/null.js +0 -31
- package/dist/validators/null.js.map +0 -1
- package/dist/validators/number.js +0 -225
- package/dist/validators/number.js.map +0 -1
- package/dist/validators/object.js +0 -458
- package/dist/validators/object.js.map +0 -1
- package/dist/validators/record.js +0 -128
- package/dist/validators/record.js.map +0 -1
- package/dist/validators/set.js +0 -51
- package/dist/validators/set.js.map +0 -1
- package/dist/validators/string-bool.js +0 -127
- package/dist/validators/string-bool.js.map +0 -1
- package/dist/validators/string-formats.js +0 -120
- package/dist/validators/string-formats.js.map +0 -1
- package/dist/validators/string.js +0 -253
- package/dist/validators/string.js.map +0 -1
- package/dist/validators/symbol.js +0 -42
- package/dist/validators/symbol.js.map +0 -1
- package/dist/validators/template-literal.js +0 -101
- package/dist/validators/template-literal.js.map +0 -1
- package/dist/validators/tuple.js +0 -55
- package/dist/validators/tuple.js.map +0 -1
- package/dist/validators/uint8array.js +0 -98
- package/dist/validators/uint8array.js.map +0 -1
- package/dist/validators/undefined.js +0 -31
- package/dist/validators/undefined.js.map +0 -1
- package/dist/validators/union.js +0 -126
- package/dist/validators/union.js.map +0 -1
- package/dist/validators/unknown.js.map +0 -1
- package/dist/validators/void.js +0 -35
- package/dist/validators/void.js.map +0 -1
- package/dist/validators/xor.js +0 -64
- package/dist/validators/xor.js.map +0 -1
package/dist/validators/hex.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { VldError, createIssue } from '../errors.js';
|
|
3
|
-
import { getMessages } from '../locales/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Hexadecimal string validator
|
|
6
|
-
*/
|
|
7
|
-
export class VldHex extends VldBase {
|
|
8
|
-
constructor(lowercase = false) {
|
|
9
|
-
super();
|
|
10
|
-
this.lowercase = lowercase;
|
|
11
|
-
}
|
|
12
|
-
parse(value) {
|
|
13
|
-
const result = this.safeParse(value);
|
|
14
|
-
if (!result.success) {
|
|
15
|
-
throw result.error;
|
|
16
|
-
}
|
|
17
|
-
return result.data;
|
|
18
|
-
}
|
|
19
|
-
safeParse(value) {
|
|
20
|
-
if (typeof value !== 'string') {
|
|
21
|
-
return {
|
|
22
|
-
success: false,
|
|
23
|
-
error: new VldError([
|
|
24
|
-
createIssue('invalid_type', [], getMessages().expectedString)
|
|
25
|
-
])
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
// Check if it's a valid hex string
|
|
29
|
-
if (!VldHex.HEX_REGEX.test(value)) {
|
|
30
|
-
return {
|
|
31
|
-
success: false,
|
|
32
|
-
error: new VldError([
|
|
33
|
-
createIssue('custom', [], getMessages().invalidHex)
|
|
34
|
-
])
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
// Check if even length (full bytes)
|
|
38
|
-
if (value.length % 2 !== 0) {
|
|
39
|
-
return {
|
|
40
|
-
success: false,
|
|
41
|
-
error: new VldError([
|
|
42
|
-
createIssue('custom', [], getMessages().invalidHex)
|
|
43
|
-
])
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
// Normalize case if required
|
|
47
|
-
const normalizedValue = this.lowercase ? value.toLowerCase() : value;
|
|
48
|
-
return { success: true, data: normalizedValue };
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Require lowercase hex characters
|
|
52
|
-
*/
|
|
53
|
-
lowercaseMode() {
|
|
54
|
-
return new VldHex(true);
|
|
55
|
-
}
|
|
56
|
-
static create(lowercase = false) {
|
|
57
|
-
return new VldHex(lowercase);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// BUG-008 FIX: Use * instead of + to allow empty hex strings (consistent with base64 validator)
|
|
61
|
-
VldHex.HEX_REGEX = /^[0-9a-fA-F]*$/;
|
|
62
|
-
//# sourceMappingURL=hex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hex.js","sourceRoot":"","sources":["../../src/validators/hex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,OAAuB;IAMjD,YAAY,SAAS,GAAG,KAAK;QAC3B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,KAAc;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,QAAQ,CAAC;oBAClB,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,cAAc,CAAC;iBAC9D,CAAC;aACH,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,QAAQ,CAAC;oBAClB,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC;iBACpD,CAAC;aACH,CAAC;QACJ,CAAC;QAED,oCAAoC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI,QAAQ,CAAC;oBAClB,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC;iBACpD,CAAC;aACH,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAErE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK;QAC7B,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;;AA/DD,gGAAgG;AACxE,gBAAS,GAAG,gBAAgB,CAAC","sourcesContent":["import { VldBase, ParseResult } from './base';\r\nimport { VldError, createIssue } from '../errors';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Hexadecimal string validator\r\n */\r\nexport class VldHex extends VldBase<string, string> {\r\n // BUG-008 FIX: Use * instead of + to allow empty hex strings (consistent with base64 validator)\r\n private static readonly HEX_REGEX = /^[0-9a-fA-F]*$/;\r\n \r\n private readonly lowercase: boolean;\r\n \r\n constructor(lowercase = false) {\r\n super();\r\n this.lowercase = lowercase;\r\n }\r\n \r\n parse(value: unknown): string {\r\n const result = this.safeParse(value);\r\n if (!result.success) {\r\n throw result.error;\r\n }\r\n return result.data;\r\n }\r\n \r\n safeParse(value: unknown): ParseResult<string> {\r\n if (typeof value !== 'string') {\r\n return {\r\n success: false,\r\n error: new VldError([\r\n createIssue('invalid_type', [], getMessages().expectedString)\r\n ])\r\n };\r\n }\r\n \r\n // Check if it's a valid hex string\r\n if (!VldHex.HEX_REGEX.test(value)) {\r\n return {\r\n success: false,\r\n error: new VldError([\r\n createIssue('custom', [], getMessages().invalidHex)\r\n ])\r\n };\r\n }\r\n \r\n // Check if even length (full bytes)\r\n if (value.length % 2 !== 0) {\r\n return {\r\n success: false,\r\n error: new VldError([\r\n createIssue('custom', [], getMessages().invalidHex)\r\n ])\r\n };\r\n }\r\n \r\n // Normalize case if required\r\n const normalizedValue = this.lowercase ? value.toLowerCase() : value;\r\n \r\n return { success: true, data: normalizedValue };\r\n }\r\n \r\n /**\r\n * Require lowercase hex characters\r\n */\r\n lowercaseMode(): VldHex {\r\n return new VldHex(true);\r\n }\r\n \r\n static create(lowercase = false): VldHex {\r\n return new VldHex(lowercase);\r\n }\r\n}"]}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { deepMerge, isPlainObject } from '../utils/deep-merge.js';
|
|
3
|
-
import { getMessages } from '../locales/index.js';
|
|
4
|
-
/**
|
|
5
|
-
* Immutable intersection validator for combining validators
|
|
6
|
-
*/
|
|
7
|
-
export class VldIntersection extends VldBase {
|
|
8
|
-
/**
|
|
9
|
-
* Private constructor to enforce immutability
|
|
10
|
-
*/
|
|
11
|
-
constructor(validatorA, validatorB) {
|
|
12
|
-
super();
|
|
13
|
-
this.validatorA = validatorA;
|
|
14
|
-
this.validatorB = validatorB;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a new intersection validator
|
|
18
|
-
*/
|
|
19
|
-
static create(validatorA, validatorB) {
|
|
20
|
-
return new VldIntersection(validatorA, validatorB);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Parse and validate a value against both validators
|
|
24
|
-
*/
|
|
25
|
-
parse(value) {
|
|
26
|
-
try {
|
|
27
|
-
// Both validators must pass
|
|
28
|
-
const resultA = this.validatorA.parse(value);
|
|
29
|
-
const resultB = this.validatorB.parse(value);
|
|
30
|
-
// BUG-NEW-015 FIX: Check type consistency before merging
|
|
31
|
-
const aIsObject = isPlainObject(resultA);
|
|
32
|
-
const bIsObject = isPlainObject(resultB);
|
|
33
|
-
// Both are objects - safe to merge
|
|
34
|
-
if (aIsObject && bIsObject) {
|
|
35
|
-
return deepMerge(resultA, resultB);
|
|
36
|
-
}
|
|
37
|
-
// Neither are objects - must be identical primitives
|
|
38
|
-
if (!aIsObject && !bIsObject) {
|
|
39
|
-
if (resultA === resultB) {
|
|
40
|
-
return resultA;
|
|
41
|
-
}
|
|
42
|
-
throw new Error('Values must be identical for intersection of primitive types');
|
|
43
|
-
}
|
|
44
|
-
// One is object, one is primitive - invalid intersection
|
|
45
|
-
throw new Error('Cannot create intersection of object and primitive types. ' +
|
|
46
|
-
'Both validators must produce the same type category.');
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
throw new Error(getMessages().intersectionError(error.message));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Safely parse and validate a value against both validators
|
|
54
|
-
*/
|
|
55
|
-
safeParse(value) {
|
|
56
|
-
try {
|
|
57
|
-
return { success: true, data: this.parse(value) };
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
return { success: false, error: error };
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=intersection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../src/validators/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,eAAsB,SAAQ,OAAuB;IAChE;;OAEG;IACH,YACmB,UAA+B,EAC/B,UAA+B;QAEhD,KAAK,EAAE,CAAC;QAHS,eAAU,GAAV,UAAU,CAAqB;QAC/B,eAAU,GAAV,UAAU,CAAqB;IAGlD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,UAA+B,EAC/B,UAA+B;QAE/B,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE7C,yDAAyD;YACzD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAEzC,mCAAmC;YACnC,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAC,OAAc,EAAE,OAAc,CAAU,CAAC;YAC5D,CAAC;YAED,qDAAqD;YACrD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7B,IAAK,OAAe,KAAM,OAAe,EAAE,CAAC;oBAC1C,OAAO,OAAgB,CAAC;gBAC1B,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,CAAC;YAED,yDAAyD;YACzD,MAAM,IAAI,KAAK,CACb,4DAA4D;gBAC5D,sDAAsD,CACvD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,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;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\r\nimport { deepMerge, isPlainObject } from '../utils/deep-merge';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable intersection validator for combining validators\r\n */\r\nexport class VldIntersection<A, B> extends VldBase<unknown, A & B> {\r\n /**\r\n * Private constructor to enforce immutability\r\n */\r\n private constructor(\r\n private readonly validatorA: VldBase<unknown, A>,\r\n private readonly validatorB: VldBase<unknown, B>\r\n ) {\r\n super();\r\n }\r\n \r\n /**\r\n * Create a new intersection validator\r\n */\r\n static create<A, B>(\r\n validatorA: VldBase<unknown, A>,\r\n validatorB: VldBase<unknown, B>\r\n ): VldIntersection<A, B> {\r\n return new VldIntersection(validatorA, validatorB);\r\n }\r\n \r\n /**\r\n * Parse and validate a value against both validators\r\n */\r\n parse(value: unknown): A & B {\r\n try {\r\n // Both validators must pass\r\n const resultA = this.validatorA.parse(value);\r\n const resultB = this.validatorB.parse(value);\r\n\r\n // BUG-NEW-015 FIX: Check type consistency before merging\r\n const aIsObject = isPlainObject(resultA);\r\n const bIsObject = isPlainObject(resultB);\r\n\r\n // Both are objects - safe to merge\r\n if (aIsObject && bIsObject) {\r\n return deepMerge(resultA as any, resultB as any) as A & B;\r\n }\r\n\r\n // Neither are objects - must be identical primitives\r\n if (!aIsObject && !bIsObject) {\r\n if ((resultA as any) === (resultB as any)) {\r\n return resultA as A & B;\r\n }\r\n throw new Error('Values must be identical for intersection of primitive types');\r\n }\r\n\r\n // One is object, one is primitive - invalid intersection\r\n throw new Error(\r\n 'Cannot create intersection of object and primitive types. ' +\r\n 'Both validators must produce the same type category.'\r\n );\r\n } catch (error) {\r\n throw new Error(getMessages().intersectionError((error as Error).message));\r\n }\r\n }\r\n \r\n /**\r\n * Safely parse and validate a value against both validators\r\n */\r\n safeParse(value: unknown): ParseResult<A & B> {\r\n try {\r\n return { success: true, data: this.parse(value) };\r\n } catch (error) {\r\n return { success: false, error: error as Error };\r\n }\r\n }\r\n}"]}
|
package/dist/validators/json.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { getMessages } from '../locales/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Immutable JSON validator that validates and parses JSON strings
|
|
5
|
-
* Accepts both strings (which are parsed) and already-parsed objects
|
|
6
|
-
*/
|
|
7
|
-
export class VldJson extends VldBase {
|
|
8
|
-
constructor(schema) {
|
|
9
|
-
super();
|
|
10
|
-
this.schema = schema;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Create a new JSON validator
|
|
14
|
-
*/
|
|
15
|
-
static create(schema) {
|
|
16
|
-
return new VldJson(schema);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Parse and validate a JSON value
|
|
20
|
-
*/
|
|
21
|
-
parse(value) {
|
|
22
|
-
let parsed;
|
|
23
|
-
// If it's a string, try to parse it as JSON first
|
|
24
|
-
if (typeof value === 'string') {
|
|
25
|
-
try {
|
|
26
|
-
parsed = JSON.parse(value);
|
|
27
|
-
}
|
|
28
|
-
catch (e) {
|
|
29
|
-
throw new Error(getMessages().invalidJson);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
// Not a string - assume it's already parsed
|
|
34
|
-
parsed = value;
|
|
35
|
-
}
|
|
36
|
-
// If we have a schema, validate against it
|
|
37
|
-
if (this.schema) {
|
|
38
|
-
return this.schema.parse(parsed);
|
|
39
|
-
}
|
|
40
|
-
// No schema - just return the parsed value
|
|
41
|
-
return parsed;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Safely parse and validate a JSON value
|
|
45
|
-
*/
|
|
46
|
-
safeParse(value) {
|
|
47
|
-
try {
|
|
48
|
-
return { success: true, data: this.parse(value) };
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
return {
|
|
52
|
-
success: false,
|
|
53
|
-
error: error
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Create a new JSON validator with a schema for validation
|
|
59
|
-
*/
|
|
60
|
-
withSchema(schema) {
|
|
61
|
-
return new VldJson(schema);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=json.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/validators/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,OAAqB,SAAQ,OAAmB;IAC3D,YACmB,MAA4B;QAE7C,KAAK,EAAE,CAAC;QAFS,WAAM,GAAN,MAAM,CAAsB;IAG/C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAc,MAA4B;QACrD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,MAAe,CAAC;QAEpB,kDAAkD;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QAED,2CAA2C;QAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,2CAA2C;QAC3C,OAAO,MAAW,CAAC;IACrB,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;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAc;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAI,MAA2B;QACvC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Immutable JSON validator that validates and parses JSON strings\n * Accepts both strings (which are parsed) and already-parsed objects\n */\nexport class VldJson<T = unknown> extends VldBase<unknown, T> {\n private constructor(\n private readonly schema?: VldBase<unknown, T>\n ) {\n super();\n }\n\n /**\n * Create a new JSON validator\n */\n static create<T = unknown>(schema?: VldBase<unknown, T>): VldJson<T> {\n return new VldJson(schema);\n }\n\n /**\n * Parse and validate a JSON value\n */\n parse(value: unknown): T {\n let parsed: unknown;\n\n // If it's a string, try to parse it as JSON first\n if (typeof value === 'string') {\n try {\n parsed = JSON.parse(value);\n } catch (e) {\n throw new Error(getMessages().invalidJson);\n }\n } else {\n // Not a string - assume it's already parsed\n parsed = value;\n }\n\n // If we have a schema, validate against it\n if (this.schema) {\n return this.schema.parse(parsed);\n }\n\n // No schema - just return the parsed value\n return parsed as T;\n }\n\n /**\n * Safely parse and validate a JSON value\n */\n safeParse(value: unknown): ParseResult<T> {\n try {\n return { success: true, data: this.parse(value) };\n } catch (error) {\n return {\n success: false,\n error: error as Error\n };\n }\n }\n\n /**\n * Create a new JSON validator with a schema for validation\n */\n withSchema<U>(schema: VldBase<unknown, U>): VldJson<U> {\n return new VldJson(schema);\n }\n}\n"]}
|
package/dist/validators/lazy.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VldLazy - Lazy evaluation for recursive schemas
|
|
3
|
-
* Part of Zod 4 API parity implementation
|
|
4
|
-
* Allows schemas that reference themselves (e.g., tree structures, nested categories)
|
|
5
|
-
*/
|
|
6
|
-
import { VldBase } from './base.js';
|
|
7
|
-
/**
|
|
8
|
-
* Lazy validator - defers schema evaluation until runtime
|
|
9
|
-
* Essential for recursive and self-referencing types
|
|
10
|
-
*/
|
|
11
|
-
export class VldLazy extends VldBase {
|
|
12
|
-
constructor(_schemaGetter) {
|
|
13
|
-
super();
|
|
14
|
-
this._schemaGetter = _schemaGetter;
|
|
15
|
-
this._cachedSchema = null;
|
|
16
|
-
}
|
|
17
|
-
static create(schemaGetter) {
|
|
18
|
-
return new VldLazy(schemaGetter);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Get the actual schema, caching it after first retrieval
|
|
22
|
-
*/
|
|
23
|
-
_getSchema() {
|
|
24
|
-
if (!this._cachedSchema) {
|
|
25
|
-
this._cachedSchema = this._schemaGetter();
|
|
26
|
-
}
|
|
27
|
-
return this._cachedSchema;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get the inner schema (unwrap)
|
|
31
|
-
*/
|
|
32
|
-
unwrap() {
|
|
33
|
-
return this._getSchema();
|
|
34
|
-
}
|
|
35
|
-
parse(value) {
|
|
36
|
-
return this._getSchema().parse(value);
|
|
37
|
-
}
|
|
38
|
-
safeParse(value) {
|
|
39
|
-
return this._getSchema().safeParse(value);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=lazy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../src/validators/lazy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC;;;GAGG;AACH,MAAM,OAAO,OAAyB,SAAQ,OAAwB;IAGpE,YACmB,aAA6C;QAE9D,KAAK,EAAE,CAAC;QAFS,kBAAa,GAAb,aAAa,CAAgC;QAHxD,kBAAa,GAAoC,IAAI,CAAC;IAM9D,CAAC;IAED,MAAM,CAAC,MAAM,CACX,YAA4C;QAE5C,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,SAAS,CAAC,KAAc;QACtB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;CACF","sourcesContent":["/**\n * VldLazy - Lazy evaluation for recursive schemas\n * Part of Zod 4 API parity implementation\n * Allows schemas that reference themselves (e.g., tree structures, nested categories)\n */\n\nimport { VldBase } from './base';\nimport type { ParseResult } from './base';\n\n/**\n * Lazy validator - defers schema evaluation until runtime\n * Essential for recursive and self-referencing types\n */\nexport class VldLazy<TInput, TOutput> extends VldBase<TInput, TOutput> {\n private _cachedSchema: VldBase<TInput, TOutput> | null = null;\n\n private constructor(\n private readonly _schemaGetter: () => VldBase<TInput, TOutput>\n ) {\n super();\n }\n\n static create<TInput, TOutput>(\n schemaGetter: () => VldBase<TInput, TOutput>\n ): VldLazy<TInput, TOutput> {\n return new VldLazy(schemaGetter);\n }\n\n /**\n * Get the actual schema, caching it after first retrieval\n */\n private _getSchema(): VldBase<TInput, TOutput> {\n if (!this._cachedSchema) {\n this._cachedSchema = this._schemaGetter();\n }\n return this._cachedSchema;\n }\n\n /**\n * Get the inner schema (unwrap)\n */\n unwrap(): VldBase<TInput, TOutput> {\n return this._getSchema();\n }\n\n parse(value: unknown): TOutput {\n return this._getSchema().parse(value);\n }\n\n safeParse(value: unknown): ParseResult<TOutput> {\n return this._getSchema().safeParse(value);\n }\n}\n"]}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { getMessages } from '../locales/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Immutable literal validator for exact value matching
|
|
5
|
-
*/
|
|
6
|
-
export class VldLiteral extends VldBase {
|
|
7
|
-
/**
|
|
8
|
-
* Private constructor to enforce immutability
|
|
9
|
-
*/
|
|
10
|
-
constructor(literal, errorMessage) {
|
|
11
|
-
super();
|
|
12
|
-
this.literal = literal;
|
|
13
|
-
this.errorMessage = errorMessage;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Create a new literal validator
|
|
17
|
-
*/
|
|
18
|
-
static create(literal) {
|
|
19
|
-
return new VldLiteral(literal);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Parse and validate a literal value
|
|
23
|
-
*/
|
|
24
|
-
parse(value) {
|
|
25
|
-
if (value !== this.literal) {
|
|
26
|
-
throw new Error(this.errorMessage ||
|
|
27
|
-
getMessages().literalExpected(JSON.stringify(this.literal), JSON.stringify(value)));
|
|
28
|
-
}
|
|
29
|
-
return this.literal;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Safely parse and validate a literal value
|
|
33
|
-
*/
|
|
34
|
-
safeParse(value) {
|
|
35
|
-
if (value === this.literal) {
|
|
36
|
-
return { success: true, data: this.literal };
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
success: false,
|
|
40
|
-
error: new Error(this.errorMessage ||
|
|
41
|
-
getMessages().literalExpected(JSON.stringify(this.literal), JSON.stringify(value)))
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=literal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/validators/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,UAAmE,SAAQ,OAAa;IACnG;;OAEG;IACH,YACmB,OAAU,EACV,YAAqB;QAEtC,KAAK,EAAE,CAAC;QAHS,YAAO,GAAP,OAAO,CAAG;QACV,iBAAY,GAAZ,YAAY,CAAS;IAGxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAyD,OAAU;QAC9E,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,YAAY;gBACjB,WAAW,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAc;QACtB,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,KAAK,CACd,IAAI,CAAC,YAAY;gBACjB,WAAW,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACnF;SACF,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Immutable literal validator for exact value matching\n */\nexport class VldLiteral<T extends string | number | boolean | null | undefined> extends VldBase<T, T> {\n /**\n * Private constructor to enforce immutability\n */\n private constructor(\n private readonly literal: T,\n private readonly errorMessage?: string\n ) {\n super();\n }\n \n /**\n * Create a new literal validator\n */\n static create<T extends string | number | boolean | null | undefined>(literal: T): VldLiteral<T> {\n return new VldLiteral(literal);\n }\n \n /**\n * Parse and validate a literal value\n */\n parse(value: unknown): T {\n if (value !== this.literal) {\n throw new Error(\n this.errorMessage || \n getMessages().literalExpected(JSON.stringify(this.literal), JSON.stringify(value))\n );\n }\n return this.literal;\n }\n \n /**\n * Safely parse and validate a literal value\n */\n safeParse(value: unknown): ParseResult<T> {\n if (value === this.literal) {\n return { success: true, data: this.literal };\n }\n return { \n success: false, \n error: new Error(\n this.errorMessage || \n getMessages().literalExpected(JSON.stringify(this.literal), JSON.stringify(value))\n )\n };\n }\n}"]}
|
package/dist/validators/map.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { getMessages } from '../locales/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Immutable Map validator
|
|
5
|
-
*/
|
|
6
|
-
export class VldMap extends VldBase {
|
|
7
|
-
/**
|
|
8
|
-
* Private constructor to enforce immutability
|
|
9
|
-
*/
|
|
10
|
-
constructor(keyValidator, valueValidator, errorMessage) {
|
|
11
|
-
super();
|
|
12
|
-
this.keyValidator = keyValidator;
|
|
13
|
-
this.valueValidator = valueValidator;
|
|
14
|
-
this.errorMessage = errorMessage;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Create a new Map validator
|
|
18
|
-
*/
|
|
19
|
-
static create(keyValidator, valueValidator) {
|
|
20
|
-
return new VldMap(keyValidator, valueValidator);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Parse and validate a Map value
|
|
24
|
-
*/
|
|
25
|
-
parse(value) {
|
|
26
|
-
if (!(value instanceof Map)) {
|
|
27
|
-
throw new Error(this.errorMessage || getMessages().invalidMap);
|
|
28
|
-
}
|
|
29
|
-
const result = new Map();
|
|
30
|
-
for (const [key, val] of value) {
|
|
31
|
-
try {
|
|
32
|
-
const validKey = this.keyValidator.parse(key);
|
|
33
|
-
const validValue = this.valueValidator.parse(val);
|
|
34
|
-
result.set(validKey, validValue);
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
throw new Error(error.message);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Safely parse and validate a Map value
|
|
44
|
-
*/
|
|
45
|
-
safeParse(value) {
|
|
46
|
-
try {
|
|
47
|
-
return { success: true, data: this.parse(value) };
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
return { success: false, error: error };
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=map.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/validators/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,MAAa,SAAQ,OAA2B;IAC3D;;OAEG;IACH,YACmB,YAAiC,EACjC,cAAmC,EACnC,YAAqB;QAEtC,KAAK,EAAE,CAAC;QAJS,iBAAY,GAAZ,YAAY,CAAqB;QACjC,mBAAc,GAAd,cAAc,CAAqB;QACnC,iBAAY,GAAZ,YAAY,CAAS;IAGxC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CACX,YAAiC,EACjC,cAAmC;QAEnC,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAQ,CAAC;QAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,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;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Immutable Map validator\n */\nexport class VldMap<K, V> extends VldBase<unknown, Map<K, V>> {\n /**\n * Private constructor to enforce immutability\n */\n private constructor(\n private readonly keyValidator: VldBase<unknown, K>,\n private readonly valueValidator: VldBase<unknown, V>,\n private readonly errorMessage?: string\n ) {\n super();\n }\n \n /**\n * Create a new Map validator\n */\n static create<K, V>(\n keyValidator: VldBase<unknown, K>,\n valueValidator: VldBase<unknown, V>\n ): VldMap<K, V> {\n return new VldMap(keyValidator, valueValidator);\n }\n \n /**\n * Parse and validate a Map value\n */\n parse(value: unknown): Map<K, V> {\n if (!(value instanceof Map)) {\n throw new Error(this.errorMessage || 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 /**\n * Safely parse and validate a Map value\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}"]}
|
package/dist/validators/nan.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VldNan - Validates that a value is NaN (Not a Number)
|
|
3
|
-
* Part of Zod 4 API parity implementation
|
|
4
|
-
*/
|
|
5
|
-
import { VldBase } from './base.js';
|
|
6
|
-
/**
|
|
7
|
-
* NaN validator - validates that a value is NaN
|
|
8
|
-
* Note: Uses Number.isNaN() which is more strict than global isNaN()
|
|
9
|
-
*/
|
|
10
|
-
export class VldNan extends VldBase {
|
|
11
|
-
constructor() {
|
|
12
|
-
super();
|
|
13
|
-
}
|
|
14
|
-
static create() {
|
|
15
|
-
return new VldNan();
|
|
16
|
-
}
|
|
17
|
-
parse(value) {
|
|
18
|
-
if (typeof value !== 'number' || !Number.isNaN(value)) {
|
|
19
|
-
throw new Error(`Expected NaN, received ${typeof value === 'number' ? 'a valid number' : typeof value}`);
|
|
20
|
-
}
|
|
21
|
-
return value;
|
|
22
|
-
}
|
|
23
|
-
safeParse(value) {
|
|
24
|
-
try {
|
|
25
|
-
return { success: true, data: this.parse(value) };
|
|
26
|
-
}
|
|
27
|
-
catch (error) {
|
|
28
|
-
return { success: false, error: error };
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=nan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nan.js","sourceRoot":"","sources":["../../src/validators/nan.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC;;;GAGG;AACH,MAAM,OAAO,MAAO,SAAQ,OAAwB;IAClD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,MAAM,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,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;CACF","sourcesContent":["/**\n * VldNan - Validates that a value is NaN (Not a Number)\n * Part of Zod 4 API parity implementation\n */\n\nimport { VldBase } from './base';\nimport type { ParseResult } from './base';\n\n/**\n * NaN validator - validates that a value is NaN\n * Note: Uses Number.isNaN() which is more strict than global isNaN()\n */\nexport class VldNan extends VldBase<unknown, number> {\n private constructor() {\n super();\n }\n\n static create(): VldNan {\n return new VldNan();\n }\n\n parse(value: unknown): number {\n if (typeof value !== 'number' || !Number.isNaN(value)) {\n throw new Error(`Expected NaN, received ${typeof value === 'number' ? 'a valid number' : typeof value}`);\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"]}
|
package/dist/validators/never.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { VldBase } from './base.js';
|
|
2
|
-
import { getMessages } from '../locales/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Validator that never succeeds
|
|
5
|
-
*/
|
|
6
|
-
export class VldNever extends VldBase {
|
|
7
|
-
/**
|
|
8
|
-
* Create a new never validator
|
|
9
|
-
*/
|
|
10
|
-
static create() {
|
|
11
|
-
return new VldNever();
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Parse never value (always fails)
|
|
15
|
-
*/
|
|
16
|
-
parse(_value) {
|
|
17
|
-
throw new Error(getMessages().neverType);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Safely parse never value (always fails)
|
|
21
|
-
*/
|
|
22
|
-
safeParse(_value) {
|
|
23
|
-
return {
|
|
24
|
-
success: false,
|
|
25
|
-
error: new Error(getMessages().neverType)
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=never.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"never.js","sourceRoot":"","sources":["../../src/validators/never.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,OAAqB;IACjD;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAe;QACnB,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAe;QACvB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;SAC1C,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { VldBase, ParseResult } from './base';\nimport { getMessages } from '../locales';\n\n/**\n * Validator that never succeeds\n */\nexport class VldNever extends VldBase<never, never> {\n /**\n * Create a new never validator\n */\n static create(): VldNever {\n return new VldNever();\n }\n \n /**\n * Parse never value (always fails)\n */\n parse(_value: unknown): never {\n throw new Error(getMessages().neverType);\n }\n \n /**\n * Safely parse never value (always fails)\n */\n safeParse(_value: unknown): ParseResult<never> {\n return { \n success: false, \n error: new Error(getMessages().neverType) \n };\n }\n}"]}
|
package/dist/validators/null.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VldNull - Validates that a value is exactly null
|
|
3
|
-
* Part of Zod 4 API parity implementation
|
|
4
|
-
*/
|
|
5
|
-
import { VldBase } from './base.js';
|
|
6
|
-
/**
|
|
7
|
-
* Null validator - validates that a value is exactly null
|
|
8
|
-
*/
|
|
9
|
-
export class VldNull extends VldBase {
|
|
10
|
-
constructor() {
|
|
11
|
-
super();
|
|
12
|
-
}
|
|
13
|
-
static create() {
|
|
14
|
-
return new VldNull();
|
|
15
|
-
}
|
|
16
|
-
parse(value) {
|
|
17
|
-
if (value !== null) {
|
|
18
|
-
throw new Error(`Expected null, received ${typeof value}`);
|
|
19
|
-
}
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
safeParse(value) {
|
|
23
|
-
try {
|
|
24
|
-
return { success: true, data: this.parse(value) };
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
return { success: false, error: error };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=null.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"null.js","sourceRoot":"","sources":["../../src/validators/null.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGjC;;GAEG;AACH,MAAM,OAAO,OAAQ,SAAQ,OAAsB;IACjD;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,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;CACF","sourcesContent":["/**\n * VldNull - Validates that a value is exactly null\n * Part of Zod 4 API parity implementation\n */\n\nimport { VldBase } from './base';\nimport type { ParseResult } from './base';\n\n/**\n * Null validator - validates that a value is exactly null\n */\nexport class VldNull extends VldBase<unknown, null> {\n private constructor() {\n super();\n }\n\n static create(): VldNull {\n return new VldNull();\n }\n\n parse(value: unknown): null {\n if (value !== null) {\n throw new Error(`Expected null, received ${typeof value}`);\n }\n return null;\n }\n\n safeParse(value: unknown): ParseResult<null> {\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"]}
|