@clementine-solutions/jane-io 1.0.0 → 1.0.1
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/explain.d.ts +35 -0
- package/dist/core/analysis/index.d.ts +14 -0
- package/dist/core/analysis/replay.d.ts +34 -0
- package/dist/core/analysis/telemetry.d.ts +28 -0
- package/dist/core/boundary-rules/at-most-one.d.ts +17 -0
- package/dist/core/boundary-rules/conditionally-required.d.ts +18 -0
- package/dist/core/boundary-rules/date-range.d.ts +17 -0
- package/dist/core/boundary-rules/index.d.ts +18 -0
- package/dist/core/boundary-rules/mutually-exclusive.d.ts +16 -0
- package/dist/core/boundary-rules/no-unknown-fields.d.ts +17 -0
- package/dist/core/boundary-rules/require-all.d.ts +16 -0
- package/dist/core/boundary-rules/require-one.d.ts +17 -0
- package/dist/core/common/events.d.ts +37 -0
- package/dist/core/common/fluent.d.ts +151 -0
- package/dist/core/common/index.d.ts +16 -0
- package/dist/core/common/policy.d.ts +170 -0
- package/dist/core/common/utilities.d.ts +59 -0
- package/dist/core/common/wildcard.d.ts +27 -0
- package/dist/core/field-path/construct.d.ts +77 -0
- package/dist/core/field-path/format.d.ts +41 -0
- package/dist/core/field-path/index.d.ts +14 -0
- package/dist/core/field-path/utilities.d.ts +85 -0
- package/dist/core/field-path/walk.d.ts +36 -0
- package/dist/core/fluent-registry.d.ts +138 -0
- package/dist/core/normalizers/array/compact-sparse-array.d.ts +22 -0
- package/dist/core/normalizers/array/flatten-one-level.d.ts +17 -0
- package/dist/core/normalizers/array/remove-empty-string-items.d.ts +6 -0
- package/dist/core/normalizers/array/remove-null-items.d.ts +16 -0
- package/dist/core/normalizers/array/remove-undefined-items.d.ts +16 -0
- package/dist/core/normalizers/date/invalid-date-to-undefined.d.ts +17 -0
- package/dist/core/normalizers/index.d.ts +28 -0
- package/dist/core/normalizers/normalizer-register.d.ts +17 -0
- package/dist/core/normalizers/number/infinity-to-undefined.d.ts +18 -0
- package/dist/core/normalizers/number/nan-to-undefined.d.ts +17 -0
- package/dist/core/normalizers/number/normalize-negative-zero.d.ts +16 -0
- package/dist/core/normalizers/object/remove-empty-array-keys.d.ts +17 -0
- package/dist/core/normalizers/object/remove-empty-object-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-empty-string-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-null-keys.d.ts +16 -0
- package/dist/core/normalizers/object/remove-undefined-keys.d.ts +16 -0
- package/dist/core/normalizers/string/collapse-whitespace.d.ts +17 -0
- package/dist/core/normalizers/string/empty-to-undefined.d.ts +16 -0
- package/dist/core/normalizers/string/trim.d.ts +16 -0
- package/dist/core/parsers/index.d.ts +22 -0
- package/dist/core/parsers/parse-array-string.d.ts +16 -0
- package/dist/core/parsers/parse-bigint-string.d.ts +16 -0
- package/dist/core/parsers/parse-binary-string.d.ts +16 -0
- package/dist/core/parsers/parse-boolean-string.d.ts +16 -0
- package/dist/core/parsers/parse-date-string.d.ts +16 -0
- package/dist/core/parsers/parse-duration-string.d.ts +16 -0
- package/dist/core/parsers/parse-hex-string.d.ts +16 -0
- package/dist/core/parsers/parse-integer-string.d.ts +16 -0
- package/dist/core/parsers/parse-json-string.d.ts +17 -0
- package/dist/core/parsers/parse-numeric-string.d.ts +16 -0
- package/dist/core/parsers/parse-object-string.d.ts +16 -0
- package/dist/core/parsers/parse-octal-string.d.ts +16 -0
- package/dist/core/parsers/parse-scientific-notation-string.d.ts +16 -0
- package/dist/core/parsers/parse-url-string.d.ts +16 -0
- package/dist/core/pipeline/boundary.d.ts +36 -0
- package/dist/core/pipeline/contain.d.ts +122 -0
- package/dist/core/pipeline/index.d.ts +16 -0
- package/dist/core/pipeline/normalize.d.ts +34 -0
- package/dist/core/pipeline/parse.d.ts +40 -0
- package/dist/core/pipeline/pipeline.d.ts +23 -0
- package/dist/core/pipeline/scan.d.ts +46 -0
- package/dist/core/pipeline/validate.d.ts +40 -0
- package/dist/core/scanners/any/scan-for-sentinels.d.ts +19 -0
- package/dist/core/scanners/array/array-is-deep.d.ts +19 -0
- package/dist/core/scanners/array/array-is-heterogenous.d.ts +18 -0
- package/dist/core/scanners/array/array-is-large.d.ts +19 -0
- package/dist/core/scanners/bigint/bigint-is-large.d.ts +20 -0
- package/dist/core/scanners/bigint/bigint-not-safe.d.ts +20 -0
- package/dist/core/scanners/date/date-is-before-epoch.d.ts +19 -0
- package/dist/core/scanners/date/date-is-far-future.d.ts +19 -0
- package/dist/core/scanners/date/date-is-invalid.d.ts +19 -0
- package/dist/core/scanners/index.d.ts +31 -0
- package/dist/core/scanners/number/number-is-infinite.d.ts +19 -0
- package/dist/core/scanners/number/number-is-nan.d.ts +19 -0
- package/dist/core/scanners/number/number-is-too-large.d.ts +20 -0
- package/dist/core/scanners/number/number-is-unsafe-integer.d.ts +19 -0
- package/dist/core/scanners/object/object-has-circular-references.d.ts +20 -0
- package/dist/core/scanners/object/object-has-many-keys.d.ts +19 -0
- package/dist/core/scanners/object/object-is-deep.d.ts +20 -0
- package/dist/core/scanners/scanner-registry.d.ts +19 -0
- package/dist/core/scanners/string/string-has-unsafe-unicode.d.ts +19 -0
- package/dist/core/scanners/string/string-has-whitespace-edges.d.ts +19 -0
- package/dist/core/scanners/string/string-is-long.d.ts +19 -0
- package/dist/core/scanners/unknown/unknown-not-scannable.d.ts +21 -0
- package/dist/core/shapes/analysis.d.ts +239 -0
- package/dist/core/shapes/boundary.d.ts +126 -0
- package/dist/core/shapes/events.d.ts +83 -0
- package/dist/core/shapes/field-path.d.ts +51 -0
- package/dist/core/shapes/index.d.ts +21 -0
- package/dist/core/shapes/normalize.d.ts +59 -0
- package/dist/core/shapes/parse.d.ts +75 -0
- package/dist/core/shapes/pipeline.d.ts +149 -0
- package/dist/core/shapes/policy.d.ts +158 -0
- package/dist/core/shapes/public.d.ts +92 -0
- package/dist/core/shapes/scan.d.ts +126 -0
- package/dist/core/shapes/validate.d.ts +65 -0
- package/dist/core/validators/array/array-max-items.d.ts +25 -0
- package/dist/core/validators/array/array-min-items.d.ts +25 -0
- package/dist/core/validators/array/array.d.ts +22 -0
- package/dist/core/validators/array/excludes.d.ts +25 -0
- package/dist/core/validators/array/has-unique-items.d.ts +24 -0
- package/dist/core/validators/array/includes.d.ts +24 -0
- package/dist/core/validators/array/items-equal.d.ts +25 -0
- package/dist/core/validators/array/no-empty-string-items.d.ts +24 -0
- package/dist/core/validators/array/no-null-items.d.ts +24 -0
- package/dist/core/validators/array/no-undefined-items.d.ts +24 -0
- package/dist/core/validators/array/non-empty-array.d.ts +24 -0
- package/dist/core/validators/array/not-sparse.d.ts +25 -0
- package/dist/core/validators/bigint/bigint-equals.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-max.d.ts +25 -0
- package/dist/core/validators/bigint/bigint-min.d.ts +25 -0
- package/dist/core/validators/bigint/bigint-negative.d.ts +23 -0
- package/dist/core/validators/bigint/bigint-non-negative.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-non-positive.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-positive.d.ts +24 -0
- package/dist/core/validators/bigint/bigint-safe.d.ts +25 -0
- package/dist/core/validators/bigint/bigint.d.ts +20 -0
- package/dist/core/validators/boolean/boolean.d.ts +21 -0
- package/dist/core/validators/boolean/is-false.d.ts +22 -0
- package/dist/core/validators/boolean/is-true.d.ts +22 -0
- package/dist/core/validators/common/is-country-code.d.ts +17 -0
- package/dist/core/validators/common/is-currency-code.d.ts +17 -0
- package/dist/core/validators/common/is-email-strict.d.ts +17 -0
- package/dist/core/validators/common/is-email.d.ts +17 -0
- package/dist/core/validators/common/is-ip.d.ts +17 -0
- package/dist/core/validators/common/is-phone-strict.d.ts +17 -0
- package/dist/core/validators/common/is-phone.d.ts +17 -0
- package/dist/core/validators/common/is-port.d.ts +17 -0
- package/dist/core/validators/common/is-postal-code.d.ts +17 -0
- package/dist/core/validators/common/is-url.d.ts +17 -0
- package/dist/core/validators/common/is-uuid.d.ts +17 -0
- package/dist/core/validators/date/before-epoch.d.ts +28 -0
- package/dist/core/validators/date/date-now-required.d.ts +22 -0
- package/dist/core/validators/date/is-date.d.ts +21 -0
- package/dist/core/validators/date/is-far-future.d.ts +23 -0
- package/dist/core/validators/date/is-future.d.ts +24 -0
- package/dist/core/validators/date/is-past.d.ts +24 -0
- package/dist/core/validators/date/not-after.d.ts +25 -0
- package/dist/core/validators/date/not-before.d.ts +25 -0
- package/dist/core/validators/date/same-day.d.ts +25 -0
- package/dist/core/validators/date/same-month.d.ts +25 -0
- package/dist/core/validators/date/same-year.d.ts +24 -0
- package/dist/core/validators/date/too-early.d.ts +25 -0
- package/dist/core/validators/date/too-late.d.ts +25 -0
- package/dist/core/validators/date/weekday.d.ts +32 -0
- package/dist/core/validators/date/weekend.d.ts +27 -0
- package/dist/core/validators/index.d.ts +112 -0
- package/dist/core/validators/nullish/is-null-or-undefined.d.ts +22 -0
- package/dist/core/validators/nullish/is-null.d.ts +21 -0
- package/dist/core/validators/nullish/is-undefined.d.ts +21 -0
- package/dist/core/validators/number/finite.d.ts +22 -0
- package/dist/core/validators/number/integer.d.ts +22 -0
- package/dist/core/validators/number/less-than.d.ts +21 -0
- package/dist/core/validators/number/max.d.ts +21 -0
- package/dist/core/validators/number/min.d.ts +21 -0
- package/dist/core/validators/number/more-than.d.ts +21 -0
- package/dist/core/validators/number/negative.d.ts +20 -0
- package/dist/core/validators/number/non-negative.d.ts +19 -0
- package/dist/core/validators/number/non-positive.d.ts +19 -0
- package/dist/core/validators/number/number.d.ts +19 -0
- package/dist/core/validators/number/positive.d.ts +20 -0
- package/dist/core/validators/number/safe-integer.d.ts +19 -0
- package/dist/core/validators/object/deep-equals.d.ts +24 -0
- package/dist/core/validators/object/has-key.d.ts +23 -0
- package/dist/core/validators/object/has-value.d.ts +27 -0
- package/dist/core/validators/object/keys-equal.d.ts +26 -0
- package/dist/core/validators/object/max-keys.d.ts +24 -0
- package/dist/core/validators/object/min-keys.d.ts +24 -0
- package/dist/core/validators/object/missing-key.d.ts +23 -0
- package/dist/core/validators/object/no-empty-array-values.d.ts +23 -0
- package/dist/core/validators/object/no-empty-object-values.d.ts +23 -0
- package/dist/core/validators/object/no-null-values.d.ts +23 -0
- package/dist/core/validators/object/no-undefined-values.d.ts +23 -0
- package/dist/core/validators/object/non-empty-object.d.ts +21 -0
- package/dist/core/validators/object/only-keys.d.ts +23 -0
- package/dist/core/validators/object/plain-object.d.ts +22 -0
- package/dist/core/validators/string/alpha-num.d.ts +23 -0
- package/dist/core/validators/string/alpha.d.ts +24 -0
- package/dist/core/validators/string/chars-equal.d.ts +23 -0
- package/dist/core/validators/string/ends-with.d.ts +23 -0
- package/dist/core/validators/string/is-ascii.d.ts +24 -0
- package/dist/core/validators/string/is-printable.d.ts +25 -0
- package/dist/core/validators/string/matches.d.ts +23 -0
- package/dist/core/validators/string/max-length.d.ts +24 -0
- package/dist/core/validators/string/min-length.d.ts +24 -0
- package/dist/core/validators/string/no-lead-space.d.ts +23 -0
- package/dist/core/validators/string/no-repeat-space.d.ts +25 -0
- package/dist/core/validators/string/no-space.d.ts +24 -0
- package/dist/core/validators/string/no-trail-space.d.ts +23 -0
- package/dist/core/validators/string/non-empty.d.ts +22 -0
- package/dist/core/validators/string/not-one-of.d.ts +24 -0
- package/dist/core/validators/string/num-string.d.ts +23 -0
- package/dist/core/validators/string/one-of.d.ts +23 -0
- package/dist/core/validators/string/starts-with.d.ts +23 -0
- package/dist/core/validators/string/string.d.ts +21 -0
- package/dist/core/validators/string/trimmed.d.ts +24 -0
- package/dist/index.d.ts +83 -0
- package/dist/test.d.ts +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Common | Policy
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Core types and helpers for defining, normalizing, and
|
|
7
|
+
* resolving policies that guide how Jane interprets events
|
|
8
|
+
* across all pipeline stages.
|
|
9
|
+
* @see https://jane-io.com
|
|
10
|
+
* ----------------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
import type { EventCode, EventKind, FieldPath, Policy, PolicyContext, PolicyOverrides, PipelineResult, PipelineMetadata, BoundaryDecideConfig } from '../shapes';
|
|
13
|
+
import type { PolicyInput } from '../shapes/policy';
|
|
14
|
+
/**
|
|
15
|
+
* Raises an event’s severity by the given number of levels.
|
|
16
|
+
*
|
|
17
|
+
* Escalation moves the severity index upward and clamps it to the valid
|
|
18
|
+
* range. This helper is used by policy transforms to harden events without
|
|
19
|
+
* altering their underlying meaning or code.
|
|
20
|
+
*/
|
|
21
|
+
export declare function applyEscalate(kind: EventKind, levels: number): EventKind;
|
|
22
|
+
/**
|
|
23
|
+
* Lowers an event’s severity by the given number of levels.
|
|
24
|
+
*
|
|
25
|
+
* Override moves the severity index downward and clamps it to the valid
|
|
26
|
+
* range. This helper is used by policy transforms to soften events without
|
|
27
|
+
* changing their underlying meaning or code.
|
|
28
|
+
*/
|
|
29
|
+
export declare function applyOverride(kind: EventKind, levels: number): EventKind;
|
|
30
|
+
/**
|
|
31
|
+
* Clamps a severity index to the valid range.
|
|
32
|
+
*
|
|
33
|
+
* Severity levels are stored as an ordered list. This helper ensures that
|
|
34
|
+
* arithmetic on the index—such as escalation or override—never produces an
|
|
35
|
+
* out‑of‑bounds value. No interpretation occurs here; it simply enforces the
|
|
36
|
+
* valid numeric range.
|
|
37
|
+
*/
|
|
38
|
+
export declare function clampSeverityIndex(i: number): number;
|
|
39
|
+
/**
|
|
40
|
+
* Compiles a user‑supplied severity map into override/escalation deltas.
|
|
41
|
+
*
|
|
42
|
+
* Each entry expresses a desired target severity for an event code. This
|
|
43
|
+
* helper compares the target against the baseline severity (“error”) and
|
|
44
|
+
* converts the difference into numeric levels suitable for the override and
|
|
45
|
+
* escalate policy transforms.
|
|
46
|
+
*
|
|
47
|
+
* Negative deltas become override levels; positive deltas become escalation
|
|
48
|
+
* levels. No interpretation occurs here—this function only computes the
|
|
49
|
+
* distance between severities.
|
|
50
|
+
*/
|
|
51
|
+
export declare function compileSeverityMap(severity: Readonly<Partial<Record<EventCode, EventKind>>>): {
|
|
52
|
+
override: Readonly<Partial<Record<EventCode, number>>>;
|
|
53
|
+
escalate: Readonly<Partial<Record<EventCode, number>>>;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Creates a `decide`‑phase event.
|
|
57
|
+
*
|
|
58
|
+
* Decision events are emitted after validation when policy logic evaluates
|
|
59
|
+
* severity, overrides, escalation, and boundary rules. This helper ensures
|
|
60
|
+
* all decision events share a consistent shape and metadata.
|
|
61
|
+
*/
|
|
62
|
+
export declare const decideEvent: (kind: EventKind, code: EventCode, path: FieldPath, message?: string, userMessage?: string, meta?: Record<string, unknown>) => import("../shapes").JaneEvent;
|
|
63
|
+
/**
|
|
64
|
+
* The baseline policy used when no user configuration is provided.
|
|
65
|
+
*
|
|
66
|
+
* Moderate mode applies no automatic rejects, reviews, or severity transforms.
|
|
67
|
+
* Scan and analysis features are disabled, and no structural exceptions are
|
|
68
|
+
* granted. This preset defines Jane’s neutral, predictable behavior and serves
|
|
69
|
+
* as the foundation for all policy merging.
|
|
70
|
+
*/
|
|
71
|
+
export declare const defaultPolicy: Policy;
|
|
72
|
+
/**
|
|
73
|
+
* A permissive policy preset optimized for developer‑friendly behavior.
|
|
74
|
+
*
|
|
75
|
+
* Lax mode applies no rejects or reviews, downgrades all severities by one
|
|
76
|
+
* level via a wildcard override, disables scan and analysis features, and
|
|
77
|
+
* allows structural exceptions for bigint, map, and set. This preset favors
|
|
78
|
+
* flexibility and forgiveness during development and experimentation.
|
|
79
|
+
*/
|
|
80
|
+
export declare const laxPolicy: Policy;
|
|
81
|
+
/**
|
|
82
|
+
* A strict boundary preset that rejects on any issue.
|
|
83
|
+
*
|
|
84
|
+
* This configuration forces boundary acceptance to “strict”, applies a
|
|
85
|
+
* wildcard reject to treat every issue as fatal, and hides nothing from the
|
|
86
|
+
* event or issue streams. It provides the most conservative, compliance‑grade
|
|
87
|
+
* boundary behavior.
|
|
88
|
+
*/
|
|
89
|
+
export declare const boundaryPolicyStrict: BoundaryDecideConfig;
|
|
90
|
+
/**
|
|
91
|
+
* The neutral boundary preset used when no boundary configuration is supplied.
|
|
92
|
+
*
|
|
93
|
+
* Default mode requires all fields to be accepted, applies no reject or review
|
|
94
|
+
* patterns, and hides nothing from the event or issue streams. It provides a
|
|
95
|
+
* transparent, assumption‑free baseline for boundary evaluation.
|
|
96
|
+
*/
|
|
97
|
+
export declare const boundaryPolicyDefault: BoundaryDecideConfig;
|
|
98
|
+
/**
|
|
99
|
+
* A permissive boundary preset that accepts if any field succeeds.
|
|
100
|
+
*
|
|
101
|
+
* Lax mode ignores all boundary‑level events, hides both events and issues
|
|
102
|
+
* from the result, and applies no reject or review patterns. It provides a
|
|
103
|
+
* forgiving, low‑visibility boundary configuration suited for exploratory or
|
|
104
|
+
* developer‑focused workflows.
|
|
105
|
+
*/
|
|
106
|
+
export declare const boundaryPolicyLax: BoundaryDecideConfig;
|
|
107
|
+
/**
|
|
108
|
+
* A maximum‑scrutiny policy preset for safety‑critical pipelines.
|
|
109
|
+
*
|
|
110
|
+
* Strict mode enables scan, rejects high‑risk conditions outright, escalates
|
|
111
|
+
* all severities by one level, and requires review for large or complex
|
|
112
|
+
* structures. All analysis features are enabled, and no structural exceptions
|
|
113
|
+
* are granted. This preset enforces the most conservative, defensive behavior.
|
|
114
|
+
*/
|
|
115
|
+
export declare const strictPolicy: Policy;
|
|
116
|
+
export declare function mergeBoundaryPolicies(base: Partial<BoundaryDecideConfig> | undefined, ...overrides: Array<Partial<BoundaryDecideConfig> | undefined>): BoundaryDecideConfig;
|
|
117
|
+
/**
|
|
118
|
+
* Merges a base policy with user‑supplied input into a final, normalized policy.
|
|
119
|
+
*
|
|
120
|
+
* This function applies field‑by‑field overrides, compiles public severity
|
|
121
|
+
* settings into internal override/escalation maps, and merges reject/review/warn
|
|
122
|
+
* patterns in a predictable order. It preserves all unspecified fields from the
|
|
123
|
+
* base policy and never introduces defaults beyond those already present.
|
|
124
|
+
*/
|
|
125
|
+
export declare function normalizePolicy(base: Policy, input?: PolicyInput): Policy;
|
|
126
|
+
/**
|
|
127
|
+
* Resolves a numeric level for an event code from a sparse lookup table.
|
|
128
|
+
*
|
|
129
|
+
* Exact matches take priority. If none exist, wildcard patterns in the table
|
|
130
|
+
* are tested in insertion order using their compiled regular expressions.
|
|
131
|
+
* Returns the matched level or `undefined` when no pattern applies.
|
|
132
|
+
*/
|
|
133
|
+
export declare function resolveLevel(code: EventCode, table: Readonly<Partial<Record<string, number>>>): number | undefined;
|
|
134
|
+
/**
|
|
135
|
+
* Applies policy transforms to events and produces the final pipeline decision.
|
|
136
|
+
*
|
|
137
|
+
* This function reshapes events using override, escalation, and warn rules,
|
|
138
|
+
* derives issues from the resulting severities, and evaluates reject/review
|
|
139
|
+
* patterns according to the active policy mode. It returns the full pipeline
|
|
140
|
+
* result with shaped events, extracted issues, and a final accept/review/reject
|
|
141
|
+
* decision. No data is modified—only event interpretation changes.
|
|
142
|
+
*/
|
|
143
|
+
export declare function policyDecision<T>(ctx: PolicyContext<T>, metadata: PipelineMetadata): PipelineResult<T>;
|
|
144
|
+
/**
|
|
145
|
+
* Resolves the effective policy by merging defaults, explicit policy, and
|
|
146
|
+
* fluent‑API overrides.
|
|
147
|
+
*
|
|
148
|
+
* The default and explicit policies are combined first, then builder overrides
|
|
149
|
+
* are applied field‑by‑field with strict precedence. Only fields exposed to the
|
|
150
|
+
* fluent API are overrideable; all other structure is taken directly from the
|
|
151
|
+
* merged base. No inference or normalization occurs here—this function performs
|
|
152
|
+
* a final, literal merge for pipeline execution.
|
|
153
|
+
*/
|
|
154
|
+
export declare function resolvePolicy(defaultPolicy: Policy, janePolicy: Policy | undefined, overrides: PolicyOverrides | undefined): Policy;
|
|
155
|
+
/**
|
|
156
|
+
* Returns the numeric index for a severity kind.
|
|
157
|
+
*
|
|
158
|
+
* Event kinds are stored in a fixed ordered list. Unknown kinds fall back to
|
|
159
|
+
* index 0 to guarantee a safe, deterministic baseline for all severity math.
|
|
160
|
+
* No interpretation occurs here—this is a simple lookup with a fallback.
|
|
161
|
+
*/
|
|
162
|
+
export declare function severityIndex(kind: EventKind): number;
|
|
163
|
+
/**
|
|
164
|
+
* Fixed severity ladder from least to most severe.
|
|
165
|
+
*
|
|
166
|
+
* Policies, escalation math, and explain output rely on this exact ordering.
|
|
167
|
+
* Changing it is a breaking change because severity indices are used
|
|
168
|
+
* throughout the pipeline.
|
|
169
|
+
*/
|
|
170
|
+
export declare const SEVERITY_ORDER: readonly EventKind[];
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Common | Utilities
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Shared low‑level helpers used across Jane’s core subsystems.
|
|
7
|
+
* @see https://jane-io.com
|
|
8
|
+
* ----------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Performs structural deep equality on contained values.
|
|
12
|
+
*
|
|
13
|
+
* Primitives are compared by value, arrays and plain objects by shape and
|
|
14
|
+
* recursively by content, and Date objects by timestamp. Non‑plain objects
|
|
15
|
+
* are rejected. Cycle detection ensures safe comparison of recursive
|
|
16
|
+
* structures. This function defines the structural equality model used
|
|
17
|
+
* throughout Jane’s containment and diff logic.
|
|
18
|
+
*/
|
|
19
|
+
export declare function deepEqual(a: unknown, b: unknown, seen?: WeakMap<object, object>): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Generates a unique run identifier.
|
|
22
|
+
*
|
|
23
|
+
* Uses `crypto.randomUUID` when available for strong, collision‑resistant IDs.
|
|
24
|
+
* Falls back to a timestamp + entropy string in environments without UUID
|
|
25
|
+
* support. Always returns a stable string suitable for pipeline metadata.
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateRunId(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Checks for non‑null object values.
|
|
30
|
+
*
|
|
31
|
+
* Used as a minimal guard before structural checks. Functions, arrays, and
|
|
32
|
+
* plain objects all satisfy this test; it only excludes `null` and primitives.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isObject(v: unknown): v is object;
|
|
35
|
+
/**
|
|
36
|
+
* Checks whether a value is a strict plain object.
|
|
37
|
+
*
|
|
38
|
+
* Excludes arrays, null, and objects with custom or null prototypes. Only
|
|
39
|
+
* `{}`‑shaped values created by `Object` with `Object.prototype` qualify.
|
|
40
|
+
* Used wherever structural rules require predictable, JSON‑compatible objects.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Checks whether a value is a JavaScript primitive.
|
|
45
|
+
*
|
|
46
|
+
* Includes all scalar literals plus `null` and `undefined`. Anything that is
|
|
47
|
+
* not an object and not a function qualifies. Used as a fast‑path guard before
|
|
48
|
+
* structural or container‑level checks.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isPrimitive(value: unknown): value is string | number | boolean | bigint | symbol | null | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Safely stringifies arbitrary values for use in messages and telemetry.
|
|
53
|
+
*
|
|
54
|
+
* Primitives are returned directly, strings are truncated with JSON quoting,
|
|
55
|
+
* functions and symbols are rendered as descriptive sentinels, and objects are
|
|
56
|
+
* JSON‑encoded with circular‑reference protection. Output is always bounded by
|
|
57
|
+
* `maxLength` to prevent runaway logs or unreadable diagnostics.
|
|
58
|
+
*/
|
|
59
|
+
export declare function safeStringify(value: unknown, maxLength?: number): string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Common | Wildcard
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Wildcard pattern helpers used for event‑code matching in policy rules.
|
|
7
|
+
* @see https://jane-io.com
|
|
8
|
+
* ----------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
import type { EventCode } from '../shapes';
|
|
11
|
+
/**
|
|
12
|
+
* Compiles a wildcard pattern into a safe, anchored regular expression.
|
|
13
|
+
*
|
|
14
|
+
* Escapes all regex metacharacters except `*`, which expands to `.*`. The
|
|
15
|
+
* result matches the entire string, ensuring predictable event‑code pattern
|
|
16
|
+
* checks in policy rules.
|
|
17
|
+
*/
|
|
18
|
+
export declare function compileWildcard(pattern: string): RegExp;
|
|
19
|
+
export declare function getCompiledWildcard(pattern: string): RegExp;
|
|
20
|
+
/**
|
|
21
|
+
* Checks whether an event code matches any literal or wildcard pattern.
|
|
22
|
+
*
|
|
23
|
+
* Exact string matches take priority. Wildcard patterns are resolved through
|
|
24
|
+
* cached compiled expressions and tested in order. Returns `true` on the first
|
|
25
|
+
* match, otherwise `false`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function matchesWildcard(code: EventCode, patterns: readonly string[]): boolean;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Field Path | Construct
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Constructors for creating canonical, immutable FieldPath
|
|
7
|
+
* objects.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { FieldPath, FieldPathSegment, InternalJsonValue, SegmentIndex, SegmentKey } from '../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Appends a segment to an existing FieldPath.
|
|
14
|
+
*
|
|
15
|
+
* Produces a new canonical FieldPath by extending the current path’s segment
|
|
16
|
+
* list. Never mutates the original path.
|
|
17
|
+
*/
|
|
18
|
+
export declare function appendSegment(path: FieldPath, segment: FieldPathSegment): FieldPath;
|
|
19
|
+
/**
|
|
20
|
+
* Produces a deep clone of an InternalJsonValue.
|
|
21
|
+
*
|
|
22
|
+
* Recursively copies arrays and plain objects while returning primitives,
|
|
23
|
+
* null, and undefined unchanged. Never mutates the input and never preserves
|
|
24
|
+
* references, ensuring safe use in diff, replay, and boundary evaluation.
|
|
25
|
+
*/
|
|
26
|
+
export declare function cloneContainer(value: InternalJsonValue): InternalJsonValue;
|
|
27
|
+
/**
|
|
28
|
+
* Creates a shallow clone of a FieldPath.
|
|
29
|
+
*
|
|
30
|
+
* Copies the segment list into a new canonical FieldPath, ensuring callers
|
|
31
|
+
* never share mutable path state.
|
|
32
|
+
*/
|
|
33
|
+
export declare function clonePath(path: FieldPath): FieldPath;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a canonical FieldPath from a list of segments.
|
|
36
|
+
*
|
|
37
|
+
* Wraps the segment array with a stable toString() implementation and optional
|
|
38
|
+
* inputName. Produces a new immutable path object without modifying callers’
|
|
39
|
+
* data.
|
|
40
|
+
*/
|
|
41
|
+
export declare function makeFieldPath(segments: FieldPathSegment[], inputName?: string): FieldPath;
|
|
42
|
+
/**
|
|
43
|
+
* Creates the root FieldPath.
|
|
44
|
+
*
|
|
45
|
+
* Produces an empty canonical path with an optional inputName. Used as the
|
|
46
|
+
* starting point for all path construction and never carries any segments.
|
|
47
|
+
*/
|
|
48
|
+
export declare const rootPath: (inputName?: string) => FieldPath;
|
|
49
|
+
/**
|
|
50
|
+
* Sets a value at the given FieldPath.
|
|
51
|
+
*
|
|
52
|
+
* If the path is empty, returns the value directly. Otherwise delegates to the
|
|
53
|
+
* recursive setter, producing a new InternalJsonValue without mutating the
|
|
54
|
+
* original root.
|
|
55
|
+
*/
|
|
56
|
+
export declare function setAtPath(root: InternalJsonValue, path: FieldPath, value: InternalJsonValue): InternalJsonValue;
|
|
57
|
+
/**
|
|
58
|
+
* Builds a FieldPath from the provided segments.
|
|
59
|
+
*
|
|
60
|
+
* Wraps the segment list in a canonical FieldPath object, ensuring callers
|
|
61
|
+
* always work with an immutable, well‑formed path representation.
|
|
62
|
+
*/
|
|
63
|
+
export declare const setFieldPath: (...segments: FieldPathSegment[]) => FieldPath;
|
|
64
|
+
/**
|
|
65
|
+
* Creates an index segment.
|
|
66
|
+
*
|
|
67
|
+
* Wraps the numeric index in a canonical SegmentIndex object for use in
|
|
68
|
+
* FieldPath construction.
|
|
69
|
+
*/
|
|
70
|
+
export declare const setIndex: (index: number) => SegmentIndex;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a key segment.
|
|
73
|
+
*
|
|
74
|
+
* Wraps the string key in a canonical SegmentKey object for use in
|
|
75
|
+
* FieldPath construction.
|
|
76
|
+
*/
|
|
77
|
+
export declare const setKey: (key: string) => SegmentKey;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Field Path | Format
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Converts FieldPath structures into stable, user‑facing
|
|
7
|
+
* string forms.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { FieldPath } from '../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Converts a list of raw parts into a FieldPath.
|
|
14
|
+
*
|
|
15
|
+
* Maps numbers to index segments and strings to key segments, producing a
|
|
16
|
+
* canonical FieldPath suitable for formatting, traversal, or boundary work.
|
|
17
|
+
*/
|
|
18
|
+
export declare function arrayToFieldPath(parts: (string | number)[]): FieldPath;
|
|
19
|
+
/**
|
|
20
|
+
* Converts a FieldPath into its raw parts.
|
|
21
|
+
*
|
|
22
|
+
* Extracts each segment’s key or index in order, producing a simple array
|
|
23
|
+
* representation suitable for serialization or comparison.
|
|
24
|
+
*/
|
|
25
|
+
export declare function fieldPathToArray(path: FieldPath): (string | number)[];
|
|
26
|
+
/**
|
|
27
|
+
* Converts a FieldPath into a user‑facing string.
|
|
28
|
+
*
|
|
29
|
+
* Uses dotted notation for safe keys and bracket notation for indexes or
|
|
30
|
+
* keys requiring escaping. Produces a stable, readable form for logs,
|
|
31
|
+
* errors, and policy messages.
|
|
32
|
+
*/
|
|
33
|
+
export declare function fieldPathToUser(path: FieldPath): string;
|
|
34
|
+
/**
|
|
35
|
+
* Parses a user‑facing path string into a FieldPath.
|
|
36
|
+
*
|
|
37
|
+
* Supports dotted keys, bracketed indexes, and quoted/escaped keys. Normalizes
|
|
38
|
+
* the "$" root form and walks the string character‑by‑character to build a
|
|
39
|
+
* canonical segment list suitable for traversal and boundary evaluation.
|
|
40
|
+
*/
|
|
41
|
+
export declare function userToFieldPath(user?: string): FieldPath;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Field Path | Barrel File
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Re‑exports the Field Path modules to provide a unified
|
|
7
|
+
* public surface.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
export { appendSegment, cloneContainer, clonePath, makeFieldPath, rootPath, setAtPath, setFieldPath, setIndex, setKey, } from './construct';
|
|
12
|
+
export { arrayToFieldPath, fieldPathToArray, fieldPathToUser, userToFieldPath } from './format';
|
|
13
|
+
export { DANGEROUS_KEYS, escapeKey, isDangerousKey, isRoot, isSafeKey, lastSegment, parentPath, pathEquals, pathStartsWith, segmentsEqual, } from './utilities';
|
|
14
|
+
export { walk, walkArray, walkObject } from './walk';
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Field Path | Utilities
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Small helper functions supporting FieldPath construction,
|
|
7
|
+
* parsing, and formatting.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { FieldPath, FieldPathSegment } from '../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Keys that must never appear in dotted notation.
|
|
14
|
+
*
|
|
15
|
+
* These properties interact with JavaScript’s prototype chain and are always
|
|
16
|
+
* forced into bracket‑notation to prevent prototype‑pollution vectors in
|
|
17
|
+
* formatting, parsing, and boundary evaluation.
|
|
18
|
+
*/
|
|
19
|
+
export declare const DANGEROUS_KEYS: Set<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Escapes a key for bracket notation.
|
|
22
|
+
*
|
|
23
|
+
* Uses JSON string rules to preserve all characters exactly, ensuring keys
|
|
24
|
+
* round‑trip cleanly through user‑facing formatting and parsing.
|
|
25
|
+
*/
|
|
26
|
+
export declare function escapeKey(key: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Checks whether a key is unsafe for dotted notation.
|
|
29
|
+
*
|
|
30
|
+
* Identifies prototype‑chain properties that must always be emitted in
|
|
31
|
+
* bracket‑notation to avoid prototype‑pollution vectors.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isDangerousKey(key: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Checks whether a FieldPath refers to the root.
|
|
36
|
+
*
|
|
37
|
+
* A path is the root when it contains no segments, representing the top‑level
|
|
38
|
+
* position in traversal, formatting, and boundary evaluation.
|
|
39
|
+
*/
|
|
40
|
+
export declare const isRoot: (path: FieldPath) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Checks whether a key is safe for dotted notation.
|
|
43
|
+
*
|
|
44
|
+
* Rejects prototype‑chain properties and ensures the key matches JavaScript
|
|
45
|
+
* identifier rules, allowing it to appear unescaped in user‑facing paths.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isSafeKey(key: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Returns the final segment of a FieldPath.
|
|
50
|
+
*
|
|
51
|
+
* Useful when validators, scanners, or boundary logic need to inspect the
|
|
52
|
+
* current traversal position without mutating the path.
|
|
53
|
+
*/
|
|
54
|
+
export declare const lastSegment: (path: FieldPath) => FieldPathSegment | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Returns the parent of a FieldPath.
|
|
57
|
+
*
|
|
58
|
+
* Removes the final segment to move one level up in traversal. Root paths
|
|
59
|
+
* remain stable—slicing an empty path yields another empty path.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parentPath(path: FieldPath): FieldPath;
|
|
62
|
+
/**
|
|
63
|
+
* Checks whether two FieldPaths are structurally identical.
|
|
64
|
+
*
|
|
65
|
+
* Paths are equal only when they contain the same number of segments and each
|
|
66
|
+
* corresponding segment matches, ensuring deterministic behavior in diff,
|
|
67
|
+
* explain, and boundary evaluation.
|
|
68
|
+
*/
|
|
69
|
+
export declare function pathEquals(a: FieldPath, b: FieldPath): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Checks whether one FieldPath is a prefix of another.
|
|
72
|
+
*
|
|
73
|
+
* Path **a** starts with **b** when b has no more segments than a and each
|
|
74
|
+
* corresponding segment matches. Used by diff, explain, and boundary logic
|
|
75
|
+
* to determine whether a rule or change applies to a nested position.
|
|
76
|
+
*/
|
|
77
|
+
export declare function pathStartsWith(a: FieldPath, b: FieldPath): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Checks whether two segments are structurally identical.
|
|
80
|
+
*
|
|
81
|
+
* Segments must share the same kind, and their key or index values must
|
|
82
|
+
* match exactly. This is the atomic comparison used by all path‑level
|
|
83
|
+
* equality and prefix checks.
|
|
84
|
+
*/
|
|
85
|
+
export declare const segmentsEqual: (a: FieldPathSegment, b: FieldPathSegment) => boolean;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Field Path | Walk
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Traversal helpers that walk JSON‑like data with FieldPath
|
|
7
|
+
* context.
|
|
8
|
+
* @see https://jane-io.com
|
|
9
|
+
* ----------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
import type { FieldPath } from '../shapes';
|
|
12
|
+
/**
|
|
13
|
+
* Recursively walks a JSON‑like value with FieldPath context.
|
|
14
|
+
*
|
|
15
|
+
* Visits the current node, then descends into arrays and plain objects,
|
|
16
|
+
* constructing child paths segment‑by‑segment. Prototype‑chain keys are
|
|
17
|
+
* skipped to avoid unsafe traversal during validation, scanning, and
|
|
18
|
+
* boundary evaluation.
|
|
19
|
+
*/
|
|
20
|
+
export declare function walk(value: unknown, path: FieldPath, visit: (value: unknown, path: FieldPath) => Promise<void>): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Visits each element of an array with FieldPath context.
|
|
23
|
+
*
|
|
24
|
+
* Emits a child path for every index and invokes the visitor without
|
|
25
|
+
* descending further. Used internally by higher‑level walkers that
|
|
26
|
+
* control recursion and traversal strategy.
|
|
27
|
+
*/
|
|
28
|
+
export declare function walkArray(value: readonly unknown[], path: FieldPath, visit: (child: unknown, childPath: FieldPath) => Promise<void>): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Visits each own property of an object with FieldPath context.
|
|
31
|
+
*
|
|
32
|
+
* Emits a child path for every safe key and invokes the visitor without
|
|
33
|
+
* descending further. Prototype‑chain keys are skipped to avoid unsafe
|
|
34
|
+
* traversal during validation, scanning, and boundary evaluation.
|
|
35
|
+
*/
|
|
36
|
+
export declare function walkObject(value: Record<string, unknown>, path: FieldPath, visit: (child: unknown, childPath: FieldPath) => Promise<void>): Promise<void>;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ----------------------------------------------------------------------------
|
|
3
|
+
* Registry | Fluent
|
|
4
|
+
* ----------------------------------------------------------------------------
|
|
5
|
+
* @package @clementine-solutions/jane
|
|
6
|
+
* @description Central registry of all built‑in validators and parsers.
|
|
7
|
+
* @see https://jane-io.com
|
|
8
|
+
* ----------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Central registry of all built‑in Jane validators and parsers.
|
|
12
|
+
*
|
|
13
|
+
* This object provides a single, authoritative lookup table for every
|
|
14
|
+
* first‑party rule Jane ships with. Validators define how values are checked
|
|
15
|
+
* for correctness, while parsers convert raw input into structured forms.
|
|
16
|
+
* Keeping them together in one immutable registry ensures predictable
|
|
17
|
+
* resolution, consistent behavior across subsystems, and a stable surface
|
|
18
|
+
* for contributors extending or inspecting Jane’s rule set.
|
|
19
|
+
*/
|
|
20
|
+
export declare const janeRegistry: {
|
|
21
|
+
readonly validators: {
|
|
22
|
+
readonly alphaNum: import("./shapes").ValidationRule;
|
|
23
|
+
readonly alpha: import("./shapes").ValidationRule;
|
|
24
|
+
readonly array: import("./shapes").ValidationRule;
|
|
25
|
+
readonly arrayMinItems: (min: number) => import("./shapes").ValidationRule;
|
|
26
|
+
readonly arrayMaxItems: (max: number) => import("./shapes").ValidationRule;
|
|
27
|
+
readonly beforeEpoch: import("./shapes").ValidationRule;
|
|
28
|
+
readonly bigint: import("./shapes").ValidationRule;
|
|
29
|
+
readonly bigintEquals: (target: bigint) => import("./shapes").ValidationRule;
|
|
30
|
+
readonly bigintMax: (max: bigint) => import("./shapes").ValidationRule;
|
|
31
|
+
readonly bigintMin: (min: bigint) => import("./shapes").ValidationRule;
|
|
32
|
+
readonly bigintNegative: import("./shapes").ValidationRule;
|
|
33
|
+
readonly bigintNonNegative: import("./shapes").ValidationRule;
|
|
34
|
+
readonly bigintNonPositive: import("./shapes").ValidationRule;
|
|
35
|
+
readonly bigintPositive: import("./shapes").ValidationRule;
|
|
36
|
+
readonly bigintSafe: import("./shapes").ValidationRule;
|
|
37
|
+
readonly boolean: import("./shapes").ValidationRule;
|
|
38
|
+
readonly charsEqual: (exact: number) => import("./shapes").ValidationRule;
|
|
39
|
+
readonly dateNowRequired: import("./shapes").ValidationRule;
|
|
40
|
+
readonly deepEquals: (expected: unknown) => import("./shapes").ValidationRule;
|
|
41
|
+
readonly endsWith: (suffix: string) => import("./shapes").ValidationRule;
|
|
42
|
+
readonly excludes: (item: unknown) => import("./shapes").ValidationRule;
|
|
43
|
+
readonly finite: import("./shapes").ValidationRule;
|
|
44
|
+
readonly hasKey: (requiredKey: string) => import("./shapes").ValidationRule;
|
|
45
|
+
readonly hasUniqueItems: import("./shapes").ValidationRule;
|
|
46
|
+
readonly hasValue: (target: unknown) => import("./shapes").ValidationRule;
|
|
47
|
+
readonly includes: (item: unknown) => import("./shapes").ValidationRule;
|
|
48
|
+
readonly integer: import("./shapes").ValidationRule;
|
|
49
|
+
readonly isAscii: import("./shapes").ValidationRule;
|
|
50
|
+
readonly isCountryCode: import("./shapes").ValidationRule;
|
|
51
|
+
readonly isCurrencyCode: import("./shapes").ValidationRule;
|
|
52
|
+
readonly isDate: import("./shapes").ValidationRule;
|
|
53
|
+
readonly isEmail: import("./shapes").ValidationRule;
|
|
54
|
+
readonly isEmailStrict: import("./shapes").ValidationRule;
|
|
55
|
+
readonly isFalse: import("./shapes").ValidationRule;
|
|
56
|
+
readonly isFarFuture: import("./shapes").ValidationRule;
|
|
57
|
+
readonly isFuture: import("./shapes").ValidationRule;
|
|
58
|
+
readonly isIp: import("./shapes").ValidationRule;
|
|
59
|
+
readonly isPast: import("./shapes").ValidationRule;
|
|
60
|
+
readonly isPhone: import("./shapes").ValidationRule;
|
|
61
|
+
readonly isPhoneStrict: import("./shapes").ValidationRule;
|
|
62
|
+
readonly isPort: import("./shapes").ValidationRule;
|
|
63
|
+
readonly isPostalCode: import("./shapes").ValidationRule;
|
|
64
|
+
readonly isPrintable: import("./shapes").ValidationRule;
|
|
65
|
+
readonly isNull: import("./shapes").ValidationRule;
|
|
66
|
+
readonly isNullOrUndefined: import("./shapes").ValidationRule;
|
|
67
|
+
readonly isTrue: import("./shapes").ValidationRule;
|
|
68
|
+
readonly isUrl: import("./shapes").ValidationRule;
|
|
69
|
+
readonly isUndefined: import("./shapes").ValidationRule;
|
|
70
|
+
readonly isUuid: import("./shapes").ValidationRule;
|
|
71
|
+
readonly itemsEqual: (exact: number) => import("./shapes").ValidationRule;
|
|
72
|
+
readonly keysEqual: (expectedKeys: readonly string[]) => import("./shapes").ValidationRule;
|
|
73
|
+
readonly lessThan: (limit: number) => import("./shapes").ValidationRule;
|
|
74
|
+
readonly matches: (pattern: RegExp) => import("./shapes").ValidationRule;
|
|
75
|
+
readonly max: (limit: number) => import("./shapes").ValidationRule;
|
|
76
|
+
readonly maxKeys: (maximum: number) => import("./shapes").ValidationRule;
|
|
77
|
+
readonly maxLength: (max: number) => import("./shapes").ValidationRule;
|
|
78
|
+
readonly min: (limit: number) => import("./shapes").ValidationRule;
|
|
79
|
+
readonly minKeys: (minimum: number) => import("./shapes").ValidationRule;
|
|
80
|
+
readonly minLength: (min: number) => import("./shapes").ValidationRule;
|
|
81
|
+
readonly missingKey: (requiredKeys: readonly string[]) => import("./shapes").ValidationRule;
|
|
82
|
+
readonly moreThan: (limit: number) => import("./shapes").ValidationRule;
|
|
83
|
+
readonly negative: import("./shapes").ValidationRule;
|
|
84
|
+
readonly noEmptyArrayValues: import("./shapes").ValidationRule;
|
|
85
|
+
readonly noEmptyObjectValues: import("./shapes").ValidationRule;
|
|
86
|
+
readonly noEmptyStringItems: import("./shapes").ValidationRule;
|
|
87
|
+
readonly noLeadSpace: import("./shapes").ValidationRule;
|
|
88
|
+
readonly noNullItems: import("./shapes").ValidationRule;
|
|
89
|
+
readonly noNullValues: import("./shapes").ValidationRule;
|
|
90
|
+
readonly noRepeatSpace: import("./shapes").ValidationRule;
|
|
91
|
+
readonly noSpace: import("./shapes").ValidationRule;
|
|
92
|
+
readonly noTrailSpace: import("./shapes").ValidationRule;
|
|
93
|
+
readonly noUndefinedItems: import("./shapes").ValidationRule;
|
|
94
|
+
readonly noUndefinedValues: import("./shapes").ValidationRule;
|
|
95
|
+
readonly nonEmpty: import("./shapes").ValidationRule;
|
|
96
|
+
readonly nonEmptyArray: import("./shapes").ValidationRule;
|
|
97
|
+
readonly nonEmptyObject: import("./shapes").ValidationRule;
|
|
98
|
+
readonly nonNegative: import("./shapes").ValidationRule;
|
|
99
|
+
readonly nonPositive: import("./shapes").ValidationRule;
|
|
100
|
+
readonly notAfter: (max: Date) => import("./shapes").ValidationRule;
|
|
101
|
+
readonly notBefore: (min: Date) => import("./shapes").ValidationRule;
|
|
102
|
+
readonly notOneOf: (disallowed: readonly string[]) => import("./shapes").ValidationRule;
|
|
103
|
+
readonly notSparse: import("./shapes").ValidationRule;
|
|
104
|
+
readonly number: import("./shapes").ValidationRule;
|
|
105
|
+
readonly numString: import("./shapes").ValidationRule;
|
|
106
|
+
readonly oneOf: (allowed: readonly string[]) => import("./shapes").ValidationRule;
|
|
107
|
+
readonly onlyKeys: (allowed: readonly string[]) => import("./shapes").ValidationRule;
|
|
108
|
+
readonly plainObject: import("./shapes").ValidationRule;
|
|
109
|
+
readonly positive: import("./shapes").ValidationRule;
|
|
110
|
+
readonly safeInteger: import("./shapes").ValidationRule;
|
|
111
|
+
readonly sameDay: (other: Date) => import("./shapes").ValidationRule;
|
|
112
|
+
readonly sameMonth: (other: Date) => import("./shapes").ValidationRule;
|
|
113
|
+
readonly sameYear: (other: Date) => import("./shapes").ValidationRule;
|
|
114
|
+
readonly startsWith: (prefix: string) => import("./shapes").ValidationRule;
|
|
115
|
+
readonly string: import("./shapes").ValidationRule;
|
|
116
|
+
readonly tooEarly: (min: Date) => import("./shapes").ValidationRule;
|
|
117
|
+
readonly tooLate: (max: Date) => import("./shapes").ValidationRule;
|
|
118
|
+
readonly trimmed: import("./shapes").ValidationRule;
|
|
119
|
+
readonly weekday: (required: number) => import("./shapes").ValidationRule;
|
|
120
|
+
readonly weekend: import("./shapes").ValidationRule;
|
|
121
|
+
};
|
|
122
|
+
readonly parsers: {
|
|
123
|
+
readonly numeric: import("./shapes").ParseRule<unknown>;
|
|
124
|
+
readonly integer: import("./shapes").ParseRule<unknown>;
|
|
125
|
+
readonly boolean: import("./shapes").ParseRule<unknown>;
|
|
126
|
+
readonly bigint: import("./shapes").ParseRule<unknown>;
|
|
127
|
+
readonly hex: import("./shapes").ParseRule<unknown>;
|
|
128
|
+
readonly binary: import("./shapes").ParseRule<unknown>;
|
|
129
|
+
readonly octal: import("./shapes").ParseRule<unknown>;
|
|
130
|
+
readonly date: import("./shapes").ParseRule<unknown>;
|
|
131
|
+
readonly json: import("./shapes").ParseRule<unknown>;
|
|
132
|
+
readonly array: import("./shapes").ParseRule<unknown>;
|
|
133
|
+
readonly object: import("./shapes").ParseRule<unknown>;
|
|
134
|
+
readonly url: import("./shapes").ParseRule<string>;
|
|
135
|
+
readonly duration: import("./shapes").ParseRule<unknown>;
|
|
136
|
+
readonly scientific: import("./shapes").ParseRule<unknown>;
|
|
137
|
+
};
|
|
138
|
+
};
|