@oxog/vld 1.5.0 → 2.0.2
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 +168 -0
- package/LICENSE +20 -20
- package/README.md +558 -517
- package/dist/chunks/bigint-DgsCr2dC.js +1709 -0
- package/dist/chunks/bigint-DgsCr2dC.js.map +1 -0
- package/dist/{coercion/string.js → chunks/date-ODue_rtq.js} +271 -5
- package/dist/chunks/date-ODue_rtq.js.map +1 -0
- package/dist/chunks/index-BZqWZvVe.js +426 -0
- package/dist/chunks/index-BZqWZvVe.js.map +1 -0
- package/dist/chunks/index-CETyGkrv.js +894 -0
- package/dist/chunks/index-CETyGkrv.js.map +1 -0
- package/dist/chunks/json-o20GFhTh.js +2021 -0
- package/dist/chunks/json-o20GFhTh.js.map +1 -0
- package/dist/{validators/unknown.js → chunks/unknown-SLIH1VCf.js} +6 -3
- package/dist/chunks/unknown-SLIH1VCf.js.map +1 -0
- package/dist/cjs/errors.cjs +387 -0
- package/dist/cjs/errors.cjs.map +1 -0
- package/dist/cjs/index.cjs +9983 -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 +7329 -0
- package/dist/cjs/mini.cjs.map +1 -0
- package/dist/codecs/index.js +4 -275
- package/dist/codecs/index.js.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.js +6 -4
- package/dist/compat/emitter.js.map +1 -1
- package/dist/compat/result.js +21 -19
- package/dist/compat/result.js.map +1 -1
- package/dist/errors.js +13 -10
- package/dist/errors.js.map +1 -1
- package/dist/index.js +225 -126
- package/dist/index.js.map +1 -1
- package/dist/kernel.js +10 -7
- package/dist/kernel.js.map +1 -1
- 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/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.js +8 -7
- package/dist/pigment.js.map +1 -1
- package/dist/validators/array.d.ts +5 -0
- package/dist/validators/array.d.ts.map +1 -1
- package/dist/validators/discriminated-union.d.ts.map +1 -1
- package/dist/validators/enum.d.ts +5 -1
- package/dist/validators/enum.d.ts.map +1 -1
- package/dist/validators/index.js +5 -45
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/lazy.d.ts +8 -1
- package/dist/validators/lazy.d.ts.map +1 -1
- package/dist/validators/literal.d.ts +5 -1
- package/dist/validators/literal.d.ts.map +1 -1
- package/dist/validators/object.d.ts +30 -3
- package/dist/validators/object.d.ts.map +1 -1
- package/dist/validators/string.d.ts +12 -1
- package/dist/validators/string.d.ts.map +1 -1
- package/package.json +69 -11
- package/dist/cli/benchmark.d.ts +0 -15
- package/dist/cli/benchmark.d.ts.map +0 -1
- package/dist/cli/benchmark.js +0 -248
- package/dist/cli/benchmark.js.map +0 -1
- package/dist/cli/bin.js +0 -35
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/commands/benchmark.js +0 -204
- package/dist/cli/commands/benchmark.js.map +0 -1
- package/dist/cli/commands/validate.js +0 -157
- package/dist/cli/commands/validate.js.map +0 -1
- package/dist/cli/generate.d.ts +0 -14
- package/dist/cli/generate.d.ts.map +0 -1
- package/dist/cli/generate.js +0 -233
- package/dist/cli/generate.js.map +0 -1
- package/dist/cli/index.js +0 -182
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/validate.d.ts +0 -15
- package/dist/cli/validate.d.ts.map +0 -1
- package/dist/cli/validate.js +0 -162
- package/dist/cli/validate.js.map +0 -1
- package/dist/coercion/bigint.js.map +0 -1
- package/dist/coercion/boolean.js +0 -59
- 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/compat/index.js +0 -14
- package/dist/compat/index.js.map +0 -1
- package/dist/events.js +0 -8
- package/dist/events.js.map +0 -1
- package/dist/guards.d.ts +0 -143
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -238
- package/dist/guards.js.map +0 -1
- package/dist/index-new.d.ts.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/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/logger.js +0 -184
- package/dist/logger.js.map +0 -1
- package/dist/plugins/codecs.d.ts +0 -17
- package/dist/plugins/codecs.d.ts.map +0 -1
- package/dist/plugins/codecs.js +0 -29
- package/dist/plugins/codecs.js.map +0 -1
- package/dist/plugins/coercion.d.ts +0 -13
- package/dist/plugins/coercion.d.ts.map +0 -1
- package/dist/plugins/coercion.js +0 -34
- package/dist/plugins/coercion.js.map +0 -1
- package/dist/plugins/core-validators.d.ts +0 -13
- package/dist/plugins/core-validators.d.ts.map +0 -1
- package/dist/plugins/core-validators.js +0 -96
- package/dist/plugins/core-validators.js.map +0 -1
- package/dist/plugins/index.js +0 -8
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/kernel.d.ts +0 -29
- package/dist/plugins/kernel.d.ts.map +0 -1
- package/dist/plugins/kernel.js +0 -486
- package/dist/plugins/kernel.js.map +0 -1
- package/dist/plugins/types.js +0 -8
- package/dist/plugins/types.js.map +0 -1
- package/dist/style.d.ts +0 -123
- package/dist/style.d.ts.map +0 -1
- package/dist/style.js +0 -369
- package/dist/style.js.map +0 -1
- package/dist/utils/codec-utils.js +0 -229
- 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 -98
- 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 -499
- 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-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/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-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/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 -102
- 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-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
- 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/coercion/number.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { VldNumber } from '../validators/number.js';
|
|
2
|
-
import { getMessages } from '../locales/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Number coercion validator that attempts to convert values to numbers
|
|
5
|
-
*/
|
|
6
|
-
export class VldCoerceNumber extends VldNumber {
|
|
7
|
-
constructor(config) {
|
|
8
|
-
super(config);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Create a new coerce number validator
|
|
12
|
-
*/
|
|
13
|
-
static create() {
|
|
14
|
-
return new VldCoerceNumber();
|
|
15
|
-
}
|
|
16
|
-
// Override all chain methods to return VldCoerceNumber instances
|
|
17
|
-
min(value, message) {
|
|
18
|
-
return new VldCoerceNumber({
|
|
19
|
-
checks: [...this.config.checks, (v) => v >= value],
|
|
20
|
-
errorMessage: message || getMessages().numberMin(value)
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
max(value, message) {
|
|
24
|
-
return new VldCoerceNumber({
|
|
25
|
-
checks: [...this.config.checks, (v) => v <= value],
|
|
26
|
-
errorMessage: message || getMessages().numberMax(value)
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
int(message) {
|
|
30
|
-
return new VldCoerceNumber({
|
|
31
|
-
checks: [...this.config.checks, (v) => Number.isInteger(v)],
|
|
32
|
-
errorMessage: message || getMessages().numberInt
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
positive(message) {
|
|
36
|
-
return new VldCoerceNumber({
|
|
37
|
-
checks: [...this.config.checks, (v) => v > 0],
|
|
38
|
-
errorMessage: message || getMessages().numberPositive
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
negative(message) {
|
|
42
|
-
return new VldCoerceNumber({
|
|
43
|
-
checks: [...this.config.checks, (v) => v < 0],
|
|
44
|
-
errorMessage: message || getMessages().numberNegative
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
nonnegative(message) {
|
|
48
|
-
return new VldCoerceNumber({
|
|
49
|
-
checks: [...this.config.checks, (v) => v >= 0],
|
|
50
|
-
errorMessage: message || getMessages().numberNonnegative
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
nonpositive(message) {
|
|
54
|
-
return new VldCoerceNumber({
|
|
55
|
-
checks: [...this.config.checks, (v) => v <= 0],
|
|
56
|
-
errorMessage: message || getMessages().numberNonpositive
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
finite(message) {
|
|
60
|
-
return new VldCoerceNumber({
|
|
61
|
-
checks: [...this.config.checks, (v) => Number.isFinite(v)],
|
|
62
|
-
errorMessage: message || getMessages().numberFinite
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
safe(message) {
|
|
66
|
-
return new VldCoerceNumber({
|
|
67
|
-
checks: [...this.config.checks, (v) => Number.isSafeInteger(v)],
|
|
68
|
-
errorMessage: message || getMessages().numberSafe
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
multipleOf(value, message) {
|
|
72
|
-
return new VldCoerceNumber({
|
|
73
|
-
checks: [...this.config.checks, (v) => {
|
|
74
|
-
// BUG-004 FIX: Use epsilon comparison for floating point precision (consistent with VldNumber)
|
|
75
|
-
const remainder = Math.abs(v % value);
|
|
76
|
-
return remainder < Number.EPSILON || Math.abs(remainder - Math.abs(value)) < Number.EPSILON;
|
|
77
|
-
}],
|
|
78
|
-
errorMessage: message || getMessages().numberMultipleOf(value)
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
step(value, message) {
|
|
82
|
-
return this.multipleOf(value, message);
|
|
83
|
-
}
|
|
84
|
-
between(min, max, message) {
|
|
85
|
-
return new VldCoerceNumber({
|
|
86
|
-
checks: [...this.config.checks, (v) => v >= min && v <= max],
|
|
87
|
-
errorMessage: message || `Number must be between ${min} and ${max}`
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
even(message) {
|
|
91
|
-
// BUG-NEW-007 FIX: Add integer check before even/odd validation
|
|
92
|
-
return new VldCoerceNumber({
|
|
93
|
-
checks: [...this.config.checks, (v) => {
|
|
94
|
-
if (!Number.isInteger(v)) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
return v % 2 === 0;
|
|
98
|
-
}],
|
|
99
|
-
errorMessage: message || 'Number must be even'
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
odd(message) {
|
|
103
|
-
// BUG-NEW-007 FIX: Add integer check before even/odd validation
|
|
104
|
-
return new VldCoerceNumber({
|
|
105
|
-
checks: [...this.config.checks, (v) => {
|
|
106
|
-
if (!Number.isInteger(v)) {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
return v % 2 !== 0;
|
|
110
|
-
}],
|
|
111
|
-
errorMessage: message || 'Number must be odd'
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Parse and coerce a value to number
|
|
116
|
-
*/
|
|
117
|
-
parse(value) {
|
|
118
|
-
// If it's already a valid number, use parent validation directly
|
|
119
|
-
if (typeof value === 'number' && !isNaN(value)) {
|
|
120
|
-
return super.parse(value);
|
|
121
|
-
}
|
|
122
|
-
let coerced;
|
|
123
|
-
if (typeof value === 'string') {
|
|
124
|
-
const trimmed = value.trim();
|
|
125
|
-
if (trimmed === '') {
|
|
126
|
-
throw new Error(getMessages().coercionFailed('number', value));
|
|
127
|
-
}
|
|
128
|
-
coerced = Number(trimmed);
|
|
129
|
-
if (isNaN(coerced)) {
|
|
130
|
-
throw new Error(getMessages().coercionFailed('number', value));
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else if (typeof value === 'boolean') {
|
|
134
|
-
coerced = value ? 1 : 0;
|
|
135
|
-
}
|
|
136
|
-
else if (value === null || value === undefined) {
|
|
137
|
-
throw new Error(getMessages().coercionFailed('number', value));
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
coerced = Number(value);
|
|
141
|
-
if (isNaN(coerced)) {
|
|
142
|
-
throw new Error(getMessages().coercionFailed('number', value));
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
// Use parent validation with coerced value
|
|
146
|
-
return super.parse(coerced);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Safely parse and coerce a value to number
|
|
150
|
-
*/
|
|
151
|
-
safeParse(value) {
|
|
152
|
-
try {
|
|
153
|
-
return { success: true, data: this.parse(value) };
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
return { success: false, error: error };
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=number.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/coercion/number.ts"],"names":[],"mappings":"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","sourcesContent":["import { VldNumber } from '../validators/number';\r\nimport { ParseResult } from '../validators/base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Number coercion validator that attempts to convert values to numbers\r\n */\r\nexport class VldCoerceNumber extends VldNumber {\r\n protected constructor(config?: any) {\r\n super(config);\r\n }\r\n \r\n /**\r\n * Create a new coerce number validator\r\n */\r\n static create(): VldCoerceNumber {\r\n return new VldCoerceNumber();\r\n }\r\n \r\n // Override all chain methods to return VldCoerceNumber instances\r\n min(value: number, message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v >= value],\r\n errorMessage: message || getMessages().numberMin(value)\r\n });\r\n }\r\n \r\n max(value: number, message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v <= value],\r\n errorMessage: message || getMessages().numberMax(value)\r\n });\r\n }\r\n \r\n int(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isInteger(v)],\r\n errorMessage: message || getMessages().numberInt\r\n });\r\n }\r\n \r\n positive(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v > 0],\r\n errorMessage: message || getMessages().numberPositive\r\n });\r\n }\r\n \r\n negative(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v < 0],\r\n errorMessage: message || getMessages().numberNegative\r\n });\r\n }\r\n \r\n nonnegative(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v >= 0],\r\n errorMessage: message || getMessages().numberNonnegative\r\n });\r\n }\r\n \r\n nonpositive(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v <= 0],\r\n errorMessage: message || getMessages().numberNonpositive\r\n });\r\n }\r\n \r\n finite(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isFinite(v)],\r\n errorMessage: message || getMessages().numberFinite\r\n });\r\n }\r\n \r\n safe(message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isSafeInteger(v)],\r\n errorMessage: message || getMessages().numberSafe\r\n });\r\n }\r\n \r\n multipleOf(value: number, message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => {\r\n // BUG-004 FIX: Use epsilon comparison for floating point precision (consistent with VldNumber)\r\n const remainder = Math.abs(v % value);\r\n return remainder < Number.EPSILON || Math.abs(remainder - Math.abs(value)) < Number.EPSILON;\r\n }],\r\n errorMessage: message || getMessages().numberMultipleOf(value)\r\n });\r\n }\r\n \r\n step(value: number, message?: string): VldCoerceNumber {\r\n return this.multipleOf(value, message);\r\n }\r\n \r\n between(min: number, max: number, message?: string): VldCoerceNumber {\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => v >= min && v <= max],\r\n errorMessage: message || `Number must be between ${min} and ${max}`\r\n });\r\n }\r\n \r\n even(message?: string): VldCoerceNumber {\r\n // BUG-NEW-007 FIX: Add integer check before even/odd validation\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => {\r\n if (!Number.isInteger(v)) {\r\n return false;\r\n }\r\n return v % 2 === 0;\r\n }],\r\n errorMessage: message || 'Number must be even'\r\n });\r\n }\r\n \r\n odd(message?: string): VldCoerceNumber {\r\n // BUG-NEW-007 FIX: Add integer check before even/odd validation\r\n return new VldCoerceNumber({\r\n checks: [...this.config.checks, (v: number) => {\r\n if (!Number.isInteger(v)) {\r\n return false;\r\n }\r\n return v % 2 !== 0;\r\n }],\r\n errorMessage: message || 'Number must be odd'\r\n });\r\n }\r\n \r\n /**\r\n * Parse and coerce a value to number\r\n */\r\n parse(value: unknown): number {\r\n // If it's already a valid number, use parent validation directly\r\n if (typeof value === 'number' && !isNaN(value)) {\r\n return super.parse(value);\r\n }\r\n \r\n let coerced: number;\r\n \r\n if (typeof value === 'string') {\r\n const trimmed = value.trim();\r\n if (trimmed === '') {\r\n throw new Error(getMessages().coercionFailed('number', value));\r\n }\r\n coerced = Number(trimmed);\r\n if (isNaN(coerced)) {\r\n throw new Error(getMessages().coercionFailed('number', value));\r\n }\r\n } else if (typeof value === 'boolean') {\r\n coerced = value ? 1 : 0;\r\n } else if (value === null || value === undefined) {\r\n throw new Error(getMessages().coercionFailed('number', value));\r\n } else {\r\n coerced = Number(value);\r\n if (isNaN(coerced)) {\r\n throw new Error(getMessages().coercionFailed('number', value));\r\n }\r\n }\r\n \r\n // Use parent validation with coerced value\r\n return super.parse(coerced);\r\n }\r\n \r\n /**\r\n * Safely parse and coerce a value to number\r\n */\r\n safeParse(value: unknown): ParseResult<number> {\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}"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/coercion/string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,wFAAwF;AACxF,yEAAyE;AAEzE;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAsB,MAAY;QAChC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,iEAAiE;IACjE,GAAG,CAAC,MAAc,EAAE,OAAgB;QAClC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;YAClE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,OAAgB;QAClC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;YAClE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,OAAgB;QACrC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;YACnE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAgB;QACpB,yEAAyE;QACzE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;QACtD,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,WAAW;SACnD,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,OAAgB;QAClB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,uGAAuG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/J,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,SAAS;SACjD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAgB;QACnB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,4EAA4E,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpI,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,UAAU;SAClD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,OAAgB;QACrC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,WAAW;SACnD,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACvE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACvE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACvC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,OAAgB;QACtC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACjE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,OAAgB;QACpC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,OAAgB;QACpC,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC/D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,OAAgB;QACjB,MAAM,IAAI,GAAG,6FAA6F,CAAC;QAC3G,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;oBAC5C,gDAAgD;oBAChD,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG;wBAAE,OAAO,KAAK,CAAC;oBACjC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC,CAAC;YACF,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,QAAQ;SAChD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAgB;QACnB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,6FAA6F,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrJ,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,UAAU;SAClD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAgB;QACnB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;oBAC5C,oDAAoD;oBACpD,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC,CAAC;YACF,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,UAAU;SAClD,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,OAAgB;QACvB,OAAO,IAAI,eAAe,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO,IAAI,WAAW,EAAE,CAAC,WAAW;SACnD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAc;QAClB,0DAA0D;QAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,uCAAuC;YACvC,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACjE,CAAC;YAED,2CAA2C;YAC3C,sEAAsE;YACtE,sGAAsG;YACtG,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAExD,8CAA8C;YAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,uCAAuC;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAe,CAAC;QAEpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,2BAA2B;YAC3B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,4BAA4B;YAC5B,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACrC,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,0BAA0B;YAC1B,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,sDAAsD;YACtD,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,iDAAiD;YACjD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBAC1B,+BAA+B;gBAC/B,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YAChC,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,gEAAgE;gBAChE,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;gBACnC,2CAA2C;gBAC3C,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7B,CAAC;iBAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAClC,sCAAsC;gBACtC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,oFAAoF;gBACpF,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,0BAA0B;QAC1B,uCAAuC;QACvC,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,2CAA2C;QAC3C,sEAAsE;QACtE,sGAAsG;QACtG,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAE1D,6CAA6C;QAC7C,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,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 { VldString } from '../validators/string';\r\nimport { ParseResult } from '../validators/base';\r\nimport { getMessages } from '../locales';\r\nimport { isValidIPv6 } from '../utils/ip-validation';\r\n\r\n// BUG-NEW-001 FIX: IPv6 validation moved to shared utility (src/utils/ip-validation.ts)\r\n// to eliminate code duplication between string.ts and coercion/string.ts\r\n\r\n/**\r\n * String coercion validator that attempts to convert values to strings\r\n */\r\nexport class VldCoerceString extends VldString {\r\n protected constructor(config?: any) {\r\n super(config);\r\n }\r\n \r\n /**\r\n * Create a new coerce string validator\r\n */\r\n static create(): VldCoerceString {\r\n return new VldCoerceString();\r\n }\r\n \r\n // Override all chain methods to return VldCoerceString instances\r\n min(length: number, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.length >= length],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringMin(length)\r\n });\r\n }\r\n \r\n max(length: number, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.length <= length],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringMax(length)\r\n });\r\n }\r\n \r\n length(length: number, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.length === length],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringLength(length)\r\n });\r\n }\r\n \r\n email(message?: string): VldCoerceString {\r\n // BUG-007 FIX: Use simpler, ReDoS-safe regex (consistent with VldString)\r\n const FAST_EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => FAST_EMAIL_REGEX.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringEmail\r\n });\r\n }\r\n \r\n url(message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringUrl\r\n });\r\n }\r\n \r\n uuid(message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringUuid\r\n });\r\n }\r\n \r\n regex(pattern: RegExp, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => pattern.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringRegex\r\n });\r\n }\r\n \r\n trim(): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: this.config.checks,\r\n transforms: [...this.config.transforms, (v: string) => v.trim()],\r\n errorMessage: this.config.errorMessage\r\n });\r\n }\r\n \r\n toLowerCase(): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: this.config.checks,\r\n transforms: [...this.config.transforms, (v: string) => v.toLowerCase()],\r\n errorMessage: this.config.errorMessage\r\n });\r\n }\r\n \r\n toUpperCase(): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: this.config.checks,\r\n transforms: [...this.config.transforms, (v: string) => v.toUpperCase()],\r\n errorMessage: this.config.errorMessage\r\n });\r\n }\r\n \r\n startsWith(str: string, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.startsWith(str)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringStartsWith(str)\r\n });\r\n }\r\n \r\n endsWith(str: string, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.endsWith(str)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringEndsWith(str)\r\n });\r\n }\r\n \r\n includes(str: string, message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.includes(str)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringIncludes(str)\r\n });\r\n }\r\n \r\n ip(message?: string): VldCoerceString {\r\n const ipv4 = /^(?:(?: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]?)$/;\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => {\r\n // Prevent ReDoS: Check length before validation\r\n if (v.length > 100) return false;\r\n return ipv4.test(v) || isValidIPv6(v);\r\n }],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringIp\r\n });\r\n }\r\n \r\n ipv4(message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => /^(?:(?: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]?)$/.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringIpv4\r\n });\r\n }\r\n \r\n ipv6(message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => {\r\n // Use safe IPv6 validation to prevent ReDoS attacks\r\n return isValidIPv6(v);\r\n }],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringIpv6\r\n });\r\n }\r\n \r\n nonempty(message?: string): VldCoerceString {\r\n return new VldCoerceString({\r\n checks: [...this.config.checks, (v: string) => v.length > 0],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringEmpty\r\n });\r\n }\r\n \r\n /**\r\n * Parse and coerce a value to string\r\n */\r\n parse(value: unknown): string {\r\n // If it's already a string, apply security controls first\r\n if (typeof value === 'string') {\r\n // Enforce length limits to prevent DoS\r\n if (value.length > 1000000) {\r\n throw new Error(getMessages().coercionFailed('string', value));\r\n }\r\n\r\n // Sanitize control characters for security\r\n // Remove characters that could cause issues in logs, databases, or UI\r\n // eslint-disable-next-line no-control-regex -- Intentional removal of control characters for security\r\n const sanitized = value.replace(/[\\x00-\\x1F\\x7F]/g, '');\r\n\r\n // Use parent validation with sanitized string\r\n return super.parse(sanitized);\r\n }\r\n\r\n // Handle null and undefined explicitly\r\n if (value === null || value === undefined) {\r\n throw new Error(getMessages().coercionFailed('string', value));\r\n }\r\n\r\n // Safe type coercion with security measures\r\n let coerced: string;\r\n\r\n if (typeof value === 'number') {\r\n // Numbers: safe conversion\r\n coerced = String(value);\r\n } else if (typeof value === 'boolean') {\r\n // Booleans: safe conversion\r\n coerced = value ? 'true' : 'false';\r\n } else if (typeof value === 'bigint') {\r\n // BigInt: safe conversion\r\n coerced = value.toString();\r\n } else if (typeof value === 'symbol') {\r\n // Symbols: explicit error to prevent potential issues\r\n throw new Error(getMessages().coercionFailed('string', value));\r\n } else if (typeof value === 'object') {\r\n // Objects: only allow specific safe object types\r\n if (value instanceof Date) {\r\n // Dates: convert to ISO string\r\n coerced = value.toISOString();\r\n } else if (Array.isArray(value)) {\r\n // Arrays: convert to comma-separated string (original behavior)\r\n coerced = value.join(',');\r\n } else if (value instanceof RegExp) {\r\n // RegExp: convert to string representation\r\n coerced = value.toString();\r\n } else if (value instanceof Error) {\r\n // Errors: use message property (safe)\r\n coerced = value.message || value.toString();\r\n } else {\r\n // For plain objects, use the original String() behavior for backwards compatibility\r\n coerced = String(value);\r\n }\r\n } else {\r\n // Fallback for other types\r\n coerced = String(value);\r\n }\r\n\r\n // Apply security controls\r\n // Enforce length limits to prevent DoS\r\n if (coerced.length > 1000000) {\r\n throw new Error(getMessages().coercionFailed('string', value));\r\n }\r\n\r\n // Sanitize control characters for security\r\n // Remove characters that could cause issues in logs, databases, or UI\r\n // eslint-disable-next-line no-control-regex -- Intentional removal of control characters for security\r\n const sanitized = coerced.replace(/[\\x00-\\x1F\\x7F]/g, '');\r\n\r\n // Use parent validation with sanitized value\r\n return super.parse(sanitized);\r\n }\r\n \r\n /**\r\n * Safely parse and coerce a value to string\r\n */\r\n safeParse(value: unknown): ParseResult<string> {\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/compat/index.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VLD Compatibility Layer
|
|
3
|
-
*
|
|
4
|
-
* This module provides internal implementations of @oxog ecosystem features
|
|
5
|
-
* that can be replaced with actual @oxog packages when available.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Result pattern (@oxog/types compatibility)
|
|
9
|
-
* - Event emitter (@oxog/emitter compatibility)
|
|
10
|
-
*/
|
|
11
|
-
export { Ok, Err, success, failure, isOk, isErr, isResult, unwrap, unwrapOr, map, mapErr, flatMap, match, tryCatch, tryCatchAsync, all, fromNullable, ResultUtils } from './result.js';
|
|
12
|
-
// Event emitter value exports
|
|
13
|
-
export { createEmitter, createEventBus, withEmitter } from './emitter.js';
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/dist/compat/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,EAAE,EACF,GAAG,EACH,OAAO,EACP,OAAO,EACP,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EACN,OAAO,EACP,KAAK,EACL,QAAQ,EACR,aAAa,EACb,GAAG,EACH,YAAY,EACZ,WAAW,EACZ,MAAM,UAAU,CAAC;AAKlB,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC","sourcesContent":["/**\r\n * VLD Compatibility Layer\r\n *\r\n * This module provides internal implementations of @oxog ecosystem features\r\n * that can be replaced with actual @oxog packages when available.\r\n *\r\n * Features:\r\n * - Result pattern (@oxog/types compatibility)\r\n * - Event emitter (@oxog/emitter compatibility)\r\n */\r\n\r\n// Result pattern exports (Ok and Err are both types and values)\r\nexport type { Result, VldResult } from './result';\r\n\r\nexport {\r\n Ok,\r\n Err,\r\n success,\r\n failure,\r\n isOk,\r\n isErr,\r\n isResult,\r\n unwrap,\r\n unwrapOr,\r\n map,\r\n mapErr,\r\n flatMap,\r\n match,\r\n tryCatch,\r\n tryCatchAsync,\r\n all,\r\n fromNullable,\r\n ResultUtils\r\n} from './result';\r\n\r\n// Event emitter type exports\r\nexport type { EventMap, EventHandler, ListenerOptions, Emitter, VldEventHandler } from './emitter';\r\n\r\n// Event emitter value exports\r\nexport { createEmitter, createEventBus, withEmitter } from './emitter';\r\n"]}
|
package/dist/events.js
DELETED
package/dist/events.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG","sourcesContent":["/**\r\n * VLD Event System\r\n *\r\n * This module defines all VLD-specific events for validation lifecycle,\r\n * plugin management, and debugging.\r\n */\r\n\r\nimport type { EventMap } from './compat/emitter';\r\nimport type { VldError } from './errors';\r\nimport type { VldBase } from './validators/base';\r\n\r\n/**\r\n * VLD Event definitions\r\n */\r\nexport interface VldEvents extends EventMap {\r\n // ============================================\r\n // Parse Lifecycle Events\r\n // ============================================\r\n\r\n /** Emitted when parsing starts */\r\n 'vld:parse:start': {\r\n value: unknown;\r\n schema: VldBase<unknown, unknown>;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when parsing succeeds */\r\n 'vld:parse:success': {\r\n data: unknown;\r\n schema: VldBase<unknown, unknown>;\r\n duration: number;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when parsing fails */\r\n 'vld:parse:error': {\r\n error: VldError;\r\n schema: VldBase<unknown, unknown>;\r\n duration: number;\r\n timestamp: number;\r\n };\r\n\r\n // ============================================\r\n // Validation Detail Events\r\n // ============================================\r\n\r\n /** Emitted for each field validation in objects */\r\n 'vld:validate:field': {\r\n key: string;\r\n value: unknown;\r\n valid: boolean;\r\n path: (string | number)[];\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when a transform is applied */\r\n 'vld:validate:transform': {\r\n before: unknown;\r\n after: unknown;\r\n schemaName: string;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when a refinement is checked */\r\n 'vld:validate:refine': {\r\n value: unknown;\r\n passed: boolean;\r\n message?: string;\r\n timestamp: number;\r\n };\r\n\r\n // ============================================\r\n // Plugin Events\r\n // ============================================\r\n\r\n /** Emitted when a plugin is registered */\r\n 'vld:plugin:registered': {\r\n name: string;\r\n version: string;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when a plugin encounters an error */\r\n 'vld:plugin:error': {\r\n name: string;\r\n error: Error;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when a custom validator is registered */\r\n 'vld:validator:registered': {\r\n name: string;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted when a custom codec is registered */\r\n 'vld:codec:registered': {\r\n name: string;\r\n timestamp: number;\r\n };\r\n\r\n // ============================================\r\n // Locale Events\r\n // ============================================\r\n\r\n /** Emitted when locale is changed */\r\n 'vld:locale:changed': {\r\n from: string;\r\n to: string;\r\n timestamp: number;\r\n };\r\n\r\n // ============================================\r\n // Debug Events\r\n // ============================================\r\n\r\n /** Emitted for debug logging */\r\n 'vld:debug': {\r\n level: 'debug' | 'info' | 'warn' | 'error';\r\n message: string;\r\n data?: unknown;\r\n timestamp: number;\r\n };\r\n\r\n /** Emitted for performance metrics */\r\n 'vld:metrics': {\r\n operation: string;\r\n duration: number;\r\n success: boolean;\r\n metadata?: Record<string, unknown>;\r\n timestamp: number;\r\n };\r\n}\r\n\r\n/**\r\n * Event payload types for type-safe event handling\r\n */\r\nexport type VldEventPayload<K extends keyof VldEvents> = VldEvents[K];\r\n\r\n/**\r\n * Parse start event payload\r\n */\r\nexport type ParseStartEvent = VldEvents['vld:parse:start'];\r\n\r\n/**\r\n * Parse success event payload\r\n */\r\nexport type ParseSuccessEvent = VldEvents['vld:parse:success'];\r\n\r\n/**\r\n * Parse error event payload\r\n */\r\nexport type ParseErrorEvent = VldEvents['vld:parse:error'];\r\n\r\n/**\r\n * Field validation event payload\r\n */\r\nexport type FieldValidationEvent = VldEvents['vld:validate:field'];\r\n\r\n/**\r\n * Transform event payload\r\n */\r\nexport type TransformEvent = VldEvents['vld:validate:transform'];\r\n\r\n/**\r\n * Plugin registered event payload\r\n */\r\nexport type PluginRegisteredEvent = VldEvents['vld:plugin:registered'];\r\n\r\n/**\r\n * Locale changed event payload\r\n */\r\nexport type LocaleChangedEvent = VldEvents['vld:locale:changed'];\r\n\r\n/**\r\n * Debug event payload\r\n */\r\nexport type DebugEvent = VldEvents['vld:debug'];\r\n\r\n/**\r\n * Metrics event payload\r\n */\r\nexport type MetricsEvent = VldEvents['vld:metrics'];\r\n"]}
|
package/dist/guards.d.ts
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VLD Type Guards
|
|
3
|
-
*
|
|
4
|
-
* Bu modül VLD için type guard fonksiyonlarını içerir.
|
|
5
|
-
* Result pattern ve VLD-specific type guard'ları burada tanımlanır.
|
|
6
|
-
*/
|
|
7
|
-
import { isOk, isErr, isResult, type Result, type Ok, type Err } from './compat/result.js';
|
|
8
|
-
import { VldError, type VldIssue } from './errors.js';
|
|
9
|
-
import { VldBase } from './validators/base.js';
|
|
10
|
-
export { isOk, isErr, isResult };
|
|
11
|
-
/**
|
|
12
|
-
* Değerin VldError olup olmadığını kontrol eder
|
|
13
|
-
*/
|
|
14
|
-
export declare function isVldError(value: unknown): value is VldError;
|
|
15
|
-
/**
|
|
16
|
-
* Değerin VldIssue olup olmadığını kontrol eder
|
|
17
|
-
*/
|
|
18
|
-
export declare function isVldIssue(value: unknown): value is VldIssue;
|
|
19
|
-
/**
|
|
20
|
-
* Değerin VldBase validator olup olmadığını kontrol eder
|
|
21
|
-
*/
|
|
22
|
-
export declare function isValidator<TInput = unknown, TOutput = unknown>(value: unknown): value is VldBase<TInput, TOutput>;
|
|
23
|
-
/**
|
|
24
|
-
* Parse sonucunun başarılı olup olmadığını kontrol eder
|
|
25
|
-
*/
|
|
26
|
-
export declare function isParseSuccess<T>(result: Result<T, VldError>): result is Ok<T>;
|
|
27
|
-
/**
|
|
28
|
-
* Parse sonucunun başarısız olup olmadığını kontrol eder
|
|
29
|
-
*/
|
|
30
|
-
export declare function isParseError<T>(result: Result<T, VldError>): result is Err<VldError>;
|
|
31
|
-
/**
|
|
32
|
-
* Değerin null olup olmadığını kontrol eder
|
|
33
|
-
*/
|
|
34
|
-
export declare function isNull(value: unknown): value is null;
|
|
35
|
-
/**
|
|
36
|
-
* Değerin undefined olup olmadığını kontrol eder
|
|
37
|
-
*/
|
|
38
|
-
export declare function isUndefined(value: unknown): value is undefined;
|
|
39
|
-
/**
|
|
40
|
-
* Değerin nullish olup olmadığını kontrol eder (null | undefined)
|
|
41
|
-
*/
|
|
42
|
-
export declare function isNullish(value: unknown): value is null | undefined;
|
|
43
|
-
/**
|
|
44
|
-
* Değerin string olup olmadığını kontrol eder
|
|
45
|
-
*/
|
|
46
|
-
export declare function isString(value: unknown): value is string;
|
|
47
|
-
/**
|
|
48
|
-
* Değerin number olup olmadığını kontrol eder
|
|
49
|
-
*/
|
|
50
|
-
export declare function isNumber(value: unknown): value is number;
|
|
51
|
-
/**
|
|
52
|
-
* Değerin finite number olup olmadığını kontrol eder
|
|
53
|
-
*/
|
|
54
|
-
export declare function isFiniteNumber(value: unknown): value is number;
|
|
55
|
-
/**
|
|
56
|
-
* Değerin integer olup olmadığını kontrol eder
|
|
57
|
-
*/
|
|
58
|
-
export declare function isInteger(value: unknown): value is number;
|
|
59
|
-
/**
|
|
60
|
-
* Değerin safe integer olup olmadığını kontrol eder
|
|
61
|
-
*/
|
|
62
|
-
export declare function isSafeInteger(value: unknown): value is number;
|
|
63
|
-
/**
|
|
64
|
-
* Değerin boolean olup olmadığını kontrol eder
|
|
65
|
-
*/
|
|
66
|
-
export declare function isBoolean(value: unknown): value is boolean;
|
|
67
|
-
/**
|
|
68
|
-
* Değerin bigint olup olmadığını kontrol eder
|
|
69
|
-
*/
|
|
70
|
-
export declare function isBigInt(value: unknown): value is bigint;
|
|
71
|
-
/**
|
|
72
|
-
* Değerin symbol olup olmadığını kontrol eder
|
|
73
|
-
*/
|
|
74
|
-
export declare function isSymbol(value: unknown): value is symbol;
|
|
75
|
-
/**
|
|
76
|
-
* Değerin function olup olmadığını kontrol eder
|
|
77
|
-
*/
|
|
78
|
-
export declare function isFunction(value: unknown): value is (...args: unknown[]) => unknown;
|
|
79
|
-
/**
|
|
80
|
-
* Değerin array olup olmadığını kontrol eder
|
|
81
|
-
*/
|
|
82
|
-
export declare function isArray(value: unknown): value is unknown[];
|
|
83
|
-
/**
|
|
84
|
-
* Değerin object olup olmadığını kontrol eder (null ve array hariç)
|
|
85
|
-
*/
|
|
86
|
-
export declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
87
|
-
/**
|
|
88
|
-
* Değerin plain object olup olmadığını kontrol eder
|
|
89
|
-
*/
|
|
90
|
-
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
91
|
-
/**
|
|
92
|
-
* Değerin Date olup olmadığını kontrol eder
|
|
93
|
-
*/
|
|
94
|
-
export declare function isDate(value: unknown): value is Date;
|
|
95
|
-
/**
|
|
96
|
-
* Değerin valid Date olup olmadığını kontrol eder
|
|
97
|
-
*/
|
|
98
|
-
export declare function isValidDate(value: unknown): value is Date;
|
|
99
|
-
/**
|
|
100
|
-
* Değerin Map olup olmadığını kontrol eder
|
|
101
|
-
*/
|
|
102
|
-
export declare function isMap(value: unknown): value is Map<unknown, unknown>;
|
|
103
|
-
/**
|
|
104
|
-
* Değerin Set olup olmadığını kontrol eder
|
|
105
|
-
*/
|
|
106
|
-
export declare function isSet(value: unknown): value is Set<unknown>;
|
|
107
|
-
/**
|
|
108
|
-
* Değerin Promise olup olmadığını kontrol eder
|
|
109
|
-
*/
|
|
110
|
-
export declare function isPromise(value: unknown): value is Promise<unknown>;
|
|
111
|
-
/**
|
|
112
|
-
* Değerin NaN olup olmadığını kontrol eder
|
|
113
|
-
*/
|
|
114
|
-
export declare function isNaN(value: unknown): value is number;
|
|
115
|
-
/**
|
|
116
|
-
* Değerin Uint8Array olup olmadığını kontrol eder
|
|
117
|
-
*/
|
|
118
|
-
export declare function isUint8Array(value: unknown): value is Uint8Array;
|
|
119
|
-
/**
|
|
120
|
-
* Değerin ArrayBuffer olup olmadığını kontrol eder
|
|
121
|
-
*/
|
|
122
|
-
export declare function isArrayBuffer(value: unknown): value is ArrayBuffer;
|
|
123
|
-
/**
|
|
124
|
-
* Değerin geçerli email formatında olup olmadığını kontrol eder
|
|
125
|
-
*/
|
|
126
|
-
export declare function isEmail(value: unknown): value is string;
|
|
127
|
-
/**
|
|
128
|
-
* Değerin geçerli UUID formatında olup olmadığını kontrol eder
|
|
129
|
-
*/
|
|
130
|
-
export declare function isUUID(value: unknown): value is string;
|
|
131
|
-
/**
|
|
132
|
-
* Değerin geçerli URL formatında olup olmadığını kontrol eder
|
|
133
|
-
*/
|
|
134
|
-
export declare function isURL(value: unknown): value is string;
|
|
135
|
-
/**
|
|
136
|
-
* Değerin non-empty string olup olmadığını kontrol eder
|
|
137
|
-
*/
|
|
138
|
-
export declare function isNonEmptyString(value: unknown): value is string;
|
|
139
|
-
/**
|
|
140
|
-
* Değerin empty string olup olmadığını kontrol eder
|
|
141
|
-
*/
|
|
142
|
-
export declare function isEmptyString(value: unknown): value is '';
|
|
143
|
-
//# sourceMappingURL=guards.d.ts.map
|
package/dist/guards.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"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"}
|
package/dist/guards.js
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VLD Type Guards
|
|
3
|
-
*
|
|
4
|
-
* Bu modül VLD için type guard fonksiyonlarını içerir.
|
|
5
|
-
* Result pattern ve VLD-specific type guard'ları burada tanımlanır.
|
|
6
|
-
*/
|
|
7
|
-
import { isOk, isErr, isResult } from './compat/result.js';
|
|
8
|
-
import { VldError } from './errors.js';
|
|
9
|
-
import { VldBase } from './validators/base.js';
|
|
10
|
-
// ============================================================================
|
|
11
|
-
// Re-export Result Guards
|
|
12
|
-
// ============================================================================
|
|
13
|
-
export { isOk, isErr, isResult };
|
|
14
|
-
// ============================================================================
|
|
15
|
-
// VLD-Specific Guards
|
|
16
|
-
// ============================================================================
|
|
17
|
-
/**
|
|
18
|
-
* Değerin VldError olup olmadığını kontrol eder
|
|
19
|
-
*/
|
|
20
|
-
export function isVldError(value) {
|
|
21
|
-
return value instanceof VldError;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Değerin VldIssue olup olmadığını kontrol eder
|
|
25
|
-
*/
|
|
26
|
-
export function isVldIssue(value) {
|
|
27
|
-
if (value === null || value === undefined)
|
|
28
|
-
return false;
|
|
29
|
-
if (typeof value !== 'object')
|
|
30
|
-
return false;
|
|
31
|
-
const obj = value;
|
|
32
|
-
return (typeof obj.code === 'string' &&
|
|
33
|
-
Array.isArray(obj.path) &&
|
|
34
|
-
typeof obj.message === 'string');
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Değerin VldBase validator olup olmadığını kontrol eder
|
|
38
|
-
*/
|
|
39
|
-
export function isValidator(value) {
|
|
40
|
-
return value instanceof VldBase;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Parse sonucunun başarılı olup olmadığını kontrol eder
|
|
44
|
-
*/
|
|
45
|
-
export function isParseSuccess(result) {
|
|
46
|
-
return isOk(result);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Parse sonucunun başarısız olup olmadığını kontrol eder
|
|
50
|
-
*/
|
|
51
|
-
export function isParseError(result) {
|
|
52
|
-
return isErr(result);
|
|
53
|
-
}
|
|
54
|
-
// ============================================================================
|
|
55
|
-
// Value Type Guards
|
|
56
|
-
// ============================================================================
|
|
57
|
-
/**
|
|
58
|
-
* Değerin null olup olmadığını kontrol eder
|
|
59
|
-
*/
|
|
60
|
-
export function isNull(value) {
|
|
61
|
-
return value === null;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Değerin undefined olup olmadığını kontrol eder
|
|
65
|
-
*/
|
|
66
|
-
export function isUndefined(value) {
|
|
67
|
-
return value === undefined;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Değerin nullish olup olmadığını kontrol eder (null | undefined)
|
|
71
|
-
*/
|
|
72
|
-
export function isNullish(value) {
|
|
73
|
-
return value === null || value === undefined;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Değerin string olup olmadığını kontrol eder
|
|
77
|
-
*/
|
|
78
|
-
export function isString(value) {
|
|
79
|
-
return typeof value === 'string';
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Değerin number olup olmadığını kontrol eder
|
|
83
|
-
*/
|
|
84
|
-
export function isNumber(value) {
|
|
85
|
-
return typeof value === 'number' && !Number.isNaN(value);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Değerin finite number olup olmadığını kontrol eder
|
|
89
|
-
*/
|
|
90
|
-
export function isFiniteNumber(value) {
|
|
91
|
-
return typeof value === 'number' && Number.isFinite(value);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Değerin integer olup olmadığını kontrol eder
|
|
95
|
-
*/
|
|
96
|
-
export function isInteger(value) {
|
|
97
|
-
return typeof value === 'number' && Number.isInteger(value);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Değerin safe integer olup olmadığını kontrol eder
|
|
101
|
-
*/
|
|
102
|
-
export function isSafeInteger(value) {
|
|
103
|
-
return typeof value === 'number' && Number.isSafeInteger(value);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Değerin boolean olup olmadığını kontrol eder
|
|
107
|
-
*/
|
|
108
|
-
export function isBoolean(value) {
|
|
109
|
-
return typeof value === 'boolean';
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Değerin bigint olup olmadığını kontrol eder
|
|
113
|
-
*/
|
|
114
|
-
export function isBigInt(value) {
|
|
115
|
-
return typeof value === 'bigint';
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Değerin symbol olup olmadığını kontrol eder
|
|
119
|
-
*/
|
|
120
|
-
export function isSymbol(value) {
|
|
121
|
-
return typeof value === 'symbol';
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Değerin function olup olmadığını kontrol eder
|
|
125
|
-
*/
|
|
126
|
-
export function isFunction(value) {
|
|
127
|
-
return typeof value === 'function';
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Değerin array olup olmadığını kontrol eder
|
|
131
|
-
*/
|
|
132
|
-
export function isArray(value) {
|
|
133
|
-
return Array.isArray(value);
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Değerin object olup olmadığını kontrol eder (null ve array hariç)
|
|
137
|
-
*/
|
|
138
|
-
export function isObject(value) {
|
|
139
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Değerin plain object olup olmadığını kontrol eder
|
|
143
|
-
*/
|
|
144
|
-
export function isPlainObject(value) {
|
|
145
|
-
if (typeof value !== 'object' || value === null)
|
|
146
|
-
return false;
|
|
147
|
-
const proto = Object.getPrototypeOf(value);
|
|
148
|
-
return proto === null || proto === Object.prototype;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Değerin Date olup olmadığını kontrol eder
|
|
152
|
-
*/
|
|
153
|
-
export function isDate(value) {
|
|
154
|
-
return value instanceof Date && !Number.isNaN(value.getTime());
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Değerin valid Date olup olmadığını kontrol eder
|
|
158
|
-
*/
|
|
159
|
-
export function isValidDate(value) {
|
|
160
|
-
return value instanceof Date && !Number.isNaN(value.getTime());
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Değerin Map olup olmadığını kontrol eder
|
|
164
|
-
*/
|
|
165
|
-
export function isMap(value) {
|
|
166
|
-
return value instanceof Map;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Değerin Set olup olmadığını kontrol eder
|
|
170
|
-
*/
|
|
171
|
-
export function isSet(value) {
|
|
172
|
-
return value instanceof Set;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Değerin Promise olup olmadığını kontrol eder
|
|
176
|
-
*/
|
|
177
|
-
export function isPromise(value) {
|
|
178
|
-
return (value instanceof Promise ||
|
|
179
|
-
(typeof value === 'object' &&
|
|
180
|
-
value !== null &&
|
|
181
|
-
typeof value.then === 'function' &&
|
|
182
|
-
typeof value.catch === 'function'));
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Değerin NaN olup olmadığını kontrol eder
|
|
186
|
-
*/
|
|
187
|
-
export function isNaN(value) {
|
|
188
|
-
return typeof value === 'number' && Number.isNaN(value);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Değerin Uint8Array olup olmadığını kontrol eder
|
|
192
|
-
*/
|
|
193
|
-
export function isUint8Array(value) {
|
|
194
|
-
return value instanceof Uint8Array;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Değerin ArrayBuffer olup olmadığını kontrol eder
|
|
198
|
-
*/
|
|
199
|
-
export function isArrayBuffer(value) {
|
|
200
|
-
return value instanceof ArrayBuffer;
|
|
201
|
-
}
|
|
202
|
-
// ============================================================================
|
|
203
|
-
// String Format Guards
|
|
204
|
-
// ============================================================================
|
|
205
|
-
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
206
|
-
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
207
|
-
const URL_REGEX = /^https?:\/\/.+/i;
|
|
208
|
-
/**
|
|
209
|
-
* Değerin geçerli email formatında olup olmadığını kontrol eder
|
|
210
|
-
*/
|
|
211
|
-
export function isEmail(value) {
|
|
212
|
-
return typeof value === 'string' && EMAIL_REGEX.test(value);
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Değerin geçerli UUID formatında olup olmadığını kontrol eder
|
|
216
|
-
*/
|
|
217
|
-
export function isUUID(value) {
|
|
218
|
-
return typeof value === 'string' && UUID_REGEX.test(value);
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Değerin geçerli URL formatında olup olmadığını kontrol eder
|
|
222
|
-
*/
|
|
223
|
-
export function isURL(value) {
|
|
224
|
-
return typeof value === 'string' && URL_REGEX.test(value);
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Değerin non-empty string olup olmadığını kontrol eder
|
|
228
|
-
*/
|
|
229
|
-
export function isNonEmptyString(value) {
|
|
230
|
-
return typeof value === 'string' && value.length > 0;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Değerin empty string olup olmadığını kontrol eder
|
|
234
|
-
*/
|
|
235
|
-
export function isEmptyString(value) {
|
|
236
|
-
return value === '';
|
|
237
|
-
}
|
|
238
|
-
//# sourceMappingURL=guards.js.map
|