Skip to content

DeclarativeRule

type DeclarativeRule =
| {
direction: "increasing" | "decreasing" | "nonIncreasing" | "nonDecreasing";
field: string;
rule: "monotonic";
severity?: Severity;
}
| {
field: string;
rule: "firstEquals";
severity?: Severity;
value: number | string;
}
| {
equals?: number;
field: string;
max?: number;
min?: number;
rule: "sum";
severity?: Severity;
}
| {
field: string;
op: "<" | "<=" | ">" | ">=" | "=" | "<>";
other: string;
rule: "compare";
severity?: Severity;
}
| {
equals?: string | number | boolean;
field: string;
rule: "requiredIf";
severity?: Severity;
when: string;
}
| {
field: string;
fields: string[];
rule: "uniqueTogether";
severity?: Severity;
};

Built-in table checks that can be expressed as data.

{
direction: "increasing" | "decreasing" | "nonIncreasing" | "nonDecreasing";
field: string;
rule: "monotonic";
severity?: Severity;
}

{
field: string;
rule: "firstEquals";
severity?: Severity;
value: number | string;
}

{
equals?: number;
field: string;
max?: number;
min?: number;
rule: "sum";
severity?: Severity;
}

{
field: string;
op: "<" | "<=" | ">" | ">=" | "=" | "<>";
other: string;
rule: "compare";
severity?: Severity;
}

In every record, field compares with other this way (numbers, dates or text).


{
equals?: string | number | boolean;
field: string;
rule: "requiredIf";
severity?: Severity;
when: string;
}

field is required in records where when has a value (or, with equals, that value).


{
field: string;
fields: string[];
rule: "uniqueTogether";
severity?: Severity;
}

No two records share the same combination of these fields’ values.