@oxog/vld 2.0.3 → 2.1.0
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 +33 -1
- package/README.md +101 -37
- package/dist/chunks/errors-core-BeiFUtZM.js +81 -0
- package/dist/chunks/{index-DO8CFMxD.js → index-0R2ntSud.js} +16 -402
- package/dist/chunks/index-BvH403Yy.js +88 -0
- package/dist/chunks/security-B0Pd_vSY.js +35 -0
- package/dist/chunks/string-BJRQod3t.js +530 -0
- package/dist/cjs/chunks/errors-core-DWxLFs2f.cjs +83 -0
- package/dist/cjs/chunks/index-BkI37108.cjs +538 -0
- package/dist/cjs/chunks/index-Cc3bjUMX.cjs +91 -0
- package/dist/cjs/chunks/security-Dc3Jh13T.cjs +37 -0
- package/dist/cjs/chunks/string-BKZrc4hs.cjs +533 -0
- package/dist/cjs/cli/bin.cjs +506 -0
- package/dist/cjs/cli/index.cjs +209 -0
- package/dist/cjs/codecs/index.cjs +45 -0
- package/dist/{chunks/date-50JV_Mfj.js → cjs/coercion/index.cjs} +185 -103
- package/dist/cjs/compat/emitter.cjs +184 -0
- package/dist/cjs/compat/result.cjs +189 -0
- package/dist/cjs/errors.cjs +6 -213
- package/dist/cjs/index.cjs +1471 -10336
- package/dist/cjs/kernel.cjs +415 -0
- package/dist/cjs/locales/af.cjs +108 -0
- package/dist/cjs/locales/ar.cjs +108 -0
- package/dist/cjs/locales/bn.cjs +108 -0
- package/dist/cjs/locales/da.cjs +108 -0
- package/dist/cjs/locales/de.cjs +108 -0
- package/dist/cjs/locales/en.cjs +108 -0
- package/dist/cjs/locales/es-MX.cjs +107 -0
- package/dist/cjs/locales/es.cjs +96 -0
- package/dist/cjs/locales/fi.cjs +108 -0
- package/dist/cjs/locales/fr.cjs +96 -0
- package/dist/cjs/locales/hi.cjs +108 -0
- package/dist/cjs/locales/id.cjs +108 -0
- package/dist/cjs/locales/index.cjs +41 -2875
- package/dist/cjs/locales/it.cjs +108 -0
- package/dist/cjs/locales/ja.cjs +108 -0
- package/dist/cjs/locales/ko.cjs +108 -0
- package/dist/cjs/locales/lazy.cjs +42 -3023
- package/dist/cjs/locales/nl.cjs +108 -0
- package/dist/cjs/locales/no.cjs +108 -0
- package/dist/cjs/locales/pl.cjs +108 -0
- package/dist/cjs/locales/pt-BR.cjs +108 -0
- package/dist/cjs/locales/pt.cjs +108 -0
- package/dist/cjs/locales/ru.cjs +108 -0
- package/dist/cjs/locales/runtime.cjs +51 -0
- package/dist/cjs/locales/sv.cjs +108 -0
- package/dist/cjs/locales/sw.cjs +108 -0
- package/dist/cjs/locales/th.cjs +108 -0
- package/dist/cjs/locales/tr.cjs +108 -0
- package/dist/cjs/locales/vi.cjs +108 -0
- package/dist/cjs/locales/zh.cjs +108 -0
- package/dist/cjs/mini.cjs +121 -7353
- package/dist/cjs/pigment.cjs +207 -0
- package/dist/cjs/plugins/index.cjs +12 -0
- package/dist/cjs/registry.cjs +37 -0
- package/dist/cjs/v3/index.cjs +425 -0
- package/dist/cjs/v4/core/index.cjs +894 -0
- package/dist/cjs/v4/index.cjs +425 -0
- package/dist/cjs/v4/locales/index.cjs +130 -0
- package/dist/cjs/v4/mini/index.cjs +509 -0
- package/dist/cjs/v4-mini/index.cjs +532 -0
- package/dist/cjs/validators/any.cjs +40 -0
- package/dist/cjs/validators/array.cjs +283 -0
- package/dist/cjs/validators/base.cjs +887 -0
- package/dist/cjs/validators/base64.cjs +73 -0
- package/dist/cjs/validators/bigint.cjs +232 -0
- package/dist/cjs/validators/boolean.cjs +146 -0
- package/dist/cjs/validators/codec.cjs +205 -0
- package/dist/cjs/validators/custom.cjs +71 -0
- package/dist/cjs/validators/date.cjs +278 -0
- package/dist/cjs/validators/discriminated-union.cjs +130 -0
- package/dist/cjs/validators/enum.cjs +154 -0
- package/dist/cjs/validators/file.cjs +130 -0
- package/dist/cjs/validators/function.cjs +63 -0
- package/dist/cjs/validators/hex.cjs +70 -0
- package/dist/cjs/validators/index.cjs +123 -0
- package/dist/cjs/validators/intersection.cjs +120 -0
- package/dist/cjs/validators/json.cjs +70 -0
- package/dist/cjs/validators/lazy.cjs +53 -0
- package/dist/cjs/validators/literal.cjs +64 -0
- package/dist/cjs/validators/map.cjs +218 -0
- package/dist/cjs/validators/nan.cjs +41 -0
- package/dist/cjs/validators/never.cjs +36 -0
- package/dist/cjs/validators/null.cjs +43 -0
- package/dist/cjs/validators/number.cjs +427 -0
- package/dist/cjs/validators/object.cjs +868 -0
- package/dist/cjs/validators/promise.cjs +115 -0
- package/dist/cjs/validators/record.cjs +262 -0
- package/dist/cjs/validators/set.cjs +203 -0
- package/dist/cjs/validators/string-bool.cjs +124 -0
- package/dist/cjs/validators/string-formats.cjs +168 -0
- package/dist/cjs/validators/string.cjs +12 -0
- package/dist/cjs/validators/symbol.cjs +62 -0
- package/dist/cjs/validators/template-literal.cjs +108 -0
- package/dist/cjs/validators/tuple.cjs +187 -0
- package/dist/cjs/validators/uint8array.cjs +106 -0
- package/dist/cjs/validators/undefined.cjs +43 -0
- package/dist/cjs/validators/union.cjs +191 -0
- package/dist/cjs/validators/unknown.cjs +40 -0
- package/dist/cjs/validators/void.cjs +48 -0
- package/dist/cjs/validators/xor.cjs +69 -0
- package/dist/cli/bin.d.ts +0 -1
- package/dist/cli/bin.js +407 -0
- package/dist/cli/commands/benchmark.d.ts +1 -2
- package/dist/cli/commands/validate.d.ts +1 -2
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +205 -0
- package/dist/codecs/index.d.ts +21 -4
- package/dist/codecs/index.js +11 -4
- package/dist/coercion/bigint.d.ts +2 -3
- package/dist/coercion/boolean.d.ts +3 -3
- package/dist/coercion/date.d.ts +3 -3
- package/dist/coercion/index.d.ts +5 -6
- package/dist/coercion/index.js +473 -5
- package/dist/coercion/number.d.ts +2 -3
- package/dist/coercion/string.d.ts +2 -3
- package/dist/compat/emitter.d.ts +0 -1
- package/dist/compat/emitter.js +0 -1
- package/dist/compat/index.d.ts +4 -5
- package/dist/compat/result.d.ts +1 -2
- package/dist/compat/result.js +0 -1
- package/dist/errors-core.d.ts +39 -0
- package/dist/errors.d.ts +4 -54
- package/dist/errors.js +4 -68
- package/dist/events.d.ts +3 -4
- package/dist/index.d.ts +1186 -835
- package/dist/index.js +1046 -367
- package/dist/kernel.d.ts +2 -3
- package/dist/kernel.js +10 -6
- package/dist/locales/af.d.ts +1 -2
- package/dist/locales/af.js +0 -1
- package/dist/locales/ar.d.ts +1 -2
- package/dist/locales/ar.js +0 -1
- package/dist/locales/bn.d.ts +1 -2
- package/dist/locales/bn.js +0 -1
- package/dist/locales/da.d.ts +1 -2
- package/dist/locales/da.js +0 -1
- package/dist/locales/de.d.ts +1 -2
- package/dist/locales/de.js +0 -1
- package/dist/locales/en.d.ts +1 -2
- package/dist/locales/en.js +0 -1
- package/dist/locales/es-MX.d.ts +1 -2
- package/dist/locales/es-MX.js +0 -1
- package/dist/locales/es.d.ts +1 -2
- package/dist/locales/es.js +0 -1
- package/dist/locales/fi.d.ts +1 -2
- package/dist/locales/fi.js +0 -1
- package/dist/locales/fr.d.ts +1 -2
- package/dist/locales/fr.js +0 -1
- package/dist/locales/hi.d.ts +1 -2
- package/dist/locales/hi.js +0 -1
- package/dist/locales/id.d.ts +1 -2
- package/dist/locales/id.js +0 -1
- package/dist/locales/index.d.ts +10 -15
- package/dist/locales/index.js +28 -2
- package/dist/locales/it.d.ts +1 -2
- package/dist/locales/it.js +0 -1
- package/dist/locales/ja.d.ts +1 -2
- package/dist/locales/ja.js +0 -1
- package/dist/locales/ko.d.ts +1 -2
- package/dist/locales/ko.js +0 -1
- package/dist/locales/lazy.d.ts +4 -26
- package/dist/locales/lazy.js +12 -55
- package/dist/locales/nl.d.ts +1 -2
- package/dist/locales/nl.js +0 -1
- package/dist/locales/no.d.ts +1 -2
- package/dist/locales/no.js +0 -1
- package/dist/locales/pl.d.ts +1 -2
- package/dist/locales/pl.js +0 -1
- package/dist/locales/pt-BR.d.ts +1 -2
- package/dist/locales/pt-BR.js +0 -1
- package/dist/locales/pt.d.ts +1 -2
- package/dist/locales/pt.js +0 -1
- package/dist/locales/ru.d.ts +1 -2
- package/dist/locales/ru.js +0 -1
- package/dist/locales/runtime.d.ts +10 -0
- package/dist/locales/runtime.js +41 -0
- package/dist/locales/sv.d.ts +1 -2
- package/dist/locales/sv.js +0 -1
- package/dist/locales/sw.d.ts +1 -2
- package/dist/locales/sw.js +0 -1
- package/dist/locales/th.d.ts +1 -2
- package/dist/locales/th.js +0 -1
- package/dist/locales/tr.d.ts +1 -2
- package/dist/locales/tr.js +0 -1
- package/dist/locales/types.d.ts +0 -1
- package/dist/locales/vi.d.ts +1 -2
- package/dist/locales/vi.js +0 -1
- package/dist/locales/zh.d.ts +1 -2
- package/dist/locales/zh.js +0 -1
- package/dist/logger.d.ts +0 -1
- package/dist/mini.d.ts +64 -65
- package/dist/mini.js +31 -7
- package/dist/pigment.d.ts +0 -1
- package/dist/pigment.js +6 -4
- package/dist/plugins/index.d.ts +2 -3
- package/dist/plugins/index.js +1 -0
- package/dist/plugins/types.d.ts +4 -5
- package/dist/registry.d.ts +23 -0
- package/dist/registry.js +34 -0
- package/dist/utils/codec-utils.d.ts +0 -1
- package/dist/utils/deep-merge.d.ts +0 -1
- package/dist/utils/ip-validation.d.ts +0 -1
- package/dist/utils/json-schema.d.ts +16 -6
- package/dist/utils/security.d.ts +2 -6
- package/dist/v3/index.d.ts +2 -0
- package/dist/v3/index.js +46 -0
- package/dist/v4/core/index.d.ts +260 -0
- package/dist/v4/core/index.js +277 -0
- package/dist/v4/index.d.ts +4 -0
- package/dist/v4/index.js +50 -0
- package/dist/v4/locales/index.d.ts +53 -0
- package/dist/v4/locales/index.js +77 -0
- package/dist/v4/mini/index.d.ts +2 -0
- package/dist/v4/mini/index.js +47 -0
- package/dist/v4-mini/index.d.ts +22 -0
- package/dist/v4-mini/index.js +75 -0
- package/dist/validators/any.d.ts +7 -2
- package/dist/validators/any.js +37 -0
- package/dist/validators/array.d.ts +9 -2
- package/dist/validators/array.js +279 -0
- package/dist/validators/base.d.ts +150 -6
- package/dist/validators/base.js +868 -0
- package/dist/validators/base64.d.ts +1 -2
- package/dist/validators/base64.js +68 -0
- package/dist/validators/bigint.d.ts +21 -3
- package/dist/validators/bigint.js +228 -0
- package/dist/validators/boolean.d.ts +13 -4
- package/dist/validators/boolean.js +142 -0
- package/dist/validators/codec.d.ts +9 -2
- package/dist/validators/codec.js +200 -0
- package/dist/validators/custom.d.ts +15 -2
- package/dist/validators/custom.js +67 -0
- package/dist/validators/date.d.ts +19 -3
- package/dist/validators/date.js +274 -0
- package/dist/validators/discriminated-union.d.ts +4 -3
- package/dist/validators/discriminated-union.js +123 -0
- package/dist/validators/enum.d.ts +10 -7
- package/dist/validators/enum.js +150 -0
- package/dist/validators/file.d.ts +7 -2
- package/dist/validators/file.js +125 -0
- package/dist/validators/function.d.ts +11 -5
- package/dist/validators/function.js +58 -0
- package/dist/validators/hex.d.ts +1 -2
- package/dist/validators/hex.js +65 -0
- package/dist/validators/index.d.ts +38 -39
- package/dist/validators/index.js +35 -515
- package/dist/validators/intersection.d.ts +1 -2
- package/dist/validators/intersection.js +116 -0
- package/dist/validators/json.d.ts +1 -2
- package/dist/validators/json.js +66 -0
- package/dist/validators/lazy.d.ts +5 -9
- package/dist/validators/lazy.js +50 -0
- package/dist/validators/literal.d.ts +2 -2
- package/dist/validators/literal.js +60 -0
- package/dist/validators/map.d.ts +15 -2
- package/dist/validators/map.js +214 -0
- package/dist/validators/nan.d.ts +2 -3
- package/dist/validators/nan.js +38 -0
- package/dist/validators/never.d.ts +1 -2
- package/dist/validators/never.js +32 -0
- package/dist/validators/null.d.ts +3 -3
- package/dist/validators/null.js +40 -0
- package/dist/validators/number.d.ts +56 -27
- package/dist/validators/number.js +423 -0
- package/dist/validators/object.d.ts +30 -9
- package/dist/validators/object.js +864 -0
- package/dist/validators/promise.d.ts +15 -10
- package/dist/validators/promise.js +111 -0
- package/dist/validators/record.d.ts +11 -2
- package/dist/validators/record.js +258 -0
- package/dist/validators/set.d.ts +11 -2
- package/dist/validators/set.js +199 -0
- package/dist/validators/string-bool.d.ts +7 -10
- package/dist/validators/string-bool.js +120 -0
- package/dist/validators/string-formats.d.ts +7 -4
- package/dist/validators/string-formats.js +135 -0
- package/dist/validators/string.d.ts +39 -18
- package/dist/validators/string.js +4 -0
- package/dist/validators/symbol.d.ts +8 -3
- package/dist/validators/symbol.js +58 -0
- package/dist/validators/template-literal.d.ts +1 -2
- package/dist/validators/template-literal.js +103 -0
- package/dist/validators/tuple.d.ts +15 -2
- package/dist/validators/tuple.js +183 -0
- package/dist/validators/uint8array.d.ts +3 -4
- package/dist/validators/uint8array.js +101 -0
- package/dist/validators/undefined.d.ts +3 -3
- package/dist/validators/undefined.js +40 -0
- package/dist/validators/union.d.ts +7 -4
- package/dist/validators/union.js +187 -0
- package/dist/validators/unknown.d.ts +7 -2
- package/dist/{chunks/unknown-Dhzri_T-.js → validators/unknown.js} +12 -3
- package/dist/validators/void.d.ts +3 -2
- package/dist/validators/void.js +44 -0
- package/dist/validators/xor.d.ts +2 -3
- package/dist/validators/xor.js +66 -0
- package/package.json +114 -30
- package/dist/chunks/bigint-CRS0QVsy.js +0 -1854
- package/dist/chunks/bigint-CRS0QVsy.js.map +0 -1
- package/dist/chunks/date-50JV_Mfj.js.map +0 -1
- package/dist/chunks/index-DO8CFMxD.js.map +0 -1
- package/dist/chunks/json-Cp4WO0M9.js +0 -2021
- package/dist/chunks/json-Cp4WO0M9.js.map +0 -1
- package/dist/chunks/unknown-Dhzri_T-.js.map +0 -1
- package/dist/cjs/errors.cjs.map +0 -1
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/locales/index.cjs.map +0 -1
- package/dist/cjs/locales/lazy.cjs.map +0 -1
- package/dist/cjs/mini.cjs.map +0 -1
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/commands/benchmark.d.ts.map +0 -1
- package/dist/cli/commands/validate.d.ts.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/codecs/index.d.ts.map +0 -1
- package/dist/codecs/index.js.map +0 -1
- package/dist/coercion/bigint.d.ts.map +0 -1
- package/dist/coercion/boolean.d.ts.map +0 -1
- package/dist/coercion/date.d.ts.map +0 -1
- package/dist/coercion/index.d.ts.map +0 -1
- package/dist/coercion/index.js.map +0 -1
- package/dist/coercion/number.d.ts.map +0 -1
- package/dist/coercion/string.d.ts.map +0 -1
- package/dist/compat/emitter.d.ts.map +0 -1
- package/dist/compat/emitter.js.map +0 -1
- package/dist/compat/index.d.ts.map +0 -1
- package/dist/compat/result.d.ts.map +0 -1
- package/dist/compat/result.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kernel.d.ts.map +0 -1
- package/dist/kernel.js.map +0 -1
- package/dist/locales/af.d.ts.map +0 -1
- package/dist/locales/af.js.map +0 -1
- package/dist/locales/ar.d.ts.map +0 -1
- package/dist/locales/ar.js.map +0 -1
- package/dist/locales/backup-en.d.ts +0 -3
- package/dist/locales/backup-en.d.ts.map +0 -1
- package/dist/locales/bn.d.ts.map +0 -1
- package/dist/locales/bn.js.map +0 -1
- package/dist/locales/da.d.ts.map +0 -1
- package/dist/locales/da.js.map +0 -1
- package/dist/locales/de.d.ts.map +0 -1
- package/dist/locales/de.js.map +0 -1
- package/dist/locales/en.d.ts.map +0 -1
- package/dist/locales/en.js.map +0 -1
- package/dist/locales/es-MX.d.ts.map +0 -1
- package/dist/locales/es-MX.js.map +0 -1
- package/dist/locales/es.d.ts.map +0 -1
- package/dist/locales/es.js.map +0 -1
- package/dist/locales/fi.d.ts.map +0 -1
- package/dist/locales/fi.js.map +0 -1
- package/dist/locales/fr.d.ts.map +0 -1
- package/dist/locales/fr.js.map +0 -1
- package/dist/locales/hi.d.ts.map +0 -1
- package/dist/locales/hi.js.map +0 -1
- package/dist/locales/id.d.ts.map +0 -1
- package/dist/locales/id.js.map +0 -1
- package/dist/locales/index.d.ts.map +0 -1
- package/dist/locales/index.js.map +0 -1
- package/dist/locales/it.d.ts.map +0 -1
- package/dist/locales/it.js.map +0 -1
- package/dist/locales/ja.d.ts.map +0 -1
- package/dist/locales/ja.js.map +0 -1
- package/dist/locales/ko.d.ts.map +0 -1
- package/dist/locales/ko.js.map +0 -1
- package/dist/locales/lazy.d.ts.map +0 -1
- package/dist/locales/lazy.js.map +0 -1
- package/dist/locales/nl.d.ts.map +0 -1
- package/dist/locales/nl.js.map +0 -1
- package/dist/locales/no.d.ts.map +0 -1
- package/dist/locales/no.js.map +0 -1
- package/dist/locales/pl.d.ts.map +0 -1
- package/dist/locales/pl.js.map +0 -1
- package/dist/locales/pt-BR.d.ts.map +0 -1
- package/dist/locales/pt-BR.js.map +0 -1
- package/dist/locales/pt.d.ts.map +0 -1
- package/dist/locales/pt.js.map +0 -1
- package/dist/locales/ru.d.ts.map +0 -1
- package/dist/locales/ru.js.map +0 -1
- package/dist/locales/sv.d.ts.map +0 -1
- package/dist/locales/sv.js.map +0 -1
- package/dist/locales/sw.d.ts.map +0 -1
- package/dist/locales/sw.js.map +0 -1
- package/dist/locales/th.d.ts.map +0 -1
- package/dist/locales/th.js.map +0 -1
- package/dist/locales/tr.d.ts.map +0 -1
- package/dist/locales/tr.js.map +0 -1
- package/dist/locales/types.d.ts.map +0 -1
- package/dist/locales/vi.d.ts.map +0 -1
- package/dist/locales/vi.js.map +0 -1
- package/dist/locales/zh.d.ts.map +0 -1
- package/dist/locales/zh.js.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/mini.d.ts.map +0 -1
- package/dist/mini.js.map +0 -1
- package/dist/pigment.d.ts.map +0 -1
- package/dist/pigment.js.map +0 -1
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/utils/codec-utils.d.ts.map +0 -1
- package/dist/utils/deep-merge.d.ts.map +0 -1
- package/dist/utils/ip-validation.d.ts.map +0 -1
- package/dist/utils/json-schema.d.ts.map +0 -1
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/validators/any.d.ts.map +0 -1
- package/dist/validators/array.d.ts.map +0 -1
- package/dist/validators/base.d.ts.map +0 -1
- package/dist/validators/base64.d.ts.map +0 -1
- package/dist/validators/bigint.d.ts.map +0 -1
- package/dist/validators/boolean.d.ts.map +0 -1
- package/dist/validators/codec.d.ts.map +0 -1
- package/dist/validators/custom.d.ts.map +0 -1
- package/dist/validators/date.d.ts.map +0 -1
- package/dist/validators/discriminated-union.d.ts.map +0 -1
- package/dist/validators/enum.d.ts.map +0 -1
- package/dist/validators/file.d.ts.map +0 -1
- package/dist/validators/function.d.ts.map +0 -1
- package/dist/validators/hex.d.ts.map +0 -1
- package/dist/validators/index.d.ts.map +0 -1
- package/dist/validators/index.js.map +0 -1
- package/dist/validators/intersection.d.ts.map +0 -1
- package/dist/validators/json.d.ts.map +0 -1
- package/dist/validators/lazy.d.ts.map +0 -1
- package/dist/validators/literal.d.ts.map +0 -1
- package/dist/validators/map.d.ts.map +0 -1
- package/dist/validators/nan.d.ts.map +0 -1
- package/dist/validators/never.d.ts.map +0 -1
- package/dist/validators/null.d.ts.map +0 -1
- package/dist/validators/number.d.ts.map +0 -1
- package/dist/validators/object.d.ts.map +0 -1
- package/dist/validators/promise.d.ts.map +0 -1
- package/dist/validators/record.d.ts.map +0 -1
- package/dist/validators/set.d.ts.map +0 -1
- package/dist/validators/string-bool.d.ts.map +0 -1
- package/dist/validators/string-formats.d.ts.map +0 -1
- package/dist/validators/string.d.ts.map +0 -1
- package/dist/validators/symbol.d.ts.map +0 -1
- package/dist/validators/template-literal.d.ts.map +0 -1
- package/dist/validators/tuple.d.ts.map +0 -1
- package/dist/validators/uint8array.d.ts.map +0 -1
- package/dist/validators/undefined.d.ts.map +0 -1
- package/dist/validators/union.d.ts.map +0 -1
- package/dist/validators/unknown.d.ts.map +0 -1
- package/dist/validators/void.d.ts.map +0 -1
- package/dist/validators/xor.d.ts.map +0 -1
package/dist/codecs/index.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import '../
|
|
3
|
-
import '../
|
|
4
|
-
|
|
1
|
+
import '../validators/codec.js';
|
|
2
|
+
import '../validators/base64.js';
|
|
3
|
+
import '../validators/hex.js';
|
|
4
|
+
import '../validators/uint8array.js';
|
|
5
|
+
import '../chunks/string-BJRQod3t.js';
|
|
6
|
+
import '../validators/number.js';
|
|
7
|
+
import '../validators/bigint.js';
|
|
8
|
+
import '../validators/boolean.js';
|
|
9
|
+
import '../validators/date.js';
|
|
10
|
+
import '../validators/unknown.js';
|
|
11
|
+
export { b as base64Json, a as base64ToBytes, d as base64UrlToBytes, e as base64urlToBytes, f as bytesToUtf8, g as epochMillisToDate, h as epochSecondsToDate, i as hexLowerToBytes, j as hexToBytes, l as invertCodec, m as isoDatetimeToDate, n as jsonCodec, o as jwtPayload, p as numberToBigInt, s as stringToBigInt, q as stringToBoolean, r as stringToHttpURL, t as stringToInt, u as stringToNumber, v as stringToURL, B as uriComponent, C as utf8ToBytes } from '../chunks/index-0R2ntSud.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { VldBigInt } from '../validators/bigint';
|
|
2
|
-
import { ParseResult } from '../validators/base';
|
|
1
|
+
import { VldBigInt } from '../validators/bigint.js';
|
|
2
|
+
import { ParseResult } from '../validators/base.js';
|
|
3
3
|
/**
|
|
4
4
|
* BigInt coercion validator that attempts to convert values to bigint
|
|
5
5
|
*/
|
|
@@ -24,4 +24,3 @@ export declare class VldCoerceBigInt extends VldBigInt {
|
|
|
24
24
|
*/
|
|
25
25
|
safeParse(value: unknown): ParseResult<bigint>;
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=bigint.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { VldBoolean } from '../validators/boolean';
|
|
2
|
-
import { ParseResult } from '../validators/base';
|
|
1
|
+
import { VldBoolean } from '../validators/boolean.js';
|
|
2
|
+
import { ParseResult } from '../validators/base.js';
|
|
3
3
|
/**
|
|
4
4
|
* Boolean coercion validator that attempts to convert values to booleans
|
|
5
5
|
*/
|
|
@@ -8,6 +8,7 @@ export declare class VldCoerceBoolean extends VldBoolean {
|
|
|
8
8
|
* Create a new coerce boolean validator
|
|
9
9
|
*/
|
|
10
10
|
static create(): VldCoerceBoolean;
|
|
11
|
+
constructor();
|
|
11
12
|
/**
|
|
12
13
|
* Parse and coerce a value to boolean
|
|
13
14
|
*/
|
|
@@ -17,4 +18,3 @@ export declare class VldCoerceBoolean extends VldBoolean {
|
|
|
17
18
|
*/
|
|
18
19
|
safeParse(value: unknown): ParseResult<boolean>;
|
|
19
20
|
}
|
|
20
|
-
//# sourceMappingURL=boolean.d.ts.map
|
package/dist/coercion/date.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { VldDate } from '../validators/date';
|
|
2
|
-
import { ParseResult } from '../validators/base';
|
|
1
|
+
import { VldDate } from '../validators/date.js';
|
|
2
|
+
import { ParseResult } from '../validators/base.js';
|
|
3
3
|
/**
|
|
4
4
|
* Date coercion validator that attempts to convert values to dates
|
|
5
5
|
*/
|
|
@@ -8,6 +8,7 @@ export declare class VldCoerceDate extends VldDate {
|
|
|
8
8
|
* Create a new coerce date validator
|
|
9
9
|
*/
|
|
10
10
|
static create(): VldCoerceDate;
|
|
11
|
+
constructor();
|
|
11
12
|
/**
|
|
12
13
|
* Parse and coerce a value to date
|
|
13
14
|
*/
|
|
@@ -17,4 +18,3 @@ export declare class VldCoerceDate extends VldDate {
|
|
|
17
18
|
*/
|
|
18
19
|
safeParse(value: unknown): ParseResult<Date>;
|
|
19
20
|
}
|
|
20
|
-
//# sourceMappingURL=date.d.ts.map
|
package/dist/coercion/index.d.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Validators that coerce values to the target type before validation.
|
|
5
5
|
*/
|
|
6
|
-
export { VldCoerceString } from './string';
|
|
7
|
-
export { VldCoerceNumber } from './number';
|
|
8
|
-
export { VldCoerceBoolean } from './boolean';
|
|
9
|
-
export { VldCoerceDate } from './date';
|
|
10
|
-
export { VldCoerceBigInt } from './bigint';
|
|
11
|
-
//# sourceMappingURL=index.d.ts.map
|
|
6
|
+
export { VldCoerceString } from './string.js';
|
|
7
|
+
export { VldCoerceNumber } from './number.js';
|
|
8
|
+
export { VldCoerceBoolean } from './boolean.js';
|
|
9
|
+
export { VldCoerceDate } from './date.js';
|
|
10
|
+
export { VldCoerceBigInt } from './bigint.js';
|
package/dist/coercion/index.js
CHANGED
|
@@ -1,12 +1,481 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
import { V as VldString, i as isValidIPv6 } from '../chunks/string-BJRQod3t.js';
|
|
2
|
+
import { VLD_VALIDATOR_TYPES } from '../validators/base.js';
|
|
3
|
+
import { getMessages } from '../locales/runtime.js';
|
|
4
|
+
import { VldNumber } from '../validators/number.js';
|
|
5
|
+
import { VldBoolean } from '../validators/boolean.js';
|
|
6
|
+
import { VldDate } from '../validators/date.js';
|
|
7
|
+
import { VldBigInt } from '../validators/bigint.js';
|
|
8
|
+
|
|
9
|
+
// BUG-NEW-001 FIX: IPv6 validation moved to shared utility (src/utils/ip-validation.ts)
|
|
10
|
+
// to eliminate code duplication between string.ts and coercion/string.ts
|
|
11
|
+
/**
|
|
12
|
+
* String coercion validator that attempts to convert values to strings
|
|
13
|
+
*/
|
|
14
|
+
class VldCoerceString extends VldString {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
// Pass COERCE_STRING type to base class instead of STRING
|
|
17
|
+
super({ ...config, validatorType: VLD_VALIDATOR_TYPES.COERCE_STRING });
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a new coerce string validator
|
|
21
|
+
*/
|
|
22
|
+
static create() {
|
|
23
|
+
return new VldCoerceString();
|
|
24
|
+
}
|
|
25
|
+
// Override all chain methods to return VldCoerceString instances
|
|
26
|
+
min(length, message) {
|
|
27
|
+
return new VldCoerceString({
|
|
28
|
+
checks: [...this.config.checks, (v) => v.length >= length],
|
|
29
|
+
transforms: this.config.transforms,
|
|
30
|
+
errorMessage: message || getMessages().stringMin(length)
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
max(length, message) {
|
|
34
|
+
return new VldCoerceString({
|
|
35
|
+
checks: [...this.config.checks, (v) => v.length <= length],
|
|
36
|
+
transforms: this.config.transforms,
|
|
37
|
+
errorMessage: message || getMessages().stringMax(length)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
length(length, message) {
|
|
41
|
+
return new VldCoerceString({
|
|
42
|
+
checks: [...this.config.checks, (v) => v.length === length],
|
|
43
|
+
transforms: this.config.transforms,
|
|
44
|
+
errorMessage: message || getMessages().stringLength(length)
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
email(message) {
|
|
48
|
+
// BUG-007 FIX: Use simpler, ReDoS-safe regex (consistent with VldString)
|
|
49
|
+
const FAST_EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
50
|
+
return new VldCoerceString({
|
|
51
|
+
checks: [...this.config.checks, (v) => FAST_EMAIL_REGEX.test(v)],
|
|
52
|
+
transforms: this.config.transforms,
|
|
53
|
+
errorMessage: message || getMessages().stringEmail
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
url(message) {
|
|
57
|
+
return new VldCoerceString({
|
|
58
|
+
checks: [...this.config.checks, (v) => /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/.test(v)],
|
|
59
|
+
transforms: this.config.transforms,
|
|
60
|
+
errorMessage: message || getMessages().stringUrl
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
uuid(message) {
|
|
64
|
+
return new VldCoerceString({
|
|
65
|
+
checks: [...this.config.checks, (v) => /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(v)],
|
|
66
|
+
transforms: this.config.transforms,
|
|
67
|
+
errorMessage: message || getMessages().stringUuid
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
regex(pattern, message) {
|
|
71
|
+
return new VldCoerceString({
|
|
72
|
+
checks: [...this.config.checks, (v) => pattern.test(v)],
|
|
73
|
+
transforms: this.config.transforms,
|
|
74
|
+
errorMessage: message || getMessages().stringRegex
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
trim() {
|
|
78
|
+
return new VldCoerceString({
|
|
79
|
+
checks: this.config.checks,
|
|
80
|
+
transforms: [...this.config.transforms, (v) => v.trim()],
|
|
81
|
+
errorMessage: this.config.errorMessage
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
toLowerCase() {
|
|
85
|
+
return new VldCoerceString({
|
|
86
|
+
checks: this.config.checks,
|
|
87
|
+
transforms: [...this.config.transforms, (v) => v.toLowerCase()],
|
|
88
|
+
errorMessage: this.config.errorMessage
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
toUpperCase() {
|
|
92
|
+
return new VldCoerceString({
|
|
93
|
+
checks: this.config.checks,
|
|
94
|
+
transforms: [...this.config.transforms, (v) => v.toUpperCase()],
|
|
95
|
+
errorMessage: this.config.errorMessage
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
startsWith(str, message) {
|
|
99
|
+
return new VldCoerceString({
|
|
100
|
+
checks: [...this.config.checks, (v) => v.startsWith(str)],
|
|
101
|
+
transforms: this.config.transforms,
|
|
102
|
+
errorMessage: message || getMessages().stringStartsWith(str)
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
endsWith(str, message) {
|
|
106
|
+
return new VldCoerceString({
|
|
107
|
+
checks: [...this.config.checks, (v) => v.endsWith(str)],
|
|
108
|
+
transforms: this.config.transforms,
|
|
109
|
+
errorMessage: message || getMessages().stringEndsWith(str)
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
includes(str, message) {
|
|
113
|
+
return new VldCoerceString({
|
|
114
|
+
checks: [...this.config.checks, (v) => v.includes(str)],
|
|
115
|
+
transforms: this.config.transforms,
|
|
116
|
+
errorMessage: message || getMessages().stringIncludes(str)
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
ip(message) {
|
|
120
|
+
const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
|
121
|
+
return new VldCoerceString({
|
|
122
|
+
checks: [...this.config.checks, (v) => {
|
|
123
|
+
// Prevent ReDoS: Check length before validation
|
|
124
|
+
if (v.length > 100)
|
|
125
|
+
return false;
|
|
126
|
+
return ipv4.test(v) || isValidIPv6(v);
|
|
127
|
+
}],
|
|
128
|
+
transforms: this.config.transforms,
|
|
129
|
+
errorMessage: message || getMessages().stringIp
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
ipv4(message) {
|
|
133
|
+
return new VldCoerceString({
|
|
134
|
+
checks: [...this.config.checks, (v) => /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(v)],
|
|
135
|
+
transforms: this.config.transforms,
|
|
136
|
+
errorMessage: message || getMessages().stringIpv4
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
ipv6(message) {
|
|
140
|
+
return new VldCoerceString({
|
|
141
|
+
checks: [...this.config.checks, (v) => {
|
|
142
|
+
// Use safe IPv6 validation to prevent ReDoS attacks
|
|
143
|
+
return isValidIPv6(v);
|
|
144
|
+
}],
|
|
145
|
+
transforms: this.config.transforms,
|
|
146
|
+
errorMessage: message || getMessages().stringIpv6
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
nonempty(message) {
|
|
150
|
+
return new VldCoerceString({
|
|
151
|
+
checks: [...this.config.checks, (v) => v.length > 0],
|
|
152
|
+
transforms: this.config.transforms,
|
|
153
|
+
errorMessage: message || getMessages().stringEmpty
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Parse and coerce a value to string
|
|
158
|
+
*/
|
|
159
|
+
parse(value) {
|
|
160
|
+
// If it's already a string, apply security controls first
|
|
161
|
+
if (typeof value === 'string') {
|
|
162
|
+
// Enforce length limits to prevent DoS
|
|
163
|
+
if (value.length > 1000000) {
|
|
164
|
+
throw new Error(getMessages().coercionFailed('string', value));
|
|
165
|
+
}
|
|
166
|
+
// Sanitize control characters for security
|
|
167
|
+
// Remove characters that could cause issues in logs, databases, or UI
|
|
168
|
+
// eslint-disable-next-line no-control-regex -- Intentional removal of control characters for security
|
|
169
|
+
const sanitized = value.replace(/[\x00-\x1F\x7F]/g, '');
|
|
170
|
+
// Use parent validation with sanitized string
|
|
171
|
+
return super.parse(sanitized);
|
|
172
|
+
}
|
|
173
|
+
// Safe type coercion with security measures
|
|
174
|
+
let coerced;
|
|
175
|
+
if (typeof value === 'number') {
|
|
176
|
+
// Numbers: safe conversion
|
|
177
|
+
coerced = String(value);
|
|
178
|
+
}
|
|
179
|
+
else if (typeof value === 'boolean') {
|
|
180
|
+
// Booleans: safe conversion
|
|
181
|
+
coerced = value ? 'true' : 'false';
|
|
182
|
+
}
|
|
183
|
+
else if (typeof value === 'bigint') {
|
|
184
|
+
// BigInt: safe conversion
|
|
185
|
+
coerced = value.toString();
|
|
186
|
+
}
|
|
187
|
+
else if (typeof value === 'symbol') {
|
|
188
|
+
// Symbols: String() matches Zod coercion semantics without throwing.
|
|
189
|
+
coerced = String(value);
|
|
190
|
+
}
|
|
191
|
+
else if (typeof value === 'object') {
|
|
192
|
+
// Objects: only allow specific safe object types
|
|
193
|
+
if (value instanceof Date) {
|
|
194
|
+
// Dates: convert to ISO string
|
|
195
|
+
coerced = value.toISOString();
|
|
196
|
+
}
|
|
197
|
+
else if (Array.isArray(value)) {
|
|
198
|
+
// Arrays: convert to comma-separated string (original behavior)
|
|
199
|
+
coerced = value.join(',');
|
|
200
|
+
}
|
|
201
|
+
else if (value instanceof RegExp) {
|
|
202
|
+
// RegExp: convert to string representation
|
|
203
|
+
coerced = value.toString();
|
|
204
|
+
}
|
|
205
|
+
else if (value instanceof Error) {
|
|
206
|
+
// Errors: use message property (safe)
|
|
207
|
+
coerced = value.message || value.toString();
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
// For plain objects, use the original String() behavior for backwards compatibility
|
|
211
|
+
coerced = String(value);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
// Fallback for other types
|
|
216
|
+
coerced = String(value);
|
|
217
|
+
}
|
|
218
|
+
// Apply security controls
|
|
219
|
+
// Enforce length limits to prevent DoS
|
|
220
|
+
if (coerced.length > 1000000) {
|
|
221
|
+
throw new Error(getMessages().coercionFailed('string', value));
|
|
222
|
+
}
|
|
223
|
+
// Sanitize control characters for security
|
|
224
|
+
// Remove characters that could cause issues in logs, databases, or UI
|
|
225
|
+
// eslint-disable-next-line no-control-regex -- Intentional removal of control characters for security
|
|
226
|
+
const sanitized = coerced.replace(/[\x00-\x1F\x7F]/g, '');
|
|
227
|
+
// Use parent validation with sanitized value
|
|
228
|
+
return super.parse(sanitized);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Safely parse and coerce a value to string
|
|
232
|
+
*/
|
|
233
|
+
safeParse(value) {
|
|
234
|
+
try {
|
|
235
|
+
return { success: true, data: this.parse(value) };
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
return { success: false, error: error };
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Number coercion validator that attempts to convert values to numbers
|
|
245
|
+
*/
|
|
246
|
+
class VldCoerceNumber extends VldNumber {
|
|
247
|
+
constructor(config) {
|
|
248
|
+
super({ ...config, validatorType: VLD_VALIDATOR_TYPES.COERCE_NUMBER });
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Create a new coerce number validator
|
|
252
|
+
*/
|
|
253
|
+
static create() {
|
|
254
|
+
return new VldCoerceNumber();
|
|
255
|
+
}
|
|
256
|
+
// Override all chain methods to return VldCoerceNumber instances
|
|
257
|
+
min(value, message) {
|
|
258
|
+
return new VldCoerceNumber({
|
|
259
|
+
checks: [...this.config.checks, (v) => v >= value],
|
|
260
|
+
errorMessage: message || getMessages().numberMin(value)
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
max(value, message) {
|
|
264
|
+
return new VldCoerceNumber({
|
|
265
|
+
checks: [...this.config.checks, (v) => v <= value],
|
|
266
|
+
errorMessage: message || getMessages().numberMax(value)
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
int(message) {
|
|
270
|
+
return new VldCoerceNumber({
|
|
271
|
+
checks: [...this.config.checks, (v) => Number.isInteger(v)],
|
|
272
|
+
errorMessage: message || getMessages().numberInt
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
positive(message) {
|
|
276
|
+
return new VldCoerceNumber({
|
|
277
|
+
checks: [...this.config.checks, (v) => v > 0],
|
|
278
|
+
errorMessage: message || getMessages().numberPositive
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
negative(message) {
|
|
282
|
+
return new VldCoerceNumber({
|
|
283
|
+
checks: [...this.config.checks, (v) => v < 0],
|
|
284
|
+
errorMessage: message || getMessages().numberNegative
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
nonnegative(message) {
|
|
288
|
+
return new VldCoerceNumber({
|
|
289
|
+
checks: [...this.config.checks, (v) => v >= 0],
|
|
290
|
+
errorMessage: message || getMessages().numberNonnegative
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
nonpositive(message) {
|
|
294
|
+
return new VldCoerceNumber({
|
|
295
|
+
checks: [...this.config.checks, (v) => v <= 0],
|
|
296
|
+
errorMessage: message || getMessages().numberNonpositive
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
finite(message) {
|
|
300
|
+
return new VldCoerceNumber({
|
|
301
|
+
checks: [...this.config.checks, (v) => Number.isFinite(v)],
|
|
302
|
+
errorMessage: message || getMessages().numberFinite
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
safe(message) {
|
|
306
|
+
return new VldCoerceNumber({
|
|
307
|
+
checks: [...this.config.checks, (v) => Number.isSafeInteger(v)],
|
|
308
|
+
errorMessage: message || getMessages().numberSafe
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
multipleOf(value, message) {
|
|
312
|
+
return new VldCoerceNumber({
|
|
313
|
+
checks: [...this.config.checks, (v) => {
|
|
314
|
+
// BUG-004 FIX: Use epsilon comparison for floating point precision (consistent with VldNumber)
|
|
315
|
+
const remainder = Math.abs(v % value);
|
|
316
|
+
return remainder < Number.EPSILON || Math.abs(remainder - Math.abs(value)) < Number.EPSILON;
|
|
317
|
+
}],
|
|
318
|
+
errorMessage: message || getMessages().numberMultipleOf(value)
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
step(value, message) {
|
|
322
|
+
return this.multipleOf(value, message);
|
|
323
|
+
}
|
|
324
|
+
between(min, max, message) {
|
|
325
|
+
return new VldCoerceNumber({
|
|
326
|
+
checks: [...this.config.checks, (v) => v >= min && v <= max],
|
|
327
|
+
errorMessage: message || `Number must be between ${min} and ${max}`
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
even(message) {
|
|
331
|
+
// BUG-NEW-007 FIX: Add integer check before even/odd validation
|
|
332
|
+
return new VldCoerceNumber({
|
|
333
|
+
checks: [...this.config.checks, (v) => {
|
|
334
|
+
if (!Number.isInteger(v)) {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
return v % 2 === 0;
|
|
338
|
+
}],
|
|
339
|
+
errorMessage: message || 'Number must be even'
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
odd(message) {
|
|
343
|
+
// BUG-NEW-007 FIX: Add integer check before even/odd validation
|
|
344
|
+
return new VldCoerceNumber({
|
|
345
|
+
checks: [...this.config.checks, (v) => {
|
|
346
|
+
if (!Number.isInteger(v)) {
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
return v % 2 !== 0;
|
|
350
|
+
}],
|
|
351
|
+
errorMessage: message || 'Number must be odd'
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Parse and coerce a value to number
|
|
356
|
+
*/
|
|
357
|
+
parse(value) {
|
|
358
|
+
// If it's already a valid number, use parent validation directly
|
|
359
|
+
if (typeof value === 'number' && !isNaN(value)) {
|
|
360
|
+
if (this.config.checks.length === 0) {
|
|
361
|
+
return value;
|
|
362
|
+
}
|
|
363
|
+
return super.parse(value);
|
|
364
|
+
}
|
|
365
|
+
let coerced;
|
|
366
|
+
try {
|
|
367
|
+
coerced = Number(value);
|
|
368
|
+
}
|
|
369
|
+
catch {
|
|
370
|
+
throw new Error(getMessages().coercionFailed('number', value));
|
|
371
|
+
}
|
|
372
|
+
if (isNaN(coerced)) {
|
|
373
|
+
throw new Error(getMessages().coercionFailed('number', value));
|
|
374
|
+
}
|
|
375
|
+
if (this.config.checks.length === 0) {
|
|
376
|
+
return coerced;
|
|
377
|
+
}
|
|
378
|
+
// Use parent validation with coerced value
|
|
379
|
+
return super.parse(coerced);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Safely parse and coerce a value to number
|
|
383
|
+
*/
|
|
384
|
+
safeParse(value) {
|
|
385
|
+
try {
|
|
386
|
+
return { success: true, data: this.parse(value) };
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
return { success: false, error: error };
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Boolean coercion validator that attempts to convert values to booleans
|
|
396
|
+
*/
|
|
397
|
+
class VldCoerceBoolean extends VldBoolean {
|
|
398
|
+
/**
|
|
399
|
+
* Create a new coerce boolean validator
|
|
400
|
+
*/
|
|
401
|
+
static create() {
|
|
402
|
+
return new VldCoerceBoolean();
|
|
403
|
+
}
|
|
404
|
+
constructor() {
|
|
405
|
+
super(undefined, VLD_VALIDATOR_TYPES.COERCE_BOOLEAN);
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Parse and coerce a value to boolean
|
|
409
|
+
*/
|
|
410
|
+
parse(value) {
|
|
411
|
+
return Boolean(value);
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Safely parse and coerce a value to boolean
|
|
415
|
+
*/
|
|
416
|
+
safeParse(value) {
|
|
417
|
+
try {
|
|
418
|
+
return { success: true, data: this.parse(value) };
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
return { success: false, error: error };
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Date coercion validator that attempts to convert values to dates
|
|
428
|
+
*/
|
|
429
|
+
class VldCoerceDate extends VldDate {
|
|
430
|
+
/**
|
|
431
|
+
* Create a new coerce date validator
|
|
432
|
+
*/
|
|
433
|
+
static create() {
|
|
434
|
+
return new VldCoerceDate();
|
|
435
|
+
}
|
|
436
|
+
constructor() {
|
|
437
|
+
super({ validatorType: VLD_VALIDATOR_TYPES.COERCE_DATE });
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Parse and coerce a value to date
|
|
441
|
+
*/
|
|
442
|
+
parse(value) {
|
|
443
|
+
try {
|
|
444
|
+
if (value instanceof Date) {
|
|
445
|
+
return super.parse(value);
|
|
446
|
+
}
|
|
447
|
+
const date = new Date(value);
|
|
448
|
+
if (isNaN(date.getTime())) {
|
|
449
|
+
throw new Error(getMessages().coercionFailed('date', value));
|
|
450
|
+
}
|
|
451
|
+
return super.parse(date);
|
|
452
|
+
}
|
|
453
|
+
catch (error) {
|
|
454
|
+
if (error.message.includes('Cannot coerce')) {
|
|
455
|
+
throw error;
|
|
456
|
+
}
|
|
457
|
+
throw new Error(getMessages().coercionFailed('date', value));
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Safely parse and coerce a value to date
|
|
462
|
+
*/
|
|
463
|
+
safeParse(value) {
|
|
464
|
+
try {
|
|
465
|
+
return { success: true, data: this.parse(value) };
|
|
466
|
+
}
|
|
467
|
+
catch (error) {
|
|
468
|
+
return { success: false, error: error };
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
3
472
|
|
|
4
473
|
/**
|
|
5
474
|
* BigInt coercion validator that attempts to convert values to bigint
|
|
6
475
|
*/
|
|
7
476
|
class VldCoerceBigInt extends VldBigInt {
|
|
8
477
|
constructor(config) {
|
|
9
|
-
super(config);
|
|
478
|
+
super({ ...config, validatorType: VLD_VALIDATOR_TYPES.COERCE_BIGINT });
|
|
10
479
|
}
|
|
11
480
|
/**
|
|
12
481
|
* Create a new coerce bigint validator
|
|
@@ -107,5 +576,4 @@ class VldCoerceBigInt extends VldBigInt {
|
|
|
107
576
|
}
|
|
108
577
|
}
|
|
109
578
|
|
|
110
|
-
export { VldCoerceBigInt };
|
|
111
|
-
//# sourceMappingURL=index.js.map
|
|
579
|
+
export { VldCoerceBigInt, VldCoerceBoolean, VldCoerceDate, VldCoerceNumber, VldCoerceString };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { VldNumber } from '../validators/number';
|
|
2
|
-
import { ParseResult } from '../validators/base';
|
|
1
|
+
import { VldNumber } from '../validators/number.js';
|
|
2
|
+
import { ParseResult } from '../validators/base.js';
|
|
3
3
|
/**
|
|
4
4
|
* Number coercion validator that attempts to convert values to numbers
|
|
5
5
|
*/
|
|
@@ -32,4 +32,3 @@ export declare class VldCoerceNumber extends VldNumber {
|
|
|
32
32
|
*/
|
|
33
33
|
safeParse(value: unknown): ParseResult<number>;
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=number.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { VldString } from '../validators/string';
|
|
2
|
-
import { ParseResult } from '../validators/base';
|
|
1
|
+
import { VldString } from '../validators/string.js';
|
|
2
|
+
import { ParseResult } from '../validators/base.js';
|
|
3
3
|
/**
|
|
4
4
|
* String coercion validator that attempts to convert values to strings
|
|
5
5
|
*/
|
|
@@ -35,4 +35,3 @@ export declare class VldCoerceString extends VldString {
|
|
|
35
35
|
*/
|
|
36
36
|
safeParse(value: unknown): ParseResult<string>;
|
|
37
37
|
}
|
|
38
|
-
//# sourceMappingURL=string.d.ts.map
|
package/dist/compat/emitter.d.ts
CHANGED
package/dist/compat/emitter.js
CHANGED
package/dist/compat/index.d.ts
CHANGED
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
* - Result pattern (@oxog/types compatibility)
|
|
9
9
|
* - Event emitter (@oxog/emitter compatibility)
|
|
10
10
|
*/
|
|
11
|
-
export type { Result, VldResult } from './result';
|
|
12
|
-
export { Ok, Err, success, failure, isOk, isErr, isResult, unwrap, unwrapOr, map, mapErr, flatMap, match, tryCatch, tryCatchAsync, all, fromNullable, ResultUtils } from './result';
|
|
13
|
-
export type { EventMap, EventHandler, ListenerOptions, Emitter, VldEventHandler } from './emitter';
|
|
14
|
-
export { createEmitter, createEventBus, withEmitter } from './emitter';
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
11
|
+
export type { Result, VldResult } from './result.js';
|
|
12
|
+
export { Ok, Err, success, failure, isOk, isErr, isResult, unwrap, unwrapOr, map, mapErr, flatMap, match, tryCatch, tryCatchAsync, all, fromNullable, ResultUtils } from './result.js';
|
|
13
|
+
export type { EventMap, EventHandler, ListenerOptions, Emitter, VldEventHandler } from './emitter.js';
|
|
14
|
+
export { createEmitter, createEventBus, withEmitter } from './emitter.js';
|
package/dist/compat/result.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This module provides a Result type for functional error handling,
|
|
5
5
|
* compatible with @oxog/types when available.
|
|
6
6
|
*/
|
|
7
|
-
import type { VldError } from '../errors';
|
|
7
|
+
import type { VldError } from '../errors.js';
|
|
8
8
|
/**
|
|
9
9
|
* Success result type
|
|
10
10
|
*/
|
|
@@ -125,4 +125,3 @@ export declare const ResultUtils: {
|
|
|
125
125
|
all: typeof all;
|
|
126
126
|
fromNullable: typeof fromNullable;
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=result.d.ts.map
|
package/dist/compat/result.js
CHANGED