@warlock.js/seal 3.0.14
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/README.md +373 -0
- package/cjs/config.d.ts +48 -0
- package/cjs/config.d.ts.map +1 -0
- package/cjs/config.js +42 -0
- package/cjs/config.js.map +1 -0
- package/cjs/factory/index.d.ts +3 -0
- package/cjs/factory/index.d.ts.map +1 -0
- package/cjs/factory/validate.d.ts +8 -0
- package/cjs/factory/validate.d.ts.map +1 -0
- package/cjs/factory/validate.js +21 -0
- package/cjs/factory/validate.js.map +1 -0
- package/cjs/factory/validators.d.ts +32 -0
- package/cjs/factory/validators.d.ts.map +1 -0
- package/cjs/factory/validators.js +38 -0
- package/cjs/factory/validators.js.map +1 -0
- package/cjs/helpers/date-helpers.d.ts +16 -0
- package/cjs/helpers/date-helpers.d.ts.map +1 -0
- package/cjs/helpers/date-helpers.js +25 -0
- package/cjs/helpers/date-helpers.js.map +1 -0
- package/cjs/helpers/get-field-value.d.ts +37 -0
- package/cjs/helpers/get-field-value.d.ts.map +1 -0
- package/cjs/helpers/get-field-value.js +40 -0
- package/cjs/helpers/get-field-value.js.map +1 -0
- package/cjs/helpers/index.d.ts +5 -0
- package/cjs/helpers/index.d.ts.map +1 -0
- package/cjs/helpers/path-helpers.d.ts +5 -0
- package/cjs/helpers/path-helpers.d.ts.map +1 -0
- package/cjs/helpers/path-helpers.js +8 -0
- package/cjs/helpers/path-helpers.js.map +1 -0
- package/cjs/helpers/validation-helpers.d.ts +4 -0
- package/cjs/helpers/validation-helpers.d.ts.map +1 -0
- package/cjs/helpers/validation-helpers.js +39 -0
- package/cjs/helpers/validation-helpers.js.map +1 -0
- package/cjs/index.d.ts +29 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/mutators/array-mutators.d.ts +12 -0
- package/cjs/mutators/array-mutators.d.ts.map +1 -0
- package/cjs/mutators/array-mutators.js +37 -0
- package/cjs/mutators/array-mutators.js.map +1 -0
- package/cjs/mutators/date-mutators.d.ts +39 -0
- package/cjs/mutators/date-mutators.d.ts.map +1 -0
- package/cjs/mutators/date-mutators.js +120 -0
- package/cjs/mutators/date-mutators.js.map +1 -0
- package/cjs/mutators/index.d.ts +6 -0
- package/cjs/mutators/index.d.ts.map +1 -0
- package/cjs/mutators/number-mutators.d.ts +8 -0
- package/cjs/mutators/number-mutators.d.ts.map +1 -0
- package/cjs/mutators/number-mutators.js +18 -0
- package/cjs/mutators/number-mutators.js.map +1 -0
- package/cjs/mutators/object-mutators.d.ts +8 -0
- package/cjs/mutators/object-mutators.d.ts.map +1 -0
- package/cjs/mutators/object-mutators.js +50 -0
- package/cjs/mutators/object-mutators.js.map +1 -0
- package/cjs/mutators/string-mutators.d.ts +72 -0
- package/cjs/mutators/string-mutators.d.ts.map +1 -0
- package/cjs/mutators/string-mutators.js +193 -0
- package/cjs/mutators/string-mutators.js.map +1 -0
- package/cjs/plugins/index.d.ts +7 -0
- package/cjs/plugins/index.d.ts.map +1 -0
- package/cjs/plugins/plugin-system.d.ts +71 -0
- package/cjs/plugins/plugin-system.d.ts.map +1 -0
- package/cjs/plugins/plugin-system.js +68 -0
- package/cjs/plugins/plugin-system.js.map +1 -0
- package/cjs/rules/array/array-rules.d.ts +12 -0
- package/cjs/rules/array/array-rules.d.ts.map +1 -0
- package/cjs/rules/array/array-rules.js +44 -0
- package/cjs/rules/array/array-rules.js.map +1 -0
- package/cjs/rules/array/index.d.ts +2 -0
- package/cjs/rules/array/index.d.ts.map +1 -0
- package/cjs/rules/color/color-rules.d.ts +30 -0
- package/cjs/rules/color/color-rules.d.ts.map +1 -0
- package/cjs/rules/color/color-rules.js +120 -0
- package/cjs/rules/color/color-rules.js.map +1 -0
- package/cjs/rules/color/index.d.ts +2 -0
- package/cjs/rules/color/index.d.ts.map +1 -0
- package/cjs/rules/common/enum.d.ts +26 -0
- package/cjs/rules/common/enum.d.ts.map +1 -0
- package/cjs/rules/common/enum.js +55 -0
- package/cjs/rules/common/enum.js.map +1 -0
- package/cjs/rules/common/equals-field-rules.d.ts +18 -0
- package/cjs/rules/common/equals-field-rules.d.ts.map +1 -0
- package/cjs/rules/common/equals-field-rules.js +38 -0
- package/cjs/rules/common/equals-field-rules.js.map +1 -0
- package/cjs/rules/common/index.d.ts +5 -0
- package/cjs/rules/common/index.d.ts.map +1 -0
- package/cjs/rules/common/type-rules.d.ts +34 -0
- package/cjs/rules/common/type-rules.d.ts.map +1 -0
- package/cjs/rules/common/type-rules.js +104 -0
- package/cjs/rules/common/type-rules.js.map +1 -0
- package/cjs/rules/common/unknown-key.d.ts +9 -0
- package/cjs/rules/common/unknown-key.d.ts.map +1 -0
- package/cjs/rules/common/unknown-key.js +20 -0
- package/cjs/rules/common/unknown-key.js.map +1 -0
- package/cjs/rules/conditional/index.d.ts +9 -0
- package/cjs/rules/conditional/index.d.ts.map +1 -0
- package/cjs/rules/conditional/present-if-rules.d.ts +45 -0
- package/cjs/rules/conditional/present-if-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/present-if-rules.js +98 -0
- package/cjs/rules/conditional/present-if-rules.js.map +1 -0
- package/cjs/rules/conditional/present-unless-rules.d.ts +11 -0
- package/cjs/rules/conditional/present-unless-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/present-unless-rules.js +20 -0
- package/cjs/rules/conditional/present-unless-rules.js.map +1 -0
- package/cjs/rules/conditional/present-with-rules.d.ts +26 -0
- package/cjs/rules/conditional/present-with-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/present-with-rules.js +63 -0
- package/cjs/rules/conditional/present-with-rules.js.map +1 -0
- package/cjs/rules/conditional/present-without-rules.d.ts +26 -0
- package/cjs/rules/conditional/present-without-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/present-without-rules.js +63 -0
- package/cjs/rules/conditional/present-without-rules.js.map +1 -0
- package/cjs/rules/conditional/required-if-rules.d.ts +45 -0
- package/cjs/rules/conditional/required-if-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/required-if-rules.js +98 -0
- package/cjs/rules/conditional/required-if-rules.js.map +1 -0
- package/cjs/rules/conditional/required-unless-rules.d.ts +11 -0
- package/cjs/rules/conditional/required-unless-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/required-unless-rules.js +20 -0
- package/cjs/rules/conditional/required-unless-rules.js.map +1 -0
- package/cjs/rules/conditional/required-with-rules.d.ts +26 -0
- package/cjs/rules/conditional/required-with-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/required-with-rules.js +63 -0
- package/cjs/rules/conditional/required-with-rules.js.map +1 -0
- package/cjs/rules/conditional/required-without-rules.d.ts +26 -0
- package/cjs/rules/conditional/required-without-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/required-without-rules.js +63 -0
- package/cjs/rules/conditional/required-without-rules.js.map +1 -0
- package/cjs/rules/core/equal.d.ts +8 -0
- package/cjs/rules/core/equal.d.ts.map +1 -0
- package/cjs/rules/core/equal.js +13 -0
- package/cjs/rules/core/equal.js.map +1 -0
- package/cjs/rules/core/forbidden.d.ts +6 -0
- package/cjs/rules/core/forbidden.d.ts.map +1 -0
- package/cjs/rules/core/forbidden.js +13 -0
- package/cjs/rules/core/forbidden.js.map +1 -0
- package/cjs/rules/core/index.d.ts +5 -0
- package/cjs/rules/core/index.d.ts.map +1 -0
- package/cjs/rules/core/required.d.ts +11 -0
- package/cjs/rules/core/required.d.ts.map +1 -0
- package/cjs/rules/core/required.js +31 -0
- package/cjs/rules/core/required.js.map +1 -0
- package/cjs/rules/core/when.d.ts +6 -0
- package/cjs/rules/core/when.d.ts.map +1 -0
- package/cjs/rules/core/when.js +40 -0
- package/cjs/rules/core/when.js.map +1 -0
- package/cjs/rules/date/date-comparison-rules.d.ts +25 -0
- package/cjs/rules/date/date-comparison-rules.d.ts.map +1 -0
- package/cjs/rules/date/date-comparison-rules.js +78 -0
- package/cjs/rules/date/date-comparison-rules.js.map +1 -0
- package/cjs/rules/date/date-day-rules.d.ts +21 -0
- package/cjs/rules/date/date-day-rules.d.ts.map +1 -0
- package/cjs/rules/date/date-day-rules.js +65 -0
- package/cjs/rules/date/date-day-rules.js.map +1 -0
- package/cjs/rules/date/date-field-comparison-rules.d.ts +28 -0
- package/cjs/rules/date/date-field-comparison-rules.d.ts.map +1 -0
- package/cjs/rules/date/date-field-comparison-rules.js +90 -0
- package/cjs/rules/date/date-field-comparison-rules.js.map +1 -0
- package/cjs/rules/date/date-period-rules.d.ts +108 -0
- package/cjs/rules/date/date-period-rules.d.ts.map +1 -0
- package/cjs/rules/date/date-period-rules.js +566 -0
- package/cjs/rules/date/date-period-rules.js.map +1 -0
- package/cjs/rules/date/date-relative-rules.d.ts +20 -0
- package/cjs/rules/date/date-relative-rules.d.ts.map +1 -0
- package/cjs/rules/date/date-relative-rules.js +57 -0
- package/cjs/rules/date/date-relative-rules.js.map +1 -0
- package/cjs/rules/date/date-special-rules.d.ts +20 -0
- package/cjs/rules/date/date-special-rules.d.ts.map +1 -0
- package/cjs/rules/date/date-special-rules.js +72 -0
- package/cjs/rules/date/date-special-rules.js.map +1 -0
- package/cjs/rules/date/date.d.ts +93 -0
- package/cjs/rules/date/date.d.ts.map +1 -0
- package/cjs/rules/date/date.js +279 -0
- package/cjs/rules/date/date.js.map +1 -0
- package/cjs/rules/date/index.d.ts +8 -0
- package/cjs/rules/date/index.d.ts.map +1 -0
- package/cjs/rules/file/dimensions.d.ts +26 -0
- package/cjs/rules/file/dimensions.d.ts.map +1 -0
- package/cjs/rules/file/dimensions.js +56 -0
- package/cjs/rules/file/dimensions.js.map +1 -0
- package/cjs/rules/file/file-size.d.ts +14 -0
- package/cjs/rules/file/file-size.d.ts.map +1 -0
- package/cjs/rules/file/file-size.js +26 -0
- package/cjs/rules/file/file-size.js.map +1 -0
- package/cjs/rules/file/index.d.ts +11 -0
- package/cjs/rules/file/index.d.ts.map +1 -0
- package/cjs/rules/index.d.ts +19 -0
- package/cjs/rules/index.d.ts.map +1 -0
- package/cjs/rules/length/index.d.ts +2 -0
- package/cjs/rules/length/index.d.ts.map +1 -0
- package/cjs/rules/length/length-rules.d.ts +49 -0
- package/cjs/rules/length/length-rules.d.ts.map +1 -0
- package/cjs/rules/length/length-rules.js +116 -0
- package/cjs/rules/length/length-rules.js.map +1 -0
- package/cjs/rules/number/index.d.ts +2 -0
- package/cjs/rules/number/index.d.ts.map +1 -0
- package/cjs/rules/number/number-rules.d.ts +43 -0
- package/cjs/rules/number/number-rules.d.ts.map +1 -0
- package/cjs/rules/number/number-rules.js +107 -0
- package/cjs/rules/number/number-rules.js.map +1 -0
- package/cjs/rules/scalar/accepted-rule.d.ts +39 -0
- package/cjs/rules/scalar/accepted-rule.d.ts.map +1 -0
- package/cjs/rules/scalar/accepted-rule.js +110 -0
- package/cjs/rules/scalar/accepted-rule.js.map +1 -0
- package/cjs/rules/scalar/declined-rule.d.ts +39 -0
- package/cjs/rules/scalar/declined-rule.d.ts.map +1 -0
- package/cjs/rules/scalar/declined-rule.js +110 -0
- package/cjs/rules/scalar/declined-rule.js.map +1 -0
- package/cjs/rules/scalar/index.d.ts +3 -0
- package/cjs/rules/scalar/index.d.ts.map +1 -0
- package/cjs/rules/string/alpha.d.ts +14 -0
- package/cjs/rules/string/alpha.d.ts.map +1 -0
- package/cjs/rules/string/alpha.js +39 -0
- package/cjs/rules/string/alpha.js.map +1 -0
- package/cjs/rules/string/credit-card.d.ts +6 -0
- package/cjs/rules/string/credit-card.d.ts.map +1 -0
- package/cjs/rules/string/credit-card.js +31 -0
- package/cjs/rules/string/credit-card.js.map +1 -0
- package/cjs/rules/string/email.d.ts +6 -0
- package/cjs/rules/string/email.d.ts.map +1 -0
- package/cjs/rules/string/email.js +13 -0
- package/cjs/rules/string/email.js.map +1 -0
- package/cjs/rules/string/index.d.ts +17 -0
- package/cjs/rules/string/index.d.ts.map +1 -0
- package/cjs/rules/string/ip.d.ts +14 -0
- package/cjs/rules/string/ip.d.ts.map +1 -0
- package/cjs/rules/string/ip.js +39 -0
- package/cjs/rules/string/ip.js.map +1 -0
- package/cjs/rules/string/matches.d.ts +8 -0
- package/cjs/rules/string/matches.d.ts.map +1 -0
- package/cjs/rules/string/matches.js +14 -0
- package/cjs/rules/string/matches.js.map +1 -0
- package/cjs/rules/string/pattern.d.ts +8 -0
- package/cjs/rules/string/pattern.d.ts.map +1 -0
- package/cjs/rules/string/pattern.js +13 -0
- package/cjs/rules/string/pattern.js.map +1 -0
- package/cjs/rules/string/string-comparison.d.ts +26 -0
- package/cjs/rules/string/string-comparison.d.ts.map +1 -0
- package/cjs/rules/string/string-comparison.js +52 -0
- package/cjs/rules/string/string-comparison.js.map +1 -0
- package/cjs/rules/string/strong-password-rule.d.ts +14 -0
- package/cjs/rules/string/strong-password-rule.d.ts.map +1 -0
- package/cjs/rules/string/strong-password-rule.js +38 -0
- package/cjs/rules/string/strong-password-rule.js.map +1 -0
- package/cjs/rules/string/url.d.ts +6 -0
- package/cjs/rules/string/url.d.ts.map +1 -0
- package/cjs/rules/string/url.js +16 -0
- package/cjs/rules/string/url.js.map +1 -0
- package/cjs/rules/string/without-whitespace.d.ts +6 -0
- package/cjs/rules/string/without-whitespace.d.ts.map +1 -0
- package/cjs/rules/string/without-whitespace.js +13 -0
- package/cjs/rules/string/without-whitespace.js.map +1 -0
- package/cjs/types/conditional-types.d.ts +15 -0
- package/cjs/types/conditional-types.d.ts.map +1 -0
- package/cjs/types/context-types.d.ts +44 -0
- package/cjs/types/context-types.d.ts.map +1 -0
- package/cjs/types/data-transformer-types.d.ts +25 -0
- package/cjs/types/data-transformer-types.d.ts.map +1 -0
- package/cjs/types/date-types.d.ts +9 -0
- package/cjs/types/date-types.d.ts.map +1 -0
- package/cjs/types/date-types.js +12 -0
- package/cjs/types/date-types.js.map +1 -0
- package/cjs/types/index.d.ts +10 -0
- package/cjs/types/index.d.ts.map +1 -0
- package/cjs/types/inference-types.d.ts +29 -0
- package/cjs/types/inference-types.d.ts.map +1 -0
- package/cjs/types/mutator-types.d.ts +27 -0
- package/cjs/types/mutator-types.d.ts.map +1 -0
- package/cjs/types/result-types.d.ts +19 -0
- package/cjs/types/result-types.d.ts.map +1 -0
- package/cjs/types/rule-types.d.ts +53 -0
- package/cjs/types/rule-types.d.ts.map +1 -0
- package/cjs/types/schema-types.d.ts +6 -0
- package/cjs/types/schema-types.d.ts.map +1 -0
- package/cjs/validators/any-validator.d.ts +7 -0
- package/cjs/validators/any-validator.d.ts.map +1 -0
- package/cjs/validators/any-validator.js +5 -0
- package/cjs/validators/any-validator.js.map +1 -0
- package/cjs/validators/array-validator.d.ts +51 -0
- package/cjs/validators/array-validator.d.ts.map +1 -0
- package/cjs/validators/array-validator.js +120 -0
- package/cjs/validators/array-validator.js.map +1 -0
- package/cjs/validators/base-validator.d.ts +500 -0
- package/cjs/validators/base-validator.d.ts.map +1 -0
- package/cjs/validators/base-validator.js +950 -0
- package/cjs/validators/base-validator.js.map +1 -0
- package/cjs/validators/boolean-validator.d.ts +43 -0
- package/cjs/validators/boolean-validator.d.ts.map +1 -0
- package/cjs/validators/boolean-validator.js +48 -0
- package/cjs/validators/boolean-validator.js.map +1 -0
- package/cjs/validators/date-validator.d.ts +303 -0
- package/cjs/validators/date-validator.d.ts.map +1 -0
- package/cjs/validators/date-validator.js +639 -0
- package/cjs/validators/date-validator.js.map +1 -0
- package/cjs/validators/float-validator.d.ts +8 -0
- package/cjs/validators/float-validator.d.ts.map +1 -0
- package/cjs/validators/float-validator.js +9 -0
- package/cjs/validators/float-validator.js.map +1 -0
- package/cjs/validators/index.d.ts +20 -0
- package/cjs/validators/index.d.ts.map +1 -0
- package/cjs/validators/int-validator.d.ts +8 -0
- package/cjs/validators/int-validator.d.ts.map +1 -0
- package/cjs/validators/int-validator.js +9 -0
- package/cjs/validators/int-validator.js.map +1 -0
- package/cjs/validators/number-validator.d.ts +35 -0
- package/cjs/validators/number-validator.d.ts.map +1 -0
- package/cjs/validators/number-validator.js +66 -0
- package/cjs/validators/number-validator.js.map +1 -0
- package/cjs/validators/object-validator.d.ts +24 -0
- package/cjs/validators/object-validator.d.ts.map +1 -0
- package/cjs/validators/object-validator.js +120 -0
- package/cjs/validators/object-validator.js.map +1 -0
- package/cjs/validators/scalar-validator.d.ts +74 -0
- package/cjs/validators/scalar-validator.d.ts.map +1 -0
- package/cjs/validators/scalar-validator.js +145 -0
- package/cjs/validators/scalar-validator.js.map +1 -0
- package/cjs/validators/string-validator.d.ts +187 -0
- package/cjs/validators/string-validator.d.ts.map +1 -0
- package/cjs/validators/string-validator.js +404 -0
- package/cjs/validators/string-validator.js.map +1 -0
- package/esm/config.d.ts +48 -0
- package/esm/config.d.ts.map +1 -0
- package/esm/config.js +42 -0
- package/esm/config.js.map +1 -0
- package/esm/factory/index.d.ts +3 -0
- package/esm/factory/index.d.ts.map +1 -0
- package/esm/factory/validate.d.ts +8 -0
- package/esm/factory/validate.d.ts.map +1 -0
- package/esm/factory/validate.js +21 -0
- package/esm/factory/validate.js.map +1 -0
- package/esm/factory/validators.d.ts +32 -0
- package/esm/factory/validators.d.ts.map +1 -0
- package/esm/factory/validators.js +38 -0
- package/esm/factory/validators.js.map +1 -0
- package/esm/helpers/date-helpers.d.ts +16 -0
- package/esm/helpers/date-helpers.d.ts.map +1 -0
- package/esm/helpers/date-helpers.js +25 -0
- package/esm/helpers/date-helpers.js.map +1 -0
- package/esm/helpers/get-field-value.d.ts +37 -0
- package/esm/helpers/get-field-value.d.ts.map +1 -0
- package/esm/helpers/get-field-value.js +40 -0
- package/esm/helpers/get-field-value.js.map +1 -0
- package/esm/helpers/index.d.ts +5 -0
- package/esm/helpers/index.d.ts.map +1 -0
- package/esm/helpers/path-helpers.d.ts +5 -0
- package/esm/helpers/path-helpers.d.ts.map +1 -0
- package/esm/helpers/path-helpers.js +8 -0
- package/esm/helpers/path-helpers.js.map +1 -0
- package/esm/helpers/validation-helpers.d.ts +4 -0
- package/esm/helpers/validation-helpers.d.ts.map +1 -0
- package/esm/helpers/validation-helpers.js +39 -0
- package/esm/helpers/validation-helpers.js.map +1 -0
- package/esm/index.d.ts +29 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/mutators/array-mutators.d.ts +12 -0
- package/esm/mutators/array-mutators.d.ts.map +1 -0
- package/esm/mutators/array-mutators.js +37 -0
- package/esm/mutators/array-mutators.js.map +1 -0
- package/esm/mutators/date-mutators.d.ts +39 -0
- package/esm/mutators/date-mutators.d.ts.map +1 -0
- package/esm/mutators/date-mutators.js +120 -0
- package/esm/mutators/date-mutators.js.map +1 -0
- package/esm/mutators/index.d.ts +6 -0
- package/esm/mutators/index.d.ts.map +1 -0
- package/esm/mutators/number-mutators.d.ts +8 -0
- package/esm/mutators/number-mutators.d.ts.map +1 -0
- package/esm/mutators/number-mutators.js +18 -0
- package/esm/mutators/number-mutators.js.map +1 -0
- package/esm/mutators/object-mutators.d.ts +8 -0
- package/esm/mutators/object-mutators.d.ts.map +1 -0
- package/esm/mutators/object-mutators.js +50 -0
- package/esm/mutators/object-mutators.js.map +1 -0
- package/esm/mutators/string-mutators.d.ts +72 -0
- package/esm/mutators/string-mutators.d.ts.map +1 -0
- package/esm/mutators/string-mutators.js +193 -0
- package/esm/mutators/string-mutators.js.map +1 -0
- package/esm/plugins/index.d.ts +7 -0
- package/esm/plugins/index.d.ts.map +1 -0
- package/esm/plugins/plugin-system.d.ts +71 -0
- package/esm/plugins/plugin-system.d.ts.map +1 -0
- package/esm/plugins/plugin-system.js +68 -0
- package/esm/plugins/plugin-system.js.map +1 -0
- package/esm/rules/array/array-rules.d.ts +12 -0
- package/esm/rules/array/array-rules.d.ts.map +1 -0
- package/esm/rules/array/array-rules.js +44 -0
- package/esm/rules/array/array-rules.js.map +1 -0
- package/esm/rules/array/index.d.ts +2 -0
- package/esm/rules/array/index.d.ts.map +1 -0
- package/esm/rules/color/color-rules.d.ts +30 -0
- package/esm/rules/color/color-rules.d.ts.map +1 -0
- package/esm/rules/color/color-rules.js +120 -0
- package/esm/rules/color/color-rules.js.map +1 -0
- package/esm/rules/color/index.d.ts +2 -0
- package/esm/rules/color/index.d.ts.map +1 -0
- package/esm/rules/common/enum.d.ts +26 -0
- package/esm/rules/common/enum.d.ts.map +1 -0
- package/esm/rules/common/enum.js +55 -0
- package/esm/rules/common/enum.js.map +1 -0
- package/esm/rules/common/equals-field-rules.d.ts +18 -0
- package/esm/rules/common/equals-field-rules.d.ts.map +1 -0
- package/esm/rules/common/equals-field-rules.js +38 -0
- package/esm/rules/common/equals-field-rules.js.map +1 -0
- package/esm/rules/common/index.d.ts +5 -0
- package/esm/rules/common/index.d.ts.map +1 -0
- package/esm/rules/common/type-rules.d.ts +34 -0
- package/esm/rules/common/type-rules.d.ts.map +1 -0
- package/esm/rules/common/type-rules.js +104 -0
- package/esm/rules/common/type-rules.js.map +1 -0
- package/esm/rules/common/unknown-key.d.ts +9 -0
- package/esm/rules/common/unknown-key.d.ts.map +1 -0
- package/esm/rules/common/unknown-key.js +20 -0
- package/esm/rules/common/unknown-key.js.map +1 -0
- package/esm/rules/conditional/index.d.ts +9 -0
- package/esm/rules/conditional/index.d.ts.map +1 -0
- package/esm/rules/conditional/present-if-rules.d.ts +45 -0
- package/esm/rules/conditional/present-if-rules.d.ts.map +1 -0
- package/esm/rules/conditional/present-if-rules.js +98 -0
- package/esm/rules/conditional/present-if-rules.js.map +1 -0
- package/esm/rules/conditional/present-unless-rules.d.ts +11 -0
- package/esm/rules/conditional/present-unless-rules.d.ts.map +1 -0
- package/esm/rules/conditional/present-unless-rules.js +20 -0
- package/esm/rules/conditional/present-unless-rules.js.map +1 -0
- package/esm/rules/conditional/present-with-rules.d.ts +26 -0
- package/esm/rules/conditional/present-with-rules.d.ts.map +1 -0
- package/esm/rules/conditional/present-with-rules.js +63 -0
- package/esm/rules/conditional/present-with-rules.js.map +1 -0
- package/esm/rules/conditional/present-without-rules.d.ts +26 -0
- package/esm/rules/conditional/present-without-rules.d.ts.map +1 -0
- package/esm/rules/conditional/present-without-rules.js +63 -0
- package/esm/rules/conditional/present-without-rules.js.map +1 -0
- package/esm/rules/conditional/required-if-rules.d.ts +45 -0
- package/esm/rules/conditional/required-if-rules.d.ts.map +1 -0
- package/esm/rules/conditional/required-if-rules.js +98 -0
- package/esm/rules/conditional/required-if-rules.js.map +1 -0
- package/esm/rules/conditional/required-unless-rules.d.ts +11 -0
- package/esm/rules/conditional/required-unless-rules.d.ts.map +1 -0
- package/esm/rules/conditional/required-unless-rules.js +20 -0
- package/esm/rules/conditional/required-unless-rules.js.map +1 -0
- package/esm/rules/conditional/required-with-rules.d.ts +26 -0
- package/esm/rules/conditional/required-with-rules.d.ts.map +1 -0
- package/esm/rules/conditional/required-with-rules.js +63 -0
- package/esm/rules/conditional/required-with-rules.js.map +1 -0
- package/esm/rules/conditional/required-without-rules.d.ts +26 -0
- package/esm/rules/conditional/required-without-rules.d.ts.map +1 -0
- package/esm/rules/conditional/required-without-rules.js +63 -0
- package/esm/rules/conditional/required-without-rules.js.map +1 -0
- package/esm/rules/core/equal.d.ts +8 -0
- package/esm/rules/core/equal.d.ts.map +1 -0
- package/esm/rules/core/equal.js +13 -0
- package/esm/rules/core/equal.js.map +1 -0
- package/esm/rules/core/forbidden.d.ts +6 -0
- package/esm/rules/core/forbidden.d.ts.map +1 -0
- package/esm/rules/core/forbidden.js +13 -0
- package/esm/rules/core/forbidden.js.map +1 -0
- package/esm/rules/core/index.d.ts +5 -0
- package/esm/rules/core/index.d.ts.map +1 -0
- package/esm/rules/core/required.d.ts +11 -0
- package/esm/rules/core/required.d.ts.map +1 -0
- package/esm/rules/core/required.js +31 -0
- package/esm/rules/core/required.js.map +1 -0
- package/esm/rules/core/when.d.ts +6 -0
- package/esm/rules/core/when.d.ts.map +1 -0
- package/esm/rules/core/when.js +40 -0
- package/esm/rules/core/when.js.map +1 -0
- package/esm/rules/date/date-comparison-rules.d.ts +25 -0
- package/esm/rules/date/date-comparison-rules.d.ts.map +1 -0
- package/esm/rules/date/date-comparison-rules.js +78 -0
- package/esm/rules/date/date-comparison-rules.js.map +1 -0
- package/esm/rules/date/date-day-rules.d.ts +21 -0
- package/esm/rules/date/date-day-rules.d.ts.map +1 -0
- package/esm/rules/date/date-day-rules.js +65 -0
- package/esm/rules/date/date-day-rules.js.map +1 -0
- package/esm/rules/date/date-field-comparison-rules.d.ts +28 -0
- package/esm/rules/date/date-field-comparison-rules.d.ts.map +1 -0
- package/esm/rules/date/date-field-comparison-rules.js +90 -0
- package/esm/rules/date/date-field-comparison-rules.js.map +1 -0
- package/esm/rules/date/date-period-rules.d.ts +108 -0
- package/esm/rules/date/date-period-rules.d.ts.map +1 -0
- package/esm/rules/date/date-period-rules.js +566 -0
- package/esm/rules/date/date-period-rules.js.map +1 -0
- package/esm/rules/date/date-relative-rules.d.ts +20 -0
- package/esm/rules/date/date-relative-rules.d.ts.map +1 -0
- package/esm/rules/date/date-relative-rules.js +57 -0
- package/esm/rules/date/date-relative-rules.js.map +1 -0
- package/esm/rules/date/date-special-rules.d.ts +20 -0
- package/esm/rules/date/date-special-rules.d.ts.map +1 -0
- package/esm/rules/date/date-special-rules.js +72 -0
- package/esm/rules/date/date-special-rules.js.map +1 -0
- package/esm/rules/date/date.d.ts +93 -0
- package/esm/rules/date/date.d.ts.map +1 -0
- package/esm/rules/date/date.js +279 -0
- package/esm/rules/date/date.js.map +1 -0
- package/esm/rules/date/index.d.ts +8 -0
- package/esm/rules/date/index.d.ts.map +1 -0
- package/esm/rules/file/dimensions.d.ts +26 -0
- package/esm/rules/file/dimensions.d.ts.map +1 -0
- package/esm/rules/file/dimensions.js +56 -0
- package/esm/rules/file/dimensions.js.map +1 -0
- package/esm/rules/file/file-size.d.ts +14 -0
- package/esm/rules/file/file-size.d.ts.map +1 -0
- package/esm/rules/file/file-size.js +26 -0
- package/esm/rules/file/file-size.js.map +1 -0
- package/esm/rules/file/index.d.ts +11 -0
- package/esm/rules/file/index.d.ts.map +1 -0
- package/esm/rules/index.d.ts +19 -0
- package/esm/rules/index.d.ts.map +1 -0
- package/esm/rules/length/index.d.ts +2 -0
- package/esm/rules/length/index.d.ts.map +1 -0
- package/esm/rules/length/length-rules.d.ts +49 -0
- package/esm/rules/length/length-rules.d.ts.map +1 -0
- package/esm/rules/length/length-rules.js +116 -0
- package/esm/rules/length/length-rules.js.map +1 -0
- package/esm/rules/number/index.d.ts +2 -0
- package/esm/rules/number/index.d.ts.map +1 -0
- package/esm/rules/number/number-rules.d.ts +43 -0
- package/esm/rules/number/number-rules.d.ts.map +1 -0
- package/esm/rules/number/number-rules.js +107 -0
- package/esm/rules/number/number-rules.js.map +1 -0
- package/esm/rules/scalar/accepted-rule.d.ts +39 -0
- package/esm/rules/scalar/accepted-rule.d.ts.map +1 -0
- package/esm/rules/scalar/accepted-rule.js +110 -0
- package/esm/rules/scalar/accepted-rule.js.map +1 -0
- package/esm/rules/scalar/declined-rule.d.ts +39 -0
- package/esm/rules/scalar/declined-rule.d.ts.map +1 -0
- package/esm/rules/scalar/declined-rule.js +110 -0
- package/esm/rules/scalar/declined-rule.js.map +1 -0
- package/esm/rules/scalar/index.d.ts +3 -0
- package/esm/rules/scalar/index.d.ts.map +1 -0
- package/esm/rules/string/alpha.d.ts +14 -0
- package/esm/rules/string/alpha.d.ts.map +1 -0
- package/esm/rules/string/alpha.js +39 -0
- package/esm/rules/string/alpha.js.map +1 -0
- package/esm/rules/string/credit-card.d.ts +6 -0
- package/esm/rules/string/credit-card.d.ts.map +1 -0
- package/esm/rules/string/credit-card.js +31 -0
- package/esm/rules/string/credit-card.js.map +1 -0
- package/esm/rules/string/email.d.ts +6 -0
- package/esm/rules/string/email.d.ts.map +1 -0
- package/esm/rules/string/email.js +13 -0
- package/esm/rules/string/email.js.map +1 -0
- package/esm/rules/string/index.d.ts +17 -0
- package/esm/rules/string/index.d.ts.map +1 -0
- package/esm/rules/string/ip.d.ts +14 -0
- package/esm/rules/string/ip.d.ts.map +1 -0
- package/esm/rules/string/ip.js +39 -0
- package/esm/rules/string/ip.js.map +1 -0
- package/esm/rules/string/matches.d.ts +8 -0
- package/esm/rules/string/matches.d.ts.map +1 -0
- package/esm/rules/string/matches.js +14 -0
- package/esm/rules/string/matches.js.map +1 -0
- package/esm/rules/string/pattern.d.ts +8 -0
- package/esm/rules/string/pattern.d.ts.map +1 -0
- package/esm/rules/string/pattern.js +13 -0
- package/esm/rules/string/pattern.js.map +1 -0
- package/esm/rules/string/string-comparison.d.ts +26 -0
- package/esm/rules/string/string-comparison.d.ts.map +1 -0
- package/esm/rules/string/string-comparison.js +52 -0
- package/esm/rules/string/string-comparison.js.map +1 -0
- package/esm/rules/string/strong-password-rule.d.ts +14 -0
- package/esm/rules/string/strong-password-rule.d.ts.map +1 -0
- package/esm/rules/string/strong-password-rule.js +38 -0
- package/esm/rules/string/strong-password-rule.js.map +1 -0
- package/esm/rules/string/url.d.ts +6 -0
- package/esm/rules/string/url.d.ts.map +1 -0
- package/esm/rules/string/url.js +16 -0
- package/esm/rules/string/url.js.map +1 -0
- package/esm/rules/string/without-whitespace.d.ts +6 -0
- package/esm/rules/string/without-whitespace.d.ts.map +1 -0
- package/esm/rules/string/without-whitespace.js +13 -0
- package/esm/rules/string/without-whitespace.js.map +1 -0
- package/esm/types/conditional-types.d.ts +15 -0
- package/esm/types/conditional-types.d.ts.map +1 -0
- package/esm/types/context-types.d.ts +44 -0
- package/esm/types/context-types.d.ts.map +1 -0
- package/esm/types/data-transformer-types.d.ts +25 -0
- package/esm/types/data-transformer-types.d.ts.map +1 -0
- package/esm/types/date-types.d.ts +9 -0
- package/esm/types/date-types.d.ts.map +1 -0
- package/esm/types/date-types.js +12 -0
- package/esm/types/date-types.js.map +1 -0
- package/esm/types/index.d.ts +10 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/inference-types.d.ts +29 -0
- package/esm/types/inference-types.d.ts.map +1 -0
- package/esm/types/mutator-types.d.ts +27 -0
- package/esm/types/mutator-types.d.ts.map +1 -0
- package/esm/types/result-types.d.ts +19 -0
- package/esm/types/result-types.d.ts.map +1 -0
- package/esm/types/rule-types.d.ts +53 -0
- package/esm/types/rule-types.d.ts.map +1 -0
- package/esm/types/schema-types.d.ts +6 -0
- package/esm/types/schema-types.d.ts.map +1 -0
- package/esm/validators/any-validator.d.ts +7 -0
- package/esm/validators/any-validator.d.ts.map +1 -0
- package/esm/validators/any-validator.js +5 -0
- package/esm/validators/any-validator.js.map +1 -0
- package/esm/validators/array-validator.d.ts +51 -0
- package/esm/validators/array-validator.d.ts.map +1 -0
- package/esm/validators/array-validator.js +120 -0
- package/esm/validators/array-validator.js.map +1 -0
- package/esm/validators/base-validator.d.ts +500 -0
- package/esm/validators/base-validator.d.ts.map +1 -0
- package/esm/validators/base-validator.js +950 -0
- package/esm/validators/base-validator.js.map +1 -0
- package/esm/validators/boolean-validator.d.ts +43 -0
- package/esm/validators/boolean-validator.d.ts.map +1 -0
- package/esm/validators/boolean-validator.js +48 -0
- package/esm/validators/boolean-validator.js.map +1 -0
- package/esm/validators/date-validator.d.ts +303 -0
- package/esm/validators/date-validator.d.ts.map +1 -0
- package/esm/validators/date-validator.js +639 -0
- package/esm/validators/date-validator.js.map +1 -0
- package/esm/validators/float-validator.d.ts +8 -0
- package/esm/validators/float-validator.d.ts.map +1 -0
- package/esm/validators/float-validator.js +9 -0
- package/esm/validators/float-validator.js.map +1 -0
- package/esm/validators/index.d.ts +20 -0
- package/esm/validators/index.d.ts.map +1 -0
- package/esm/validators/int-validator.d.ts +8 -0
- package/esm/validators/int-validator.d.ts.map +1 -0
- package/esm/validators/int-validator.js +9 -0
- package/esm/validators/int-validator.js.map +1 -0
- package/esm/validators/number-validator.d.ts +35 -0
- package/esm/validators/number-validator.d.ts.map +1 -0
- package/esm/validators/number-validator.js +66 -0
- package/esm/validators/number-validator.js.map +1 -0
- package/esm/validators/object-validator.d.ts +24 -0
- package/esm/validators/object-validator.d.ts.map +1 -0
- package/esm/validators/object-validator.js +120 -0
- package/esm/validators/object-validator.js.map +1 -0
- package/esm/validators/scalar-validator.d.ts +74 -0
- package/esm/validators/scalar-validator.d.ts.map +1 -0
- package/esm/validators/scalar-validator.js +145 -0
- package/esm/validators/scalar-validator.js.map +1 -0
- package/esm/validators/string-validator.d.ts +187 -0
- package/esm/validators/string-validator.d.ts.map +1 -0
- package/esm/validators/string-validator.js +404 -0
- package/esm/validators/string-validator.js.map +1 -0
- package/package.json +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
# 🔮 Warlock Seal
|
|
2
|
+
|
|
3
|
+
> Cast validation seals on your schemas to protect your data
|
|
4
|
+
|
|
5
|
+
A powerful, type-safe validation library for TypeScript with an intuitive API and framework-agnostic design.
|
|
6
|
+
|
|
7
|
+
## 📦 Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @warlock.js/seal
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
yarn add @warlock.js/seal
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @warlock.js/seal
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 🚀 Quick Start
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { v, type Infer } from "@warlock.js/seal";
|
|
25
|
+
|
|
26
|
+
// Define your validation schema (cast a seal)
|
|
27
|
+
const userSeal = v.object({
|
|
28
|
+
name: v.string().required().min(3),
|
|
29
|
+
email: v.string().email().required(),
|
|
30
|
+
age: v.int().min(18),
|
|
31
|
+
status: v.string().in(["active", "inactive"]),
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Extract TypeScript type automatically
|
|
35
|
+
type User = Infer<typeof userSeal>;
|
|
36
|
+
// Result: { name: string; email: string; age: number; status: string }
|
|
37
|
+
|
|
38
|
+
// Validate data
|
|
39
|
+
const result = await v.validate(userSeal, userData);
|
|
40
|
+
|
|
41
|
+
if (result.isValid) {
|
|
42
|
+
console.log("Data is sealed! ✅", result.data);
|
|
43
|
+
} else {
|
|
44
|
+
console.log("Seal broken! ❌", result.errors);
|
|
45
|
+
// [
|
|
46
|
+
// { error: "The name must be at least 3 characters", path: "name" },
|
|
47
|
+
// { error: "The email must be a valid email address", path: "email" }
|
|
48
|
+
// ]
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 🎯 Core Concepts
|
|
53
|
+
|
|
54
|
+
### Three-Layer Validation Pipeline
|
|
55
|
+
|
|
56
|
+
Seal uses a unique **three-layer architecture** that separates concerns:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Input Data
|
|
60
|
+
↓
|
|
61
|
+
🔧 MUTATORS (Prep for Validation)
|
|
62
|
+
- Normalize data before validation
|
|
63
|
+
- Examples: trim(), lowercase(), toStartOfDay()
|
|
64
|
+
- Run BEFORE validation rules
|
|
65
|
+
↓
|
|
66
|
+
✅ VALIDATORS (Check Constraints)
|
|
67
|
+
- Validate against rules
|
|
68
|
+
- Examples: email(), min(), after()
|
|
69
|
+
- Return errors if validation fails
|
|
70
|
+
↓
|
|
71
|
+
🎨 TRANSFORMERS (Format Output)
|
|
72
|
+
- Format validated data for output
|
|
73
|
+
- Examples: toISOString(), toFormat()
|
|
74
|
+
- Run AFTER validation passes
|
|
75
|
+
↓
|
|
76
|
+
Output Data
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Example: Date Validation
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
const schema = v
|
|
83
|
+
.date()
|
|
84
|
+
.toStartOfDay() // 🔧 Mutator: normalize to 00:00:00
|
|
85
|
+
.after("2024-01-01") // ✅ Validator: check Date object
|
|
86
|
+
.toISOString(); // 🎨 Transformer: output as ISO string
|
|
87
|
+
|
|
88
|
+
const result = await v.validate(schema, "2024-06-15 14:30:00");
|
|
89
|
+
// result.data = "2024-06-15T00:00:00.000Z"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Why this matters:**
|
|
93
|
+
|
|
94
|
+
- Mutators prepare data for validation (no more string comparison issues!)
|
|
95
|
+
- Validators check constraints on normalized data
|
|
96
|
+
- Transformers format output without affecting validation
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 🌟 Key Features
|
|
101
|
+
|
|
102
|
+
### ✅ Type Inference
|
|
103
|
+
|
|
104
|
+
Automatically extract TypeScript types from your schemas:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
const schema = v.object({
|
|
108
|
+
name: v.string().required(),
|
|
109
|
+
age: v.int(),
|
|
110
|
+
tags: v.array(v.string()),
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
type User = Infer<typeof schema>;
|
|
114
|
+
// { name: string; age: number; tags: string[] }
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### ✅ Intuitive API
|
|
118
|
+
|
|
119
|
+
Readable, chainable methods:
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
v.string().required().email().min(5).max(100);
|
|
123
|
+
|
|
124
|
+
v.int().min(0).max(100).positive();
|
|
125
|
+
|
|
126
|
+
v.array(v.string()).minLength(1).unique();
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### ✅ Conditional Validation
|
|
130
|
+
|
|
131
|
+
Apply different validators based on other field values:
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
const schema = v.object({
|
|
135
|
+
type: v.string().required().in(["admin", "user"]),
|
|
136
|
+
role: v.string().when("type", {
|
|
137
|
+
is: {
|
|
138
|
+
admin: v.string().required().in(["super", "moderator"]),
|
|
139
|
+
user: v.string().required().in(["member", "guest"]),
|
|
140
|
+
},
|
|
141
|
+
}),
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// If type is "admin", role must be "super" or "moderator"
|
|
145
|
+
// If type is "user", role must be "member" or "guest"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### ✅ Field Comparison
|
|
149
|
+
|
|
150
|
+
Compare fields against each other (global or sibling scope):
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
const schema = v.object({
|
|
154
|
+
password: v.string().required().min(8),
|
|
155
|
+
confirmPassword: v.string().required().sameAs("password"), // Compare with password field
|
|
156
|
+
|
|
157
|
+
startDate: v.date().required(),
|
|
158
|
+
endDate: v.date().required().after("startDate"), // Compare with startDate field
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### ✅ Custom Validation
|
|
163
|
+
|
|
164
|
+
Add your own validation logic:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
v.string().refine(async value => {
|
|
168
|
+
const exists = await checkUsername(value);
|
|
169
|
+
if (exists) return "Username already taken";
|
|
170
|
+
});
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### ✅ Mutators & Transformers
|
|
174
|
+
|
|
175
|
+
Normalize input and format output:
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
// String mutators
|
|
179
|
+
v.string()
|
|
180
|
+
.trim() // Remove whitespace
|
|
181
|
+
.lowercase() // Convert to lowercase
|
|
182
|
+
.email() // Validate email
|
|
183
|
+
.toJSON(); // Transform to JSON string
|
|
184
|
+
|
|
185
|
+
// Date mutators & transformers
|
|
186
|
+
v.date()
|
|
187
|
+
.toStartOfDay() // Normalize to midnight
|
|
188
|
+
.after("2024-01-01")
|
|
189
|
+
.toISOString(); // Output as ISO string
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 📚 Documentation
|
|
195
|
+
|
|
196
|
+
For complete documentation, visit: **[https://warlock.js.org/seal](https://warlock.js.org/seal)**
|
|
197
|
+
|
|
198
|
+
### Available Validators
|
|
199
|
+
|
|
200
|
+
| Validator | Purpose | Example |
|
|
201
|
+
| ------------- | ------------------ | -------------------------------- |
|
|
202
|
+
| `v.string()` | String validation | `v.string().email().min(3)` |
|
|
203
|
+
| `v.int()` | Integer validation | `v.int().min(0).max(100)` |
|
|
204
|
+
| `v.float()` | Float validation | `v.float().positive()` |
|
|
205
|
+
| `v.number()` | Number validation | `v.number().min(0)` |
|
|
206
|
+
| `v.boolean()` | Boolean validation | `v.boolean().accepted()` |
|
|
207
|
+
| `v.date()` | Date validation | `v.date().after(new Date())` |
|
|
208
|
+
| `v.array()` | Array validation | `v.array(v.string()).min(1)` |
|
|
209
|
+
| `v.object()` | Object validation | `v.object({ name: v.string() })` |
|
|
210
|
+
| `v.scalar()` | Scalar values | `v.scalar().in([1, "2", true])` |
|
|
211
|
+
|
|
212
|
+
### Common Methods
|
|
213
|
+
|
|
214
|
+
Available on all validators:
|
|
215
|
+
|
|
216
|
+
| Method | Purpose |
|
|
217
|
+
| -------------------------- | -------------------------------- |
|
|
218
|
+
| `.required()` | Value must be present |
|
|
219
|
+
| `.optional()` | Value is optional |
|
|
220
|
+
| `.forbidden()` | Value must not be present |
|
|
221
|
+
| `.equals(value)` | Must equal specific value |
|
|
222
|
+
| `.default(value)` | Set default value |
|
|
223
|
+
| `.allowsEmpty()` | Skip validation if empty |
|
|
224
|
+
| `.when(field, conditions)` | Conditional validation |
|
|
225
|
+
| `.omit()` | Validate but exclude from output |
|
|
226
|
+
| `.refine(callback)` | Custom validation logic |
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 💡 Examples
|
|
231
|
+
|
|
232
|
+
### User Registration
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
const registerSchema = v.object({
|
|
236
|
+
email: v.string().required().email(),
|
|
237
|
+
password: v.string().required().min(8).strongPassword(),
|
|
238
|
+
confirmPassword: v.string().required().sameAs("password"),
|
|
239
|
+
age: v.int().required().min(18).max(120),
|
|
240
|
+
terms: v.boolean().required().accepted(),
|
|
241
|
+
});
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Form with Conditional Fields
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
const formSchema = v.object({
|
|
248
|
+
accountType: v.string().required().in(["personal", "business"]),
|
|
249
|
+
|
|
250
|
+
// Required only if accountType is "business"
|
|
251
|
+
companyName: v.string().requiredIf("accountType", { is: "business" }),
|
|
252
|
+
|
|
253
|
+
// Conditional validation
|
|
254
|
+
taxId: v.string().when("accountType", {
|
|
255
|
+
is: {
|
|
256
|
+
business: v
|
|
257
|
+
.string()
|
|
258
|
+
.required()
|
|
259
|
+
.pattern(/^[0-9]{9}$/),
|
|
260
|
+
personal: v.string().forbidden(),
|
|
261
|
+
},
|
|
262
|
+
}),
|
|
263
|
+
});
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Date Range Validation
|
|
267
|
+
|
|
268
|
+
```typescript
|
|
269
|
+
const bookingSchema = v.object({
|
|
270
|
+
checkIn: v.date().required().afterToday(),
|
|
271
|
+
|
|
272
|
+
checkOut: v
|
|
273
|
+
.date()
|
|
274
|
+
.required()
|
|
275
|
+
.after("checkIn") // Compare with checkIn field
|
|
276
|
+
.withinDays(30), // Max 30 days from checkIn
|
|
277
|
+
});
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Array Validation
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
const tagsSchema = v
|
|
284
|
+
.array(v.string())
|
|
285
|
+
.required()
|
|
286
|
+
.minLength(1)
|
|
287
|
+
.maxLength(10)
|
|
288
|
+
.unique();
|
|
289
|
+
|
|
290
|
+
const usersSchema = v
|
|
291
|
+
.array(
|
|
292
|
+
v.object({
|
|
293
|
+
name: v.string().required(),
|
|
294
|
+
email: v.string().email(),
|
|
295
|
+
}),
|
|
296
|
+
)
|
|
297
|
+
.minLength(1);
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## 🔧 Framework Extensions
|
|
303
|
+
|
|
304
|
+
For Warlock.js projects, framework-specific validators are available:
|
|
305
|
+
|
|
306
|
+
```typescript
|
|
307
|
+
import { v } from "@warlock.js/core/v";
|
|
308
|
+
|
|
309
|
+
const schema = v.object({
|
|
310
|
+
email: v.string().email().unique(User), // Database validation
|
|
311
|
+
avatar: v.file().image().maxSize(5000000), // File upload validation
|
|
312
|
+
uploadId: v.string().uploadable(), // Upload hash validation
|
|
313
|
+
});
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 🎨 Why "Seal"?
|
|
319
|
+
|
|
320
|
+
🔮 **Magical Context**
|
|
321
|
+
Warlocks use seals to protect and verify. Your validation schemas are seals that protect your data integrity.
|
|
322
|
+
|
|
323
|
+
💻 **Programming Context**
|
|
324
|
+
A "seal of approval" - data that passes validation is sealed and verified.
|
|
325
|
+
|
|
326
|
+
✨ **Developer Experience**
|
|
327
|
+
Clean, intuitive API that feels natural:
|
|
328
|
+
|
|
329
|
+
```typescript
|
|
330
|
+
const seal = v.object({ ... }); // Cast a seal
|
|
331
|
+
await v.validate(seal, data); // Verify with the seal
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## 🤝 Philosophy
|
|
337
|
+
|
|
338
|
+
**Seal** is designed around three principles:
|
|
339
|
+
|
|
340
|
+
1. **Type Safety First** - TypeScript support is not an afterthought
|
|
341
|
+
2. **Framework Agnostic** - Works anywhere JavaScript runs
|
|
342
|
+
3. **Intuitive API** - If it feels right, it probably works
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## 📖 Full Documentation
|
|
347
|
+
|
|
348
|
+
For complete documentation, visit: **[https://warlock.js.org/seal](https://warlock.js.org/seal)**
|
|
349
|
+
|
|
350
|
+
The documentation includes:
|
|
351
|
+
|
|
352
|
+
- 📘 [Getting Started Guide](https://warlock.js.org/seal/getting-started/introduction)
|
|
353
|
+
- 🎯 [Core Concepts](https://warlock.js.org/seal/concepts/three-layer-architecture)
|
|
354
|
+
- 📝 [Validator Reference](https://warlock.js.org/seal/base-validator)
|
|
355
|
+
- 🔍 [All Validation Rules](https://warlock.js.org/seal/string-validator)
|
|
356
|
+
- 🔌 [Plugin System](https://warlock.js.org/seal/advanced/plugins)
|
|
357
|
+
- 🎨 [Custom Rules](https://warlock.js.org/seal/advanced/custom-rules)
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
## 📄 License
|
|
362
|
+
|
|
363
|
+
MIT
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## 🤝 Contributing
|
|
368
|
+
|
|
369
|
+
See main Warlock.js repository
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
**Cast your seals and protect your data! 🔮✨**
|
package/cjs/config.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seal Configuration
|
|
3
|
+
*
|
|
4
|
+
* Global configuration for the Seal validation library
|
|
5
|
+
*/
|
|
6
|
+
import type { AttributeTranslation, RuleTranslation } from "./types";
|
|
7
|
+
export type TranslateRuleCallback = (ruleTranslation: RuleTranslation) => string;
|
|
8
|
+
export type TranslateAttributeCallback = (attributeTranslation: AttributeTranslation) => string;
|
|
9
|
+
export type SealConfig = {
|
|
10
|
+
/**
|
|
11
|
+
* Translation function for error messages
|
|
12
|
+
* Default: returns the key with attributes replaced
|
|
13
|
+
*/
|
|
14
|
+
translateRule?: TranslateRuleCallback;
|
|
15
|
+
/**
|
|
16
|
+
* Translation function for attribute messages
|
|
17
|
+
*/
|
|
18
|
+
translateAttribute?: TranslateAttributeCallback;
|
|
19
|
+
/**
|
|
20
|
+
* Default to first error only in validation
|
|
21
|
+
* Default: true
|
|
22
|
+
*/
|
|
23
|
+
firstErrorOnly?: boolean;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Configure Seal globally
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { configureSeal } from "@warlock.js/seal";
|
|
31
|
+
* import { trans } from "@mongez/localization";
|
|
32
|
+
*
|
|
33
|
+
* configureSeal({
|
|
34
|
+
* translateRule: (ruleTranslation) => trans(`validation.${ruleTranslation.rule.name}`, ruleTranslation.attributes),
|
|
35
|
+
* translateAttribute: (attributeTranslation) => trans(`validation.attributes.${attributeTranslation.rule.name}.${attributeTranslation.attribute}`, attributeTranslation.context.allValues),
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function configureSeal(options: Partial<SealConfig>): void;
|
|
40
|
+
/**
|
|
41
|
+
* Get current Seal configuration
|
|
42
|
+
*/
|
|
43
|
+
export declare function getSealConfig(): SealConfig;
|
|
44
|
+
/**
|
|
45
|
+
* Reset configuration to defaults
|
|
46
|
+
*/
|
|
47
|
+
export declare function resetSealConfig(): void;
|
|
48
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,CAClC,eAAe,EAAE,eAAe,KAC7B,MAAM,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,CACvC,oBAAoB,EAAE,oBAAoB,KACvC,MAAM,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,0BAA0B,CAAC;IAEhD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AASF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
|
package/cjs/config.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Seal Configuration
|
|
3
|
+
*
|
|
4
|
+
* Global configuration for the Seal validation library
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Global Seal configuration
|
|
8
|
+
*/
|
|
9
|
+
const config = {
|
|
10
|
+
firstErrorOnly: true,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Configure Seal globally
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { configureSeal } from "@warlock.js/seal";
|
|
18
|
+
* import { trans } from "@mongez/localization";
|
|
19
|
+
*
|
|
20
|
+
* configureSeal({
|
|
21
|
+
* translateRule: (ruleTranslation) => trans(`validation.${ruleTranslation.rule.name}`, ruleTranslation.attributes),
|
|
22
|
+
* translateAttribute: (attributeTranslation) => trans(`validation.attributes.${attributeTranslation.rule.name}.${attributeTranslation.attribute}`, attributeTranslation.context.allValues),
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
function configureSeal(options) {
|
|
27
|
+
Object.assign(config, options);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get current Seal configuration
|
|
31
|
+
*/
|
|
32
|
+
function getSealConfig() {
|
|
33
|
+
return config;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Reset configuration to defaults
|
|
37
|
+
*/
|
|
38
|
+
function resetSealConfig() {
|
|
39
|
+
delete config.translateRule;
|
|
40
|
+
delete config.translateAttribute;
|
|
41
|
+
config.firstErrorOnly = true;
|
|
42
|
+
}exports.configureSeal=configureSeal;exports.getSealConfig=getSealConfig;exports.resetSealConfig=resetSealConfig;//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../src/config.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAA;;;;AAIG;AA8BH;;AAEG;AACH,MAAM,MAAM,GAAe;AACzB,IAAA,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF;;;;;;;;;;;;;AAaG;AACG,SAAU,aAAa,CAAC,OAA4B,EAAA;AACxD,IAAA,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;AAEG;SACa,aAAa,GAAA;AAC3B,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;AAEG;SACa,eAAe,GAAA;IAC7B,OAAO,MAAM,CAAC,aAAa,CAAC;IAC5B,OAAO,MAAM,CAAC,kBAAkB,CAAC;AAEjC,IAAA,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;AAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factory/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type SealConfig } from "../config";
|
|
2
|
+
import type { ValidationResult } from "../types";
|
|
3
|
+
import type { BaseValidator } from "../validators";
|
|
4
|
+
/**
|
|
5
|
+
* Validate data against a schema
|
|
6
|
+
*/
|
|
7
|
+
export declare const validate: <T extends BaseValidator>(schema: T, data: any, configurations?: SealConfig) => Promise<ValidationResult>;
|
|
8
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/factory/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,QAAQ,6CAEb,GAAG,mBACO,UAAU,KACzB,QAAQ,gBAAgB,CAiB1B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';var config=require('../config.js');/**
|
|
2
|
+
* Validate data against a schema
|
|
3
|
+
*/
|
|
4
|
+
const validate = async (schema, data, // Temporarily use any - will fix type inference
|
|
5
|
+
configurations = config.getSealConfig()) => {
|
|
6
|
+
const context = {
|
|
7
|
+
allValues: data,
|
|
8
|
+
parent: null,
|
|
9
|
+
value: data,
|
|
10
|
+
key: "",
|
|
11
|
+
path: "",
|
|
12
|
+
translateRule(ruleTranslation) {
|
|
13
|
+
return configurations.translateRule?.(ruleTranslation) ?? "";
|
|
14
|
+
},
|
|
15
|
+
translateAttribute(attributeTranslation) {
|
|
16
|
+
return configurations.translateAttribute?.(attributeTranslation) ?? "";
|
|
17
|
+
},
|
|
18
|
+
configurations,
|
|
19
|
+
};
|
|
20
|
+
return await schema.validate(data, context);
|
|
21
|
+
};exports.validate=validate;//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sources":["../../src/factory/validate.ts"],"sourcesContent":[null],"names":["getSealConfig"],"mappings":"gDAIA;;AAEG;AACU,MAAA,QAAQ,GAAG,OACtB,MAAS,EACT,IAAS;AACT,cAA6B,GAAAA,oBAAa,EAAE,KACf;AAC7B,IAAA,MAAM,OAAO,GAAkB;AAC7B,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,aAAa,CAAC,eAAe,EAAA;YAC3B,OAAO,cAAc,CAAC,aAAa,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC;SAC9D;AACD,QAAA,kBAAkB,CAAC,oBAAoB,EAAA;YACrC,OAAO,cAAc,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC;SACxE;QACD,cAAc;KACf,CAAC;IAEF,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9C"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Schema, ValidationResult } from "../types";
|
|
2
|
+
import type { BaseValidator } from "../validators";
|
|
3
|
+
import { AnyValidator, ArrayValidator, BooleanValidator, DateValidator, FloatValidator, IntValidator, NumberValidator, ObjectValidator, ScalarValidator, StringValidator } from "../validators";
|
|
4
|
+
/**
|
|
5
|
+
* Seal factory object - creates instances of validators
|
|
6
|
+
*
|
|
7
|
+
* Use 'v' to create validation schemas (seals) for your data
|
|
8
|
+
*/
|
|
9
|
+
export declare const v: ValidatorV;
|
|
10
|
+
export interface ValidatorV {
|
|
11
|
+
object: <T extends Schema>(schema: T, errorMessage?: string) => ObjectValidator & {
|
|
12
|
+
schema: T;
|
|
13
|
+
};
|
|
14
|
+
any: () => AnyValidator;
|
|
15
|
+
forbidden: () => AnyValidator;
|
|
16
|
+
array: <T extends BaseValidator>(validator: T, errorMessage?: string) => ArrayValidator & {
|
|
17
|
+
validator: T;
|
|
18
|
+
};
|
|
19
|
+
date: (errorMessage?: string) => DateValidator;
|
|
20
|
+
string: (errorMessage?: string) => StringValidator;
|
|
21
|
+
enum: (values: any, errorMessage?: string) => ScalarValidator;
|
|
22
|
+
number: (errorMessage?: string) => NumberValidator;
|
|
23
|
+
int: (errorMessage?: string) => IntValidator;
|
|
24
|
+
float: (errorMessage?: string) => FloatValidator;
|
|
25
|
+
boolean: (errorMessage?: string) => BooleanValidator;
|
|
26
|
+
scalar: (errorMessage?: string) => ScalarValidator;
|
|
27
|
+
localized: (valueValidator?: BaseValidator, errorMessage?: string) => ArrayValidator & {
|
|
28
|
+
validator: BaseValidator;
|
|
29
|
+
};
|
|
30
|
+
validate: <T extends BaseValidator>(schema: T, data: any) => Promise<ValidationResult>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/factory/validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,eAAe,CAAC;AAGvB;;;;GAIG;AACH,eAAO,MAAM,CAAC,EAAE,UAwDU,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,CAAC,SAAS,MAAM,EACvB,MAAM,EAAE,CAAC,EACT,YAAY,CAAC,EAAE,MAAM,KAClB,eAAe,GAAG;QACrB,MAAM,EAAE,CAAC,CAAC;KACX,CAAC;IACF,GAAG,EAAE,MAAM,YAAY,CAAC;IACxB,SAAS,EAAE,MAAM,YAAY,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC,SAAS,aAAa,EAC7B,SAAS,EAAE,CAAC,EACZ,YAAY,CAAC,EAAE,MAAM,KAClB,cAAc,GAAG;QACpB,SAAS,EAAE,CAAC,CAAC;KACd,CAAC;IACF,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;IAC/C,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC;IACnD,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC;IAC9D,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC;IACnD,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,YAAY,CAAC;IAC7C,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,cAAc,CAAC;IACjD,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,gBAAgB,CAAC;IACrD,MAAM,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,eAAe,CAAC;IACnD,SAAS,EAAE,CACT,cAAc,CAAC,EAAE,aAAa,EAC9B,YAAY,CAAC,EAAE,MAAM,KAClB,cAAc,GAAG;QACpB,SAAS,EAAE,aAAa,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,SAAS,aAAa,EAChC,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,GAAG,KACN,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';var anyValidator=require('../validators/any-validator.js'),arrayValidator=require('../validators/array-validator.js');require('@mongez/reinforcements'),require('@mongez/supportive-is'),require('net');var booleanValidator=require('../validators/boolean-validator.js'),dateValidator=require('../validators/date-validator.js'),floatValidator=require('../validators/float-validator.js'),intValidator=require('../validators/int-validator.js'),numberValidator=require('../validators/number-validator.js'),objectValidator=require('../validators/object-validator.js'),scalarValidator=require('../validators/scalar-validator.js'),stringValidator=require('../validators/string-validator.js'),validate=require('./validate.js');/**
|
|
2
|
+
* Seal factory object - creates instances of validators
|
|
3
|
+
*
|
|
4
|
+
* Use 'v' to create validation schemas (seals) for your data
|
|
5
|
+
*/
|
|
6
|
+
const v = {
|
|
7
|
+
/** Create an object validator */
|
|
8
|
+
object: (schema, errorMessage) => new objectValidator.ObjectValidator(schema, errorMessage),
|
|
9
|
+
/** Create an any validator */
|
|
10
|
+
any: () => new anyValidator.AnyValidator(),
|
|
11
|
+
/** Create a forbidden validator */
|
|
12
|
+
forbidden: () => v.any().forbidden(),
|
|
13
|
+
/** Create an array validator */
|
|
14
|
+
array: (validator, errorMessage) => new arrayValidator.ArrayValidator(validator, errorMessage),
|
|
15
|
+
/** Create a date validator */
|
|
16
|
+
date: (errorMessage) => new dateValidator.DateValidator(errorMessage),
|
|
17
|
+
/** Create a string validator */
|
|
18
|
+
string: (errorMessage) => new stringValidator.StringValidator(errorMessage),
|
|
19
|
+
/** Create an enum validator */
|
|
20
|
+
enum: (values, errorMessage) => new stringValidator.StringValidator().enum(values, errorMessage),
|
|
21
|
+
/** Create a number validator */
|
|
22
|
+
number: (errorMessage) => new numberValidator.NumberValidator(errorMessage),
|
|
23
|
+
/** Create an integer validator */
|
|
24
|
+
int: (errorMessage) => new intValidator.IntValidator(errorMessage),
|
|
25
|
+
/** Create a float validator */
|
|
26
|
+
float: (errorMessage) => new floatValidator.FloatValidator(errorMessage),
|
|
27
|
+
/** Create a boolean validator */
|
|
28
|
+
boolean: (errorMessage) => new booleanValidator.BooleanValidator(errorMessage),
|
|
29
|
+
/** Create a scalar validator */
|
|
30
|
+
scalar: (errorMessage) => new scalarValidator.ScalarValidator(errorMessage),
|
|
31
|
+
/** Create a localized array validator */
|
|
32
|
+
localized: (valueValidator, errorMessage) => v.array(v.object({
|
|
33
|
+
localeCode: v.string().required(),
|
|
34
|
+
value: (valueValidator || v.string()).required(),
|
|
35
|
+
}), errorMessage),
|
|
36
|
+
/** Validate data against a schema */
|
|
37
|
+
validate: validate.validate,
|
|
38
|
+
};exports.v=v;//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sources":["../../src/factory/validators.ts"],"sourcesContent":[null],"names":["ObjectValidator","AnyValidator","ArrayValidator","DateValidator","StringValidator","NumberValidator","IntValidator","FloatValidator","BooleanValidator","ScalarValidator","validateFunction"],"mappings":"ytBAgBA;;;;AAIG;AACU,MAAA,CAAC,GAAe;;AAE3B,IAAA,MAAM,EAAE,CAAmB,MAAS,EAAE,YAAqB,KACzD,IAAIA,+BAAe,CAAC,MAAM,EAAE,YAAY,CAEvC;;AAGH,IAAA,GAAG,EAAE,MAAM,IAAIC,yBAAY,EAAE;;IAG7B,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE;;AAGpC,IAAA,KAAK,EAAE,CAA0B,SAAY,EAAE,YAAqB,KAClE,IAAIC,6BAAc,CAAC,SAAS,EAAE,YAAY,CAEzC;;IAGH,IAAI,EAAE,CAAC,YAAqB,KAAK,IAAIC,2BAAa,CAAC,YAAY,CAAC;;IAGhE,MAAM,EAAE,CAAC,YAAqB,KAAK,IAAIC,+BAAe,CAAC,YAAY,CAAC;;AAGpE,IAAA,IAAI,EAAE,CAAC,MAAW,EAAE,YAAqB,KACvC,IAAIA,+BAAe,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;;IAGlD,MAAM,EAAE,CAAC,YAAqB,KAAK,IAAIC,+BAAe,CAAC,YAAY,CAAC;;IAGpE,GAAG,EAAE,CAAC,YAAqB,KAAK,IAAIC,yBAAY,CAAC,YAAY,CAAC;;IAG9D,KAAK,EAAE,CAAC,YAAqB,KAAK,IAAIC,6BAAc,CAAC,YAAY,CAAC;;IAGlE,OAAO,EAAE,CAAC,YAAqB,KAAK,IAAIC,iCAAgB,CAAC,YAAY,CAAC;;IAGtE,MAAM,EAAE,CAAC,YAAqB,KAAK,IAAIC,+BAAe,CAAC,YAAY,CAAC;;AAGpE,IAAA,SAAS,EAAE,CAAC,cAA8B,EAAE,YAAqB,KAC/D,CAAC,CAAC,KAAK,CACL,CAAC,CAAC,MAAM,CAAC;AACP,QAAA,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,KAAK,EAAE,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE;KACjD,CAAC,EACF,YAAY,CACb;;AAGH,IAAA,QAAQ,EAAEC,iBAAgB;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect if value is a date value or field name
|
|
3
|
+
*
|
|
4
|
+
* Date values:
|
|
5
|
+
* - Date instance
|
|
6
|
+
* - Number (timestamp)
|
|
7
|
+
* - String with date separators (- or /)
|
|
8
|
+
*
|
|
9
|
+
* Field names:
|
|
10
|
+
* - Strings without - or /
|
|
11
|
+
*
|
|
12
|
+
* @param value - Value to check
|
|
13
|
+
* @returns true if it's a date value, false if it's a field name
|
|
14
|
+
*/
|
|
15
|
+
export declare function isDateValue(value: any): boolean;
|
|
16
|
+
//# sourceMappingURL=date-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-helpers.d.ts","sourceRoot":"","sources":["../../src/helpers/date-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAU/C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Detect if value is a date value or field name
|
|
3
|
+
*
|
|
4
|
+
* Date values:
|
|
5
|
+
* - Date instance
|
|
6
|
+
* - Number (timestamp)
|
|
7
|
+
* - String with date separators (- or /)
|
|
8
|
+
*
|
|
9
|
+
* Field names:
|
|
10
|
+
* - Strings without - or /
|
|
11
|
+
*
|
|
12
|
+
* @param value - Value to check
|
|
13
|
+
* @returns true if it's a date value, false if it's a field name
|
|
14
|
+
*/
|
|
15
|
+
function isDateValue(value) {
|
|
16
|
+
if (value instanceof Date)
|
|
17
|
+
return true;
|
|
18
|
+
if (typeof value === "number")
|
|
19
|
+
return true;
|
|
20
|
+
if (typeof value === "string" &&
|
|
21
|
+
(value.includes("-") || value.includes("/"))) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}exports.isDateValue=isDateValue;//# sourceMappingURL=date-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-helpers.js","sources":["../../src/helpers/date-helpers.ts"],"sourcesContent":[null],"names":[],"mappings":"aAAA;;;;;;;;;;;;;AAaG;AACG,SAAU,WAAW,CAAC,KAAU,EAAA;IACpC,IAAI,KAAK,YAAY,IAAI;AAAE,QAAA,OAAO,IAAI,CAAC;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;IAC3C,IACE,OAAO,KAAK,KAAK,QAAQ;AACzB,SAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC5C;AACA,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACD,IAAA,OAAO,KAAK,CAAC;AACf"}
|