@ifc-lite/rules 0.7.3 → 0.7.5
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
CHANGED
|
@@ -32,6 +32,7 @@ if (parsed.ok) {
|
|
|
32
32
|
|
|
33
33
|
## Features
|
|
34
34
|
|
|
35
|
+
- `isFilterRule` validates mandatory names, operands and operators at JSON boundaries; text operands remain strings and quantity/elevation operands remain finite numbers. `parseFilterGroups` refuses an entire unreadable query, while `parseFilterRules` retains its per-rule filtering behavior. Missing comparison operands are rejected rather than coerced to empty strings.
|
|
35
36
|
- `FilterRule` / `FilterGroup` vocabulary (`ifcType`, `name`, `property`, `quantity`, `material`, `classification`, `storey`, `model`, `modelTag`, `parent`, `group`, `modelFact`, `elevation`, `type`, `predefinedType`, `attribute`, `globalId`) plus the `Rule` builder helpers.
|
|
36
37
|
- `listCondition`: a saved Lists value predicate (zone, spatial level, model file, quantity/material presence, Lists attributes, inherited properties) inside a `FilterGroup`. The Lists engine answers it through `EvaluatorModel.listConditions` (`listConditionMatcher(provider)` from `@ifc-lite/lists`); a model without one throws, and rule-set files refuse the kind.
|
|
37
38
|
- `legacyLensOperatorToFilterRule` and `legacyListOperatorToFilterRule` convert saved viewer comparisons to this vocabulary. Each returns `{ status: 'readable', value: rule }` or an explicit `{ status: 'unreadable', vocabulary, operator }`; the corresponding `filterRuleToLegacy*Operator` functions convert supported rules back for export. Pass the target property or attribute as the rule template.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FilterRule } from './filter-rules.js';
|
|
2
|
+
/** Validate the JSON boundary before a typed editor or evaluator reads fields (#7554). */
|
|
2
3
|
export declare function isFilterRule(value: unknown): value is FilterRule;
|
|
3
4
|
export declare function parseFilterRules(raw: unknown): FilterRule[];
|
|
4
5
|
//# sourceMappingURL=filter-rule-guards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-rule-guards.d.ts","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAoB,UAAU,
|
|
1
|
+
{"version":3,"file":"filter-rule-guards.d.ts","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAoB,UAAU,EAAuC,MAAM,mBAAmB,CAAC;AAmC3G,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAkDhE;AAsBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAG3D"}
|
|
@@ -25,62 +25,78 @@ const VALUE_OPS = new Set([
|
|
|
25
25
|
const CLASSIFICATION_OPS = new Set([
|
|
26
26
|
'eq', 'ne', 'contains', 'notContains', 'matches', 'notMatches', 'isSet', 'isNotSet',
|
|
27
27
|
]);
|
|
28
|
+
const SET_OPS = new Set(['in', 'notIn']);
|
|
29
|
+
const NUMERIC_OPS = new Set(['eq', 'ne', 'gt', 'gte', 'lt', 'lte']);
|
|
30
|
+
function strings(value) {
|
|
31
|
+
return Array.isArray(value) && value.every(entry => typeof entry === 'string');
|
|
32
|
+
}
|
|
33
|
+
function textKind(value) {
|
|
34
|
+
return value === undefined || value === 'literal' || value === 'regex';
|
|
35
|
+
}
|
|
36
|
+
function finiteNumber(value) {
|
|
37
|
+
return typeof value === 'number' && Number.isFinite(value);
|
|
38
|
+
}
|
|
39
|
+
function storeyRefs(value) {
|
|
40
|
+
return value === undefined || (Array.isArray(value) && value.every(entry => {
|
|
41
|
+
if (!entry || typeof entry !== 'object')
|
|
42
|
+
return false;
|
|
43
|
+
const ref = entry;
|
|
44
|
+
return typeof ref.modelId === 'string' && finiteNumber(ref.expressId);
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
/** Validate the JSON boundary before a typed editor or evaluator reads fields (#7554). */
|
|
28
48
|
export function isFilterRule(value) {
|
|
29
|
-
if (typeof value !== 'object' || value === null)
|
|
49
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
30
50
|
return false;
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
33
|
-
// Structural: a bad op or a non-string id must not reach the evaluator.
|
|
34
|
-
const r = value;
|
|
35
|
-
return isModelTagOp(r.op) && Array.isArray(r.tagIds) && r.tagIds.every((t) => typeof t === 'string');
|
|
36
|
-
}
|
|
37
|
-
if (kind === 'parent') {
|
|
38
|
-
// Structural: `matchParentRule` lower-cases `value` per ancestor, so a
|
|
39
|
-
// persisted non-string value (or an unknown op) must not reach it.
|
|
40
|
-
const r = value;
|
|
41
|
-
return (STRING_OPS.has(r.op) &&
|
|
42
|
-
typeof r.value === 'string' &&
|
|
43
|
-
(r.valueKind === undefined || r.valueKind === 'literal' || r.valueKind === 'regex'));
|
|
44
|
-
}
|
|
45
|
-
if (kind === 'group') {
|
|
46
|
-
// Structural, like `parent`: `matchGroupRule` reads `value` as text and
|
|
47
|
-
// `groupClass` as a class name, so neither may arrive as anything else.
|
|
48
|
-
const r = value;
|
|
49
|
-
return (CLASSIFICATION_OPS.has(r.op) &&
|
|
50
|
-
typeof r.value === 'string' &&
|
|
51
|
-
(r.groupClass === undefined || typeof r.groupClass === 'string') &&
|
|
52
|
-
(r.valueKind === undefined || r.valueKind === 'literal' || r.valueKind === 'regex'));
|
|
53
|
-
}
|
|
54
|
-
if ((kind === 'property' || kind === 'quantity') && !validReadOptions(value))
|
|
51
|
+
const r = value;
|
|
52
|
+
if (!textKind(r.valueKind))
|
|
55
53
|
return false;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
switch (r.kind) {
|
|
55
|
+
case 'modelTag':
|
|
56
|
+
return isModelTagOp(r.op) && strings(r.tagIds);
|
|
57
|
+
case 'model':
|
|
58
|
+
case 'predefinedType':
|
|
59
|
+
case 'globalId':
|
|
60
|
+
return SET_OPS.has(r.op) && strings(r.values);
|
|
61
|
+
case 'ifcType':
|
|
62
|
+
return SET_OPS.has(r.op) && strings(r.values)
|
|
63
|
+
&& (r.exactClass === undefined || typeof r.exactClass === 'boolean');
|
|
64
|
+
case 'storey':
|
|
65
|
+
return SET_OPS.has(r.op) && strings(r.values) && storeyRefs(r.refs);
|
|
66
|
+
case 'name':
|
|
67
|
+
case 'material':
|
|
68
|
+
case 'type':
|
|
69
|
+
case 'parent':
|
|
70
|
+
return STRING_OPS.has(r.op) && typeof r.value === 'string';
|
|
71
|
+
case 'group':
|
|
72
|
+
return CLASSIFICATION_OPS.has(r.op) && typeof r.value === 'string'
|
|
73
|
+
&& (r.groupClass === undefined || typeof r.groupClass === 'string');
|
|
74
|
+
case 'classification':
|
|
75
|
+
return CLASSIFICATION_OPS.has(r.op) && typeof r.value === 'string'
|
|
76
|
+
&& (r.system === undefined || typeof r.system === 'string');
|
|
77
|
+
case 'attribute':
|
|
78
|
+
return typeof r.name === 'string' && VALUE_OPS.has(r.op) && typeof r.value === 'string'
|
|
79
|
+
&& validComparison(value);
|
|
80
|
+
case 'property':
|
|
81
|
+
return typeof r.setName === 'string' && typeof r.propertyName === 'string'
|
|
82
|
+
&& VALUE_OPS.has(r.op) && typeof r.value === 'string'
|
|
83
|
+
&& textKind(r.setNameKind) && textKind(r.propertyNameKind)
|
|
84
|
+
&& validReadOptions(value) && validComparison(value)
|
|
85
|
+
&& (r.nameCaseMode === undefined || r.nameCaseMode === 'exact')
|
|
86
|
+
&& (r.legacyListFirst === undefined || r.legacyListFirst === true);
|
|
87
|
+
case 'quantity':
|
|
88
|
+
return typeof r.setName === 'string' && typeof r.quantityName === 'string'
|
|
89
|
+
&& NUMERIC_OPS.has(r.op) && finiteNumber(r.value)
|
|
90
|
+
&& textKind(r.setNameKind) && textKind(r.quantityNameKind) && validReadOptions(value);
|
|
91
|
+
case 'elevation':
|
|
92
|
+
return NUMERIC_OPS.has(r.op) && finiteNumber(r.value);
|
|
93
|
+
case 'listCondition':
|
|
94
|
+
return isListConditionRule(value);
|
|
95
|
+
case 'modelFact':
|
|
96
|
+
return isModelFact(r.fact) && VALUE_OPS.has(r.op) && typeof r.value === 'string';
|
|
97
|
+
default:
|
|
59
98
|
return false;
|
|
60
|
-
if (r.legacyListFirst !== undefined && r.legacyListFirst !== true)
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
if ((kind === 'property' || kind === 'attribute') && !validComparison(value))
|
|
64
|
-
return false;
|
|
65
|
-
if (kind === 'listCondition')
|
|
66
|
-
return isListConditionRule(value);
|
|
67
|
-
if (kind === 'modelFact') {
|
|
68
|
-
const r = value;
|
|
69
|
-
return isModelFact(r.fact) && VALUE_OPS.has(r.op) && typeof r.value === 'string';
|
|
70
99
|
}
|
|
71
|
-
return (kind === 'model' ||
|
|
72
|
-
kind === 'storey' ||
|
|
73
|
-
kind === 'ifcType' ||
|
|
74
|
-
kind === 'predefinedType' ||
|
|
75
|
-
kind === 'name' ||
|
|
76
|
-
kind === 'globalId' ||
|
|
77
|
-
kind === 'attribute' ||
|
|
78
|
-
kind === 'property' ||
|
|
79
|
-
kind === 'quantity' ||
|
|
80
|
-
kind === 'material' ||
|
|
81
|
-
kind === 'classification' ||
|
|
82
|
-
kind === 'elevation' ||
|
|
83
|
-
kind === 'type');
|
|
84
100
|
}
|
|
85
101
|
/** `SubjectReadOptions` fields, when present, must hold a value the engine
|
|
86
102
|
* knows; `memberPath` only on a `property` rule. */
|
|
@@ -94,7 +110,7 @@ function validComparison(value) {
|
|
|
94
110
|
const options = value.comparison;
|
|
95
111
|
if (options === undefined)
|
|
96
112
|
return true;
|
|
97
|
-
if (options === null || typeof options !== 'object')
|
|
113
|
+
if (options === null || typeof options !== 'object' || Array.isArray(options))
|
|
98
114
|
return false;
|
|
99
115
|
const o = options;
|
|
100
116
|
return (o.caseMode === undefined || o.caseMode === 'fold' || o.caseMode === 'exact'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-rule-guards.js","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,UAAU,GAAyB,IAAI,GAAG,CAAW;IACzD,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY;CAC7E,CAAC,CAAC;AAEH,MAAM,SAAS,GAAyB,IAAI,GAAG,CAAU;IACvD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU;IACzF,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW;CAClF,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAyB,IAAI,GAAG,CAAmB;IACzE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU;CACpF,CAAC,CAAC;AAEH,MAAM,
|
|
1
|
+
{"version":3,"file":"filter-rule-guards.js","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/rules",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.5",
|
|
4
4
|
"description": "Filter-rule vocabulary, evaluator and .rules.json information-validation engine for IFC-Lite",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@ifc-lite/encoding": "2.3.0",
|
|
17
|
-
"@ifc-lite/ids": "3.3.
|
|
18
|
-
"@ifc-lite/mutations": "3.2.0",
|
|
17
|
+
"@ifc-lite/ids": "3.3.4",
|
|
19
18
|
"@ifc-lite/parser": "9.5.0",
|
|
20
|
-
"@ifc-lite/
|
|
21
|
-
"@ifc-lite/regex-guard": "0.3.0"
|
|
19
|
+
"@ifc-lite/mutations": "3.2.0",
|
|
20
|
+
"@ifc-lite/regex-guard": "0.3.0",
|
|
21
|
+
"@ifc-lite/data": "6.2.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/node": "^26.6.4",
|