@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
@@ -1 +1 @@
1
- {"version":3,"file":"query-aggregation.d.ts","sourceRoot":"","sources":["../../src/commands/query-aggregation.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA2CrE,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CA8ClG"}
1
+ {"version":3,"file":"query-aggregation.d.ts","sourceRoot":"","sources":["../../src/commands/query-aggregation.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA2CrE,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBxF;AAED,qGAAqG;AACrG,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAuBrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CA4ClG"}
@@ -5,6 +5,7 @@
5
5
  * Aggregation utilities for query command — quantity lookup, sorting,
6
6
  * and standard QTO maps.
7
7
  */
8
+ import { findPropertyInSets, findQuantityInSets } from '@ifc-lite/query';
8
9
  /**
9
10
  * Standard IFC quantity set definitions — maps entity type to its standard Qto_ sets
10
11
  * and the quantities within each set. Used for disambiguation warnings.
@@ -60,12 +61,74 @@ export function getQuantityValue(bim, ref, quantityName) {
60
61
  const qsets = bim.quantities(ref);
61
62
  for (const qset of qsets) {
62
63
  for (const q of qset.quantities) {
63
- if (q.name === quantityName)
64
- return Number(q.value) || 0;
64
+ if (q.name === quantityName) {
65
+ // `Number(x) || 0` only catches NaN (an unparseable value): an
66
+ // extreme STEP REAL literal (e.g. 1.0E400) parses to Infinity
67
+ // without erroring at the decode boundary, and `Number(Infinity) ||
68
+ // 0` stays Infinity because Infinity is truthy. Left uncaught, that
69
+ // one entity poisons every downstream sum/avg/min/max over the
70
+ // whole result set. Number.isFinite catches NaN and both infinities
71
+ // alike, so a present-but-non-finite value is treated the same as
72
+ // the existing present-but-unparseable case: substituted with 0.
73
+ const n = Number(q.value);
74
+ return Number.isFinite(n) ? n : 0;
75
+ }
65
76
  }
66
77
  }
67
78
  return null;
68
79
  }
80
+ /**
81
+ * Reduce a list of numbers to a single sum/avg/min/max, skipping every
82
+ * non-finite entry (`Infinity`, `-Infinity`, `NaN`) so one poisoned value can
83
+ * neither dominate a min/max nor turn a sum into `NaN`. Returns `null` when no
84
+ * finite value was seen (an empty list, or one that is all non-finite), which
85
+ * the caller renders as a blank cell / `null` rather than a fabricated `0`.
86
+ *
87
+ * This is the single numeric core `query --group-by`'s aggregation mode
88
+ * (`outputGroupBy` in `query-output.ts`) and `schedule --subtotals`
89
+ * (`schedule-aggregate.ts`) share, so the two cannot drift from each other.
90
+ *
91
+ * It is NOT what protects the flat, ungrouped `query --sum/--avg/--min/--max`
92
+ * (`outputSum`/`outputAggregation`) from a poisoned value — those read
93
+ * straight from `getQuantityValue`, which already substitutes `0` for a
94
+ * non-finite value at the source, before this function (or its caller) ever
95
+ * sees it. `outputGroupBy` calls `getQuantityValue` too, so by the time its
96
+ * values reach `aggregateFinite` here they have ALREADY been zeroed, not
97
+ * dropped. `schedule-aggregate.ts`'s `computeValues` pre-filters the same
98
+ * way with its own `cellToNumber` (also `Number.isFinite`-guarded) before
99
+ * ever building the array passed in here. In both of today's call sites
100
+ * this function's own `!Number.isFinite(v)` guard is consequently
101
+ * unreachable in practice — a defence in depth, exercised directly by this
102
+ * function's own unit tests, not currently by either caller's inputs.
103
+ */
104
+ export function aggregateFinite(values, mode) {
105
+ let sum = 0;
106
+ let count = 0;
107
+ let min = Infinity;
108
+ let max = -Infinity;
109
+ for (const v of values) {
110
+ if (!Number.isFinite(v))
111
+ continue;
112
+ sum += v;
113
+ count++;
114
+ if (v < min)
115
+ min = v;
116
+ if (v > max)
117
+ max = v;
118
+ }
119
+ if (count === 0)
120
+ return null;
121
+ switch (mode) {
122
+ case 'sum':
123
+ return sum;
124
+ case 'avg':
125
+ return sum / count;
126
+ case 'min':
127
+ return min;
128
+ case 'max':
129
+ return max;
130
+ }
131
+ }
69
132
  /**
70
133
  * F7: Sort entities by quantity, attribute, or property value.
71
134
  * Supports: quantity names, entity attributes (name/type/globalId), PsetName.PropName
@@ -92,14 +155,12 @@ export function sortEntities(entities, sortBy, descending, bim) {
92
155
  const [psetName, propName] = sortBy.split('.', 2);
93
156
  const getVal = (e) => {
94
157
  const props = bim.properties(e.ref);
95
- const pset = props.find((p) => p.name === psetName);
96
- const prop = pset?.properties?.find((p) => p.name === propName);
158
+ const prop = findPropertyInSets(props, psetName, propName);
97
159
  if (prop?.value != null)
98
160
  return prop.value;
99
161
  // Also check quantity sets
100
162
  const qsets = bim.quantities(e.ref);
101
- const qset = qsets.find((q) => q.name === psetName);
102
- const qty = qset?.quantities?.find((q) => q.name === propName);
163
+ const qty = findQuantityInSets(qsets, psetName, propName);
103
164
  return qty?.value ?? null;
104
165
  };
105
166
  valA = getVal(a);
@@ -1 +1 @@
1
- {"version":3,"file":"query-aggregation.js","sourceRoot":"","sources":["../../src/commands/query-aggregation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-aggregation.js","sourceRoot":"","sources":["../../src/commands/query-aggregation.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,12 @@ export declare function outputSum(entities: any[], quantityName: string, bim: an
7
7
  */
8
8
  export declare function outputAggregation(entities: any[], quantityName: string, mode: 'avg' | 'min' | 'max', bim: any, jsonOutput: boolean): void;
9
9
  export declare function outputGroupBy(entities: any[], groupByKey: string, sumQuantity: string | undefined, bim: any, jsonOutput: boolean, groupLimit?: number, aggMode?: 'sum' | 'avg' | 'min' | 'max'): void;
10
+ /**
11
+ * B6/F8: `--unique` distinct-value counts for `material`, `storey`, `type`,
12
+ * or a `PsetName.PropName` path. Pulled out of `queryCommand` so the
13
+ * blank/whitespace-name handling (`firstNonBlank`) is unit-testable without
14
+ * a fixture model.
15
+ */
16
+ export declare function computeUniqueValues(entities: any[], uniqueProp: string, bim: any): Map<string, number>;
10
17
  export declare function outputEntities(entities: any[], args: string[], bim: any, jsonOutput: boolean): void;
11
18
  //# sourceMappingURL=query-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-output.d.ts","sourceRoot":"","sources":["../../src/commands/query-output.ts"],"names":[],"mappings":"AAYA,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,UAAiC,CAAC;AAElE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAMpE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAgGpG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAwDzI;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAqGrM;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAyCnG"}
1
+ {"version":3,"file":"query-output.d.ts","sourceRoot":"","sources":["../../src/commands/query-output.ts"],"names":[],"mappings":"AAaA,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,UAAiC,CAAC;AAElE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAMpE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAqGpG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAwDzI;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CA4FrM;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoCtG;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAyCnG"}
@@ -5,8 +5,9 @@
5
5
  * Output formatting functions for the query command — count, sum,
6
6
  * aggregation, group-by, table rendering, and JSON serialization.
7
7
  */
8
- import { printJson, formatTable, hasFlag, fatal } from '../output.js';
9
- import { getQuantityValue } from './query-aggregation.js';
8
+ import { findPropertyInSets } from '@ifc-lite/query';
9
+ import { printJson, formatTable, hasFlag, fatal, firstNonBlank } from '../output.js';
10
+ import { getQuantityValue, aggregateFinite } from './query-aggregation.js';
10
11
  /** Valid built-in grouping keys */
11
12
  export const VALID_GROUP_BY_KEYS = ['type', 'storey', 'material'];
12
13
  export function outputCount(count, jsonOutput) {
@@ -37,7 +38,12 @@ export function outputSum(entities, quantityName, bim, jsonOutput) {
37
38
  allQuantityNames.set(key, { qsetName: qset.name, count: 1 });
38
39
  }
39
40
  if (q.name === quantityName) {
40
- total += Number(q.value) || 0;
41
+ // Mirrors getQuantityValue in query-aggregation.ts: `Number(x) ||
42
+ // 0` lets a present-but-Infinite value through (Infinity is
43
+ // truthy), which would poison `total` for every other entity in
44
+ // the sum. Number.isFinite catches NaN and both infinities.
45
+ const n = Number(q.value);
46
+ total += Number.isFinite(n) ? n : 0;
41
47
  matched++;
42
48
  matchedQsets.add(qset.name);
43
49
  }
@@ -199,18 +205,19 @@ export function outputGroupBy(entities, groupByKey, sumQuantity, bim, jsonOutput
199
205
  }
200
206
  else if (groupByKey === 'storey') {
201
207
  const storey = bim.storey(e.ref);
202
- groupValue = storey?.name ?? '(no storey)';
208
+ groupValue = firstNonBlank(storey?.name) ?? '(no storey)';
203
209
  }
204
210
  else if (groupByKey === 'material') {
205
211
  const mat = bim.materials(e.ref);
206
- groupValue = mat?.materials?.[0] ?? mat?.name ?? '(no material)';
212
+ const first = mat?.materials?.[0];
213
+ const firstMatName = typeof first === 'string' ? first : first?.name;
214
+ groupValue = firstNonBlank(firstMatName, mat?.name) ?? '(no material)';
207
215
  }
208
216
  else if (groupByKey.includes('.')) {
209
217
  // PsetName.PropName
210
218
  const [psetName, propName] = groupByKey.split('.', 2);
211
219
  const props = bim.properties(e.ref);
212
- const pset = props.find((p) => p.name === psetName);
213
- const prop = pset?.properties?.find((p) => p.name === propName);
220
+ const prop = findPropertyInSets(props, psetName, propName);
214
221
  groupValue = prop?.value != null ? String(prop.value) : `(no ${propName})`;
215
222
  }
216
223
  else {
@@ -229,29 +236,14 @@ export function outputGroupBy(entities, groupByKey, sumQuantity, bim, jsonOutput
229
236
  const groupAgg = new Map();
230
237
  if (sumQuantity) {
231
238
  for (const [key, groupEntities] of groups) {
232
- let sum = 0;
233
- let count = 0;
234
- let minVal = Infinity;
235
- let maxVal = -Infinity;
239
+ const vals = [];
236
240
  for (const e of groupEntities) {
237
241
  const val = getQuantityValue(bim, e.ref, sumQuantity);
238
- if (val !== null) {
239
- sum += val;
240
- count++;
241
- if (val < minVal)
242
- minVal = val;
243
- if (val > maxVal)
244
- maxVal = val;
245
- }
242
+ if (val !== null)
243
+ vals.push(val);
246
244
  }
247
- if (mode === 'avg')
248
- groupAgg.set(key, count > 0 ? sum / count : 0);
249
- else if (mode === 'min')
250
- groupAgg.set(key, count > 0 ? minVal : 0);
251
- else if (mode === 'max')
252
- groupAgg.set(key, count > 0 ? maxVal : 0);
253
- else
254
- groupAgg.set(key, sum);
245
+ // Shared finite-guarded reduction; an empty group stays 0 here.
246
+ groupAgg.set(key, aggregateFinite(vals, mode) ?? 0);
255
247
  }
256
248
  }
257
249
  const modeLabel = mode === 'sum' ? 'sum' : mode;
@@ -299,6 +291,50 @@ export function outputGroupBy(entities, groupByKey, sumQuantity, bim, jsonOutput
299
291
  }
300
292
  }
301
293
  }
294
+ /**
295
+ * B6/F8: `--unique` distinct-value counts for `material`, `storey`, `type`,
296
+ * or a `PsetName.PropName` path. Pulled out of `queryCommand` so the
297
+ * blank/whitespace-name handling (`firstNonBlank`) is unit-testable without
298
+ * a fixture model.
299
+ */
300
+ export function computeUniqueValues(entities, uniqueProp, bim) {
301
+ const valueCounts = new Map();
302
+ if (uniqueProp === 'material') {
303
+ for (const e of entities) {
304
+ const mat = bim.materials(e.ref);
305
+ const first = mat?.materials?.[0];
306
+ const firstName = typeof first === 'string' ? first : first?.name;
307
+ const val = firstNonBlank(firstName, mat?.name) ?? '(no material)';
308
+ valueCounts.set(val, (valueCounts.get(val) ?? 0) + 1);
309
+ }
310
+ }
311
+ else if (uniqueProp === 'storey') {
312
+ for (const e of entities) {
313
+ const storey = bim.storey(e.ref);
314
+ const val = firstNonBlank(storey?.name) ?? '(no storey)';
315
+ valueCounts.set(val, (valueCounts.get(val) ?? 0) + 1);
316
+ }
317
+ }
318
+ else if (uniqueProp === 'type') {
319
+ for (const e of entities) {
320
+ valueCounts.set(e.type, (valueCounts.get(e.type) ?? 0) + 1);
321
+ }
322
+ }
323
+ else {
324
+ const dotIdx = uniqueProp.indexOf('.');
325
+ if (dotIdx <= 0)
326
+ fatal(`Invalid --unique path: "${uniqueProp}". Expected: PsetName.PropName, or one of: material, storey, type`);
327
+ const psetName = uniqueProp.slice(0, dotIdx);
328
+ const propName = uniqueProp.slice(dotIdx + 1);
329
+ for (const e of entities) {
330
+ const psets = bim.properties(e.ref);
331
+ const prop = findPropertyInSets(psets, psetName, propName);
332
+ const val = prop?.value != null ? String(prop.value) : '(no value)';
333
+ valueCounts.set(val, (valueCounts.get(val) ?? 0) + 1);
334
+ }
335
+ }
336
+ return valueCounts;
337
+ }
302
338
  export function outputEntities(entities, args, bim, jsonOutput) {
303
339
  const showProps = hasFlag(args, '--props');
304
340
  const showQuantities = hasFlag(args, '--quantities');
@@ -1 +1 @@
1
- {"version":3,"file":"query-output.js","sourceRoot":"","sources":["../../src/commands/query-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-output.js","sourceRoot":"","sources":["../../src/commands/query-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Resolve `--storey <filter>` to the set of expressIds of every entity
3
+ * directly contained in the matching storey/storeys.
4
+ *
5
+ * Resolution order:
6
+ * 1. An exact expressId match (unambiguous — expressIds are unique) wins
7
+ * outright and resolves to that single storey.
8
+ * 2. Otherwise, every storey with an exact Name match. A shared Name is the
9
+ * ambiguity this union exists for: the storeys are indistinguishable by
10
+ * the very key the user supplied, so all of them are meant.
11
+ * 3. Otherwise, the storeys whose Name contains the filter
12
+ * (case-insensitive) — but only when those matches all share ONE Name.
13
+ * A substring spanning differently named storeys ("Level" against
14
+ * "Level 1" and "Level 2") is a different situation: the names DO
15
+ * distinguish the storeys, the user just did not pick one. Unioning would
16
+ * silently merge storeys never asked for, and first-match would pick one
17
+ * by array order; both are wrong answers with exit 0, so this errors and
18
+ * lists the candidate names instead.
19
+ *
20
+ * Exits via `fatal()` (never returns) if no storey matches at all, or if the
21
+ * substring tier matches storeys with different Names.
22
+ */
23
+ export declare function resolveStoreyIds(bim: any, storeyFilter: string): Set<number>;
24
+ //# sourceMappingURL=query-storey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-storey.d.ts","sourceRoot":"","sources":["../../src/commands/query-storey.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CA8B5E"}
@@ -0,0 +1,71 @@
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
+ * `query --storey` resolution — extracted from `query.ts` (module-size
6
+ * ratchet) but otherwise unchanged behavior.
7
+ *
8
+ * IfcBuildingStorey.Name is not unique: two storeys legally share a Name as
9
+ * siblings under different buildings, or a malformed/federated file can
10
+ * duplicate a level name outright. Matching by GlobalId/expressId is
11
+ * unambiguous; matching by Name is not, so every storey with that Name is
12
+ * included rather than picking an arbitrary first match and silently
13
+ * dropping the rest (a same-named-storey element would otherwise vanish
14
+ * from the result depending on array order).
15
+ */
16
+ import { fatal } from '../output.js';
17
+ /**
18
+ * Resolve `--storey <filter>` to the set of expressIds of every entity
19
+ * directly contained in the matching storey/storeys.
20
+ *
21
+ * Resolution order:
22
+ * 1. An exact expressId match (unambiguous — expressIds are unique) wins
23
+ * outright and resolves to that single storey.
24
+ * 2. Otherwise, every storey with an exact Name match. A shared Name is the
25
+ * ambiguity this union exists for: the storeys are indistinguishable by
26
+ * the very key the user supplied, so all of them are meant.
27
+ * 3. Otherwise, the storeys whose Name contains the filter
28
+ * (case-insensitive) — but only when those matches all share ONE Name.
29
+ * A substring spanning differently named storeys ("Level" against
30
+ * "Level 1" and "Level 2") is a different situation: the names DO
31
+ * distinguish the storeys, the user just did not pick one. Unioning would
32
+ * silently merge storeys never asked for, and first-match would pick one
33
+ * by array order; both are wrong answers with exit 0, so this errors and
34
+ * lists the candidate names instead.
35
+ *
36
+ * Exits via `fatal()` (never returns) if no storey matches at all, or if the
37
+ * substring tier matches storeys with different Names.
38
+ */
39
+ export function resolveStoreyIds(bim, storeyFilter) {
40
+ const storeys = bim.storeys();
41
+ const byExpressId = storeys.find((s) => String(s.ref.expressId) === storeyFilter);
42
+ let matchedStoreys;
43
+ if (byExpressId) {
44
+ matchedStoreys = [byExpressId];
45
+ }
46
+ else {
47
+ const exactNameMatches = storeys.filter((s) => s.name === storeyFilter);
48
+ if (exactNameMatches.length > 0) {
49
+ matchedStoreys = exactNameMatches;
50
+ }
51
+ else {
52
+ matchedStoreys = storeys.filter((s) => s.name.toLowerCase().includes(storeyFilter.toLowerCase()));
53
+ const distinctNames = [...new Set(matchedStoreys.map((s) => s.name))];
54
+ if (distinctNames.length > 1) {
55
+ fatal(`Storey "${storeyFilter}" is ambiguous: it matches ${distinctNames.length} differently named storeys ` +
56
+ `(${distinctNames.join(', ')}). Use the exact storey name or an expressId.`);
57
+ }
58
+ }
59
+ }
60
+ if (matchedStoreys.length === 0) {
61
+ const names = storeys.map((s) => s.name).filter(Boolean).join(', ');
62
+ fatal(`Storey "${storeyFilter}" not found. Available: ${names || '(none)'}`);
63
+ }
64
+ const storeyIds = new Set();
65
+ for (const storey of matchedStoreys) {
66
+ for (const e of bim.contains(storey.ref))
67
+ storeyIds.add(e.ref.expressId);
68
+ }
69
+ return storeyIds;
70
+ }
71
+ //# sourceMappingURL=query-storey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-storey.js","sourceRoot":"","sources":["../../src/commands/query-storey.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAQ,EAAE,YAAoB;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,CAAC;IACvF,IAAI,cAAqB,CAAC;IAC1B,IAAI,WAAW,EAAE,CAAC;QAChB,cAAc,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QAC7E,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,cAAc,GAAG,gBAAgB,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACvG,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,CACH,WAAW,YAAY,8BAA8B,aAAa,CAAC,MAAM,6BAA6B;oBACpG,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,KAAK,CAAC,WAAW,YAAY,2BAA2B,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,32 +1,9 @@
1
+ import { applyWhereFilter, parseWhereFilter, compareValues, normalizeBooleanValue } from './where-filter.js';
2
+ export { applyWhereFilter, parseWhereFilter, compareValues, normalizeBooleanValue };
1
3
  /**
2
4
  * B9/F6: Auto-prefix Ifc for --type if user omits it.
3
5
  * Returns the corrected type string, or the original if already prefixed.
4
6
  */
5
7
  export declare function normalizeTypeName(typeStr: string): string;
6
- /**
7
- * Parse a --where filter string into psetName, propName, operator, value.
8
- * Supported formats:
9
- * PsetName.PropName=Value (equals)
10
- * PsetName.PropName!=Value (not equals)
11
- * PsetName.PropName>Value (greater than)
12
- * PsetName.PropName<Value (less than)
13
- * PsetName.PropName>=Value (greater or equal)
14
- * PsetName.PropName<=Value (less or equal)
15
- * PsetName.PropName~Value (contains)
16
- * PsetName.PropName (exists)
17
- */
18
- export declare function parseWhereFilter(filter: string): {
19
- psetName: string;
20
- propName: string;
21
- operator: string;
22
- value?: string;
23
- };
24
- /**
25
- * B3/F1: Apply --where filter to entities, searching both property sets AND quantity sets.
26
- * Falls back to quantity sets when a property set match is not found.
27
- */
28
- export declare function applyWhereFilter(entities: any[], parsed: ReturnType<typeof parseWhereFilter>, bim: any): any[];
29
- export declare function compareValues(actual: any, operator: string, expected: string | undefined): boolean;
30
- export declare function normalizeBooleanValue(value: unknown): unknown;
31
8
  export declare function queryCommand(args: string[]): Promise<void>;
32
9
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBzH;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CA0B9G;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAclG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoehE"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE7G,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWzD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8bhE"}