@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,4 +1,4 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
1
|
+
import { VldBase, ParseResult } from './base.js';
|
|
2
2
|
/**
|
|
3
3
|
* Configuration for string boolean validation
|
|
4
4
|
*/
|
|
@@ -16,6 +16,11 @@ export interface StringBoolOptions {
|
|
|
16
16
|
*/
|
|
17
17
|
export declare class VldStringBool extends VldBase<unknown, boolean> {
|
|
18
18
|
private readonly options;
|
|
19
|
+
private readonly truthyValues;
|
|
20
|
+
private readonly falsyValues;
|
|
21
|
+
private readonly normalizedTruthySet;
|
|
22
|
+
private readonly normalizedFalsySet;
|
|
23
|
+
private readonly validValuesText;
|
|
19
24
|
private constructor();
|
|
20
25
|
/**
|
|
21
26
|
* Create a new string boolean validator
|
|
@@ -25,14 +30,7 @@ export declare class VldStringBool extends VldBase<unknown, boolean> {
|
|
|
25
30
|
* Normalize a string value based on case sensitivity setting
|
|
26
31
|
*/
|
|
27
32
|
private normalizeValue;
|
|
28
|
-
|
|
29
|
-
* Get the effective truthy values (custom or default)
|
|
30
|
-
*/
|
|
31
|
-
private getTruthyValues;
|
|
32
|
-
/**
|
|
33
|
-
* Get the effective falsy values (custom or default)
|
|
34
|
-
*/
|
|
35
|
-
private getFalsyValues;
|
|
33
|
+
private normalizeValues;
|
|
36
34
|
/**
|
|
37
35
|
* Parse and validate a string boolean value
|
|
38
36
|
*/
|
|
@@ -58,4 +56,3 @@ export declare class VldStringBool extends VldBase<unknown, boolean> {
|
|
|
58
56
|
*/
|
|
59
57
|
caseInsensitive(): VldStringBool;
|
|
60
58
|
}
|
|
61
|
-
//# sourceMappingURL=string-bool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as t,VLD_VALIDATOR_TYPES as e}from"./base.js";import{getMessages as s}from"../locales/runtime.js";const r=["true","1","yes","on","y","enabled"],i=["false","0","no","off","n","disabled"];class VldStringBool extends t{constructor(t){super(e.STRING_BOOL),this.options=t,this.truthyValues=t.truthy??r,this.falsyValues=t.falsy??i;const s=this.normalizeValues(this.truthyValues),o=this.normalizeValues(this.falsyValues);this.normalizedTruthySet=new Set(s),this.normalizedFalsySet=new Set(o),this.validValuesText=[...s,...o].join(", ")}static create(t={}){return new VldStringBool(t)}normalizeValue(t){return this.options.caseSensitive?t:t.toLowerCase()}normalizeValues(t){return this.options.caseSensitive?t:t.map(t=>t.toLowerCase())}parse(t){if("string"!=typeof t){if("boolean"==typeof t)return t;throw new Error(s().stringExpected(typeof t,"string"))}const e=this.normalizeValue(t);if(this.normalizedTruthySet.has(e))return!0;if(this.normalizedFalsySet.has(e))return!1;throw new Error(s().stringBoolExpected(this.validValuesText,t))}safeParse(t){try{return{success:!0,data:this.parse(t)}}catch(t){return{success:!1,error:t}}}withTruthy(t){return new VldStringBool({...this.options,truthy:t})}withFalsy(t){return new VldStringBool({...this.options,falsy:t})}caseSensitive(){return new VldStringBool({...this.options,caseSensitive:!0})}caseInsensitive(){return new VldStringBool({...this.options,caseSensitive:!1})}}export{VldStringBool};
|
|
@@ -3,67 +3,63 @@
|
|
|
3
3
|
* Part of Zod 4 API parity implementation
|
|
4
4
|
* Provides convenient validators for common string formats
|
|
5
5
|
*/
|
|
6
|
-
import { VldBase } from './base';
|
|
7
|
-
import type { ParseResult } from './base';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
readonly guid: RegExp;
|
|
43
|
-
readonly httpUrl: RegExp;
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Generic string format validator
|
|
47
|
-
*/
|
|
48
|
-
declare class VldStringFormat extends VldBase<unknown, string> {
|
|
6
|
+
import { VldBase } from './base.js';
|
|
7
|
+
import type { ParseResult } from './base.js';
|
|
8
|
+
export type UUIDVersion = 'v1' | 'v2' | 'v3' | 'v4' | 'v5' | 'v6' | 'v7' | 'v8';
|
|
9
|
+
export interface URLFormatOptions {
|
|
10
|
+
hostname?: RegExp;
|
|
11
|
+
normalize?: boolean;
|
|
12
|
+
protocol?: RegExp;
|
|
13
|
+
}
|
|
14
|
+
export interface ISOTimeOptions {
|
|
15
|
+
precision?: number | null;
|
|
16
|
+
}
|
|
17
|
+
export interface ISODateTimeOptions extends ISOTimeOptions {
|
|
18
|
+
local?: boolean;
|
|
19
|
+
offset?: boolean;
|
|
20
|
+
}
|
|
21
|
+
declare function uuidRegex(version?: number): RegExp;
|
|
22
|
+
declare function timeRegex(options?: ISOTimeOptions): RegExp;
|
|
23
|
+
declare function dateTimeRegex(options?: ISODateTimeOptions): RegExp;
|
|
24
|
+
declare function stringRegex(options?: {
|
|
25
|
+
minimum?: number;
|
|
26
|
+
maximum?: number;
|
|
27
|
+
}): RegExp;
|
|
28
|
+
declare function macRegex(delimiter?: string): RegExp;
|
|
29
|
+
type StaticRegexName = 'base64' | 'base64url' | 'bigint' | 'boolean' | 'browserEmail' | 'cidrv4' | 'cidrv6' | 'creditCard' | 'cuid' | 'cuid2' | 'date' | 'domain' | 'duration' | 'e164' | 'email' | 'extendedDuration' | 'guid' | 'hex' | 'hostname' | 'html5Email' | 'httpProtocol' | 'httpUrl' | 'idnEmail' | 'integer' | 'ipv4' | 'ipv6' | 'jwt' | 'ksuid' | 'lowercase' | 'md5' | 'md5_base64' | 'md5_base64url' | 'md5_hex' | 'nanoid' | 'null' | 'number' | 'rfc5322Email' | 'sha1' | 'sha1_base64' | 'sha1_base64url' | 'sha1_hex' | 'sha256' | 'sha256_base64' | 'sha256_base64url' | 'sha256_hex' | 'sha384' | 'sha384_base64' | 'sha384_base64url' | 'sha384_hex' | 'sha512' | 'sha512_base64' | 'sha512_base64url' | 'sha512_hex' | 'ulid' | 'undefined' | 'unicodeEmail' | 'uppercase' | 'uuid4' | 'uuid6' | 'uuid7' | 'xid';
|
|
30
|
+
export type RegexNamespace = Readonly<Record<StaticRegexName, RegExp> & {
|
|
31
|
+
datetime: typeof dateTimeRegex;
|
|
32
|
+
emoji: () => RegExp;
|
|
33
|
+
mac: typeof macRegex;
|
|
34
|
+
string: typeof stringRegex;
|
|
35
|
+
time: typeof timeRegex;
|
|
36
|
+
uuid: typeof uuidRegex;
|
|
37
|
+
}>;
|
|
38
|
+
/** Public regex helpers matching the current Zod 4 namespace. */
|
|
39
|
+
declare const REGEXES: RegexNamespace;
|
|
40
|
+
/** Generic string format validator. */
|
|
41
|
+
export declare class VldStringFormat extends VldBase<unknown, string> {
|
|
49
42
|
readonly _format: string;
|
|
50
|
-
readonly _validator: (
|
|
43
|
+
readonly _validator: (value: string) => boolean;
|
|
51
44
|
readonly _errorMessage?: string | undefined;
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
private readonly _normalize;
|
|
46
|
+
private readonly _patternSource?;
|
|
47
|
+
constructor(_format: string, _validator: (value: string) => boolean, _errorMessage?: string | undefined, _normalize?: (value: string) => string, _patternSource?: string | undefined);
|
|
48
|
+
static create(format: string, validator: (value: string) => boolean, errorMessage?: string, normalize?: (value: string) => string, patternSource?: string): VldStringFormat;
|
|
49
|
+
private _createFormatIssue;
|
|
54
50
|
parse(value: unknown): string;
|
|
55
51
|
safeParse(value: unknown): ParseResult<string>;
|
|
56
52
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Top-level string format validators
|
|
59
|
-
*/
|
|
60
53
|
export declare const email: (options?: {
|
|
61
54
|
pattern?: RegExp;
|
|
62
55
|
}) => VldStringFormat;
|
|
56
|
+
export declare const url: (options?: URLFormatOptions) => VldStringFormat;
|
|
63
57
|
export declare const uuid: (options?: {
|
|
64
|
-
version?:
|
|
58
|
+
version?: UUIDVersion;
|
|
65
59
|
}) => VldStringFormat;
|
|
66
60
|
export declare const uuidv4: () => VldStringFormat;
|
|
61
|
+
export declare const uuidv6: () => VldStringFormat;
|
|
62
|
+
export declare const uuidv7: () => VldStringFormat;
|
|
67
63
|
export declare const hostname: () => VldStringFormat;
|
|
68
64
|
export declare const emoji: () => VldStringFormat;
|
|
69
65
|
export declare const base64: () => VldStringFormat;
|
|
@@ -76,28 +72,31 @@ export declare const cuid2: () => VldStringFormat;
|
|
|
76
72
|
export declare const ulid: () => VldStringFormat;
|
|
77
73
|
export declare const ipv4: () => VldStringFormat;
|
|
78
74
|
export declare const ipv6: () => VldStringFormat;
|
|
79
|
-
export declare const mac: (
|
|
75
|
+
export declare const mac: (options?: {
|
|
76
|
+
delimiter?: string;
|
|
77
|
+
}) => VldStringFormat;
|
|
80
78
|
export declare const cidrv4: () => VldStringFormat;
|
|
81
79
|
export declare const cidrv6: () => VldStringFormat;
|
|
82
80
|
export declare const e164: () => VldStringFormat;
|
|
83
81
|
export declare const xid: () => VldStringFormat;
|
|
84
82
|
export declare const guid: () => VldStringFormat;
|
|
85
83
|
export declare const httpUrl: () => VldStringFormat;
|
|
84
|
+
export declare const ksuid: () => VldStringFormat;
|
|
86
85
|
export declare const hash: (algorithm: "md5" | "sha1" | "sha256" | "sha384" | "sha512") => VldStringFormat;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
export declare function isValidCreditCard(input: string): boolean;
|
|
87
|
+
export declare const creditCard: (params?: {
|
|
88
|
+
message?: string;
|
|
89
|
+
}) => VldStringFormat;
|
|
90
90
|
export declare const iso: {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
91
|
+
readonly ZodISODate: typeof VldStringFormat;
|
|
92
|
+
readonly ZodISODateTime: typeof VldStringFormat;
|
|
93
|
+
readonly ZodISODuration: typeof VldStringFormat;
|
|
94
|
+
readonly ZodISOTime: typeof VldStringFormat;
|
|
95
|
+
readonly date: () => VldStringFormat;
|
|
96
|
+
readonly time: (options?: ISOTimeOptions) => VldStringFormat;
|
|
97
|
+
readonly datetime: (options?: ISODateTimeOptions) => VldStringFormat;
|
|
98
|
+
readonly dateTime: (options?: ISODateTimeOptions) => VldStringFormat;
|
|
99
|
+
readonly duration: () => VldStringFormat;
|
|
97
100
|
};
|
|
98
|
-
|
|
99
|
-
* Custom format validator
|
|
100
|
-
*/
|
|
101
|
-
export declare const stringFormat: (name: string, validator: ((val: string) => boolean) | RegExp) => VldStringFormat;
|
|
101
|
+
export declare const stringFormat: (name: string, validator: ((value: string) => boolean) | RegExp) => VldStringFormat;
|
|
102
102
|
export { REGEXES as regexes };
|
|
103
|
-
//# sourceMappingURL=string-formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as t,VLD_VALIDATOR_TYPES as a}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{i as e}from"../chunks/ip-validation-g5LWgy9t.js";import{V as i,c as n,g as d}from"../chunks/errors-core-Cqi4-9ew.js";const o="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function s(t,a){return t.lastIndex=0,t.test(a)}function c(t,a){return new RegExp(`^[A-Za-z0-9+/]{${t}}${a}$`)}function u(t){return new RegExp(`^[A-Za-z0-9_-]{${t}}$`)}function m(t){const a="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"!=typeof t.precision?`${a}(?::[0-5]\\d(?:\\.\\d+)?)?`:-1===t.precision?a:0===t.precision?`${a}:[0-5]\\d`:`${a}:[0-5]\\d\\.\\d{${t.precision}}`}function f(t){return void 0===t?/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/:new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)}const l={cuid:/^[cC][0-9a-z]{6,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid:/^[0-9a-vA-V]{20}$/,ksuid:/^[A-Za-z0-9]{27}$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,duration:/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,extendedDuration:/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,guid:/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,creditCard:/^\d(?:[ -]?\d){11,18}$/,uuid:f,uuid4:f(4),uuid6:f(6),uuid7:f(7),email:/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+.-]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/,html5Email:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,rfc5322Email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/,unicodeEmail:/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,idnEmail:/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,browserEmail:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,emoji:()=>/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6:/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,mac:function(t=":"){const a=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^(?:[0-9A-F]{2}${a}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${a}){5}[0-9a-f]{2}$`)},cidrv4:/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6:/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url:/^[A-Za-z0-9_-]*$/,hostname:/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,domain:/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,httpProtocol:/^https?$/,e164:/^\+[1-9]\d{6,14}$/,date:new RegExp(`^${o}$`),time:function(t={}){return new RegExp(`^${m(t)}$`)},datetime:function(t={}){const a=["Z"];return t.local&&a.push(""),t.offset&&a.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)"),new RegExp(`^${o}T${m(t)}(?:${a.join("|")})$`)},string:function(t){const a=t?`[\\s\\S]{${t.minimum??0},${t.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${a}$`)},bigint:/^-?\d+n?$/,integer:/^-?\d+$/,number:/^-?\d+(?:\.\d+)?$/,boolean:/^(?:true|false)$/i,null:/^null$/i,undefined:/^undefined$/i,lowercase:/^[^A-Z]*$/,uppercase:/^[^a-z]*$/,hex:/^[0-9a-fA-F]*$/,md5_hex:/^[0-9a-fA-F]{32}$/,md5_base64:c(22,"=="),md5_base64url:u(22),sha1_hex:/^[0-9a-fA-F]{40}$/,sha1_base64:c(27,"="),sha1_base64url:u(27),sha256_hex:/^[0-9a-fA-F]{64}$/,sha256_base64:c(43,"="),sha256_base64url:u(43),sha384_hex:/^[0-9a-fA-F]{96}$/,sha384_base64:c(64,""),sha384_base64url:u(64),sha512_hex:/^[0-9a-fA-F]{128}$/,sha512_base64:c(86,"=="),sha512_base64url:u(86),jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,httpUrl:/^https?:\/\/[^\s/$.?#].[^\s]*$/,md5:/^[a-f0-9]{32}$/i,sha1:/^[a-f0-9]{40}$/i,sha256:/^[a-f0-9]{64}$/i,sha384:/^[a-f0-9]{96}$/i,sha512:/^[a-f0-9]{128}$/i};class VldStringFormat extends t{constructor(t,r,e,i=t=>t,n){super(a.STRING_FORMAT),this._format=t,this._validator=r,this._errorMessage=e,this._normalize=i,this._patternSource=n}static create(t,a,r,e,i){return new VldStringFormat(t,a,r,e,i)}_createFormatIssue(){const t={code:"invalid_format",path:[],origin:"string",format:this._format,message:this._errorMessage||`Invalid ${this._format}`};return this._patternSource&&(t.pattern=this._patternSource),new i([t])}parse(t){if("string"!=typeof t)throw new i([n("string",d(t),r().invalidString)]);if(!this._validator(t))throw this._createFormatIssue();return this._normalize(t)}safeParse(t){return"string"!=typeof t?{success:!1,error:new i([n("string",d(t),r().invalidString)])}:this._validator(t)?{success:!0,data:this._normalize(t)}:{success:!1,error:this._createFormatIssue()}}}const A=t=>{const a=t?.pattern??l.email;return VldStringFormat.create("email",t=>s(a,t),void 0,void 0,a.source)},$=(t={})=>VldStringFormat.create("url",a=>{const r=(t=>{try{return new URL(t)}catch{return}})(a);return void 0!==r&&(!t.hostname||s(t.hostname,r.hostname))&&(!t.protocol||s(t.protocol,r.protocol.slice(0,-1)))},void 0,t.normalize?t=>new URL(t).href:void 0),F=t=>{const a=f(void 0===t?.version?void 0:Number(t.version.slice(1)));return VldStringFormat.create("uuid",t=>s(a,t))},g=()=>VldStringFormat.create("uuid",t=>s(l.uuid4,t)),h=()=>VldStringFormat.create("uuid",t=>s(l.uuid6,t)),p=()=>VldStringFormat.create("uuid",t=>s(l.uuid7,t)),S=()=>VldStringFormat.create("hostname",t=>s(l.hostname,t)),z=()=>VldStringFormat.create("emoji",t=>s(l.emoji(),t)),Z=()=>VldStringFormat.create("base64",t=>s(l.base64,t)),_=()=>VldStringFormat.create("base64url",t=>s(l.base64url,t)),V=()=>VldStringFormat.create("hex",t=>s(l.hex,t)),v=()=>VldStringFormat.create("jwt",t=>s(l.jwt,t)),x=()=>VldStringFormat.create("nanoid",t=>s(l.nanoid,t)),b=()=>VldStringFormat.create("cuid",t=>s(l.cuid,t)),w=()=>VldStringFormat.create("cuid2",t=>s(l.cuid2,t)),E=()=>VldStringFormat.create("ulid",t=>s(l.ulid,t)),j=()=>VldStringFormat.create("ipv4",t=>s(l.ipv4,t)),I=()=>VldStringFormat.create("ipv6",t=>s(l.ipv6,t)),R=t=>{const a=l.mac(t?.delimiter);return VldStringFormat.create("mac",t=>s(a,t))},M=()=>VldStringFormat.create("cidrv4",t=>s(l.cidrv4,t)),T=()=>VldStringFormat.create("cidrv6",t=>{const a=t.lastIndexOf("/");if(a<=0)return!1;const r=Number(t.slice(a+1));return Number.isInteger(r)&&r>=0&&r<=128&&e(t.slice(0,a))}),D=()=>VldStringFormat.create("e164",t=>s(l.e164,t)),k=()=>VldStringFormat.create("xid",t=>s(l.xid,t)),C=()=>VldStringFormat.create("guid",t=>s(l.guid,t)),O=()=>VldStringFormat.create("httpUrl",t=>s(l.httpUrl,t)),P=()=>VldStringFormat.create("ksuid",t=>s(l.ksuid,t)),N=t=>VldStringFormat.create("hash",a=>l[t]?.test(a)??!1,`Invalid ${t} hash`),U=/[ -]/g;function y(t){return!!l.creditCard.test(t)&&function(t){let a=0,r=!1;for(let e=t.length-1;e>=0;e--){let i=t.charCodeAt(e)-48;r&&(i*=2,i>9&&(i-=9)),a+=i,r=!r}return a%10==0}(t.replace(U,""))}const H=t=>VldStringFormat.create("credit_card",y,t?.message,void 0,l.creditCard.source),W={ZodISODate:VldStringFormat,ZodISODateTime:VldStringFormat,ZodISODuration:VldStringFormat,ZodISOTime:VldStringFormat,date:()=>VldStringFormat.create("date",t=>s(l.date,t)),time:(t={})=>{const a=l.time(t);return VldStringFormat.create("time",t=>s(a,t))},datetime:(t={})=>{const a=l.datetime(t);return VldStringFormat.create("datetime",t=>s(a,t))},dateTime:(t={local:!0})=>{const a=l.datetime(t);return VldStringFormat.create("datetime",t=>s(a,t))},duration:()=>VldStringFormat.create("duration",t=>s(l.duration,t))},Y=(t,a)=>{const r=a instanceof RegExp?t=>s(a,t):a;return VldStringFormat.create(t,r)};export{VldStringFormat,Z as base64,_ as base64url,M as cidrv4,T as cidrv6,H as creditCard,b as cuid,w as cuid2,D as e164,A as email,z as emoji,C as guid,N as hash,V as hex,S as hostname,O as httpUrl,j as ipv4,I as ipv6,y as isValidCreditCard,W as iso,v as jwt,P as ksuid,R as mac,x as nanoid,l as regexes,Y as stringFormat,E as ulid,$ as url,F as uuid,g as uuidv4,h as uuidv6,p as uuidv7,k as xid};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
1
|
+
import { VldBase, ParseResult, ValidatorType, type ErrorParam } from './base.js';
|
|
2
2
|
/**
|
|
3
3
|
* Type for string validation check functions
|
|
4
4
|
*/
|
|
@@ -7,13 +7,33 @@ type StringCheck = (value: string) => boolean;
|
|
|
7
7
|
* Type for string transformation functions
|
|
8
8
|
*/
|
|
9
9
|
type StringTransform = (value: string) => string;
|
|
10
|
+
interface StringJSONSchemaHints {
|
|
11
|
+
minLength?: number;
|
|
12
|
+
maxLength?: number;
|
|
13
|
+
exactLength?: number;
|
|
14
|
+
format?: string;
|
|
15
|
+
pattern?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Metadata for a single string constraint, enabling Zod 4-compatible issues.
|
|
19
|
+
*/
|
|
20
|
+
interface StringCheckMeta {
|
|
21
|
+
readonly kind: 'min' | 'max' | 'length' | 'format' | 'regex' | 'other';
|
|
22
|
+
readonly value?: number;
|
|
23
|
+
readonly format?: string;
|
|
24
|
+
readonly pattern?: string;
|
|
25
|
+
readonly message: string | undefined;
|
|
26
|
+
}
|
|
10
27
|
/**
|
|
11
28
|
* Configuration for string validator
|
|
12
29
|
*/
|
|
13
30
|
interface StringValidatorConfig {
|
|
14
31
|
readonly checks: ReadonlyArray<StringCheck>;
|
|
15
32
|
readonly transforms: ReadonlyArray<StringTransform>;
|
|
16
|
-
readonly errorMessage
|
|
33
|
+
readonly errorMessage: string | undefined;
|
|
34
|
+
readonly validatorType?: ValidatorType;
|
|
35
|
+
readonly jsonSchema: StringJSONSchemaHints | undefined;
|
|
36
|
+
readonly checkMetas: ReadonlyArray<StringCheckMeta> | undefined;
|
|
17
37
|
}
|
|
18
38
|
/**
|
|
19
39
|
* Immutable string validator with chainable methods
|
|
@@ -21,28 +41,41 @@ interface StringValidatorConfig {
|
|
|
21
41
|
*/
|
|
22
42
|
export declare class VldString extends VldBase<string, string> {
|
|
23
43
|
protected readonly config: StringValidatorConfig;
|
|
24
|
-
private
|
|
44
|
+
private readonly _checks;
|
|
45
|
+
private readonly _transforms;
|
|
46
|
+
private readonly _isSimple;
|
|
47
|
+
private readonly _checkMetas;
|
|
25
48
|
/**
|
|
26
49
|
* Protected constructor to allow extension while maintaining immutability
|
|
27
50
|
*/
|
|
28
51
|
protected constructor(config?: Partial<StringValidatorConfig>);
|
|
29
52
|
/**
|
|
30
|
-
*
|
|
31
|
-
|
|
53
|
+
* Create a new string validator
|
|
54
|
+
*/
|
|
55
|
+
static create(): VldString;
|
|
56
|
+
/**
|
|
57
|
+
* Returns true if this is a simple string validator with no transforms or checks
|
|
58
|
+
* Used by VldObject for optimized fast-path dispatch
|
|
32
59
|
*/
|
|
33
|
-
|
|
60
|
+
get isSimple(): boolean;
|
|
34
61
|
/**
|
|
35
|
-
*
|
|
62
|
+
* Build the Zod 4-compatible VldIssue for a failed check at the given index.
|
|
36
63
|
*/
|
|
37
|
-
private
|
|
64
|
+
private _createCheckIssue;
|
|
38
65
|
/**
|
|
39
|
-
*
|
|
66
|
+
* Run all checks against a known string and return the first failing meta, or null.
|
|
40
67
|
*/
|
|
41
|
-
|
|
68
|
+
private _runChecks;
|
|
69
|
+
private _fallbackMeta;
|
|
42
70
|
/**
|
|
43
|
-
* Parse and validate a string value
|
|
71
|
+
* Parse and validate a string value without allocating intermediate result objects.
|
|
44
72
|
*/
|
|
45
73
|
parse(value: unknown): string;
|
|
74
|
+
/**
|
|
75
|
+
* Parse a value that has already passed the string type guard.
|
|
76
|
+
* @internal Used by object validators to avoid duplicate hot-path checks.
|
|
77
|
+
*/
|
|
78
|
+
parseKnownString(value: string): string;
|
|
46
79
|
/**
|
|
47
80
|
* Safely parse and validate a string value
|
|
48
81
|
*/
|
|
@@ -50,31 +83,53 @@ export declare class VldString extends VldBase<string, string> {
|
|
|
50
83
|
/**
|
|
51
84
|
* Create a new validator with minimum length constraint
|
|
52
85
|
*/
|
|
53
|
-
min(length: number, message?:
|
|
86
|
+
min(length: number, message?: ErrorParam): VldString;
|
|
54
87
|
/**
|
|
55
88
|
* Create a new validator with maximum length constraint
|
|
56
89
|
*/
|
|
57
|
-
max(length: number, message?:
|
|
90
|
+
max(length: number, message?: ErrorParam): VldString;
|
|
58
91
|
/**
|
|
59
92
|
* Create a new validator with exact length constraint
|
|
60
93
|
*/
|
|
61
|
-
length(length: number, message?:
|
|
94
|
+
length(length: number, message?: ErrorParam): VldString;
|
|
62
95
|
/**
|
|
63
96
|
* Create a new validator that checks for valid email format
|
|
64
97
|
*/
|
|
65
|
-
email(message?:
|
|
98
|
+
email(message?: ErrorParam): VldString;
|
|
66
99
|
/**
|
|
67
100
|
* Create a new validator that checks for valid URL format
|
|
68
101
|
*/
|
|
69
|
-
url(message?:
|
|
102
|
+
url(message?: ErrorParam): VldString;
|
|
70
103
|
/**
|
|
71
104
|
* Create a new validator that checks for valid UUID format
|
|
72
105
|
*/
|
|
73
|
-
uuid(message?:
|
|
106
|
+
uuid(message?: ErrorParam): VldString;
|
|
107
|
+
private format;
|
|
108
|
+
uuidv4(message?: ErrorParam): VldString;
|
|
109
|
+
uuidv6(message?: ErrorParam): VldString;
|
|
110
|
+
uuidv7(message?: ErrorParam): VldString;
|
|
111
|
+
emoji(message?: ErrorParam): VldString;
|
|
112
|
+
base64(message?: ErrorParam): VldString;
|
|
113
|
+
base64url(message?: ErrorParam): VldString;
|
|
114
|
+
jwt(message?: ErrorParam): VldString;
|
|
115
|
+
nanoid(message?: ErrorParam): VldString;
|
|
116
|
+
cuid(message?: ErrorParam): VldString;
|
|
117
|
+
cuid2(message?: ErrorParam): VldString;
|
|
118
|
+
ulid(message?: ErrorParam): VldString;
|
|
119
|
+
cidrv4(message?: ErrorParam): VldString;
|
|
120
|
+
cidrv6(message?: ErrorParam): VldString;
|
|
121
|
+
e164(message?: ErrorParam): VldString;
|
|
122
|
+
xid(message?: ErrorParam): VldString;
|
|
123
|
+
guid(message?: ErrorParam): VldString;
|
|
124
|
+
ksuid(message?: ErrorParam): VldString;
|
|
125
|
+
date(message?: ErrorParam): VldString;
|
|
126
|
+
time(message?: ErrorParam): VldString;
|
|
127
|
+
datetime(message?: ErrorParam): VldString;
|
|
128
|
+
duration(message?: ErrorParam): VldString;
|
|
74
129
|
/**
|
|
75
130
|
* Create a new validator with regex pattern matching
|
|
76
131
|
*/
|
|
77
|
-
regex(pattern: RegExp, message?:
|
|
132
|
+
regex(pattern: RegExp, message?: ErrorParam): VldString;
|
|
78
133
|
/**
|
|
79
134
|
* Create a new validator that trims whitespace
|
|
80
135
|
*/
|
|
@@ -83,38 +138,41 @@ export declare class VldString extends VldBase<string, string> {
|
|
|
83
138
|
* Create a new validator that converts to lowercase
|
|
84
139
|
*/
|
|
85
140
|
toLowerCase(): VldString;
|
|
141
|
+
lowercase(): VldString;
|
|
86
142
|
/**
|
|
87
143
|
* Create a new validator that converts to uppercase
|
|
88
144
|
*/
|
|
89
145
|
toUpperCase(): VldString;
|
|
146
|
+
uppercase(): VldString;
|
|
147
|
+
normalize(form?: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): VldString;
|
|
148
|
+
slugify(): VldString;
|
|
90
149
|
/**
|
|
91
150
|
* Create a new validator that checks if string starts with a substring
|
|
92
151
|
*/
|
|
93
|
-
startsWith(str: string, message?:
|
|
152
|
+
startsWith(str: string, message?: ErrorParam): VldString;
|
|
94
153
|
/**
|
|
95
154
|
* Create a new validator that checks if string ends with a substring
|
|
96
155
|
*/
|
|
97
|
-
endsWith(str: string, message?:
|
|
156
|
+
endsWith(str: string, message?: ErrorParam): VldString;
|
|
98
157
|
/**
|
|
99
158
|
* Create a new validator that checks if string includes a substring
|
|
100
159
|
*/
|
|
101
|
-
includes(str: string, message?:
|
|
160
|
+
includes(str: string, message?: ErrorParam): VldString;
|
|
102
161
|
/**
|
|
103
162
|
* Create a new validator that checks for valid IP address (v4 or v6)
|
|
104
163
|
*/
|
|
105
|
-
ip(message?:
|
|
164
|
+
ip(message?: ErrorParam): VldString;
|
|
106
165
|
/**
|
|
107
166
|
* Create a new validator that checks for valid IPv4 address
|
|
108
167
|
*/
|
|
109
|
-
ipv4(message?:
|
|
168
|
+
ipv4(message?: ErrorParam): VldString;
|
|
110
169
|
/**
|
|
111
170
|
* Create a new validator that checks for valid IPv6 address
|
|
112
171
|
*/
|
|
113
|
-
ipv6(message?:
|
|
172
|
+
ipv6(message?: ErrorParam): VldString;
|
|
114
173
|
/**
|
|
115
174
|
* Create a new validator that ensures string is not empty
|
|
116
175
|
*/
|
|
117
|
-
nonempty(message?:
|
|
176
|
+
nonempty(message?: ErrorParam): VldString;
|
|
118
177
|
}
|
|
119
178
|
export {};
|
|
120
|
-
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as s,VLD_VALIDATOR_TYPES as e,resolveErrorMessage as t}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{i}from"../chunks/ip-validation-g5LWgy9t.js";import{V as n,c as a,g as c}from"../chunks/errors-core-Cqi4-9ew.js";const o={email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,url:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,uuidv4:/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv6:/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv7:/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,emoji:/^(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200D(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*$/u,base64:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,base64url:/^[A-Za-z0-9_-]*$/,jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,nanoid:/^[A-Za-z0-9_-]{21}$/,cuid:/^c[^\s-]{8,}$/i,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,cidrv4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$/,cidrv6:/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^(?:[0-9a-fA-F]{1,4}:){1,7}:\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,e164:/^\+[1-9]\d{1,14}$/,xid:/^[A-HJKMNP-TV-Z0-9]{20}$/,guid:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i,ksuid:/^[0-9A-Za-z]{27}$/,isoDate:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/,isoTime:/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?$/,isoDateTime:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?Z?$/,isoDuration:/^-?P(?!$)(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?=\d)(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$/};class VldString extends s{constructor(s){super(s?.validatorType||e.STRING),this.config={checks:s?.checks||[],transforms:s?.transforms||[],errorMessage:s?.errorMessage,jsonSchema:s?.jsonSchema,checkMetas:s?.checkMetas},this._checks=this.config.checks,this._transforms=this.config.transforms,this._isSimple=0===this._checks.length&&0===this._transforms.length,this._checkMetas=this.config.checkMetas}static create(){return new VldString}get isSimple(){return this._isSimple}_createCheckIssue(s){switch(s.kind){case"min":return{code:"too_small",path:[],origin:"string",minimum:s.value,inclusive:!0,message:s.message||`Too small: expected string to have >=${s.value} characters`};case"max":return{code:"too_big",path:[],origin:"string",maximum:s.value,inclusive:!0,message:s.message||`Too big: expected string to have <=${s.value} characters`};case"length":return{code:"too_big",path:[],origin:"string",exact:s.value,message:s.message||`Too big: expected string to have exactly ${s.value} characters`};case"format":{const e={code:"invalid_format",path:[],origin:"string",format:s.format,message:s.message||`Invalid ${s.format}`};return void 0!==s.pattern&&(e.pattern=s.pattern),e}case"regex":{const e={code:"invalid_format",path:[],origin:"string",format:"regex",message:s.message||"Invalid string: does not match pattern"};return void 0!==s.pattern&&(e.pattern=s.pattern),e}default:return{code:"custom",path:[],message:s.message||"Invalid string"}}}_runChecks(s){const e=this._checks,t=this._checkMetas;for(let r=0;r<e.length;r++)if(!e[r](s))return t?.[r]??this._fallbackMeta();return null}_fallbackMeta(){return{kind:"other",message:this.config.errorMessage}}parse(s){if("string"!=typeof s)throw new n([a("string",c(s),this.config.errorMessage)]);return this._isSimple?s:this.parseKnownString(s)}parseKnownString(s){if(this._isSimple)return s;const e=this._transforms;let t=s;switch(e.length){case 0:break;case 1:t=e[0](t);break;case 2:t=e[1](e[0](t));break;case 3:t=e[2](e[1](e[0](t)));break;default:for(let s=0;s<e.length;s++)t=e[s](t)}const r=this._runChecks(t);if(r)throw new n([this._createCheckIssue(r)]);return t}safeParse(s){if("string"!=typeof s)return{success:!1,error:new n([a("string",c(s),this.config.errorMessage)])};if(this._isSimple)return{success:!0,data:s};try{return{success:!0,data:this.parseKnownString(s)}}catch(s){return s instanceof n?{success:!1,error:s}:{success:!1,error:(e=s.message,new n([{code:"invalid_string",path:[],message:e}]))}}var e}min(s,e){return new VldString({checks:[...this.config.checks,e=>e.length>=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMin(s)),jsonSchema:{...this.config.jsonSchema,minLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:s,message:t(e,r().stringMin(s))}]})}max(s,e){return new VldString({checks:[...this.config.checks,e=>e.length<=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMax(s)),jsonSchema:{...this.config.jsonSchema,maxLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"max",value:s,message:t(e,r().stringMax(s))}]})}length(s,e){return new VldString({checks:[...this.config.checks,e=>e.length===s],transforms:this.config.transforms,errorMessage:t(e,r().stringLength(s)),jsonSchema:{...this.config.jsonSchema,exactLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"length",value:s,message:t(e,r().stringLength(s))}]})}email(s){return new VldString({checks:[...this.config.checks,s=>o.email.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringEmail),jsonSchema:{...this.config.jsonSchema,format:"email"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"email",message:t(s,r().stringEmail)}]})}url(s){return new VldString({checks:[...this.config.checks,s=>o.url.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUrl),jsonSchema:{...this.config.jsonSchema,format:"uri"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"url",message:t(s,r().stringUrl)}]})}uuid(s){return new VldString({checks:[...this.config.checks,s=>o.uuid.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUuid),jsonSchema:{...this.config.jsonSchema,format:"uuid"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"uuid",message:t(s,r().stringUuid)}]})}format(s,e,r){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(r,`Invalid ${e}`),jsonSchema:{...this.config.jsonSchema,format:e,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:e,pattern:s.source,message:t(r,`Invalid ${e}`)}]})}uuidv4(s){return this.format(o.uuidv4,"uuid",s)}uuidv6(s){return this.format(o.uuidv6,"uuid",s)}uuidv7(s){return this.format(o.uuidv7,"uuid",s)}emoji(s){return this.format(o.emoji,"emoji",s)}base64(s){return this.format(o.base64,"base64",s)}base64url(s){return this.format(o.base64url,"base64url",s)}jwt(s){return this.format(o.jwt,"jwt",s)}nanoid(s){return this.format(o.nanoid,"nanoid",s)}cuid(s){return this.format(o.cuid,"cuid",s)}cuid2(s){return this.format(o.cuid2,"cuid2",s)}ulid(s){return this.format(o.ulid,"ulid",s)}cidrv4(s){return this.format(o.cidrv4,"cidrv4",s)}cidrv6(s){return this.format(o.cidrv6,"cidrv6",s)}e164(s){return this.format(o.e164,"e164",s)}xid(s){return this.format(o.xid,"xid",s)}guid(s){return this.format(o.guid,"guid",s)}ksuid(s){return this.format(o.ksuid,"ksuid",s)}date(s){return this.format(o.isoDate,"date",s)}time(s){return this.format(o.isoTime,"time",s)}datetime(s){return this.format(o.isoDateTime,"datetime",s)}duration(s){return this.format(o.isoDuration,"duration",s)}regex(s,e){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(e,r().stringRegex),jsonSchema:{...this.config.jsonSchema,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"regex",pattern:s.source,message:t(e,r().stringRegex)}]})}trim(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.trim()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}toLowerCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}lowercase(){return this.toLowerCase()}toUpperCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toUpperCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}uppercase(){return this.toUpperCase()}normalize(s){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,e=>e.normalize(s)],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}slugify(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}startsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.startsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringStartsWith(s)),jsonSchema:this.config.jsonSchema})}endsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.endsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringEndsWith(s)),jsonSchema:this.config.jsonSchema})}includes(s,e){return new VldString({checks:[...this.config.checks,e=>e.includes(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringIncludes(s)),jsonSchema:this.config.jsonSchema})}ip(s){return new VldString({checks:[...this.config.checks,s=>!(s.length>100)&&(o.ipv4.test(s)||i(s))],transforms:this.config.transforms,errorMessage:t(s,r().stringIp),jsonSchema:{...this.config.jsonSchema,format:"ip"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ip",message:t(s,r().stringIp)}]})}ipv4(s){return new VldString({checks:[...this.config.checks,s=>o.ipv4.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv4),jsonSchema:{...this.config.jsonSchema,format:"ipv4"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv4",message:t(s,r().stringIpv4)}]})}ipv6(s){return new VldString({checks:[...this.config.checks,s=>i(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv6),jsonSchema:{...this.config.jsonSchema,format:"ipv6"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv6",message:t(s,r().stringIpv6)}]})}nonempty(s){return new VldString({checks:[...this.config.checks,s=>s.length>0],transforms:this.config.transforms,errorMessage:t(s,r().stringEmpty),jsonSchema:{...this.config.jsonSchema,minLength:Math.max(this.config.jsonSchema?.minLength||0,1)},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:1,message:t(s,r().stringEmpty)}]})}}export{VldString};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
1
|
+
import { VldBase, ParseResult } from './base.js';
|
|
2
2
|
/**
|
|
3
3
|
* Immutable symbol validator
|
|
4
4
|
*/
|
|
5
5
|
export declare class VldSymbol extends VldBase<symbol, symbol> {
|
|
6
|
-
private readonly errorMessage
|
|
6
|
+
private readonly errorMessage;
|
|
7
7
|
/**
|
|
8
8
|
* Private constructor to enforce immutability
|
|
9
9
|
*/
|
|
@@ -12,13 +12,18 @@ export declare class VldSymbol extends VldBase<symbol, symbol> {
|
|
|
12
12
|
* Create a new symbol validator
|
|
13
13
|
*/
|
|
14
14
|
static create(): VldSymbol;
|
|
15
|
+
get isSimple(): boolean;
|
|
15
16
|
/**
|
|
16
17
|
* Parse and validate a symbol value
|
|
17
18
|
*/
|
|
18
19
|
parse(value: unknown): symbol;
|
|
20
|
+
/**
|
|
21
|
+
* Parse a value that has already passed the symbol type guard.
|
|
22
|
+
* @internal Used by object validators to avoid duplicate hot-path checks.
|
|
23
|
+
*/
|
|
24
|
+
parseKnownSymbol(value: symbol): symbol;
|
|
19
25
|
/**
|
|
20
26
|
* Safely parse and validate a symbol value
|
|
21
27
|
*/
|
|
22
28
|
safeParse(value: unknown): ParseResult<symbol>;
|
|
23
29
|
}
|
|
24
|
-
//# sourceMappingURL=symbol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as r,VLD_VALIDATOR_TYPES as e}from"./base.js";import{getMessages as s}from"../locales/runtime.js";import{V as o}from"../chunks/errors-core-Cqi4-9ew.js";class VldSymbol extends r{constructor(r){super(e.SYMBOL),this.errorMessage=r}static create(){return new VldSymbol}get isSimple(){return!0}parse(r){if("symbol"!=typeof r)throw new Error(this.errorMessage||s().invalidSymbol);return r}parseKnownSymbol(r){return r}safeParse(r){return"symbol"==typeof r?{success:!0,data:r}:{success:!1,error:(e=this.errorMessage||s().invalidSymbol,new o([{code:"invalid_type",path:[],message:e}]))};var e}}export{VldSymbol};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
1
|
+
import { VldBase, ParseResult } from './base.js';
|
|
2
2
|
/**
|
|
3
3
|
* Template literal component types
|
|
4
4
|
*/
|
|
@@ -29,4 +29,3 @@ export declare class VldTemplateLiteral extends VldBase<unknown, string> {
|
|
|
29
29
|
*/
|
|
30
30
|
export declare function templateLiteral(...components: TLComponent[]): VldTemplateLiteral;
|
|
31
31
|
export {};
|
|
32
|
-
//# sourceMappingURL=template-literal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{getMessages as t}from"../locales/runtime.js";class VldTemplateLiteral extends e{constructor(e){super(r.TEMPLATE_LITERAL),this.pattern=e}static create(...e){let r="^";for(const t of e)r+="string"==typeof t?t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):a(t);return r+="$",new VldTemplateLiteral(new RegExp(r))}parse(e){if("string"!=typeof e)throw new Error(t().invalidString);if(!this.pattern.test(e))throw new Error(t().stringPatternInvalid);return e}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:e}}}}function a(e){switch(e.validatorType){case r.STRING:case r.STRING_FORMAT:return"(.+)";case r.NUMBER:case r.COERCE_NUMBER:return"(-?\\d+(?:\\.\\d+)?)";case r.BIGINT:case r.COERCE_BIGINT:return"(-?\\d+)";case r.BOOLEAN:case r.COERCE_BOOLEAN:return"(true|false)";case r.NULL:return"(null)";case r.UNDEFINED:case r.VOID:return"(undefined)";case r.LITERAL:{const r=e;if(void 0!==r.literal){return"("+String(r.literal).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+")"}break}}return"(.+)"}function s(...e){return VldTemplateLiteral.create(...e)}export{VldTemplateLiteral,s as templateLiteral};
|
|
@@ -1,31 +1,48 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
1
|
+
import { VldBase, ParseResult } from './base.js';
|
|
2
|
+
type FixedTupleOutput<T extends readonly VldBase<any, any>[]> = {
|
|
3
|
+
-readonly [K in keyof T]: ReturnType<T[K]['parse']>;
|
|
4
|
+
};
|
|
5
|
+
type TupleOutput<T extends readonly VldBase<any, any>[], TRest extends VldBase<any, any> | null> = TRest extends VldBase<any, any> ? [...FixedTupleOutput<T>, ...ReturnType<TRest['parse']>[]] : FixedTupleOutput<T>;
|
|
2
6
|
/**
|
|
3
7
|
* Immutable tuple validator for fixed-length arrays
|
|
4
8
|
*/
|
|
5
|
-
export declare class VldTuple<T extends readonly VldBase<any, any>[]> extends VldBase<unknown, {
|
|
6
|
-
[K in keyof T]: T[K] extends VldBase<any, infer U> ? U : never;
|
|
7
|
-
}> {
|
|
9
|
+
export declare class VldTuple<T extends readonly VldBase<any, any>[], TRest extends VldBase<any, any> | null = null> extends VldBase<unknown, TupleOutput<T, TRest>> {
|
|
8
10
|
private readonly validators;
|
|
9
11
|
private readonly errorMessage?;
|
|
12
|
+
private readonly restValidator;
|
|
10
13
|
/**
|
|
11
14
|
* Private constructor to enforce immutability
|
|
12
15
|
*/
|
|
16
|
+
private readonly _length;
|
|
17
|
+
private readonly _validatorTypes;
|
|
18
|
+
private readonly _simpleItemModes;
|
|
19
|
+
private readonly _simpleItemValues;
|
|
13
20
|
private constructor();
|
|
21
|
+
get items(): T;
|
|
22
|
+
private getSimpleItemMode;
|
|
23
|
+
private getSimpleItemError;
|
|
14
24
|
/**
|
|
15
25
|
* Create a new tuple validator
|
|
16
26
|
*/
|
|
17
|
-
static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldTuple<T>;
|
|
27
|
+
static create<T extends readonly VldBase<any, any>[]>(...validators: T): VldTuple<T, null>;
|
|
28
|
+
rest<TSchema extends VldBase<any, any>>(validator: TSchema): VldTuple<T, TSchema>;
|
|
18
29
|
/**
|
|
19
30
|
* Parse and validate a tuple value
|
|
20
31
|
*/
|
|
21
|
-
parse(value: unknown):
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
parse(value: unknown): TupleOutput<T, TRest>;
|
|
33
|
+
/**
|
|
34
|
+
* Parse a value that has already passed the tuple array type guard.
|
|
35
|
+
* @internal Used by object validators to avoid duplicate hot-path checks.
|
|
36
|
+
*/
|
|
37
|
+
parseKnownTuple(value: unknown[]): TupleOutput<T, TRest>;
|
|
24
38
|
/**
|
|
25
39
|
* Safely parse and validate a tuple value
|
|
26
40
|
*/
|
|
27
|
-
safeParse(value: unknown): ParseResult<
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
safeParse(value: unknown): ParseResult<TupleOutput<T, TRest>>;
|
|
42
|
+
encode(value: TupleOutput<T, TRest>): unknown;
|
|
43
|
+
safeEncode(value: TupleOutput<T, TRest>): ParseResult<unknown>;
|
|
44
|
+
encodeAsync(value: TupleOutput<T, TRest>): Promise<unknown>;
|
|
45
|
+
safeEncodeAsync(value: TupleOutput<T, TRest>): Promise<ParseResult<unknown>>;
|
|
46
|
+
private validateEncodedLength;
|
|
30
47
|
}
|
|
31
|
-
|
|
48
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{getMessages as t}from"../locales/runtime.js";import{V as s}from"../chunks/errors-core-Cqi4-9ew.js";function i(e){return new s([{code:"invalid_array",path:[],message:e}])}class VldTuple extends e{constructor(e,t,s=null){super(r.TUPLE),this.validators=e,this.errorMessage=t,this.restValidator=s,this._length=e.length,this._validatorTypes=e.map(e=>e.validatorType),this._simpleItemModes=e.map((e,r)=>this.getSimpleItemMode(e,this._validatorTypes[r])),this._simpleItemValues=e.map((e,r)=>"literal"===this._simpleItemModes[r]?e.literal:void 0)}get items(){return this.validators}getSimpleItemMode(e,t){if(!0===e.isSimple)switch(t){case r.STRING:return"string";case r.NUMBER:return"number";case r.BOOLEAN:return"boolean";case r.BIGINT:return"bigint";case r.SYMBOL:return"symbol";case r.NULL:return"null";case r.UNDEFINED:case r.VOID:return"undefinedValue";case r.LITERAL:return"literal";case r.ANY:case r.UNKNOWN:return"passthrough";default:return}}getSimpleItemError(e,r,s){switch(e){case"string":return t().invalidString;case"number":return t().invalidNumber;case"boolean":return t().invalidBoolean;case"bigint":return t().invalidBigint;case"symbol":return t().invalidSymbol;case"null":return"Expected null, received "+typeof s;case"undefinedValue":return t().expectedUndefined;case"literal":return t().literalExpected(JSON.stringify(r),JSON.stringify(s));default:return t().invalidTuple}}static create(...e){return new VldTuple(e)}rest(e){return new VldTuple(this.validators,this.errorMessage,e)}parse(e){if(!Array.isArray(e))throw new Error(this.errorMessage||t().invalidTuple);return this.parseKnownTuple(e)}parseKnownTuple(e){if(null===this.restValidator&&e.length!==this._length||null!==this.restValidator&&e.length<this._length)throw new Error(this.errorMessage||t().tupleLength(this._length,e.length));const r=new Array(e.length);for(let s=0;s<this._length;s++){const i=this._simpleItemModes[s],n=e[s];if(void 0!==i)switch(i){case"string":if("string"!=typeof n)throw new Error(t().arrayItem(s,t().invalidString));r[s]=n;continue;case"number":if("number"!=typeof n||isNaN(n))throw new Error(t().arrayItem(s,t().invalidNumber));r[s]=n;continue;case"boolean":if("boolean"!=typeof n)throw new Error(t().arrayItem(s,t().invalidBoolean));r[s]=n;continue;case"bigint":if("bigint"!=typeof n)throw new Error(t().arrayItem(s,t().invalidBigint));r[s]=n;continue;case"symbol":if("symbol"!=typeof n)throw new Error(t().arrayItem(s,t().invalidSymbol));r[s]=n;continue;case"null":if(null!==n)throw new Error(t().arrayItem(s,this.getSimpleItemError(i,void 0,n)));r[s]=null;continue;case"undefinedValue":if(void 0!==n)throw new Error(t().arrayItem(s,t().expectedUndefined));r[s]=void 0;continue;case"literal":{const e=this._simpleItemValues[s];if(n!==e)throw new Error(t().arrayItem(s,this.getSimpleItemError(i,e,n)));r[s]=e;continue}case"passthrough":r[s]=n;continue}try{const e=this.validators[s];r[s]=e.parse(n)}catch(e){throw new Error(t().arrayItem(s,e.message))}}if(this.restValidator)for(let s=this._length;s<e.length;s++)try{r[s]=this.restValidator.parse(e[s])}catch(e){throw new Error(t().arrayItem(s,e.message))}return r}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:i(e.message)}}}encode(e){if(!Array.isArray(e))throw new Error(this.errorMessage||t().invalidTuple);this.validateEncodedLength(e.length);const r=new Array(e.length);for(let t=0;t<this._length;t++)r[t]=this.validators[t].encode(e[t]);if(this.restValidator)for(let t=this._length;t<e.length;t++)r[t]=this.restValidator.encode(e[t]);return r}safeEncode(e){try{return{success:!0,data:this.encode(e)}}catch(e){return{success:!1,error:i(e.message)}}}async encodeAsync(e){if(!Array.isArray(e))throw new Error(this.errorMessage||t().invalidTuple);this.validateEncodedLength(e.length);const r=new Array(e.length);for(let t=0;t<this._length;t++)r[t]=await this.validators[t].encodeAsync(e[t]);if(this.restValidator)for(let t=this._length;t<e.length;t++)r[t]=await this.restValidator.encodeAsync(e[t]);return r}async safeEncodeAsync(e){try{return{success:!0,data:await this.encodeAsync(e)}}catch(e){return{success:!1,error:i(e.message)}}}validateEncodedLength(e){if(null===this.restValidator&&e!==this._length||null!==this.restValidator&&e<this._length)throw new Error(this.errorMessage||t().tupleLength(this._length,e))}}export{VldTuple};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { VldBase, ParseResult } from './base';
|
|
1
|
+
import { VldBase, ParseResult } from './base.js';
|
|
2
2
|
/**
|
|
3
3
|
* Configuration for Uint8Array validator
|
|
4
4
|
* BUG-NEW-010 FIX: Use config object pattern for immutability
|
|
5
5
|
*/
|
|
6
6
|
interface Uint8ArrayValidatorConfig {
|
|
7
|
-
readonly minLength?: number;
|
|
8
|
-
readonly maxLength?: number;
|
|
7
|
+
readonly minLength?: number | undefined;
|
|
8
|
+
readonly maxLength?: number | undefined;
|
|
9
9
|
readonly exactLength?: number;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
@@ -39,4 +39,3 @@ export declare class VldUint8Array extends VldBase<Uint8Array, Uint8Array> {
|
|
|
39
39
|
static create(): VldUint8Array;
|
|
40
40
|
}
|
|
41
41
|
export {};
|
|
42
|
-
//# sourceMappingURL=uint8array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as t,VLD_VALIDATOR_TYPES as r}from"./base.js";import{createIssue as n}from"../errors.js";import{getMessages as e}from"../locales/runtime.js";import{V as i}from"../chunks/errors-core-Cqi4-9ew.js";class VldUint8Array extends t{constructor(t){super(r.UINT8_ARRAY),this.config=t||{}}parse(t){const r=this.safeParse(t);if(!r.success)throw r.error;return r.data}safeParse(t){return t instanceof Uint8Array?void 0!==this.config.exactLength&&t.length!==this.config.exactLength?{success:!1,error:new i([n("custom",[],e().uint8ArrayExactLength(this.config.exactLength))])}:void 0!==this.config.minLength&&t.length<this.config.minLength?{success:!1,error:new i([n("custom",[],e().uint8ArrayMinLength(this.config.minLength))])}:void 0!==this.config.maxLength&&t.length>this.config.maxLength?{success:!1,error:new i([n("custom",[],e().uint8ArrayMaxLength(this.config.maxLength))])}:{success:!0,data:t}:{success:!1,error:new i([n("invalid_type",[],e().expectedUint8Array)])}}min(t){return new VldUint8Array({...this.config,minLength:t})}max(t){return new VldUint8Array({...this.config,maxLength:t})}length(t){return new VldUint8Array({exactLength:t,minLength:void 0,maxLength:void 0})}static create(){return new VldUint8Array}}export{VldUint8Array};
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* VldUndefined - Validates that a value is exactly undefined
|
|
3
3
|
* Part of Zod 4 API parity implementation
|
|
4
4
|
*/
|
|
5
|
-
import { VldBase } from './base';
|
|
6
|
-
import type { ParseResult } from './base';
|
|
5
|
+
import { VldBase } from './base.js';
|
|
6
|
+
import type { ParseResult } from './base.js';
|
|
7
7
|
/**
|
|
8
8
|
* Undefined validator - validates that a value is exactly undefined
|
|
9
9
|
*/
|
|
10
10
|
export declare class VldUndefined extends VldBase<unknown, undefined> {
|
|
11
11
|
private constructor();
|
|
12
12
|
static create(): VldUndefined;
|
|
13
|
+
get isSimple(): boolean;
|
|
13
14
|
parse(value: unknown): undefined;
|
|
14
15
|
safeParse(value: unknown): ParseResult<undefined>;
|
|
15
16
|
}
|
|
16
|
-
//# sourceMappingURL=undefined.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{VldBase as e,VLD_VALIDATOR_TYPES as r}from"./base.js";import{V as s}from"../chunks/errors-core-Cqi4-9ew.js";class VldUndefined extends e{constructor(){super(r.UNDEFINED)}static create(){return new VldUndefined}get isSimple(){return!0}parse(e){if(void 0!==e)throw new Error("Expected undefined, received "+typeof e)}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:(r=e.message,new s([{code:"invalid_type",path:[],message:r}]))}}var r}}export{VldUndefined};
|