@rippling/rippling-sdk 0.2.0-alpha.108 → 0.2.0-alpha.109
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/client.d.mts +3 -0
- package/client.d.mts.map +1 -1
- package/client.d.ts +3 -0
- package/client.d.ts.map +1 -1
- package/client.js +3 -0
- package/client.js.map +1 -1
- package/client.mjs +3 -0
- package/client.mjs.map +1 -1
- package/lib/charts/builders.d.mts +18 -19
- package/lib/charts/builders.d.mts.map +1 -1
- package/lib/charts/builders.d.ts +18 -19
- package/lib/charts/builders.d.ts.map +1 -1
- package/lib/charts/builders.js +35 -28
- package/lib/charts/builders.js.map +1 -1
- package/lib/charts/builders.mjs +35 -28
- package/lib/charts/builders.mjs.map +1 -1
- package/lib/charts/describe.d.mts +6 -7
- package/lib/charts/describe.d.mts.map +1 -1
- package/lib/charts/describe.d.ts +6 -7
- package/lib/charts/describe.d.ts.map +1 -1
- package/lib/charts/describe.js +26 -27
- package/lib/charts/describe.js.map +1 -1
- package/lib/charts/describe.mjs +27 -28
- package/lib/charts/describe.mjs.map +1 -1
- package/lib/charts/errors.d.mts +2 -6
- package/lib/charts/errors.d.mts.map +1 -1
- package/lib/charts/errors.d.ts +2 -6
- package/lib/charts/errors.d.ts.map +1 -1
- package/lib/charts/errors.js +2 -6
- package/lib/charts/errors.js.map +1 -1
- package/lib/charts/errors.mjs +2 -6
- package/lib/charts/errors.mjs.map +1 -1
- package/lib/charts/evaluate.d.mts +5 -7
- package/lib/charts/evaluate.d.mts.map +1 -1
- package/lib/charts/evaluate.d.ts +5 -7
- package/lib/charts/evaluate.d.ts.map +1 -1
- package/lib/charts/evaluate.js +21 -35
- package/lib/charts/evaluate.js.map +1 -1
- package/lib/charts/evaluate.mjs +22 -36
- package/lib/charts/evaluate.mjs.map +1 -1
- package/lib/charts/schema.d.mts +8 -97
- package/lib/charts/schema.d.mts.map +1 -1
- package/lib/charts/schema.d.ts +8 -97
- package/lib/charts/schema.d.ts.map +1 -1
- package/lib/charts/schema.js +186 -65
- package/lib/charts/schema.js.map +1 -1
- package/lib/charts/schema.mjs +185 -65
- package/lib/charts/schema.mjs.map +1 -1
- package/lib/charts/types.d.mts +40 -25
- package/lib/charts/types.d.mts.map +1 -1
- package/lib/charts/types.d.ts +40 -25
- package/lib/charts/types.d.ts.map +1 -1
- package/lib/charts/types.js +8 -10
- package/lib/charts/types.js.map +1 -1
- package/lib/charts/types.mjs +8 -10
- package/lib/charts/types.mjs.map +1 -1
- package/lib/charts/visualization-grammar.d.mts +66 -0
- package/lib/charts/visualization-grammar.d.mts.map +1 -0
- package/lib/charts/visualization-grammar.d.ts +66 -0
- package/lib/charts/visualization-grammar.d.ts.map +1 -0
- package/lib/charts/visualization-grammar.js +70 -0
- package/lib/charts/visualization-grammar.js.map +1 -0
- package/lib/charts/visualization-grammar.mjs +67 -0
- package/lib/charts/visualization-grammar.mjs.map +1 -0
- package/lib/charts/vocabulary.d.mts +7 -0
- package/lib/charts/vocabulary.d.mts.map +1 -0
- package/lib/charts/vocabulary.d.ts +7 -0
- package/lib/charts/vocabulary.d.ts.map +1 -0
- package/lib/charts/vocabulary.js +10 -0
- package/lib/charts/vocabulary.js.map +1 -0
- package/lib/charts/vocabulary.mjs +7 -0
- package/lib/charts/vocabulary.mjs.map +1 -0
- package/lib/charts.d.mts +3 -3
- package/lib/charts.d.mts.map +1 -1
- package/lib/charts.d.ts +3 -3
- package/lib/charts.d.ts.map +1 -1
- package/lib/charts.js +2 -1
- package/lib/charts.js.map +1 -1
- package/lib/charts.mjs +1 -1
- package/lib/charts.mjs.map +1 -1
- package/package.json +4 -2
- package/resources/index.d.mts +1 -0
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +1 -0
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +4 -2
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -0
- package/resources/index.mjs.map +1 -1
- package/resources/reimbursements.d.mts +1 -1
- package/resources/reimbursements.d.ts +1 -1
- package/resources/reimbursements.js +1 -1
- package/resources/reimbursements.mjs +1 -1
- package/resources/spend-categories.d.mts +140 -0
- package/resources/spend-categories.d.mts.map +1 -0
- package/resources/spend-categories.d.ts +140 -0
- package/resources/spend-categories.d.ts.map +1 -0
- package/resources/spend-categories.js +83 -0
- package/resources/spend-categories.js.map +1 -0
- package/resources/spend-categories.mjs +79 -0
- package/resources/spend-categories.mjs.map +1 -0
- package/src/client.ts +17 -0
- package/src/lib/charts/README.md +35 -28
- package/src/lib/charts/agent-reference.md +73 -0
- package/src/lib/charts/builders.ts +51 -35
- package/src/lib/charts/capabilities.json +96 -0
- package/src/lib/charts/describe.ts +31 -29
- package/src/lib/charts/errors.ts +2 -6
- package/src/lib/charts/evaluate.ts +25 -38
- package/src/lib/charts/schema.ts +232 -66
- package/src/lib/charts/types.ts +42 -31
- package/src/lib/charts/visualization-grammar.ts +67 -0
- package/src/lib/charts/vocabulary.ts +7 -0
- package/src/lib/charts.ts +8 -1
- package/src/resources/index.ts +7 -0
- package/src/resources/reimbursements.ts +1 -1
- package/src/resources/spend-categories.ts +175 -0
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
- package/lib/charts/guards.d.mts +0 -15
- package/lib/charts/guards.d.mts.map +0 -1
- package/lib/charts/guards.d.ts +0 -15
- package/lib/charts/guards.d.ts.map +0 -1
- package/lib/charts/guards.js +0 -38
- package/lib/charts/guards.js.map +0 -1
- package/lib/charts/guards.mjs +0 -34
- package/lib/charts/guards.mjs.map +0 -1
- package/src/lib/charts/guards.ts +0 -42
package/lib/charts/schema.js
CHANGED
|
@@ -1,74 +1,195 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.chartRuleSchema = exports.CHART_RULE_SCHEMA_ID = void 0;
|
|
4
|
+
exports.parseChartRule = parseChartRule;
|
|
5
|
+
const valibot_1 = require("valibot");
|
|
6
|
+
const errors_1 = require("./errors.js");
|
|
4
7
|
const types_1 = require("./types.js");
|
|
5
|
-
|
|
8
|
+
const vocabulary_1 = require("./vocabulary.js");
|
|
9
|
+
const ruleNodeKinds = new Set(vocabulary_1.RULE_NODE_KINDS);
|
|
10
|
+
const placeholderKeys = new Set(['$rule', 'channel']);
|
|
11
|
+
const ruleFieldKeys = ['$rule', 'channel', 'kind', 'value', 'left', 'right', 'cond', 'then', 'else'];
|
|
12
|
+
const scalarSchema = (0, valibot_1.union)([
|
|
13
|
+
(0, valibot_1.pipe)((0, valibot_1.number)(), (0, valibot_1.finite)()),
|
|
14
|
+
(0, valibot_1.string)(),
|
|
15
|
+
(0, valibot_1.boolean)(),
|
|
16
|
+
(0, valibot_1.null_)(),
|
|
17
|
+
]);
|
|
18
|
+
const parsedRules = new WeakSet();
|
|
19
|
+
/** @deprecated Use `CHART_RULE_CONTRACT_VERSION` to identify the executable contract. */
|
|
6
20
|
exports.CHART_RULE_SCHEMA_ID = `https://rippling.com/schemas/${types_1.CHART_RULE_CONTRACT_VERSION}.json`;
|
|
21
|
+
function hasOwn(value, key) {
|
|
22
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
23
|
+
}
|
|
24
|
+
const refNodeSchema = (0, valibot_1.strictObject)({ kind: (0, valibot_1.literal)('value') });
|
|
25
|
+
const literalNodeSchema = (0, valibot_1.strictObject)({ kind: (0, valibot_1.literal)('literal'), value: scalarSchema });
|
|
26
|
+
const numericLiteralNodeSchema = (0, valibot_1.strictObject)({
|
|
27
|
+
kind: (0, valibot_1.literal)('literal'),
|
|
28
|
+
value: (0, valibot_1.pipe)((0, valibot_1.number)(), (0, valibot_1.finite)()),
|
|
29
|
+
});
|
|
30
|
+
const requiredColorLiteralNodeSchema = (0, valibot_1.strictObject)({
|
|
31
|
+
kind: (0, valibot_1.literal)('literal'),
|
|
32
|
+
value: (0, valibot_1.string)(),
|
|
33
|
+
});
|
|
34
|
+
const optionalColorLiteralNodeSchema = (0, valibot_1.strictObject)({
|
|
35
|
+
kind: (0, valibot_1.literal)('literal'),
|
|
36
|
+
value: (0, valibot_1.union)([(0, valibot_1.string)(), (0, valibot_1.null_)()]),
|
|
37
|
+
});
|
|
38
|
+
const comparisonOperandSchema = (0, valibot_1.variant)('kind', [refNodeSchema, literalNodeSchema]);
|
|
39
|
+
const numericOperandSchema = (0, valibot_1.variant)('kind', [refNodeSchema, numericLiteralNodeSchema]);
|
|
40
|
+
const equalityComparisonNodeSchema = (0, valibot_1.strictObject)({
|
|
41
|
+
kind: (0, valibot_1.picklist)(vocabulary_1.EQUALITY_COMPARISON_KINDS),
|
|
42
|
+
left: comparisonOperandSchema,
|
|
43
|
+
right: comparisonOperandSchema,
|
|
44
|
+
});
|
|
45
|
+
const numericComparisonNodeSchema = (0, valibot_1.strictObject)({
|
|
46
|
+
kind: (0, valibot_1.picklist)(vocabulary_1.NUMERIC_COMPARISON_KINDS),
|
|
47
|
+
left: numericOperandSchema,
|
|
48
|
+
right: numericOperandSchema,
|
|
49
|
+
});
|
|
50
|
+
const comparisonNodeSchema = (0, valibot_1.variant)('kind', [equalityComparisonNodeSchema, numericComparisonNodeSchema]);
|
|
51
|
+
const ifElseNodeSchema = (0, valibot_1.strictObject)({
|
|
52
|
+
kind: (0, valibot_1.literal)('ifElse'),
|
|
53
|
+
cond: comparisonNodeSchema,
|
|
54
|
+
then: requiredColorLiteralNodeSchema,
|
|
55
|
+
else: optionalColorLiteralNodeSchema,
|
|
56
|
+
});
|
|
7
57
|
/**
|
|
8
|
-
*
|
|
58
|
+
* Executable runtime schema for a chart-rule node.
|
|
9
59
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
60
|
+
* v1 is intentionally non-recursive. A comparison contains only `value` or
|
|
61
|
+
* literal operands, and a conditional contains one comparison plus two colour
|
|
62
|
+
* literals. Contract tests prove that every public builder output parses.
|
|
13
63
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
64
|
+
const ruleNodeSchema = (0, valibot_1.variant)('kind', [
|
|
65
|
+
refNodeSchema,
|
|
66
|
+
literalNodeSchema,
|
|
67
|
+
equalityComparisonNodeSchema,
|
|
68
|
+
numericComparisonNodeSchema,
|
|
69
|
+
ifElseNodeSchema,
|
|
70
|
+
]);
|
|
71
|
+
/** Runtime schema for the `{$rule, channel}` value embedded in a chart option. */
|
|
72
|
+
const rulePlaceholderSchema = (0, valibot_1.strictObject)({
|
|
73
|
+
$rule: ifElseNodeSchema,
|
|
74
|
+
channel: (0, valibot_1.picklist)(vocabulary_1.RULE_CHANNELS),
|
|
75
|
+
});
|
|
76
|
+
/**
|
|
77
|
+
* Runtime schema for either a bare rule node or a chart-option placeholder.
|
|
78
|
+
* Persisted and agent-authored JSON crosses this boundary as `unknown`.
|
|
79
|
+
*/
|
|
80
|
+
exports.chartRuleSchema = (0, valibot_1.union)([
|
|
81
|
+
rulePlaceholderSchema,
|
|
82
|
+
ruleNodeSchema,
|
|
83
|
+
]);
|
|
84
|
+
/** Parse untrusted chart-rule JSON and return an immutable validated clone. */
|
|
85
|
+
function parseChartRule(input) {
|
|
86
|
+
if (isParsedRule(input)) {
|
|
87
|
+
return input;
|
|
88
|
+
}
|
|
89
|
+
preflight(input);
|
|
90
|
+
const result = (0, valibot_1.safeParse)(exports.chartRuleSchema, input);
|
|
91
|
+
if (result.success) {
|
|
92
|
+
return markParsedRule(result.output);
|
|
93
|
+
}
|
|
94
|
+
throw new errors_1.MalformedRuleError((0, valibot_1.summarize)(result.issues));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Valibot's object schemas use `key in input`, which also reads inherited
|
|
98
|
+
* properties. Reject inherited rule fields before parsing so prototype data
|
|
99
|
+
* cannot supply required operands or bypass the flat v1 contract.
|
|
100
|
+
*/
|
|
101
|
+
function preflight(input) {
|
|
102
|
+
assertNoInheritedRuleFields(input);
|
|
103
|
+
const root = unwrapPlaceholder(input);
|
|
104
|
+
assertNoInheritedRuleFields(root);
|
|
105
|
+
assertKnownNode(root);
|
|
106
|
+
if (!isRecord(root) || !hasOwn(root, 'kind')) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (root['kind'] === 'ifElse') {
|
|
110
|
+
inspectChildren(root, ['cond', 'then', 'else']);
|
|
111
|
+
const condition = root['cond'];
|
|
112
|
+
inspectComparison(condition);
|
|
113
|
+
}
|
|
114
|
+
else if (typeof root['kind'] === 'string' && isComparisonKind(root['kind'])) {
|
|
115
|
+
inspectComparison(root);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function inspectComparison(value) {
|
|
119
|
+
assertNoInheritedRuleFields(value);
|
|
120
|
+
assertKnownNode(value);
|
|
121
|
+
if (isRecord(value)) {
|
|
122
|
+
inspectChildren(value, ['left', 'right']);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function inspectChildren(parent, keys) {
|
|
126
|
+
for (const key of keys) {
|
|
127
|
+
if (hasOwn(parent, key)) {
|
|
128
|
+
const child = parent[key];
|
|
129
|
+
assertNoInheritedRuleFields(child);
|
|
130
|
+
assertKnownNode(child);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function assertNoInheritedRuleFields(value) {
|
|
135
|
+
if (!isRecord(value)) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
for (const key of ruleFieldKeys) {
|
|
139
|
+
if (key in value && !hasOwn(value, key)) {
|
|
140
|
+
throw new errors_1.MalformedRuleError(`a chart rule must not inherit the ${key} property`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function assertKnownNode(value) {
|
|
145
|
+
if (isRecord(value) &&
|
|
146
|
+
hasOwn(value, 'kind') &&
|
|
147
|
+
typeof value['kind'] === 'string' &&
|
|
148
|
+
!ruleNodeKinds.has(value['kind'])) {
|
|
149
|
+
throw new errors_1.UnknownNodeError(value['kind']);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function isComparisonKind(kind) {
|
|
153
|
+
return kind !== 'literal' && kind !== 'value' && kind !== 'ifElse' && ruleNodeKinds.has(kind);
|
|
154
|
+
}
|
|
155
|
+
function isRecord(value) {
|
|
156
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
157
|
+
}
|
|
158
|
+
function unwrapPlaceholder(input) {
|
|
159
|
+
if (input === null || typeof input !== 'object' || Array.isArray(input) || !hasOwn(input, '$rule')) {
|
|
160
|
+
return input;
|
|
161
|
+
}
|
|
162
|
+
const unexpectedKey = Object.keys(input).find((key) => !placeholderKeys.has(key));
|
|
163
|
+
if (unexpectedKey !== undefined) {
|
|
164
|
+
throw new errors_1.MalformedRuleError(`a rule placeholder has an unexpected property: ${unexpectedKey}`);
|
|
165
|
+
}
|
|
166
|
+
return input.$rule;
|
|
167
|
+
}
|
|
168
|
+
function isParsedRule(input) {
|
|
169
|
+
return input !== null && typeof input === 'object' && !Array.isArray(input) && parsedRules.has(input);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Mark the validated clone so `evaluate(parseChartRule(input), ctx)` does not
|
|
173
|
+
* reparse the full value for every datum. Freezing prevents a caller from
|
|
174
|
+
* mutating a trusted value after validation.
|
|
175
|
+
*/
|
|
176
|
+
function markParsedRule(rule) {
|
|
177
|
+
const stack = [rule];
|
|
178
|
+
const seen = new WeakSet();
|
|
179
|
+
while (stack.length > 0) {
|
|
180
|
+
const current = stack.pop();
|
|
181
|
+
if (!current || seen.has(current)) {
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
seen.add(current);
|
|
185
|
+
for (const value of Object.values(current)) {
|
|
186
|
+
if (value !== null && typeof value === 'object') {
|
|
187
|
+
stack.push(value);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
Object.freeze(current);
|
|
191
|
+
}
|
|
192
|
+
parsedRules.add(rule);
|
|
193
|
+
return rule;
|
|
194
|
+
}
|
|
74
195
|
//# sourceMappingURL=schema.js.map
|
package/lib/charts/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/charts/schema.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/lib/charts/schema.ts"],"names":[],"mappings":"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"}
|
package/lib/charts/schema.mjs
CHANGED
|
@@ -1,71 +1,191 @@
|
|
|
1
|
+
import { boolean, finite, literal, null_, number, picklist, pipe, safeParse, strictObject, string, summarize, union, variant, } from 'valibot';
|
|
2
|
+
import { MalformedRuleError, UnknownNodeError } from "./errors.mjs";
|
|
1
3
|
import { CHART_RULE_CONTRACT_VERSION } from "./types.mjs";
|
|
2
|
-
|
|
4
|
+
import { EQUALITY_COMPARISON_KINDS, NUMERIC_COMPARISON_KINDS, RULE_CHANNELS, RULE_NODE_KINDS, } from "./vocabulary.mjs";
|
|
5
|
+
const ruleNodeKinds = new Set(RULE_NODE_KINDS);
|
|
6
|
+
const placeholderKeys = new Set(['$rule', 'channel']);
|
|
7
|
+
const ruleFieldKeys = ['$rule', 'channel', 'kind', 'value', 'left', 'right', 'cond', 'then', 'else'];
|
|
8
|
+
const scalarSchema = union([
|
|
9
|
+
pipe(number(), finite()),
|
|
10
|
+
string(),
|
|
11
|
+
boolean(),
|
|
12
|
+
null_(),
|
|
13
|
+
]);
|
|
14
|
+
const parsedRules = new WeakSet();
|
|
15
|
+
/** @deprecated Use `CHART_RULE_CONTRACT_VERSION` to identify the executable contract. */
|
|
3
16
|
export const CHART_RULE_SCHEMA_ID = `https://rippling.com/schemas/${CHART_RULE_CONTRACT_VERSION}.json`;
|
|
17
|
+
function hasOwn(value, key) {
|
|
18
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
19
|
+
}
|
|
20
|
+
const refNodeSchema = strictObject({ kind: literal('value') });
|
|
21
|
+
const literalNodeSchema = strictObject({ kind: literal('literal'), value: scalarSchema });
|
|
22
|
+
const numericLiteralNodeSchema = strictObject({
|
|
23
|
+
kind: literal('literal'),
|
|
24
|
+
value: pipe(number(), finite()),
|
|
25
|
+
});
|
|
26
|
+
const requiredColorLiteralNodeSchema = strictObject({
|
|
27
|
+
kind: literal('literal'),
|
|
28
|
+
value: string(),
|
|
29
|
+
});
|
|
30
|
+
const optionalColorLiteralNodeSchema = strictObject({
|
|
31
|
+
kind: literal('literal'),
|
|
32
|
+
value: union([string(), null_()]),
|
|
33
|
+
});
|
|
34
|
+
const comparisonOperandSchema = variant('kind', [refNodeSchema, literalNodeSchema]);
|
|
35
|
+
const numericOperandSchema = variant('kind', [refNodeSchema, numericLiteralNodeSchema]);
|
|
36
|
+
const equalityComparisonNodeSchema = strictObject({
|
|
37
|
+
kind: picklist(EQUALITY_COMPARISON_KINDS),
|
|
38
|
+
left: comparisonOperandSchema,
|
|
39
|
+
right: comparisonOperandSchema,
|
|
40
|
+
});
|
|
41
|
+
const numericComparisonNodeSchema = strictObject({
|
|
42
|
+
kind: picklist(NUMERIC_COMPARISON_KINDS),
|
|
43
|
+
left: numericOperandSchema,
|
|
44
|
+
right: numericOperandSchema,
|
|
45
|
+
});
|
|
46
|
+
const comparisonNodeSchema = variant('kind', [equalityComparisonNodeSchema, numericComparisonNodeSchema]);
|
|
47
|
+
const ifElseNodeSchema = strictObject({
|
|
48
|
+
kind: literal('ifElse'),
|
|
49
|
+
cond: comparisonNodeSchema,
|
|
50
|
+
then: requiredColorLiteralNodeSchema,
|
|
51
|
+
else: optionalColorLiteralNodeSchema,
|
|
52
|
+
});
|
|
4
53
|
/**
|
|
5
|
-
*
|
|
54
|
+
* Executable runtime schema for a chart-rule node.
|
|
6
55
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
56
|
+
* v1 is intentionally non-recursive. A comparison contains only `value` or
|
|
57
|
+
* literal operands, and a conditional contains one comparison plus two colour
|
|
58
|
+
* literals. Contract tests prove that every public builder output parses.
|
|
10
59
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
60
|
+
const ruleNodeSchema = variant('kind', [
|
|
61
|
+
refNodeSchema,
|
|
62
|
+
literalNodeSchema,
|
|
63
|
+
equalityComparisonNodeSchema,
|
|
64
|
+
numericComparisonNodeSchema,
|
|
65
|
+
ifElseNodeSchema,
|
|
66
|
+
]);
|
|
67
|
+
/** Runtime schema for the `{$rule, channel}` value embedded in a chart option. */
|
|
68
|
+
const rulePlaceholderSchema = strictObject({
|
|
69
|
+
$rule: ifElseNodeSchema,
|
|
70
|
+
channel: picklist(RULE_CHANNELS),
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* Runtime schema for either a bare rule node or a chart-option placeholder.
|
|
74
|
+
* Persisted and agent-authored JSON crosses this boundary as `unknown`.
|
|
75
|
+
*/
|
|
76
|
+
export const chartRuleSchema = union([
|
|
77
|
+
rulePlaceholderSchema,
|
|
78
|
+
ruleNodeSchema,
|
|
79
|
+
]);
|
|
80
|
+
/** Parse untrusted chart-rule JSON and return an immutable validated clone. */
|
|
81
|
+
export function parseChartRule(input) {
|
|
82
|
+
if (isParsedRule(input)) {
|
|
83
|
+
return input;
|
|
84
|
+
}
|
|
85
|
+
preflight(input);
|
|
86
|
+
const result = safeParse(chartRuleSchema, input);
|
|
87
|
+
if (result.success) {
|
|
88
|
+
return markParsedRule(result.output);
|
|
89
|
+
}
|
|
90
|
+
throw new MalformedRuleError(summarize(result.issues));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Valibot's object schemas use `key in input`, which also reads inherited
|
|
94
|
+
* properties. Reject inherited rule fields before parsing so prototype data
|
|
95
|
+
* cannot supply required operands or bypass the flat v1 contract.
|
|
96
|
+
*/
|
|
97
|
+
function preflight(input) {
|
|
98
|
+
assertNoInheritedRuleFields(input);
|
|
99
|
+
const root = unwrapPlaceholder(input);
|
|
100
|
+
assertNoInheritedRuleFields(root);
|
|
101
|
+
assertKnownNode(root);
|
|
102
|
+
if (!isRecord(root) || !hasOwn(root, 'kind')) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (root['kind'] === 'ifElse') {
|
|
106
|
+
inspectChildren(root, ['cond', 'then', 'else']);
|
|
107
|
+
const condition = root['cond'];
|
|
108
|
+
inspectComparison(condition);
|
|
109
|
+
}
|
|
110
|
+
else if (typeof root['kind'] === 'string' && isComparisonKind(root['kind'])) {
|
|
111
|
+
inspectComparison(root);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function inspectComparison(value) {
|
|
115
|
+
assertNoInheritedRuleFields(value);
|
|
116
|
+
assertKnownNode(value);
|
|
117
|
+
if (isRecord(value)) {
|
|
118
|
+
inspectChildren(value, ['left', 'right']);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function inspectChildren(parent, keys) {
|
|
122
|
+
for (const key of keys) {
|
|
123
|
+
if (hasOwn(parent, key)) {
|
|
124
|
+
const child = parent[key];
|
|
125
|
+
assertNoInheritedRuleFields(child);
|
|
126
|
+
assertKnownNode(child);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function assertNoInheritedRuleFields(value) {
|
|
131
|
+
if (!isRecord(value)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
for (const key of ruleFieldKeys) {
|
|
135
|
+
if (key in value && !hasOwn(value, key)) {
|
|
136
|
+
throw new MalformedRuleError(`a chart rule must not inherit the ${key} property`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function assertKnownNode(value) {
|
|
141
|
+
if (isRecord(value) &&
|
|
142
|
+
hasOwn(value, 'kind') &&
|
|
143
|
+
typeof value['kind'] === 'string' &&
|
|
144
|
+
!ruleNodeKinds.has(value['kind'])) {
|
|
145
|
+
throw new UnknownNodeError(value['kind']);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
function isComparisonKind(kind) {
|
|
149
|
+
return kind !== 'literal' && kind !== 'value' && kind !== 'ifElse' && ruleNodeKinds.has(kind);
|
|
150
|
+
}
|
|
151
|
+
function isRecord(value) {
|
|
152
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
153
|
+
}
|
|
154
|
+
function unwrapPlaceholder(input) {
|
|
155
|
+
if (input === null || typeof input !== 'object' || Array.isArray(input) || !hasOwn(input, '$rule')) {
|
|
156
|
+
return input;
|
|
157
|
+
}
|
|
158
|
+
const unexpectedKey = Object.keys(input).find((key) => !placeholderKeys.has(key));
|
|
159
|
+
if (unexpectedKey !== undefined) {
|
|
160
|
+
throw new MalformedRuleError(`a rule placeholder has an unexpected property: ${unexpectedKey}`);
|
|
161
|
+
}
|
|
162
|
+
return input.$rule;
|
|
163
|
+
}
|
|
164
|
+
function isParsedRule(input) {
|
|
165
|
+
return input !== null && typeof input === 'object' && !Array.isArray(input) && parsedRules.has(input);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Mark the validated clone so `evaluate(parseChartRule(input), ctx)` does not
|
|
169
|
+
* reparse the full value for every datum. Freezing prevents a caller from
|
|
170
|
+
* mutating a trusted value after validation.
|
|
171
|
+
*/
|
|
172
|
+
function markParsedRule(rule) {
|
|
173
|
+
const stack = [rule];
|
|
174
|
+
const seen = new WeakSet();
|
|
175
|
+
while (stack.length > 0) {
|
|
176
|
+
const current = stack.pop();
|
|
177
|
+
if (!current || seen.has(current)) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
seen.add(current);
|
|
181
|
+
for (const value of Object.values(current)) {
|
|
182
|
+
if (value !== null && typeof value === 'object') {
|
|
183
|
+
stack.push(value);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
Object.freeze(current);
|
|
187
|
+
}
|
|
188
|
+
parsedRules.add(rule);
|
|
189
|
+
return rule;
|
|
190
|
+
}
|
|
71
191
|
//# sourceMappingURL=schema.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","sourceRoot":"","sources":["../../src/lib/charts/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.mjs","sourceRoot":"","sources":["../../src/lib/charts/schema.ts"],"names":[],"mappings":"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"}
|