@ifc-lite/rules 0.2.0 → 0.4.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 +1 -1
- package/dist/engine/rule-engine-compare.js +3 -3
- package/dist/engine/rule-engine-compare.js.map +1 -1
- package/dist/engine/rule-engine-requirements.d.ts.map +1 -1
- package/dist/engine/rule-engine-requirements.js +15 -6
- package/dist/engine/rule-engine-requirements.js.map +1 -1
- package/dist/engine/rule-engine-sets.d.ts.map +1 -1
- package/dist/engine/rule-engine-sets.js +6 -5
- package/dist/engine/rule-engine-sets.js.map +1 -1
- package/dist/engine/rule-engine.d.ts.map +1 -1
- package/dist/engine/rule-engine.js +37 -6
- package/dist/engine/rule-engine.js.map +1 -1
- package/dist/filter/filter-evaluate.d.ts.map +1 -1
- package/dist/filter/filter-evaluate.js +2 -0
- package/dist/filter/filter-evaluate.js.map +1 -1
- package/dist/filter/filter-iteration-source.d.ts.map +1 -1
- package/dist/filter/filter-iteration-source.js +2 -0
- package/dist/filter/filter-iteration-source.js.map +1 -1
- package/dist/filter/filter-match.d.ts +15 -1
- package/dist/filter/filter-match.d.ts.map +1 -1
- package/dist/filter/filter-match.js +40 -16
- package/dist/filter/filter-match.js.map +1 -1
- package/dist/filter/filter-model-fact.d.ts +29 -0
- package/dist/filter/filter-model-fact.d.ts.map +1 -0
- package/dist/filter/filter-model-fact.js +96 -0
- package/dist/filter/filter-model-fact.js.map +1 -0
- package/dist/filter/filter-rule-guards.d.ts.map +1 -1
- package/dist/filter/filter-rule-guards.js +8 -0
- package/dist/filter/filter-rule-guards.js.map +1 -1
- package/dist/filter/filter-rules.d.ts +4 -1
- package/dist/filter/filter-rules.d.ts.map +1 -1
- package/dist/filter/filter-rules.js +2 -1
- package/dist/filter/filter-rules.js.map +1 -1
- package/dist/filter/read-measure-subject.d.ts +2 -0
- package/dist/filter/read-measure-subject.d.ts.map +1 -1
- package/dist/filter/read-measure-subject.js +13 -7
- package/dist/filter/read-measure-subject.js.map +1 -1
- package/dist/filter/read-subject.d.ts +9 -0
- package/dist/filter/read-subject.d.ts.map +1 -1
- package/dist/filter/read-subject.js +15 -0
- package/dist/filter/read-subject.js.map +1 -1
- package/dist/filter/subject-match.d.ts.map +1 -1
- package/dist/filter/subject-match.js +7 -0
- package/dist/filter/subject-match.js.map +1 -1
- package/dist/ids/rule-to-ids-facets.d.ts.map +1 -1
- package/dist/ids/rule-to-ids-facets.js +2 -0
- package/dist/ids/rule-to-ids-facets.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/rule-set/requirement-text.d.ts.map +1 -1
- package/dist/rule-set/requirement-text.js +7 -0
- package/dist/rule-set/requirement-text.js.map +1 -1
- package/dist/rule-set/rule-set-io-requirement.js +1 -1
- package/dist/rule-set/rule-set-io-requirement.js.map +1 -1
- package/dist/rule-set/rule-set-io-subject.d.ts.map +1 -1
- package/dist/rule-set/rule-set-io-subject.js +7 -1
- package/dist/rule-set/rule-set-io-subject.js.map +1 -1
- package/dist/rule-set/rule-set.d.ts +2 -2
- package/dist/rule-set/rule-set.d.ts.map +1 -1
- package/dist/rule-set/rule-set.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-iteration-source.js","sourceRoot":"","sources":["../../src/filter/filter-iteration-source.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filter-iteration-source.js","sourceRoot":"","sources":["../../src/filter/filter-iteration-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `filter-evaluate.test.ts` via the evaluator's `__internal` re-export.
|
|
8
8
|
*/
|
|
9
9
|
import { extractPropertiesOnDemand, extractQuantitiesOnDemand, type IfcDataStore, type MaterialInfo, type ClassificationInfo } from '@ifc-lite/parser';
|
|
10
|
-
import { type PropertyRule, type QuantityRule, type ClassificationRule, type AttributeRule, type StoreyRule, type ParentRule, type TextKind } from './filter-rules.js';
|
|
10
|
+
import { type PropertyRule, type QuantityRule, type ClassificationRule, type AttributeRule, type StoreyRule, type ParentRule, type TextKind, type ValueOp } from './filter-rules.js';
|
|
11
11
|
/**
|
|
12
12
|
* Compare a rule's property-set / property name against a row's.
|
|
13
13
|
*
|
|
@@ -41,10 +41,24 @@ export interface QtyRow {
|
|
|
41
41
|
value: number;
|
|
42
42
|
}
|
|
43
43
|
export type QtyRows = ReadonlyArray<QtyRow>;
|
|
44
|
+
/**
|
|
45
|
+
* The values a rule compares for one property: every member of an
|
|
46
|
+
* enumerated or list value and every cell of a table, so a positive op
|
|
47
|
+
* passes when ANY of them does (IDS / ifctester parity, #5475); otherwise the
|
|
48
|
+
* single display value. An empty list keeps one blank candidate, so the
|
|
49
|
+
* property still reads as present for `isSet`, as it did before.
|
|
50
|
+
*/
|
|
51
|
+
export declare function propertyCandidates(p: {
|
|
52
|
+
value: unknown;
|
|
53
|
+
values?: readonly string[];
|
|
54
|
+
structure?: string;
|
|
55
|
+
}): string[];
|
|
44
56
|
export declare function flattenPsets(psets: ReturnType<typeof extractPropertiesOnDemand>): PsetRows;
|
|
45
57
|
export declare function flattenQtys(qtos: ReturnType<typeof extractQuantitiesOnDemand>): QtyRows;
|
|
46
58
|
export declare function stringifyValue(value: unknown): string;
|
|
47
59
|
export declare function matchPropertyRule(rule: PropertyRule, rows: PsetRows): boolean;
|
|
60
|
+
/** A negated value op's positive form: the negation holds when NO candidate satisfies it (#5475). */
|
|
61
|
+
export declare const NEGATED_VALUE_OP: Partial<Record<ValueOp, ValueOp>>;
|
|
48
62
|
/** One entity's generic named attributes, as `extractAllEntityAttributes`
|
|
49
63
|
* returns them — schema-driven, string/number/boolean values only. */
|
|
50
64
|
export type AttrRows = ReadonlyArray<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-match.d.ts","sourceRoot":"","sources":["../../src/filter/filter-match.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"filter-match.d.ts","sourceRoot":"","sources":["../../src/filter/filter-match.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,23 +34,38 @@ export function nameMatches(rulePattern, rowName, kind) {
|
|
|
34
34
|
return compileNameMatcher(rulePattern)(rowName);
|
|
35
35
|
return rowName.toLowerCase() === rulePattern.toLowerCase();
|
|
36
36
|
}
|
|
37
|
+
/** Structures whose `values` are the candidates a rule reads (#5475). */
|
|
38
|
+
const ANY_MATCH_STRUCTURES = new Set(['enumerated', 'list', 'table']);
|
|
39
|
+
/**
|
|
40
|
+
* The values a rule compares for one property: every member of an
|
|
41
|
+
* enumerated or list value and every cell of a table, so a positive op
|
|
42
|
+
* passes when ANY of them does (IDS / ifctester parity, #5475); otherwise the
|
|
43
|
+
* single display value. An empty list keeps one blank candidate, so the
|
|
44
|
+
* property still reads as present for `isSet`, as it did before.
|
|
45
|
+
*/
|
|
46
|
+
export function propertyCandidates(p) {
|
|
47
|
+
if (p.structure && ANY_MATCH_STRUCTURES.has(p.structure) && p.values && p.values.length > 0)
|
|
48
|
+
return [...p.values];
|
|
49
|
+
return [stringifyValue(p.value)];
|
|
50
|
+
}
|
|
37
51
|
export function flattenPsets(psets) {
|
|
38
52
|
const out = [];
|
|
39
53
|
for (const set of psets) {
|
|
40
54
|
for (const p of set.properties) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
for (const value of propertyCandidates(p))
|
|
56
|
+
out.push({
|
|
57
|
+
setName: set.name,
|
|
58
|
+
propertyName: p.name,
|
|
59
|
+
// Stringify everything — `valueOpMatches` re-parses numeric ops
|
|
60
|
+
// from this representation. Booleans render as "True"/"False" —
|
|
61
|
+
// the SAME capitalised display string the property table and the
|
|
62
|
+
// list engine (`@ifc-lite/encoding`'s `parsePropertyValue`) show —
|
|
63
|
+
// so a value picked from a chip/dropdown suggestion always matches
|
|
64
|
+
// what the user sees rendered elsewhere. `valueOpMatches`'s eq/ne
|
|
65
|
+
// are case-insensitive, so this doesn't change matching outcomes
|
|
66
|
+
// for either the search chips or free-typed "true"/"false".
|
|
67
|
+
value,
|
|
68
|
+
});
|
|
54
69
|
}
|
|
55
70
|
}
|
|
56
71
|
return out;
|
|
@@ -84,10 +99,19 @@ export function matchPropertyRule(rule, rows) {
|
|
|
84
99
|
nameMatches(rule.propertyName, r.propertyName, rule.propertyNameKind));
|
|
85
100
|
return rule.op === 'isSet' ? present : !present;
|
|
86
101
|
}
|
|
87
|
-
|
|
88
|
-
nameMatches(rule.propertyName, r.propertyName, rule.propertyNameKind)
|
|
89
|
-
|
|
102
|
+
const matching = rows.filter((r) => nameMatches(rule.setName, r.setName, rule.setNameKind) &&
|
|
103
|
+
nameMatches(rule.propertyName, r.propertyName, rule.propertyNameKind));
|
|
104
|
+
// A negated op holds when NO candidate has the value (a list [A, B] is
|
|
105
|
+
// not "!= A"), the ANY/NONE convention `material` and `parent` use and
|
|
106
|
+
// validation's `checkValueOp` applies (#5475). With a single candidate
|
|
107
|
+
// this is the same answer as before.
|
|
108
|
+
const positive = NEGATED_VALUE_OP[rule.op];
|
|
109
|
+
if (positive)
|
|
110
|
+
return matching.length > 0 && !matching.some((r) => valueOpMatches(positive, r.value, rule.value, rule.valueKind));
|
|
111
|
+
return matching.some((r) => valueOpMatches(rule.op, r.value, rule.value, rule.valueKind));
|
|
90
112
|
}
|
|
113
|
+
/** A negated value op's positive form: the negation holds when NO candidate satisfies it (#5475). */
|
|
114
|
+
export const NEGATED_VALUE_OP = { ne: 'eq', notContains: 'contains', notMatches: 'matches' };
|
|
91
115
|
/**
|
|
92
116
|
* Match an `attribute` rule (Description, ObjectType, Tag, LongName, any
|
|
93
117
|
* other schema-named attribute) against one entity's extracted attributes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-match.js","sourceRoot":"","sources":["../../src/filter/filter-match.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAkB/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-match.js","sourceRoot":"","sources":["../../src/filter/filter-match.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `modelFact` — a fact about the element's MODEL rather than the element
|
|
3
|
+
* (#5442): georeferencing, project units, STEP header fields. Every value
|
|
4
|
+
* op works on it, like a property. Evaluated per element, reading that
|
|
5
|
+
* element's model, so "the project is georeferenced" is an `IfcProject`
|
|
6
|
+
* applicability plus `georef.crs isSet`, and a model-fact condition in
|
|
7
|
+
* applicability scopes a rule to the models where it holds. Own module
|
|
8
|
+
* because `filter-rules.ts` sits at the module-size cap.
|
|
9
|
+
*/
|
|
10
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
11
|
+
import type { TextKind, ValueOp } from './filter-rules.js';
|
|
12
|
+
export declare const MODEL_FACTS: readonly ["georef.crs", "georef.geodeticDatum", "georef.verticalDatum", "georef.mapProjection", "georef.mapZone", "georef.eastings", "georef.northings", "georef.orthogonalHeight", "georef.scale", "units.length", "units.area", "units.volume", "units.angle", "units.mass", "units.time", "header.fileName", "header.timeStamp", "header.author", "header.organization", "header.originatingSystem", "header.preprocessorVersion", "header.authorization", "header.description", "header.schema"];
|
|
13
|
+
export type ModelFact = (typeof MODEL_FACTS)[number];
|
|
14
|
+
export declare function isModelFact(value: unknown): value is ModelFact;
|
|
15
|
+
export interface ModelFactRule {
|
|
16
|
+
kind: 'modelFact';
|
|
17
|
+
fact: ModelFact;
|
|
18
|
+
op: ValueOp;
|
|
19
|
+
/** Raw user input. Numeric ops parse as numbers; isSet/isNotSet ignore. */
|
|
20
|
+
value: string;
|
|
21
|
+
/** How `value` reads. Only consulted by the `matches` / `notMatches` ops. */
|
|
22
|
+
valueKind?: TextKind;
|
|
23
|
+
}
|
|
24
|
+
export declare function modelFactRule(fact: ModelFact, op: ValueOp, value: string, valueKind?: TextKind): ModelFactRule;
|
|
25
|
+
/** The fact's values for `store`'s model; empty when the model does not state it. */
|
|
26
|
+
export declare function readModelFact(store: IfcDataStore, fact: ModelFact): Array<string | number>;
|
|
27
|
+
/** Search semantics: presence ops ask whether the model states it; others pass when ANY value does. */
|
|
28
|
+
export declare function matchModelFactRule(rule: ModelFactRule, store: IfcDataStore): boolean;
|
|
29
|
+
//# sourceMappingURL=filter-model-fact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-model-fact.d.ts","sourceRoot":"","sources":["../../src/filter/filter-model-fact.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,EAAoD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvG,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAI3D,eAAO,MAAM,WAAW,seAMd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,OAAO,CAAC;IACZ,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,GAAG,aAAa,CAE9G;AA2BD,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAkC1F;AAED,uGAAuG;AACvG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAKpF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* `modelFact` — a fact about the element's MODEL rather than the element
|
|
6
|
+
* (#5442): georeferencing, project units, STEP header fields. Every value
|
|
7
|
+
* op works on it, like a property. Evaluated per element, reading that
|
|
8
|
+
* element's model, so "the project is georeferenced" is an `IfcProject`
|
|
9
|
+
* applicability plus `georef.crs isSet`, and a model-fact condition in
|
|
10
|
+
* applicability scopes a rule to the models where it holds. Own module
|
|
11
|
+
* because `filter-rules.ts` sits at the module-size cap.
|
|
12
|
+
*/
|
|
13
|
+
import { extractGeoreferencingOnDemand, parseSourceHeader } from '@ifc-lite/parser';
|
|
14
|
+
import { valueOpMatches } from './filter-ops.js';
|
|
15
|
+
import { projectUnitsOf } from './measure-units.js';
|
|
16
|
+
export const MODEL_FACTS = [
|
|
17
|
+
'georef.crs', 'georef.geodeticDatum', 'georef.verticalDatum', 'georef.mapProjection', 'georef.mapZone',
|
|
18
|
+
'georef.eastings', 'georef.northings', 'georef.orthogonalHeight', 'georef.scale',
|
|
19
|
+
'units.length', 'units.area', 'units.volume', 'units.angle', 'units.mass', 'units.time',
|
|
20
|
+
'header.fileName', 'header.timeStamp', 'header.author', 'header.organization', 'header.originatingSystem',
|
|
21
|
+
'header.preprocessorVersion', 'header.authorization', 'header.description', 'header.schema',
|
|
22
|
+
];
|
|
23
|
+
export function isModelFact(value) {
|
|
24
|
+
return typeof value === 'string' && MODEL_FACTS.includes(value);
|
|
25
|
+
}
|
|
26
|
+
export function modelFactRule(fact, op, value, valueKind) {
|
|
27
|
+
return { kind: 'modelFact', fact, op, value, ...(valueKind ? { valueKind } : {}) };
|
|
28
|
+
}
|
|
29
|
+
const UNIT_MEASURE = {
|
|
30
|
+
'units.length': 'IfcLengthMeasure',
|
|
31
|
+
'units.area': 'IfcAreaMeasure',
|
|
32
|
+
'units.volume': 'IfcVolumeMeasure',
|
|
33
|
+
'units.angle': 'IfcPlaneAngleMeasure',
|
|
34
|
+
'units.mass': 'IfcMassMeasure',
|
|
35
|
+
'units.time': 'IfcTimeMeasure',
|
|
36
|
+
};
|
|
37
|
+
const headerCache = new WeakMap();
|
|
38
|
+
/** The model's STEP header: the parsed one on the store, else read once from its source. */
|
|
39
|
+
function headerOf(store) {
|
|
40
|
+
if (store.sourceHeader)
|
|
41
|
+
return store.sourceHeader;
|
|
42
|
+
let header = headerCache.get(store);
|
|
43
|
+
if (header === undefined) {
|
|
44
|
+
header = (store.source?.length ? parseSourceHeader(store.source) : undefined) ?? null;
|
|
45
|
+
headerCache.set(store, header);
|
|
46
|
+
}
|
|
47
|
+
return header ?? undefined;
|
|
48
|
+
}
|
|
49
|
+
const defined = (...values) => values.filter((v) => v !== undefined && v !== null && v !== '');
|
|
50
|
+
/** The fact's values for `store`'s model; empty when the model does not state it. */
|
|
51
|
+
export function readModelFact(store, fact) {
|
|
52
|
+
if (fact.startsWith('units.')) {
|
|
53
|
+
const units = projectUnitsOf(store);
|
|
54
|
+
return defined(units?.unitForMeasure(UNIT_MEASURE[fact])?.symbol);
|
|
55
|
+
}
|
|
56
|
+
if (fact.startsWith('georef.')) {
|
|
57
|
+
const georef = extractGeoreferencingOnDemand(store);
|
|
58
|
+
const crs = georef?.projectedCRS;
|
|
59
|
+
const conversion = georef?.mapConversion;
|
|
60
|
+
switch (fact) {
|
|
61
|
+
case 'georef.crs': return defined(crs?.name);
|
|
62
|
+
case 'georef.geodeticDatum': return defined(crs?.geodeticDatum);
|
|
63
|
+
case 'georef.verticalDatum': return defined(crs?.verticalDatum);
|
|
64
|
+
case 'georef.mapProjection': return defined(crs?.mapProjection);
|
|
65
|
+
case 'georef.mapZone': return defined(crs?.mapZone);
|
|
66
|
+
case 'georef.eastings': return defined(conversion?.eastings);
|
|
67
|
+
case 'georef.northings': return defined(conversion?.northings);
|
|
68
|
+
case 'georef.orthogonalHeight': return defined(conversion?.orthogonalHeight);
|
|
69
|
+
default: return defined(conversion?.scale);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const header = headerOf(store);
|
|
73
|
+
if (!header)
|
|
74
|
+
return [];
|
|
75
|
+
switch (fact) {
|
|
76
|
+
case 'header.fileName': return defined(header.name);
|
|
77
|
+
case 'header.timeStamp': return defined(header.timeStamp);
|
|
78
|
+
case 'header.author': return defined(...(header.author ?? []));
|
|
79
|
+
case 'header.organization': return defined(...(header.organization ?? []));
|
|
80
|
+
case 'header.originatingSystem': return defined(header.originatingSystem);
|
|
81
|
+
case 'header.preprocessorVersion': return defined(header.preprocessorVersion);
|
|
82
|
+
case 'header.authorization': return defined(header.authorization);
|
|
83
|
+
case 'header.description': return defined(...header.description);
|
|
84
|
+
default: return defined(...header.schemaIdentifiers);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** Search semantics: presence ops ask whether the model states it; others pass when ANY value does. */
|
|
88
|
+
export function matchModelFactRule(rule, store) {
|
|
89
|
+
const values = readModelFact(store, rule.fact).map(String).filter((v) => v.trim() !== '');
|
|
90
|
+
if (rule.op === 'isSet')
|
|
91
|
+
return values.length > 0;
|
|
92
|
+
if (rule.op === 'isNotSet')
|
|
93
|
+
return values.length === 0;
|
|
94
|
+
return values.some((v) => valueOpMatches(rule.op, v, rule.value, rule.valueKind));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=filter-model-fact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-model-fact.js","sourceRoot":"","sources":["../../src/filter/filter-model-fact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-rule-guards.d.ts","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filter-rule-guards.d.ts","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAoB,UAAU,EAAqB,MAAM,mBAAmB,CAAC;AAczF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAiDhE;AASD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CAG3D"}
|
|
@@ -12,9 +12,13 @@
|
|
|
12
12
|
* working unchanged.
|
|
13
13
|
*/
|
|
14
14
|
import { isModelTagOp } from './model-tag.js';
|
|
15
|
+
import { isModelFact } from './filter-model-fact.js';
|
|
15
16
|
const STRING_OPS = new Set([
|
|
16
17
|
'eq', 'ne', 'contains', 'notContains', 'startsWith', 'matches', 'notMatches',
|
|
17
18
|
]);
|
|
19
|
+
const VALUE_OPS = new Set([
|
|
20
|
+
'eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'contains', 'notContains', 'matches', 'notMatches', 'isSet', 'isNotSet',
|
|
21
|
+
]);
|
|
18
22
|
const CLASSIFICATION_OPS = new Set([
|
|
19
23
|
'eq', 'ne', 'contains', 'notContains', 'matches', 'notMatches', 'isSet', 'isNotSet',
|
|
20
24
|
]);
|
|
@@ -46,6 +50,10 @@ export function isFilterRule(value) {
|
|
|
46
50
|
}
|
|
47
51
|
if ((kind === 'property' || kind === 'quantity') && !validReadOptions(value))
|
|
48
52
|
return false;
|
|
53
|
+
if (kind === 'modelFact') {
|
|
54
|
+
const r = value;
|
|
55
|
+
return isModelFact(r.fact) && VALUE_OPS.has(r.op) && typeof r.value === 'string';
|
|
56
|
+
}
|
|
49
57
|
return (kind === 'model' ||
|
|
50
58
|
kind === 'storey' ||
|
|
51
59
|
kind === 'ifcType' ||
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"filter-rule-guards.js","sourceRoot":"","sources":["../../src/filter/filter-rule-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { type ModelTagOp } from './model-tag.js';
|
|
12
12
|
import { groupRule, type GroupRule } from './filter-group-rule.js';
|
|
13
13
|
import type { SubjectReadOptions } from './subject-read-options.js';
|
|
14
|
+
import { modelFactRule, type ModelFactRule } from './filter-model-fact.js';
|
|
14
15
|
/** Set-membership: storey, ifcType, predefinedType. */
|
|
15
16
|
export type SetOp = 'in' | 'notIn';
|
|
16
17
|
/** String comparisons (Name rule). */
|
|
@@ -221,7 +222,7 @@ export interface ParentRule {
|
|
|
221
222
|
/** How `value` reads. Only consulted by the `matches` / `notMatches` ops. */
|
|
222
223
|
valueKind?: TextKind;
|
|
223
224
|
}
|
|
224
|
-
export type FilterRule = ModelRule | ModelTagRule | StoreyRule | IfcTypeRule | PredefinedTypeRule | NameRule | GlobalIdRule | AttributeRule | PropertyRule | QuantityRule | MaterialRule | ClassificationRule | ElevationRule | TypeNameRule | ParentRule | GroupRule;
|
|
225
|
+
export type FilterRule = ModelRule | ModelTagRule | StoreyRule | IfcTypeRule | PredefinedTypeRule | NameRule | GlobalIdRule | AttributeRule | PropertyRule | QuantityRule | MaterialRule | ClassificationRule | ElevationRule | TypeNameRule | ParentRule | GroupRule | ModelFactRule;
|
|
225
226
|
/** Combine an array of per-rule booleans according to AND/OR semantics. */
|
|
226
227
|
export declare function combineRuleResults(combinator: Combinator, results: readonly boolean[]): boolean;
|
|
227
228
|
/** Dedupe-merge two `StoreyRule.refs` lists by (modelId, expressId), used
|
|
@@ -268,8 +269,10 @@ export declare const Rule: {
|
|
|
268
269
|
readonly typeName: (op: StringOp, value: string, valueKind?: TextKind) => TypeNameRule;
|
|
269
270
|
readonly parent: (op: StringOp, value: string, valueKind?: TextKind) => ParentRule;
|
|
270
271
|
readonly group: typeof groupRule;
|
|
272
|
+
readonly modelFact: typeof modelFactRule;
|
|
271
273
|
};
|
|
272
274
|
export { isFilterRule, parseFilterRules } from './filter-rule-guards.js';
|
|
273
275
|
export type { GroupRule } from './filter-group-rule.js';
|
|
276
|
+
export type { ModelFactRule } from './filter-model-fact.js';
|
|
274
277
|
export { activeGroupRules } from './filter-groups.js';
|
|
275
278
|
//# sourceMappingURL=filter-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-rules.d.ts","sourceRoot":"","sources":["../../src/filter/filter-rules.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-rules.d.ts","sourceRoot":"","sources":["../../src/filter/filter-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
4
|
import { groupRule } from './filter-group-rule.js';
|
|
5
|
+
import { modelFactRule } from './filter-model-fact.js';
|
|
5
6
|
// ── Combinator helpers ────────────────────────────────────────────────────────
|
|
6
7
|
/** Combine an array of per-rule booleans according to AND/OR semantics. */
|
|
7
8
|
export function combineRuleResults(combinator, results) {
|
|
@@ -58,7 +59,7 @@ export const Rule = {
|
|
|
58
59
|
elevation: (op, value) => ({ kind: 'elevation', op, value }),
|
|
59
60
|
typeName: (op, value, valueKind) => ({ kind: 'type', op, value, ...(valueKind ? { valueKind } : {}) }),
|
|
60
61
|
parent: (op, value, valueKind) => ({ kind: 'parent', op, value, ...(valueKind ? { valueKind } : {}) }),
|
|
61
|
-
group: groupRule,
|
|
62
|
+
group: groupRule, modelFact: modelFactRule,
|
|
62
63
|
};
|
|
63
64
|
// ── JSON guards (`filter-rule-guards.ts`, re-exported for existing imports) ─
|
|
64
65
|
export { isFilterRule, parseFilterRules } from './filter-rule-guards.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-rules.js","sourceRoot":"","sources":["../../src/filter/filter-rules.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAc/D,OAAO,EAAE,SAAS,EAAkB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-rules.js","sourceRoot":"","sources":["../../src/filter/filter-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,8 @@ export interface MeasureValue {
|
|
|
22
22
|
unit?: string;
|
|
23
23
|
valueUnits: ReadonlyArray<string | undefined>;
|
|
24
24
|
valueSiScales: ReadonlyArray<number | undefined>;
|
|
25
|
+
/** Properties only: one display value per matched property, a list or table as its joined text. */
|
|
26
|
+
displayValues?: ReadonlyArray<string>;
|
|
25
27
|
}
|
|
26
28
|
export declare function readMeasureSubject(subject: MeasureSubject, store: IfcDataStore, expressId: number): MeasureValue;
|
|
27
29
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-measure-subject.d.ts","sourceRoot":"","sources":["../../src/filter/read-measure-subject.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIpE,KAAK,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;AAE5G,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"read-measure-subject.d.ts","sourceRoot":"","sources":["../../src/filter/read-measure-subject.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIpE,KAAK,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;AAE5G,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,mGAAmG;IACnG,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC;AA8ED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,CAiBhH"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { extractPropertiesOnDemand, extractQuantitiesOnDemand, extractTypePropertiesOnDemand, extractTypeQuantitiesOnDemand, mergeInheritedPropertySets, mergeInheritedQuantitySets, } from '@ifc-lite/parser';
|
|
20
20
|
import { RelationshipType } from '@ifc-lite/data';
|
|
21
|
-
import { nameMatches, stringifyValue } from './filter-match.js';
|
|
21
|
+
import { nameMatches, propertyCandidates, stringifyValue } from './filter-match.js';
|
|
22
22
|
import { projectSiScale, projectUnitSymbol, quantityValueSiScale, QUANTITY_MEASURE_TYPE } from './measure-units.js';
|
|
23
23
|
/** `expressId`'s type-level property sets via `IfcRelDefinesByType`. */
|
|
24
24
|
function inheritedTypePsets(store, expressId) {
|
|
@@ -37,20 +37,26 @@ function readProperty(subject, store, expressId) {
|
|
|
37
37
|
const values = [];
|
|
38
38
|
const valueUnits = [];
|
|
39
39
|
const valueSiScales = [];
|
|
40
|
+
const displayValues = [];
|
|
40
41
|
for (const set of merged) {
|
|
41
42
|
if (!nameMatches(subject.setName, set.name, subject.setNameKind))
|
|
42
43
|
continue;
|
|
43
44
|
for (const p of set.properties) {
|
|
44
45
|
if (!nameMatches(subject.propertyName, p.name, subject.propertyNameKind))
|
|
45
46
|
continue;
|
|
46
|
-
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
// Every candidate of a list, enumerated or table value (#5475); they
|
|
48
|
+
// share the property's unit.
|
|
49
|
+
const unit = p.unit ?? projectUnitSymbol(store, p.dataType);
|
|
50
|
+
const siScale = p.unit !== undefined ? p.unitSiScale : projectSiScale(store, p.dataType);
|
|
51
|
+
displayValues.push(stringifyValue(p.value));
|
|
52
|
+
for (const value of propertyCandidates(p)) {
|
|
53
|
+
values.push(value);
|
|
54
|
+
valueUnits.push(unit);
|
|
55
|
+
valueSiScales.push(siScale);
|
|
56
|
+
}
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
|
-
return { present: values.some((v) => v.trim().length > 0), values, valueUnits, valueSiScales };
|
|
59
|
+
return { present: values.some((v) => v.trim().length > 0), values, valueUnits, valueSiScales, displayValues };
|
|
54
60
|
}
|
|
55
61
|
/**
|
|
56
62
|
* `expressId`'s type-level quantity sets: parsed from the source, or for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-measure-subject.js","sourceRoot":"","sources":["../../src/filter/read-measure-subject.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,0BAA0B,EAC1B,0BAA0B,GAE3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-measure-subject.js","sourceRoot":"","sources":["../../src/filter/read-measure-subject.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,7 +61,16 @@ export interface SubjectValue {
|
|
|
61
61
|
* `valueUnits`; `undefined` for a value with no unit (#5225).
|
|
62
62
|
*/
|
|
63
63
|
valueSiScales?: ReadonlyArray<number | undefined>;
|
|
64
|
+
/**
|
|
65
|
+
* Property subjects only: one value per matched property, a list, enumerated
|
|
66
|
+
* or table value as its joined display text, where `values` holds each
|
|
67
|
+
* member (#5475). The set checks (`unique`, `aggregate`, `compare`) read
|
|
68
|
+
* a property as ONE value, so they use these; element checks match members.
|
|
69
|
+
*/
|
|
70
|
+
displayValues?: ReadonlyArray<string>;
|
|
64
71
|
}
|
|
72
|
+
/** `subject` read as whole values: each property once, as the set checks compare it (#5475). */
|
|
73
|
+
export declare function readSubjectWhole(subject: Subject, ctx: ReadSubjectContext): SubjectValue;
|
|
65
74
|
/**
|
|
66
75
|
* Read one `Subject`'s raw values off `ctx.expressId`. Callers may pass a
|
|
67
76
|
* full `FilterRule` in place of a `Subject` — every rule kind's shape is a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-subject.d.ts","sourceRoot":"","sources":["../../src/filter/read-subject.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"read-subject.d.ts","sourceRoot":"","sources":["../../src/filter/read-subject.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAOvD;;6DAE6D;AAC7D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,GAAG,YAAY,CASxF;AAiBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB,GAAG,YAAY,CAiEnF"}
|