@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,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Minimum (Bigint Min)
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* greater than or equal to the provided `min` value.
|
|
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
|
+
* Ensures the input is a string representing a BigInt that is
|
|
19
|
+
* greater than or equal to the provided `min` value.
|
|
20
|
+
*
|
|
21
|
+
* This validator follows Jane’s standard BigInt conventions:
|
|
22
|
+
* - The input must be a string. Non‑string values emit `bigint.not.string`.
|
|
23
|
+
* - Empty strings and non‑parseable strings emit `bigint.not.bigint`.
|
|
24
|
+
* - Parsed BigInt values smaller than `min` emit `bigint.too.small`.
|
|
25
|
+
*
|
|
26
|
+
* The rule is pure, total, async‑compatible, and preserves the
|
|
27
|
+
* provided path. It also supports userMessage overrides applied
|
|
28
|
+
* at the pipeline level.
|
|
29
|
+
*/
|
|
30
|
+
export const bigintMin = (min) => {
|
|
31
|
+
// The returned function is the actual validator. We attach a
|
|
32
|
+
// factory marker below so Jane preserves the closure and does
|
|
33
|
+
// not attempt to serialize the `min` bigint.
|
|
34
|
+
const rule = async (value, path) => {
|
|
35
|
+
const structuralType = detectStructuralType(value);
|
|
36
|
+
// ------------------------------------------------------------
|
|
37
|
+
// Type check — the input must be a string.
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
if (typeof value !== 'string') {
|
|
40
|
+
return [
|
|
41
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid bigint string.`, { value, expected: 'string', actual: structuralType }),
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
// ------------------------------------------------------------
|
|
45
|
+
// Empty-string check — BigInt("") parses as 0n, which is
|
|
46
|
+
// rarely what users intend. We treat empty strings as invalid.
|
|
47
|
+
// ------------------------------------------------------------
|
|
48
|
+
if (value.length === 0) {
|
|
49
|
+
return [
|
|
50
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
// ------------------------------------------------------------
|
|
54
|
+
// Parse check — attempt to convert the string into a BigInt.
|
|
55
|
+
// Any failure (invalid characters, formatting, etc.) results
|
|
56
|
+
// in a `bigint.not.bigint` event.
|
|
57
|
+
// ------------------------------------------------------------
|
|
58
|
+
let parsed;
|
|
59
|
+
try {
|
|
60
|
+
parsed = BigInt(value);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return [
|
|
64
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
// ------------------------------------------------------------
|
|
68
|
+
// Minimum check — ensure the parsed value is ≥ the provided `min`.
|
|
69
|
+
// ------------------------------------------------------------
|
|
70
|
+
if (parsed < min) {
|
|
71
|
+
return [
|
|
72
|
+
validationEvent('error', 'bigint.too.small', path, `${safeStringify(value)} must be ≥ ${min}.`, `Please provide a bigint at least ${min}.`, { value, expected: `≥ ${min}`, actual: parsed }),
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
// ------------------------------------------------------------
|
|
76
|
+
// Valid — return an empty array to indicate success.
|
|
77
|
+
// ------------------------------------------------------------
|
|
78
|
+
return [];
|
|
79
|
+
};
|
|
80
|
+
// ------------------------------------------------------------
|
|
81
|
+
// Factory marker — prevents Jane from serializing the rule and
|
|
82
|
+
// losing the `min` bigint. This ensures the closure is preserved.
|
|
83
|
+
// ------------------------------------------------------------
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
|
+
rule.__janeFactory = true;
|
|
86
|
+
return rule;
|
|
87
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Negative
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a negative
|
|
7
|
+
* BigInt value.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Ensures the input is a string representing a negative BigInt value.
|
|
14
|
+
*
|
|
15
|
+
* This validator follows Jane’s standard BigInt conventions:
|
|
16
|
+
* - The input must be a string. Non‑string values emit `bigint.not.string`.
|
|
17
|
+
* - Empty strings and non‑parseable strings emit `bigint.not.bigint`.
|
|
18
|
+
* - Parsed BigInt values greater than or equal to 0 emit `bigint.not.negative`.
|
|
19
|
+
*
|
|
20
|
+
* The rule is pure, total, async‑compatible, and preserves the provided path.
|
|
21
|
+
* It also supports userMessage overrides applied at the pipeline level.
|
|
22
|
+
*/
|
|
23
|
+
export declare const bigintNegative: ValidationRule;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Negative
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a negative
|
|
7
|
+
* BigInt value.
|
|
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
|
+
* Ensures the input is a string representing a negative BigInt value.
|
|
19
|
+
*
|
|
20
|
+
* This validator follows Jane’s standard BigInt conventions:
|
|
21
|
+
* - The input must be a string. Non‑string values emit `bigint.not.string`.
|
|
22
|
+
* - Empty strings and non‑parseable strings emit `bigint.not.bigint`.
|
|
23
|
+
* - Parsed BigInt values greater than or equal to 0 emit `bigint.not.negative`.
|
|
24
|
+
*
|
|
25
|
+
* The rule is pure, total, async‑compatible, and preserves the provided path.
|
|
26
|
+
* It also supports userMessage overrides applied at the pipeline level.
|
|
27
|
+
*/
|
|
28
|
+
export const bigintNegative = async (value, path) => {
|
|
29
|
+
const structuralType = detectStructuralType(value);
|
|
30
|
+
// ------------------------------------------------------------
|
|
31
|
+
// Type check — the input must be a string.
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
if (typeof value !== 'string') {
|
|
34
|
+
return [
|
|
35
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid bigint string.`, { value, expected: 'string', actual: structuralType }),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
// ------------------------------------------------------------
|
|
39
|
+
// Empty-string check — BigInt("") parses as 0n, which is
|
|
40
|
+
// rarely what users intend. We treat empty strings as invalid.
|
|
41
|
+
// ------------------------------------------------------------
|
|
42
|
+
if (value.length === 0) {
|
|
43
|
+
return [
|
|
44
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
// ------------------------------------------------------------
|
|
48
|
+
// Parse check — attempt to convert the string into a BigInt.
|
|
49
|
+
// Any failure (invalid characters, formatting, etc.) results
|
|
50
|
+
// in a `bigint.not.bigint` event.
|
|
51
|
+
// ------------------------------------------------------------
|
|
52
|
+
let parsed;
|
|
53
|
+
try {
|
|
54
|
+
parsed = BigInt(value);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return [
|
|
58
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
// ------------------------------------------------------------
|
|
62
|
+
// Negativity check — ensure the parsed value is strictly < 0.
|
|
63
|
+
// ------------------------------------------------------------
|
|
64
|
+
if (parsed >= 0n) {
|
|
65
|
+
return [
|
|
66
|
+
validationEvent('error', 'bigint.not.negative', path, `${safeStringify(value)} must be < 0.`, `Please provide a negative bigint.`, { value, expected: '< 0', actual: parsed }),
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
// ------------------------------------------------------------
|
|
70
|
+
// Valid — return an empty array to indicate success.
|
|
71
|
+
// ------------------------------------------------------------
|
|
72
|
+
return [];
|
|
73
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Non-Negative
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* greater than or equal to zero.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Ensures the input is a string representing a BigInt that is greater than or
|
|
14
|
+
* equal to zero.
|
|
15
|
+
*
|
|
16
|
+
* - Non-string values emit `bigint.not.string`.
|
|
17
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
18
|
+
* - Parsed BigInt values < 0 emit `bigint.not.non-negative`.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
21
|
+
* provided path. It supports userMessage overrides applied at the
|
|
22
|
+
* pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export declare const bigintNonNegative: ValidationRule;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Non-Negative
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* greater than or equal to zero.
|
|
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
|
+
* Ensures the input is a string representing a BigInt that is greater than or
|
|
19
|
+
* equal to zero.
|
|
20
|
+
*
|
|
21
|
+
* - Non-string values emit `bigint.not.string`.
|
|
22
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
23
|
+
* - Parsed BigInt values < 0 emit `bigint.not.non-negative`.
|
|
24
|
+
*
|
|
25
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
26
|
+
* provided path. It supports userMessage overrides applied at the
|
|
27
|
+
* pipeline level.
|
|
28
|
+
*/
|
|
29
|
+
export const bigintNonNegative = async (value, path) => {
|
|
30
|
+
const structuralType = detectStructuralType(value);
|
|
31
|
+
// ------------------------------------------------------------
|
|
32
|
+
// Type check — the input must be a string.
|
|
33
|
+
// ------------------------------------------------------------
|
|
34
|
+
if (typeof value !== 'string') {
|
|
35
|
+
return [
|
|
36
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid bigint string.`, { value, expected: 'string', actual: structuralType }),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
// ------------------------------------------------------------
|
|
40
|
+
// Empty-string check — BigInt("") parses as 0n, which is
|
|
41
|
+
// rarely what users intend. We treat empty strings as invalid.
|
|
42
|
+
// ------------------------------------------------------------
|
|
43
|
+
if (value.length === 0) {
|
|
44
|
+
return [
|
|
45
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
// Parse check — attempt to convert the string into a BigInt.
|
|
50
|
+
// ------------------------------------------------------------
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = BigInt(value);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return [
|
|
57
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
// ------------------------------------------------------------
|
|
61
|
+
// Non-negative check — ensure the parsed value is ≥ 0.
|
|
62
|
+
// ------------------------------------------------------------
|
|
63
|
+
if (parsed < 0n) {
|
|
64
|
+
return [
|
|
65
|
+
validationEvent('error', 'bigint.not.non-negative', path, `${safeStringify(value)} must be ≥ 0.`, `Please provide zero or a positive bigint.`, { value, expected: '≥ 0', actual: parsed }),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
// ------------------------------------------------------------
|
|
69
|
+
// Valid — return an empty array to indicate success.
|
|
70
|
+
// ------------------------------------------------------------
|
|
71
|
+
return [];
|
|
72
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Non-Positive
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* less than or equal to zero.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Ensures the input is a string representing a BigInt that is less than or
|
|
14
|
+
* equal to zero.
|
|
15
|
+
*
|
|
16
|
+
* - Non-string values emit `bigint.not.string`.
|
|
17
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
18
|
+
* - Parsed BigInt values > 0 emit `bigint.not.non-positive`.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
21
|
+
* provided path. It supports userMessage overrides applied at the
|
|
22
|
+
* pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export declare const bigintNonPositive: ValidationRule;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Non-Positive
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* less than or equal to zero.
|
|
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
|
+
* Ensures the input is a string representing a BigInt that is less than or
|
|
19
|
+
* equal to zero.
|
|
20
|
+
*
|
|
21
|
+
* - Non-string values emit `bigint.not.string`.
|
|
22
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
23
|
+
* - Parsed BigInt values > 0 emit `bigint.not.non-positive`.
|
|
24
|
+
*
|
|
25
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
26
|
+
* provided path. It supports userMessage overrides applied at the
|
|
27
|
+
* pipeline level.
|
|
28
|
+
*/
|
|
29
|
+
export const bigintNonPositive = async (value, path) => {
|
|
30
|
+
const structuralType = detectStructuralType(value);
|
|
31
|
+
// ------------------------------------------------------------
|
|
32
|
+
// Type check — the input must be a string.
|
|
33
|
+
// ------------------------------------------------------------
|
|
34
|
+
if (typeof value !== 'string') {
|
|
35
|
+
return [
|
|
36
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid bigint string.`, { value, expected: 'string', actual: structuralType }),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
// ------------------------------------------------------------
|
|
40
|
+
// Empty-string check — BigInt("") parses as 0n, which is
|
|
41
|
+
// rarely what users intend. We treat empty strings as invalid.
|
|
42
|
+
// ------------------------------------------------------------
|
|
43
|
+
if (value.length === 0) {
|
|
44
|
+
return [
|
|
45
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
// Parse check — attempt to convert the string into a BigInt.
|
|
50
|
+
// ------------------------------------------------------------
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = BigInt(value);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return [
|
|
57
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
// ------------------------------------------------------------
|
|
61
|
+
// Non-positive check — ensure the parsed value is ≤ 0.
|
|
62
|
+
// ------------------------------------------------------------
|
|
63
|
+
if (parsed > 0n) {
|
|
64
|
+
return [
|
|
65
|
+
validationEvent('error', 'bigint.not.non-positive', path, `${safeStringify(value)} must be ≤ 0.`, `Please provide zero or a negative bigint.`, { value, expected: '≤ 0', actual: parsed }),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
// ------------------------------------------------------------
|
|
69
|
+
// Valid — return an empty array to indicate success.
|
|
70
|
+
// ------------------------------------------------------------
|
|
71
|
+
return [];
|
|
72
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Positive
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* strictly greater than zero.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Ensures the input is a string representing a BigInt that is strictly greater
|
|
14
|
+
* than zero.
|
|
15
|
+
*
|
|
16
|
+
* - Non-string values emit `bigint.not.string`.
|
|
17
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
18
|
+
* - Parsed BigInt values ≤ 0 emit `bigint.not.positive`.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
21
|
+
* provided path. It supports userMessage overrides applied at the
|
|
22
|
+
* pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export declare const bigintPositive: ValidationRule;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Positive
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that is
|
|
7
|
+
* strictly greater than zero.
|
|
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
|
+
* Ensures the input is a string representing a BigInt that is strictly greater
|
|
19
|
+
* than zero.
|
|
20
|
+
*
|
|
21
|
+
* - Non-string values emit `bigint.not.string`.
|
|
22
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
23
|
+
* - Parsed BigInt values ≤ 0 emit `bigint.not.positive`.
|
|
24
|
+
*
|
|
25
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
26
|
+
* provided path. It supports userMessage overrides applied at the
|
|
27
|
+
* pipeline level.
|
|
28
|
+
*/
|
|
29
|
+
export const bigintPositive = async (value, path) => {
|
|
30
|
+
const structuralType = detectStructuralType(value);
|
|
31
|
+
// ------------------------------------------------------------
|
|
32
|
+
// Type check — the input must be a string.
|
|
33
|
+
// ------------------------------------------------------------
|
|
34
|
+
if (typeof value !== 'string') {
|
|
35
|
+
return [
|
|
36
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid bigint string.`, { value, expected: 'string', actual: structuralType }),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
// ------------------------------------------------------------
|
|
40
|
+
// Empty-string check — BigInt("") parses as 0n, which is
|
|
41
|
+
// rarely what users intend. We treat empty strings as invalid.
|
|
42
|
+
// ------------------------------------------------------------
|
|
43
|
+
if (value.length === 0) {
|
|
44
|
+
return [
|
|
45
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
// ------------------------------------------------------------
|
|
49
|
+
// Parse check — attempt to convert the string into a BigInt.
|
|
50
|
+
// ------------------------------------------------------------
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = BigInt(value);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return [
|
|
57
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
// ------------------------------------------------------------
|
|
61
|
+
// Positivity check — ensure the parsed value is strictly > 0.
|
|
62
|
+
// ------------------------------------------------------------
|
|
63
|
+
if (parsed <= 0n) {
|
|
64
|
+
return [
|
|
65
|
+
validationEvent('error', 'bigint.not.positive', path, `${safeStringify(value)} must be > 0.`, `Please provide a positive bigint.`, { value, expected: '> 0', actual: parsed }),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
// ------------------------------------------------------------
|
|
69
|
+
// Valid — return an empty array to indicate success.
|
|
70
|
+
// ------------------------------------------------------------
|
|
71
|
+
return [];
|
|
72
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Safe
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that
|
|
7
|
+
* falls within JavaScript’s safe integer range.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { ValidationRule } from '../../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Ensures the input is a string representing a BigInt that falls
|
|
14
|
+
* within JavaScript’s safe integer range (Number.MIN_SAFE_INTEGER
|
|
15
|
+
* through Number.MAX_SAFE_INTEGER).
|
|
16
|
+
*
|
|
17
|
+
* - Non-string values emit `bigint.not.string`.
|
|
18
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
19
|
+
* - Parsed BigInt values outside the safe range emit `bigint.not.safe`.
|
|
20
|
+
*
|
|
21
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
22
|
+
* provided path. It supports userMessage overrides applied at the
|
|
23
|
+
* pipeline level.
|
|
24
|
+
*/
|
|
25
|
+
export declare const bigintSafe: ValidationRule;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint Safe
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a string representing a BigInt that
|
|
7
|
+
* falls within JavaScript’s safe integer range.
|
|
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
|
+
* Ensures the input is a string representing a BigInt that falls
|
|
19
|
+
* within JavaScript’s safe integer range (Number.MIN_SAFE_INTEGER
|
|
20
|
+
* through Number.MAX_SAFE_INTEGER).
|
|
21
|
+
*
|
|
22
|
+
* - Non-string values emit `bigint.not.string`.
|
|
23
|
+
* - Empty strings and non-parseable strings emit `bigint.not.bigint`.
|
|
24
|
+
* - Parsed BigInt values outside the safe range emit `bigint.not.safe`.
|
|
25
|
+
*
|
|
26
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
27
|
+
* provided path. It supports userMessage overrides applied at the
|
|
28
|
+
* pipeline level.
|
|
29
|
+
*/
|
|
30
|
+
export const bigintSafe = async (value, path) => {
|
|
31
|
+
const structuralType = detectStructuralType(value);
|
|
32
|
+
// ------------------------------------------------------------
|
|
33
|
+
// Type check — the input must be a string.
|
|
34
|
+
// ------------------------------------------------------------
|
|
35
|
+
if (typeof value !== 'string') {
|
|
36
|
+
return [
|
|
37
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'string' but received '${structuralType}'.`, `Please provide a valid bigint string.`, { value, expected: 'string', actual: structuralType }),
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
// ------------------------------------------------------------
|
|
41
|
+
// Empty-string check — BigInt("") parses as 0n, which is
|
|
42
|
+
// rarely what users intend. We treat empty strings as invalid.
|
|
43
|
+
// ------------------------------------------------------------
|
|
44
|
+
if (value.length === 0) {
|
|
45
|
+
return [
|
|
46
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
// ------------------------------------------------------------
|
|
50
|
+
// Parse check — attempt to convert the string into a BigInt.
|
|
51
|
+
// ------------------------------------------------------------
|
|
52
|
+
let parsed;
|
|
53
|
+
try {
|
|
54
|
+
parsed = BigInt(value);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return [
|
|
58
|
+
validationEvent('error', 'bigint.not.bigint', path, `${safeStringify(value)} is not a valid bigint literal.`, `Please provide a valid bigint string.`, { value, expected: 'bigint literal', actual: value }),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
// ------------------------------------------------------------
|
|
62
|
+
// Safe-range check — ensure MIN_SAFE ≤ parsed ≤ MAX_SAFE.
|
|
63
|
+
// ------------------------------------------------------------
|
|
64
|
+
const maxSafe = BigInt(Number.MAX_SAFE_INTEGER);
|
|
65
|
+
const minSafe = BigInt(Number.MIN_SAFE_INTEGER);
|
|
66
|
+
if (parsed > maxSafe || parsed < minSafe) {
|
|
67
|
+
return [
|
|
68
|
+
validationEvent('error', 'bigint.not.safe', path, `${safeStringify(value)} exceeds JavaScript’s safe integer range.`, `Please provide a bigint within safe bounds.`, { value, expected: `${minSafe}–${maxSafe}`, actual: parsed }),
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
// ------------------------------------------------------------
|
|
72
|
+
// Valid — return an empty array to indicate success.
|
|
73
|
+
// ------------------------------------------------------------
|
|
74
|
+
return [];
|
|
75
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a native JavaScript BigInt value.
|
|
7
|
+
* @see https://jane-io.com
|
|
8
|
+
* ----------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
import type { ValidationRule } from '../../shapes';
|
|
11
|
+
/**
|
|
12
|
+
* Ensures the input is a native JavaScript BigInt value.
|
|
13
|
+
*
|
|
14
|
+
* - Non-bigint values emit `bigint.not.bigint`.
|
|
15
|
+
*
|
|
16
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
17
|
+
* provided path. It supports userMessage overrides applied at the
|
|
18
|
+
* pipeline level.
|
|
19
|
+
*/
|
|
20
|
+
export declare const bigint: ValidationRule;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Validators | Bigint
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Ensures the input is a native JavaScript BigInt value.
|
|
7
|
+
* @see https://jane-io.com
|
|
8
|
+
* ----------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
import { validationEvent } from '../../pipeline';
|
|
11
|
+
import { detectStructuralType } from '../../pipeline/scan';
|
|
12
|
+
/* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— *\
|
|
13
|
+
|* Implementation *|
|
|
14
|
+
\* ——— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ————— * ——— */
|
|
15
|
+
/**
|
|
16
|
+
* Ensures the input is a native JavaScript BigInt value.
|
|
17
|
+
*
|
|
18
|
+
* - Non-bigint values emit `bigint.not.bigint`.
|
|
19
|
+
*
|
|
20
|
+
* This rule is pure, total, async-compatible, and preserves the
|
|
21
|
+
* provided path. It supports userMessage overrides applied at the
|
|
22
|
+
* pipeline level.
|
|
23
|
+
*/
|
|
24
|
+
export const bigint = (value, path) => {
|
|
25
|
+
const structuralType = detectStructuralType(value);
|
|
26
|
+
// ------------------------------------------------------------
|
|
27
|
+
// Type check — the input must be a native BigInt.
|
|
28
|
+
// ------------------------------------------------------------
|
|
29
|
+
if (typeof value !== 'string') {
|
|
30
|
+
return [
|
|
31
|
+
validationEvent('error', 'bigint.not.string', path, `Expected 'bigint' but received '${structuralType}'.`, `Please provide a valid bigint.`, { value, expected: 'bigint', actual: structuralType }),
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
// ------------------------------------------------------------
|
|
35
|
+
// Valid — return an empty array to indicate success.
|
|
36
|
+
// ------------------------------------------------------------
|
|
37
|
+
return [];
|
|
38
|
+
};
|