@ifc-lite/query 1.14.14 → 1.14.16

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
@@ -48,11 +48,26 @@ query.spaces().execute();
48
48
  query
49
49
  .ofType('IfcWall')
50
50
  .whereProperty('Qto_WallBaseQuantities', 'NetVolume', '>', 5.0)
51
- .whereProperty('Pset_WallCommon', 'FireRating', '!=', null)
51
+ .whereProperty('Pset_WallCommon', 'FireRating', 'startsWith', 'REI')
52
52
  .execute();
53
53
  ```
54
54
 
55
- Supported: `=`, `!=`, `>`, `<`, `>=`, `<=`, `contains`, `startsWith`.
55
+ Supported: `=`, `!=`, `>`, `<`, `>=`, `<=`, `contains`, `startsWith`. The first
56
+ argument names either a property set (`Pset_*`) or a quantity set (`Qto_*`).
57
+
58
+ Comparisons are same-type only — `'60'` does not match `60` — and a `null` on
59
+ either side never matches, including with `!=`. A filter matches when *any*
60
+ property of that name, in *any* set of that name, satisfies it.
61
+
62
+ On a STEP (`.ifc`) model the property sets are resolved lazily from the source
63
+ buffer rather than from a pre-built index, so `whereProperty` does work per
64
+ *candidate* entity. Narrow with `ofType(...)` / `onStorey(...)` before filtering:
65
+ `query.all().whereProperty(...)` resolves every entity in the model and on a
66
+ large one costs many times the type-scoped form. A cache-restored `.ifc` model
67
+ behaves the same way: the cache stores the property table as it was built, and a
68
+ STEP parse leaves it empty. What decides the path is the store rather than the
69
+ file format — a query answers from the property index whenever the store carries
70
+ table rows. Both paths return the same entities.
56
71
 
57
72
  ## Graph traversal
58
73
 
@@ -36,9 +36,27 @@ export declare class EntityNode {
36
36
  containedIn(): EntityNode | null;
37
37
  decomposes(): EntityNode[];
38
38
  decomposedBy(): EntityNode | null;
39
+ /**
40
+ * The type object defining this occurrence.
41
+ *
42
+ * `IfcRelDefinesByType` has the type as its relating object, and the parser
43
+ * stores edges relating -> related, so the type is the source and each
44
+ * occurrence the target. Reaching the type from an occurrence is therefore
45
+ * an inverse traversal — matching the element -> type lookups in
46
+ * `on-demand-extractors.ts`.
47
+ */
39
48
  definingType(): EntityNode | null;
49
+ /** The occurrences defined by this type — forward, from the type source. */
40
50
  instances(): EntityNode[];
41
51
  voids(): EntityNode[];
52
+ /**
53
+ * The elements filling this opening (doors, windows).
54
+ *
55
+ * `IfcRelFillsElement` is (RelatingOpeningElement, RelatedBuildingElement),
56
+ * so the opening is the relating object and the filler the related one —
57
+ * reaching the filler from the opening is a forward traversal, the same
58
+ * orientation `voids()` uses to reach the opening from its host.
59
+ */
42
60
  filledBy(): EntityNode[];
43
61
  traverse(relType: RelationshipType, depth: number, direction?: 'forward' | 'inverse'): EntityNode[];
44
62
  building(): EntityNode | null;
@@ -1 +1 @@
1
- {"version":3,"file":"entity-node.d.ts","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1I,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0BlD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,SAAS,GAChB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAO3D;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,iBAAiB,CAAyG;gBAEtH,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAa7B,IAAI,QAAQ,IAAI,MAAM,CAMrB;IAED,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,IAAI,GAAG,IAAI,MAAM,CAGhB;IAED;;;;OAIG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAe1E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAGD,QAAQ,IAAI,UAAU,EAAE;IAIxB,WAAW,IAAI,UAAU,GAAG,IAAI;IAMhC,UAAU,IAAI,UAAU,EAAE;IAI1B,YAAY,IAAI,UAAU,GAAG,IAAI;IAMjC,YAAY,IAAI,UAAU,GAAG,IAAI;IAKjC,SAAS,IAAI,UAAU,EAAE;IAKzB,KAAK,IAAI,UAAU,EAAE;IAIrB,QAAQ,IAAI,UAAU,EAAE;IAKxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,GAAG,SAAqB,GAAG,UAAU,EAAE;IA+B9G,QAAQ,IAAI,UAAU,GAAG,IAAI;IAY7B,MAAM,IAAI,UAAU,GAAG,IAAI;IAa3B,UAAU,IAAI,WAAW,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAMlE,UAAU,IAAI,WAAW,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM/D,OAAO,CAAC,UAAU;CAInB"}
1
+ {"version":3,"file":"entity-node.d.ts","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1I,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AA0BlD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,SAAS,GAChB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,CAO3D;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,iBAAiB,CAAyG;gBAEtH,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAa7B,IAAI,QAAQ,IAAI,MAAM,CAMrB;IAED,IAAI,IAAI,IAAI,MAAM,CAMjB;IAED,IAAI,WAAW,IAAI,MAAM,CAMxB;IAED,IAAI,UAAU,IAAI,MAAM,CAMvB;IAED,IAAI,GAAG,IAAI,MAAM,CAGhB;IAED;;;;OAIG;IACH,aAAa,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAe1E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAGD,QAAQ,IAAI,UAAU,EAAE;IAIxB,WAAW,IAAI,UAAU,GAAG,IAAI;IAMhC,UAAU,IAAI,UAAU,EAAE;IAI1B,YAAY,IAAI,UAAU,GAAG,IAAI;IAMjC;;;;;;;;OAQG;IACH,YAAY,IAAI,UAAU,GAAG,IAAI;IAKjC,4EAA4E;IAC5E,SAAS,IAAI,UAAU,EAAE;IAKzB,KAAK,IAAI,UAAU,EAAE;IAIrB;;;;;;;OAOG;IACH,QAAQ,IAAI,UAAU,EAAE;IAKxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,GAAG,SAAqB,GAAG,UAAU,EAAE;IA+B9G,QAAQ,IAAI,UAAU,GAAG,IAAI;IAY7B,MAAM,IAAI,UAAU,GAAG,IAAI;IAa3B,UAAU,IAAI,WAAW,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAMlE,UAAU,IAAI,WAAW,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM/D,OAAO,CAAC,UAAU;CAInB"}
@@ -145,19 +145,37 @@ export class EntityNode {
145
145
  return nodes[0] ?? null;
146
146
  }
147
147
  // Types
148
+ /**
149
+ * The type object defining this occurrence.
150
+ *
151
+ * `IfcRelDefinesByType` has the type as its relating object, and the parser
152
+ * stores edges relating -> related, so the type is the source and each
153
+ * occurrence the target. Reaching the type from an occurrence is therefore
154
+ * an inverse traversal — matching the element -> type lookups in
155
+ * `on-demand-extractors.ts`.
156
+ */
148
157
  definingType() {
149
- const nodes = this.getRelated(RelationshipType.DefinesByType, 'forward');
158
+ const nodes = this.getRelated(RelationshipType.DefinesByType, 'inverse');
150
159
  return nodes[0] ?? null;
151
160
  }
161
+ /** The occurrences defined by this type — forward, from the type source. */
152
162
  instances() {
153
- return this.getRelated(RelationshipType.DefinesByType, 'inverse');
163
+ return this.getRelated(RelationshipType.DefinesByType, 'forward');
154
164
  }
155
165
  // Openings
156
166
  voids() {
157
167
  return this.getRelated(RelationshipType.VoidsElement, 'forward');
158
168
  }
169
+ /**
170
+ * The elements filling this opening (doors, windows).
171
+ *
172
+ * `IfcRelFillsElement` is (RelatingOpeningElement, RelatedBuildingElement),
173
+ * so the opening is the relating object and the filler the related one —
174
+ * reaching the filler from the opening is a forward traversal, the same
175
+ * orientation `voids()` uses to reach the opening from its host.
176
+ */
159
177
  filledBy() {
160
- return this.getRelated(RelationshipType.FillsElement, 'inverse');
178
+ return this.getRelated(RelationshipType.FillsElement, 'forward');
161
179
  }
162
180
  // Multi-hop traversal
163
181
  traverse(relType, depth, direction = 'forward') {
@@ -1 +1 @@
1
- {"version":3,"file":"entity-node.js","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-node.js","sourceRoot":"","sources":["../src/entity-node.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,59 @@ export declare class EntityQuery {
26
26
  count(): Promise<number>;
27
27
  first(): Promise<QueryResultEntity | null>;
28
28
  private getCandidateIds;
29
+ /**
30
+ * Narrow `ids` to those satisfying every registered property filter.
31
+ *
32
+ * A filter's first argument names either a property set or a quantity set,
33
+ * so both tables are consulted and their matches unioned. Two strategies,
34
+ * picked per store:
35
+ *
36
+ * - **Indexed** whenever `store.properties` does not report an explicit zero
37
+ * row count. It is the store that decides this, not the file format:
38
+ * `@ifc-lite/ifcx` builds real rows via `PropertyTableBuilder`, so an IFCX
39
+ * file carrying properties lands here (one carrying none still reports zero
40
+ * rows and takes the branch below), as does a cache written from such an
41
+ * already materialised store. `findByProperty` and `findByQuantity` answer off the
42
+ * name indices, so cost scales with the number of rows carrying that name,
43
+ * not with the candidate count.
44
+ * - **Resolved sets** when the property table reports `count === 0`. A STEP
45
+ * parse deliberately leaves the property/quantity tables at zero rows and
46
+ * routes reads through the on-demand maps (issue #577), so `findByProperty`
47
+ * there can only ever return `[]` — which is what made `whereProperty`
48
+ * silently match nothing on every `.ifc` file. This also covers a
49
+ * **cache restored from a STEP parse**: the writer serialises
50
+ * `dataStore.properties` verbatim, so an empty table round-trips empty
51
+ * (`findByProperty` survives as a method but indexes nothing) and the
52
+ * viewer rebuilds the on-demand maps on restore. Since the viewer only
53
+ * writes caches on the `.ifc` load path, cache-restored models take this
54
+ * branch in practice. The server-converted viewer store also reports
55
+ * `count: 0` and lands here. The filter then resolves the candidates
56
+ * through `store.getProperties` / `store.getQuantities`, the same
57
+ * accessors the read path (`EntityNode.property`,
58
+ * `QueryResultEntity.getProperty`) uses.
59
+ *
60
+ * Only an *explicit* zero selects the fallback: a store whose table omits
61
+ * `count` altogether keeps the indexed path, because every store predating
62
+ * `count` on `IfcStoreBase` implements `findByProperty` for real.
63
+ *
64
+ * The fallback is candidate-scoped, never store-wide: only the ids that
65
+ * survived the type/id filter are resolved, and each is resolved at most once
66
+ * *per source* across all filters — `psetCache` and `qsetCache` are separate,
67
+ * so an entity reached by both sides costs one `getProperties` and one
68
+ * `getQuantities`, never one per filter. It is still O(candidates x source
69
+ * extraction), so scope
70
+ * with `ofType(...)` before `whereProperty(...)` on large models — the note in
71
+ * `docs/guide/querying.md` says the same thing to callers.
72
+ *
73
+ * Matching is ANY-match: an entity passes when *any* property of that name in
74
+ * *any* set of that name satisfies the operator. That is what
75
+ * `PropertyTable.findByProperty` does (it walks every row of that property
76
+ * name), so the two strategies agree with each other. It deliberately does
77
+ * *not* agree with the single-value read path (`EntityNode.property` and
78
+ * `QueryResultEntity.getProperty` return the *first* match), which differs
79
+ * only for an entity carrying the same property name twice; that divergence
80
+ * is pinned by a test in `where-property-fallback.test.ts`.
81
+ */
29
82
  private applyPropertyFilters;
30
83
  }
31
84
  //# sourceMappingURL=entity-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entity-query.d.ts","sourceRoot":"","sources":["../src/entity-query.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,UAAU,GAAG,YAAY,CAAC;AAElG,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAAiF;IACxG,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAA0E;gBAElF,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,EAAE,GAAG,IAAW;IAUzF,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAKjG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B,eAAe,IAAI,IAAI;IAKvB,iBAAiB,IAAI,IAAI;IAKzB,iBAAiB,IAAI,IAAI;IAKzB,UAAU,IAAI,IAAI;IASlB,OAAO,IAAI,iBAAiB,EAAE;IA6BxB,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQxB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAMxB,KAAK,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAShD,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,oBAAoB;CAkB7B"}
1
+ {"version":3,"file":"entity-query.d.ts","sourceRoot":"","sources":["../src/entity-query.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAA4B,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,UAAU,GAAG,YAAY,CAAC;AAElG,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,eAAe,CAAiF;IACxG,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAA0E;gBAElF,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,GAAE,MAAM,EAAE,GAAG,IAAW;IAUzF,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAKjG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3B,eAAe,IAAI,IAAI;IAKvB,iBAAiB,IAAI,IAAI;IAKzB,iBAAiB,IAAI,IAAI;IAKzB,UAAU,IAAI,IAAI;IASlB,OAAO,IAAI,iBAAiB,EAAE;IA6BxB,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAQxB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAMxB,KAAK,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAoBhD,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACH,OAAO,CAAC,oBAAoB;CAgF7B"}
@@ -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 { QueryResultEntity } from './query-result-entity.js';
5
+ import { matchesPsetFilter, matchesQsetFilter } from './property-filter.js';
5
6
  export class EntityQuery {
6
7
  store;
7
8
  typeFilter;
@@ -91,8 +92,20 @@ export class EntityQuery {
91
92
  return ids.length;
92
93
  }
93
94
  async first() {
94
- const results = this.limit(1).execute();
95
- return results[0] ?? null;
95
+ // Narrow to one row for this call only. `this.limit(1)` mutates the query
96
+ // itself, so the cap outlived the call and every later
97
+ // execute()/ids()/first() on the same object returned at most one row --
98
+ // including one the caller had set a different limit on. Restore whatever
99
+ // was there before rather than clearing it, so an explicit limit survives.
100
+ const previousLimit = this.limitCount;
101
+ this.limitCount = 1;
102
+ try {
103
+ const results = this.execute();
104
+ return results[0] ?? null;
105
+ }
106
+ finally {
107
+ this.limitCount = previousLimit;
108
+ }
96
109
  }
97
110
  // ═══════════════════════════════════════════════════════════════
98
111
  // PRIVATE
@@ -114,14 +127,135 @@ export class EntityQuery {
114
127
  }
115
128
  return allIds;
116
129
  }
130
+ /**
131
+ * Narrow `ids` to those satisfying every registered property filter.
132
+ *
133
+ * A filter's first argument names either a property set or a quantity set,
134
+ * so both tables are consulted and their matches unioned. Two strategies,
135
+ * picked per store:
136
+ *
137
+ * - **Indexed** whenever `store.properties` does not report an explicit zero
138
+ * row count. It is the store that decides this, not the file format:
139
+ * `@ifc-lite/ifcx` builds real rows via `PropertyTableBuilder`, so an IFCX
140
+ * file carrying properties lands here (one carrying none still reports zero
141
+ * rows and takes the branch below), as does a cache written from such an
142
+ * already materialised store. `findByProperty` and `findByQuantity` answer off the
143
+ * name indices, so cost scales with the number of rows carrying that name,
144
+ * not with the candidate count.
145
+ * - **Resolved sets** when the property table reports `count === 0`. A STEP
146
+ * parse deliberately leaves the property/quantity tables at zero rows and
147
+ * routes reads through the on-demand maps (issue #577), so `findByProperty`
148
+ * there can only ever return `[]` — which is what made `whereProperty`
149
+ * silently match nothing on every `.ifc` file. This also covers a
150
+ * **cache restored from a STEP parse**: the writer serialises
151
+ * `dataStore.properties` verbatim, so an empty table round-trips empty
152
+ * (`findByProperty` survives as a method but indexes nothing) and the
153
+ * viewer rebuilds the on-demand maps on restore. Since the viewer only
154
+ * writes caches on the `.ifc` load path, cache-restored models take this
155
+ * branch in practice. The server-converted viewer store also reports
156
+ * `count: 0` and lands here. The filter then resolves the candidates
157
+ * through `store.getProperties` / `store.getQuantities`, the same
158
+ * accessors the read path (`EntityNode.property`,
159
+ * `QueryResultEntity.getProperty`) uses.
160
+ *
161
+ * Only an *explicit* zero selects the fallback: a store whose table omits
162
+ * `count` altogether keeps the indexed path, because every store predating
163
+ * `count` on `IfcStoreBase` implements `findByProperty` for real.
164
+ *
165
+ * The fallback is candidate-scoped, never store-wide: only the ids that
166
+ * survived the type/id filter are resolved, and each is resolved at most once
167
+ * *per source* across all filters — `psetCache` and `qsetCache` are separate,
168
+ * so an entity reached by both sides costs one `getProperties` and one
169
+ * `getQuantities`, never one per filter. It is still O(candidates x source
170
+ * extraction), so scope
171
+ * with `ofType(...)` before `whereProperty(...)` on large models — the note in
172
+ * `docs/guide/querying.md` says the same thing to callers.
173
+ *
174
+ * Matching is ANY-match: an entity passes when *any* property of that name in
175
+ * *any* set of that name satisfies the operator. That is what
176
+ * `PropertyTable.findByProperty` does (it walks every row of that property
177
+ * name), so the two strategies agree with each other. It deliberately does
178
+ * *not* agree with the single-value read path (`EntityNode.property` and
179
+ * `QueryResultEntity.getProperty` return the *first* match), which differs
180
+ * only for an entity carrying the same property name twice; that divergence
181
+ * is pinned by a test in `where-property-fallback.test.ts`.
182
+ */
117
183
  applyPropertyFilters(ids) {
118
184
  if (this.propertyFilters.length === 0)
119
185
  return ids;
186
+ const properties = this.store.properties;
187
+ const quantities = this.store.quantities;
188
+ // Explicit zero only — see the doc comment above and the `count` contract
189
+ // on `IfcStoreBase`'s property table.
190
+ const useTable = properties.count !== 0;
191
+ // The two tables choose independently. Gating the quantity side off
192
+ // `properties.count` would mean a store that materialised one table but not
193
+ // the other got the wrong strategy for the other: a populated property table
194
+ // beside an empty quantity table would query an empty `findByQuantity` and
195
+ // match no quantities at all, and the inverse would resolve candidates one
196
+ // at a time while a populated quantity index sat unused.
197
+ const useQuantityTable = quantities.count !== 0;
198
+ // `quantities` and `getQuantities` are both REQUIRED on `IfcStoreBase`, so
199
+ // neither is guarded here: a store missing either is already out of
200
+ // contract, and half-guarding it (optional-chaining the table but calling
201
+ // `getQuantities` unconditionally two branches down) would only move the
202
+ // TypeError, not prevent it. `findByQuantity` is the one genuinely optional
203
+ // member, so that is the only existence check.
204
+ // Bound to the table so the optional method keeps its receiver.
205
+ const findByQuantity = useQuantityTable && quantities.findByQuantity
206
+ ? quantities.findByQuantity.bind(quantities)
207
+ : undefined;
208
+ // Shared across all filters: resolving a pset/qset costs a source
209
+ // extraction on the on-demand path, so never resolve the same entity twice.
210
+ const psetCache = new Map();
211
+ const qsetCache = new Map();
120
212
  let filteredIds = ids;
121
213
  for (const filter of this.propertyFilters) {
122
- const matchingIds = this.store.properties.findByProperty(filter.prop, filter.op, filter.value, filter.pset);
123
- const matchingSet = new Set(matchingIds);
124
- filteredIds = filteredIds.filter(id => matchingSet.has(id));
214
+ const matches = new Set();
215
+ if (useTable) {
216
+ for (const id of properties.findByProperty(filter.prop, filter.op, filter.value, filter.pset)) {
217
+ matches.add(id);
218
+ }
219
+ }
220
+ else {
221
+ for (const id of filteredIds) {
222
+ let psets = psetCache.get(id);
223
+ if (!psets) {
224
+ psets = this.store.getProperties(id);
225
+ psetCache.set(id, psets);
226
+ }
227
+ if (matchesPsetFilter(psets, filter.pset, filter.prop, filter.op, filter.value))
228
+ matches.add(id);
229
+ }
230
+ }
231
+ // Quantity side: `whereProperty('Qto_WallBaseQuantities', 'NetArea', '>', 10)`
232
+ // is documented (docs/guide/querying.md, packages/query/README.md) but
233
+ // quantities live in a separate table, so a Qto_ filter matched nothing on
234
+ // every path. Union rather than "only when the property side came back
235
+ // empty" — a conditional would drop entities matched via quantities as
236
+ // soon as any other entity matched via properties.
237
+ if (findByQuantity) {
238
+ for (const id of findByQuantity(filter.prop, filter.op, filter.value, filter.pset)) {
239
+ matches.add(id);
240
+ }
241
+ }
242
+ else {
243
+ // No index available: the on-demand path (where the columnar quantity
244
+ // table is empty by construction), or a duck-typed table that does not
245
+ // implement `findByQuantity`.
246
+ for (const id of filteredIds) {
247
+ if (matches.has(id))
248
+ continue;
249
+ let qsets = qsetCache.get(id);
250
+ if (!qsets) {
251
+ qsets = this.store.getQuantities(id);
252
+ qsetCache.set(id, qsets);
253
+ }
254
+ if (matchesQsetFilter(qsets, filter.pset, filter.prop, filter.op, filter.value))
255
+ matches.add(id);
256
+ }
257
+ }
258
+ filteredIds = filteredIds.filter(id => matches.has(id));
125
259
  }
126
260
  return filteredIds;
127
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entity-query.js","sourceRoot":"","sources":["../src/entity-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-query.js","sourceRoot":"","sources":["../src/entity-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Set-shaped property/quantity matching for `EntityQuery.whereProperty`.
3
+ *
4
+ * Used only when the store's columnar property table is empty and the filter
5
+ * has to be answered from resolved `PropertySet[]` / `QuantitySet[]` instead
6
+ * (the STEP on-demand shape, see `applyPropertyFilters`). The comparison itself
7
+ * is `comparePropertyValues` from `@ifc-lite/data` — the same function
8
+ * `PropertyTable.findByProperty` uses — so the two strategies cannot drift.
9
+ *
10
+ * Internal to the package: not re-exported from `index.ts`.
11
+ */
12
+ import { type PropertySet, type PropertyValue, type QuantitySet } from '@ifc-lite/data';
13
+ /**
14
+ * True when ANY property named `propName`, in ANY property set named
15
+ * `psetName`, satisfies `operator`/`value`.
16
+ *
17
+ * ANY-match rather than first-match is what `findByProperty` does: it walks
18
+ * every row of that property name. A model may legitimately carry the same
19
+ * property in two same-named sets (two `IfcRelDefinesByProperties` pointing at
20
+ * distinct `IfcPropertySet`s), and stopping at the first hit would answer
21
+ * differently from the table path for exactly those entities.
22
+ */
23
+ export declare function matchesPsetFilter(psets: readonly PropertySet[], psetName: string, propName: string, operator: string, value: PropertyValue): boolean;
24
+ /**
25
+ * True when ANY quantity named `quantityName`, in ANY quantity set named
26
+ * `qsetName`, satisfies `operator`/`value`.
27
+ *
28
+ * `Quantity.value` is always a number, so only the numeric branch of
29
+ * `comparePropertyValues` can fire here.
30
+ */
31
+ export declare function matchesQsetFilter(qsets: readonly QuantitySet[], qsetName: string, quantityName: string, operator: string, value: PropertyValue): boolean;
32
+ //# sourceMappingURL=property-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-filter.d.ts","sourceRoot":"","sources":["../src/property-filter.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,EAAyB,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/G;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,GACnB,OAAO,CAST;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,WAAW,EAAE,EAC7B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,GACnB,OAAO,CAST"}
@@ -0,0 +1,59 @@
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
+ * Set-shaped property/quantity matching for `EntityQuery.whereProperty`.
6
+ *
7
+ * Used only when the store's columnar property table is empty and the filter
8
+ * has to be answered from resolved `PropertySet[]` / `QuantitySet[]` instead
9
+ * (the STEP on-demand shape, see `applyPropertyFilters`). The comparison itself
10
+ * is `comparePropertyValues` from `@ifc-lite/data` — the same function
11
+ * `PropertyTable.findByProperty` uses — so the two strategies cannot drift.
12
+ *
13
+ * Internal to the package: not re-exported from `index.ts`.
14
+ */
15
+ import { comparePropertyValues } from '@ifc-lite/data';
16
+ /**
17
+ * True when ANY property named `propName`, in ANY property set named
18
+ * `psetName`, satisfies `operator`/`value`.
19
+ *
20
+ * ANY-match rather than first-match is what `findByProperty` does: it walks
21
+ * every row of that property name. A model may legitimately carry the same
22
+ * property in two same-named sets (two `IfcRelDefinesByProperties` pointing at
23
+ * distinct `IfcPropertySet`s), and stopping at the first hit would answer
24
+ * differently from the table path for exactly those entities.
25
+ */
26
+ export function matchesPsetFilter(psets, psetName, propName, operator, value) {
27
+ for (const pset of psets) {
28
+ if (pset.name !== psetName)
29
+ continue;
30
+ for (const prop of pset.properties) {
31
+ if (prop.name !== propName)
32
+ continue;
33
+ if (comparePropertyValues(prop.value, operator, value))
34
+ return true;
35
+ }
36
+ }
37
+ return false;
38
+ }
39
+ /**
40
+ * True when ANY quantity named `quantityName`, in ANY quantity set named
41
+ * `qsetName`, satisfies `operator`/`value`.
42
+ *
43
+ * `Quantity.value` is always a number, so only the numeric branch of
44
+ * `comparePropertyValues` can fire here.
45
+ */
46
+ export function matchesQsetFilter(qsets, qsetName, quantityName, operator, value) {
47
+ for (const qset of qsets) {
48
+ if (qset.name !== qsetName)
49
+ continue;
50
+ for (const quantity of qset.quantities) {
51
+ if (quantity.name !== quantityName)
52
+ continue;
53
+ if (comparePropertyValues(quantity.value, operator, value))
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ }
59
+ //# sourceMappingURL=property-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-filter.js","sourceRoot":"","sources":["../src/property-filter.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,qBAAqB,EAA0D,MAAM,gBAAgB,CAAC;AAE/G;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA6B,EAC7B,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,KAAoB;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACrC,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA6B,EAC7B,QAAgB,EAChB,YAAoB,EACpB,QAAgB,EAChB,KAAoB;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QACrC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY;gBAAE,SAAS;YAC7C,IAAI,qBAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/query",
3
- "version": "1.14.14",
3
+ "version": "1.14.16",
4
4
  "description": "Query system for IFC-Lite",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,10 +13,10 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@ifc-lite/parser": "^3.11.0",
17
- "@ifc-lite/data": "^3.0.0",
18
- "@ifc-lite/spatial": "^1.14.12",
19
- "@ifc-lite/geometry": "^3.5.0"
16
+ "@ifc-lite/parser": "^4.0.0",
17
+ "@ifc-lite/data": "^3.2.2",
18
+ "@ifc-lite/spatial": "^1.14.13",
19
+ "@ifc-lite/geometry": "^3.7.1"
20
20
  },
21
21
  "devDependencies": {
22
22
  "typescript": "^6.0.3",