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