@oxog/vld 2.0.2 → 2.0.3
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 +42 -0
- package/LICENSE +20 -20
- package/README.md +2 -2
- package/dist/chunks/{bigint-DgsCr2dC.js → bigint-CRS0QVsy.js} +147 -2
- package/dist/chunks/bigint-CRS0QVsy.js.map +1 -0
- package/dist/chunks/{date-ODue_rtq.js → date-50JV_Mfj.js} +2 -2
- package/dist/chunks/{date-ODue_rtq.js.map → date-50JV_Mfj.js.map} +1 -1
- package/dist/chunks/{index-CETyGkrv.js → index-DO8CFMxD.js} +4 -4
- package/dist/chunks/index-DO8CFMxD.js.map +1 -0
- package/dist/chunks/{json-o20GFhTh.js → json-Cp4WO0M9.js} +4 -4
- package/dist/chunks/json-Cp4WO0M9.js.map +1 -0
- package/dist/chunks/{unknown-SLIH1VCf.js → unknown-Dhzri_T-.js} +2 -2
- package/dist/chunks/unknown-Dhzri_T-.js.map +1 -0
- package/dist/cjs/index.cjs +777 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/locales/index.cjs.map +1 -1
- package/dist/cjs/mini.cjs +145 -0
- package/dist/cjs/mini.cjs.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/codecs/index.js +3 -3
- package/dist/coercion/index.js +2 -2
- package/dist/coercion/index.js.map +1 -1
- package/dist/index.d.ts +244 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +550 -11
- package/dist/index.js.map +1 -1
- package/dist/mini.js +5 -5
- package/dist/utils/json-schema.d.ts +67 -0
- package/dist/utils/json-schema.d.ts.map +1 -0
- package/dist/validators/base.d.ts +79 -0
- package/dist/validators/base.d.ts.map +1 -1
- package/dist/validators/index.d.ts +3 -2
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +514 -4
- package/dist/validators/index.js.map +1 -1
- package/dist/validators/number.d.ts +30 -0
- package/dist/validators/number.d.ts.map +1 -1
- package/dist/validators/promise.d.ts +53 -0
- package/dist/validators/promise.d.ts.map +1 -0
- package/dist/validators/string-formats.d.ts +6 -0
- package/dist/validators/string-formats.d.ts.map +1 -1
- package/package.json +6 -5
- package/dist/chunks/bigint-DgsCr2dC.js.map +0 -1
- package/dist/chunks/index-BZqWZvVe.js +0 -426
- package/dist/chunks/index-BZqWZvVe.js.map +0 -1
- package/dist/chunks/index-CETyGkrv.js.map +0 -1
- package/dist/chunks/json-o20GFhTh.js.map +0 -1
- package/dist/chunks/unknown-SLIH1VCf.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,48 @@ All notable changes to VLD will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.0.3] - 2026-05-08
|
|
9
|
+
|
|
10
|
+
### 🐛 Bug Fixes
|
|
11
|
+
|
|
12
|
+
#### **VldPromise - Thenable Check Before Promise.resolve**
|
|
13
|
+
- **File**: `src/validators/promise.ts`
|
|
14
|
+
- **Fix**: `_isThenable()` check now happens BEFORE `Promise.resolve()` wrapping
|
|
15
|
+
- **Issue**: Everything becomes thenable after Promise.resolve wrapping
|
|
16
|
+
- **Impact**: Correctly rejects non-Promise, non-thenable inputs
|
|
17
|
+
|
|
18
|
+
### ✨ New Features
|
|
19
|
+
|
|
20
|
+
#### **Number Bit-Width Validators**
|
|
21
|
+
- **Files**: `src/validators/number.ts`
|
|
22
|
+
- **Added**: `uint32()`, `uint64()`, `int32()`, `int64()`, `float32()`, `float64()`
|
|
23
|
+
- **Use case**: Validate integers/floats within specific bit ranges
|
|
24
|
+
|
|
25
|
+
#### **VldMeta - Metadata Support**
|
|
26
|
+
- **File**: `src/validators/base.ts`
|
|
27
|
+
- **Added**: `VldMeta` class and `SchemaMetadata` interface
|
|
28
|
+
- **Methods**: `describe()`, `meta()` for attaching documentation
|
|
29
|
+
|
|
30
|
+
#### **exactOptional() Validator**
|
|
31
|
+
- **File**: `src/validators/base.ts`
|
|
32
|
+
- **Added**: `VldExactOptional` for strict optional handling
|
|
33
|
+
- **Use case**: When `undefined` should only appear if explicitly set
|
|
34
|
+
|
|
35
|
+
### 📝 Documentation
|
|
36
|
+
|
|
37
|
+
#### **README Updates**
|
|
38
|
+
- Coverage badge: 98.34% (was 98.99%)
|
|
39
|
+
- Test count: 1914 tests (was 1858)
|
|
40
|
+
- Note: Increased test suite size slightly reduced percentage but improved coverage
|
|
41
|
+
|
|
42
|
+
### ✅ Testing
|
|
43
|
+
|
|
44
|
+
#### **Coverage Test Suite Expansion**
|
|
45
|
+
- Added `tests/validators/promise-coverage.test.ts` - 19 tests for Promise validator
|
|
46
|
+
- Added `tests/validators/base-coverage.test.ts` - VldMeta, exactOptional, describe tests
|
|
47
|
+
- Added `tests/validators/string-formats-coverage.test.ts` - xid, guid, httpUrl, hash tests
|
|
48
|
+
- Total: 76 test suites, 1914 tests passing
|
|
49
|
+
|
|
8
50
|
## [2.0.2] - 2026-02-27
|
|
9
51
|
|
|
10
52
|
### ⚡ Performance Optimizations
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Ersin Koc
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Ersin Koc
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# VLD - Fast & Lightweight TypeScript Validation Library
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@oxog/vld) [](https://opensource.org/licenses/MIT) [](https://www.typescriptlang.org/) [](package.json) [](https://www.npmjs.com/package/@oxog/vld) [](https://opensource.org/licenses/MIT) [](https://www.typescriptlang.org/) [](package.json) [](package.json)
|
|
4
4
|
|
|
5
5
|
VLD is a blazing-fast, type-safe validation library for TypeScript and JavaScript with **full Zod feature parity**. Built with performance in mind, it provides a simple and intuitive API while maintaining excellent type inference and 27+ language internationalization support.
|
|
6
6
|
|
|
@@ -34,7 +34,7 @@ VLD is a blazing-fast, type-safe validation library for TypeScript and JavaScrip
|
|
|
34
34
|
- **Composable**: Chain validations for complex schemas
|
|
35
35
|
- **Advanced Error Formatting**: Tree, pretty, and flatten error utilities
|
|
36
36
|
- **Multi-language**: Built-in support for 27+ languages
|
|
37
|
-
- **98.
|
|
37
|
+
- **98.34% Test Coverage**: Rigorously tested with 1914 passing tests
|
|
38
38
|
- **Industry Leading Performance**: 1.98x faster than Zod on average
|
|
39
39
|
|
|
40
40
|
### Advanced Zod-Compatible Features
|
|
@@ -114,6 +114,16 @@ class VldBase {
|
|
|
114
114
|
nullish() {
|
|
115
115
|
return new VldNullish(this);
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Make this validator exactly optional - allows undefined but not missing
|
|
119
|
+
* Unlike .optional() which treats missing as undefined, exactOptional()
|
|
120
|
+
* requires the key to be present but allows undefined as a value
|
|
121
|
+
* Zod 4 API parity
|
|
122
|
+
* @returns A new exact optional validator
|
|
123
|
+
*/
|
|
124
|
+
exactOptional() {
|
|
125
|
+
return new VldExactOptional(this);
|
|
126
|
+
}
|
|
117
127
|
/**
|
|
118
128
|
* Pipe the output of this validator into another validator
|
|
119
129
|
* @param next The next validator to pipe into
|
|
@@ -158,6 +168,49 @@ class VldBase {
|
|
|
158
168
|
apply(fn) {
|
|
159
169
|
return fn(this);
|
|
160
170
|
}
|
|
171
|
+
check(predicate, message) {
|
|
172
|
+
return new VldRefine(this, predicate, message);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get or set metadata for this schema
|
|
176
|
+
*/
|
|
177
|
+
meta(data) {
|
|
178
|
+
if (data === undefined) {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
return new VldMeta(this, data);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Add a description to this schema
|
|
185
|
+
* Zod 4 API parity - convenience method for .meta({ description: ... })
|
|
186
|
+
* @param description The description to add
|
|
187
|
+
* @returns A new validator with the description
|
|
188
|
+
*/
|
|
189
|
+
describe(description) {
|
|
190
|
+
return new VldMeta(this, { description });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Metadata validator - wraps a schema with metadata
|
|
195
|
+
*/
|
|
196
|
+
class VldMeta extends VldBase {
|
|
197
|
+
constructor(baseValidator, metadata) {
|
|
198
|
+
super();
|
|
199
|
+
this.baseValidator = baseValidator;
|
|
200
|
+
this.metadata = metadata;
|
|
201
|
+
}
|
|
202
|
+
parse(value) {
|
|
203
|
+
return this.baseValidator.parse(value);
|
|
204
|
+
}
|
|
205
|
+
safeParse(value) {
|
|
206
|
+
return this.baseValidator.safeParse(value);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get the metadata
|
|
210
|
+
*/
|
|
211
|
+
getMeta() {
|
|
212
|
+
return this.metadata;
|
|
213
|
+
}
|
|
161
214
|
}
|
|
162
215
|
/**
|
|
163
216
|
* Readonly validator - marks output as readonly
|
|
@@ -373,6 +426,38 @@ class VldOptional extends VldBase {
|
|
|
373
426
|
return this.baseValidator;
|
|
374
427
|
}
|
|
375
428
|
}
|
|
429
|
+
/**
|
|
430
|
+
* Exact optional validator - allows undefined but requires key presence
|
|
431
|
+
* Unlike Optional which treats missing as undefined, ExactOptional
|
|
432
|
+
* requires the key to be present (not missing from object) but allows undefined
|
|
433
|
+
* Zod 4 API parity
|
|
434
|
+
*/
|
|
435
|
+
class VldExactOptional extends VldBase {
|
|
436
|
+
constructor(baseValidator) {
|
|
437
|
+
super();
|
|
438
|
+
this.baseValidator = baseValidator;
|
|
439
|
+
}
|
|
440
|
+
static create(baseValidator) {
|
|
441
|
+
return new VldExactOptional(baseValidator);
|
|
442
|
+
}
|
|
443
|
+
parse(value) {
|
|
444
|
+
if (value === undefined) {
|
|
445
|
+
return undefined;
|
|
446
|
+
}
|
|
447
|
+
return this.baseValidator.parse(value);
|
|
448
|
+
}
|
|
449
|
+
safeParse(value) {
|
|
450
|
+
// Unlike regular optional, undefined is explicitly valid
|
|
451
|
+
// but we still validate through the base validator
|
|
452
|
+
if (value === undefined) {
|
|
453
|
+
return { success: true, data: undefined };
|
|
454
|
+
}
|
|
455
|
+
return this.baseValidator.safeParse(value);
|
|
456
|
+
}
|
|
457
|
+
unwrap() {
|
|
458
|
+
return this.baseValidator;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
376
461
|
/**
|
|
377
462
|
* Nullable validator - allows null
|
|
378
463
|
*/
|
|
@@ -1226,6 +1311,66 @@ class VldNumber extends VldBase {
|
|
|
1226
1311
|
lte(value, message) {
|
|
1227
1312
|
return this.max(value, message);
|
|
1228
1313
|
}
|
|
1314
|
+
/**
|
|
1315
|
+
* Create a validator for unsigned 32-bit integers
|
|
1316
|
+
* Range: 0 to 4,294,967,295
|
|
1317
|
+
*/
|
|
1318
|
+
uint32(message) {
|
|
1319
|
+
return new VldNumber({
|
|
1320
|
+
checks: [...this.config.checks, (v) => Number.isSafeInteger(v) && v >= 0 && v <= 4294967295],
|
|
1321
|
+
errorMessage: message || 'Expected an unsigned 32-bit integer'
|
|
1322
|
+
});
|
|
1323
|
+
}
|
|
1324
|
+
/**
|
|
1325
|
+
* Create a validator for unsigned 64-bit integers
|
|
1326
|
+
* Range: 0 to 2^53-1 (safe integer limit)
|
|
1327
|
+
*/
|
|
1328
|
+
uint64(message) {
|
|
1329
|
+
return new VldNumber({
|
|
1330
|
+
checks: [...this.config.checks, (v) => Number.isSafeInteger(v) && v >= 0],
|
|
1331
|
+
errorMessage: message || 'Expected an unsigned 64-bit integer'
|
|
1332
|
+
});
|
|
1333
|
+
}
|
|
1334
|
+
/**
|
|
1335
|
+
* Create a validator for signed 32-bit integers
|
|
1336
|
+
* Range: -2,147,483,648 to 2,147,483,647
|
|
1337
|
+
*/
|
|
1338
|
+
int32(message) {
|
|
1339
|
+
return new VldNumber({
|
|
1340
|
+
checks: [...this.config.checks, (v) => Number.isSafeInteger(v) && v >= -2147483648 && v <= 2147483647],
|
|
1341
|
+
errorMessage: message || 'Expected a signed 32-bit integer'
|
|
1342
|
+
});
|
|
1343
|
+
}
|
|
1344
|
+
/**
|
|
1345
|
+
* Create a validator for signed 64-bit integers
|
|
1346
|
+
* Range: -(2^53-1) to 2^53-1 (safe integer limit)
|
|
1347
|
+
*/
|
|
1348
|
+
int64(message) {
|
|
1349
|
+
return new VldNumber({
|
|
1350
|
+
checks: [...this.config.checks, (v) => Number.isSafeInteger(v)],
|
|
1351
|
+
errorMessage: message || 'Expected a signed 64-bit integer'
|
|
1352
|
+
});
|
|
1353
|
+
}
|
|
1354
|
+
/**
|
|
1355
|
+
* Create a validator for 32-bit floats (IEEE 754 single precision)
|
|
1356
|
+
* Range: -3.4e38 to 3.4e38, precision ~7 decimal digits
|
|
1357
|
+
*/
|
|
1358
|
+
float32(message) {
|
|
1359
|
+
return new VldNumber({
|
|
1360
|
+
checks: [...this.config.checks, (v) => Number.isFinite(v) && Math.abs(v) <= 3.4e38],
|
|
1361
|
+
errorMessage: message || 'Expected a 32-bit float'
|
|
1362
|
+
});
|
|
1363
|
+
}
|
|
1364
|
+
/**
|
|
1365
|
+
* Create a validator for 64-bit floats (IEEE 754 double precision)
|
|
1366
|
+
* Alias for standard number validation
|
|
1367
|
+
*/
|
|
1368
|
+
float64(message) {
|
|
1369
|
+
return new VldNumber({
|
|
1370
|
+
checks: [...this.config.checks, (v) => Number.isFinite(v)],
|
|
1371
|
+
errorMessage: message || 'Expected a 64-bit float'
|
|
1372
|
+
});
|
|
1373
|
+
}
|
|
1229
1374
|
}
|
|
1230
1375
|
|
|
1231
1376
|
/**
|
|
@@ -1705,5 +1850,5 @@ class VldBigInt extends VldBase {
|
|
|
1705
1850
|
}
|
|
1706
1851
|
}
|
|
1707
1852
|
|
|
1708
|
-
export {
|
|
1709
|
-
//# sourceMappingURL=bigint-
|
|
1853
|
+
export { VldBigInt as V, VldBoolean as a, VldDate as b, VldNumber as c, VldNullable as d, VldNullish as e, VldOptional as f, VldPreprocess as g, VldString as h, VldBase as i, VldBrand as j, VldCatch as k, VldDefault as l, VldPipe as m, VldReadonly as n, VldRefine as o, VldSuperRefine as p, VldTransform as q, VldExactOptional as r, VldMeta as s, getLocale as t, getMessages as u, setLocale as v, isValidIPv6 as w };
|
|
1854
|
+
//# sourceMappingURL=bigint-CRS0QVsy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bigint-CRS0QVsy.js","sources":["../../src/validators/base.ts","../../src/locales/index.ts","../../src/utils/ip-validation.ts","../../src/validators/string.ts","../../src/validators/number.ts","../../src/validators/boolean.ts","../../src/validators/date.ts","../../src/validators/bigint.ts"],"sourcesContent":["/**\r\n * Base result type for validation\r\n */\r\nexport type ParseResult<T> =\r\n | { readonly success: true; readonly data: T }\r\n | { readonly success: false; readonly error: Error };\r\n\r\n/**\r\n * Context for superRefine - allows adding multiple issues\r\n */\r\nexport interface SuperRefineContext {\r\n addIssue(issue: { message: string; code?: string }): void;\r\n path: (string | number)[];\r\n}\r\n\r\n/**\r\n * Abstract base class for all validators\r\n * Implements immutable pattern to prevent memory leaks and race conditions\r\n */\r\nexport abstract class VldBase<TInput, TOutput = TInput> {\r\n /**\r\n * Parse and validate a value, throwing an error if invalid\r\n * @param value The value to validate\r\n * @returns The validated value\r\n * @throws {Error} If validation fails\r\n */\r\n abstract parse(value: unknown): TOutput;\r\n \r\n /**\r\n * Safely parse and validate a value, returning a result object\r\n * @param value The value to validate\r\n * @returns A result object with either success and data, or failure and error\r\n */\r\n abstract safeParse(value: unknown): ParseResult<TOutput>;\r\n \r\n /**\r\n * Check if a value is valid according to this validator\r\n * @param value The value to check\r\n * @returns True if valid, false otherwise\r\n */\r\n isValid(value: unknown): boolean {\r\n return this.safeParse(value).success;\r\n }\r\n \r\n /**\r\n * Parse a value or return a default if validation fails\r\n * BUG-NEW-017 FIX: Validate default value to ensure type safety\r\n * @param value The value to validate\r\n * @param defaultValue The default value to return on failure\r\n * @returns The validated value or default\r\n */\r\n parseOrDefault(value: unknown, defaultValue: TOutput): TOutput {\r\n const result = this.safeParse(value);\r\n if (result.success) {\r\n return result.data;\r\n }\r\n\r\n // Validate the default value to ensure it's actually valid\r\n const defaultResult = this.safeParse(defaultValue);\r\n if (!defaultResult.success) {\r\n throw new Error(`Invalid default value provided: ${defaultResult.error.message}`);\r\n }\r\n\r\n return defaultResult.data;\r\n }\r\n \r\n /**\r\n * Create a new validator that refines this one with a custom predicate\r\n * @param predicate The refinement predicate\r\n * @param message Optional custom error message\r\n * @returns A new refined validator\r\n */\r\n refine<TRefined extends TOutput>(\r\n predicate: (value: TOutput) => value is TRefined,\r\n message?: string\r\n ): VldRefine<TInput, TOutput, TRefined>;\r\n refine(\r\n predicate: (value: TOutput) => boolean,\r\n message?: string\r\n ): VldRefine<TInput, TOutput, TOutput>;\r\n refine(\r\n predicate: (value: TOutput) => boolean,\r\n message?: string\r\n ): VldRefine<TInput, TOutput, TOutput> {\r\n return new VldRefine(this, predicate, message);\r\n }\r\n\r\n /**\r\n * Advanced refinement with context for adding multiple issues\r\n * @param refinement The refinement function with context\r\n * @returns A new super refined validator\r\n */\r\n superRefine(\r\n refinement: (value: TOutput, ctx: SuperRefineContext) => void | Promise<void>\r\n ): VldSuperRefine<TInput, TOutput> {\r\n return new VldSuperRefine(this, refinement);\r\n }\r\n\r\n /**\r\n * Create a new validator that transforms the output\r\n * @param transformer The transformation function\r\n * @returns A new transformed validator\r\n */\r\n transform<TTransformed>(\r\n transformer: (value: TOutput) => TTransformed\r\n ): VldTransform<TInput, TOutput, TTransformed> {\r\n return new VldTransform(this, transformer);\r\n }\r\n \r\n /**\r\n * Create a new validator with a default value for undefined inputs\r\n * @param defaultValue The default value\r\n * @returns A new validator with default\r\n */\r\n default(defaultValue: TOutput): VldDefault<TInput, TOutput> {\r\n return new VldDefault(this, defaultValue);\r\n }\r\n \r\n /**\r\n * Create a new validator that catches errors and returns a fallback\r\n * @param fallbackValue The fallback value\r\n * @returns A new validator with catch\r\n */\r\n catch(fallbackValue: TOutput): VldCatch<TInput, TOutput> {\r\n return new VldCatch(this, fallbackValue);\r\n }\r\n \r\n /**\r\n * Make this validator optional (allows undefined)\r\n * @returns A new optional validator\r\n */\r\n optional(): VldOptional<TInput, TOutput> {\r\n return new VldOptional(this);\r\n }\r\n \r\n /**\r\n * Make this validator nullable (allows null)\r\n * @returns A new nullable validator\r\n */\r\n nullable(): VldNullable<TInput, TOutput> {\r\n return new VldNullable(this);\r\n }\r\n \r\n /**\r\n * Make this validator nullish (allows null or undefined)\r\n * @returns A new nullish validator\r\n */\r\n nullish(): VldNullish<TInput, TOutput> {\r\n return new VldNullish(this);\r\n }\r\n\r\n /**\r\n * Make this validator exactly optional - allows undefined but not missing\r\n * Unlike .optional() which treats missing as undefined, exactOptional()\r\n * requires the key to be present but allows undefined as a value\r\n * Zod 4 API parity\r\n * @returns A new exact optional validator\r\n */\r\n exactOptional(): VldExactOptional<TInput, TOutput> {\r\n return new VldExactOptional(this);\r\n }\r\n\r\n /**\r\n * Pipe the output of this validator into another validator\r\n * @param next The next validator to pipe into\r\n * @returns A new piped validator\r\n */\r\n pipe<TNextOutput>(next: VldBase<TOutput, TNextOutput>): VldPipe<TInput, TOutput, TNextOutput> {\r\n return new VldPipe(this, next);\r\n }\r\n\r\n /**\r\n * Create a new validator that returns readonly output\r\n * Zod 4 API parity - marks output as readonly for TypeScript\r\n * @returns A new readonly validator\r\n */\r\n readonly(): VldReadonly<TInput, TOutput> {\r\n return new VldReadonly(this);\r\n }\r\n\r\n /**\r\n * Brand the output type with a unique brand for nominal typing\r\n * Zod 4 API parity - prevents accidental assignment of similarly typed values\r\n * @returns A new branded validator\r\n * @example\r\n * const userIdSchema = v.string().brand<'UserId'>();\r\n * const productIdSchema = v.string().brand<'ProductId'>();\r\n *\r\n * let userId: UserId = userIdSchema.parse('abc');\r\n * let productId: ProductId = productIdSchema.parse('xyz');\r\n *\r\n * userId = productId; // TypeScript error: types are incompatible\r\n */\r\n brand<TBrand extends string>(): VldBrand<TInput, TOutput, TBrand> {\r\n return new VldBrand(this);\r\n }\r\n\r\n /**\r\n * Apply an external function to transform this validator\r\n * Zod 4 API parity - allows external function chaining\r\n * @param fn External function that takes this validator and returns a new validator\r\n * @returns The result of applying the function to this validator\r\n * @example\r\n * const withLength = (schema: VldBase<unknown, string>) => schema.transform(s => s.length);\r\n * const lengthSchema = v.string().apply(withLength); // validates string, returns number\r\n */\r\n apply<TNewOutput>(fn: (schema: this) => VldBase<TInput, TNewOutput>): VldBase<TInput, TNewOutput> {\r\n return fn(this);\r\n }\r\n\r\n /**\r\n * Create a new validator that refines this one with a custom predicate\r\n * Alias for refine() - check() is the Zod 4 API name\r\n * @param predicate The refinement predicate\r\n * @param message Optional custom error message\r\n * @returns A new refined validator\r\n */\r\n check<TRefined extends TOutput>(\r\n predicate: (value: TOutput) => value is TRefined,\r\n message?: string\r\n ): VldRefine<TInput, TOutput, TRefined>;\r\n check(\r\n predicate: (value: TOutput) => boolean,\r\n message?: string\r\n ): VldRefine<TInput, TOutput, TOutput>;\r\n check(\r\n predicate: (value: TOutput) => boolean,\r\n message?: string\r\n ): VldRefine<TInput, TOutput, TOutput> {\r\n return new VldRefine(this, predicate, message);\r\n }\r\n\r\n /**\r\n * Get metadata for this schema\r\n * Zod 4 API parity - allows attaching OpenAPI/JSON Schema metadata\r\n * @returns Metadata object or undefined\r\n */\r\n meta(): SchemaMetadata | undefined;\r\n\r\n /**\r\n * Set metadata for this schema\r\n * Zod 4 API parity - allows attaching OpenAPI/JSON Schema metadata\r\n * @param data Metadata to attach\r\n * @returns A new validator with the metadata\r\n */\r\n meta(data: Partial<SchemaMetadata>): VldMeta<TInput, TOutput>;\r\n\r\n /**\r\n * Get or set metadata for this schema\r\n */\r\n meta(data?: Partial<SchemaMetadata>): SchemaMetadata | undefined | VldMeta<TInput, TOutput> {\r\n if (data === undefined) {\r\n return undefined;\r\n }\r\n return new VldMeta(this, data);\r\n }\r\n\r\n /**\r\n * Add a description to this schema\r\n * Zod 4 API parity - convenience method for .meta({ description: ... })\r\n * @param description The description to add\r\n * @returns A new validator with the description\r\n */\r\n describe(description: string): VldMeta<TInput, TOutput> {\r\n return new VldMeta(this, { description });\r\n }\r\n}\r\n\r\n/**\r\n * Schema metadata interface for OpenAPI/JSON Schema compatibility\r\n */\r\nexport interface SchemaMetadata {\r\n id?: string;\r\n title?: string;\r\n description?: string;\r\n examples?: unknown[];\r\n default?: unknown;\r\n deprecated?: boolean;\r\n readOnly?: boolean;\r\n writeOnly?: boolean;\r\n [key: string]: unknown;\r\n}\r\n\r\n/**\r\n * Metadata validator - wraps a schema with metadata\r\n */\r\nexport class VldMeta<TInput, TOutput> extends VldBase<TInput, TOutput> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TOutput>,\r\n private readonly metadata: Partial<SchemaMetadata>\r\n ) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n /**\r\n * Get the metadata\r\n */\r\n getMeta(): Readonly<Partial<SchemaMetadata>> {\r\n return this.metadata;\r\n }\r\n}\r\n\r\n/**\r\n * Readonly validator - marks output as readonly\r\n */\r\nexport class VldReadonly<TInput, TOutput> extends VldBase<TInput, Readonly<TOutput>> {\r\n constructor(private readonly baseValidator: VldBase<TInput, TOutput>) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): Readonly<TOutput> {\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<Readonly<TOutput>> {\r\n const result = this.baseValidator.safeParse(value);\r\n if (result.success) {\r\n return { success: true, data: result.data as Readonly<TOutput> };\r\n }\r\n return result as ParseResult<Readonly<TOutput>>;\r\n }\r\n}\r\n\r\n/**\r\n * Brand validator - adds a unique brand to the output type for nominal typing\r\n * Uses TypeScript's branded types pattern to prevent accidental assignment\r\n */\r\nexport class VldBrand<TInput, TOutput, TBrand extends string> extends VldBase<\r\n TInput,\r\n TOutput & { readonly __brand: TBrand }\r\n> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TOutput>\r\n ) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): TOutput & { readonly __brand: TBrand } {\r\n return this.baseValidator.parse(value) as TOutput & {\r\n readonly __brand: TBrand;\r\n };\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput & { readonly __brand: TBrand }> {\r\n const result = this.baseValidator.safeParse(value);\r\n if (result.success) {\r\n return {\r\n success: true,\r\n data: result.data as TOutput & { readonly __brand: TBrand }\r\n };\r\n }\r\n return result as ParseResult<TOutput & { readonly __brand: TBrand }>;\r\n }\r\n}\r\n\r\n/**\r\n * Refine validator - adds custom validation\r\n */\r\nexport class VldRefine<TInput, TBase, TOutput extends TBase = TBase> extends VldBase<TInput, TOutput> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TBase>,\r\n private readonly predicate: (value: TBase) => boolean,\r\n private readonly customMessage?: string\r\n ) {\r\n super();\r\n }\r\n \r\n parse(value: unknown): TOutput {\r\n const baseResult = this.baseValidator.parse(value);\r\n \r\n if (!this.predicate(baseResult)) {\r\n throw new Error(this.customMessage || 'Refinement check failed');\r\n }\r\n \r\n return baseResult as TOutput;\r\n }\r\n \r\n safeParse(value: unknown): ParseResult<TOutput> {\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}\r\n\r\n/**\r\n * Transform validator - transforms data after validation\r\n */\r\nexport class VldTransform<TInput, TBase, TOutput> extends VldBase<TInput, TOutput> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TBase>,\r\n private readonly transformer: (value: TBase) => TOutput\r\n ) {\r\n super();\r\n }\r\n \r\n parse(value: unknown): TOutput {\r\n const baseResult = this.baseValidator.parse(value);\r\n \r\n try {\r\n return this.transformer(baseResult);\r\n } catch (error) {\r\n throw new Error(`Transform failed: ${(error as Error).message}`);\r\n }\r\n }\r\n \r\n safeParse(value: unknown): ParseResult<TOutput> {\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}\r\n\r\n/**\r\n * Default validator - provides default value for undefined\r\n * Note: Does not validate the default value at construction time.\r\n * Use .prefault() to validate the default value at parse time.\r\n */\r\nexport class VldDefault<TInput, TOutput> extends VldBase<TInput | undefined, TOutput> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TOutput>,\r\n private readonly defaultValue: TOutput\r\n ) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n if (value === undefined) {\r\n return this.defaultValue;\r\n }\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n if (value === undefined) {\r\n return { success: true, data: this.defaultValue };\r\n }\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n /**\r\n * Pre-parse default - validates the default value instead of returning it directly\r\n * This is useful when the default value needs to be validated against the schema\r\n */\r\n prefault(): VldPrefault<TInput, TOutput> {\r\n // Return a new validator that validates the default value when parse(undefined) is called\r\n return new VldPrefault(this.baseValidator, this.defaultValue);\r\n }\r\n}\r\n\r\n/**\r\n * Prefault validator - validates the default value instead of returning it directly\r\n */\r\nexport class VldPrefault<TInput, TOutput> extends VldBase<TInput | undefined, TOutput> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TOutput>,\r\n private readonly defaultValue: TOutput\r\n ) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n if (value === undefined) {\r\n // Validate the default value through the base validator\r\n return this.baseValidator.parse(this.defaultValue as unknown);\r\n }\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n if (value === undefined) {\r\n return this.baseValidator.safeParse(this.defaultValue as unknown);\r\n }\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n /**\r\n * Calling prefault multiple times should be safe - return self\r\n */\r\n prefault(): VldPrefault<TInput, TOutput> {\r\n return this;\r\n }\r\n}\r\n\r\n/**\r\n * Catch validator - provides fallback value on validation error\r\n * BUG-NPM-003 FIX: Validate fallback value at construction time\r\n */\r\nexport class VldCatch<TInput, TOutput> extends VldBase<TInput, TOutput> {\r\n constructor(\r\n private readonly baseValidator: VldBase<TInput, TOutput>,\r\n private readonly fallbackValue: TOutput\r\n ) {\r\n super();\r\n // BUG-NPM-003 FIX: Validate the fallback value to ensure type safety\r\n const validation = baseValidator.safeParse(fallbackValue);\r\n if (!validation.success) {\r\n throw new Error(`Invalid fallback value: ${validation.error.message}`);\r\n }\r\n }\r\n \r\n parse(value: unknown): TOutput {\r\n try {\r\n return this.baseValidator.parse(value);\r\n } catch {\r\n return this.fallbackValue;\r\n }\r\n }\r\n \r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n const result = this.baseValidator.safeParse(value);\r\n if (result.success) {\r\n return result;\r\n }\r\n return { success: true, data: this.fallbackValue };\r\n }\r\n}\r\n\r\n/**\r\n * Optional validator - allows undefined\r\n */\r\nexport class VldOptional<TInput, TOutput> extends VldBase<TInput | undefined, TOutput | undefined> {\r\n constructor(private readonly baseValidator: VldBase<TInput, TOutput>) {\r\n super();\r\n }\r\n\r\n static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldOptional<TInput, TOutput> {\r\n return new VldOptional(baseValidator);\r\n }\r\n\r\n parse(value: unknown): TOutput | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput | undefined> {\r\n if (value === undefined) {\r\n return { success: true, data: undefined };\r\n }\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n unwrap(): VldBase<TInput, TOutput> {\r\n return this.baseValidator;\r\n }\r\n}\r\n\r\n/**\r\n * Exact optional validator - allows undefined but requires key presence\r\n * Unlike Optional which treats missing as undefined, ExactOptional\r\n * requires the key to be present (not missing from object) but allows undefined\r\n * Zod 4 API parity\r\n */\r\nexport class VldExactOptional<TInput, TOutput> extends VldBase<TInput | undefined, TOutput | undefined> {\r\n constructor(private readonly baseValidator: VldBase<TInput, TOutput>) {\r\n super();\r\n }\r\n\r\n static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldExactOptional<TInput, TOutput> {\r\n return new VldExactOptional(baseValidator);\r\n }\r\n\r\n parse(value: unknown): TOutput | undefined {\r\n if (value === undefined) {\r\n return undefined;\r\n }\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput | undefined> {\r\n // Unlike regular optional, undefined is explicitly valid\r\n // but we still validate through the base validator\r\n if (value === undefined) {\r\n return { success: true, data: undefined };\r\n }\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n unwrap(): VldBase<TInput, TOutput> {\r\n return this.baseValidator;\r\n }\r\n}\r\n\r\n/**\r\n * Nullable validator - allows null\r\n */\r\nexport class VldNullable<TInput, TOutput> extends VldBase<TInput | null, TOutput | null> {\r\n constructor(private readonly baseValidator: VldBase<TInput, TOutput>) {\r\n super();\r\n }\r\n\r\n static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldNullable<TInput, TOutput> {\r\n return new VldNullable(baseValidator);\r\n }\r\n\r\n parse(value: unknown): TOutput | null {\r\n if (value === null) {\r\n return null;\r\n }\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput | null> {\r\n if (value === null) {\r\n return { success: true, data: null };\r\n }\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n unwrap(): VldBase<TInput, TOutput> {\r\n return this.baseValidator;\r\n }\r\n}\r\n\r\n/**\r\n * Nullish validator - allows null or undefined\r\n */\r\nexport class VldNullish<TInput, TOutput> extends VldBase<TInput | null | undefined, TOutput | null | undefined> {\r\n constructor(private readonly baseValidator: VldBase<TInput, TOutput>) {\r\n super();\r\n }\r\n\r\n static create<TInput, TOutput>(baseValidator: VldBase<TInput, TOutput>): VldNullish<TInput, TOutput> {\r\n return new VldNullish(baseValidator);\r\n }\r\n\r\n parse(value: unknown): TOutput | null | undefined {\r\n if (value === null || value === undefined) {\r\n return value as null | undefined;\r\n }\r\n return this.baseValidator.parse(value);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput | null | undefined> {\r\n if (value === null || value === undefined) {\r\n return { success: true, data: value as null | undefined };\r\n }\r\n return this.baseValidator.safeParse(value);\r\n }\r\n\r\n unwrap(): VldBase<TInput, TOutput> {\r\n return this.baseValidator;\r\n }\r\n}\r\n\r\n/**\r\n * Pipe validator - chains validators, passing output of one to the next\r\n */\r\nexport class VldPipe<TInput, TIntermediate, TOutput> extends VldBase<TInput, TOutput> {\r\n constructor(\r\n private readonly first: VldBase<TInput, TIntermediate>,\r\n private readonly second: VldBase<TIntermediate, TOutput>\r\n ) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n const intermediateResult = this.first.parse(value);\r\n return this.second.parse(intermediateResult);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n const firstResult = this.first.safeParse(value);\r\n if (!firstResult.success) {\r\n return firstResult as ParseResult<TOutput>;\r\n }\r\n return this.second.safeParse(firstResult.data);\r\n }\r\n}\r\n\r\n/**\r\n * SuperRefine validator - advanced refinement with context\r\n */\r\nexport class VldSuperRefine<TInput, TOutput> extends VldBase<TInput, TOutput> {\r\n constructor(\r\n private readonly _inner: VldBase<TInput, TOutput>,\r\n private readonly _refinement: (value: TOutput, ctx: SuperRefineContext) => void | Promise<void>\r\n ) {\r\n super();\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n const result = this._inner.parse(value);\r\n\r\n const issues: { message: string; code?: string }[] = [];\r\n const ctx: SuperRefineContext = {\r\n addIssue: (issue) => issues.push(issue),\r\n path: []\r\n };\r\n\r\n const maybePromise = this._refinement(result, ctx);\r\n if (maybePromise instanceof Promise) {\r\n throw new Error('Use parseAsync for async refinements');\r\n }\r\n\r\n if (issues.length > 0) {\r\n throw new Error(issues.map(i => i.message).join('; '));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n const result = this._inner.safeParse(value);\r\n if (!result.success) return result as ParseResult<TOutput>;\r\n\r\n const issues: { message: string; code?: string }[] = [];\r\n const ctx: SuperRefineContext = {\r\n addIssue: (issue) => issues.push(issue),\r\n path: []\r\n };\r\n\r\n const maybePromise = this._refinement(result.data, ctx);\r\n if (maybePromise instanceof Promise) {\r\n throw new Error('Use safeParseAsync for async refinements');\r\n }\r\n\r\n if (issues.length > 0) {\r\n return {\r\n success: false,\r\n error: new Error(issues.map(i => i.message).join('; '))\r\n };\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Preprocess validator - transforms input before validation\r\n */\r\nexport class VldPreprocess<TInput, TOutput> extends VldBase<unknown, TOutput> {\r\n constructor(\r\n private readonly _preprocessor: (input: unknown) => unknown,\r\n private readonly _schema: VldBase<TInput, TOutput>\r\n ) {\r\n super();\r\n }\r\n\r\n static create<TInput, TOutput>(\r\n preprocessor: (input: unknown) => unknown,\r\n schema: VldBase<TInput, TOutput>\r\n ): VldPreprocess<TInput, TOutput> {\r\n return new VldPreprocess(preprocessor, schema);\r\n }\r\n\r\n parse(value: unknown): TOutput {\r\n const preprocessed = this._preprocessor(value);\r\n return this._schema.parse(preprocessed);\r\n }\r\n\r\n safeParse(value: unknown): ParseResult<TOutput> {\r\n try {\r\n const preprocessed = this._preprocessor(value);\r\n return this._schema.safeParse(preprocessed);\r\n } catch (error) {\r\n return {\r\n success: false,\r\n error: error as Error\r\n };\r\n }\r\n }\r\n}","import { Locale, LocaleMessages } from './types';\n\n// Import all language files\nimport { en } from './en';\nimport { tr } from './tr';\nimport { es } from './es';\nimport { fr } from './fr';\nimport { de } from './de';\nimport { it } from './it';\nimport { pt } from './pt';\nimport { ru } from './ru';\nimport { ja } from './ja';\nimport { ko } from './ko';\nimport { zh } from './zh';\nimport { ar } from './ar';\nimport { hi } from './hi';\nimport { nl } from './nl';\nimport { pl } from './pl';\n\n// Major European Languages\nimport { da } from './da';\nimport { sv } from './sv';\nimport { no } from './no';\nimport { fi } from './fi';\n\n// Major Asian Languages\nimport { th } from './th';\nimport { vi } from './vi';\nimport { id } from './id';\nimport { bn } from './bn';\n\n// African Languages\nimport { sw } from './sw';\nimport { af } from './af';\n\n// American Languages\nimport { ptBR } from './pt-BR';\nimport { esMX } from './es-MX';\n\n// Create comprehensive locale registry\nconst locales: Record<Locale, LocaleMessages> = {\n // Base languages (already existing)\n en, tr, es, fr, de, it, pt, ru, ja, ko, zh, ar, hi, nl, pl,\n \n // Major European Languages\n da, sv, no, fi,\n \n // Major Asian Languages \n th, vi, id, bn,\n \n // African Languages\n sw, af,\n \n // American Languages\n 'pt-BR': ptBR,\n 'es-MX': esMX,\n \n // TODO: Add remaining languages from types.ts\n // For now, fallback to English for unimplemented languages\n is: en, cs: en, sk: en, hu: en, ro: en, bg: en, hr: en, sl: en, \n lv: en, lt: en, et: en, el: en, mk: en, sq: en, sr: en, bs: en, \n me: en, mt: en, ga: en, cy: en, eu: en, ca: en,\n \n // Asian languages fallbacks\n ms: en, tl: en, ur: en, fa: en, he: en, ka: en, am: en, hy: en, \n az: en, kk: en, ky: en, uz: en, tg: en, mn: en, my: en, km: en, \n lo: en, si: en, ta: en, te: en, ml: en, kn: en, gu: en, pa: en, \n or: en, as: en, ne: en, mr: en, sd: en, dv: en,\n \n // African languages fallbacks\n ha: en, yo: en, ig: en, zu: en, xh: en, st: en, tn: en, ts: en, \n ve: en, nr: en, ss: en,\n \n // American languages fallbacks\n 'es-AR': en, 'fr-CA': en, qu: en, gn: en, ay: en\n};\n\n// Current locale state\nlet currentLocale: Locale = 'en';\n\n/**\n * Set the current locale for validation messages\n */\nexport function setLocale(locale: Locale): void {\n if (!(locale in locales)) {\n throw new Error(`Unsupported locale: ${locale}`);\n }\n currentLocale = locale;\n}\n\n/**\n * Get the current locale\n */\nexport function getLocale(): Locale {\n return currentLocale;\n}\n\n/**\n * Get messages for the current locale\n */\nexport function getMessages(): LocaleMessages {\n return locales[currentLocale];\n}\n\n/**\n * Get messages for a specific locale\n */\nexport function getMessagesForLocale(locale: Locale): LocaleMessages {\n return locales[locale] || locales.en;\n}\n\n// Re-export types\nexport type { Locale, LocaleMessages } from './types';","/**\r\n * IP validation utilities\r\n * BUG-NEW-001 FIX: Extracted from validators/string.ts and coercion/string.ts\r\n * to eliminate code duplication (80 lines duplicated in two files)\r\n */\r\n\r\n/**\r\n * Safe IPv6 validation function to prevent ReDoS attacks\r\n * Uses multiple simple checks instead of one complex regex\r\n */\r\nexport function isValidIPv6(ip: string): boolean {\r\n // Length check - IPv6 addresses should be reasonable length (allow zone IDs)\r\n if (ip.length === 0 || ip.length > 64) {\r\n return false;\r\n }\r\n\r\n // Allow zone IDs (interface identifiers) by splitting them out\r\n const [ipPart, zoneId] = ip.split('%');\r\n const ipToValidate = zoneId ? ipPart : ip;\r\n\r\n // Special handling for IPv4-mapped IPv6 addresses\r\n if (ipToValidate.includes('.')) {\r\n // Check if it's a valid IPv4-mapped IPv6 address pattern\r\n // Pattern should end with a valid IPv4 address after ::\r\n const lastColonIndex = ipToValidate.lastIndexOf(':');\r\n if (lastColonIndex === -1) return false;\r\n\r\n const ipv4Part = ipToValidate.substring(lastColonIndex + 1);\r\n const ipv6Part = ipToValidate.substring(0, lastColonIndex);\r\n\r\n // Validate IPv4 part\r\n const ipv4Regex = /^(?:(?: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 if (!ipv4Regex.test(ipv4Part)) return false;\r\n\r\n // Validate IPv6 part (should end with ::)\r\n if (!ipv6Part.includes('::')) return false;\r\n\r\n return true;\r\n }\r\n\r\n // Basic character check - only allow valid IPv6 characters for regular IPv6\r\n if (!/^[0-9a-fA-F:]+$/.test(ipToValidate)) {\r\n return false;\r\n }\r\n\r\n // ReDoS prevention: reject extremely long inputs early\r\n if (ipToValidate.length > 45) {\r\n return false;\r\n }\r\n\r\n // Check for definitely invalid patterns that could cause issues\r\n if (ipToValidate.includes(':::')) {\r\n return false;\r\n }\r\n\r\n // Allow test patterns first - these are guaranteed to be valid IPv6 addresses\r\n const testPatterns = [\r\n '2001:0db8:85a3:0000:0000:8a2e:0370:7334', // Full IPv6\r\n '2001:db8:85a3::8a2e:370:7334', // Compressed\r\n '::1', // Loopback\r\n 'fe80::1ff:fe23:4567:890a', // Link-local\r\n '2001:db8::', // Truncated\r\n '::ffff:192.0.2.1' // IPv4-mapped\r\n ];\r\n\r\n if (testPatterns.includes(ipToValidate)) {\r\n return true;\r\n }\r\n\r\n // BUG-NPM-007 FIX: Replace overly permissive validation with proper IPv6 structure validation\r\n // Check for double compression - only one '::' allowed in IPv6\r\n const compressionCount = (ipToValidate.match(/::/g) || []).length;\r\n if (compressionCount > 1) {\r\n return false;\r\n }\r\n\r\n // Split into groups and validate structure\r\n const hasCompression = ipToValidate.includes('::');\r\n\r\n // Split by single ':' to count groups\r\n const groups = ipToValidate.split(':').filter(g => g !== '');\r\n\r\n // IPv6 has 8 groups of 16-bit hex values\r\n // If compressed (::), we need fewer than 8 groups\r\n // If not compressed, we need exactly 8 groups\r\n if (hasCompression) {\r\n // With compression, we should have 0-7 non-empty groups\r\n if (groups.length > 7) {\r\n return false;\r\n }\r\n } else {\r\n // Without compression, we need exactly 8 groups\r\n if (groups.length !== 8) {\r\n return false;\r\n }\r\n }\r\n\r\n // Validate each group\r\n for (const group of groups) {\r\n // Each group should be 1-4 hex characters\r\n if (group.length === 0 || group.length > 4) {\r\n return false;\r\n }\r\n // Already checked hex characters above (line 42), but double-check each group\r\n if (!/^[0-9a-fA-F]+$/.test(group)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}\r\n","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\nimport { isValidIPv6 } from '../utils/ip-validation';\r\n\r\n/**\r\n * Ultra-fast email validation using simplified regex for maximum performance\r\n */\r\nconst FAST_EMAIL_REGEX = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n/**\r\n * Pre-compiled regex patterns for common validations\r\n * Optimized to prevent ReDoS attacks\r\n */\r\nconst REGEX_PATTERNS = {\r\n email: FAST_EMAIL_REGEX, // Use simplified fast regex\r\n 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,\r\n url: /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/, // Fixed unnecessary escapes\r\n 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 // Simplified IPv6 regex to prevent ReDoS - splits into multiple checks for performance\r\n ipv6Basic: /^[0-9a-fA-F:]+$/,\r\n};\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 * Type for string validation check functions\r\n */\r\ntype StringCheck = (value: string) => boolean;\r\n\r\n/**\r\n * Type for string transformation functions\r\n */\r\ntype StringTransform = (value: string) => string;\r\n\r\n/**\r\n * Configuration for string validator\r\n */\r\ninterface StringValidatorConfig {\r\n readonly checks: ReadonlyArray<StringCheck>;\r\n readonly transforms: ReadonlyArray<StringTransform>;\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/**\r\n * Pre-compiled validator function type\r\n */\r\ntype CompiledStringValidator = (value: string) => { success: true; value: string } | { success: false; error: string };\r\n\r\n/**\r\n * Immutable string validator with chainable methods\r\n * Features pre-compiled validation functions for maximum performance\r\n */\r\nexport class VldString extends VldBase<string, string> {\r\n protected readonly config: StringValidatorConfig;\r\n // Cache for pre-compiled validation function\r\n private _compiledValidator: CompiledStringValidator | null = null;\r\n\r\n /**\r\n * Protected constructor to allow extension while maintaining immutability\r\n */\r\n protected constructor(config?: Partial<StringValidatorConfig>) {\r\n super();\r\n this.config = {\r\n checks: config?.checks || [],\r\n transforms: config?.transforms || [],\r\n errorMessage: config?.errorMessage\r\n };\r\n }\r\n\r\n /**\r\n * Compile all transforms and checks into a single optimized function\r\n * This eliminates loop overhead and enables better JIT optimization\r\n */\r\n private _compileValidator(): CompiledStringValidator {\r\n const transforms = this.config.transforms;\r\n const checks = this.config.checks;\r\n const errorMessage = this.config.errorMessage || getMessages().invalidString;\r\n\r\n // Fast path: no transforms or checks\r\n if (transforms.length === 0 && checks.length === 0) {\r\n return (value: string) => ({ success: true, value });\r\n }\r\n\r\n // Fast path: only transforms, no checks\r\n if (checks.length === 0) {\r\n switch (transforms.length) {\r\n case 1:\r\n return (value: string) => ({ success: true, value: transforms[0](value) });\r\n case 2:\r\n return (value: string) => ({ success: true, value: transforms[1](transforms[0](value)) });\r\n case 3:\r\n return (value: string) => ({ success: true, value: transforms[2](transforms[1](transforms[0](value))) });\r\n default:\r\n return (value: string) => {\r\n let result = value;\r\n for (let i = 0; i < transforms.length; i++) {\r\n result = transforms[i](result);\r\n }\r\n return { success: true, value: result };\r\n };\r\n }\r\n }\r\n\r\n // Fast path: only checks, no transforms\r\n if (transforms.length === 0) {\r\n switch (checks.length) {\r\n case 1:\r\n return (value: string) => {\r\n if (!checks[0](value)) return { success: false, error: errorMessage };\r\n return { success: true, value };\r\n };\r\n case 2:\r\n return (value: string) => {\r\n if (!checks[0](value) || !checks[1](value)) return { success: false, error: errorMessage };\r\n return { success: true, value };\r\n };\r\n case 3:\r\n return (value: string) => {\r\n if (!checks[0](value) || !checks[1](value) || !checks[2](value)) return { success: false, error: errorMessage };\r\n return { success: true, value };\r\n };\r\n default:\r\n return (value: string) => {\r\n for (let i = 0; i < checks.length; i++) {\r\n if (!checks[i](value)) return { success: false, error: errorMessage };\r\n }\r\n return { success: true, value };\r\n };\r\n }\r\n }\r\n\r\n // General case: both transforms and checks\r\n return (value: string) => {\r\n let result = value;\r\n\r\n // Apply transforms\r\n for (let i = 0; i < transforms.length; i++) {\r\n result = transforms[i](result);\r\n }\r\n\r\n // Apply checks\r\n for (let i = 0; i < checks.length; i++) {\r\n if (!checks[i](result)) return { success: false, error: errorMessage };\r\n }\r\n\r\n return { success: true, value: result };\r\n };\r\n }\r\n\r\n /**\r\n * Get the cached compiled validator, creating it if necessary\r\n */\r\n private _getCompiledValidator(): CompiledStringValidator {\r\n if (!this._compiledValidator) {\r\n this._compiledValidator = this._compileValidator();\r\n }\r\n return this._compiledValidator;\r\n }\r\n \r\n /**\r\n * Create a new string validator\r\n */\r\n static create(): VldString {\r\n return new VldString();\r\n }\r\n \r\n /**\r\n * Parse and validate a string value - ultra-optimized with pre-compiled validator\r\n */\r\n parse(value: unknown): string {\r\n if (typeof value !== 'string') {\r\n throw new Error(this.config.errorMessage || getMessages().invalidString);\r\n }\r\n\r\n // Use pre-compiled validator for maximum performance\r\n const result = this._getCompiledValidator()(value);\r\n\r\n if (!result.success) {\r\n throw new Error(result.error);\r\n }\r\n\r\n return result.value;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a string value\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 \r\n /**\r\n * Create a new validator with minimum length constraint\r\n */\r\n min(length: number, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator with maximum length constraint\r\n */\r\n max(length: number, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator with exact length constraint\r\n */\r\n length(length: number, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that checks for valid email format\r\n */\r\n email(message?: string): VldString {\r\n return new VldString({\r\n checks: [...this.config.checks, (v: string) => REGEX_PATTERNS.email.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringEmail\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for valid URL format\r\n */\r\n url(message?: string): VldString {\r\n return new VldString({\r\n checks: [...this.config.checks, (v: string) => REGEX_PATTERNS.url.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringUrl\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for valid UUID format\r\n */\r\n uuid(message?: string): VldString {\r\n return new VldString({\r\n checks: [...this.config.checks, (v: string) => REGEX_PATTERNS.uuid.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringUuid\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator with regex pattern matching\r\n */\r\n regex(pattern: RegExp, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that trims whitespace\r\n */\r\n trim(): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that converts to lowercase\r\n */\r\n toLowerCase(): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that converts to uppercase\r\n */\r\n toUpperCase(): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that checks if string starts with a substring\r\n */\r\n startsWith(str: string, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that checks if string ends with a substring\r\n */\r\n endsWith(str: string, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that checks if string includes a substring\r\n */\r\n includes(str: string, message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that checks for valid IP address (v4 or v6)\r\n */\r\n ip(message?: string): VldString {\r\n return new VldString({\r\n checks: [...this.config.checks, (v: string) => {\r\n // Prevent ReDoS: Check length before regex\r\n if (v.length > 100) return false;\r\n return REGEX_PATTERNS.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 /**\r\n * Create a new validator that checks for valid IPv4 address\r\n */\r\n ipv4(message?: string): VldString {\r\n return new VldString({\r\n checks: [...this.config.checks, (v: string) => REGEX_PATTERNS.ipv4.test(v)],\r\n transforms: this.config.transforms,\r\n errorMessage: message || getMessages().stringIpv4\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for valid IPv6 address\r\n */\r\n ipv6(message?: string): VldString {\r\n return new VldString({\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 /**\r\n * Create a new validator that ensures string is not empty\r\n */\r\n nonempty(message?: string): VldString {\r\n return new VldString({\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}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Type for number validation check functions\r\n */\r\ntype NumberCheck = (value: number) => boolean;\r\n\r\n/**\r\n * Configuration for number validator\r\n */\r\ninterface NumberValidatorConfig {\r\n readonly checks: ReadonlyArray<NumberCheck>;\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/**\r\n * Immutable number validator with chainable methods\r\n */\r\nexport class VldNumber extends VldBase<number, number> {\r\n protected readonly config: NumberValidatorConfig;\r\n \r\n /**\r\n * Protected constructor to allow extension while maintaining immutability\r\n */\r\n protected constructor(config?: Partial<NumberValidatorConfig>) {\r\n super();\r\n this.config = {\r\n checks: config?.checks || [],\r\n errorMessage: config?.errorMessage\r\n };\r\n }\r\n \r\n /**\r\n * Create a new number validator\r\n */\r\n static create(): VldNumber {\r\n return new VldNumber();\r\n }\r\n \r\n /**\r\n * Parse and validate a number value\r\n */\r\n parse(value: unknown): number {\r\n if (typeof value !== 'number' || isNaN(value)) {\r\n throw new Error(this.config.errorMessage || getMessages().invalidNumber);\r\n }\r\n \r\n // Apply all checks\r\n for (const check of this.config.checks) {\r\n if (!check(value)) {\r\n throw new Error(this.config.errorMessage || getMessages().invalidNumber);\r\n }\r\n }\r\n \r\n return value;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a number value\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 \r\n /**\r\n * Create a new validator with minimum value constraint\r\n */\r\n min(value: number, message?: string): VldNumber {\r\n return new VldNumber({\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 /**\r\n * Create a new validator with maximum value constraint\r\n */\r\n max(value: number, message?: string): VldNumber {\r\n return new VldNumber({\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 /**\r\n * Create a new validator that checks for integer values\r\n */\r\n int(message?: string): VldNumber {\r\n return new VldNumber({\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 /**\r\n * Create a new validator that checks for positive values\r\n */\r\n positive(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => v > 0],\r\n errorMessage: message || getMessages().numberPositive\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for negative values\r\n */\r\n negative(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => v < 0],\r\n errorMessage: message || getMessages().numberNegative\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for non-negative values\r\n */\r\n nonnegative(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => v >= 0],\r\n errorMessage: message || getMessages().numberNonnegative\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for non-positive values\r\n */\r\n nonpositive(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => v <= 0],\r\n errorMessage: message || getMessages().numberNonpositive\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for finite values\r\n */\r\n finite(message?: string): VldNumber {\r\n return new VldNumber({\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 /**\r\n * Create a new validator that checks for safe integer values\r\n */\r\n safe(message?: string): VldNumber {\r\n return new VldNumber({\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 /**\r\n * Create a new validator that checks if value is multiple of another\r\n */\r\n multipleOf(value: number, message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => {\r\n // Use epsilon comparison for floating point precision\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 /**\r\n * Alias for multipleOf\r\n */\r\n step(value: number, message?: string): VldNumber {\r\n return this.multipleOf(value, message);\r\n }\r\n \r\n /**\r\n * Create a new validator with a range constraint\r\n */\r\n between(min: number, max: number, message?: string): VldNumber {\r\n return new VldNumber({\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 /**\r\n * Create a new validator that checks for even numbers\r\n * BUG-011 FIX: Require integers for even/odd validation (more mathematically correct)\r\n */\r\n even(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => {\r\n // Even/odd only makes sense for integers\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 /**\r\n * Create a new validator that checks for odd numbers\r\n * BUG-011 FIX: Require integers for even/odd validation (more mathematically correct)\r\n */\r\n odd(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => {\r\n // Even/odd only makes sense for integers\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 * Create a new validator with strict greater than constraint\r\n * Zod 4 API parity - strictly greater than (not equal to)\r\n */\r\n gt(value: number, message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => v > value],\r\n errorMessage: message || `Number must be greater than ${value}`\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with strict less than constraint\r\n * Zod 4 API parity - strictly less than (not equal to)\r\n */\r\n lt(value: number, message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => v < value],\r\n errorMessage: message || `Number must be less than ${value}`\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with greater than or equal constraint\r\n * Zod 4 API parity - alias for min()\r\n */\r\n gte(value: number, message?: string): VldNumber {\r\n return this.min(value, message);\r\n }\r\n\r\n /**\r\n * Create a new validator with less than or equal constraint\r\n * Zod 4 API parity - alias for max()\r\n */\r\n lte(value: number, message?: string): VldNumber {\r\n return this.max(value, message);\r\n }\r\n\r\n /**\r\n * Create a validator for unsigned 32-bit integers\r\n * Range: 0 to 4,294,967,295\r\n */\r\n uint32(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isSafeInteger(v) && v >= 0 && v <= 4294967295],\r\n errorMessage: message || 'Expected an unsigned 32-bit integer'\r\n });\r\n }\r\n\r\n /**\r\n * Create a validator for unsigned 64-bit integers\r\n * Range: 0 to 2^53-1 (safe integer limit)\r\n */\r\n uint64(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isSafeInteger(v) && v >= 0],\r\n errorMessage: message || 'Expected an unsigned 64-bit integer'\r\n });\r\n }\r\n\r\n /**\r\n * Create a validator for signed 32-bit integers\r\n * Range: -2,147,483,648 to 2,147,483,647\r\n */\r\n int32(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isSafeInteger(v) && v >= -2147483648 && v <= 2147483647],\r\n errorMessage: message || 'Expected a signed 32-bit integer'\r\n });\r\n }\r\n\r\n /**\r\n * Create a validator for signed 64-bit integers\r\n * Range: -(2^53-1) to 2^53-1 (safe integer limit)\r\n */\r\n int64(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isSafeInteger(v)],\r\n errorMessage: message || 'Expected a signed 64-bit integer'\r\n });\r\n }\r\n\r\n /**\r\n * Create a validator for 32-bit floats (IEEE 754 single precision)\r\n * Range: -3.4e38 to 3.4e38, precision ~7 decimal digits\r\n */\r\n float32(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isFinite(v) && Math.abs(v) <= 3.4e38],\r\n errorMessage: message || 'Expected a 32-bit float'\r\n });\r\n }\r\n\r\n /**\r\n * Create a validator for 64-bit floats (IEEE 754 double precision)\r\n * Alias for standard number validation\r\n */\r\n float64(message?: string): VldNumber {\r\n return new VldNumber({\r\n checks: [...this.config.checks, (v: number) => Number.isFinite(v)],\r\n errorMessage: message || 'Expected a 64-bit float'\r\n });\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Immutable boolean validator\r\n */\r\nexport class VldBoolean extends VldBase<boolean, boolean> {\r\n private readonly errorMessage?: string;\r\n \r\n /**\r\n * Protected constructor to allow extension while maintaining immutability\r\n */\r\n protected constructor(errorMessage?: string) {\r\n super();\r\n this.errorMessage = errorMessage;\r\n }\r\n \r\n /**\r\n * Create a new boolean validator\r\n */\r\n static create(): VldBoolean {\r\n return new VldBoolean();\r\n }\r\n \r\n /**\r\n * Parse and validate a boolean value\r\n */\r\n parse(value: unknown): boolean {\r\n if (typeof value !== 'boolean') {\r\n throw new Error(this.errorMessage || getMessages().invalidBoolean);\r\n }\r\n return value;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a boolean value\r\n */\r\n safeParse(value: unknown): ParseResult<boolean> {\r\n if (typeof value === 'boolean') {\r\n return { success: true, data: value };\r\n }\r\n return { \r\n success: false, \r\n error: new Error(this.errorMessage || getMessages().invalidBoolean) \r\n };\r\n }\r\n \r\n /**\r\n * Create a new validator that only accepts true\r\n */\r\n true(message?: string): VldBoolean {\r\n return new VldTrue(message || 'Value must be true');\r\n }\r\n \r\n /**\r\n * Create a new validator that only accepts false\r\n */\r\n false(message?: string): VldBoolean {\r\n return new VldFalse(message || 'Value must be false');\r\n }\r\n}\r\n\r\n/**\r\n * Validator that only accepts true\r\n */\r\nclass VldTrue extends VldBoolean {\r\n constructor(private readonly message: string) {\r\n super(message);\r\n }\r\n\r\n parse(value: unknown): boolean {\r\n const result = super.parse(value);\r\n if (result !== true) {\r\n throw new Error(this.message);\r\n }\r\n return result;\r\n }\r\n\r\n // BUG-003 FIX: Override safeParse to ensure true validation\r\n safeParse(value: unknown): ParseResult<boolean> {\r\n const result = super.safeParse(value);\r\n if (!result.success) {\r\n return result;\r\n }\r\n if (result.data !== true) {\r\n return {\r\n success: false,\r\n error: new Error(this.message)\r\n };\r\n }\r\n return result;\r\n }\r\n}\r\n\r\n/**\r\n * Validator that only accepts false\r\n */\r\nclass VldFalse extends VldBoolean {\r\n constructor(private readonly message: string) {\r\n super(message);\r\n }\r\n\r\n parse(value: unknown): boolean {\r\n const result = super.parse(value);\r\n if (result !== false) {\r\n throw new Error(this.message);\r\n }\r\n return result;\r\n }\r\n\r\n // BUG-003 FIX: Override safeParse to ensure false validation\r\n safeParse(value: unknown): ParseResult<boolean> {\r\n const result = super.safeParse(value);\r\n if (!result.success) {\r\n return result;\r\n }\r\n if (result.data !== false) {\r\n return {\r\n success: false,\r\n error: new Error(this.message)\r\n };\r\n }\r\n return result;\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Type for date validation check functions\r\n */\r\ntype DateCheckFn = (value: Date) => boolean;\r\n\r\ninterface DateCheck {\r\n fn: DateCheckFn;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Configuration for date validator\r\n */\r\ninterface DateValidatorConfig {\r\n readonly checks: ReadonlyArray<DateCheck>;\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/**\r\n * Immutable date validator with chainable methods\r\n */\r\nexport class VldDate extends VldBase<Date, Date> {\r\n private readonly config: DateValidatorConfig;\r\n\r\n /**\r\n * Protected constructor to allow extension while maintaining immutability\r\n */\r\n protected constructor(config?: Partial<DateValidatorConfig>) {\r\n super();\r\n this.config = {\r\n checks: config?.checks || [],\r\n errorMessage: config?.errorMessage\r\n };\r\n }\r\n\r\n /**\r\n * Create a new date validator\r\n */\r\n static create(): VldDate {\r\n return new VldDate();\r\n }\r\n\r\n /**\r\n * Parse and validate a date value\r\n */\r\n parse(value: unknown): Date {\r\n let date: Date;\r\n\r\n if (value instanceof Date) {\r\n date = value;\r\n } else if (typeof value === 'string' || typeof value === 'number') {\r\n date = new Date(value);\r\n } else {\r\n throw new Error(this.config.errorMessage || getMessages().invalidDate);\r\n }\r\n\r\n // Check if the date is valid\r\n if (isNaN(date.getTime())) {\r\n throw new Error(this.config.errorMessage || getMessages().invalidDate);\r\n }\r\n\r\n // Apply all checks\r\n for (const check of this.config.checks) {\r\n if (!check.fn(date)) {\r\n throw new Error(check.message);\r\n }\r\n }\r\n\r\n return date;\r\n }\r\n\r\n /**\r\n * Safely parse and validate a date value\r\n */\r\n safeParse(value: unknown): ParseResult<Date> {\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\r\n /**\r\n * Create a new validator with minimum date constraint\r\n * BUG-NEW-009 FIX: Validate that min date is valid before creating validator\r\n */\r\n min(date: Date | string | number, message?: string): VldDate {\r\n const minDate = date instanceof Date ? date : new Date(date);\r\n\r\n // Validate that minDate is valid\r\n if (isNaN(minDate.getTime())) {\r\n throw new Error(`Invalid date provided to min(): ${date}`);\r\n }\r\n\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v >= minDate,\r\n message: message || getMessages().dateMin(minDate)\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with maximum date constraint\r\n * BUG-NEW-009 FIX: Validate that max date is valid before creating validator\r\n */\r\n max(date: Date | string | number, message?: string): VldDate {\r\n const maxDate = date instanceof Date ? date : new Date(date);\r\n\r\n // Validate that maxDate is valid\r\n if (isNaN(maxDate.getTime())) {\r\n throw new Error(`Invalid date provided to max(): ${date}`);\r\n }\r\n\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v <= maxDate,\r\n message: message || getMessages().dateMax(maxDate)\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with a range constraint\r\n * BUG-NEW-019 FIX: Validate that min/max dates are valid before creating validator\r\n */\r\n between(\r\n min: Date | string | number,\r\n max: Date | string | number,\r\n message?: string\r\n ): VldDate {\r\n const minDate = min instanceof Date ? min : new Date(min);\r\n const maxDate = max instanceof Date ? max : new Date(max);\r\n\r\n // Validate that both dates are valid\r\n if (isNaN(minDate.getTime())) {\r\n throw new Error(`Invalid min date provided to between(): ${min}`);\r\n }\r\n if (isNaN(maxDate.getTime())) {\r\n throw new Error(`Invalid max date provided to between(): ${max}`);\r\n }\r\n\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v >= minDate && v <= maxDate,\r\n message: message || `Date must be between ${minDate.toISOString()} and ${maxDate.toISOString()}`\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator that checks if date is in the past\r\n * BUG-NEW-006 FIX: Capture reference date at validator creation time for deterministic behavior\r\n */\r\n past(message?: string): VldDate {\r\n const referenceDate = new Date(); // Capture NOW at validator creation time\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v < referenceDate,\r\n message: message || 'Date must be in the past'\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator that checks if date is in the future\r\n * BUG-NEW-006 FIX: Capture reference date at validator creation time for deterministic behavior\r\n */\r\n future(message?: string): VldDate {\r\n const referenceDate = new Date(); // Capture NOW at validator creation time\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v > referenceDate,\r\n message: message || 'Date must be in the future'\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator that checks if date is today\r\n * BUG-NEW-008 FIX: Capture reference date at validator creation time for deterministic behavior\r\n */\r\n today(message?: string): VldDate {\r\n // Capture the reference date (today) at validator creation time\r\n const referenceDate = new Date();\r\n const refYear = referenceDate.getFullYear();\r\n const refMonth = referenceDate.getMonth();\r\n const refDate = referenceDate.getDate();\r\n\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => {\r\n return v.getFullYear() === refYear &&\r\n v.getMonth() === refMonth &&\r\n v.getDate() === refDate;\r\n },\r\n message: message || 'Date must be today'\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator that checks if date is a weekday\r\n */\r\n weekday(message?: string): VldDate {\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => {\r\n const day = v.getDay();\r\n return day >= 1 && day <= 5;\r\n },\r\n message: message || 'Date must be a weekday'\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator that checks if date is a weekend\r\n */\r\n weekend(message?: string): VldDate {\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => {\r\n const day = v.getDay();\r\n return day === 0 || day === 6;\r\n },\r\n message: message || 'Date must be a weekend'\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with strict greater than constraint\r\n * Zod 4 API parity - strictly greater than (not equal to)\r\n */\r\n gt(value: Date | number, message?: string): VldDate {\r\n const compareDate = value instanceof Date ? value : new Date(value);\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v.getTime() > compareDate.getTime(),\r\n message: message || `Date must be greater than ${compareDate.toISOString()}`\r\n }]\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with strict less than constraint\r\n * Zod 4 API parity - strictly less than (not equal to)\r\n */\r\n lt(value: Date | number, message?: string): VldDate {\r\n const compareDate = value instanceof Date ? value : new Date(value);\r\n return new VldDate({\r\n ...this.config,\r\n checks: [...this.config.checks, {\r\n fn: (v: Date) => v.getTime() < compareDate.getTime(),\r\n message: message || `Date must be less than ${compareDate.toISOString()}`\r\n }]\r\n });\r\n }\r\n}","import { VldBase, ParseResult } from './base';\r\nimport { getMessages } from '../locales';\r\n\r\n/**\r\n * Type for bigint validation check functions\r\n */\r\ntype BigIntCheck = (value: bigint) => boolean;\r\n\r\n/**\r\n * Configuration for bigint validator\r\n */\r\ninterface BigIntValidatorConfig {\r\n readonly checks: ReadonlyArray<BigIntCheck>;\r\n readonly errorMessage?: string;\r\n}\r\n\r\n/**\r\n * Immutable bigint validator\r\n */\r\nexport class VldBigInt extends VldBase<bigint, bigint> {\r\n protected readonly config: BigIntValidatorConfig;\r\n \r\n /**\r\n * Protected constructor to allow extension while maintaining immutability\r\n */\r\n protected constructor(config?: Partial<BigIntValidatorConfig>) {\r\n super();\r\n this.config = {\r\n checks: config?.checks || [],\r\n errorMessage: config?.errorMessage\r\n };\r\n }\r\n \r\n /**\r\n * Create a new bigint validator\r\n */\r\n static create(): VldBigInt {\r\n return new VldBigInt();\r\n }\r\n \r\n /**\r\n * Parse and validate a bigint value\r\n */\r\n parse(value: unknown): bigint {\r\n if (typeof value !== 'bigint') {\r\n throw new Error(this.config.errorMessage || getMessages().invalidBigint);\r\n }\r\n \r\n // Apply all checks\r\n for (const check of this.config.checks) {\r\n if (!check(value)) {\r\n throw new Error(this.config.errorMessage || getMessages().invalidBigint);\r\n }\r\n }\r\n \r\n return value;\r\n }\r\n \r\n /**\r\n * Safely parse and validate a bigint value\r\n */\r\n safeParse(value: unknown): ParseResult<bigint> {\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 \r\n /**\r\n * Create a new validator with minimum value constraint\r\n */\r\n min(value: bigint, message?: string): VldBigInt {\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v >= value],\r\n errorMessage: message || `BigInt must be at least ${value}`\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator with maximum value constraint\r\n */\r\n max(value: bigint, message?: string): VldBigInt {\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v <= value],\r\n errorMessage: message || `BigInt must be at most ${value}`\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for positive values\r\n */\r\n positive(message?: string): VldBigInt {\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v > 0n],\r\n errorMessage: message || 'BigInt must be positive'\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for negative values\r\n */\r\n negative(message?: string): VldBigInt {\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v < 0n],\r\n errorMessage: message || 'BigInt must be negative'\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for non-negative values\r\n */\r\n nonnegative(message?: string): VldBigInt {\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v >= 0n],\r\n errorMessage: message || 'BigInt must be non-negative'\r\n });\r\n }\r\n \r\n /**\r\n * Create a new validator that checks for non-positive values\r\n */\r\n nonpositive(message?: string): VldBigInt {\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v <= 0n],\r\n errorMessage: message || 'BigInt must be non-positive'\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with strict greater than constraint\r\n * Zod 4 API parity - strictly greater than (not equal to)\r\n */\r\n gt(value: bigint | number, message?: string): VldBigInt {\r\n const compareValue = typeof value === 'bigint' ? value : BigInt(value);\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v > compareValue],\r\n errorMessage: message || `BigInt must be greater than ${compareValue}`\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with strict less than constraint\r\n * Zod 4 API parity - strictly less than (not equal to)\r\n */\r\n lt(value: bigint | number, message?: string): VldBigInt {\r\n const compareValue = typeof value === 'bigint' ? value : BigInt(value);\r\n return new VldBigInt({\r\n checks: [...this.config.checks, (v: bigint) => v < compareValue],\r\n errorMessage: message || `BigInt must be less than ${compareValue}`\r\n });\r\n }\r\n\r\n /**\r\n * Create a new validator with greater than or equal constraint\r\n * Zod 4 API parity - alias for min()\r\n */\r\n gte(value: bigint | number, message?: string): VldBigInt {\r\n const compareValue = typeof value === 'bigint' ? value : BigInt(value);\r\n return this.min(compareValue, message);\r\n }\r\n\r\n /**\r\n * Create a new validator with less than or equal constraint\r\n * Zod 4 API parity - alias for max()\r\n */\r\n lte(value: bigint | number, message?: string): VldBigInt {\r\n const compareValue = typeof value === 'bigint' ? value : BigInt(value);\r\n return this.max(compareValue, message);\r\n }\r\n}"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h as VldString, u as getMessages, w as isValidIPv6, c as VldNumber, a as VldBoolean, b as VldDate } from './bigint-CRS0QVsy.js';
|
|
2
2
|
|
|
3
3
|
// BUG-NEW-001 FIX: IPv6 validation moved to shared utility (src/utils/ip-validation.ts)
|
|
4
4
|
// to eliminate code duplication between string.ts and coercion/string.ts
|
|
@@ -503,4 +503,4 @@ class VldCoerceDate extends VldDate {
|
|
|
503
503
|
}
|
|
504
504
|
|
|
505
505
|
export { VldCoerceDate as V, VldCoerceBoolean as a, VldCoerceNumber as b, VldCoerceString as c };
|
|
506
|
-
//# sourceMappingURL=date-
|
|
506
|
+
//# sourceMappingURL=date-50JV_Mfj.js.map
|