@oxog/vld 2.1.0 → 2.2.7
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 +113 -0
- package/README.md +413 -1235
- package/dist/chunks/errors-core-CerMg2rq.js +1 -0
- package/dist/chunks/index-CkbfQQ4n.js +1 -0
- package/dist/chunks/index-yjpbvFgw.js +1 -0
- package/dist/chunks/ip-validation-g5LWgy9t.js +1 -0
- package/dist/chunks/security-Dy24T8N7.js +1 -0
- package/dist/cjs/chunks/errors-core-DrydF46s.cjs +1 -0
- package/dist/cjs/chunks/index-BEV9nG0N.cjs +1 -0
- package/dist/cjs/chunks/index-ZjHAxYdA.cjs +1 -0
- package/dist/cjs/chunks/ip-validation-BZqPamPC.cjs +1 -0
- package/dist/cjs/chunks/security-aXZVI7qW.cjs +1 -0
- package/dist/cjs/cli/bin.cjs +1 -505
- package/dist/cjs/cli/index.cjs +1 -209
- package/dist/cjs/codecs/index.cjs +1 -45
- package/dist/cjs/coercion/index.cjs +1 -588
- package/dist/cjs/compat/emitter.cjs +1 -184
- package/dist/cjs/compat/result.cjs +1 -189
- package/dist/cjs/errors.cjs +1 -180
- package/dist/cjs/index.cjs +1 -1894
- package/dist/cjs/kernel.cjs +1 -415
- package/dist/cjs/locales/af.cjs +1 -108
- package/dist/cjs/locales/ar.cjs +1 -108
- package/dist/cjs/locales/bn.cjs +1 -108
- package/dist/cjs/locales/da.cjs +1 -108
- package/dist/cjs/locales/de.cjs +1 -108
- package/dist/cjs/locales/en.cjs +1 -108
- package/dist/cjs/locales/es-MX.cjs +1 -107
- package/dist/cjs/locales/es.cjs +1 -96
- package/dist/cjs/locales/fi.cjs +1 -108
- package/dist/cjs/locales/fr.cjs +1 -96
- package/dist/cjs/locales/hi.cjs +1 -108
- package/dist/cjs/locales/id.cjs +1 -108
- package/dist/cjs/locales/index.cjs +1 -43
- package/dist/cjs/locales/it.cjs +1 -108
- package/dist/cjs/locales/ja.cjs +1 -108
- package/dist/cjs/locales/ko.cjs +1 -108
- package/dist/cjs/locales/lazy.cjs +1 -188
- package/dist/cjs/locales/nl.cjs +1 -108
- package/dist/cjs/locales/no.cjs +1 -108
- package/dist/cjs/locales/pl.cjs +1 -108
- package/dist/cjs/locales/pt-BR.cjs +1 -108
- package/dist/cjs/locales/pt.cjs +1 -108
- package/dist/cjs/locales/ru.cjs +1 -108
- package/dist/cjs/locales/runtime.cjs +1 -51
- package/dist/cjs/locales/sv.cjs +1 -108
- package/dist/cjs/locales/sw.cjs +1 -108
- package/dist/cjs/locales/th.cjs +1 -108
- package/dist/cjs/locales/tr.cjs +1 -108
- package/dist/cjs/locales/vi.cjs +1 -108
- package/dist/cjs/locales/zh.cjs +1 -108
- package/dist/cjs/mini.cjs +1 -242
- package/dist/cjs/pigment.cjs +1 -207
- package/dist/cjs/plugins/index.cjs +1 -12
- package/dist/cjs/registry.cjs +1 -37
- package/dist/cjs/v3/index.cjs +1 -425
- package/dist/cjs/v4/core/index.cjs +1 -894
- package/dist/cjs/v4/index.cjs +1 -425
- package/dist/cjs/v4/locales/index.cjs +1 -130
- package/dist/cjs/v4/mini/index.cjs +1 -509
- package/dist/cjs/v4-mini/index.cjs +1 -532
- package/dist/cjs/validators/any.cjs +1 -40
- package/dist/cjs/validators/array.cjs +1 -283
- package/dist/cjs/validators/base.cjs +1 -887
- package/dist/cjs/validators/base64.cjs +1 -73
- package/dist/cjs/validators/bigint.cjs +1 -232
- package/dist/cjs/validators/boolean.cjs +1 -146
- package/dist/cjs/validators/codec.cjs +1 -205
- package/dist/cjs/validators/custom.cjs +1 -71
- package/dist/cjs/validators/date.cjs +1 -278
- package/dist/cjs/validators/discriminated-union.cjs +1 -130
- package/dist/cjs/validators/enum.cjs +1 -154
- package/dist/cjs/validators/file.cjs +1 -130
- package/dist/cjs/validators/function.cjs +1 -63
- package/dist/cjs/validators/hex.cjs +1 -70
- package/dist/cjs/validators/index.cjs +1 -123
- package/dist/cjs/validators/intersection.cjs +1 -120
- package/dist/cjs/validators/json.cjs +1 -70
- package/dist/cjs/validators/lazy.cjs +1 -53
- package/dist/cjs/validators/literal.cjs +1 -64
- package/dist/cjs/validators/map.cjs +1 -218
- package/dist/cjs/validators/nan.cjs +1 -41
- package/dist/cjs/validators/never.cjs +1 -36
- package/dist/cjs/validators/null.cjs +1 -43
- package/dist/cjs/validators/number.cjs +1 -427
- package/dist/cjs/validators/object.cjs +1 -868
- package/dist/cjs/validators/promise.cjs +1 -115
- package/dist/cjs/validators/record.cjs +1 -262
- package/dist/cjs/validators/set.cjs +1 -203
- package/dist/cjs/validators/string-bool.cjs +1 -124
- package/dist/cjs/validators/string-formats.cjs +1 -168
- package/dist/cjs/validators/string.cjs +1 -12
- package/dist/cjs/validators/symbol.cjs +1 -62
- package/dist/cjs/validators/template-literal.cjs +1 -108
- package/dist/cjs/validators/tuple.cjs +1 -187
- package/dist/cjs/validators/uint8array.cjs +1 -106
- package/dist/cjs/validators/undefined.cjs +1 -43
- package/dist/cjs/validators/union.cjs +1 -191
- package/dist/cjs/validators/unknown.cjs +1 -40
- package/dist/cjs/validators/void.cjs +1 -48
- package/dist/cjs/validators/xor.cjs +1 -69
- package/dist/cli/bin.js +1 -406
- package/dist/cli/index.js +1 -205
- package/dist/codecs/index.js +1 -11
- package/dist/coercion/index.js +1 -579
- package/dist/compat/emitter.js +1 -180
- package/dist/compat/result.js +1 -170
- package/dist/errors-core.d.ts +32 -2
- package/dist/errors.js +1 -171
- package/dist/index.d.ts +315 -361
- package/dist/index.js +1 -1534
- package/dist/kernel.js +1 -409
- package/dist/locales/af.js +1 -106
- package/dist/locales/ar.js +1 -106
- package/dist/locales/bn.js +1 -106
- package/dist/locales/da.js +1 -106
- package/dist/locales/de.js +1 -106
- package/dist/locales/en.js +1 -106
- package/dist/locales/es-MX.js +1 -105
- package/dist/locales/es.js +1 -94
- package/dist/locales/fi.js +1 -106
- package/dist/locales/fr.js +1 -94
- package/dist/locales/hi.js +1 -106
- package/dist/locales/id.js +1 -106
- package/dist/locales/index.js +1 -29
- package/dist/locales/it.js +1 -106
- package/dist/locales/ja.js +1 -106
- package/dist/locales/ko.js +1 -106
- package/dist/locales/lazy.js +1 -177
- package/dist/locales/nl.js +1 -106
- package/dist/locales/no.js +1 -106
- package/dist/locales/pl.js +1 -106
- package/dist/locales/pt-BR.js +1 -106
- package/dist/locales/pt.js +1 -106
- package/dist/locales/ru.js +1 -106
- package/dist/locales/runtime.js +1 -41
- package/dist/locales/sv.js +1 -106
- package/dist/locales/sw.js +1 -106
- package/dist/locales/th.js +1 -106
- package/dist/locales/tr.js +1 -106
- package/dist/locales/vi.js +1 -106
- package/dist/locales/zh.js +1 -106
- package/dist/mini.d.ts +3 -3
- package/dist/mini.js +1 -156
- package/dist/pigment.js +1 -180
- package/dist/plugins/index.js +1 -1
- package/dist/registry.js +1 -34
- package/dist/utils/json-schema.d.ts +10 -1
- package/dist/v3/index.js +1 -46
- package/dist/v4/core/index.d.ts +28 -16
- package/dist/v4/core/index.js +1 -277
- package/dist/v4/index.js +1 -50
- package/dist/v4/locales/index.d.ts +4 -0
- package/dist/v4/locales/index.js +1 -77
- package/dist/v4/mini/index.js +1 -47
- package/dist/v4-mini/index.d.ts +1 -1
- package/dist/v4-mini/index.js +1 -75
- package/dist/validators/any.js +1 -37
- package/dist/validators/array.d.ts +7 -0
- package/dist/validators/array.js +1 -279
- package/dist/validators/base.d.ts +210 -17
- package/dist/validators/base.js +1 -868
- package/dist/validators/base64.js +1 -68
- package/dist/validators/bigint.d.ts +7 -0
- package/dist/validators/bigint.js +1 -228
- package/dist/validators/boolean.js +1 -142
- package/dist/validators/codec.js +1 -200
- package/dist/validators/custom.d.ts +20 -10
- package/dist/validators/custom.js +1 -67
- package/dist/validators/date.d.ts +2 -0
- package/dist/validators/date.js +1 -274
- package/dist/validators/discriminated-union.d.ts +4 -2
- package/dist/validators/discriminated-union.js +1 -123
- package/dist/validators/enum.d.ts +8 -2
- package/dist/validators/enum.js +1 -150
- package/dist/validators/file.js +1 -125
- package/dist/validators/function.js +1 -58
- package/dist/validators/hex.js +1 -65
- package/dist/validators/index.d.ts +1 -1
- package/dist/validators/index.js +1 -35
- package/dist/validators/intersection.js +1 -116
- package/dist/validators/json.js +1 -66
- package/dist/validators/lazy.js +1 -50
- package/dist/validators/literal.d.ts +8 -3
- package/dist/validators/literal.js +1 -60
- package/dist/validators/map.d.ts +7 -0
- package/dist/validators/map.js +1 -214
- package/dist/validators/nan.js +1 -38
- package/dist/validators/never.js +1 -32
- package/dist/validators/null.js +1 -40
- package/dist/validators/number.d.ts +25 -1
- package/dist/validators/number.js +1 -423
- package/dist/validators/object.d.ts +18 -2
- package/dist/validators/object.js +1 -864
- package/dist/validators/promise.d.ts +6 -7
- package/dist/validators/promise.js +1 -111
- package/dist/validators/record.d.ts +13 -8
- package/dist/validators/record.js +1 -258
- package/dist/validators/set.d.ts +5 -0
- package/dist/validators/set.js +1 -199
- package/dist/validators/string-bool.js +1 -120
- package/dist/validators/string-formats.d.ts +58 -62
- package/dist/validators/string-formats.js +1 -135
- package/dist/validators/string.d.ts +49 -10
- package/dist/validators/string.js +1 -4
- package/dist/validators/symbol.js +1 -58
- package/dist/validators/template-literal.js +1 -103
- package/dist/validators/tuple.d.ts +17 -13
- package/dist/validators/tuple.js +1 -183
- package/dist/validators/uint8array.js +1 -101
- package/dist/validators/undefined.js +1 -40
- package/dist/validators/union.d.ts +1 -0
- package/dist/validators/union.js +1 -187
- package/dist/validators/unknown.js +1 -37
- package/dist/validators/void.js +1 -44
- package/dist/validators/xor.d.ts +2 -2
- package/dist/validators/xor.js +1 -66
- package/package.json +240 -238
- package/dist/chunks/errors-core-BeiFUtZM.js +0 -81
- package/dist/chunks/index-0R2ntSud.js +0 -508
- package/dist/chunks/index-BvH403Yy.js +0 -88
- package/dist/chunks/security-B0Pd_vSY.js +0 -35
- package/dist/chunks/string-BJRQod3t.js +0 -530
- package/dist/cjs/chunks/errors-core-DWxLFs2f.cjs +0 -83
- package/dist/cjs/chunks/index-BkI37108.cjs +0 -538
- package/dist/cjs/chunks/index-Cc3bjUMX.cjs +0 -91
- package/dist/cjs/chunks/security-Dc3Jh13T.cjs +0 -37
- package/dist/cjs/chunks/string-BKZrc4hs.cjs +0 -533
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,119 @@ 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
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [2.2.6] - 2026-08-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Added complete 100% Zod 4 API and property parity across all schemas, instance methods, and root/namespace exports.
|
|
15
|
+
- Added `namespace z` and top-level `ZodSchema`, `ZodType`, `ZodTypeAny`, `ZodTypeDef`, `ZodIssue` type exports for 100% drop-in replacement with `z.infer<typeof S>`, `z.input<typeof S>`, and `z.output<typeof S>`.
|
|
16
|
+
- Added schema introspection getters: `type`, `_def`, `def`, `_zod` on all validators (`VldBase`).
|
|
17
|
+
- Added schema-specific getters: `minLength`/`maxLength` (`VldString`), `minValue`/`maxValue`/`isInt`/`isFinite`/`format` (`VldNumber`), `minDate`/`maxDate` (`VldDate`), `minValue`/`maxValue`/`format` (`VldBigInt`), `options`/`enum` (`VldEnum`), `value` (`VldLiteral`), `options`/`discriminator` (`VldUnion`/`VldDiscriminatedUnion`), `keyType`/`valueType` (`VldRecord`/`VldMap`).
|
|
18
|
+
- Added `min`, `max`, `size`, `nonempty` method chaining on `VldMap` and `VldSet`.
|
|
19
|
+
- Added zero-argument `z.custom()`, predicate `z.custom((v) => ...)`, and options `z.custom({ parse: ... })` overloads.
|
|
20
|
+
- Added `.errors` alias, `.isEmpty`, `.addIssue()`, `.addIssues()`, `.format()`, and `.flatten()` directly on `VldError` / `ZodError` instances.
|
|
21
|
+
- Added `{ message?: string, path?: (string | number)[], params?: object }` config overload and custom message function `(val) => { message, path }` support to `.refine()` and `.check()`.
|
|
22
|
+
- Added `{ code, path, message, fatal }` support to `ctx.addIssue()` in `.superRefine()` with path preservation.
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Fixed `safeParse` error shape across all validators and refinements to always return a `VldError` instance exposing `.issues` (`result.error.issues.map(...)`).
|
|
27
|
+
- Fixed `VldPromise` to extend `VldBase` so all standard base methods (`refine`, `transform`, `optional`, `nullable`, `meta`, `describe`, etc.) are supported on promises while preserving asynchronous parsing semantics.
|
|
28
|
+
|
|
29
|
+
## [2.2.5] - 2026-08-17
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- Added modern documentation website and live playground deployed at [vld.oxog.dev](https://vld.oxog.dev).
|
|
34
|
+
- Added in-browser live VLD execution engine in the playground for real-time schema validation, issue inspection, and execution timing.
|
|
35
|
+
- Added GitHub Pages SPA routing decoder and `404.html` fallback for direct subpath navigation and page refresh.
|
|
36
|
+
- Added cross-platform documentation synchronization script (`scripts/sync-docs.js`).
|
|
37
|
+
- Added repository policy and contribution scaffolding: `SECURITY.md`, `CODE_OF_CONDUCT.md`, and GitHub issue templates for bug reports and feature requests.
|
|
38
|
+
- Added `.nvmrc` (Node 24) and `.npmrc` (lockfile-exact installs, `ignore-scripts=true`) so local installs match the CI matrix.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Updated website pages (Home, Docs, API Reference, Benchmarks, Examples) to reflect latest `v2.2.5` APIs and release-gate benchmarks.
|
|
43
|
+
- Rewrote `.gitignore` into labelled sections and extended it to cover build metadata (`*.tsbuildinfo`, `.rollup.cache/`), packaging artifacts (`*.tgz`), test and gate scratch output (`test-results/`, `junit.xml`, `.nyc_output/`), tool caches (`.eslintcache`, `.cache/`), OS junk (`Thumbs.db`, `desktop.ini`), and local agent state. `.wrongstack/project.json` stays tracked while the rest of that directory stays ignored.
|
|
44
|
+
|
|
45
|
+
### Removed
|
|
46
|
+
|
|
47
|
+
- Removed `.npmignore`. The `files` field in `package.json` already scopes the published tarball, and `npm pack --dry-run` produces the same 299-file, 246.1 kB artifact with the file gone, so it was inert configuration carrying a broken `\!dist/*.d.ts` negation that would have stripped type declarations if it had ever taken effect.
|
|
48
|
+
- Removed `fix-locale.js`, a one-off locale repair script from the v1.x era that depended on a `glob` package the project no longer installs.
|
|
49
|
+
|
|
50
|
+
## [2.2.1] - 2026-08-17
|
|
51
|
+
|
|
52
|
+
### Added
|
|
53
|
+
|
|
54
|
+
- Added `creditCard()` string format (regex plus Luhn checksum) with `ZodCreditCard`, `ZodMiniCreditCard`, and `$ZodCreditCard` aliases, and localized messages across the locale set.
|
|
55
|
+
- Added `deepPartial()`, `input()`, and `output()` root helpers backed by a children-first schema walker that mirrors Zod's `visit.js` ordering. Wrappers rebuild around the walked inner schema and cycles stay safe through `VldLazy` deferral.
|
|
56
|
+
- Added `v4/core` parity shims: `_creditCard`, `isValidCreditCard`, `standardProps`, `handleUnrepresentable`, `$ZodCyclicError`, `attachMemoizer`, and `isBackEdge`.
|
|
57
|
+
- Added `tests/canary-parity.test.ts` covering credit card validation, `deepPartial` across objects, arrays, records, maps, sets, tuples, unions, discriminated unions, intersections, pipes, lazy cycles, and wrappers, plus `input`/`output` pipe replacement and the new core utilities.
|
|
58
|
+
- Added `.github/workflows/ci.yml`: lint, typecheck, the full test suite, build, and every verify gate on a Node 20/22/24 matrix, with benchmark guards on a single lane and a Windows lane for the path-sensitive gates.
|
|
59
|
+
- Added `.github/workflows/release.yml`: publish on a `v*.*.*` tag push with OIDC provenance through the existing `prepublishOnly`/`release:check` hooks, tag/version and changelog guards, changelog-extracted GitHub Release notes, and a dry-run lane.
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- Release builds are now minified by default through terser (opt out with `VLD_MINIFY=0`). Mangling preserves `/^Vld/` class names because `json-schema.ts` dispatches roughly 41 conversions on `schema.constructor.name` with no fallback, which silently broke `toJSONSchema()` in minified artifacts while the unminified Jest suite stayed green.
|
|
64
|
+
- The Zod canary parity lane is now non-blocking (`continue-on-error: true`). The stable `latest` lane remains blocking; canary stays an early-warning signal.
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
|
|
68
|
+
- Fixed `handleUnrepresentable` to shallow-clone the consumer-supplied fragment before merging it into the JSON Schema output, so a later mutation of the returned object can no longer corrupt emitted JSON.
|
|
69
|
+
- Fixed `verify-bundle` probe imports to use relative forward-slash specifiers. Absolute Windows paths embedded backslashes that ESM consumed as escape sequences, and `file://` URLs made Rollup externalize the probe, turning the check into a vacuous pass.
|
|
70
|
+
- Fixed the drop-in verification gap for minified output: `verify-drop-in` now asserts name-dispatched composites against the built CJS bundle (union emits `anyOf`, optional unwraps, nullable emits a type array).
|
|
71
|
+
- Fixed a `VldCoerceDate` array-coercion test that depended on the local timezone.
|
|
72
|
+
- Synced the `package-lock.json` root version with `package.json`. The version bump left the lockfile at 2.2.0, which failed the `verify:package` gate and therefore blocked `release:check`.
|
|
73
|
+
|
|
74
|
+
### Security
|
|
75
|
+
|
|
76
|
+
- Resolved high-severity advisories in the development dependency tree by pinning `brace-expansion` 2.1.4 and `js-yaml` 4.3.1 through `overrides`. Runtime dependencies remain at zero.
|
|
77
|
+
|
|
78
|
+
### Verified
|
|
79
|
+
|
|
80
|
+
- 88 test suites and 2502 tests passing with 100% statement, branch, function, and line coverage.
|
|
81
|
+
- Runtime performance guard green against Zod 4.4.3: 8/8 guarded cases pass with a 7.16x average ratio (floors are 1.2x per case and 3x average).
|
|
82
|
+
- Startup guard green: import 0.95x, total 1.03x, warm parse 2.56x versus Zod (floors are 0.85x, 0.9x, and 1.25x).
|
|
83
|
+
- `verify:package` green: 299 files, ~243 KiB tarball and ~1.1 MiB unpacked, inside the configured budgets.
|
|
84
|
+
- `verify:ascii` and `verify:docs` green: 221 files scanned, 7 package specifiers and 56 named README imports resolved against the built package.
|
|
85
|
+
|
|
86
|
+
## [2.2.0] - 2026-07-29
|
|
87
|
+
|
|
88
|
+
### Added
|
|
89
|
+
|
|
90
|
+
- Added Zod 4-compatible structured error issues across all primitive and collection validators.
|
|
91
|
+
- Type mismatches now produce `invalid_type` issues with `expected` and `received` fields using Zod's `"Invalid input: expected X, received Y"` message format.
|
|
92
|
+
- Constraint failures produce `too_small` / `too_big` issues with `minimum`, `maximum`, `origin`, and `inclusive` fields.
|
|
93
|
+
- String format failures produce `invalid_format` issues with `format`, `origin`, and `pattern` fields.
|
|
94
|
+
- Enum and literal failures produce `invalid_value` issues with a `values` array.
|
|
95
|
+
- Added `getTypeName()` and `createInvalidTypeIssue()` helpers to `src/errors-core.ts` for consistent type naming across all validators.
|
|
96
|
+
- Added `origin`, `format`, `values`, and `pattern` fields to the `VldIssue` interface and its JSON serialization.
|
|
97
|
+
- Added new error codes: `invalid_format`, `invalid_value`, and `not_multiple_of`.
|
|
98
|
+
- Added `tests/validators/zod4-error-parity.test.ts` with 80+ tests covering all Zod 4 error issue paths.
|
|
99
|
+
- Added current Zod array-based factory signatures, two-schema records, multi-value literals, empty objects, and per-schema encode/decode methods.
|
|
100
|
+
- Added transformed record keys, structured `invalid_key` issues, direct prefaults, and shallow-cloned collection defaults.
|
|
101
|
+
- Added a Zod 4.4.3 differential behavior suite to the release gate and a maintained compatibility policy.
|
|
102
|
+
- Added schema-instance composition methods, tuple rest schemas, nested object/array/tuple codec encoding, current string format methods, and boolean `fromJSONSchema()` support.
|
|
103
|
+
- Added full nested `regexes`/`iso` parity, UUID v1-v8 options, WHATWG URL filters/normalization, and precision-aware ISO date-time formats.
|
|
104
|
+
- Added a daily Zod parity workflow with a blocking `latest` contract and a separate `canary` early-warning lane.
|
|
105
|
+
|
|
106
|
+
### Changed
|
|
107
|
+
|
|
108
|
+
- **Breaking (error shape):** `parse()` now throws `VldError` (not plain `Error`) for all validators, matching Zod's `ZodError` throw behavior. Code using `try/catch` around `parse()` should check for `VldError` or `Error` interchangeably since `VldError extends Error`.
|
|
109
|
+
- **Breaking (number validation):** `v.number()` now rejects `Infinity`, `-Infinity`, and `NaN` by default, matching Zod 4 behavior. Use `.finite()` explicitly if Infinity acceptance is needed.
|
|
110
|
+
- JSON Schema now defaults to Draft 2020-12 and Zod-compatible handling of unrepresentable types; VLD extensions remain available through `{ unrepresentable: "vld" }`.
|
|
111
|
+
- npm provenance is enforced for published packages.
|
|
112
|
+
- Security audit now checks runtime dependencies only (`--omit=dev`), since VLD has zero runtime dependencies.
|
|
113
|
+
|
|
114
|
+
### Verified
|
|
115
|
+
|
|
116
|
+
- 87 test suites and 2473 tests passing with 100% statement, branch, line, and function coverage.
|
|
117
|
+
- Zod parity verified against both `zod@4.4.3` (latest) and `zod@4.5.0-canary` (canary): 240 exports checked, 0 missing, 0 behavioral mismatches.
|
|
118
|
+
- Runtime guard average 11.46x faster, startup total 1.35x faster, and 4.66x less retained heap than Zod 4.4.3.
|
|
119
|
+
- Root string tree-shaken probe is 112.5 KiB versus Zod's 119.6 KiB; VLD mini is 63.9 KiB.
|
|
120
|
+
|
|
8
121
|
## [2.1.0] - 2026-06-16
|
|
9
122
|
|
|
10
123
|
### Added
|