@ifc-lite/cli 0.25.2 → 0.27.0

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.
Files changed (132) hide show
  1. package/dist/commands/anonymize.d.ts +2 -0
  2. package/dist/commands/anonymize.d.ts.map +1 -0
  3. package/dist/commands/anonymize.js +221 -0
  4. package/dist/commands/anonymize.js.map +1 -0
  5. package/dist/commands/ask.d.ts +8 -0
  6. package/dist/commands/ask.d.ts.map +1 -1
  7. package/dist/commands/ask.js +10 -9
  8. package/dist/commands/ask.js.map +1 -1
  9. package/dist/commands/bsdd.d.ts.map +1 -1
  10. package/dist/commands/bsdd.js +49 -13
  11. package/dist/commands/bsdd.js.map +1 -1
  12. package/dist/commands/diff-classification-label.d.ts +12 -0
  13. package/dist/commands/diff-classification-label.d.ts.map +1 -0
  14. package/dist/commands/diff-classification-label.js +20 -0
  15. package/dist/commands/diff-classification-label.js.map +1 -0
  16. package/dist/commands/diff-engine.d.ts.map +1 -1
  17. package/dist/commands/diff-engine.js +33 -11
  18. package/dist/commands/diff-engine.js.map +1 -1
  19. package/dist/commands/diff-test-helpers.d.ts +12 -0
  20. package/dist/commands/diff-test-helpers.d.ts.map +1 -1
  21. package/dist/commands/diff-test-helpers.js +68 -0
  22. package/dist/commands/diff-test-helpers.js.map +1 -1
  23. package/dist/commands/diff-unit-scale-fixtures.d.ts +34 -0
  24. package/dist/commands/diff-unit-scale-fixtures.d.ts.map +1 -0
  25. package/dist/commands/diff-unit-scale-fixtures.js +94 -0
  26. package/dist/commands/diff-unit-scale-fixtures.js.map +1 -0
  27. package/dist/commands/export.d.ts +11 -0
  28. package/dist/commands/export.d.ts.map +1 -1
  29. package/dist/commands/export.js +9 -14
  30. package/dist/commands/export.js.map +1 -1
  31. package/dist/commands/merge.d.ts.map +1 -1
  32. package/dist/commands/merge.js +8 -0
  33. package/dist/commands/merge.js.map +1 -1
  34. package/dist/commands/query-aggregation.d.ts +27 -4
  35. package/dist/commands/query-aggregation.d.ts.map +1 -1
  36. package/dist/commands/query-aggregation.js +67 -6
  37. package/dist/commands/query-aggregation.js.map +1 -1
  38. package/dist/commands/query-output.d.ts +7 -0
  39. package/dist/commands/query-output.d.ts.map +1 -1
  40. package/dist/commands/query-output.js +63 -27
  41. package/dist/commands/query-output.js.map +1 -1
  42. package/dist/commands/query-storey.d.ts +24 -0
  43. package/dist/commands/query-storey.d.ts.map +1 -0
  44. package/dist/commands/query-storey.js +71 -0
  45. package/dist/commands/query-storey.js.map +1 -0
  46. package/dist/commands/query.d.ts +2 -25
  47. package/dist/commands/query.d.ts.map +1 -1
  48. package/dist/commands/query.js +39 -158
  49. package/dist/commands/query.js.map +1 -1
  50. package/dist/commands/schedule-aggregate.d.ts +51 -0
  51. package/dist/commands/schedule-aggregate.d.ts.map +1 -0
  52. package/dist/commands/schedule-aggregate.js +121 -0
  53. package/dist/commands/schedule-aggregate.js.map +1 -0
  54. package/dist/commands/schedule-columns.d.ts +15 -0
  55. package/dist/commands/schedule-columns.d.ts.map +1 -0
  56. package/dist/commands/schedule-columns.js +63 -0
  57. package/dist/commands/schedule-columns.js.map +1 -0
  58. package/dist/commands/schedule-group.d.ts +65 -0
  59. package/dist/commands/schedule-group.d.ts.map +1 -0
  60. package/dist/commands/schedule-group.js +0 -0
  61. package/dist/commands/schedule-group.js.map +1 -0
  62. package/dist/commands/schedule-presets.d.ts +21 -0
  63. package/dist/commands/schedule-presets.d.ts.map +1 -0
  64. package/dist/commands/schedule-presets.js +62 -0
  65. package/dist/commands/schedule-presets.js.map +1 -0
  66. package/dist/commands/schedule-render-html.d.ts +13 -0
  67. package/dist/commands/schedule-render-html.d.ts.map +1 -0
  68. package/dist/commands/schedule-render-html.js +100 -0
  69. package/dist/commands/schedule-render-html.js.map +1 -0
  70. package/dist/commands/schedule-render-md.d.ts +12 -0
  71. package/dist/commands/schedule-render-md.d.ts.map +1 -0
  72. package/dist/commands/schedule-render-md.js +77 -0
  73. package/dist/commands/schedule-render-md.js.map +1 -0
  74. package/dist/commands/schedule-render.d.ts +51 -0
  75. package/dist/commands/schedule-render.d.ts.map +1 -0
  76. package/dist/commands/schedule-render.js +205 -0
  77. package/dist/commands/schedule-render.js.map +1 -0
  78. package/dist/commands/schedule-spec.d.ts +29 -0
  79. package/dist/commands/schedule-spec.d.ts.map +1 -0
  80. package/dist/commands/schedule-spec.js +111 -0
  81. package/dist/commands/schedule-spec.js.map +1 -0
  82. package/dist/commands/schedule.d.ts +23 -0
  83. package/dist/commands/schedule.d.ts.map +1 -0
  84. package/dist/commands/schedule.js +249 -0
  85. package/dist/commands/schedule.js.map +1 -0
  86. package/dist/commands/schema.d.ts.map +1 -1
  87. package/dist/commands/schema.js +192 -17
  88. package/dist/commands/schema.js.map +1 -1
  89. package/dist/commands/stats-aggregation.d.ts +31 -6
  90. package/dist/commands/stats-aggregation.d.ts.map +1 -1
  91. package/dist/commands/stats-aggregation.js +79 -11
  92. package/dist/commands/stats-aggregation.js.map +1 -1
  93. package/dist/commands/stats.d.ts.map +1 -1
  94. package/dist/commands/stats.js +4 -4
  95. package/dist/commands/stats.js.map +1 -1
  96. package/dist/commands/validate.d.ts +7 -4
  97. package/dist/commands/validate.d.ts.map +1 -1
  98. package/dist/commands/validate.js +9 -6
  99. package/dist/commands/validate.js.map +1 -1
  100. package/dist/commands/where-filter.d.ts +42 -0
  101. package/dist/commands/where-filter.d.ts.map +1 -0
  102. package/dist/commands/where-filter.js +88 -0
  103. package/dist/commands/where-filter.js.map +1 -0
  104. package/dist/energy-export.d.ts.map +1 -1
  105. package/dist/energy-export.js +12 -2
  106. package/dist/energy-export.js.map +1 -1
  107. package/dist/geometry-report.d.ts.map +1 -1
  108. package/dist/geometry-report.js +15 -3
  109. package/dist/geometry-report.js.map +1 -1
  110. package/dist/headless-backend.d.ts +20 -5
  111. package/dist/headless-backend.d.ts.map +1 -1
  112. package/dist/headless-backend.js +131 -90
  113. package/dist/headless-backend.js.map +1 -1
  114. package/dist/index.js +32 -0
  115. package/dist/index.js.map +1 -1
  116. package/dist/output.d.ts +13 -0
  117. package/dist/output.d.ts.map +1 -1
  118. package/dist/output.js +21 -0
  119. package/dist/output.js.map +1 -1
  120. package/dist/property-filter-match.d.ts +12 -0
  121. package/dist/property-filter-match.d.ts.map +1 -0
  122. package/dist/property-filter-match.js +17 -0
  123. package/dist/property-filter-match.js.map +1 -0
  124. package/dist/query-overlay-relations.d.ts +29 -0
  125. package/dist/query-overlay-relations.d.ts.map +1 -0
  126. package/dist/query-overlay-relations.js +88 -0
  127. package/dist/query-overlay-relations.js.map +1 -0
  128. package/dist/query-overlay.d.ts +44 -0
  129. package/dist/query-overlay.d.ts.map +1 -0
  130. package/dist/query-overlay.js +100 -0
  131. package/dist/query-overlay.js.map +1 -0
  132. package/package.json +22 -22
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAaA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjE"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAmNA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjE"}
@@ -7,7 +7,194 @@
7
7
  * Dump the complete SDK API schema as JSON.
8
8
  * Useful for LLM tools to discover available commands and methods.
9
9
  */
10
+ import { BimContext, QueryBuilder } from '@ifc-lite/sdk';
10
11
  import { printJson, hasFlag } from '../output.js';
12
+ /**
13
+ * Doc strings for the `BimContext` / `QueryBuilder` methods that
14
+ * `NAMESPACE_SCHEMAS` does not name (#3763). Only prose lives here — the
15
+ * method LIST itself is reflected off the runtime classes below, so a method
16
+ * added or removed upstream changes the dump without an edit here, and
17
+ * `schema.runtime-shape.test.ts` fails if the two ever disagree.
18
+ *
19
+ * Keyed per class, like `RUNTIME_METHOD_SIGNATURES` below (#3763 follow-up):
20
+ * `bim` and `query` are reflected off two different prototypes, so a bare
21
+ * name shared between them (there is none today, but nothing prevented it)
22
+ * would otherwise read whichever entry came first.
23
+ */
24
+ const RUNTIME_METHOD_DOCS = {
25
+ bim: {
26
+ query: 'Start a query chain: bim.query().byType(...).toArray()',
27
+ on: 'Subscribe to an event, e.g. bim.on("selection:changed", handler)',
28
+ },
29
+ query: {
30
+ model: 'Restrict the chain to one model',
31
+ byType: "Filter by IFC type e.g. 'IfcWall'",
32
+ where: 'Filter by a property-set value',
33
+ limit: 'Cap the number of results',
34
+ offset: 'Skip the first n results',
35
+ toArray: 'Run the chain and return the entities',
36
+ first: 'Run the chain and return the first entity, or null',
37
+ count: 'Run the chain and return the number of matches',
38
+ refs: 'Run the chain and return entity refs only',
39
+ },
40
+ };
41
+ /**
42
+ * Parameter names and return types for `BimContext` / `QueryBuilder` methods,
43
+ * transcribed from their own signatures in `packages/sdk/src/context.ts` and
44
+ * `packages/sdk/src/namespaces/query.ts` (#3763 follow-up).
45
+ *
46
+ * Keyed per class, not by bare method name: `BimContext` and `QueryBuilder`
47
+ * are reflected separately in `withRuntimeQueryShape`, and a future method
48
+ * that shares a name across both classes (their param/return shapes need not
49
+ * match) would otherwise read the wrong entry silently.
50
+ *
51
+ * `describe()` used to spread the sandbox bridge's own `paramNames`/`tsReturn`
52
+ * onto these methods, with the bridge as a fallback when a method had no
53
+ * entry here. The bridge runs a whole query synchronously and returns plain
54
+ * data (`bim.query.byType(...): BimEntity[]`, `entity(modelId, expressId)`),
55
+ * which is not the shape the CLI's raw `BimContext`/`QueryBuilder` have
56
+ * (`byType(...types): this`, `entity(ref: EntityRef)`) — falling back to it
57
+ * produced a schema entry an agent could follow into a TypeError or a chain
58
+ * that stops one link early. `describe()` now throws instead of falling back,
59
+ * so a new runtime method with no entry here fails the dump loudly (and
60
+ * `schema.runtime-shape.test.ts` with it) rather than shipping mislabelled.
61
+ */
62
+ const RUNTIME_METHOD_SIGNATURES = {
63
+ bim: {
64
+ query: { tsReturn: 'QueryBuilder' },
65
+ matchingActiveFilter: { tsReturn: 'EntityData[] | null' },
66
+ entity: { paramNames: ['ref'], tsReturn: 'EntityData | null' },
67
+ attributes: { paramNames: ['ref'], tsReturn: 'EntityAttributeData[]' },
68
+ properties: { paramNames: ['ref'], tsReturn: 'PropertySetData[]' },
69
+ quantities: { paramNames: ['ref'], tsReturn: 'QuantitySetData[]' },
70
+ classifications: { paramNames: ['ref'], tsReturn: 'ClassificationData[]' },
71
+ materials: { paramNames: ['ref'], tsReturn: 'MaterialData | null' },
72
+ typeProperties: { paramNames: ['ref'], tsReturn: 'TypePropertiesData | null' },
73
+ documents: { paramNames: ['ref'], tsReturn: 'DocumentData[]' },
74
+ relationships: { paramNames: ['ref'], tsReturn: 'EntityRelationshipsData' },
75
+ property: { paramNames: ['ref', 'psetName', 'propName'], tsReturn: 'string | number | boolean | null' },
76
+ quantity: { paramNames: ['ref', 'qsetNameOrQuantityName', 'quantityName?'], tsReturn: 'number | null' },
77
+ related: { paramNames: ['ref', 'relType', 'direction'], tsReturn: 'EntityData[]' },
78
+ containedIn: { paramNames: ['ref'], tsReturn: 'EntityData | null' },
79
+ contains: { paramNames: ['ref'], tsReturn: 'EntityData[]' },
80
+ decomposedBy: { paramNames: ['ref'], tsReturn: 'EntityData | null' },
81
+ decomposes: { paramNames: ['ref'], tsReturn: 'EntityData[]' },
82
+ storey: { paramNames: ['ref'], tsReturn: 'EntityData | null' },
83
+ path: { paramNames: ['ref'], tsReturn: 'EntityData[]' },
84
+ storeys: { tsReturn: 'EntityData[]' },
85
+ on: { paramNames: ['event', 'handler'], tsReturn: 'void' },
86
+ },
87
+ query: {
88
+ model: { paramNames: ['modelId'], tsReturn: 'this' },
89
+ byType: { paramNames: ['...types'], tsReturn: 'this' },
90
+ where: { paramNames: ['psetName', 'propName', 'operator?', 'value?'], tsReturn: 'this' },
91
+ limit: { paramNames: ['n'], tsReturn: 'this' },
92
+ offset: { paramNames: ['n'], tsReturn: 'this' },
93
+ toArray: { tsReturn: 'EntityData[]' },
94
+ first: { tsReturn: 'EntityData | null' },
95
+ count: { tsReturn: 'number' },
96
+ refs: { tsReturn: 'EntityRef[]' },
97
+ },
98
+ };
99
+ /**
100
+ * Own value-function property names on a prototype, minus the constructor,
101
+ * plus getters whose value is itself callable (e.g. `BimContext.prototype.on`,
102
+ * a getter returning a bound subscription function) — the CLI exposes those
103
+ * the same way as a method, so a filter that only checked `.value` silently
104
+ * dropped them from the dump (#3763 follow-up).
105
+ *
106
+ * A getter can't be classified from the prototype alone — invoking it there
107
+ * runs the getter with `this` bound to the bare prototype, not an instance,
108
+ * which is exactly the state `on`'s getter needs (`this._boundOn`, set in
109
+ * the constructor) to return the function rather than `undefined`. `instance`
110
+ * lets a caller supply a real object to invoke the getter against; without
111
+ * one, getters are skipped rather than guessed at.
112
+ */
113
+ function prototypeMethods(proto, instance) {
114
+ return Object.getOwnPropertyNames(proto).filter((name) => {
115
+ if (name === 'constructor')
116
+ return false;
117
+ const desc = Object.getOwnPropertyDescriptor(proto, name);
118
+ if (typeof desc?.value === 'function')
119
+ return true;
120
+ if (typeof desc?.get === 'function' && instance) {
121
+ return typeof instance[name] === 'function';
122
+ }
123
+ return false;
124
+ });
125
+ }
126
+ /**
127
+ * Replace the sandbox bridge's flat `query` namespace with the two shapes the
128
+ * CLI's `bim` object actually has.
129
+ *
130
+ * `NAMESPACE_SCHEMAS` describes the browser sandbox bridge, where
131
+ * `bim.query.properties(ref)` is a real method. `ifc-lite run` / `ifc-lite eval`
132
+ * hand scripts a raw `BimContext` instead: `query()` starts a builder and
133
+ * `properties`, `quantities`, `relationships` and ~19 siblings sit at the top
134
+ * level of `bim`. Emitting the bridge shape here made every `bim.query.X(...)`
135
+ * call an agent copied out of `ifc-lite schema` throw a TypeError (#3763).
136
+ *
137
+ * Method lists are reflected off `BimContext.prototype` and
138
+ * `QueryBuilder.prototype` — the objects `run`/`eval` construct — rather than
139
+ * transcribed, so this cannot drift from the runtime. Params and return types
140
+ * come from `RUNTIME_METHOD_SIGNATURES`, not the bridge schema: the bridge
141
+ * describes its own (different) call shape, and copying its `paramNames` /
142
+ * `tsReturn` here just relabelled the wrong signature (#3763 follow-up).
143
+ *
144
+ * The bridge's `query` namespace (`bridgeQuery` below) is a flat list of the
145
+ * same ~20 entity-lookup methods that sit at the top level of `bim`
146
+ * (`entity`, `properties`, `quantities`, ...). That is the namespace those
147
+ * methods belong to on the bridge, and it is only ever used as a `doc` /
148
+ * `llmSemantics` fallback for the `bim` prototype. It is never consulted for
149
+ * the `query` builder-chain prototype: `QueryBuilder`'s `byType`/`where`/
150
+ * `limit`/… have no counterpart there (the bridge runs a whole chain
151
+ * synchronously instead of building one), so reading `bridgeMethods` by bare
152
+ * name for that prototype could silently attach an unrelated bridge method's
153
+ * doc to a same-named builder method. `RUNTIME_METHOD_DOCS.query` documents
154
+ * every builder method already, so restricting the fallback to `bim` needs
155
+ * no "no entry" carve-out.
156
+ */
157
+ function withRuntimeQueryShape(schemas) {
158
+ const bridgeQuery = schemas.find((ns) => ns?.name === 'query');
159
+ const bridgeMethods = new Map((bridgeQuery?.methods ?? []).map((m) => [m.name, m]));
160
+ const describe = (proto) => (name) => {
161
+ const fromBridge = proto === 'bim' ? bridgeMethods.get(name) : undefined;
162
+ const signature = RUNTIME_METHOD_SIGNATURES[proto][name];
163
+ if (!signature) {
164
+ // A method exists on the runtime prototype but nobody transcribed its
165
+ // signature into RUNTIME_METHOD_SIGNATURES — fail loudly rather than
166
+ // fall back to the bridge's (differently shaped) entry, so a new
167
+ // BimContext/QueryBuilder method cannot ship mislabelled (#3763 follow-up).
168
+ throw new Error(`RUNTIME_METHOD_SIGNATURES.${proto} has no entry for '${name}' — add its ` +
169
+ `paramNames/tsReturn, transcribed from packages/sdk/src/context.ts or ` +
170
+ `packages/sdk/src/namespaces/query.ts.`);
171
+ }
172
+ return {
173
+ doc: RUNTIME_METHOD_DOCS[proto][name] ?? fromBridge?.doc ?? name,
174
+ name,
175
+ paramNames: signature.paramNames,
176
+ tsReturn: signature.tsReturn,
177
+ llmSemantics: fromBridge?.llmSemantics,
178
+ };
179
+ };
180
+ // Constructed only to invoke the `on` getter against real instance state
181
+ // (see `prototypeMethods`) — no backend method is called during
182
+ // construction or by this dump.
183
+ const bimInstance = new BimContext({ backend: {} });
184
+ return [
185
+ {
186
+ name: 'bim',
187
+ doc: 'Top-level methods on the `bim` object (call as bim.<method>(...))',
188
+ methods: prototypeMethods(BimContext.prototype, bimInstance).map(describe('bim')),
189
+ },
190
+ {
191
+ name: 'query',
192
+ doc: 'Query builder chain — start it with bim.query()',
193
+ methods: prototypeMethods(QueryBuilder.prototype).map(describe('query')),
194
+ },
195
+ ...schemas.filter((ns) => ns?.name !== 'query'),
196
+ ];
197
+ }
11
198
  export async function schemaCommand(args) {
12
199
  const compact = hasFlag(args, '--compact');
13
200
  // Dynamically import the bridge schema to get tool definitions
@@ -41,7 +228,7 @@ export async function schemaCommand(args) {
41
228
  // opting out of error handling altogether. stdout stays pure JSON.
42
229
  process.exitCode = 1;
43
230
  }
44
- const output = schemas.map(ns => ({
231
+ const output = withRuntimeQueryShape(schemas).map(ns => ({
45
232
  namespace: ns.name,
46
233
  description: ns.doc,
47
234
  methods: ns.methods.map((m) => {
@@ -74,22 +261,10 @@ function getStaticSchema() {
74
261
  { name: 'activeId', doc: 'Get active model ID' },
75
262
  ],
76
263
  },
77
- {
78
- name: 'query', doc: 'Query entities',
79
- methods: [
80
- { name: 'all', doc: 'Get all entities' },
81
- { name: 'byType', doc: 'Filter by IFC type', paramNames: ['...types'] },
82
- { name: 'entity', doc: 'Get single entity', paramNames: ['modelId', 'expressId'] },
83
- { name: 'attributes', doc: 'Entity IFC attributes', paramNames: ['entity'] },
84
- { name: 'properties', doc: 'Property sets', paramNames: ['entity'] },
85
- { name: 'quantities', doc: 'Quantity sets', paramNames: ['entity'] },
86
- { name: 'classifications', doc: 'Classification references', paramNames: ['entity'] },
87
- { name: 'materials', doc: 'Material assignments', paramNames: ['entity'] },
88
- { name: 'typeProperties', doc: 'Type-level properties', paramNames: ['entity'] },
89
- { name: 'documents', doc: 'Linked documents', paramNames: ['entity'] },
90
- { name: 'relationships', doc: 'Structural relationships', paramNames: ['entity'] },
91
- ],
92
- },
264
+ // No `query` entry: `withRuntimeQueryShape` reflects the `bim` root and
265
+ // the query-builder chain off the SDK classes, on the fallback path too,
266
+ // so a hand-written copy here could only rot (and the one that used to
267
+ // live here documented the sandbox bridge's `bim.query.*`, #3763).
93
268
  {
94
269
  name: 'export', doc: 'Multi-format export',
95
270
  methods: [
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,3 @@
1
- /**
2
- * Pure aggregation helpers for `ifc-lite stats` — extracted so the KPI /
3
- * WWR / GFA math can be unit tested against a fake `bim` surface instead of
4
- * only through a real parsed IFC file. `statsCommand` in stats.ts wires
5
- * these to the SDK's `BimContext`.
6
- */
7
1
  export interface QuantitySet {
8
2
  name: string;
9
3
  quantities: Array<{
@@ -72,6 +66,22 @@ export declare function computeWindowWallRatio(totalWindowArea: number, exterior
72
66
  export declare function computeGrossFloorArea<R>(bim: QuantityBim<R>, storeys: Array<{
73
67
  ref: R;
74
68
  }>, fallbackTotalFloorArea: number): number;
69
+ /**
70
+ * Distinct, display-ready storey names: blank/whitespace-only Names
71
+ * (`IFCBUILDINGSTOREY('...','',...)`) are dropped, same as a genuinely
72
+ * absent one, rather than surfacing as a blank entry in the storey list.
73
+ */
74
+ export declare function computeStoreyNames(storeys: Array<{
75
+ name?: string | null;
76
+ }>): string[];
77
+ /**
78
+ * The first `IfcBuilding`'s display name, or `'(unnamed)'` when absent OR
79
+ * blank/whitespace-only — `?? '(unnamed)'` alone only falls through on
80
+ * null/undefined, so a present-but-blank `Name` was returned verbatim.
81
+ */
82
+ export declare function computeBuildingName(buildings: Array<{
83
+ name?: string | null;
84
+ }>): string;
75
85
  export interface MaterialSummaryEntry {
76
86
  name: string;
77
87
  count: number;
@@ -92,6 +102,21 @@ export interface MaterialsBim<R = unknown> extends QuantityBim<R> {
92
102
  export declare function computeMaterialSummary<R>(bim: MaterialsBim<R>, elements: Array<{
93
103
  ref: R;
94
104
  }>, round: (n: number) => number): MaterialSummaryEntry[];
105
+ /**
106
+ * Scope an unfiltered `bim.query().toArray()` result down to physical building
107
+ * elements, for the material summary and validation stats. `bim.query()` with
108
+ * no type filter answers with every `IfcObjectDefinition` occurrence, so
109
+ * spatial containers, groupings and drafting annotations would otherwise inflate
110
+ * the material summary and the `unnamedElements`/`duplicateGlobalIds` counts (an
111
+ * `IfcAnnotation` dimension line never carries a Name and is not a defect).
112
+ *
113
+ * Excluding rather than testing for `IfcElement` is deliberate: a positive test
114
+ * would also drop `IfcGrid`, `IfcPort` and the structural-analysis items, which
115
+ * this fix has no opinion about — they stay counted exactly as before.
116
+ */
117
+ export declare function filterBuildingElements<T extends {
118
+ type: string;
119
+ }>(entities: T[]): T[];
95
120
  export interface ValidationSummary {
96
121
  duplicateGlobalIds: number;
97
122
  unnamedElements: number;
@@ -1 +1 @@
1
- {"version":3,"file":"stats-aggregation.d.ts","sourceRoot":"","sources":["../../src/commands/stats-aggregation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats-aggregation.d.ts","sourceRoot":"","sources":["../../src/commands/stats-aggregation.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,WAAW,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,WAAW,EAAE,CAAC;CACvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAa9F;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAY5G;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EACpC,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CAAC,GACvB,aAAa,CA2Bf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAGvH;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CAAC,EAC1B,sBAAsB,EAAE,MAAM,GAC7B,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,EAAE,CAErF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAAG,MAAM,CAEtF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC/D,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK;QAAE,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,CAAC;CAC5G;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,EACpB,QAAQ,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CAAC,EAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC3B,oBAAoB,EAAE,CAuCxB;AAoBD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CASrF;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,iBAAiB,CAS5G"}
@@ -1,6 +1,15 @@
1
1
  /* This Source Code Form is subject to the terms of the Mozilla Public
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
+ /**
5
+ * Pure aggregation helpers for `ifc-lite stats` — extracted so the KPI /
6
+ * WWR / GFA math can be unit tested against a fake `bim` surface instead of
7
+ * only through a real parsed IFC file. `statsCommand` in stats.ts wires
8
+ * these to the SDK's `BimContext`.
9
+ */
10
+ import { getInheritanceChainAcrossSchemas } from '@ifc-lite/parser';
11
+ import { findPropertyInSets } from '@ifc-lite/query';
12
+ import { firstNonBlank, isBlank } from '../output.js';
4
13
  /**
5
14
  * Sum a named quantity across every quantity set on every element ref,
6
15
  * adding up all matches ("Gross" and "Net" names given as alternatives —
@@ -29,14 +38,10 @@ export function sumQuantity(bim, refs, quantityNames) {
29
38
  /** Read a single property's value out of a named property set, or undefined. */
30
39
  export function getPropertyValue(bim, ref, psetName, propName) {
31
40
  try {
32
- const psets = bim.properties(ref);
33
- for (const pset of psets) {
34
- if (pset.name === psetName) {
35
- const prop = pset.properties?.find(p => p.name === propName);
36
- if (prop)
37
- return prop.value;
38
- }
39
- }
41
+ const psets = bim.properties(ref).filter((pset) => pset.properties !== undefined);
42
+ const prop = findPropertyInSets(psets, psetName, propName);
43
+ if (prop)
44
+ return prop.value;
40
45
  }
41
46
  catch {
42
47
  // Property not available
@@ -101,6 +106,22 @@ export function computeGrossFloorArea(bim, storeys, fallbackTotalFloorArea) {
101
106
  const grossFloorArea = sumQuantity(bim, storeys.map(s => s.ref), ['GrossFloorArea']);
102
107
  return grossFloorArea === 0 ? fallbackTotalFloorArea : grossFloorArea;
103
108
  }
109
+ /**
110
+ * Distinct, display-ready storey names: blank/whitespace-only Names
111
+ * (`IFCBUILDINGSTOREY('...','',...)`) are dropped, same as a genuinely
112
+ * absent one, rather than surfacing as a blank entry in the storey list.
113
+ */
114
+ export function computeStoreyNames(storeys) {
115
+ return storeys.map(s => s.name).filter((name) => !isBlank(name));
116
+ }
117
+ /**
118
+ * The first `IfcBuilding`'s display name, or `'(unnamed)'` when absent OR
119
+ * blank/whitespace-only — `?? '(unnamed)'` alone only falls through on
120
+ * null/undefined, so a present-but-blank `Name` was returned verbatim.
121
+ */
122
+ export function computeBuildingName(buildings) {
123
+ return firstNonBlank(buildings[0]?.name) ?? '(unnamed)';
124
+ }
104
125
  /**
105
126
  * Per-material element count and summed Gross/NetVolume, sorted by element
106
127
  * count descending (most common material first).
@@ -112,16 +133,25 @@ export function computeMaterialSummary(bim, elements, round) {
112
133
  const mat = bim.materials(e.ref);
113
134
  const first = mat?.materials?.[0];
114
135
  const firstName = typeof first === 'string' ? first : first?.name;
115
- const matName = firstName ?? mat?.name;
136
+ // A whitespace-only name (`IFCMATERIAL(' ',$,$)`) is falsy-but-truthy
137
+ // — a bare `!matName` guard on `firstName ?? mat?.name` let it through
138
+ // as a whitespace-string map key instead of skipping it like a
139
+ // genuinely blank/absent one.
140
+ const matName = firstNonBlank(firstName, mat?.name);
116
141
  if (!matName)
117
142
  continue;
118
143
  materialCounts.set(matName, (materialCounts.get(matName) ?? 0) + 1);
144
+ // One volume per element, same single-slot rule as `aggregateWalls`'s
145
+ // wallVolume: Gross/Net are alternative names for the same slot, and a
146
+ // second IfcElementQuantity set on the same element (e.g. a
147
+ // vendor-specific set alongside the standard Qto_ set) restates the same
148
+ // physical volume rather than adding to it.
119
149
  const qsets = bim.quantities(e.ref);
120
- for (const qset of qsets) {
150
+ qsetLoop: for (const qset of qsets) {
121
151
  for (const q of qset.quantities) {
122
152
  if (q.name === 'GrossVolume' || q.name === 'NetVolume') {
123
153
  materialVolumes.set(matName, (materialVolumes.get(matName) ?? 0) + (Number(q.value) || 0));
124
- break;
154
+ break qsetLoop;
125
155
  }
126
156
  }
127
157
  }
@@ -134,6 +164,44 @@ export function computeMaterialSummary(bim, elements, round) {
134
164
  volume: round(materialVolumes.get(name) ?? 0),
135
165
  }));
136
166
  }
167
+ /**
168
+ * Supertypes that mark an entity as not a physical building element. Matched
169
+ * against the whole inheritance chain, so every leaf is covered without a hand
170
+ * list: `IfcSpatialElement`/`IfcSpatialStructureElement` subsume the containers
171
+ * and every IFC4X3 facility-part leaf (`IfcExternalSpatialElement`,
172
+ * `IfcMarinePart`, ...), `IfcGroup` subsumes `IfcZone`/`IfcSystem`/
173
+ * `IfcBuiltSystem`/..., `IfcContext` covers `IfcProject`, and `IfcAnnotation`
174
+ * matches itself. Both spatial supertypes are named because IFC2X3 has no
175
+ * `IfcSpatialElement` — `IfcSpatialStructureElement` descends straight from
176
+ * `IfcProduct` there.
177
+ */
178
+ const NON_ELEMENT_SUPERTYPES = new Set([
179
+ 'IfcSpatialElement', 'IfcSpatialStructureElement',
180
+ 'IfcGroup', 'IfcContext', 'IfcAnnotation',
181
+ ]);
182
+ const nonElementByType = new Map();
183
+ /**
184
+ * Scope an unfiltered `bim.query().toArray()` result down to physical building
185
+ * elements, for the material summary and validation stats. `bim.query()` with
186
+ * no type filter answers with every `IfcObjectDefinition` occurrence, so
187
+ * spatial containers, groupings and drafting annotations would otherwise inflate
188
+ * the material summary and the `unnamedElements`/`duplicateGlobalIds` counts (an
189
+ * `IfcAnnotation` dimension line never carries a Name and is not a defect).
190
+ *
191
+ * Excluding rather than testing for `IfcElement` is deliberate: a positive test
192
+ * would also drop `IfcGrid`, `IfcPort` and the structural-analysis items, which
193
+ * this fix has no opinion about — they stay counted exactly as before.
194
+ */
195
+ export function filterBuildingElements(entities) {
196
+ return entities.filter(e => {
197
+ let nonElement = nonElementByType.get(e.type);
198
+ if (nonElement === undefined) {
199
+ nonElement = getInheritanceChainAcrossSchemas(e.type).some(a => NON_ELEMENT_SUPERTYPES.has(a));
200
+ nonElementByType.set(e.type, nonElement);
201
+ }
202
+ return !nonElement;
203
+ });
204
+ }
137
205
  /**
138
206
  * Model-health checks: how many GlobalIds are duplicated (a count of
139
207
  * *offending IDs*, not of duplicate rows — three elements sharing one
@@ -1 +1 @@
1
- {"version":3,"file":"stats-aggregation.js","sourceRoot":"","sources":["../../src/commands/stats-aggregation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats-aggregation.js","sourceRoot":"","sources":["../../src/commands/stats-aggregation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAsBA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuJhE"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAyBA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuJhE"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { createHeadlessContext } from '../loader.js';
11
11
  import { printJson, hasFlag, fatal } from '../output.js';
12
- import { aggregateWalls, computeWindowWallRatio, computeGrossFloorArea, computeMaterialSummary, computeValidation, sumQuantity, } from './stats-aggregation.js';
12
+ import { aggregateWalls, computeWindowWallRatio, computeGrossFloorArea, computeMaterialSummary, computeValidation, filterBuildingElements, computeStoreyNames, computeBuildingName, sumQuantity, } from './stats-aggregation.js';
13
13
  export async function statsCommand(args) {
14
14
  const filePath = args.find(a => !a.startsWith('-'));
15
15
  if (!filePath)
@@ -21,10 +21,10 @@ export async function statsCommand(args) {
21
21
  const entityCount = store.entityCount;
22
22
  // Storeys
23
23
  const storeys = bim.storeys();
24
- const storeyNames = storeys.map((s) => s.name).filter(Boolean);
24
+ const storeyNames = computeStoreyNames(storeys);
25
25
  // Building name
26
26
  const buildings = bim.query().byType('IfcBuilding').toArray();
27
- const buildingName = buildings[0]?.name ?? '(unnamed)';
27
+ const buildingName = computeBuildingName(buildings);
28
28
  // Element counts by type
29
29
  const ELEMENT_TYPES = [
30
30
  'IfcWall', 'IfcSlab', 'IfcDoor', 'IfcWindow', 'IfcColumn', 'IfcBeam',
@@ -61,7 +61,7 @@ export async function statsCommand(args) {
61
61
  totalVolume += sumQuantity(bim, refs, ['GrossVolume', 'NetVolume']);
62
62
  }
63
63
  // Material summary with volumes
64
- const allBuildingElements = bim.query().toArray();
64
+ const allBuildingElements = filterBuildingElements(bim.query().toArray());
65
65
  const materialSummary = computeMaterialSummary(bim, allBuildingElements, round);
66
66
  // Validation checks
67
67
  const { duplicateGlobalIds, unnamedElements } = computeValidation(allBuildingElements);
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
@@ -42,14 +42,17 @@ interface DanglingReference {
42
42
  * out none of the ten at all. `expandTypes` is the same expansion every
43
43
  * `byType()` backend uses, so these rules and a `byType('IfcWall')` query
44
44
  * cannot disagree about what counts as a wall.
45
+ * Which is why they are computed PER STORE, not once at module load:
46
+ * `expandTypes` reads the model's own `schemaVersion`, and a list frozen at the
47
+ * IFC4 answer counts records on an IFC2X3 or IFC4X3 file that `byType` does not.
45
48
  */
46
49
  export declare const NAMED_ELEMENT_BASE_TYPES: readonly string[];
47
50
  /** @see NAMED_ELEMENT_BASE_TYPES */
48
51
  export declare const QUANTIFIABLE_BASE_TYPES: readonly string[];
49
- /** `NAMED_ELEMENT_BASE_TYPES` plus every subtype the schema declares under one. */
50
- export declare const NAMED_ELEMENT_TYPES: readonly string[];
51
- /** `QUANTIFIABLE_BASE_TYPES` plus every subtype the schema declares under one. */
52
- export declare const QUANTIFIABLE_TYPES: readonly string[];
52
+ /** `NAMED_ELEMENT_BASE_TYPES` plus every subtype this store's schema declares under one. */
53
+ export declare const namedElementTypes: (schemaVersion: string | undefined) => readonly string[];
54
+ /** `QUANTIFIABLE_BASE_TYPES` plus every subtype this store's schema declares under one. */
55
+ export declare const quantifiableTypes: (schemaVersion: string | undefined) => readonly string[];
53
56
  /**
54
57
  * Walk every indexed entity record and collect `#N` references whose target
55
58
  * does not exist in the file (rule `reference-integrity`). Uses the parsed