@ifc-lite/parser 9.2.0 → 9.4.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.
- package/README.md +31 -0
- package/dist/abort-error.d.ts +7 -0
- package/dist/abort-error.d.ts.map +1 -0
- package/dist/abort-error.js +17 -0
- package/dist/abort-error.js.map +1 -0
- package/dist/classification-overlay.d.ts +13 -0
- package/dist/classification-overlay.d.ts.map +1 -0
- package/dist/classification-overlay.js +65 -0
- package/dist/classification-overlay.js.map +1 -0
- package/dist/classification-resolver.d.ts +13 -9
- package/dist/classification-resolver.d.ts.map +1 -1
- package/dist/classification-resolver.js +109 -74
- package/dist/classification-resolver.js.map +1 -1
- package/dist/columnar-parser-attributes.d.ts +1 -1
- package/dist/columnar-parser-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-attributes.js +16 -6
- package/dist/columnar-parser-attributes.js.map +1 -1
- package/dist/columnar-parser-root-attributes.d.ts +15 -1
- package/dist/columnar-parser-root-attributes.d.ts.map +1 -1
- package/dist/columnar-parser-root-attributes.js +26 -11
- package/dist/columnar-parser-root-attributes.js.map +1 -1
- package/dist/columnar-parser.d.ts +9 -8
- package/dist/columnar-parser.d.ts.map +1 -1
- package/dist/columnar-parser.js +11 -23
- package/dist/columnar-parser.js.map +1 -1
- package/dist/current-occurrence-quantities.d.ts +13 -0
- package/dist/current-occurrence-quantities.d.ts.map +1 -0
- package/dist/current-occurrence-quantities.js +69 -0
- package/dist/current-occurrence-quantities.js.map +1 -0
- package/dist/current-project-units.d.ts +11 -0
- package/dist/current-project-units.d.ts.map +1 -0
- package/dist/current-project-units.js +41 -0
- package/dist/current-project-units.js.map +1 -0
- package/dist/current-type-quantities.d.ts +13 -0
- package/dist/current-type-quantities.d.ts.map +1 -0
- package/dist/current-type-quantities.js +274 -0
- package/dist/current-type-quantities.js.map +1 -0
- package/dist/data-store-transport.d.ts +1 -0
- package/dist/data-store-transport.d.ts.map +1 -1
- package/dist/data-store-transport.js +2 -0
- package/dist/data-store-transport.js.map +1 -1
- package/dist/document-resolver.d.ts +23 -0
- package/dist/document-resolver.d.ts.map +1 -0
- package/dist/document-resolver.js +122 -0
- package/dist/document-resolver.js.map +1 -0
- package/dist/effective-entity-record.d.ts +3 -2
- package/dist/effective-entity-record.d.ts.map +1 -1
- package/dist/effective-entity-record.js +5 -5
- package/dist/effective-entity-record.js.map +1 -1
- package/dist/effective-metadata-record.d.ts +23 -0
- package/dist/effective-metadata-record.d.ts.map +1 -0
- package/dist/effective-metadata-record.js +50 -0
- package/dist/effective-metadata-record.js.map +1 -0
- package/dist/entity-scanner.d.ts +6 -8
- package/dist/entity-scanner.d.ts.map +1 -1
- package/dist/entity-scanner.js +26 -13
- package/dist/entity-scanner.js.map +1 -1
- package/dist/ifc-schema.d.ts +2 -1
- package/dist/ifc-schema.d.ts.map +1 -1
- package/dist/ifc-schema.js +4 -3
- package/dist/ifc-schema.js.map +1 -1
- package/dist/index.d.ts +8 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -10
- package/dist/index.js.map +1 -1
- package/dist/length-unit-source.d.ts +25 -0
- package/dist/length-unit-source.d.ts.map +1 -0
- package/dist/length-unit-source.js +14 -0
- package/dist/length-unit-source.js.map +1 -0
- package/dist/material-definitions.d.ts +10 -0
- package/dist/material-definitions.d.ts.map +1 -0
- package/dist/material-definitions.js +224 -0
- package/dist/material-definitions.js.map +1 -0
- package/dist/material-overlay.d.ts +38 -0
- package/dist/material-overlay.d.ts.map +1 -0
- package/dist/material-overlay.js +146 -0
- package/dist/material-overlay.js.map +1 -0
- package/dist/material-properties-extractor.d.ts +2 -11
- package/dist/material-properties-extractor.d.ts.map +1 -1
- package/dist/material-properties-extractor.js +21 -38
- package/dist/material-properties-extractor.js.map +1 -1
- package/dist/material-resolver.d.ts +6 -4
- package/dist/material-resolver.d.ts.map +1 -1
- package/dist/material-resolver.js +176 -386
- package/dist/material-resolver.js.map +1 -1
- package/dist/measure-unit-scale.d.ts +2 -0
- package/dist/measure-unit-scale.d.ts.map +1 -1
- package/dist/measure-unit-scale.js +7 -1
- package/dist/measure-unit-scale.js.map +1 -1
- package/dist/metadata-edit-value.d.ts +4 -0
- package/dist/metadata-edit-value.d.ts.map +1 -0
- package/dist/metadata-edit-value.js +57 -0
- package/dist/metadata-edit-value.js.map +1 -0
- package/dist/native-metadata-public.d.ts +9 -0
- package/dist/native-metadata-public.d.ts.map +1 -0
- package/dist/native-metadata-public.js +12 -0
- package/dist/native-metadata-public.js.map +1 -0
- package/dist/occurrence-quantity-read-error.d.ts +7 -0
- package/dist/occurrence-quantity-read-error.d.ts.map +1 -0
- package/dist/occurrence-quantity-read-error.js +13 -0
- package/dist/occurrence-quantity-read-error.js.map +1 -0
- package/dist/on-demand-extractors.d.ts +3 -38
- package/dist/on-demand-extractors.d.ts.map +1 -1
- package/dist/on-demand-extractors.js +4 -184
- package/dist/on-demand-extractors.js.map +1 -1
- package/dist/parser-worker-trace.d.ts +18 -0
- package/dist/parser-worker-trace.d.ts.map +1 -0
- package/dist/parser-worker-trace.js +32 -0
- package/dist/parser-worker-trace.js.map +1 -0
- package/dist/parser.worker.d.ts.map +1 -1
- package/dist/parser.worker.js +34 -13
- package/dist/parser.worker.js.map +1 -1
- package/dist/project-units.d.ts +17 -4
- package/dist/project-units.d.ts.map +1 -1
- package/dist/project-units.js +104 -37
- package/dist/project-units.js.map +1 -1
- package/dist/property-complex-value.d.ts.map +1 -1
- package/dist/property-complex-value.js +1 -0
- package/dist/property-complex-value.js.map +1 -1
- package/dist/property-unit.d.ts +2 -0
- package/dist/property-unit.d.ts.map +1 -1
- package/dist/property-unit.js +4 -1
- package/dist/property-unit.js.map +1 -1
- package/dist/property-value-parser.d.ts +14 -1
- package/dist/property-value-parser.d.ts.map +1 -1
- package/dist/property-value-parser.js +42 -22
- package/dist/property-value-parser.js.map +1 -1
- package/dist/quantity-collect.d.ts +14 -2
- package/dist/quantity-collect.d.ts.map +1 -1
- package/dist/quantity-collect.js +19 -8
- package/dist/quantity-collect.js.map +1 -1
- package/dist/relationship-schema-slots.d.ts.map +1 -1
- package/dist/relationship-schema-slots.js +2 -1
- package/dist/relationship-schema-slots.js.map +1 -1
- package/dist/scan-worker-inline.d.ts.map +1 -1
- package/dist/scan-worker-inline.js +2 -1
- package/dist/scan-worker-inline.js.map +1 -1
- package/dist/schedule-extractor.d.ts +2 -1
- package/dist/schedule-extractor.d.ts.map +1 -1
- package/dist/schedule-extractor.js +11 -2
- package/dist/schedule-extractor.js.map +1 -1
- package/dist/schedule-serializer-builders.d.ts +7 -0
- package/dist/schedule-serializer-builders.d.ts.map +1 -1
- package/dist/schedule-serializer-builders.js +17 -17
- package/dist/schedule-serializer-builders.js.map +1 -1
- package/dist/schedule-serializer.d.ts +8 -3
- package/dist/schedule-serializer.d.ts.map +1 -1
- package/dist/schedule-serializer.js +36 -1
- package/dist/schedule-serializer.js.map +1 -1
- package/dist/schedule-task-products.d.ts +38 -0
- package/dist/schedule-task-products.d.ts.map +1 -0
- package/dist/schedule-task-products.js +69 -0
- package/dist/schedule-task-products.js.map +1 -0
- package/dist/schedule-types.d.ts +11 -1
- package/dist/schedule-types.d.ts.map +1 -1
- package/dist/schedule-types.js.map +1 -1
- package/dist/schema-entity-name.d.ts +14 -0
- package/dist/schema-entity-name.d.ts.map +1 -0
- package/dist/schema-entity-name.js +34 -0
- package/dist/schema-entity-name.js.map +1 -0
- package/dist/schema-exports.d.ts +7 -0
- package/dist/schema-exports.d.ts.map +1 -0
- package/dist/schema-exports.js +10 -0
- package/dist/schema-exports.js.map +1 -0
- package/dist/source-project-length-unit.d.ts +53 -0
- package/dist/source-project-length-unit.d.ts.map +1 -0
- package/dist/source-project-length-unit.js +201 -0
- package/dist/source-project-length-unit.js.map +1 -0
- package/dist/structural-extractor.js +2 -2
- package/dist/structural-extractor.js.map +1 -1
- package/dist/structural-load-extractor.d.ts +9 -3
- package/dist/structural-load-extractor.d.ts.map +1 -1
- package/dist/structural-load-extractor.js +26 -20
- package/dist/structural-load-extractor.js.map +1 -1
- package/dist/structural-step-values.d.ts +0 -9
- package/dist/structural-step-values.d.ts.map +1 -1
- package/dist/structural-step-values.js +13 -1
- package/dist/structural-step-values.js.map +1 -1
- package/dist/type-own-quantity-source.d.ts +37 -0
- package/dist/type-own-quantity-source.d.ts.map +1 -0
- package/dist/type-own-quantity-source.js +204 -0
- package/dist/type-own-quantity-source.js.map +1 -0
- package/dist/unit-extractor.d.ts +13 -0
- package/dist/unit-extractor.d.ts.map +1 -1
- package/dist/unit-extractor.js +32 -29
- package/dist/unit-extractor.js.map +1 -1
- package/dist/worker-parser.d.ts +7 -0
- package/dist/worker-parser.d.ts.map +1 -1
- package/dist/worker-parser.js +14 -16
- package/dist/worker-parser.js.map +1 -1
- 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;
|
|
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"}
|
package/dist/parser.worker.js
CHANGED
|
@@ -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
|
|
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 } =
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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
|
-
|
|
239
|
-
payload
|
|
240
|
-
|
|
241
|
-
|
|
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":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAI9E,OAAO,EAAE,oBAAoB,EAA2B,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.worker.js","sourceRoot":"","sources":["../src/parser.worker.ts"],"names":[],"mappings":"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"}
|
package/dist/project-units.d.ts
CHANGED
|
@@ -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).
|
|
66
|
-
*
|
|
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;
|
|
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"}
|
package/dist/project-units.js
CHANGED
|
@@ -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
|
-
|
|
53
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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).
|
|
187
|
-
*
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
}
|