@oxog/vld 2.4.0 → 3.0.4
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 +165 -1
- package/README.md +113 -1
- package/dist/chunks/errors-core-BU14-Dk8.js +1 -0
- package/dist/cjs/chunks/errors-core-C0mA6tfa.cjs +1 -0
- package/dist/cjs/cli/bin.cjs +1 -1
- package/dist/cjs/codecs/index.cjs +1 -1
- package/dist/cjs/coercion/index.cjs +1 -1
- package/dist/cjs/compile.cjs +1 -1
- package/dist/cjs/errors.cjs +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/locales/af.cjs +1 -1
- package/dist/cjs/locales/ar.cjs +1 -1
- package/dist/cjs/locales/bn.cjs +1 -1
- package/dist/cjs/locales/da.cjs +1 -1
- package/dist/cjs/locales/de.cjs +1 -1
- package/dist/cjs/locales/en.cjs +1 -1
- package/dist/cjs/locales/es-MX.cjs +1 -1
- package/dist/cjs/locales/es.cjs +1 -1
- package/dist/cjs/locales/fi.cjs +1 -1
- package/dist/cjs/locales/fr.cjs +1 -1
- package/dist/cjs/locales/gu.cjs +1 -1
- package/dist/cjs/locales/hi.cjs +1 -1
- package/dist/cjs/locales/id.cjs +1 -1
- package/dist/cjs/locales/it.cjs +1 -1
- package/dist/cjs/locales/ja.cjs +1 -1
- package/dist/cjs/locales/kn.cjs +1 -1
- package/dist/cjs/locales/ko.cjs +1 -1
- package/dist/cjs/locales/ne.cjs +1 -1
- package/dist/cjs/locales/nl.cjs +1 -1
- package/dist/cjs/locales/no.cjs +1 -1
- package/dist/cjs/locales/pl.cjs +1 -1
- package/dist/cjs/locales/pt-BR-v4.cjs +1 -1
- package/dist/cjs/locales/pt-BR.cjs +1 -1
- package/dist/cjs/locales/pt.cjs +1 -1
- package/dist/cjs/locales/ru.cjs +1 -1
- package/dist/cjs/locales/sk.cjs +1 -1
- package/dist/cjs/locales/sv.cjs +1 -1
- package/dist/cjs/locales/sw.cjs +1 -1
- package/dist/cjs/locales/th.cjs +1 -1
- package/dist/cjs/locales/tr.cjs +1 -1
- package/dist/cjs/locales/vi.cjs +1 -1
- package/dist/cjs/locales/zh.cjs +1 -1
- package/dist/cjs/mini.cjs +1 -1
- package/dist/cjs/v3/index.cjs +1 -1
- package/dist/cjs/v4/core/index.cjs +1 -1
- package/dist/cjs/v4/index.cjs +1 -1
- package/dist/cjs/v4/mini/index.cjs +1 -1
- package/dist/cjs/v4-mini/index.cjs +1 -1
- package/dist/cjs/validators/any.cjs +1 -1
- package/dist/cjs/validators/array-v2.cjs +1 -0
- package/dist/cjs/validators/array.cjs +1 -1
- package/dist/cjs/validators/base.cjs +1 -1
- package/dist/cjs/validators/base64.cjs +1 -1
- package/dist/cjs/validators/bigint-v2.cjs +1 -0
- package/dist/cjs/validators/bigint.cjs +1 -1
- package/dist/cjs/validators/boolean.cjs +1 -1
- package/dist/cjs/validators/codec.cjs +1 -1
- package/dist/cjs/validators/composite-v2.cjs +1 -0
- package/dist/cjs/validators/custom.cjs +1 -1
- package/dist/cjs/validators/date-v2.cjs +1 -0
- package/dist/cjs/validators/date.cjs +1 -1
- package/dist/cjs/validators/discriminated-union.cjs +1 -1
- package/dist/cjs/validators/enum.cjs +1 -1
- package/dist/cjs/validators/file.cjs +1 -1
- package/dist/cjs/validators/function.cjs +1 -1
- package/dist/cjs/validators/hex.cjs +1 -1
- package/dist/cjs/validators/index.cjs +1 -1
- package/dist/cjs/validators/intersection.cjs +1 -1
- package/dist/cjs/validators/json.cjs +1 -1
- package/dist/cjs/validators/lazy.cjs +1 -1
- package/dist/cjs/validators/leaf-v2.cjs +1 -0
- package/dist/cjs/validators/literal.cjs +1 -1
- package/dist/cjs/validators/map.cjs +1 -1
- package/dist/cjs/validators/nan.cjs +1 -1
- package/dist/cjs/validators/never.cjs +1 -1
- package/dist/cjs/validators/null.cjs +1 -1
- package/dist/cjs/validators/number-v2.cjs +1 -0
- package/dist/cjs/validators/number.cjs +1 -1
- package/dist/cjs/validators/object-v2.cjs +1 -0
- package/dist/cjs/validators/object.cjs +1 -1
- package/dist/cjs/validators/promise.cjs +1 -1
- package/dist/cjs/validators/record.cjs +1 -1
- package/dist/cjs/validators/set.cjs +1 -1
- package/dist/cjs/validators/string-bool.cjs +1 -1
- package/dist/cjs/validators/string-formats.cjs +1 -1
- package/dist/cjs/validators/string-v2.cjs +1 -0
- package/dist/cjs/validators/string.cjs +1 -1
- package/dist/cjs/validators/symbol.cjs +1 -1
- package/dist/cjs/validators/template-literal.cjs +1 -1
- package/dist/cjs/validators/tuple.cjs +1 -1
- package/dist/cjs/validators/uint8array.cjs +1 -1
- package/dist/cjs/validators/undefined.cjs +1 -1
- package/dist/cjs/validators/union-v2.cjs +1 -0
- package/dist/cjs/validators/union.cjs +1 -1
- package/dist/cjs/validators/unknown.cjs +1 -1
- package/dist/cjs/validators/void.cjs +1 -1
- package/dist/cjs/validators/wrapper-v2.cjs +1 -0
- package/dist/cjs/validators/xor.cjs +1 -1
- package/dist/errors-core.d.ts +3 -0
- package/dist/errors.js +1 -1
- package/dist/index.d.ts +168 -12
- package/dist/index.js +1 -1
- package/dist/locales/af.js +1 -1
- package/dist/locales/ar.js +1 -1
- package/dist/locales/bn.js +1 -1
- package/dist/locales/da.js +1 -1
- package/dist/locales/de.js +1 -1
- package/dist/locales/en.js +1 -1
- package/dist/locales/es-MX.js +1 -1
- package/dist/locales/es.js +1 -1
- package/dist/locales/fi.js +1 -1
- package/dist/locales/fr.js +1 -1
- package/dist/locales/gu.js +1 -1
- package/dist/locales/hi.js +1 -1
- package/dist/locales/id.js +1 -1
- package/dist/locales/it.js +1 -1
- package/dist/locales/ja.js +1 -1
- package/dist/locales/kn.js +1 -1
- package/dist/locales/ko.js +1 -1
- package/dist/locales/ne.js +1 -1
- package/dist/locales/nl.js +1 -1
- package/dist/locales/no.js +1 -1
- package/dist/locales/pl.js +1 -1
- package/dist/locales/pt-BR-v4.js +1 -1
- package/dist/locales/pt-BR.js +1 -1
- package/dist/locales/pt.js +1 -1
- package/dist/locales/ru.js +1 -1
- package/dist/locales/sk.js +1 -1
- package/dist/locales/sv.js +1 -1
- package/dist/locales/sw.js +1 -1
- package/dist/locales/th.js +1 -1
- package/dist/locales/tr.js +1 -1
- package/dist/locales/types.d.ts +1 -0
- package/dist/locales/vi.js +1 -1
- package/dist/locales/zh.js +1 -1
- package/dist/v3/index.js +1 -1
- package/dist/v4/core/index.js +1 -1
- package/dist/v4/index.js +1 -1
- package/dist/v4/mini/index.js +1 -1
- package/dist/v4-mini/index.js +1 -1
- package/dist/validators/array-v2.d.ts +113 -0
- package/dist/validators/array-v2.js +1 -0
- package/dist/validators/array.js +1 -1
- package/dist/validators/base.js +1 -1
- package/dist/validators/base64.js +1 -1
- package/dist/validators/bigint-v2.d.ts +105 -0
- package/dist/validators/bigint-v2.js +1 -0
- package/dist/validators/bigint.js +1 -1
- package/dist/validators/boolean.js +1 -1
- package/dist/validators/codec.js +1 -1
- package/dist/validators/composite-v2.d.ts +59 -0
- package/dist/validators/composite-v2.js +1 -0
- package/dist/validators/date-v2.d.ts +140 -0
- package/dist/validators/date-v2.js +1 -0
- package/dist/validators/date.js +1 -1
- package/dist/validators/enum.js +1 -1
- package/dist/validators/file.js +1 -1
- package/dist/validators/function.js +1 -1
- package/dist/validators/hex.js +1 -1
- package/dist/validators/intersection.js +1 -1
- package/dist/validators/leaf-v2.d.ts +138 -0
- package/dist/validators/leaf-v2.js +1 -0
- package/dist/validators/literal.js +1 -1
- package/dist/validators/map.js +1 -1
- package/dist/validators/nan.js +1 -1
- package/dist/validators/never.js +1 -1
- package/dist/validators/null.js +1 -1
- package/dist/validators/number-v2.d.ts +252 -0
- package/dist/validators/number-v2.js +1 -0
- package/dist/validators/number.js +1 -1
- package/dist/validators/object-v2.d.ts +40 -0
- package/dist/validators/object-v2.js +1 -0
- package/dist/validators/object.js +1 -1
- package/dist/validators/record.js +1 -1
- package/dist/validators/set.js +1 -1
- package/dist/validators/string-formats.js +1 -1
- package/dist/validators/string-v2.d.ts +274 -0
- package/dist/validators/string-v2.js +1 -0
- package/dist/validators/string.js +1 -1
- package/dist/validators/symbol.js +1 -1
- package/dist/validators/tuple.js +1 -1
- package/dist/validators/uint8array.js +1 -1
- package/dist/validators/undefined.js +1 -1
- package/dist/validators/union-v2.d.ts +28 -0
- package/dist/validators/union-v2.js +1 -0
- package/dist/validators/void.js +1 -1
- package/dist/validators/wrapper-v2.d.ts +74 -0
- package/dist/validators/wrapper-v2.js +1 -0
- package/dist/zod-error.d.ts +84 -0
- package/package.json +1 -1
- package/dist/chunks/errors-core-CerMg2rq.js +0 -1
- package/dist/cjs/chunks/errors-core-DrydF46s.cjs +0 -1
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VldStringV2 — OPTIMIZED: check classes return Issue | null (no per-call
|
|
3
|
+
* payload allocation), hot path uses early-return, isSimple is precomputed.
|
|
4
|
+
*
|
|
5
|
+
* Same public API as the legacy VldString.
|
|
6
|
+
*/
|
|
7
|
+
import { VldBase, type ErrorParam, type ParseResult } from './base.js';
|
|
8
|
+
import { type VldIssue } from '../errors-core.js';
|
|
9
|
+
export declare abstract class VldStringCheck {
|
|
10
|
+
abstract readonly kind: string;
|
|
11
|
+
abstract check(value: string): VldIssue | null;
|
|
12
|
+
abstract meta(): Record<string, any>;
|
|
13
|
+
}
|
|
14
|
+
export declare class VldCheckMin extends VldStringCheck {
|
|
15
|
+
readonly length: number;
|
|
16
|
+
private _msg?;
|
|
17
|
+
readonly kind = "min";
|
|
18
|
+
constructor(length: number, _msg?: string | undefined);
|
|
19
|
+
get message(): string | undefined;
|
|
20
|
+
check(value: string): VldIssue | null;
|
|
21
|
+
meta(): {
|
|
22
|
+
kind: string;
|
|
23
|
+
value: number;
|
|
24
|
+
message: string | undefined;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export declare class VldCheckMax extends VldStringCheck {
|
|
28
|
+
readonly length: number;
|
|
29
|
+
private _msg?;
|
|
30
|
+
readonly kind = "max";
|
|
31
|
+
constructor(length: number, _msg?: string | undefined);
|
|
32
|
+
get message(): string | undefined;
|
|
33
|
+
check(value: string): VldIssue | null;
|
|
34
|
+
meta(): {
|
|
35
|
+
kind: string;
|
|
36
|
+
value: number;
|
|
37
|
+
message: string | undefined;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export declare class VldCheckLength extends VldStringCheck {
|
|
41
|
+
readonly length: number;
|
|
42
|
+
private _msg?;
|
|
43
|
+
readonly kind = "length";
|
|
44
|
+
constructor(length: number, _msg?: string | undefined);
|
|
45
|
+
get message(): string | undefined;
|
|
46
|
+
check(value: string): VldIssue | null;
|
|
47
|
+
meta(): {
|
|
48
|
+
kind: string;
|
|
49
|
+
value: number;
|
|
50
|
+
message: string | undefined;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export declare class VldCheckEmail extends VldStringCheck {
|
|
54
|
+
private _msg?;
|
|
55
|
+
readonly kind = "format";
|
|
56
|
+
private static RE;
|
|
57
|
+
constructor(_msg?: string | undefined);
|
|
58
|
+
get message(): string | undefined;
|
|
59
|
+
check(value: string): VldIssue | null;
|
|
60
|
+
meta(): {
|
|
61
|
+
kind: string;
|
|
62
|
+
format: string;
|
|
63
|
+
message: string | undefined;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export declare class VldCheckUrl extends VldStringCheck {
|
|
67
|
+
private _msg?;
|
|
68
|
+
readonly kind = "format";
|
|
69
|
+
private static RE;
|
|
70
|
+
constructor(_msg?: string | undefined);
|
|
71
|
+
get message(): string | undefined;
|
|
72
|
+
check(value: string): VldIssue | null;
|
|
73
|
+
meta(): {
|
|
74
|
+
kind: string;
|
|
75
|
+
format: string;
|
|
76
|
+
message: string | undefined;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export declare class VldCheckUuid extends VldStringCheck {
|
|
80
|
+
private _msg?;
|
|
81
|
+
readonly kind = "format";
|
|
82
|
+
private static RE;
|
|
83
|
+
constructor(_msg?: string | undefined);
|
|
84
|
+
get message(): string | undefined;
|
|
85
|
+
check(value: string): VldIssue | null;
|
|
86
|
+
meta(): {
|
|
87
|
+
kind: string;
|
|
88
|
+
format: string;
|
|
89
|
+
message: string | undefined;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export declare class VldCheckRegex extends VldStringCheck {
|
|
93
|
+
readonly pattern: RegExp;
|
|
94
|
+
private _msg?;
|
|
95
|
+
readonly kind = "regex";
|
|
96
|
+
constructor(pattern: RegExp, _msg?: string | undefined);
|
|
97
|
+
get message(): string | undefined;
|
|
98
|
+
check(value: string): VldIssue | null;
|
|
99
|
+
meta(): {
|
|
100
|
+
kind: string;
|
|
101
|
+
pattern: string;
|
|
102
|
+
message: string | undefined;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export declare class VldCheckStartsWith extends VldStringCheck {
|
|
106
|
+
readonly prefix: string;
|
|
107
|
+
private _msg?;
|
|
108
|
+
readonly kind = "startsWith";
|
|
109
|
+
constructor(prefix: string, _msg?: string | undefined);
|
|
110
|
+
get message(): string | undefined;
|
|
111
|
+
check(value: string): VldIssue | null;
|
|
112
|
+
meta(): {
|
|
113
|
+
kind: string;
|
|
114
|
+
value: string;
|
|
115
|
+
message: string | undefined;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export declare class VldCheckEndsWith extends VldStringCheck {
|
|
119
|
+
readonly suffix: string;
|
|
120
|
+
private _msg?;
|
|
121
|
+
readonly kind = "endsWith";
|
|
122
|
+
constructor(suffix: string, _msg?: string | undefined);
|
|
123
|
+
get message(): string | undefined;
|
|
124
|
+
check(value: string): VldIssue | null;
|
|
125
|
+
meta(): {
|
|
126
|
+
kind: string;
|
|
127
|
+
value: string;
|
|
128
|
+
message: string | undefined;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export declare class VldCheckIncludes extends VldStringCheck {
|
|
132
|
+
readonly substring: string;
|
|
133
|
+
private _msg?;
|
|
134
|
+
readonly kind = "includes";
|
|
135
|
+
constructor(substring: string, _msg?: string | undefined);
|
|
136
|
+
get message(): string | undefined;
|
|
137
|
+
check(value: string): VldIssue | null;
|
|
138
|
+
meta(): {
|
|
139
|
+
kind: string;
|
|
140
|
+
value: string;
|
|
141
|
+
message: string | undefined;
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export declare class VldCheckRegexFormat extends VldStringCheck {
|
|
145
|
+
readonly pattern: RegExp;
|
|
146
|
+
readonly formatName: string;
|
|
147
|
+
private _msg?;
|
|
148
|
+
readonly kind = "format";
|
|
149
|
+
constructor(pattern: RegExp, formatName: string, _msg?: string | undefined);
|
|
150
|
+
get message(): string | undefined;
|
|
151
|
+
check(value: string): VldIssue | null;
|
|
152
|
+
meta(): {
|
|
153
|
+
kind: string;
|
|
154
|
+
format: string;
|
|
155
|
+
pattern: string;
|
|
156
|
+
message: string | undefined;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export declare class VldCheckIp extends VldStringCheck {
|
|
160
|
+
private _msg?;
|
|
161
|
+
readonly kind = "format";
|
|
162
|
+
private static V4;
|
|
163
|
+
constructor(_msg?: string | undefined);
|
|
164
|
+
get message(): string | undefined;
|
|
165
|
+
check(value: string): VldIssue | null;
|
|
166
|
+
meta(): {
|
|
167
|
+
kind: string;
|
|
168
|
+
format: string;
|
|
169
|
+
message: string | undefined;
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
export declare class VldCheckIpv4 extends VldStringCheck {
|
|
173
|
+
private _msg?;
|
|
174
|
+
readonly kind = "format";
|
|
175
|
+
private static RE;
|
|
176
|
+
constructor(_msg?: string | undefined);
|
|
177
|
+
get message(): string | undefined;
|
|
178
|
+
check(value: string): VldIssue | null;
|
|
179
|
+
meta(): {
|
|
180
|
+
kind: string;
|
|
181
|
+
format: string;
|
|
182
|
+
message: string | undefined;
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
export declare class VldCheckIpv6 extends VldStringCheck {
|
|
186
|
+
private _msg?;
|
|
187
|
+
readonly kind = "format";
|
|
188
|
+
constructor(_msg?: string | undefined);
|
|
189
|
+
get message(): string | undefined;
|
|
190
|
+
check(value: string): VldIssue | null;
|
|
191
|
+
meta(): {
|
|
192
|
+
kind: string;
|
|
193
|
+
format: string;
|
|
194
|
+
message: string | undefined;
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
export interface VldStringDef {
|
|
198
|
+
readonly type: 'string';
|
|
199
|
+
readonly checks: ReadonlyArray<VldStringCheck>;
|
|
200
|
+
readonly transforms: ReadonlyArray<(v: string) => string>;
|
|
201
|
+
readonly jsonSchema?: {
|
|
202
|
+
minLength?: number;
|
|
203
|
+
maxLength?: number;
|
|
204
|
+
format?: string;
|
|
205
|
+
pattern?: string;
|
|
206
|
+
} | undefined;
|
|
207
|
+
readonly errorMessage?: string | undefined;
|
|
208
|
+
readonly isSimple: boolean;
|
|
209
|
+
}
|
|
210
|
+
export declare class VldStringV2 extends VldBase<string, string> {
|
|
211
|
+
readonly __def: VldStringDef;
|
|
212
|
+
constructor(def?: VldStringDef);
|
|
213
|
+
static create(): VldStringV2;
|
|
214
|
+
get isSimple(): boolean;
|
|
215
|
+
get minLength(): number | null;
|
|
216
|
+
get maxLength(): number | null;
|
|
217
|
+
get getFormat(): string | null;
|
|
218
|
+
get isCoercion(): boolean;
|
|
219
|
+
parse(value: unknown): string;
|
|
220
|
+
/** Hot path — early-return, no payload allocation. */
|
|
221
|
+
parseKnownString(value: string): string;
|
|
222
|
+
safeParse(value: unknown): ParseResult<string>;
|
|
223
|
+
protected withDef(def: Partial<VldStringDef> & {
|
|
224
|
+
type: 'string';
|
|
225
|
+
}): VldStringV2;
|
|
226
|
+
min(length: number, message?: ErrorParam): VldStringV2;
|
|
227
|
+
max(length: number, message?: ErrorParam): VldStringV2;
|
|
228
|
+
length(length: number, message?: ErrorParam): VldStringV2;
|
|
229
|
+
email(message?: ErrorParam): VldStringV2;
|
|
230
|
+
url(message?: ErrorParam): VldStringV2;
|
|
231
|
+
uuid(message?: ErrorParam): VldStringV2;
|
|
232
|
+
regex(pattern: RegExp, message?: ErrorParam): VldStringV2;
|
|
233
|
+
trim(): VldStringV2;
|
|
234
|
+
toLowerCase(): VldStringV2;
|
|
235
|
+
lowercase(): VldStringV2;
|
|
236
|
+
toUpperCase(): VldStringV2;
|
|
237
|
+
uppercase(): VldStringV2;
|
|
238
|
+
normalize(form?: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): VldStringV2;
|
|
239
|
+
slugify(): VldStringV2;
|
|
240
|
+
startsWith(str: string, message?: ErrorParam): VldStringV2;
|
|
241
|
+
endsWith(str: string, message?: ErrorParam): VldStringV2;
|
|
242
|
+
includes(str: string, message?: ErrorParam): VldStringV2;
|
|
243
|
+
ip(message?: ErrorParam): VldStringV2;
|
|
244
|
+
ipv4(message?: ErrorParam): VldStringV2;
|
|
245
|
+
ipv6(message?: ErrorParam): VldStringV2;
|
|
246
|
+
nonempty(message?: ErrorParam): VldStringV2;
|
|
247
|
+
private addFormat;
|
|
248
|
+
uuidv4(message?: ErrorParam): VldStringV2;
|
|
249
|
+
uuidv6(message?: ErrorParam): VldStringV2;
|
|
250
|
+
uuidv7(message?: ErrorParam): VldStringV2;
|
|
251
|
+
emoji(message?: ErrorParam): VldStringV2;
|
|
252
|
+
base64(message?: ErrorParam): VldStringV2;
|
|
253
|
+
base64url(message?: ErrorParam): VldStringV2;
|
|
254
|
+
jwt(message?: ErrorParam): VldStringV2;
|
|
255
|
+
nanoid(message?: ErrorParam): VldStringV2;
|
|
256
|
+
cuid(message?: ErrorParam): VldStringV2;
|
|
257
|
+
cuid2(message?: ErrorParam): VldStringV2;
|
|
258
|
+
ulid(message?: ErrorParam): VldStringV2;
|
|
259
|
+
cidrv4(message?: ErrorParam): VldStringV2;
|
|
260
|
+
cidrv6(message?: ErrorParam): VldStringV2;
|
|
261
|
+
e164(message?: ErrorParam): VldStringV2;
|
|
262
|
+
xid(message?: ErrorParam): VldStringV2;
|
|
263
|
+
guid(message?: ErrorParam): VldStringV2;
|
|
264
|
+
ksuid(message?: ErrorParam): VldStringV2;
|
|
265
|
+
date(message?: ErrorParam): VldStringV2;
|
|
266
|
+
time(message?: ErrorParam): VldStringV2;
|
|
267
|
+
datetime(message?: ErrorParam): VldStringV2;
|
|
268
|
+
duration(message?: ErrorParam): VldStringV2;
|
|
269
|
+
}
|
|
270
|
+
export declare class VldCoerceStringV2 extends VldStringV2 {
|
|
271
|
+
constructor(def?: VldStringDef);
|
|
272
|
+
static create(): VldCoerceStringV2;
|
|
273
|
+
parse(value: unknown): string;
|
|
274
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VLD_VALIDATOR_TYPES as e,VldBase as t,resolveErrorMessage as s}from"./base.js";import{V as r,c as i,g as n}from"../chunks/errors-core-BU14-Dk8.js";import{getMessages as a}from"../locales/runtime.js";import{i as h}from"../chunks/ip-validation-g5LWgy9t.js";class VldStringCheck{}class VldCheckMin extends VldStringCheck{constructor(e,t){super(),this.length=e,this._msg=t,this.kind="min"}get message(){return this._msg}check(e){return e.length<this.length?{code:"too_small",path:[],origin:"string",minimum:this.length,inclusive:!0,message:this._msg||`Too small: expected string to have >=${this.length} characters`}:null}meta(){return{kind:"min",value:this.length,message:this._msg}}}class VldCheckMax extends VldStringCheck{constructor(e,t){super(),this.length=e,this._msg=t,this.kind="max"}get message(){return this._msg}check(e){return e.length>this.length?{code:"too_big",path:[],origin:"string",maximum:this.length,inclusive:!0,message:this._msg||`Too big: expected string to have <=${this.length} characters`}:null}meta(){return{kind:"max",value:this.length,message:this._msg}}}class VldCheckLength extends VldStringCheck{constructor(e,t){super(),this.length=e,this._msg=t,this.kind="length"}get message(){return this._msg}check(e){return e.length!==this.length?{code:"too_big",path:[],origin:"string",exact:this.length,message:this._msg||`Too big: expected string to have exactly ${this.length} characters`}:null}meta(){return{kind:"length",value:this.length,message:this._msg}}}class VldCheckEmail extends VldStringCheck{constructor(e){super(),this._msg=e,this.kind="format"}get message(){return this._msg}check(e){return VldCheckEmail.RE.test(e)?null:{code:"invalid_format",path:[],origin:"string",format:"email",message:this._msg||"Invalid email"}}meta(){return{kind:"format",format:"email",message:this._msg}}}VldCheckEmail.RE=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;class VldCheckUrl extends VldStringCheck{constructor(e){super(),this._msg=e,this.kind="format"}get message(){return this._msg}check(e){return VldCheckUrl.RE.test(e)?null:{code:"invalid_format",path:[],origin:"string",format:"url",message:this._msg||"Invalid url"}}meta(){return{kind:"format",format:"url",message:this._msg}}}VldCheckUrl.RE=/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/;class VldCheckUuid extends VldStringCheck{constructor(e){super(),this._msg=e,this.kind="format"}get message(){return this._msg}check(e){return VldCheckUuid.RE.test(e)?null:{code:"invalid_format",path:[],origin:"string",format:"uuid",message:this._msg||"Invalid uuid"}}meta(){return{kind:"format",format:"uuid",message:this._msg}}}VldCheckUuid.RE=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;class VldCheckRegex extends VldStringCheck{constructor(e,t){super(),this.pattern=e,this._msg=t,this.kind="regex"}get message(){return this._msg}check(e){return this.pattern.test(e)?null:{code:"invalid_format",path:[],origin:"string",format:"regex",pattern:this.pattern.source,message:this._msg||"Invalid string: does not match pattern"}}meta(){return{kind:"regex",pattern:this.pattern.source,message:this._msg}}}class VldCheckStartsWith extends VldStringCheck{constructor(e,t){super(),this.prefix=e,this._msg=t,this.kind="startsWith"}get message(){return this._msg}check(e){return e.startsWith(this.prefix)?null:{code:"invalid_string",path:[],message:this._msg||`Invalid string: must start with "${this.prefix}"`}}meta(){return{kind:"startsWith",value:this.prefix,message:this._msg}}}class VldCheckEndsWith extends VldStringCheck{constructor(e,t){super(),this.suffix=e,this._msg=t,this.kind="endsWith"}get message(){return this._msg}check(e){return e.endsWith(this.suffix)?null:{code:"invalid_string",path:[],message:this._msg||`Invalid string: must end with "${this.suffix}"`}}meta(){return{kind:"endsWith",value:this.suffix,message:this._msg}}}class VldCheckIncludes extends VldStringCheck{constructor(e,t){super(),this.substring=e,this._msg=t,this.kind="includes"}get message(){return this._msg}check(e){return e.includes(this.substring)?null:{code:"invalid_string",path:[],message:this._msg||`Invalid string: must include "${this.substring}"`}}meta(){return{kind:"includes",value:this.substring,message:this._msg}}}class VldCheckRegexFormat extends VldStringCheck{constructor(e,t,s){super(),this.pattern=e,this.formatName=t,this._msg=s,this.kind="format"}get message(){return this._msg}check(e){return this.pattern.test(e)?null:{code:"invalid_format",path:[],origin:"string",format:this.formatName,pattern:this.pattern.source,message:this._msg||`Invalid ${this.formatName}`}}meta(){return{kind:"format",format:this.formatName,pattern:this.pattern.source,message:this._msg}}}class VldCheckIp extends VldStringCheck{constructor(e){super(),this._msg=e,this.kind="format"}get message(){return this._msg}check(e){return e.length>100||!VldCheckIp.V4.test(e)&&!h(e)?{code:"invalid_format",path:[],origin:"string",format:"ip",message:this._msg||"Invalid ip"}:null}meta(){return{kind:"format",format:"ip",message:this._msg}}}VldCheckIp.V4=/^(?:(?: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]?)$/;class VldCheckIpv4 extends VldStringCheck{constructor(e){super(),this._msg=e,this.kind="format"}get message(){return this._msg}check(e){return VldCheckIpv4.RE.test(e)?null:{code:"invalid_format",path:[],origin:"string",format:"ipv4",message:this._msg||"Invalid ipv4"}}meta(){return{kind:"format",format:"ipv4",message:this._msg}}}VldCheckIpv4.RE=/^(?:(?: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]?)$/;class VldCheckIpv6 extends VldStringCheck{constructor(e){super(),this._msg=e,this.kind="format"}get message(){return this._msg}check(e){return h(e)?null:{code:"invalid_format",path:[],origin:"string",format:"ipv6",message:this._msg||"Invalid ipv6"}}meta(){return{kind:"format",format:"ipv6",message:this._msg}}}const c=Object.freeze({type:"string",checks:Object.freeze([]),transforms:Object.freeze([]),isSimple:!0});class VldStringV2 extends t{constructor(t=c){super(e.STRING),this.__def=t}static create(){return new VldStringV2(c)}get isSimple(){return this.__def.isSimple}get minLength(){return this.__def.jsonSchema?.minLength??null}get maxLength(){return this.__def.jsonSchema?.maxLength??null}get getFormat(){return this.__def.jsonSchema?.format??null}get isCoercion(){return this.validatorType===e.COERCE_STRING}parse(e){if("string"!=typeof e)throw new r([i("string",n(e),this.__def.errorMessage)]);return this.__def.isSimple?e:this.parseKnownString(e)}parseKnownString(e){const t=this.__def,s=t.transforms;let i=e;switch(s.length){case 0:break;case 1:i=s[0](i);break;case 2:i=s[1](s[0](i));break;case 3:i=s[2](s[1](s[0](i)));break;default:for(let e=0;e<s.length;e++)i=s[e](i)}const n=t.checks;for(let e=0;e<n.length;e++){const t=n[e].check(i);if(null!==t)throw new r([t])}return i}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:e instanceof r?e:new r([{code:"custom",path:[],message:String(e)}])}}}withDef(e){const t=(s=e.checks??this.__def.checks,r=e.transforms??this.__def.transforms,i=e.jsonSchema??this.__def.jsonSchema,n=e.errorMessage??this.__def.errorMessage,Object.freeze({type:"string",checks:s,transforms:r,jsonSchema:i,errorMessage:n,isSimple:0===s.length&&0===r.length}));var s,r,i,n;return new this.constructor(t)}min(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckMin(e,s(t,a().stringMin(e)))],jsonSchema:{...this.__def.jsonSchema,minLength:e},errorMessage:s(t,a().stringMin(e))})}max(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckMax(e,s(t,a().stringMax(e)))],jsonSchema:{...this.__def.jsonSchema,maxLength:e},errorMessage:s(t,a().stringMax(e))})}length(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckLength(e,s(t,a().stringLength(e)))],jsonSchema:{...this.__def.jsonSchema,exactLength:e},errorMessage:s(t,a().stringLength(e))})}email(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckEmail(s(e,a().stringEmail))],jsonSchema:{...this.__def.jsonSchema,format:"email"},errorMessage:s(e,a().stringEmail)})}url(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckUrl(s(e,a().stringUrl))],jsonSchema:{...this.__def.jsonSchema,format:"uri"},errorMessage:s(e,a().stringUrl)})}uuid(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckUuid(s(e,a().stringUuid))],jsonSchema:{...this.__def.jsonSchema,format:"uuid"},errorMessage:s(e,a().stringUuid)})}regex(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckRegex(e,s(t,a().stringRegex))],jsonSchema:{...this.__def.jsonSchema,pattern:e.source},errorMessage:s(t,a().stringRegex)})}trim(){return this.withDef({type:"string",transforms:[...this.__def.transforms,e=>e.trim()]})}toLowerCase(){return this.withDef({type:"string",transforms:[...this.__def.transforms,e=>e.toLowerCase()]})}lowercase(){return this.toLowerCase()}toUpperCase(){return this.withDef({type:"string",transforms:[...this.__def.transforms,e=>e.toUpperCase()]})}uppercase(){return this.toUpperCase()}normalize(e){return this.withDef({type:"string",transforms:[...this.__def.transforms,t=>t.normalize(e)]})}slugify(){return this.withDef({type:"string",transforms:[...this.__def.transforms,e=>e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")]})}startsWith(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckStartsWith(e,s(t,a().stringStartsWith(e)))],errorMessage:s(t,a().stringStartsWith(e))})}endsWith(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckEndsWith(e,s(t,a().stringEndsWith(e)))],errorMessage:s(t,a().stringEndsWith(e))})}includes(e,t){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckIncludes(e,s(t,a().stringIncludes(e)))],errorMessage:s(t,a().stringIncludes(e))})}ip(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckIp(s(e,a().stringIp))],jsonSchema:{...this.__def.jsonSchema,format:"ip"},errorMessage:s(e,a().stringIp)})}ipv4(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckIpv4(s(e,a().stringIpv4))],jsonSchema:{...this.__def.jsonSchema,format:"ipv4"},errorMessage:s(e,a().stringIpv4)})}ipv6(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckIpv6(s(e,a().stringIpv6))],jsonSchema:{...this.__def.jsonSchema,format:"ipv6"},errorMessage:s(e,a().stringIpv6)})}nonempty(e){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckMin(1,s(e,a().stringEmpty))],jsonSchema:{...this.__def.jsonSchema,minLength:Math.max(this.__def.jsonSchema?.minLength||0,1)},errorMessage:s(e,a().stringEmpty)})}addFormat(e,t,r){return this.withDef({type:"string",checks:[...this.__def.checks,new VldCheckRegexFormat(e,t,s(r,`Invalid ${t}`))],jsonSchema:{...this.__def.jsonSchema,format:t,pattern:e.source},errorMessage:s(r,`Invalid ${t}`)})}uuidv4(e){return this.addFormat(/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"uuid",e)}uuidv6(e){return this.addFormat(/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"uuid",e)}uuidv7(e){return this.addFormat(/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,"uuid",e)}emoji(e){return this.addFormat(/^(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200D(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*$/u,"emoji",e)}base64(e){return this.addFormat(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,"base64",e)}base64url(e){return this.addFormat(/^[A-Za-z0-9_-]*$/,"base64url",e)}jwt(e){return this.addFormat(/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,"jwt",e)}nanoid(e){return this.addFormat(/^[A-Za-z0-9_-]{21}$/,"nanoid",e)}cuid(e){return this.addFormat(/^c[^\s-]{8,}$/i,"cuid",e)}cuid2(e){return this.addFormat(/^[0-9a-z]+$/,"cuid2",e)}ulid(e){return this.addFormat(/^[0-9A-HJKMNP-TV-Z]{26}$/,"ulid",e)}cidrv4(e){return this.addFormat(/^(?:(?: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]?)\/(?:3[0-2]|[12]?[0-9])$/,"cidrv4",e)}cidrv6(e){return this.addFormat(/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^(?:[0-9a-fA-F]{1,4}:){1,7}:\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,"cidrv6",e)}e164(e){return this.addFormat(/^\+[1-9]\d{1,14}$/,"e164",e)}xid(e){return this.addFormat(/^[A-HJKMNP-TV-Z0-9]{20}$/,"xid",e)}guid(e){return this.addFormat(/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i,"guid",e)}ksuid(e){return this.addFormat(/^[0-9A-Za-z]{27}$/,"ksuid",e)}date(e){return this.addFormat(/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/,"date",e)}time(e){return this.addFormat(/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?$/,"time",e)}datetime(e){return this.addFormat(/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?Z?$/,"datetime",e)}duration(e){return this.addFormat(/^-?P(?!$)(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?=\d)(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$/,"duration",e)}}class VldCoerceStringV2 extends VldStringV2{constructor(t=c){super(t),this.validatorType=e.COERCE_STRING}static create(){return new VldCoerceStringV2}parse(e){let t;if("string"==typeof e)t=e;else if("number"==typeof e)t=String(e);else if("boolean"==typeof e)t=e?"true":"false";else if("bigint"==typeof e)t=e.toString();else if("symbol"==typeof e)t=String(e);else{if(null==e)throw new Error(a().coercionFailed("string",e));t=e instanceof Date?e.toISOString():Array.isArray(e)?e.join(","):e instanceof RegExp?e.toString():e instanceof Error?e.message||e.toString():String(e)}if(t.length>1e6)throw new Error(a().coercionFailed("string",e));const s=t.replace(/[\x00-\x1F\x7F]/g,"");return super.parse(s)}}export{VldCheckEmail,VldCheckEndsWith,VldCheckIncludes,VldCheckIp,VldCheckIpv4,VldCheckIpv6,VldCheckLength,VldCheckMax,VldCheckMin,VldCheckRegex,VldCheckRegexFormat,VldCheckStartsWith,VldCheckUrl,VldCheckUuid,VldCoerceStringV2,VldStringCheck,VldStringV2};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VldBase as s,VLD_VALIDATOR_TYPES as e,resolveErrorMessage as t}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{i}from"../chunks/ip-validation-g5LWgy9t.js";import{V as n,c as a,g as c}from"../chunks/errors-core-CerMg2rq.js";const o={email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,url:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/,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]?)$/,uuidv4:/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv6:/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv7:/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,emoji:/^(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200D(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*$/u,base64:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,base64url:/^[A-Za-z0-9_-]*$/,jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,nanoid:/^[A-Za-z0-9_-]{21}$/,cuid:/^c[^\s-]{8,}$/i,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,cidrv4:/^(?:(?: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]?)\/(?:3[0-2]|[12]?[0-9])$/,cidrv6:/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^(?:[0-9a-fA-F]{1,4}:){1,7}:\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,e164:/^\+[1-9]\d{1,14}$/,xid:/^[A-HJKMNP-TV-Z0-9]{20}$/,guid:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i,ksuid:/^[0-9A-Za-z]{27}$/,isoDate:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/,isoTime:/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?$/,isoDateTime:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?Z?$/,isoDuration:/^-?P(?!$)(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?=\d)(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$/};class VldString extends s{constructor(s){super(s?.validatorType||e.STRING),this.config={checks:s?.checks||[],transforms:s?.transforms||[],errorMessage:s?.errorMessage,jsonSchema:s?.jsonSchema,checkMetas:s?.checkMetas},this._checks=this.config.checks,this._transforms=this.config.transforms,this._isSimple=0===this._checks.length&&0===this._transforms.length,this._checkMetas=this.config.checkMetas}static create(){return new VldString}get isSimple(){return this._isSimple}get minLength(){return this.config.jsonSchema?.minLength??null}get maxLength(){return this.config.jsonSchema?.maxLength??null}_createCheckIssue(s){switch(s.kind){case"min":return{code:"too_small",path:[],origin:"string",minimum:s.value,inclusive:!0,message:s.message||`Too small: expected string to have >=${s.value} characters`};case"max":return{code:"too_big",path:[],origin:"string",maximum:s.value,inclusive:!0,message:s.message||`Too big: expected string to have <=${s.value} characters`};case"length":return{code:"too_big",path:[],origin:"string",exact:s.value,message:s.message||`Too big: expected string to have exactly ${s.value} characters`};case"format":{const e={code:"invalid_format",path:[],origin:"string",format:s.format,message:s.message||`Invalid ${s.format}`};return void 0!==s.pattern&&(e.pattern=s.pattern),e}case"regex":{const e={code:"invalid_format",path:[],origin:"string",format:"regex",message:s.message||"Invalid string: does not match pattern"};return void 0!==s.pattern&&(e.pattern=s.pattern),e}default:return{code:"custom",path:[],message:s.message||"Invalid string"}}}_runChecks(s){const e=this._checks,t=this._checkMetas;for(let r=0;r<e.length;r++)if(!e[r](s))return t?.[r]??this._fallbackMeta();return null}_fallbackMeta(){return{kind:"other",message:this.config.errorMessage}}parse(s){if("string"!=typeof s)throw new n([a("string",c(s),this.config.errorMessage)]);return this._isSimple?s:this.parseKnownString(s)}parseKnownString(s){if(this._isSimple)return s;const e=this._transforms;let t=s;switch(e.length){case 0:break;case 1:t=e[0](t);break;case 2:t=e[1](e[0](t));break;case 3:t=e[2](e[1](e[0](t)));break;default:for(let s=0;s<e.length;s++)t=e[s](t)}const r=this._runChecks(t);if(r)throw new n([this._createCheckIssue(r)]);return t}safeParse(s){if("string"!=typeof s)return{success:!1,error:new n([a("string",c(s),this.config.errorMessage)])};if(this._isSimple)return{success:!0,data:s};try{return{success:!0,data:this.parseKnownString(s)}}catch(s){return s instanceof n?{success:!1,error:s}:{success:!1,error:(e=s.message,new n([{code:"invalid_string",path:[],message:e}]))}}var e}min(s,e){return new VldString({checks:[...this.config.checks,e=>e.length>=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMin(s)),jsonSchema:{...this.config.jsonSchema,minLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:s,message:t(e,r().stringMin(s))}]})}max(s,e){return new VldString({checks:[...this.config.checks,e=>e.length<=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMax(s)),jsonSchema:{...this.config.jsonSchema,maxLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"max",value:s,message:t(e,r().stringMax(s))}]})}length(s,e){return new VldString({checks:[...this.config.checks,e=>e.length===s],transforms:this.config.transforms,errorMessage:t(e,r().stringLength(s)),jsonSchema:{...this.config.jsonSchema,exactLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"length",value:s,message:t(e,r().stringLength(s))}]})}email(s){return new VldString({checks:[...this.config.checks,s=>o.email.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringEmail),jsonSchema:{...this.config.jsonSchema,format:"email"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"email",message:t(s,r().stringEmail)}]})}url(s){return new VldString({checks:[...this.config.checks,s=>o.url.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUrl),jsonSchema:{...this.config.jsonSchema,format:"uri"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"url",message:t(s,r().stringUrl)}]})}uuid(s){return new VldString({checks:[...this.config.checks,s=>o.uuid.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUuid),jsonSchema:{...this.config.jsonSchema,format:"uuid"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"uuid",message:t(s,r().stringUuid)}]})}format(s,e,r){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(r,`Invalid ${e}`),jsonSchema:{...this.config.jsonSchema,format:e,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:e,pattern:s.source,message:t(r,`Invalid ${e}`)}]})}uuidv4(s){return this.format(o.uuidv4,"uuid",s)}uuidv6(s){return this.format(o.uuidv6,"uuid",s)}uuidv7(s){return this.format(o.uuidv7,"uuid",s)}emoji(s){return this.format(o.emoji,"emoji",s)}base64(s){return this.format(o.base64,"base64",s)}base64url(s){return this.format(o.base64url,"base64url",s)}jwt(s){return this.format(o.jwt,"jwt",s)}nanoid(s){return this.format(o.nanoid,"nanoid",s)}cuid(s){return this.format(o.cuid,"cuid",s)}cuid2(s){return this.format(o.cuid2,"cuid2",s)}ulid(s){return this.format(o.ulid,"ulid",s)}cidrv4(s){return this.format(o.cidrv4,"cidrv4",s)}cidrv6(s){return this.format(o.cidrv6,"cidrv6",s)}e164(s){return this.format(o.e164,"e164",s)}xid(s){return this.format(o.xid,"xid",s)}guid(s){return this.format(o.guid,"guid",s)}ksuid(s){return this.format(o.ksuid,"ksuid",s)}date(s){return this.format(o.isoDate,"date",s)}time(s){return this.format(o.isoTime,"time",s)}datetime(s){return this.format(o.isoDateTime,"datetime",s)}duration(s){return this.format(o.isoDuration,"duration",s)}regex(s,e){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(e,r().stringRegex),jsonSchema:{...this.config.jsonSchema,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"regex",pattern:s.source,message:t(e,r().stringRegex)}]})}trim(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.trim()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}toLowerCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}lowercase(){return this.toLowerCase()}toUpperCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toUpperCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}uppercase(){return this.toUpperCase()}normalize(s){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,e=>e.normalize(s)],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}slugify(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}startsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.startsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringStartsWith(s)),jsonSchema:this.config.jsonSchema})}endsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.endsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringEndsWith(s)),jsonSchema:this.config.jsonSchema})}includes(s,e){return new VldString({checks:[...this.config.checks,e=>e.includes(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringIncludes(s)),jsonSchema:this.config.jsonSchema})}ip(s){return new VldString({checks:[...this.config.checks,s=>!(s.length>100)&&(o.ipv4.test(s)||i(s))],transforms:this.config.transforms,errorMessage:t(s,r().stringIp),jsonSchema:{...this.config.jsonSchema,format:"ip"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ip",message:t(s,r().stringIp)}]})}ipv4(s){return new VldString({checks:[...this.config.checks,s=>o.ipv4.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv4),jsonSchema:{...this.config.jsonSchema,format:"ipv4"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv4",message:t(s,r().stringIpv4)}]})}ipv6(s){return new VldString({checks:[...this.config.checks,s=>i(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv6),jsonSchema:{...this.config.jsonSchema,format:"ipv6"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv6",message:t(s,r().stringIpv6)}]})}nonempty(s){return new VldString({checks:[...this.config.checks,s=>s.length>0],transforms:this.config.transforms,errorMessage:t(s,r().stringEmpty),jsonSchema:{...this.config.jsonSchema,minLength:Math.max(this.config.jsonSchema?.minLength||0,1)},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:1,message:t(s,r().stringEmpty)}]})}}export{VldString};
|
|
1
|
+
import{VldBase as s,VLD_VALIDATOR_TYPES as e,resolveErrorMessage as t}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{i}from"../chunks/ip-validation-g5LWgy9t.js";import{V as n,c as a,g as c}from"../chunks/errors-core-BU14-Dk8.js";const o={email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,url:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/,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]?)$/,uuidv4:/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv6:/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv7:/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,emoji:/^(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200D(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*$/u,base64:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,base64url:/^[A-Za-z0-9_-]*$/,jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,nanoid:/^[A-Za-z0-9_-]{21}$/,cuid:/^c[^\s-]{8,}$/i,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,cidrv4:/^(?:(?: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]?)\/(?:3[0-2]|[12]?[0-9])$/,cidrv6:/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^(?:[0-9a-fA-F]{1,4}:){1,7}:\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,e164:/^\+[1-9]\d{1,14}$/,xid:/^[A-HJKMNP-TV-Z0-9]{20}$/,guid:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i,ksuid:/^[0-9A-Za-z]{27}$/,isoDate:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/,isoTime:/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?$/,isoDateTime:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?Z?$/,isoDuration:/^-?P(?!$)(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?=\d)(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$/};class VldString extends s{constructor(s){super(s?.validatorType||e.STRING),this.config={checks:s?.checks||[],transforms:s?.transforms||[],errorMessage:s?.errorMessage,jsonSchema:s?.jsonSchema,checkMetas:s?.checkMetas},this._checks=this.config.checks,this._transforms=this.config.transforms,this._isSimple=0===this._checks.length&&0===this._transforms.length,this._checkMetas=this.config.checkMetas}static create(){return new VldString}get isSimple(){return this._isSimple}get minLength(){return this.config.jsonSchema?.minLength??null}get maxLength(){return this.config.jsonSchema?.maxLength??null}_createCheckIssue(s){switch(s.kind){case"min":return{code:"too_small",path:[],origin:"string",minimum:s.value,inclusive:!0,message:s.message||`Too small: expected string to have >=${s.value} characters`};case"max":return{code:"too_big",path:[],origin:"string",maximum:s.value,inclusive:!0,message:s.message||`Too big: expected string to have <=${s.value} characters`};case"length":return{code:"too_big",path:[],origin:"string",exact:s.value,message:s.message||`Too big: expected string to have exactly ${s.value} characters`};case"format":{const e={code:"invalid_format",path:[],origin:"string",format:s.format,message:s.message||`Invalid ${s.format}`};return void 0!==s.pattern&&(e.pattern=s.pattern),e}case"regex":{const e={code:"invalid_format",path:[],origin:"string",format:"regex",message:s.message||"Invalid string: does not match pattern"};return void 0!==s.pattern&&(e.pattern=s.pattern),e}default:return{code:"custom",path:[],message:s.message||"Invalid string"}}}_runChecks(s){const e=this._checks,t=this._checkMetas;for(let r=0;r<e.length;r++)if(!e[r](s))return t?.[r]??this._fallbackMeta();return null}_fallbackMeta(){return{kind:"other",message:this.config.errorMessage}}parse(s){if("string"!=typeof s)throw new n([a("string",c(s),this.config.errorMessage)]);return this._isSimple?s:this.parseKnownString(s)}parseKnownString(s){if(this._isSimple)return s;const e=this._transforms;let t=s;switch(e.length){case 0:break;case 1:t=e[0](t);break;case 2:t=e[1](e[0](t));break;case 3:t=e[2](e[1](e[0](t)));break;default:for(let s=0;s<e.length;s++)t=e[s](t)}const r=this._runChecks(t);if(r)throw new n([this._createCheckIssue(r)]);return t}safeParse(s){if("string"!=typeof s)return{success:!1,error:new n([a("string",c(s),this.config.errorMessage)])};if(this._isSimple)return{success:!0,data:s};try{return{success:!0,data:this.parseKnownString(s)}}catch(s){return s instanceof n?{success:!1,error:s}:{success:!1,error:(e=s.message,new n([{code:"invalid_string",path:[],message:e}]))}}var e}min(s,e){return new VldString({checks:[...this.config.checks,e=>e.length>=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMin(s)),jsonSchema:{...this.config.jsonSchema,minLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:s,message:t(e,r().stringMin(s))}]})}max(s,e){return new VldString({checks:[...this.config.checks,e=>e.length<=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMax(s)),jsonSchema:{...this.config.jsonSchema,maxLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"max",value:s,message:t(e,r().stringMax(s))}]})}length(s,e){return new VldString({checks:[...this.config.checks,e=>e.length===s],transforms:this.config.transforms,errorMessage:t(e,r().stringLength(s)),jsonSchema:{...this.config.jsonSchema,exactLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"length",value:s,message:t(e,r().stringLength(s))}]})}email(s){return new VldString({checks:[...this.config.checks,s=>o.email.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringEmail),jsonSchema:{...this.config.jsonSchema,format:"email"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"email",message:t(s,r().stringEmail)}]})}url(s){return new VldString({checks:[...this.config.checks,s=>o.url.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUrl),jsonSchema:{...this.config.jsonSchema,format:"uri"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"url",message:t(s,r().stringUrl)}]})}uuid(s){return new VldString({checks:[...this.config.checks,s=>o.uuid.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUuid),jsonSchema:{...this.config.jsonSchema,format:"uuid"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"uuid",message:t(s,r().stringUuid)}]})}format(s,e,r){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(r,`Invalid ${e}`),jsonSchema:{...this.config.jsonSchema,format:e,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:e,pattern:s.source,message:t(r,`Invalid ${e}`)}]})}uuidv4(s){return this.format(o.uuidv4,"uuid",s)}uuidv6(s){return this.format(o.uuidv6,"uuid",s)}uuidv7(s){return this.format(o.uuidv7,"uuid",s)}emoji(s){return this.format(o.emoji,"emoji",s)}base64(s){return this.format(o.base64,"base64",s)}base64url(s){return this.format(o.base64url,"base64url",s)}jwt(s){return this.format(o.jwt,"jwt",s)}nanoid(s){return this.format(o.nanoid,"nanoid",s)}cuid(s){return this.format(o.cuid,"cuid",s)}cuid2(s){return this.format(o.cuid2,"cuid2",s)}ulid(s){return this.format(o.ulid,"ulid",s)}cidrv4(s){return this.format(o.cidrv4,"cidrv4",s)}cidrv6(s){return this.format(o.cidrv6,"cidrv6",s)}e164(s){return this.format(o.e164,"e164",s)}xid(s){return this.format(o.xid,"xid",s)}guid(s){return this.format(o.guid,"guid",s)}ksuid(s){return this.format(o.ksuid,"ksuid",s)}date(s){return this.format(o.isoDate,"date",s)}time(s){return this.format(o.isoTime,"time",s)}datetime(s){return this.format(o.isoDateTime,"datetime",s)}duration(s){return this.format(o.isoDuration,"duration",s)}regex(s,e){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(e,r().stringRegex),jsonSchema:{...this.config.jsonSchema,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"regex",pattern:s.source,message:t(e,r().stringRegex)}]})}trim(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.trim()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}toLowerCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}lowercase(){return this.toLowerCase()}toUpperCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toUpperCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}uppercase(){return this.toUpperCase()}normalize(s){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,e=>e.normalize(s)],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}slugify(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}startsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.startsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringStartsWith(s)),jsonSchema:this.config.jsonSchema})}endsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.endsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringEndsWith(s)),jsonSchema:this.config.jsonSchema})}includes(s,e){return new VldString({checks:[...this.config.checks,e=>e.includes(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringIncludes(s)),jsonSchema:this.config.jsonSchema})}ip(s){return new VldString({checks:[...this.config.checks,s=>!(s.length>100)&&(o.ipv4.test(s)||i(s))],transforms:this.config.transforms,errorMessage:t(s,r().stringIp),jsonSchema:{...this.config.jsonSchema,format:"ip"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ip",message:t(s,r().stringIp)}]})}ipv4(s){return new VldString({checks:[...this.config.checks,s=>o.ipv4.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv4),jsonSchema:{...this.config.jsonSchema,format:"ipv4"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv4",message:t(s,r().stringIpv4)}]})}ipv6(s){return new VldString({checks:[...this.config.checks,s=>i(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv6),jsonSchema:{...this.config.jsonSchema,format:"ipv6"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv6",message:t(s,r().stringIpv6)}]})}nonempty(s){return new VldString({checks:[...this.config.checks,s=>s.length>0],transforms:this.config.transforms,errorMessage:t(s,r().stringEmpty),jsonSchema:{...this.config.jsonSchema,minLength:Math.max(this.config.jsonSchema?.minLength||0,1)},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:1,message:t(s,r().stringEmpty)}]})}}export{VldString};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VldBase as r,VLD_VALIDATOR_TYPES as e}from"./base.js";import{getMessages as s}from"../locales/runtime.js";import{V as o}from"../chunks/errors-core-
|
|
1
|
+
import{VldBase as r,VLD_VALIDATOR_TYPES as e}from"./base.js";import{getMessages as s}from"../locales/runtime.js";import{V as o}from"../chunks/errors-core-BU14-Dk8.js";class VldSymbol extends r{constructor(r){super(e.SYMBOL),this.errorMessage=r}static create(){return new VldSymbol}get isSimple(){return!0}parse(r){if("symbol"!=typeof r)throw new Error(this.errorMessage||s().invalidSymbol);return r}parseKnownSymbol(r){return r}safeParse(r){return"symbol"==typeof r?{success:!0,data:r}:{success:!1,error:(e=this.errorMessage||s().invalidSymbol,new o([{code:"invalid_type",path:[],message:e}]))};var e}}export{VldSymbol};
|
package/dist/validators/tuple.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{getMessages as t}from"../locales/runtime.js";import{V as s}from"../chunks/errors-core-
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{getMessages as t}from"../locales/runtime.js";import{V as s}from"../chunks/errors-core-BU14-Dk8.js";function i(e){return new s([{code:"invalid_array",path:[],message:e}])}class VldTuple extends e{constructor(e,t,s=null){super(r.TUPLE),this.validators=e,this.errorMessage=t,this.restValidator=s,this._length=e.length,this._validatorTypes=e.map(e=>e.validatorType),this._simpleItemModes=e.map((e,r)=>this.getSimpleItemMode(e,this._validatorTypes[r])),this._simpleItemValues=e.map((e,r)=>"literal"===this._simpleItemModes[r]?e.literal:void 0)}get items(){return this.validators}getSimpleItemMode(e,t){if(!0===e.isSimple)switch(t){case r.STRING:return"string";case r.NUMBER:return"number";case r.BOOLEAN:return"boolean";case r.BIGINT:return"bigint";case r.SYMBOL:return"symbol";case r.NULL:return"null";case r.UNDEFINED:case r.VOID:return"undefinedValue";case r.LITERAL:return"literal";case r.ANY:case r.UNKNOWN:return"passthrough";default:return}}getSimpleItemError(e,r,s){switch(e){case"string":return t().invalidString;case"number":return t().invalidNumber;case"boolean":return t().invalidBoolean;case"bigint":return t().invalidBigint;case"symbol":return t().invalidSymbol;case"null":return"Expected null, received "+typeof s;case"undefinedValue":return t().expectedUndefined;case"literal":return t().literalExpected(JSON.stringify(r),JSON.stringify(s));default:return t().invalidTuple}}static create(...e){return new VldTuple(e)}rest(e){return new VldTuple(this.validators,this.errorMessage,e)}parse(e){if(!Array.isArray(e))throw new Error(this.errorMessage||t().invalidTuple);return this.parseKnownTuple(e)}parseKnownTuple(e){if(null===this.restValidator&&e.length!==this._length||null!==this.restValidator&&e.length<this._length)throw new Error(this.errorMessage||t().tupleLength(this._length,e.length));const r=new Array(e.length);for(let s=0;s<this._length;s++){const i=this._simpleItemModes[s],n=e[s];if(void 0!==i)switch(i){case"string":if("string"!=typeof n)throw new Error(t().arrayItem(s,t().invalidString));r[s]=n;continue;case"number":if("number"!=typeof n||isNaN(n))throw new Error(t().arrayItem(s,t().invalidNumber));r[s]=n;continue;case"boolean":if("boolean"!=typeof n)throw new Error(t().arrayItem(s,t().invalidBoolean));r[s]=n;continue;case"bigint":if("bigint"!=typeof n)throw new Error(t().arrayItem(s,t().invalidBigint));r[s]=n;continue;case"symbol":if("symbol"!=typeof n)throw new Error(t().arrayItem(s,t().invalidSymbol));r[s]=n;continue;case"null":if(null!==n)throw new Error(t().arrayItem(s,this.getSimpleItemError(i,void 0,n)));r[s]=null;continue;case"undefinedValue":if(void 0!==n)throw new Error(t().arrayItem(s,t().expectedUndefined));r[s]=void 0;continue;case"literal":{const e=this._simpleItemValues[s];if(n!==e)throw new Error(t().arrayItem(s,this.getSimpleItemError(i,e,n)));r[s]=e;continue}case"passthrough":r[s]=n;continue}try{const e=this.validators[s];r[s]=e.parse(n)}catch(e){throw new Error(t().arrayItem(s,e.message))}}if(this.restValidator)for(let s=this._length;s<e.length;s++)try{r[s]=this.restValidator.parse(e[s])}catch(e){throw new Error(t().arrayItem(s,e.message))}return r}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:i(e.message)}}}encode(e){if(!Array.isArray(e))throw new Error(this.errorMessage||t().invalidTuple);this.validateEncodedLength(e.length);const r=new Array(e.length);for(let t=0;t<this._length;t++)r[t]=this.validators[t].encode(e[t]);if(this.restValidator)for(let t=this._length;t<e.length;t++)r[t]=this.restValidator.encode(e[t]);return r}safeEncode(e){try{return{success:!0,data:this.encode(e)}}catch(e){return{success:!1,error:i(e.message)}}}async encodeAsync(e){if(!Array.isArray(e))throw new Error(this.errorMessage||t().invalidTuple);this.validateEncodedLength(e.length);const r=new Array(e.length);for(let t=0;t<this._length;t++)r[t]=await this.validators[t].encodeAsync(e[t]);if(this.restValidator)for(let t=this._length;t<e.length;t++)r[t]=await this.restValidator.encodeAsync(e[t]);return r}async safeEncodeAsync(e){try{return{success:!0,data:await this.encodeAsync(e)}}catch(e){return{success:!1,error:i(e.message)}}}validateEncodedLength(e){if(null===this.restValidator&&e!==this._length||null!==this.restValidator&&e<this._length)throw new Error(this.errorMessage||t().tupleLength(this._length,e))}}export{VldTuple};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VldBase as t,VLD_VALIDATOR_TYPES as r}from"./base.js";import{createIssue as n}from"../errors.js";import{getMessages as e}from"../locales/runtime.js";import{V as i}from"../chunks/errors-core-
|
|
1
|
+
import{VldBase as t,VLD_VALIDATOR_TYPES as r}from"./base.js";import{createIssue as n}from"../errors.js";import{getMessages as e}from"../locales/runtime.js";import{V as i}from"../chunks/errors-core-BU14-Dk8.js";class VldUint8Array extends t{constructor(t){super(r.UINT8_ARRAY),this.config=t||{}}parse(t){const r=this.safeParse(t);if(!r.success)throw r.error;return r.data}safeParse(t){return t instanceof Uint8Array?void 0!==this.config.exactLength&&t.length!==this.config.exactLength?{success:!1,error:new i([n("custom",[],e().uint8ArrayExactLength(this.config.exactLength))])}:void 0!==this.config.minLength&&t.length<this.config.minLength?{success:!1,error:new i([n("custom",[],e().uint8ArrayMinLength(this.config.minLength))])}:void 0!==this.config.maxLength&&t.length>this.config.maxLength?{success:!1,error:new i([n("custom",[],e().uint8ArrayMaxLength(this.config.maxLength))])}:{success:!0,data:t}:{success:!1,error:new i([n("invalid_type",[],e().expectedUint8Array)])}}min(t){return new VldUint8Array({...this.config,minLength:t})}max(t){return new VldUint8Array({...this.config,maxLength:t})}length(t){return new VldUint8Array({exactLength:t,minLength:void 0,maxLength:void 0})}static create(){return new VldUint8Array}}export{VldUint8Array};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{V as s}from"../chunks/errors-core-
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{V as s}from"../chunks/errors-core-BU14-Dk8.js";class VldUndefined extends e{constructor(){super(r.UNDEFINED)}static create(){return new VldUndefined}get isSimple(){return!0}parse(e){if(void 0!==e)throw new Error("Expected undefined, received "+typeof e)}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:(r=e.message,new s([{code:"invalid_type",path:[],message:r}]))}}var r}}export{VldUndefined};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VldUnionV2 — single-def union validator.
|
|
3
|
+
* The legacy VldUnion has 5 own properties (validators, errorMessage,
|
|
4
|
+
* typeCheckers, simpleModes, simpleValues). V2 collapses them into a
|
|
5
|
+
* single `__def`, reducing per-instance shape size and letting V8 use
|
|
6
|
+
* a more uniform hidden class.
|
|
7
|
+
*
|
|
8
|
+
* Public API mirrors VldUnion 1:1. Exposed via v.unionV2().
|
|
9
|
+
*/
|
|
10
|
+
import { VldBase, type ParseResult } from './base.js';
|
|
11
|
+
type SimpleUnionMode = 'string' | 'number' | 'boolean' | 'bigint' | 'symbol' | 'null' | 'undefined' | 'literal' | 'passthrough' | undefined;
|
|
12
|
+
export interface VldUnionDef {
|
|
13
|
+
readonly type: 'union';
|
|
14
|
+
readonly validators: ReadonlyArray<VldBase<any, any>>;
|
|
15
|
+
readonly typeCheckers: ReadonlyArray<(value: unknown) => boolean>;
|
|
16
|
+
readonly simpleModes: ReadonlyArray<SimpleUnionMode>;
|
|
17
|
+
readonly simpleValues: ReadonlyArray<unknown>;
|
|
18
|
+
readonly errorMessage?: string | undefined;
|
|
19
|
+
}
|
|
20
|
+
export declare class VldUnionV2<T extends readonly VldBase<any, any>[]> extends VldBase<T[number] extends VldBase<any, infer U> ? U : never, T[number] extends VldBase<any, infer U> ? U : never> {
|
|
21
|
+
readonly __def: VldUnionDef;
|
|
22
|
+
constructor(validators: T, errorMessage?: string);
|
|
23
|
+
static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldUnionV2<T>;
|
|
24
|
+
get options(): T;
|
|
25
|
+
parse(value: unknown): T[number] extends VldBase<any, infer U> ? U : never;
|
|
26
|
+
safeParse(value: unknown): ParseResult<T[number] extends VldBase<any, infer U> ? U : never>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{V as s}from"../chunks/errors-core-BU14-Dk8.js";import{getMessages as t}from"../locales/runtime.js";function n(e){if(!0===e.isSimple)switch(e.validatorType){case r.STRING:return"string";case r.NUMBER:return"number";case r.BOOLEAN:return"boolean";case r.BIGINT:return"bigint";case r.SYMBOL:return"symbol";case r.NULL:return"null";case r.UNDEFINED:case r.VOID:return"undefined";case r.LITERAL:return"literal";case r.ANY:case r.UNKNOWN:return"passthrough";default:return}}function a(e){switch(e.validatorType){case r.STRING:return e=>"string"==typeof e;case r.NUMBER:return e=>"number"==typeof e&&!isNaN(e);case r.BOOLEAN:return e=>"boolean"==typeof e;case r.BIGINT:return e=>"bigint"==typeof e;case r.SYMBOL:return e=>"symbol"==typeof e;case r.NAN:return e=>"number"==typeof e&&Number.isNaN(e);case r.ARRAY:return Array.isArray;case r.OBJECT:return e=>"object"==typeof e&&null!==e&&!Array.isArray(e);case r.NULL:return e=>null===e;case r.UNDEFINED:case r.VOID:return e=>void 0===e;case r.ENUM:return e=>"string"==typeof e||"number"==typeof e;case r.LITERAL:{const r=e.literal;return e=>e===r}case r.NEVER:return()=>!1;case r.ANY:case r.UNKNOWN:default:return()=>!0}}class VldUnionV2 extends e{constructor(e,s){super(r.UNION),this.__def=function(e,r){const s=e.map(a),t=e.map(n),c=e.map((e,r)=>"literal"===t[r]?e.literal:void 0);return{type:"union",validators:e,typeCheckers:s,simpleModes:t,simpleValues:c,errorMessage:r}}(e,s)}static create(...e){return new VldUnionV2(e)}get options(){return this.__def.validators}parse(e){const r=[],{validators:s,typeCheckers:n,simpleModes:a,simpleValues:c}=this.__def;for(let t=0;t<s.length;t++){const o=s[t],u=n[t];if(u&&!u(e))continue;const i=a[t];if(void 0!==i)switch(i){case"string":case"number":case"boolean":case"bigint":case"symbol":case"passthrough":return e;case"null":return null;case"undefined":return;case"literal":return c[t]}try{return o.parse(e)}catch(e){r.push(e instanceof Error?e.message:String(e))}}throw new Error(this.__def.errorMessage||t().unionNoMatch(r))}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:e instanceof s?e:new s([{code:"custom",path:[],message:e.message}])}}}}export{VldUnionV2};
|
package/dist/validators/void.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{getMessages as s}from"../locales/runtime.js";import{V as o}from"../chunks/errors-core-
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{getMessages as s}from"../locales/runtime.js";import{V as o}from"../chunks/errors-core-BU14-Dk8.js";class VldVoid extends e{constructor(){super(r.VOID)}static create(){return new VldVoid}get isSimple(){return!0}parse(e){if(void 0!==e)throw new Error(s().expectedUndefined)}safeParse(e){return void 0===e?{success:!0,data:void 0}:{success:!1,error:new o([{code:"invalid_type",path:[],message:s().expectedUndefined}])}}}export{VldVoid};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2 wrappers: VldOptionalV2, VldNullableV2, VldNullishV2, VldRefineV2, VldTransformV2.
|
|
3
|
+
* All single-def pattern. Public API mirrors legacy wrappers 1:1.
|
|
4
|
+
*/
|
|
5
|
+
import { VldBase, type ParseResult } from './base.js';
|
|
6
|
+
export interface VldOptionalDef<TInput, TOutput> {
|
|
7
|
+
readonly type: 'optional';
|
|
8
|
+
readonly inner: VldBase<TInput, TOutput>;
|
|
9
|
+
}
|
|
10
|
+
export declare class VldOptionalV2<TInput, TOutput> extends VldBase<TInput | undefined, TOutput | undefined> {
|
|
11
|
+
readonly __def: VldOptionalDef<TInput, TOutput>;
|
|
12
|
+
constructor(inner: VldBase<TInput, TOutput>);
|
|
13
|
+
static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldOptionalV2<TInput, TOutput>;
|
|
14
|
+
parse(value: unknown): TOutput | undefined;
|
|
15
|
+
safeParse(value: unknown): ParseResult<TOutput | undefined>;
|
|
16
|
+
unwrap(): VldBase<TInput, TOutput>;
|
|
17
|
+
}
|
|
18
|
+
export interface VldNullableDef<TInput, TOutput> {
|
|
19
|
+
readonly type: 'nullable';
|
|
20
|
+
readonly inner: VldBase<TInput, TOutput>;
|
|
21
|
+
}
|
|
22
|
+
export declare class VldNullableV2<TInput, TOutput> extends VldBase<TInput | null, TOutput | null> {
|
|
23
|
+
readonly __def: VldNullableDef<TInput, TOutput>;
|
|
24
|
+
constructor(inner: VldBase<TInput, TOutput>);
|
|
25
|
+
static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldNullableV2<TInput, TOutput>;
|
|
26
|
+
parse(value: unknown): TOutput | null;
|
|
27
|
+
safeParse(value: unknown): ParseResult<TOutput | null>;
|
|
28
|
+
unwrap(): VldBase<TInput, TOutput>;
|
|
29
|
+
}
|
|
30
|
+
export interface VldNullishDef<TInput, TOutput> {
|
|
31
|
+
readonly type: 'nullish';
|
|
32
|
+
readonly inner: VldBase<TInput, TOutput>;
|
|
33
|
+
}
|
|
34
|
+
export declare class VldNullishV2<TInput, TOutput> extends VldBase<TInput | null | undefined, TOutput | null | undefined> {
|
|
35
|
+
readonly __def: VldNullishDef<TInput, TOutput>;
|
|
36
|
+
constructor(inner: VldBase<TInput, TOutput>);
|
|
37
|
+
static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldNullishV2<TInput, TOutput>;
|
|
38
|
+
parse(value: unknown): TOutput | null | undefined;
|
|
39
|
+
safeParse(value: unknown): ParseResult<TOutput | null | undefined>;
|
|
40
|
+
unwrap(): VldBase<TInput, TOutput>;
|
|
41
|
+
}
|
|
42
|
+
export interface VldRefineDef<TInput, TBase> {
|
|
43
|
+
readonly type: 'refine';
|
|
44
|
+
readonly inner: VldBase<TInput, TBase>;
|
|
45
|
+
readonly predicate: (value: TBase) => boolean | Promise<boolean>;
|
|
46
|
+
readonly message: string;
|
|
47
|
+
readonly path?: ReadonlyArray<string | number> | undefined;
|
|
48
|
+
}
|
|
49
|
+
export declare class VldRefineV2<TInput, TBase, TOutput extends TBase = TBase> extends VldBase<TInput, TOutput> {
|
|
50
|
+
readonly __def: VldRefineDef<TInput, TBase>;
|
|
51
|
+
constructor(inner: VldBase<TInput, TBase>, predicate: (value: TBase) => boolean | Promise<boolean>, message?: string, path?: ReadonlyArray<string | number>);
|
|
52
|
+
static create<TInput, TBase, TOutput extends TBase = TBase>(inner: VldBase<TInput, TBase>, predicate: (value: TBase) => value is TOutput, message?: string): VldRefineV2<TInput, TBase, TOutput>;
|
|
53
|
+
static create<TInput, TBase, TOutput extends TBase = TBase>(inner: VldBase<TInput, TBase>, predicate: (value: TBase) => boolean | Promise<boolean>, message?: string): VldRefineV2<TInput, TBase, TOutput>;
|
|
54
|
+
parse(value: unknown): TOutput;
|
|
55
|
+
safeParse(value: unknown): ParseResult<TOutput>;
|
|
56
|
+
parseAsync(value: unknown): Promise<TOutput>;
|
|
57
|
+
safeParseAsync(value: unknown): Promise<ParseResult<TOutput>>;
|
|
58
|
+
unwrap(): VldBase<TInput, TBase>;
|
|
59
|
+
}
|
|
60
|
+
export interface VldTransformDef<TInput, TBase, TOutput> {
|
|
61
|
+
readonly type: 'transform';
|
|
62
|
+
readonly inner: VldBase<TInput, TBase>;
|
|
63
|
+
readonly transformer: (value: TBase) => TOutput | Promise<TOutput>;
|
|
64
|
+
}
|
|
65
|
+
export declare class VldTransformV2<TInput, TBase, TOutput> extends VldBase<TInput, TOutput> {
|
|
66
|
+
readonly __def: VldTransformDef<TInput, TBase, TOutput>;
|
|
67
|
+
constructor(inner: VldBase<TInput, TBase>, transformer: (value: TBase) => TOutput | Promise<TOutput>);
|
|
68
|
+
static create<TInput, TBase, TOutput>(inner: VldBase<TInput, TBase>, transformer: (value: TBase) => TOutput | Promise<TOutput>): VldTransformV2<TInput, TBase, TOutput>;
|
|
69
|
+
parse(value: unknown): TOutput;
|
|
70
|
+
safeParse(value: unknown): ParseResult<TOutput>;
|
|
71
|
+
parseAsync(value: unknown): Promise<TOutput>;
|
|
72
|
+
safeParseAsync(value: unknown): Promise<ParseResult<TOutput>>;
|
|
73
|
+
unwrap(): VldBase<TInput, TBase>;
|
|
74
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r,ensureVldError as s}from"./base.js";import{V as t}from"../chunks/errors-core-BU14-Dk8.js";class VldOptionalV2 extends e{constructor(e){super(r.OPTIONAL),this.__def=Object.freeze({type:"optional",inner:e})}static create(e){return new VldOptionalV2(e)}parse(e){if(void 0!==e)return this.__def.inner.parse(e)}safeParse(e){return void 0===e?{success:!0,data:void 0}:this.__def.inner.safeParse(e)}unwrap(){return this.__def.inner}}class VldNullableV2 extends e{constructor(e){super(r.NULLABLE),this.__def=Object.freeze({type:"nullable",inner:e})}static create(e){return new VldNullableV2(e)}parse(e){return null===e?null:this.__def.inner.parse(e)}safeParse(e){return null===e?{success:!0,data:null}:this.__def.inner.safeParse(e)}unwrap(){return this.__def.inner}}class VldNullishV2 extends e{constructor(e){super(r.NULLISH),this.__def=Object.freeze({type:"nullish",inner:e})}static create(e){return new VldNullishV2(e)}parse(e){return null==e?e:this.__def.inner.parse(e)}safeParse(e){return null==e?{success:!0,data:e}:this.__def.inner.safeParse(e)}unwrap(){return this.__def.inner}}class VldRefineV2 extends e{constructor(e,s,t="Refinement check failed",n){super(r.REFINE),this.__def=Object.freeze({type:"refine",inner:e,predicate:s,message:t,path:n})}static create(e,r,s="Refinement check failed"){return new VldRefineV2(e,r,s)}parse(e){const r=this.__def.inner.parse(e),s=this.__def.predicate(r);if(s instanceof Promise)throw new Error("Use parseAsync for async refinements");if(!s)throw new t([{code:"custom",path:this.__def.path?[...this.__def.path]:[],message:this.__def.message}]);return r}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:s(e)}}}async parseAsync(e){const r=await this.__def.inner.parseAsync(e);if(!await this.__def.predicate(r))throw new t([{code:"custom",path:[],message:this.__def.message}]);return r}async safeParseAsync(e){try{return{success:!0,data:await this.parseAsync(e)}}catch(e){return{success:!1,error:s(e)}}}unwrap(){return this.__def.inner}}class VldTransformV2 extends e{constructor(e,s){super(r.TRANSFORM),this.__def=Object.freeze({type:"transform",inner:e,transformer:s})}static create(e,r){return new VldTransformV2(e,r)}parse(e){const r=this.__def.inner.parse(e);try{const e=this.__def.transformer(r);if(e instanceof Promise)throw new Error("Use parseAsync for async transforms");return e}catch(e){throw new Error(`Transform failed: ${e.message}`)}}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:s(e)}}}async parseAsync(e){const r=await this.__def.inner.parseAsync(e);return this.__def.transformer(r)}async safeParseAsync(e){try{return{success:!0,data:await this.parseAsync(e)}}catch(e){return{success:!1,error:s(e)}}}unwrap(){return this.__def.inner}}export{VldNullableV2,VldNullishV2,VldOptionalV2,VldRefineV2,VldTransformV2};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZodError compatibility layer.
|
|
3
|
+
*
|
|
4
|
+
* Converts a VldError into a ZodError-shaped object so VLD can be a true
|
|
5
|
+
* drop-in replacement for Zod. The result has the same `issues` shape
|
|
6
|
+
* and `format()` / `flatten()` helpers that Zod users expect.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const r = v.object({ a: v.string() }).safeParse({ a: 1 });
|
|
10
|
+
* if (!r.success) {
|
|
11
|
+
* const zErr = toZodError(r.error);
|
|
12
|
+
* console.log(zErr.issues[0].expected); // "string"
|
|
13
|
+
* console.log(zErr.format());
|
|
14
|
+
* }
|
|
15
|
+
*/
|
|
16
|
+
export interface ZodLikeIssue {
|
|
17
|
+
/** The validator that failed: 'string', 'number', 'object', etc. */
|
|
18
|
+
origin?: string;
|
|
19
|
+
/** Discriminator code: 'invalid_type', 'too_small', 'invalid_format', etc. */
|
|
20
|
+
code: string;
|
|
21
|
+
/** Path to the failing field. */
|
|
22
|
+
path: (string | number)[];
|
|
23
|
+
/** Human-readable error message. */
|
|
24
|
+
message: string;
|
|
25
|
+
/** The expected value/type, when applicable. */
|
|
26
|
+
expected?: string | number | boolean | null;
|
|
27
|
+
/** The actual value/type that was received, when applicable. */
|
|
28
|
+
received?: unknown;
|
|
29
|
+
/** For numeric bounds. */
|
|
30
|
+
minimum?: number;
|
|
31
|
+
maximum?: number;
|
|
32
|
+
inclusive?: boolean;
|
|
33
|
+
/** For string length / array length bounds. */
|
|
34
|
+
format?: string;
|
|
35
|
+
pattern?: string;
|
|
36
|
+
/** Allow additional fields. */
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
export declare class ZodLikeError extends Error {
|
|
40
|
+
/** Array of individual issue descriptors. */
|
|
41
|
+
readonly issues: ReadonlyArray<ZodLikeIssue>;
|
|
42
|
+
/** Top-level error code (VLD-specific; Zod doesn't have this). */
|
|
43
|
+
readonly code: string;
|
|
44
|
+
constructor(issues: ReadonlyArray<ZodLikeIssue>);
|
|
45
|
+
/**
|
|
46
|
+
* Zod-compatible `format()` method. Returns a nested error tree
|
|
47
|
+
* keyed by path. For backward compatibility with Zod, the default
|
|
48
|
+
* format() returns `_errors: string[]` and any nested fields.
|
|
49
|
+
*/
|
|
50
|
+
format(): Record<string, any>;
|
|
51
|
+
/**
|
|
52
|
+
* Zod-compatible `flatten()` method. Returns `{ formErrors: string[],
|
|
53
|
+
* fieldErrors: Record<string, string[]> }`.
|
|
54
|
+
*/
|
|
55
|
+
flatten(): {
|
|
56
|
+
formErrors: string[];
|
|
57
|
+
fieldErrors: Record<string, string[]>;
|
|
58
|
+
};
|
|
59
|
+
/** Zod-compatible `errors` getter (alias of `issues`). */
|
|
60
|
+
get errors(): ReadonlyArray<ZodLikeIssue>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Convert a VldError to a ZodError-shaped error.
|
|
64
|
+
*
|
|
65
|
+
* The returned ZodLikeError has the same `issues` array shape, plus
|
|
66
|
+
* `format()` and `flatten()` helpers that Zod users expect.
|
|
67
|
+
*/
|
|
68
|
+
export declare function toZodError(vldError: any): ZodLikeError;
|
|
69
|
+
/**
|
|
70
|
+
* Convenience: convert a safeParse result to a Zod-shaped result.
|
|
71
|
+
* If `result.success === false`, the `error` field will be a ZodLikeError
|
|
72
|
+
* instead of the raw VldError. Otherwise the result is unchanged.
|
|
73
|
+
*/
|
|
74
|
+
export declare function toZodSafeResult<T>(result: {
|
|
75
|
+
success: boolean;
|
|
76
|
+
data?: T;
|
|
77
|
+
error?: any;
|
|
78
|
+
}): {
|
|
79
|
+
success: true;
|
|
80
|
+
data: T;
|
|
81
|
+
} | {
|
|
82
|
+
success: false;
|
|
83
|
+
error: ZodLikeError;
|
|
84
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){return null===e?"null":void 0===e?"undefined":Array.isArray(e)?"array":"number"==typeof e?Number.isNaN(e)?"nan":e===1/0?"Infinity":e===-1/0?"-Infinity":"number":e instanceof Date?"date":e instanceof Map?"map":e instanceof Set?"set":typeof e}function s(e,s,r){return{code:"invalid_type",path:[],expected:e,received:s,message:r??`Invalid input: expected ${e}, received ${s}`}}function r(e){const s={code:e.code,path:e.path,message:e.message};return void 0!==e.expected&&(s.expected=e.expected),void 0!==e.received&&(s.received=e.received),void 0!==e.keys&&(s.keys=e.keys),void 0!==e.minimum&&(s.minimum=e.minimum),void 0!==e.maximum&&(s.maximum=e.maximum),void 0!==e.exact&&(s.exact=e.exact),void 0!==e.inclusive&&(s.inclusive=e.inclusive),void 0!==e.origin&&(s.origin=e.origin),void 0!==e.format&&(s.format=e.format),void 0!==e.values&&(s.values=e.values),void 0!==e.pattern&&(s.pattern=e.pattern),s}function i(e){const s={code:e.code,path:e.path,message:e.message};return void 0!==e.expected&&(s.expected=e.expected),void 0!==e.received&&(s.received=e.received),void 0!==e.keys&&(s.keys=e.keys),void 0!==e.minimum&&(s.minimum=e.minimum),void 0!==e.maximum&&(s.maximum=e.maximum),void 0!==e.exact&&(s.exact=e.exact),void 0!==e.inclusive&&(s.inclusive=e.inclusive),void 0!==e.origin&&(s.origin=e.origin),void 0!==e.format&&(s.format=e.format),void 0!==e.values&&(s.values=e.values),void 0!==e.pattern&&(s.pattern=e.pattern),s}class VldError extends Error{constructor(e,s){const r=e[0];super(void 0!==s?s:1===e.length&&void 0!==r?r.message:`${e.length} validation errors`),this.name="VldError",this.issues=e,Error.captureStackTrace&&Error.captureStackTrace(this,VldError)}get firstError(){return this.issues[0]}get errors(){return this.issues}get isEmpty(){return 0===this.issues.length}get formattedErrors(){return this.issues.map(e=>e.message)}addIssue(e){this.issues.push(e)}addIssues(e=[]){this.issues.push(...e)}format(){const e={_errors:[]};for(const s of this.issues)if(s.path&&0!==s.path.length){let r=e;for(const e of s.path)r[e]||(r[e]={_errors:[]}),r=r[e];r._errors.push(s.message)}else e._errors.push(s.message);return e}flatten(e){const s=e??(e=>e.message),r=[],i={};for(const e of this.issues)if(e.path&&0!==e.path.length){const r=String(e.path[0]);i[r]=i[r]??[],i[r].push(s(e))}else r.push(s(e));return{formErrors:r,fieldErrors:i}}toJSON(){return{name:this.name,message:this.message,code:"VLD_VALIDATION_ERROR",issues:this.issues.map(r)}}static fromJSON(e){const s=e.issues.map(i);return new VldError(s)}static isVldError(e){return e instanceof VldError}}export{VldError as V,s as c,e as g};
|