@clementine-solutions/jane-io 1.0.0 → 1.0.2
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 +132 -1
- package/dist/core/analysis/diff.d.ts +35 -0
- package/dist/core/analysis/diff.js +88 -0
- package/dist/core/analysis/explain.d.ts +35 -0
- package/dist/core/analysis/explain.js +117 -0
- package/dist/core/analysis/index.d.ts +14 -0
- package/dist/core/analysis/index.js +26 -0
- package/dist/core/analysis/replay.d.ts +34 -0
- package/dist/core/analysis/replay.js +68 -0
- package/dist/core/analysis/telemetry.d.ts +28 -0
- package/dist/core/analysis/telemetry.js +123 -0
- package/dist/core/boundary-rules/at-most-one.d.ts +17 -0
- package/dist/core/boundary-rules/at-most-one.js +38 -0
- package/dist/core/boundary-rules/conditionally-required.d.ts +18 -0
- package/dist/core/boundary-rules/conditionally-required.js +44 -0
- package/dist/core/boundary-rules/date-range.d.ts +17 -0
- package/dist/core/boundary-rules/date-range.js +39 -0
- package/dist/core/boundary-rules/index.d.ts +18 -0
- package/dist/core/boundary-rules/index.js +21 -0
- package/dist/core/boundary-rules/mutually-exclusive.d.ts +16 -0
- package/dist/core/boundary-rules/mutually-exclusive.js +38 -0
- package/dist/core/boundary-rules/no-unknown-fields.d.ts +17 -0
- package/dist/core/boundary-rules/no-unknown-fields.js +39 -0
- package/dist/core/boundary-rules/require-all.d.ts +16 -0
- package/dist/core/boundary-rules/require-all.js +39 -0
- package/dist/core/boundary-rules/require-one.d.ts +17 -0
- package/dist/core/boundary-rules/require-one.js +41 -0
- package/dist/core/common/events.d.ts +37 -0
- package/dist/core/common/events.js +82 -0
- package/dist/core/common/fluent.d.ts +151 -0
- package/dist/core/common/fluent.js +429 -0
- package/dist/core/common/index.d.ts +16 -0
- package/dist/core/common/index.js +31 -0
- package/dist/core/common/policy.d.ts +170 -0
- package/dist/core/common/policy.js +550 -0
- package/dist/core/common/utilities.d.ts +59 -0
- package/dist/core/common/utilities.js +177 -0
- package/dist/core/common/wildcard.d.ts +27 -0
- package/dist/core/common/wildcard.js +63 -0
- package/dist/core/field-path/construct.d.ts +77 -0
- package/dist/core/field-path/construct.js +189 -0
- package/dist/core/field-path/format.d.ts +41 -0
- package/dist/core/field-path/format.js +154 -0
- package/dist/core/field-path/index.d.ts +14 -0
- package/dist/core/field-path/index.js +26 -0
- package/dist/core/field-path/utilities.d.ts +85 -0
- package/dist/core/field-path/utilities.js +138 -0
- package/dist/core/field-path/walk.d.ts +36 -0
- package/dist/core/field-path/walk.js +80 -0
- package/dist/core/fluent-registry.d.ts +138 -0
- package/dist/core/fluent-registry.js +151 -0
- package/dist/core/normalizers/array/compact-sparse-array.d.ts +22 -0
- package/dist/core/normalizers/array/compact-sparse-array.js +40 -0
- package/dist/core/normalizers/array/flatten-one-level.d.ts +17 -0
- package/dist/core/normalizers/array/flatten-one-level.js +45 -0
- package/dist/core/normalizers/array/remove-empty-string-items.d.ts +6 -0
- package/dist/core/normalizers/array/remove-empty-string-items.js +34 -0
- package/dist/core/normalizers/array/remove-null-items.d.ts +16 -0
- package/dist/core/normalizers/array/remove-null-items.js +34 -0
- package/dist/core/normalizers/array/remove-undefined-items.d.ts +16 -0
- package/dist/core/normalizers/array/remove-undefined-items.js +34 -0
- package/dist/core/normalizers/date/invalid-date-to-undefined.d.ts +17 -0
- package/dist/core/normalizers/date/invalid-date-to-undefined.js +35 -0
- package/dist/core/normalizers/index.d.ts +28 -0
- package/dist/core/normalizers/index.js +46 -0
- package/dist/core/normalizers/normalizer-register.d.ts +17 -0
- package/dist/core/normalizers/normalizer-register.js +41 -0
- package/dist/core/normalizers/number/infinity-to-undefined.d.ts +18 -0
- package/dist/core/normalizers/number/infinity-to-undefined.js +35 -0
- package/dist/core/normalizers/number/nan-to-undefined.d.ts +17 -0
- package/dist/core/normalizers/number/nan-to-undefined.js +34 -0
- package/dist/core/normalizers/number/normalize-negative-zero.d.ts +16 -0
- package/dist/core/normalizers/number/normalize-negative-zero.js +33 -0
- package/dist/core/normalizers/object/remove-empty-array-keys.d.ts +17 -0
- package/dist/core/normalizers/object/remove-empty-array-keys.js +38 -0
- package/dist/core/normalizers/object/remove-empty-object-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-empty-object-keys.js +42 -0
- package/dist/core/normalizers/object/remove-empty-string-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-empty-string-keys.js +37 -0
- package/dist/core/normalizers/object/remove-null-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-null-keys.js +37 -0
- package/dist/core/normalizers/object/remove-undefined-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-undefined-keys.js +37 -0
- package/dist/core/normalizers/string/collapse-whitespace.d.ts +17 -0
- package/dist/core/normalizers/string/collapse-whitespace.js +35 -0
- package/dist/core/normalizers/string/empty-to-undefined.d.ts +16 -0
- package/dist/core/normalizers/string/empty-to-undefined.js +33 -0
- package/dist/core/normalizers/string/trim.d.ts +16 -0
- package/dist/core/normalizers/string/trim.js +34 -0
- package/dist/core/parsers/index.d.ts +22 -0
- package/dist/core/parsers/index.js +43 -0
- package/dist/core/parsers/parse-array-string.d.ts +16 -0
- package/dist/core/parsers/parse-array-string.js +36 -0
- package/dist/core/parsers/parse-bigint-string.d.ts +16 -0
- package/dist/core/parsers/parse-bigint-string.js +33 -0
- package/dist/core/parsers/parse-binary-string.d.ts +16 -0
- package/dist/core/parsers/parse-binary-string.js +33 -0
- package/dist/core/parsers/parse-boolean-string.d.ts +16 -0
- package/dist/core/parsers/parse-boolean-string.js +27 -0
- package/dist/core/parsers/parse-date-string.d.ts +16 -0
- package/dist/core/parsers/parse-date-string.js +30 -0
- package/dist/core/parsers/parse-duration-string.d.ts +16 -0
- package/dist/core/parsers/parse-duration-string.js +37 -0
- package/dist/core/parsers/parse-hex-string.d.ts +16 -0
- package/dist/core/parsers/parse-hex-string.js +29 -0
- package/dist/core/parsers/parse-integer-string.d.ts +16 -0
- package/dist/core/parsers/parse-integer-string.js +30 -0
- package/dist/core/parsers/parse-json-string.d.ts +17 -0
- package/dist/core/parsers/parse-json-string.js +35 -0
- package/dist/core/parsers/parse-numeric-string.d.ts +16 -0
- package/dist/core/parsers/parse-numeric-string.js +29 -0
- package/dist/core/parsers/parse-object-string.d.ts +16 -0
- package/dist/core/parsers/parse-object-string.js +36 -0
- package/dist/core/parsers/parse-octal-string.d.ts +16 -0
- package/dist/core/parsers/parse-octal-string.js +33 -0
- package/dist/core/parsers/parse-scientific-notation-string.d.ts +16 -0
- package/dist/core/parsers/parse-scientific-notation-string.js +30 -0
- package/dist/core/parsers/parse-url-string.d.ts +16 -0
- package/dist/core/parsers/parse-url-string.js +36 -0
- package/dist/core/pipeline/boundary.d.ts +36 -0
- package/dist/core/pipeline/boundary.js +256 -0
- package/dist/core/pipeline/contain.d.ts +122 -0
- package/dist/core/pipeline/contain.js +339 -0
- package/dist/core/pipeline/index.d.ts +16 -0
- package/dist/core/pipeline/index.js +37 -0
- package/dist/core/pipeline/normalize.d.ts +34 -0
- package/dist/core/pipeline/normalize.js +76 -0
- package/dist/core/pipeline/parse.d.ts +40 -0
- package/dist/core/pipeline/parse.js +91 -0
- package/dist/core/pipeline/pipeline.d.ts +23 -0
- package/dist/core/pipeline/pipeline.js +418 -0
- package/dist/core/pipeline/scan.d.ts +46 -0
- package/dist/core/pipeline/scan.js +115 -0
- package/dist/core/pipeline/validate.d.ts +40 -0
- package/dist/core/pipeline/validate.js +74 -0
- package/dist/core/scanners/any/scan-for-sentinels.d.ts +19 -0
- package/dist/core/scanners/any/scan-for-sentinels.js +35 -0
- package/dist/core/scanners/array/array-is-deep.d.ts +19 -0
- package/dist/core/scanners/array/array-is-deep.js +38 -0
- package/dist/core/scanners/array/array-is-heterogenous.d.ts +18 -0
- package/dist/core/scanners/array/array-is-heterogenous.js +39 -0
- package/dist/core/scanners/array/array-is-large.d.ts +19 -0
- package/dist/core/scanners/array/array-is-large.js +32 -0
- package/dist/core/scanners/bigint/bigint-is-large.d.ts +20 -0
- package/dist/core/scanners/bigint/bigint-is-large.js +34 -0
- package/dist/core/scanners/bigint/bigint-not-safe.d.ts +20 -0
- package/dist/core/scanners/bigint/bigint-not-safe.js +34 -0
- package/dist/core/scanners/date/date-is-before-epoch.d.ts +19 -0
- package/dist/core/scanners/date/date-is-before-epoch.js +32 -0
- package/dist/core/scanners/date/date-is-far-future.d.ts +19 -0
- package/dist/core/scanners/date/date-is-far-future.js +32 -0
- package/dist/core/scanners/date/date-is-invalid.d.ts +19 -0
- package/dist/core/scanners/date/date-is-invalid.js +31 -0
- package/dist/core/scanners/index.d.ts +31 -0
- package/dist/core/scanners/index.js +58 -0
- package/dist/core/scanners/number/number-is-infinite.d.ts +19 -0
- package/dist/core/scanners/number/number-is-infinite.js +31 -0
- package/dist/core/scanners/number/number-is-nan.d.ts +19 -0
- package/dist/core/scanners/number/number-is-nan.js +31 -0
- package/dist/core/scanners/number/number-is-too-large.d.ts +20 -0
- package/dist/core/scanners/number/number-is-too-large.js +33 -0
- package/dist/core/scanners/number/number-is-unsafe-integer.d.ts +19 -0
- package/dist/core/scanners/number/number-is-unsafe-integer.js +31 -0
- package/dist/core/scanners/object/object-has-circular-references.d.ts +20 -0
- package/dist/core/scanners/object/object-has-circular-references.js +43 -0
- package/dist/core/scanners/object/object-has-many-keys.d.ts +19 -0
- package/dist/core/scanners/object/object-has-many-keys.js +33 -0
- package/dist/core/scanners/object/object-is-deep.d.ts +20 -0
- package/dist/core/scanners/object/object-is-deep.js +38 -0
- package/dist/core/scanners/scanner-registry.d.ts +19 -0
- package/dist/core/scanners/scanner-registry.js +36 -0
- package/dist/core/scanners/string/string-has-unsafe-unicode.d.ts +19 -0
- package/dist/core/scanners/string/string-has-unsafe-unicode.js +32 -0
- package/dist/core/scanners/string/string-has-whitespace-edges.d.ts +19 -0
- package/dist/core/scanners/string/string-has-whitespace-edges.js +31 -0
- package/dist/core/scanners/string/string-is-long.d.ts +19 -0
- package/dist/core/scanners/string/string-is-long.js +32 -0
- package/dist/core/scanners/unknown/unknown-not-scannable.d.ts +21 -0
- package/dist/core/scanners/unknown/unknown-not-scannable.js +34 -0
- package/dist/core/shapes/analysis.d.ts +239 -0
- package/dist/core/shapes/analysis.js +11 -0
- package/dist/core/shapes/boundary.d.ts +126 -0
- package/dist/core/shapes/boundary.js +11 -0
- package/dist/core/shapes/events.d.ts +83 -0
- package/dist/core/shapes/events.js +10 -0
- package/dist/core/shapes/field-path.d.ts +51 -0
- package/dist/core/shapes/field-path.js +10 -0
- package/dist/core/shapes/index.d.ts +21 -0
- package/dist/core/shapes/index.js +11 -0
- package/dist/core/shapes/normalize.d.ts +59 -0
- package/dist/core/shapes/normalize.js +11 -0
- package/dist/core/shapes/parse.d.ts +75 -0
- package/dist/core/shapes/parse.js +11 -0
- package/dist/core/shapes/pipeline.d.ts +149 -0
- package/dist/core/shapes/pipeline.js +11 -0
- package/dist/core/shapes/policy.d.ts +158 -0
- package/dist/core/shapes/policy.js +11 -0
- package/dist/core/shapes/public.d.ts +92 -0
- package/dist/core/shapes/public.js +10 -0
- package/dist/core/shapes/scan.d.ts +126 -0
- package/dist/core/shapes/scan.js +11 -0
- package/dist/core/shapes/validate.d.ts +65 -0
- package/dist/core/shapes/validate.js +11 -0
- package/dist/core/validators/array/array-max-items.d.ts +25 -0
- package/dist/core/validators/array/array-max-items.js +42 -0
- package/dist/core/validators/array/array-min-items.d.ts +25 -0
- package/dist/core/validators/array/array-min-items.js +42 -0
- package/dist/core/validators/array/array.d.ts +22 -0
- package/dist/core/validators/array/array.js +34 -0
- package/dist/core/validators/array/excludes.d.ts +25 -0
- package/dist/core/validators/array/excludes.js +47 -0
- package/dist/core/validators/array/has-unique-items.d.ts +24 -0
- package/dist/core/validators/array/has-unique-items.js +46 -0
- package/dist/core/validators/array/includes.d.ts +24 -0
- package/dist/core/validators/array/includes.js +46 -0
- package/dist/core/validators/array/items-equal.d.ts +25 -0
- package/dist/core/validators/array/items-equal.js +42 -0
- package/dist/core/validators/array/no-empty-string-items.d.ts +24 -0
- package/dist/core/validators/array/no-empty-string-items.js +46 -0
- package/dist/core/validators/array/no-null-items.d.ts +24 -0
- package/dist/core/validators/array/no-null-items.js +46 -0
- package/dist/core/validators/array/no-undefined-items.d.ts +24 -0
- package/dist/core/validators/array/no-undefined-items.js +45 -0
- package/dist/core/validators/array/non-empty-array.d.ts +24 -0
- package/dist/core/validators/array/non-empty-array.js +45 -0
- package/dist/core/validators/array/not-sparse.d.ts +25 -0
- package/dist/core/validators/array/not-sparse.js +44 -0
- package/dist/core/validators/bigint/bigint-equals.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-equals.js +57 -0
- package/dist/core/validators/bigint/bigint-max.d.ts +25 -0
- package/dist/core/validators/bigint/bigint-max.js +63 -0
- package/dist/core/validators/bigint/bigint-min.d.ts +25 -0
- package/dist/core/validators/bigint/bigint-min.js +87 -0
- package/dist/core/validators/bigint/bigint-negative.d.ts +23 -0
- package/dist/core/validators/bigint/bigint-negative.js +73 -0
- package/dist/core/validators/bigint/bigint-non-negative.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-non-negative.js +72 -0
- package/dist/core/validators/bigint/bigint-non-positive.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-non-positive.js +72 -0
- package/dist/core/validators/bigint/bigint-positive.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-positive.js +72 -0
- package/dist/core/validators/bigint/bigint-safe.d.ts +25 -0
- package/dist/core/validators/bigint/bigint-safe.js +75 -0
- package/dist/core/validators/bigint/bigint.d.ts +20 -0
- package/dist/core/validators/bigint/bigint.js +38 -0
- package/dist/core/validators/boolean/boolean.d.ts +21 -0
- package/dist/core/validators/boolean/boolean.js +39 -0
- package/dist/core/validators/boolean/is-false.d.ts +22 -0
- package/dist/core/validators/boolean/is-false.js +48 -0
- package/dist/core/validators/boolean/is-true.d.ts +22 -0
- package/dist/core/validators/boolean/is-true.js +48 -0
- package/dist/core/validators/common/is-country-code.d.ts +17 -0
- package/dist/core/validators/common/is-country-code.js +36 -0
- package/dist/core/validators/common/is-currency-code.d.ts +17 -0
- package/dist/core/validators/common/is-currency-code.js +36 -0
- package/dist/core/validators/common/is-email-strict.d.ts +17 -0
- package/dist/core/validators/common/is-email-strict.js +36 -0
- package/dist/core/validators/common/is-email.d.ts +17 -0
- package/dist/core/validators/common/is-email.js +36 -0
- package/dist/core/validators/common/is-ip.d.ts +17 -0
- package/dist/core/validators/common/is-ip.js +37 -0
- package/dist/core/validators/common/is-phone-strict.d.ts +17 -0
- package/dist/core/validators/common/is-phone-strict.js +36 -0
- package/dist/core/validators/common/is-phone.d.ts +17 -0
- package/dist/core/validators/common/is-phone.js +36 -0
- package/dist/core/validators/common/is-port.d.ts +17 -0
- package/dist/core/validators/common/is-port.js +35 -0
- package/dist/core/validators/common/is-postal-code.d.ts +17 -0
- package/dist/core/validators/common/is-postal-code.js +36 -0
- package/dist/core/validators/common/is-url.d.ts +17 -0
- package/dist/core/validators/common/is-url.js +38 -0
- package/dist/core/validators/common/is-uuid.d.ts +17 -0
- package/dist/core/validators/common/is-uuid.js +36 -0
- package/dist/core/validators/date/before-epoch.d.ts +28 -0
- package/dist/core/validators/date/before-epoch.js +56 -0
- package/dist/core/validators/date/date-now-required.d.ts +22 -0
- package/dist/core/validators/date/date-now-required.js +48 -0
- package/dist/core/validators/date/is-date.d.ts +21 -0
- package/dist/core/validators/date/is-date.js +47 -0
- package/dist/core/validators/date/is-far-future.d.ts +23 -0
- package/dist/core/validators/date/is-far-future.js +46 -0
- package/dist/core/validators/date/is-future.d.ts +24 -0
- package/dist/core/validators/date/is-future.js +59 -0
- package/dist/core/validators/date/is-past.d.ts +24 -0
- package/dist/core/validators/date/is-past.js +59 -0
- package/dist/core/validators/date/not-after.d.ts +25 -0
- package/dist/core/validators/date/not-after.js +66 -0
- package/dist/core/validators/date/not-before.d.ts +25 -0
- package/dist/core/validators/date/not-before.js +66 -0
- package/dist/core/validators/date/same-day.d.ts +25 -0
- package/dist/core/validators/date/same-day.js +60 -0
- package/dist/core/validators/date/same-month.d.ts +25 -0
- package/dist/core/validators/date/same-month.js +59 -0
- package/dist/core/validators/date/same-year.d.ts +24 -0
- package/dist/core/validators/date/same-year.js +56 -0
- package/dist/core/validators/date/too-early.d.ts +25 -0
- package/dist/core/validators/date/too-early.js +57 -0
- package/dist/core/validators/date/too-late.d.ts +25 -0
- package/dist/core/validators/date/too-late.js +57 -0
- package/dist/core/validators/date/weekday.d.ts +32 -0
- package/dist/core/validators/date/weekday.js +65 -0
- package/dist/core/validators/date/weekend.d.ts +27 -0
- package/dist/core/validators/date/weekend.js +56 -0
- package/dist/core/validators/index.d.ts +112 -0
- package/dist/core/validators/index.js +139 -0
- package/dist/core/validators/nullish/is-null-or-undefined.d.ts +22 -0
- package/dist/core/validators/nullish/is-null-or-undefined.js +40 -0
- package/dist/core/validators/nullish/is-null.d.ts +21 -0
- package/dist/core/validators/nullish/is-null.js +39 -0
- package/dist/core/validators/nullish/is-undefined.d.ts +21 -0
- package/dist/core/validators/nullish/is-undefined.js +39 -0
- package/dist/core/validators/number/finite.d.ts +22 -0
- package/dist/core/validators/number/finite.js +40 -0
- package/dist/core/validators/number/integer.d.ts +22 -0
- package/dist/core/validators/number/integer.js +40 -0
- package/dist/core/validators/number/less-than.d.ts +21 -0
- package/dist/core/validators/number/less-than.js +39 -0
- package/dist/core/validators/number/max.d.ts +21 -0
- package/dist/core/validators/number/max.js +39 -0
- package/dist/core/validators/number/min.d.ts +21 -0
- package/dist/core/validators/number/min.js +39 -0
- package/dist/core/validators/number/more-than.d.ts +21 -0
- package/dist/core/validators/number/more-than.js +39 -0
- package/dist/core/validators/number/negative.d.ts +20 -0
- package/dist/core/validators/number/negative.js +38 -0
- package/dist/core/validators/number/non-negative.d.ts +19 -0
- package/dist/core/validators/number/non-negative.js +37 -0
- package/dist/core/validators/number/non-positive.d.ts +19 -0
- package/dist/core/validators/number/non-positive.js +37 -0
- package/dist/core/validators/number/number.d.ts +19 -0
- package/dist/core/validators/number/number.js +31 -0
- package/dist/core/validators/number/positive.d.ts +20 -0
- package/dist/core/validators/number/positive.js +38 -0
- package/dist/core/validators/number/safe-integer.d.ts +19 -0
- package/dist/core/validators/number/safe-integer.js +42 -0
- package/dist/core/validators/object/deep-equals.d.ts +24 -0
- package/dist/core/validators/object/deep-equals.js +47 -0
- package/dist/core/validators/object/has-key.d.ts +23 -0
- package/dist/core/validators/object/has-key.js +42 -0
- package/dist/core/validators/object/has-value.d.ts +27 -0
- package/dist/core/validators/object/has-value.js +59 -0
- package/dist/core/validators/object/keys-equal.d.ts +26 -0
- package/dist/core/validators/object/keys-equal.js +47 -0
- package/dist/core/validators/object/max-keys.d.ts +24 -0
- package/dist/core/validators/object/max-keys.js +43 -0
- package/dist/core/validators/object/min-keys.d.ts +24 -0
- package/dist/core/validators/object/min-keys.js +43 -0
- package/dist/core/validators/object/missing-key.d.ts +23 -0
- package/dist/core/validators/object/missing-key.js +42 -0
- package/dist/core/validators/object/no-empty-array-values.d.ts +23 -0
- package/dist/core/validators/object/no-empty-array-values.js +44 -0
- package/dist/core/validators/object/no-empty-object-values.d.ts +23 -0
- package/dist/core/validators/object/no-empty-object-values.js +44 -0
- package/dist/core/validators/object/no-null-values.d.ts +23 -0
- package/dist/core/validators/object/no-null-values.js +44 -0
- package/dist/core/validators/object/no-undefined-values.d.ts +23 -0
- package/dist/core/validators/object/no-undefined-values.js +44 -0
- package/dist/core/validators/object/non-empty-object.d.ts +21 -0
- package/dist/core/validators/object/non-empty-object.js +40 -0
- package/dist/core/validators/object/only-keys.d.ts +23 -0
- package/dist/core/validators/object/only-keys.js +43 -0
- package/dist/core/validators/object/plain-object.d.ts +22 -0
- package/dist/core/validators/object/plain-object.js +35 -0
- package/dist/core/validators/string/alpha-num.d.ts +23 -0
- package/dist/core/validators/string/alpha-num.js +50 -0
- package/dist/core/validators/string/alpha.d.ts +24 -0
- package/dist/core/validators/string/alpha.js +51 -0
- package/dist/core/validators/string/chars-equal.d.ts +23 -0
- package/dist/core/validators/string/chars-equal.js +49 -0
- package/dist/core/validators/string/ends-with.d.ts +23 -0
- package/dist/core/validators/string/ends-with.js +50 -0
- package/dist/core/validators/string/is-ascii.d.ts +24 -0
- package/dist/core/validators/string/is-ascii.js +53 -0
- package/dist/core/validators/string/is-printable.d.ts +25 -0
- package/dist/core/validators/string/is-printable.js +53 -0
- package/dist/core/validators/string/matches.d.ts +23 -0
- package/dist/core/validators/string/matches.js +50 -0
- package/dist/core/validators/string/max-length.d.ts +24 -0
- package/dist/core/validators/string/max-length.js +50 -0
- package/dist/core/validators/string/min-length.d.ts +24 -0
- package/dist/core/validators/string/min-length.js +50 -0
- package/dist/core/validators/string/no-lead-space.d.ts +23 -0
- package/dist/core/validators/string/no-lead-space.js +50 -0
- package/dist/core/validators/string/no-repeat-space.d.ts +25 -0
- package/dist/core/validators/string/no-repeat-space.js +52 -0
- package/dist/core/validators/string/no-space.d.ts +24 -0
- package/dist/core/validators/string/no-space.js +51 -0
- package/dist/core/validators/string/no-trail-space.d.ts +23 -0
- package/dist/core/validators/string/no-trail-space.js +50 -0
- package/dist/core/validators/string/non-empty.d.ts +22 -0
- package/dist/core/validators/string/non-empty.js +48 -0
- package/dist/core/validators/string/not-one-of.d.ts +24 -0
- package/dist/core/validators/string/not-one-of.js +51 -0
- package/dist/core/validators/string/num-string.d.ts +23 -0
- package/dist/core/validators/string/num-string.js +50 -0
- package/dist/core/validators/string/one-of.d.ts +23 -0
- package/dist/core/validators/string/one-of.js +50 -0
- package/dist/core/validators/string/starts-with.d.ts +23 -0
- package/dist/core/validators/string/starts-with.js +50 -0
- package/dist/core/validators/string/string.d.ts +21 -0
- package/dist/core/validators/string/string.js +39 -0
- package/dist/core/validators/string/trimmed.d.ts +24 -0
- package/dist/core/validators/string/trimmed.js +51 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.js +26 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +12 -0
- package/package.json +2 -2
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Characters Equal (Chars Equal)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string whose length is
|
|
7
|
+
* exactly `exact`.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
14
|
+
|* Implementation *|
|
|
15
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
16
|
+
/**
|
|
17
|
+
* Validates that the value is a string whose length is exactly `exact`.
|
|
18
|
+
*
|
|
19
|
+
* - Non‑string values emit `type.not.valid`.
|
|
20
|
+
* - Strings whose length does not match `exact` emit `string.has.invalid-length`.
|
|
21
|
+
* - Returns an empty array when the value is valid.
|
|
22
|
+
*
|
|
23
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
24
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
25
|
+
* overrides applied at the pipeline level.
|
|
26
|
+
*/
|
|
27
|
+
export const charsEqual = (exact) => async (value, path) => {
|
|
28
|
+
const structuralType = detectStructuralType(value);
|
|
29
|
+
// ------------------------------------------------------------
|
|
30
|
+
// Type check
|
|
31
|
+
// ------------------------------------------------------------
|
|
32
|
+
if (typeof value !== 'string') {
|
|
33
|
+
return [
|
|
34
|
+
validationEvent('error', 'type.not.valid', path, `Expected 'string' but received '${structuralType}'.`, `Please enter a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
// ------------------------------------------------------------
|
|
38
|
+
// Exact-length check
|
|
39
|
+
// ------------------------------------------------------------
|
|
40
|
+
if (value.length !== exact) {
|
|
41
|
+
return [
|
|
42
|
+
validationEvent('error', 'string.has.invalid-length', path, `String length ${value.length} must be exactly ${exact}.`, `Please enter a string that is exactly ${exact} characters long.`, { value, expected: exact, actual: value.length }),
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
// ------------------------------------------------------------
|
|
46
|
+
// Valid
|
|
47
|
+
// ------------------------------------------------------------
|
|
48
|
+
return [];
|
|
49
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Ends With
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string ending with the
|
|
7
|
+
* provided `suffix`.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string ending with the provided `suffix`.
|
|
14
|
+
*
|
|
15
|
+
* - Non‑string values emit `string.not.string`.
|
|
16
|
+
* - Strings that do not end with `suffix` emit `string.must.end-with`.
|
|
17
|
+
* - Returns an empty array when the value is valid.
|
|
18
|
+
*
|
|
19
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
20
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
21
|
+
* overrides applied at the pipeline level.
|
|
22
|
+
*/
|
|
23
|
+
export declare const endsWith: (suffix: string) => ValidationRule;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Ends With
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string ending with the
|
|
7
|
+
* provided `suffix`.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
import { safeStringify } from '../../common';
|
|
14
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
15
|
+
|* Implementation *|
|
|
16
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
17
|
+
/**
|
|
18
|
+
* Validates that the value is a string ending with the provided `suffix`.
|
|
19
|
+
*
|
|
20
|
+
* - Non‑string values emit `string.not.string`.
|
|
21
|
+
* - Strings that do not end with `suffix` emit `string.must.end-with`.
|
|
22
|
+
* - Returns an empty array when the value is valid.
|
|
23
|
+
*
|
|
24
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
25
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
26
|
+
* overrides applied at the pipeline level.
|
|
27
|
+
*/
|
|
28
|
+
export const endsWith = (suffix) => async (value, path) => {
|
|
29
|
+
const structuralType = detectStructuralType(value);
|
|
30
|
+
// ------------------------------------------------------------
|
|
31
|
+
// Type check
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return [
|
|
35
|
+
validationEvent('error', 'string.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
// Ends-with check
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
if (!value.endsWith(suffix)) {
|
|
42
|
+
return [
|
|
43
|
+
validationEvent('error', 'string.must.end-with', path, `${safeStringify(value)} must end with ${safeStringify(suffix)}.`, `Please end the value with ${suffix}.`, { value, expected: `endsWith(${suffix})`, actual: value }),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
// ------------------------------------------------------------
|
|
47
|
+
// Valid
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Is Ascii
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string containing only ASCII
|
|
7
|
+
* characters (code points 0x00–0x7F).
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string containing only ASCII characters
|
|
14
|
+
* (code points 0x00–0x7F).
|
|
15
|
+
*
|
|
16
|
+
* - Non‑string values emit `string.not.string`.
|
|
17
|
+
* - Strings containing characters outside the ASCII range emit `string.not.ascii`.
|
|
18
|
+
* - Returns an empty array when the value is valid.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
21
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
22
|
+
* overrides applied at the pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export declare const isAscii: ValidationRule;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Is Ascii
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string containing only ASCII
|
|
7
|
+
* characters (code points 0x00–0x7F).
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
import { safeStringify } from '../../common';
|
|
14
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
15
|
+
|* Implementation *|
|
|
16
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
17
|
+
/**
|
|
18
|
+
* Validates that the value is a string containing only ASCII characters
|
|
19
|
+
* (code points 0x00–0x7F).
|
|
20
|
+
*
|
|
21
|
+
* - Non‑string values emit `string.not.string`.
|
|
22
|
+
* - Strings containing characters outside the ASCII range emit `string.not.ascii`.
|
|
23
|
+
* - Returns an empty array when the value is valid.
|
|
24
|
+
*
|
|
25
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
26
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
27
|
+
* overrides applied at the pipeline level.
|
|
28
|
+
*/
|
|
29
|
+
export const isAscii = async (value, path) => {
|
|
30
|
+
const structuralType = detectStructuralType(value);
|
|
31
|
+
// ------------------------------------------------------------
|
|
32
|
+
// Type check
|
|
33
|
+
// ------------------------------------------------------------
|
|
34
|
+
if (typeof value !== 'string') {
|
|
35
|
+
return [
|
|
36
|
+
validationEvent('error', 'string.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please enter a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
// ------------------------------------------------------------
|
|
40
|
+
// ASCII check
|
|
41
|
+
// ------------------------------------------------------------
|
|
42
|
+
// eslint-disable-next-line no-control-regex
|
|
43
|
+
const nonAsciiPattern = new RegExp('[^\\x00-\\x7F]');
|
|
44
|
+
if (nonAsciiPattern.test(value)) {
|
|
45
|
+
return [
|
|
46
|
+
validationEvent('error', 'string.not.ascii', path, `${safeStringify(value)} must contain only ASCII characters.`, `Please use only ASCII characters.`, { value, expected: 'ASCII', actual: value }),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
// ------------------------------------------------------------
|
|
50
|
+
// Valid
|
|
51
|
+
// ------------------------------------------------------------
|
|
52
|
+
return [];
|
|
53
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Is Printable
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string containing only
|
|
7
|
+
* printable ASCII characters (code points 0x20–0x7E).
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string containing only printable ASCII
|
|
14
|
+
* characters (code points 0x20–0x7E).
|
|
15
|
+
*
|
|
16
|
+
* - Non‑string values emit `string.not.string`.
|
|
17
|
+
* - Strings containing characters outside the printable ASCII range emit
|
|
18
|
+
* `string.not.printable`.
|
|
19
|
+
* - Returns an empty array when the value is valid.
|
|
20
|
+
*
|
|
21
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
22
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
23
|
+
* overrides applied at the pipeline level.
|
|
24
|
+
*/
|
|
25
|
+
export declare const isPrintable: ValidationRule;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Is Printable
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string containing only
|
|
7
|
+
* printable ASCII characters (code points 0x20–0x7E).
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
import { safeStringify } from '../../common';
|
|
14
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
15
|
+
|* Implementation *|
|
|
16
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
17
|
+
/**
|
|
18
|
+
* Validates that the value is a string containing only printable ASCII
|
|
19
|
+
* characters (code points 0x20–0x7E).
|
|
20
|
+
*
|
|
21
|
+
* - Non‑string values emit `string.not.string`.
|
|
22
|
+
* - Strings containing characters outside the printable ASCII range emit
|
|
23
|
+
* `string.not.printable`.
|
|
24
|
+
* - Returns an empty array when the value is valid.
|
|
25
|
+
*
|
|
26
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
27
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
28
|
+
* overrides applied at the pipeline level.
|
|
29
|
+
*/
|
|
30
|
+
export const isPrintable = async (value, path) => {
|
|
31
|
+
const structuralType = detectStructuralType(value);
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
// Type check
|
|
34
|
+
// ------------------------------------------------------------
|
|
35
|
+
if (typeof value !== 'string') {
|
|
36
|
+
return [
|
|
37
|
+
validationEvent('error', 'string.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please enter a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
// Printable ASCII check
|
|
42
|
+
// ------------------------------------------------------------
|
|
43
|
+
const printablePattern = /^[\x20-\x7E]+$/;
|
|
44
|
+
if (!printablePattern.test(value)) {
|
|
45
|
+
return [
|
|
46
|
+
validationEvent('error', 'string.not.printable', path, `${safeStringify(value)} must contain only printable ASCII characters.`, `Please use only printable characters.`, { value, expected: 'printable ASCII', actual: value }),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
// ------------------------------------------------------------
|
|
50
|
+
// Valid
|
|
51
|
+
// ------------------------------------------------------------
|
|
52
|
+
return [];
|
|
53
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Matches
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string matching the provided
|
|
7
|
+
* regular expression.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string matching the provided regular expression.
|
|
14
|
+
*
|
|
15
|
+
* - Non‑string values emit `string.not.string`.
|
|
16
|
+
* - Strings that do not satisfy the pattern emit `string.is.not-match`.
|
|
17
|
+
* - Returns an empty array when the value is valid.
|
|
18
|
+
*
|
|
19
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
20
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
21
|
+
* overrides applied at the pipeline level.
|
|
22
|
+
*/
|
|
23
|
+
export declare const matches: (pattern: RegExp) => ValidationRule;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Matches
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string matching the provided
|
|
7
|
+
* regular expression.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
import { safeStringify } from '../../common';
|
|
14
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
15
|
+
|* Implementation *|
|
|
16
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
17
|
+
/**
|
|
18
|
+
* Validates that the value is a string matching the provided regular expression.
|
|
19
|
+
*
|
|
20
|
+
* - Non‑string values emit `string.not.string`.
|
|
21
|
+
* - Strings that do not satisfy the pattern emit `string.is.not-match`.
|
|
22
|
+
* - Returns an empty array when the value is valid.
|
|
23
|
+
*
|
|
24
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
25
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
26
|
+
* overrides applied at the pipeline level.
|
|
27
|
+
*/
|
|
28
|
+
export const matches = (pattern) => async (value, path) => {
|
|
29
|
+
const structuralType = detectStructuralType(value);
|
|
30
|
+
// ------------------------------------------------------------
|
|
31
|
+
// Type check
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return [
|
|
35
|
+
validationEvent('error', 'string.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
// Pattern match check
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
if (!pattern.test(value)) {
|
|
42
|
+
return [
|
|
43
|
+
validationEvent('error', 'string.is.not-match', path, `${safeStringify(value)} must match pattern ${pattern}.`, `Please provide a value matching the required format.`, { value, expected: pattern.toString(), actual: value }),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
// ------------------------------------------------------------
|
|
47
|
+
// Valid
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Maximum Length (Max Length)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string whose length is less
|
|
7
|
+
* than or equal to the provided `max` value.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string whose length is less than or equal to
|
|
14
|
+
* the provided `max` value.
|
|
15
|
+
*
|
|
16
|
+
* - Non‑string values emit `type.not.valid`.
|
|
17
|
+
* - Strings longer than `max` emit `string.too.long`.
|
|
18
|
+
* - Returns an empty array when the value is valid.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
21
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
22
|
+
* overrides applied at the pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export declare const maxLength: (max: number) => ValidationRule;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Maximum Length (Max Length)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string whose length is less
|
|
7
|
+
* than or equal to the provided `max` value.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
14
|
+
|* Implementation *|
|
|
15
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
16
|
+
/**
|
|
17
|
+
* Validates that the value is a string whose length is less than or equal to
|
|
18
|
+
* the provided `max` value.
|
|
19
|
+
*
|
|
20
|
+
* - Non‑string values emit `type.not.valid`.
|
|
21
|
+
* - Strings longer than `max` emit `string.too.long`.
|
|
22
|
+
* - Returns an empty array when the value is valid.
|
|
23
|
+
*
|
|
24
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
25
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
26
|
+
* overrides applied at the pipeline level.
|
|
27
|
+
*/
|
|
28
|
+
export const maxLength = (max) => async (value, path) => {
|
|
29
|
+
const structuralType = detectStructuralType(value);
|
|
30
|
+
// ------------------------------------------------------------
|
|
31
|
+
// Type check
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return [
|
|
35
|
+
validationEvent('error', 'type.not.valid', path, `Expected 'string' but received '${structuralType}'.`, `Please enter a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
// Maximum-length check
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
if (value.length > max) {
|
|
42
|
+
return [
|
|
43
|
+
validationEvent('error', 'string.too.long', path, `String length ${value.length} must be ≤ ${max}.`, `Please enter no more than ${max} characters.`, { value, expected: `≤ ${max}`, actual: value.length }),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
// ------------------------------------------------------------
|
|
47
|
+
// Valid
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Minimum Length (Min Length)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string whose length is greater
|
|
7
|
+
* than or equal to the provided `min` value.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string whose length is greater than or equal to
|
|
14
|
+
* the provided `min` value.
|
|
15
|
+
*
|
|
16
|
+
* - Non‑string values emit `type.not.valid`.
|
|
17
|
+
* - Strings shorter than `min` emit `string.too.short`.
|
|
18
|
+
* - Returns an empty array when the value is valid.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
21
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
22
|
+
* overrides applied at the pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export declare const minLength: (min: number) => ValidationRule;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Minimum Length (Min Length)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string whose length is greater
|
|
7
|
+
* than or equal to the provided `min` value.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
13
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
14
|
+
|* Implementation *|
|
|
15
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
16
|
+
/**
|
|
17
|
+
* Validates that the value is a string whose length is greater than or equal to
|
|
18
|
+
* the provided `min` value.
|
|
19
|
+
*
|
|
20
|
+
* - Non‑string values emit `type.not.valid`.
|
|
21
|
+
* - Strings shorter than `min` emit `string.too.short`.
|
|
22
|
+
* - Returns an empty array when the value is valid.
|
|
23
|
+
*
|
|
24
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
25
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
26
|
+
* overrides applied at the pipeline level.
|
|
27
|
+
*/
|
|
28
|
+
export const minLength = (min) => async (value, path) => {
|
|
29
|
+
const structuralType = detectStructuralType(value);
|
|
30
|
+
// ------------------------------------------------------------
|
|
31
|
+
// Type check
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return [
|
|
35
|
+
validationEvent('error', 'type.not.valid', path, `Expected 'string' but received '${structuralType}'.`, `Please enter a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
// Minimum-length check
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
if (value.length < min) {
|
|
42
|
+
return [
|
|
43
|
+
validationEvent('error', 'string.too.short', path, `String length ${value.length} must be ≥ ${min}.`, `Please enter at least ${min} characters.`, { value, expected: `≥ ${min}`, actual: value.length }),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
// ------------------------------------------------------------
|
|
47
|
+
// Valid
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | No Leading Whitespace (No Lead Space)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string that does not begin
|
|
7
|
+
* with whitespace.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string that does not begin with whitespace.
|
|
14
|
+
*
|
|
15
|
+
* - Non‑string values emit `type.not.valid`.
|
|
16
|
+
* - Strings beginning with whitespace emit `string.has.leading-whitespace`.
|
|
17
|
+
* - Returns an empty array when the value is valid.
|
|
18
|
+
*
|
|
19
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
20
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
21
|
+
* overrides applied at the pipeline level.
|
|
22
|
+
*/
|
|
23
|
+
export declare const noLeadSpace: ValidationRule;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | No Leading Whitespace (No Lead Space)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string that does not begin
|
|
7
|
+
* with whitespace.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import { validationEvent } from '../../pipeline';
|
|
12
|
+
import { safeStringify } from '../../common';
|
|
13
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
14
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
15
|
+
|* Implementation *|
|
|
16
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
17
|
+
/**
|
|
18
|
+
* Validates that the value is a string that does not begin with whitespace.
|
|
19
|
+
*
|
|
20
|
+
* - Non‑string values emit `type.not.valid`.
|
|
21
|
+
* - Strings beginning with whitespace emit `string.has.leading-whitespace`.
|
|
22
|
+
* - Returns an empty array when the value is valid.
|
|
23
|
+
*
|
|
24
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
25
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
26
|
+
* overrides applied at the pipeline level.
|
|
27
|
+
*/
|
|
28
|
+
export const noLeadSpace = async (value, path) => {
|
|
29
|
+
const structuralType = detectStructuralType(value);
|
|
30
|
+
// ------------------------------------------------------------
|
|
31
|
+
// Type check
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return [
|
|
35
|
+
validationEvent('error', 'type.not.valid', path, `Expected 'string' but received '${structuralType}'.`, `Please enter a valid string.`, { value, expected: 'string', actual: structuralType }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
// Leading whitespace check
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
if (/^\s/.test(value)) {
|
|
42
|
+
return [
|
|
43
|
+
validationEvent('error', 'string.has.leading-whitespace', path, `${safeStringify(value)} must not start with whitespace.`, `Please remove leading spaces.`, { value, expected: 'no leading space', actual: value }),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
// ------------------------------------------------------------
|
|
47
|
+
// Valid
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
return [];
|
|
50
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | No Repeated Whitespace (No Repeat Space)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Validates that the value is a string that does not contain
|
|
7
|
+
* repeated consecutive space characters.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the value is a string that does not contain repeated
|
|
14
|
+
* consecutive space characters.
|
|
15
|
+
*
|
|
16
|
+
* - Non‑string values emit `type.not.valid`.
|
|
17
|
+
* - Strings containing `" "` (two or more consecutive spaces) emit
|
|
18
|
+
* `string.has.repeating-whitespace`.
|
|
19
|
+
* - Returns an empty array when the value is valid.
|
|
20
|
+
*
|
|
21
|
+
* This rule is pure, total, async‑compatible, and returns a readonly array of
|
|
22
|
+
* JaneEvent objects. It preserves the provided path and supports userMessage
|
|
23
|
+
* overrides applied at the pipeline level.
|
|
24
|
+
*/
|
|
25
|
+
export declare const noRepeatSpace: ValidationRule;
|