@ifc-lite/parser 9.2.0 → 9.5.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 (191) hide show
  1. package/README.md +31 -0
  2. package/dist/abort-error.d.ts +7 -0
  3. package/dist/abort-error.d.ts.map +1 -0
  4. package/dist/abort-error.js +17 -0
  5. package/dist/abort-error.js.map +1 -0
  6. package/dist/classification-overlay.d.ts +13 -0
  7. package/dist/classification-overlay.d.ts.map +1 -0
  8. package/dist/classification-overlay.js +65 -0
  9. package/dist/classification-overlay.js.map +1 -0
  10. package/dist/classification-resolver.d.ts +13 -9
  11. package/dist/classification-resolver.d.ts.map +1 -1
  12. package/dist/classification-resolver.js +109 -74
  13. package/dist/classification-resolver.js.map +1 -1
  14. package/dist/columnar-parser-attributes.d.ts +1 -1
  15. package/dist/columnar-parser-attributes.d.ts.map +1 -1
  16. package/dist/columnar-parser-attributes.js +16 -6
  17. package/dist/columnar-parser-attributes.js.map +1 -1
  18. package/dist/columnar-parser-root-attributes.d.ts +15 -1
  19. package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
  20. package/dist/columnar-parser-root-attributes.js +26 -11
  21. package/dist/columnar-parser-root-attributes.js.map +1 -1
  22. package/dist/columnar-parser.d.ts +9 -8
  23. package/dist/columnar-parser.d.ts.map +1 -1
  24. package/dist/columnar-parser.js +11 -23
  25. package/dist/columnar-parser.js.map +1 -1
  26. package/dist/current-occurrence-quantities.d.ts +13 -0
  27. package/dist/current-occurrence-quantities.d.ts.map +1 -0
  28. package/dist/current-occurrence-quantities.js +69 -0
  29. package/dist/current-occurrence-quantities.js.map +1 -0
  30. package/dist/current-project-units.d.ts +11 -0
  31. package/dist/current-project-units.d.ts.map +1 -0
  32. package/dist/current-project-units.js +41 -0
  33. package/dist/current-project-units.js.map +1 -0
  34. package/dist/current-type-quantities.d.ts +13 -0
  35. package/dist/current-type-quantities.d.ts.map +1 -0
  36. package/dist/current-type-quantities.js +274 -0
  37. package/dist/current-type-quantities.js.map +1 -0
  38. package/dist/data-store-transport.d.ts +1 -0
  39. package/dist/data-store-transport.d.ts.map +1 -1
  40. package/dist/data-store-transport.js +2 -0
  41. package/dist/data-store-transport.js.map +1 -1
  42. package/dist/document-resolver.d.ts +23 -0
  43. package/dist/document-resolver.d.ts.map +1 -0
  44. package/dist/document-resolver.js +122 -0
  45. package/dist/document-resolver.js.map +1 -0
  46. package/dist/effective-entity-record.d.ts +3 -2
  47. package/dist/effective-entity-record.d.ts.map +1 -1
  48. package/dist/effective-entity-record.js +5 -5
  49. package/dist/effective-entity-record.js.map +1 -1
  50. package/dist/effective-metadata-record.d.ts +23 -0
  51. package/dist/effective-metadata-record.d.ts.map +1 -0
  52. package/dist/effective-metadata-record.js +50 -0
  53. package/dist/effective-metadata-record.js.map +1 -0
  54. package/dist/entity-scanner.d.ts +6 -8
  55. package/dist/entity-scanner.d.ts.map +1 -1
  56. package/dist/entity-scanner.js +26 -13
  57. package/dist/entity-scanner.js.map +1 -1
  58. package/dist/ifc-schema.d.ts +2 -1
  59. package/dist/ifc-schema.d.ts.map +1 -1
  60. package/dist/ifc-schema.js +4 -3
  61. package/dist/ifc-schema.js.map +1 -1
  62. package/dist/index.d.ts +8 -11
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +7 -10
  65. package/dist/index.js.map +1 -1
  66. package/dist/length-unit-source.d.ts +25 -0
  67. package/dist/length-unit-source.d.ts.map +1 -0
  68. package/dist/length-unit-source.js +14 -0
  69. package/dist/length-unit-source.js.map +1 -0
  70. package/dist/material-definitions.d.ts +10 -0
  71. package/dist/material-definitions.d.ts.map +1 -0
  72. package/dist/material-definitions.js +224 -0
  73. package/dist/material-definitions.js.map +1 -0
  74. package/dist/material-overlay.d.ts +38 -0
  75. package/dist/material-overlay.d.ts.map +1 -0
  76. package/dist/material-overlay.js +146 -0
  77. package/dist/material-overlay.js.map +1 -0
  78. package/dist/material-properties-extractor.d.ts +2 -11
  79. package/dist/material-properties-extractor.d.ts.map +1 -1
  80. package/dist/material-properties-extractor.js +21 -38
  81. package/dist/material-properties-extractor.js.map +1 -1
  82. package/dist/material-resolver.d.ts +6 -4
  83. package/dist/material-resolver.d.ts.map +1 -1
  84. package/dist/material-resolver.js +176 -386
  85. package/dist/material-resolver.js.map +1 -1
  86. package/dist/measure-unit-scale.d.ts +2 -0
  87. package/dist/measure-unit-scale.d.ts.map +1 -1
  88. package/dist/measure-unit-scale.js +7 -1
  89. package/dist/measure-unit-scale.js.map +1 -1
  90. package/dist/metadata-edit-value.d.ts +4 -0
  91. package/dist/metadata-edit-value.d.ts.map +1 -0
  92. package/dist/metadata-edit-value.js +57 -0
  93. package/dist/metadata-edit-value.js.map +1 -0
  94. package/dist/native-metadata-public.d.ts +9 -0
  95. package/dist/native-metadata-public.d.ts.map +1 -0
  96. package/dist/native-metadata-public.js +12 -0
  97. package/dist/native-metadata-public.js.map +1 -0
  98. package/dist/occurrence-quantity-read-error.d.ts +7 -0
  99. package/dist/occurrence-quantity-read-error.d.ts.map +1 -0
  100. package/dist/occurrence-quantity-read-error.js +13 -0
  101. package/dist/occurrence-quantity-read-error.js.map +1 -0
  102. package/dist/on-demand-extractors.d.ts +3 -38
  103. package/dist/on-demand-extractors.d.ts.map +1 -1
  104. package/dist/on-demand-extractors.js +4 -184
  105. package/dist/on-demand-extractors.js.map +1 -1
  106. package/dist/parser-worker-trace.d.ts +18 -0
  107. package/dist/parser-worker-trace.d.ts.map +1 -0
  108. package/dist/parser-worker-trace.js +32 -0
  109. package/dist/parser-worker-trace.js.map +1 -0
  110. package/dist/parser.worker.d.ts.map +1 -1
  111. package/dist/parser.worker.js +34 -13
  112. package/dist/parser.worker.js.map +1 -1
  113. package/dist/project-units.d.ts +17 -4
  114. package/dist/project-units.d.ts.map +1 -1
  115. package/dist/project-units.js +104 -37
  116. package/dist/project-units.js.map +1 -1
  117. package/dist/property-complex-value.d.ts.map +1 -1
  118. package/dist/property-complex-value.js +1 -0
  119. package/dist/property-complex-value.js.map +1 -1
  120. package/dist/property-unit.d.ts +2 -0
  121. package/dist/property-unit.d.ts.map +1 -1
  122. package/dist/property-unit.js +4 -1
  123. package/dist/property-unit.js.map +1 -1
  124. package/dist/property-value-parser.d.ts +14 -1
  125. package/dist/property-value-parser.d.ts.map +1 -1
  126. package/dist/property-value-parser.js +42 -22
  127. package/dist/property-value-parser.js.map +1 -1
  128. package/dist/quantity-collect.d.ts +14 -2
  129. package/dist/quantity-collect.d.ts.map +1 -1
  130. package/dist/quantity-collect.js +19 -8
  131. package/dist/quantity-collect.js.map +1 -1
  132. package/dist/relationship-schema-slots.d.ts.map +1 -1
  133. package/dist/relationship-schema-slots.js +2 -1
  134. package/dist/relationship-schema-slots.js.map +1 -1
  135. package/dist/scan-worker-inline.d.ts.map +1 -1
  136. package/dist/scan-worker-inline.js +2 -1
  137. package/dist/scan-worker-inline.js.map +1 -1
  138. package/dist/schedule-extractor.d.ts +2 -1
  139. package/dist/schedule-extractor.d.ts.map +1 -1
  140. package/dist/schedule-extractor.js +11 -2
  141. package/dist/schedule-extractor.js.map +1 -1
  142. package/dist/schedule-serializer-builders.d.ts +7 -0
  143. package/dist/schedule-serializer-builders.d.ts.map +1 -1
  144. package/dist/schedule-serializer-builders.js +17 -17
  145. package/dist/schedule-serializer-builders.js.map +1 -1
  146. package/dist/schedule-serializer.d.ts +8 -3
  147. package/dist/schedule-serializer.d.ts.map +1 -1
  148. package/dist/schedule-serializer.js +36 -1
  149. package/dist/schedule-serializer.js.map +1 -1
  150. package/dist/schedule-task-products.d.ts +38 -0
  151. package/dist/schedule-task-products.d.ts.map +1 -0
  152. package/dist/schedule-task-products.js +69 -0
  153. package/dist/schedule-task-products.js.map +1 -0
  154. package/dist/schedule-types.d.ts +11 -1
  155. package/dist/schedule-types.d.ts.map +1 -1
  156. package/dist/schedule-types.js.map +1 -1
  157. package/dist/schema-entity-name.d.ts +14 -0
  158. package/dist/schema-entity-name.d.ts.map +1 -0
  159. package/dist/schema-entity-name.js +34 -0
  160. package/dist/schema-entity-name.js.map +1 -0
  161. package/dist/schema-exports.d.ts +7 -0
  162. package/dist/schema-exports.d.ts.map +1 -0
  163. package/dist/schema-exports.js +10 -0
  164. package/dist/schema-exports.js.map +1 -0
  165. package/dist/source-project-length-unit.d.ts +53 -0
  166. package/dist/source-project-length-unit.d.ts.map +1 -0
  167. package/dist/source-project-length-unit.js +201 -0
  168. package/dist/source-project-length-unit.js.map +1 -0
  169. package/dist/structural-extractor.js +2 -2
  170. package/dist/structural-extractor.js.map +1 -1
  171. package/dist/structural-load-extractor.d.ts +9 -3
  172. package/dist/structural-load-extractor.d.ts.map +1 -1
  173. package/dist/structural-load-extractor.js +26 -20
  174. package/dist/structural-load-extractor.js.map +1 -1
  175. package/dist/structural-step-values.d.ts +0 -9
  176. package/dist/structural-step-values.d.ts.map +1 -1
  177. package/dist/structural-step-values.js +13 -1
  178. package/dist/structural-step-values.js.map +1 -1
  179. package/dist/type-own-quantity-source.d.ts +37 -0
  180. package/dist/type-own-quantity-source.d.ts.map +1 -0
  181. package/dist/type-own-quantity-source.js +204 -0
  182. package/dist/type-own-quantity-source.js.map +1 -0
  183. package/dist/unit-extractor.d.ts +13 -0
  184. package/dist/unit-extractor.d.ts.map +1 -1
  185. package/dist/unit-extractor.js +32 -29
  186. package/dist/unit-extractor.js.map +1 -1
  187. package/dist/worker-parser.d.ts +7 -0
  188. package/dist/worker-parser.d.ts.map +1 -1
  189. package/dist/worker-parser.js +14 -16
  190. package/dist/worker-parser.js.map +1 -1
  191. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"on-demand-extractors.js","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"on-demand-extractors.js","sourceRoot":"","sources":["../src/on-demand-extractors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type TraceAttrs, type WorkerPhaseTrace } from '@ifc-lite/load-trace';
2
+ /**
3
+ * Parser-worker load-trace spans (#6979). `WorkerParser` enables them with
4
+ * `enableWorkerTrace` when the caller's load is traced and merges what comes
5
+ * back under its `parser.worker` span. The parse is one long handler and the
6
+ * host terminates the worker on `complete` / `error`, so `parser.worker.ts`
7
+ * flushes before posting either (and after `partial-store`).
8
+ *
9
+ * Spans: `parser.parse` (whole handler), `parser.entityIndexWait`,
10
+ * `parser.wasmInit`, one `columnar.<phase>` per `parseColumnar` progress
11
+ * phase, `parser.spatialReady.serialize` and `parser.transport.serialize`.
12
+ */
13
+ export declare function createParserWorkerTrace(): WorkerPhaseTrace;
14
+ /** `parseColumnar` progress phase -> span name (`building entities` -> `columnar.building-entities`); `complete` ends the last one. */
15
+ export declare function columnarPhaseSpan(phase: string): string | null;
16
+ /** Close the last phase and the `parser.parse` span, then post them: call BEFORE `complete` / `error`, which the host answers with `terminate()`. */
17
+ export declare function finishParseTrace(trace: WorkerPhaseTrace, parseSpan: number, attrs: TraceAttrs): void;
18
+ //# sourceMappingURL=parser-worker-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-worker-trace.d.ts","sourceRoot":"","sources":["../src/parser-worker-trace.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtG;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,CAK1D;AAED,uIAAuI;AACvI,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED,qJAAqJ;AACrJ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAIpG"}
@@ -0,0 +1,32 @@
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
+ import { createWorkerPhaseTrace } from '@ifc-lite/load-trace';
5
+ /**
6
+ * Parser-worker load-trace spans (#6979). `WorkerParser` enables them with
7
+ * `enableWorkerTrace` when the caller's load is traced and merges what comes
8
+ * back under its `parser.worker` span. The parse is one long handler and the
9
+ * host terminates the worker on `complete` / `error`, so `parser.worker.ts`
10
+ * flushes before posting either (and after `partial-store`).
11
+ *
12
+ * Spans: `parser.parse` (whole handler), `parser.entityIndexWait`,
13
+ * `parser.wasmInit`, one `columnar.<phase>` per `parseColumnar` progress
14
+ * phase, `parser.spatialReady.serialize` and `parser.transport.serialize`.
15
+ */
16
+ export function createParserWorkerTrace() {
17
+ return createWorkerPhaseTrace({
18
+ post: (message) => self.postMessage(message),
19
+ endpoint: () => self,
20
+ });
21
+ }
22
+ /** `parseColumnar` progress phase -> span name (`building entities` -> `columnar.building-entities`); `complete` ends the last one. */
23
+ export function columnarPhaseSpan(phase) {
24
+ return phase === 'complete' ? null : `columnar.${phase.trim().replace(/\s+/g, '-')}`;
25
+ }
26
+ /** Close the last phase and the `parser.parse` span, then post them: call BEFORE `complete` / `error`, which the host answers with `terminate()`. */
27
+ export function finishParseTrace(trace, parseSpan, attrs) {
28
+ trace.step(null);
29
+ trace.end(parseSpan, attrs);
30
+ trace.flush();
31
+ }
32
+ //# sourceMappingURL=parser-worker-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-worker-trace.js","sourceRoot":"","sources":["../src/parser-worker-trace.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,sBAAsB,EAA0C,MAAM,sBAAsB,CAAC;AAEtG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,sBAAsB,CAAC;QAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAE,IAA0B,CAAC,WAAW,CAAC,OAAO,CAAC;QACnE,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAyB;KAC1C,CAAC,CAAC;AACL,CAAC;AAED,uIAAuI;AACvI,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,qJAAqJ;AACrJ,MAAM,UAAU,gBAAgB,CAAC,KAAuB,EAAE,SAAiB,EAAE,KAAiB;IAC5F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.worker.d.ts","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAI9F,gFAAgF;AAChF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,uFAAuF;AACvF,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,kBAAkB,CAAC;IACzB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,uCAAuC;AACvC,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAID,kFAAkF;AAClF,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wFAAwF;AACxF,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,gCAAgC;AAChC,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB;;;uEAGmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,6BAA6B,GAC7B,+BAA+B,GAC/B,2BAA2B,GAC3B,wBAAwB,CAAC"}
1
+ {"version":3,"file":"parser.worker.d.ts","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAM9F,gFAAgF;AAChF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,uFAAuF;AACvF,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,kBAAkB,CAAC;IACzB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,uCAAuC;AACvC,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAKD,kFAAkF;AAClF,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wFAAwF;AACxF,MAAM,WAAW,+BAA+B;IAC9C,IAAI,EAAE,eAAe,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED,gCAAgC;AAChC,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB;;;uEAGmE;IACnE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,6BAA6B,GAC7B,+BAA+B,GAC/B,2BAA2B,GAC3B,wBAAwB,CAAC"}
@@ -21,7 +21,10 @@ import { extractGeoreferencingOnDemand } from './on-demand-georeferencing.js';
21
21
  import { WorkerIndexPublisher } from './worker-index-publication.js';
22
22
  import { takeWasmPanicStash } from './wasm-panic-forward.js';
23
23
  import { createLogger } from '@ifc-lite/data';
24
+ import { meterTypedArrayArgs } from '@ifc-lite/load-trace';
25
+ import { columnarPhaseSpan, createParserWorkerTrace, finishParseTrace } from './parser-worker-trace.js';
24
26
  const parseLiteLog = createLogger('parseLite');
27
+ const trace = createParserWorkerTrace(); // #6979 load-trace spans, off until enabled
25
28
  function readJsHeapBytes() {
26
29
  const perf = performance;
27
30
  return perf.memory?.usedJSHeapSize;
@@ -113,6 +116,8 @@ function awaitEntityIndex(timeoutMs) {
113
116
  }
114
117
  self.onmessage = async (event) => {
115
118
  const data = event.data;
119
+ if (trace.accept(data))
120
+ return;
116
121
  if (data.type === 'set-entity-index') {
117
122
  pendingEntityIndex = {
118
123
  ids: data.ids,
@@ -132,6 +137,7 @@ self.onmessage = async (event) => {
132
137
  return;
133
138
  const { id, source, yieldIntervalMs, deferPropertyAtomIndex, waitForEntityIndex } = data;
134
139
  const startedAt = performance.now();
140
+ const parseSpan = trace.begin('parser.parse');
135
141
  try {
136
142
  // The SAB itself is shared by reference — both this worker and the
137
143
  // main thread (and the geometry workers) hold views of the same bytes.
@@ -166,7 +172,9 @@ self.onmessage = async (event) => {
166
172
  // wait here would hurt more than it helps. The host gates this
167
173
  // flag to paths that actually emit, so timeouts shouldn't fire
168
174
  // in practice.
175
+ const waitSpan = trace.begin('parser.entityIndexWait');
169
176
  preScanned = await awaitEntityIndex(60_000);
177
+ trace.end(waitSpan, { handedOver: preScanned !== null });
170
178
  if (!preScanned) {
171
179
  // The promised index never came (pre-pass aborted / path mismatch):
172
180
  // we now DO need the wasm scan, so compile it — serially here, which
@@ -180,7 +188,9 @@ self.onmessage = async (event) => {
180
188
  // `undefined` when the handoff succeeded — parseColumnar then uses the
181
189
  // pre-scanned index and never touches the (uncompiled) wasm scanner. If the
182
190
  // index were somehow empty, the scanner falls through to the JS tokeniser.
183
- const wasmApi = wasmApiPromise ? await wasmApiPromise : undefined;
191
+ const wasmInit = wasmApiPromise;
192
+ const scanner = wasmInit ? await trace.span('parser.wasmInit', () => wasmInit) : undefined;
193
+ const wasmApi = scanner ? meterTypedArrayArgs(scanner, 'wasm') : undefined;
184
194
  const parser = new IfcParser();
185
195
  const indexPublisher = new WorkerIndexPublisher(data.indexTransport === 'packed-index-v1');
186
196
  let publishedContentKey;
@@ -206,6 +216,7 @@ self.onmessage = async (event) => {
206
216
  deferPropertyAtomIndex,
207
217
  preScannedEntityIndex: preScanned ?? undefined,
208
218
  onProgress: (progress) => {
219
+ trace.step(columnarPhaseSpan(progress.phase));
209
220
  postOutput({ type: 'progress', id, progress });
210
221
  },
211
222
  onDiagnostic: (message) => {
@@ -213,18 +224,22 @@ self.onmessage = async (event) => {
213
224
  },
214
225
  onSpatialReady: (partialStore) => {
215
226
  try {
216
- const { payload, transfers } = indexPublisher.serialize(partialStore, false);
217
- // #3983: overlays and Cesium availability read these during React
218
- // rendering. Do the full-source/hash and property-set walks here.
219
- payload.sourceContentKey = chooseContentKey(partialStore);
220
- if (!deferPropertyAtomIndex) {
221
- georeferencing = extractGeoreferencingOnDemand(partialStore);
222
- payload.georeferencing = georeferencing;
223
- }
227
+ const { payload, transfers } = trace.span('parser.spatialReady.serialize', () => {
228
+ const serialized = indexPublisher.serialize(partialStore, false);
229
+ // #3983: overlays and Cesium availability read these during React
230
+ // rendering. Do the full-source/hash and property-set walks here.
231
+ serialized.payload.sourceContentKey = chooseContentKey(partialStore);
232
+ if (!deferPropertyAtomIndex) {
233
+ georeferencing = extractGeoreferencingOnDemand(partialStore);
234
+ serialized.payload.georeferencing = georeferencing;
235
+ }
236
+ return serialized;
237
+ });
224
238
  // The packed byType snapshot is worker-independent; primary numeric
225
239
  // columns still clone because parsing continues to read them.
226
240
  postOutput({ type: 'partial-store', id, payload }, transfers);
227
241
  indexPublisher.publishedPartial(partialStore);
242
+ trace.flush();
228
243
  }
229
244
  catch (err) {
230
245
  postOutput({
@@ -235,10 +250,14 @@ self.onmessage = async (event) => {
235
250
  }
236
251
  },
237
252
  });
238
- const { payload, transfers, transportBytes } = indexPublisher.serialize(dataStore, true);
239
- payload.sourceContentKey = chooseContentKey(dataStore);
240
- payload.georeferencing = georeferencing === undefined
241
- ? extractGeoreferencingOnDemand(dataStore) : georeferencing;
253
+ trace.step(null);
254
+ const { payload, transfers, transportBytes } = trace.span('parser.transport.serialize', () => {
255
+ const serialized = indexPublisher.serialize(dataStore, true);
256
+ serialized.payload.sourceContentKey = chooseContentKey(dataStore);
257
+ serialized.payload.georeferencing = georeferencing === undefined
258
+ ? extractGeoreferencingOnDemand(dataStore) : georeferencing;
259
+ return serialized;
260
+ });
242
261
  // CRITICAL: every field here MUST be synchronous. Do NOT await on this path —
243
262
  // it gates the 'complete' message (the full data store) reaching the main thread.
244
263
  // This previously `await`ed performance.measureUserAgentSpecificMemory(); in a
@@ -252,9 +271,11 @@ self.onmessage = async (event) => {
252
271
  sourceBytes: source.byteLength,
253
272
  parseTimeMs: performance.now() - startedAt,
254
273
  };
274
+ finishParseTrace(trace, parseSpan, { entities: dataStore.entityCount });
255
275
  postOutput({ type: 'complete', id, payload, memory }, transfers);
256
276
  }
257
277
  catch (err) {
278
+ finishParseTrace(trace, parseSpan, { error: true });
258
279
  // #2527 follow-up: forward this realm's panic-location stash (set by the
259
280
  // Rust panic hook if this failure was a wasm trap) so the main thread can
260
281
  // re-plant it on ITS global for `attachWasmPanicLocation`.
@@ -1 +1 @@
1
- {"version":3,"file":"parser.worker.js","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.worker.js","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,17 @@ export { measureUnit };
25
25
  export interface ResolvedUnit {
26
26
  symbol: string;
27
27
  siScale: number;
28
+ /** Additive SI offset, present only for an `IfcConversionBasedUnitWithOffset`
29
+ * (°F over kelvin): `si = value * siScale + siOffset`. */
30
+ siOffset?: number;
31
+ }
32
+ /** Native current point provider; omitted readers retain parsed-source semantics. */
33
+ export type UnitEntityReader = (expressId: number) => {
34
+ type: string;
35
+ attributes: readonly unknown[];
36
+ } | null;
37
+ /** Expected refusal of a current native context; source-only defaults stay unchanged. */
38
+ export declare class ProjectUnitReadError extends Error {
28
39
  }
29
40
  interface EntityByIdIndexLike {
30
41
  byId: {
@@ -58,12 +69,14 @@ interface UnitEntry {
58
69
  }
59
70
  /** Resolve a single unit entity by expressId (used for the assignment loop and
60
71
  * for per-property / per-quantity `Unit` overrides). */
61
- export declare function resolveUnitByRef(extractor: EntityExtractor, entityIndex: EntityByIdIndexLike, ref: number): UnitEntry | null;
72
+ export declare function resolveUnitByRef(extractor: EntityExtractor, entityIndex: EntityByIdIndexLike, ref: number, readEntity?: UnitEntityReader): UnitEntry | null;
62
73
  /**
63
74
  * Resolve the file's declared units from `IFCPROJECT → IFCUNITASSIGNMENT`.
64
75
  * `projectId` defaults to the file's first IFCPROJECT (pass explicitly,
65
- * from `resolveOwningIfcProjectId`, for an entity owning a later one). Never
66
- * throws: an absent/malformed assignment yields an empty {@link ProjectUnits}.
76
+ * from `resolveOwningIfcProjectId`, for an entity owning a later one).
77
+ * Source-only reads never throw: an absent/malformed assignment yields an
78
+ * empty resolver. An optional current provider refuses unreadable native
79
+ * contexts with ProjectUnitReadError instead of guessing their units.
67
80
  */
68
- export declare function extractProjectUnits(source: Uint8Array | IfcSourceBytes, entityIndex: EntityIndexLike, projectId?: number): ProjectUnits;
81
+ export declare function extractProjectUnits(source: Uint8Array | IfcSourceBytes, entityIndex: EntityIndexLike, projectId?: number, readEntity?: UnitEntityReader): ProjectUnits;
69
82
  //# sourceMappingURL=project-units.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-units.d.ts","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAIL,WAAW,EAEX,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;+DAE+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE;QAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED,UAAU,eAAgB,SAAQ,mBAAmB;IACnD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/B;AAMD,2DAA2D;AAC3D,qBAAa,YAAY;IACvB;6EACyE;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKnF,MAAM,CAAC,KAAK,IAAI,YAAY;IAI5B;;kFAE8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IASxD,iFAAiF;IACjF,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/D,QAAQ,IAAI,YAAY,GAAG,IAAI;IAI/B,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAOD;yDACyD;AACzD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,mBAAmB,EAChC,GAAG,EAAE,MAAM,GACV,SAAS,GAAG,IAAI,CAGlB;AAgID;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,cAAc,EACnC,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,YAAY,CAwCd"}
1
+ {"version":3,"file":"project-units.d.ts","sourceRoot":"","sources":["../src/project-units.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAIL,WAAW,EAEX,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,WAAW,EAAE,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB;;+DAE+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB;+DAC2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,MAAM,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC;AAE9G,yFAAyF;AACzF,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAElD,UAAU,mBAAmB;IAC3B,IAAI,EAAE;QAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;KAAE,CAAC;CACzD;AAED,UAAU,eAAgB,SAAQ,mBAAmB;IACnD,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/B;AAMD,2DAA2D;AAC3D,qBAAa,YAAY;IACvB;6EACyE;IACzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKnF,MAAM,CAAC,KAAK,IAAI,YAAY;IAI5B;;kFAE8E;IAC9E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IASxD,iFAAiF;IACjF,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/D,QAAQ,IAAI,YAAY,GAAG,IAAI;IAI/B,IAAI,aAAa,IAAI,MAAM,CAE1B;CACF;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAOD;yDACyD;AACzD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,mBAAmB,EAChC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,gBAAgB,GAC5B,SAAS,GAAG,IAAI,CAElB;AA8JD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,cAAc,EACnC,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,YAAY,CA2Ed"}
@@ -2,9 +2,13 @@
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 { EntityExtractor } from './entity-extractor.js';
5
+ import { getReference } from './attribute-helpers.js';
5
6
  import { composeDerived, conversionUnitSymbol, currencySymbol, measureUnit, siUnitSymbolAndScale, } from './project-units-symbols.js';
6
7
  import { CONVERSION_BASED_UNIT_FACTORS } from './unit-extractor.js';
7
8
  export { measureUnit };
9
+ /** Expected refusal of a current native context; source-only defaults stay unchanged. */
10
+ export class ProjectUnitReadError extends Error {
11
+ }
8
12
  // ============================================================================
9
13
  // Unit-assignment resolution (mirror project_units/mod.rs)
10
14
  // ============================================================================
@@ -48,16 +52,27 @@ export class ProjectUnits {
48
52
  }
49
53
  /** Resolve a single unit entity by expressId (used for the assignment loop and
50
54
  * for per-property / per-quantity `Unit` overrides). */
51
- export function resolveUnitByRef(extractor, entityIndex, ref) {
52
- const entry = resolveDeclaredUnit(extractor, entityIndex, ref);
53
- return entry?.resolved ? { ...entry, resolved: entry.resolved } : null;
55
+ export function resolveUnitByRef(extractor, entityIndex, ref, readEntity) {
56
+ return resolveUnit(extractor, entityIndex, ref, readEntity, readEntity ? new Set() : undefined);
57
+ }
58
+ function resolveUnit(extractor, entityIndex, ref, readEntity, active) {
59
+ // Native current callers also count every dependency read; this path set
60
+ // refuses cycles immediately, before recursion consumes the read budget.
61
+ if (active?.has(ref))
62
+ return null;
63
+ active?.add(ref);
64
+ try {
65
+ const entry = resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active);
66
+ return entry?.resolved ? { ...entry, resolved: entry.resolved } : null;
67
+ }
68
+ finally {
69
+ active?.delete(ref);
70
+ }
54
71
  }
55
- function resolveDeclaredUnit(extractor, entityIndex, ref) {
72
+ function resolveDeclaredUnit(extractor, entityIndex, ref, readEntity, active) {
56
73
  // @raw-entity-enumeration-ok resolve a declared unit from the parsed source index
57
74
  const entRef = entityIndex.byId.get(ref);
58
- if (!entRef)
59
- return null;
60
- const entity = extractor.extractEntity(entRef);
75
+ const entity = readEntity ? readEntity(ref) : entRef ? extractor.extractEntity(entRef) : null;
61
76
  if (!entity)
62
77
  return null;
63
78
  const attrs = entity.attributes ?? [];
@@ -76,8 +91,10 @@ function resolveDeclaredUnit(extractor, entityIndex, ref) {
76
91
  return null;
77
92
  return { unitType, resolved: { symbol: res.symbol, siScale: res.scale }, monetary: false };
78
93
  }
79
- case 'IFCCONVERSIONBASEDUNIT': {
80
- // [1]=UnitType, [2]=Name, [3]=ConversionFactor
94
+ case 'IFCCONVERSIONBASEDUNIT':
95
+ case 'IFCCONVERSIONBASEDUNITWITHOFFSET': {
96
+ // [1]=UnitType, [2]=Name, [3]=ConversionFactor, [4]=ConversionOffset
97
+ const withOffset = entity.type.toUpperCase() === 'IFCCONVERSIONBASEDUNITWITHOFFSET';
81
98
  const unitType = cleanEnum(attrs[1]);
82
99
  const name = typeof attrs[2] === 'string' ? attrs[2] : '';
83
100
  // A factor the file does not resolve falls back to the name's known
@@ -86,9 +103,18 @@ function resolveDeclaredUnit(extractor, entityIndex, ref) {
86
103
  // at 1.0 (#4690).
87
104
  const namedFactor = unitType === 'LENGTHUNIT' ? CONVERSION_BASED_UNIT_FACTORS[name.toUpperCase()] : undefined;
88
105
  const scale = (typeof attrs[3] === 'number'
89
- ? conversionFactorScale(extractor, entityIndex, attrs[3])
90
- : null) ?? namedFactor;
91
- const resolved = scale === undefined ? null : { symbol: conversionUnitSymbol(name), siScale: scale };
106
+ ? conversionFactorScale(extractor, entityIndex, attrs[3], readEntity, withOffset)
107
+ : null) ?? (readEntity ? undefined : namedFactor);
108
+ const symbol = conversionUnitSymbol(name);
109
+ if (!withOffset)
110
+ return { unitType, resolved: scale === undefined ? null : { symbol, siScale: scale }, monetary: false };
111
+ // The offset is the value of this unit at the SI zero (°F over kelvin:
112
+ // -459.67), so `si = (value - offset) * factor`; an unreadable one
113
+ // leaves the unit unresolved rather than converted without it.
114
+ const offset = attrs[4];
115
+ const resolved = scale === undefined || typeof offset !== 'number' || !Number.isFinite(offset)
116
+ ? null
117
+ : { symbol, siScale: scale, siOffset: offset === 0 ? 0 : -offset * scale };
92
118
  return { unitType, resolved, monetary: false };
93
119
  }
94
120
  case 'IFCDERIVEDUNIT': {
@@ -99,11 +125,12 @@ function resolveDeclaredUnit(extractor, entityIndex, ref) {
99
125
  let scale = 1.0;
100
126
  let incomplete = false;
101
127
  for (const er of elemRefs) {
102
- if (typeof er !== 'number') {
128
+ const elementRef = readEntity ? getReference(er) : typeof er === 'number' ? er : undefined;
129
+ if (elementRef === undefined) {
103
130
  incomplete = true;
104
131
  continue;
105
132
  }
106
- const el = resolveDerivedElement(extractor, entityIndex, er);
133
+ const el = resolveDerivedElement(extractor, entityIndex, elementRef, readEntity, active);
107
134
  if (el) {
108
135
  scale *= Math.pow(el.unitScale, el.exponent);
109
136
  parts.push([el.symbol, el.exponent]);
@@ -126,12 +153,10 @@ function resolveDeclaredUnit(extractor, entityIndex, ref) {
126
153
  return null;
127
154
  }
128
155
  }
129
- function resolveDerivedElement(extractor, entityIndex, elemRef) {
156
+ function resolveDerivedElement(extractor, entityIndex, elemRef, readEntity, active) {
130
157
  // @raw-entity-enumeration-ok resolve an element of a parsed derived unit
131
158
  const ref = entityIndex.byId.get(elemRef);
132
- if (!ref)
133
- return null;
134
- const elem = extractor.extractEntity(ref);
159
+ const elem = readEntity ? readEntity(elemRef) : ref ? extractor.extractEntity(ref) : null;
135
160
  if (!elem || elem.type.toUpperCase() !== 'IFCDERIVEDUNITELEMENT')
136
161
  return null;
137
162
  const attrs = elem.attributes ?? [];
@@ -139,17 +164,15 @@ function resolveDerivedElement(extractor, entityIndex, elemRef) {
139
164
  if (typeof unitRef !== 'number')
140
165
  return null;
141
166
  const exponent = typeof attrs[1] === 'number' ? Math.trunc(attrs[1]) : 1;
142
- const entry = resolveUnitByRef(extractor, entityIndex, unitRef);
167
+ const entry = resolveUnit(extractor, entityIndex, unitRef, readEntity, active);
143
168
  if (!entry)
144
169
  return null;
145
170
  return { symbol: entry.resolved.symbol, unitScale: entry.resolved.siScale, exponent };
146
171
  }
147
- function conversionFactorScale(extractor, entityIndex, measureRef) {
172
+ function conversionFactorScale(extractor, entityIndex, measureRef, readEntity, withOffset = false) {
148
173
  // @raw-entity-enumeration-ok read the source measure in a conversion-based unit
149
174
  const ref = entityIndex.byId.get(measureRef);
150
- if (!ref)
151
- return null;
152
- const measure = extractor.extractEntity(ref);
175
+ const measure = readEntity ? readEntity(measureRef) : ref ? extractor.extractEntity(ref) : null;
153
176
  if (!measure || measure.type.toUpperCase() !== 'IFCMEASUREWITHUNIT')
154
177
  return null;
155
178
  const attrs = measure.attributes ?? [];
@@ -168,13 +191,16 @@ function conversionFactorScale(extractor, entityIndex, measureRef) {
168
191
  const compRef = attrs[1];
169
192
  // @raw-entity-enumeration-ok follow the source unit component reference
170
193
  const cRef = typeof compRef === 'number' ? entityIndex.byId.get(compRef) : undefined;
171
- const comp = cRef ? extractor.extractEntity(cRef) : null;
194
+ const comp = readEntity && typeof compRef === 'number' ? readEntity(compRef) : cRef ? extractor.extractEntity(cRef) : null;
172
195
  if (!comp)
173
196
  return null;
174
197
  if (comp.type.toUpperCase() !== 'IFCSIUNIT')
175
- return value;
198
+ return readEntity || withOffset ? null : value;
176
199
  const cAttrs = comp.attributes ?? [];
177
200
  const name = typeof cAttrs[3] === 'string' ? cAttrs[3] : null;
201
+ // An offset over a unit that has its own offset (°C) would need both.
202
+ if (withOffset && name?.replace(/\./g, '').toUpperCase() === 'DEGREE_CELSIUS')
203
+ return null;
178
204
  const prefixAttr = cAttrs[2];
179
205
  const prefix = typeof prefixAttr === 'string' && prefixAttr !== '$' ? prefixAttr : null;
180
206
  const res = name ? siUnitSymbolAndScale(name, prefix) : null;
@@ -183,10 +209,21 @@ function conversionFactorScale(extractor, entityIndex, measureRef) {
183
209
  /**
184
210
  * Resolve the file's declared units from `IFCPROJECT → IFCUNITASSIGNMENT`.
185
211
  * `projectId` defaults to the file's first IFCPROJECT (pass explicitly,
186
- * from `resolveOwningIfcProjectId`, for an entity owning a later one). Never
187
- * throws: an absent/malformed assignment yields an empty {@link ProjectUnits}.
212
+ * from `resolveOwningIfcProjectId`, for an entity owning a later one).
213
+ * Source-only reads never throw: an absent/malformed assignment yields an
214
+ * empty resolver. An optional current provider refuses unreadable native
215
+ * contexts with ProjectUnitReadError instead of guessing their units.
188
216
  */
189
- export function extractProjectUnits(source, entityIndex, projectId) {
217
+ export function extractProjectUnits(source, entityIndex, projectId, readEntity) {
218
+ if (readEntity) {
219
+ const point = readEntity;
220
+ let reads = 0;
221
+ readEntity = id => {
222
+ if (++reads > 512)
223
+ throw new ProjectUnitReadError('Native project unit dependencies exceed the read limit');
224
+ return point(id);
225
+ };
226
+ }
190
227
  const byType = new Map();
191
228
  let monetary = null;
192
229
  // @raw-entity-enumeration-ok project units come from the parsed IfcProject, not a live session overlay
@@ -195,31 +232,58 @@ export function extractProjectUnits(source, entityIndex, projectId) {
195
232
  return new ProjectUnits(byType, monetary);
196
233
  // @raw-entity-enumeration-ok dereference the parsed project whose unit assignment is being read
197
234
  const projectRef = entityIndex.byId.get(resolvedId);
198
- if (!projectRef)
235
+ if (!projectRef && !readEntity)
199
236
  return new ProjectUnits(byType, monetary);
200
237
  const extractor = new EntityExtractor(source);
201
- const project = extractor.extractEntity(projectRef);
202
- if (!project)
238
+ const project = readEntity ? readEntity(resolvedId) : extractor.extractEntity(projectRef);
239
+ if (!project || project.type.toUpperCase() !== 'IFCPROJECT') {
240
+ if (readEntity)
241
+ throw new ProjectUnitReadError('Native project unit context is unreadable');
203
242
  return new ProjectUnits(byType, monetary);
243
+ }
204
244
  // IFCPROJECT[8] = UnitsInContext (IFCUNITASSIGNMENT)
205
245
  const unitsRef = (project.attributes ?? [])[8];
206
- if (typeof unitsRef !== 'number')
246
+ if (unitsRef === null) {
247
+ if (readEntity)
248
+ throw new ProjectUnitReadError('Native project unit context is unset');
249
+ return new ProjectUnits(byType, monetary);
250
+ }
251
+ if (typeof unitsRef !== 'number') {
252
+ if (readEntity)
253
+ throw new ProjectUnitReadError('Native project unit assignment reference is unreadable');
207
254
  return new ProjectUnits(byType, monetary);
255
+ }
208
256
  // @raw-entity-enumeration-ok dereference the parsed IfcUnitAssignment from IfcProject
209
257
  const assignmentRef = entityIndex.byId.get(unitsRef);
210
- if (!assignmentRef)
258
+ if (!assignmentRef && !readEntity)
211
259
  return new ProjectUnits(byType, monetary);
212
- const assignment = extractor.extractEntity(assignmentRef);
260
+ const assignment = readEntity ? readEntity(unitsRef) : extractor.extractEntity(assignmentRef);
213
261
  if (!assignment || assignment.type.toUpperCase() !== 'IFCUNITASSIGNMENT') {
262
+ if (readEntity)
263
+ throw new ProjectUnitReadError('Native project unit assignment is unreadable');
214
264
  return new ProjectUnits(byType, monetary);
215
265
  }
216
266
  const unitList = (assignment.attributes ?? [])[0];
217
- if (!Array.isArray(unitList))
267
+ if (!Array.isArray(unitList)) {
268
+ if (readEntity)
269
+ throw new ProjectUnitReadError('Native project unit assignment members are unreadable');
218
270
  return new ProjectUnits(byType, monetary);
271
+ }
272
+ if (readEntity && (unitList.length === 0 || unitList.length > 512)) {
273
+ throw new ProjectUnitReadError(unitList.length === 0
274
+ ? 'Native project unit assignment is empty' : 'Native project unit assignment exceeds the read limit');
275
+ }
219
276
  for (const ref of unitList) {
220
- if (typeof ref !== 'number')
277
+ const unitRef = readEntity ? getReference(ref) : typeof ref === 'number' ? ref : undefined;
278
+ if (unitRef === undefined) {
279
+ if (readEntity)
280
+ throw new ProjectUnitReadError('Native project unit assignment member is unreadable');
221
281
  continue;
222
- const entry = resolveDeclaredUnit(extractor, entityIndex, ref);
282
+ }
283
+ const entry = resolveDeclaredUnit(extractor, entityIndex, unitRef, readEntity, readEntity ? new Set() : undefined);
284
+ if (readEntity && (!entry?.resolved || !Number.isFinite(entry.resolved.siScale) || entry.resolved.siScale <= 0)) {
285
+ throw new ProjectUnitReadError('Native project unit is unresolved or unsupported');
286
+ }
223
287
  if (!entry)
224
288
  continue;
225
289
  if (entry.monetary) {
@@ -228,6 +292,9 @@ export function extractProjectUnits(source, entityIndex, projectId) {
228
292
  else if (entry.unitType && !byType.has(entry.unitType)) {
229
293
  byType.set(entry.unitType, entry.resolved);
230
294
  }
295
+ else if (readEntity && entry.unitType) {
296
+ throw new ProjectUnitReadError('Native project unit assignment repeats a unit type');
297
+ }
231
298
  }
232
299
  return new ProjectUnits(byType, monetary);
233
300
  }