@ifc-lite/rules 0.7.2 → 0.7.4

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,EAAqB,MAAM,mBAAmB,CAAC;AAezF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAwDhE;AAsBD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAG3D"}
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 kind = value.kind;
32
- if (kind === 'modelTag') {
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
- if (kind === 'property') {
57
- const r = value;
58
- if (r.nameCaseMode !== undefined && r.nameCaseMode !== 'exact')
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":"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"}
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.2",
3
+ "version": "0.7.4",
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",
@@ -13,9 +13,9 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@ifc-lite/encoding": "2.3.0",
17
16
  "@ifc-lite/data": "6.2.0",
18
- "@ifc-lite/ids": "3.3.2",
17
+ "@ifc-lite/encoding": "2.3.0",
18
+ "@ifc-lite/ids": "3.3.3",
19
19
  "@ifc-lite/mutations": "3.2.0",
20
20
  "@ifc-lite/regex-guard": "0.3.0",
21
21
  "@ifc-lite/parser": "9.5.0"