@ifc-lite/geometry 1.17.0 → 1.18.2
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/dist/geometry-controller.worker.d.ts +4 -0
- package/dist/geometry-controller.worker.d.ts.map +1 -0
- package/dist/geometry-controller.worker.js +349 -0
- package/dist/geometry-controller.worker.js.map +1 -0
- package/dist/geometry-parallel.d.ts +55 -13
- package/dist/geometry-parallel.d.ts.map +1 -1
- package/dist/geometry-parallel.js +507 -134
- package/dist/geometry-parallel.js.map +1 -1
- package/dist/geometry.worker.d.ts +89 -3
- package/dist/geometry.worker.d.ts.map +1 -1
- package/dist/geometry.worker.js +337 -72
- package/dist/geometry.worker.js.map +1 -1
- package/dist/ifc-lite-bridge.d.ts +25 -0
- package/dist/ifc-lite-bridge.d.ts.map +1 -1
- package/dist/ifc-lite-bridge.js +49 -0
- package/dist/ifc-lite-bridge.js.map +1 -1
- package/dist/ifc-lite-mesh-collector.d.ts +28 -1
- package/dist/ifc-lite-mesh-collector.d.ts.map +1 -1
- package/dist/ifc-lite-mesh-collector.js +48 -1
- package/dist/ifc-lite-mesh-collector.js.map +1 -1
- package/dist/index.d.ts +51 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -21
- package/dist/index.js.map +1 -1
- package/dist/watchdog.d.ts +27 -0
- package/dist/watchdog.d.ts.map +1 -0
- package/dist/watchdog.js +35 -0
- package/dist/watchdog.js.map +1 -0
- package/dist/worker-count.d.ts +52 -0
- package/dist/worker-count.d.ts.map +1 -0
- package/dist/worker-count.js +89 -0
- package/dist/worker-count.js.map +1 -0
- package/package.json +5 -4
package/dist/index.js
CHANGED
|
@@ -8,12 +8,15 @@
|
|
|
8
8
|
// IFC-Lite components (recommended - faster)
|
|
9
9
|
export { IfcLiteBridge } from './ifc-lite-bridge.js';
|
|
10
10
|
export { IfcLiteMeshCollector } from './ifc-lite-mesh-collector.js';
|
|
11
|
+
import { safeUtf8Decode } from '@ifc-lite/data';
|
|
11
12
|
// Platform bridge abstraction (auto-selects WASM or native based on environment)
|
|
12
13
|
export { createPlatformBridge, isTauri, } from './platform-bridge.js';
|
|
13
14
|
// Support components
|
|
14
15
|
export { BufferBuilder } from './buffer-builder.js';
|
|
15
16
|
export { CoordinateHandler } from './coordinate-handler.js';
|
|
16
17
|
export { GeometryQuality } from './progressive-loader.js';
|
|
18
|
+
export { computeWorkerCount, pickWorkerCount } from './worker-count.js';
|
|
19
|
+
export { getGeometryStreamWatchdogMs } from './watchdog.js';
|
|
17
20
|
export { LODGenerator } from './lod.js';
|
|
18
21
|
export { deduplicateMeshes, getDeduplicationStats } from './geometry-deduplicator.js';
|
|
19
22
|
export * from './types.js';
|
|
@@ -32,6 +35,19 @@ import { createPlatformBridge, isTauri } from './platform-bridge.js';
|
|
|
32
35
|
import { getStreamingBatchSize, convertMeshCollectionToBatch, convertInstancedCollectionToBatch, withBuildingRotation } from './geometry-coordinate.js';
|
|
33
36
|
import { streamNativeGeometry } from './geometry-native.js';
|
|
34
37
|
import { processParallel } from './geometry-parallel.js';
|
|
38
|
+
let activeWasmStreamingOperation = null;
|
|
39
|
+
function acquireWasmStreamingOperation(operation) {
|
|
40
|
+
if (activeWasmStreamingOperation) {
|
|
41
|
+
throw new Error(`GeometryProcessor ${operation} cannot start while ${activeWasmStreamingOperation} is still running. ` +
|
|
42
|
+
'Wait for the active stream to finish, or cancel it before starting another geometry operation.');
|
|
43
|
+
}
|
|
44
|
+
activeWasmStreamingOperation = operation;
|
|
45
|
+
return () => {
|
|
46
|
+
if (activeWasmStreamingOperation === operation) {
|
|
47
|
+
activeWasmStreamingOperation = null;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
35
51
|
/**
|
|
36
52
|
* Calculate dynamic batch size based on batch number
|
|
37
53
|
*/
|
|
@@ -56,14 +72,21 @@ export class GeometryProcessor {
|
|
|
56
72
|
coordinateHandler;
|
|
57
73
|
isNative = false;
|
|
58
74
|
lastNativeStats = null;
|
|
75
|
+
mergeLayers;
|
|
59
76
|
constructor(options = {}) {
|
|
60
77
|
this.bufferBuilder = new BufferBuilder();
|
|
61
78
|
this.coordinateHandler = new CoordinateHandler();
|
|
62
79
|
this.isNative = options.preferNative !== false && isTauri();
|
|
80
|
+
this.mergeLayers = options.mergeLayers === true;
|
|
63
81
|
// Note: options accepted for API compatibility
|
|
64
82
|
void options.quality;
|
|
65
83
|
if (!this.isNative) {
|
|
66
84
|
this.bridge = new IfcLiteBridge();
|
|
85
|
+
// Cache the merge-layers flag on the bridge eagerly — if init()
|
|
86
|
+
// hasn't run yet the bridge stores the value and replays it on
|
|
87
|
+
// the freshly-built IfcAPI. Existing call sites can opt in
|
|
88
|
+
// simply by passing { mergeLayers: true } into the constructor.
|
|
89
|
+
this.bridge.setMergeLayers(this.mergeLayers);
|
|
67
90
|
}
|
|
68
91
|
}
|
|
69
92
|
/**
|
|
@@ -170,9 +193,10 @@ export class GeometryProcessor {
|
|
|
170
193
|
throw new Error('WASM bridge not initialized');
|
|
171
194
|
}
|
|
172
195
|
// Convert buffer to string (IFC files are text)
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const
|
|
196
|
+
// SAB-safe: caller may pass a SharedArrayBuffer-backed view, which
|
|
197
|
+
// both Firefox and Chromium reject in raw `TextDecoder.decode`.
|
|
198
|
+
const content = safeUtf8Decode(buffer);
|
|
199
|
+
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content, { mergeLayers: this.mergeLayers });
|
|
176
200
|
const meshes = collector.collectMeshes();
|
|
177
201
|
const buildingRotation = collector.getBuildingRotation();
|
|
178
202
|
return { meshes, buildingRotation };
|
|
@@ -315,6 +339,17 @@ export class GeometryProcessor {
|
|
|
315
339
|
// WASM streaming collector. The WASM layer detects its own RTC offset
|
|
316
340
|
// per-model; federation-level override requires collector API changes.
|
|
317
341
|
sharedRtcOffset) {
|
|
342
|
+
const releaseWasmOperation = this.isNative
|
|
343
|
+
? null
|
|
344
|
+
: acquireWasmStreamingOperation('processStreaming');
|
|
345
|
+
try {
|
|
346
|
+
yield* this.processStreamingUnlocked(buffer, _entityIndex, batchConfig, sharedRtcOffset);
|
|
347
|
+
}
|
|
348
|
+
finally {
|
|
349
|
+
releaseWasmOperation?.();
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
async *processStreamingUnlocked(buffer, _entityIndex, batchConfig = 25, sharedRtcOffset) {
|
|
318
353
|
// Initialize if needed
|
|
319
354
|
if (this.isNative) {
|
|
320
355
|
if (!this.platformBridge) {
|
|
@@ -408,11 +443,10 @@ export class GeometryProcessor {
|
|
|
408
443
|
yield* this.processStreamingBytes(buffer, batchConfig);
|
|
409
444
|
return;
|
|
410
445
|
}
|
|
411
|
-
// Convert buffer to string (IFC files are text)
|
|
412
|
-
const
|
|
413
|
-
const content = decoder.decode(buffer);
|
|
446
|
+
// Convert buffer to string (IFC files are text). SAB-safe.
|
|
447
|
+
const content = safeUtf8Decode(buffer);
|
|
414
448
|
yield { type: 'model-open', modelID: 0 };
|
|
415
|
-
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
|
|
449
|
+
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content, { mergeLayers: this.mergeLayers });
|
|
416
450
|
let totalMeshes = 0;
|
|
417
451
|
let extractedBuildingRotation = undefined;
|
|
418
452
|
const wasmBatchSize = getStreamingBatchSize(buffer, batchConfig);
|
|
@@ -485,6 +519,17 @@ export class GeometryProcessor {
|
|
|
485
519
|
* @param batchSize Number of unique geometries per batch (default: 25)
|
|
486
520
|
*/
|
|
487
521
|
async *processInstancedStreaming(buffer, batchSize = 25) {
|
|
522
|
+
const releaseWasmOperation = this.isNative
|
|
523
|
+
? null
|
|
524
|
+
: acquireWasmStreamingOperation('processInstancedStreaming');
|
|
525
|
+
try {
|
|
526
|
+
yield* this.processInstancedStreamingUnlocked(buffer, batchSize);
|
|
527
|
+
}
|
|
528
|
+
finally {
|
|
529
|
+
releaseWasmOperation?.();
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
async *processInstancedStreamingUnlocked(buffer, batchSize = 25) {
|
|
488
533
|
// Initialize if needed
|
|
489
534
|
if (this.isNative) {
|
|
490
535
|
if (!this.platformBridge) {
|
|
@@ -510,11 +555,12 @@ export class GeometryProcessor {
|
|
|
510
555
|
return;
|
|
511
556
|
}
|
|
512
557
|
// Convert buffer to string (IFC files are text)
|
|
513
|
-
|
|
514
|
-
|
|
558
|
+
// SAB-safe: caller may pass a SharedArrayBuffer-backed view, which
|
|
559
|
+
// both Firefox and Chromium reject in raw `TextDecoder.decode`.
|
|
560
|
+
const content = safeUtf8Decode(buffer);
|
|
515
561
|
// Use a placeholder model ID (IFC-Lite doesn't use model IDs)
|
|
516
562
|
yield { type: 'model-open', modelID: 0 };
|
|
517
|
-
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
|
|
563
|
+
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content, { mergeLayers: this.mergeLayers });
|
|
518
564
|
let totalGeometries = 0;
|
|
519
565
|
let totalInstances = 0;
|
|
520
566
|
for await (const batch of collector.collectInstancedGeometryStreaming(effectiveBatchSize)) {
|
|
@@ -567,12 +613,25 @@ export class GeometryProcessor {
|
|
|
567
613
|
*
|
|
568
614
|
* @param buffer IFC file buffer
|
|
569
615
|
*/
|
|
570
|
-
async *processParallel(buffer, sharedRtcOffset
|
|
616
|
+
async *processParallel(buffer, sharedRtcOffset,
|
|
617
|
+
/** Reuse a SAB the caller has already shared with another worker. */
|
|
618
|
+
existingSab,
|
|
619
|
+
/** Callback fired when the streaming pre-pass exports its entity index. */
|
|
620
|
+
onEntityIndex,
|
|
621
|
+
/** Phase 2 flag — use the single-controller worker (rayon-internal). */
|
|
622
|
+
useSingleController) {
|
|
571
623
|
// Initialize if needed
|
|
572
624
|
if (!this.bridge?.isInitialized()) {
|
|
573
625
|
await this.init();
|
|
574
626
|
}
|
|
575
|
-
yield* processParallel(buffer, this.coordinateHandler, sharedRtcOffset
|
|
627
|
+
yield* processParallel(buffer, this.coordinateHandler, sharedRtcOffset, existingSab, {
|
|
628
|
+
onEntityIndex,
|
|
629
|
+
useSingleController,
|
|
630
|
+
// Issue #540: forward the merge-layers preference snapshotted
|
|
631
|
+
// at construction time. processParallel posts `set-merge-layers`
|
|
632
|
+
// to every spawned worker right after `init`.
|
|
633
|
+
mergeLayers: this.mergeLayers,
|
|
634
|
+
});
|
|
576
635
|
}
|
|
577
636
|
/**
|
|
578
637
|
* Adaptive processing: Choose sync or streaming based on file size
|
|
@@ -611,10 +670,9 @@ export class GeometryProcessor {
|
|
|
611
670
|
console.timeEnd('[GeometryProcessor] native-adaptive-sync');
|
|
612
671
|
}
|
|
613
672
|
else {
|
|
614
|
-
// WASM PATH
|
|
615
|
-
const
|
|
616
|
-
const
|
|
617
|
-
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content);
|
|
673
|
+
// WASM PATH (SAB-safe).
|
|
674
|
+
const content = safeUtf8Decode(buffer);
|
|
675
|
+
const collector = new IfcLiteMeshCollector(this.bridge.getApi(), content, { mergeLayers: this.mergeLayers });
|
|
618
676
|
allMeshes = collector.collectMeshes();
|
|
619
677
|
}
|
|
620
678
|
// NOTE: The sync path (<2MB) does not support sharedRtcOffset override.
|
|
@@ -639,7 +697,7 @@ export class GeometryProcessor {
|
|
|
639
697
|
&& typeof navigator !== 'undefined'
|
|
640
698
|
&& (navigator.hardwareConcurrency ?? 1) > 1;
|
|
641
699
|
if (useParallel) {
|
|
642
|
-
yield* this.processParallel(buffer, options.sharedRtcOffset);
|
|
700
|
+
yield* this.processParallel(buffer, options.sharedRtcOffset, options.existingSab, options.onEntityIndex, options.useSingleController);
|
|
643
701
|
}
|
|
644
702
|
else {
|
|
645
703
|
yield* this.processStreaming(buffer, options.entityIndex, batchConfig, options.sharedRtcOffset);
|
|
@@ -670,8 +728,9 @@ export class GeometryProcessor {
|
|
|
670
728
|
if (!this.bridge || !this.bridge.isInitialized()) {
|
|
671
729
|
return null;
|
|
672
730
|
}
|
|
673
|
-
|
|
674
|
-
|
|
731
|
+
// SAB-safe: caller may pass a SharedArrayBuffer-backed view, which
|
|
732
|
+
// both Firefox and Chromium reject in raw `TextDecoder.decode`.
|
|
733
|
+
const content = safeUtf8Decode(buffer);
|
|
675
734
|
return this.bridge.parseSymbolicRepresentations(content);
|
|
676
735
|
}
|
|
677
736
|
/**
|
|
@@ -686,8 +745,9 @@ export class GeometryProcessor {
|
|
|
686
745
|
if (!this.bridge || !this.bridge.isInitialized()) {
|
|
687
746
|
return null;
|
|
688
747
|
}
|
|
689
|
-
|
|
690
|
-
|
|
748
|
+
// SAB-safe: caller may pass a SharedArrayBuffer-backed view, which
|
|
749
|
+
// both Firefox and Chromium reject in raw `TextDecoder.decode`.
|
|
750
|
+
const content = safeUtf8Decode(buffer);
|
|
691
751
|
return this.bridge.extractProfiles(content, modelIndex);
|
|
692
752
|
}
|
|
693
753
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Size-aware watchdog for the geometry streaming pipeline.
|
|
3
|
+
*
|
|
4
|
+
* The previous fixed 30 s first-batch watchdog was tuned for ~100 MB files.
|
|
5
|
+
* On a 1 GB IFC the pre-pass alone runs single-threaded WASM for 30-60 s
|
|
6
|
+
* even on fast hardware, so users were timing out before the first geometry
|
|
7
|
+
* batch was emitted. This helper scales the first-batch deadline with file
|
|
8
|
+
* size while preserving the snappy post-first-batch deadline (a real stall
|
|
9
|
+
* mid-stream is still flagged quickly).
|
|
10
|
+
*
|
|
11
|
+
* Floors are at the previous fixed values so we never *decrease* a timeout
|
|
12
|
+
* relative to what shipped before (no regression on small/medium files).
|
|
13
|
+
*/
|
|
14
|
+
export interface WatchdogInputs {
|
|
15
|
+
/** True when running the desktop-stable WASM path (faster pre-pass). */
|
|
16
|
+
desktopStableWasm: boolean;
|
|
17
|
+
/** Number of geometry batches already received from the iterator. */
|
|
18
|
+
batchCount: number;
|
|
19
|
+
/** File size in megabytes. Use 0 if unknown. */
|
|
20
|
+
fileSizeMB: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns the watchdog timeout in milliseconds for the current iterator
|
|
24
|
+
* step. Pure function. Always ≥ the previous fixed value.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getGeometryStreamWatchdogMs(inputs: WatchdogInputs): number;
|
|
27
|
+
//# sourceMappingURL=watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchdog.d.ts","sourceRoot":"","sources":["../src/watchdog.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;CACpB;AAoBD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAc1E"}
|
package/dist/watchdog.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
const FIRST_BATCH_FLOOR_MS_BROWSER = 30_000;
|
|
5
|
+
const FIRST_BATCH_FLOOR_MS_DESKTOP = 15_000;
|
|
6
|
+
const SUBSEQUENT_BATCH_FLOOR_MS_BROWSER = 15_000;
|
|
7
|
+
const SUBSEQUENT_BATCH_FLOOR_MS_DESKTOP = 5_000;
|
|
8
|
+
const FIRST_BATCH_PER_MB_BROWSER = 60; // 1 GB → +60 s, total 90 s
|
|
9
|
+
const FIRST_BATCH_PER_MB_DESKTOP = 30; // 1 GB → +30 s, total 45 s
|
|
10
|
+
// Subsequent-batch ramp. Workers in the streaming pipeline now process
|
|
11
|
+
// big chunks (~25 K jobs) per WASM call to avoid decoder-cache thrash
|
|
12
|
+
// (see geometry.worker.ts STREAM_BATCH_SIZE comment). On a 1 GB file
|
|
13
|
+
// each WASM call can take ~20-40 s when CPU is contended with the
|
|
14
|
+
// parser worker, so the subsequent-batch deadline must scale with file
|
|
15
|
+
// size too — otherwise the watchdog fires while workers are actively
|
|
16
|
+
// producing meshes.
|
|
17
|
+
const SUBSEQUENT_BATCH_PER_MB_BROWSER = 30; // 1 GB → +30 s, total 45 s
|
|
18
|
+
const SUBSEQUENT_BATCH_PER_MB_DESKTOP = 15; // 1 GB → +15 s, total 20 s
|
|
19
|
+
/**
|
|
20
|
+
* Returns the watchdog timeout in milliseconds for the current iterator
|
|
21
|
+
* step. Pure function. Always ≥ the previous fixed value.
|
|
22
|
+
*/
|
|
23
|
+
export function getGeometryStreamWatchdogMs(inputs) {
|
|
24
|
+
const desktopStableWasm = inputs.desktopStableWasm === true;
|
|
25
|
+
const batchCount = Math.max(0, Math.floor(inputs.batchCount));
|
|
26
|
+
const fileSizeMB = Math.max(0, inputs.fileSizeMB);
|
|
27
|
+
const floor = batchCount > 0
|
|
28
|
+
? (desktopStableWasm ? SUBSEQUENT_BATCH_FLOOR_MS_DESKTOP : SUBSEQUENT_BATCH_FLOOR_MS_BROWSER)
|
|
29
|
+
: (desktopStableWasm ? FIRST_BATCH_FLOOR_MS_DESKTOP : FIRST_BATCH_FLOOR_MS_BROWSER);
|
|
30
|
+
const perMb = batchCount > 0
|
|
31
|
+
? (desktopStableWasm ? SUBSEQUENT_BATCH_PER_MB_DESKTOP : SUBSEQUENT_BATCH_PER_MB_BROWSER)
|
|
32
|
+
: (desktopStableWasm ? FIRST_BATCH_PER_MB_DESKTOP : FIRST_BATCH_PER_MB_BROWSER);
|
|
33
|
+
return Math.max(floor, Math.round(floor + fileSizeMB * perMb));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=watchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../src/watchdog.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAyB/D,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAC5C,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACjD,MAAM,iCAAiC,GAAG,KAAK,CAAC;AAEhD,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAAG,2BAA2B;AACpE,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAAG,2BAA2B;AAEpE,uEAAuE;AACvE,sEAAsE;AACtE,qEAAqE;AACrE,kEAAkE;AAClE,uEAAuE;AACvE,qEAAqE;AACrE,oBAAoB;AACpB,MAAM,+BAA+B,GAAG,EAAE,CAAC,CAAE,2BAA2B;AACxE,MAAM,+BAA+B,GAAG,EAAE,CAAC,CAAE,2BAA2B;AAExE;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAsB;IAChE,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,KAAK,IAAI,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAElD,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC;QAC1B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,iCAAiC,CAAC;QAC7F,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAEtF,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC;QAC1B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,+BAA+B,CAAC;QACzF,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;IAElF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory-budget-aware geometry worker count.
|
|
3
|
+
*
|
|
4
|
+
* Each parallel worker holds a WASM instance whose linear memory grows to
|
|
5
|
+
* roughly `fileSize × 1.5` while building geometry. Spawning N workers
|
|
6
|
+
* therefore costs `N × 1.5 × fileSize` plus the main-thread footprint
|
|
7
|
+
* (original buffer + SAB + accumulating mesh data ≈ `fileSize × 2.5`).
|
|
8
|
+
*
|
|
9
|
+
* The previous heuristic only looked at core count, so a 16-core / 32 GB
|
|
10
|
+
* desktop loading a 1 GB file would spawn 8 workers and OOM. The fix is to
|
|
11
|
+
* cap worker count by available RAM after subtracting an OS/browser
|
|
12
|
+
* headroom and the main-thread budget.
|
|
13
|
+
*/
|
|
14
|
+
export interface WorkerCountInputs {
|
|
15
|
+
/** File size in megabytes. */
|
|
16
|
+
fileSizeMB: number;
|
|
17
|
+
/** `navigator.hardwareConcurrency`, 1+. */
|
|
18
|
+
cores: number;
|
|
19
|
+
/**
|
|
20
|
+
* `navigator.deviceMemory` value (whole gigabytes; capped at 8 by browsers
|
|
21
|
+
* when telemetry-sensitive). When unknown, callers should pass 8.
|
|
22
|
+
*/
|
|
23
|
+
deviceMemoryGB: number;
|
|
24
|
+
/** Total geometry jobs the pre-pass discovered. Workers can't exceed this. */
|
|
25
|
+
totalJobs: number;
|
|
26
|
+
/**
|
|
27
|
+
* Lower bound on workers. Defaults to 1 — never returns 0 when there are
|
|
28
|
+
* jobs to do.
|
|
29
|
+
*/
|
|
30
|
+
minWorkers?: number;
|
|
31
|
+
/**
|
|
32
|
+
* Upper bound on workers regardless of resources. Defaults to 8 to match
|
|
33
|
+
* the previous hard cap.
|
|
34
|
+
*/
|
|
35
|
+
maxWorkers?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface WorkerCountResult {
|
|
38
|
+
count: number;
|
|
39
|
+
/** For diagnostics: which constraint was binding. */
|
|
40
|
+
reason: 'cores' | 'memory' | 'jobs' | 'min' | 'max';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Returns the number of parallel geometry workers to spawn for a given file
|
|
44
|
+
* and host capability. Pure function — the only side effect is the chosen
|
|
45
|
+
* number. All inputs validated, result clamped to `[minWorkers, maxWorkers]`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function computeWorkerCount(inputs: WorkerCountInputs): WorkerCountResult;
|
|
48
|
+
/**
|
|
49
|
+
* Convenience wrapper that returns just the integer count.
|
|
50
|
+
*/
|
|
51
|
+
export declare function pickWorkerCount(inputs: WorkerCountInputs): number;
|
|
52
|
+
//# sourceMappingURL=worker-count.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-count.d.ts","sourceRoot":"","sources":["../src/worker-count.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CA0E/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
* Returns the number of parallel geometry workers to spawn for a given file
|
|
6
|
+
* and host capability. Pure function — the only side effect is the chosen
|
|
7
|
+
* number. All inputs validated, result clamped to `[minWorkers, maxWorkers]`.
|
|
8
|
+
*/
|
|
9
|
+
export function computeWorkerCount(inputs) {
|
|
10
|
+
const fileSizeMB = Math.max(0, inputs.fileSizeMB);
|
|
11
|
+
const cores = Math.max(1, Math.floor(inputs.cores));
|
|
12
|
+
// `navigator.deviceMemory` is capped at 8 GB by browsers as a
|
|
13
|
+
// fingerprinting-mitigation measure. When cores indicates a Pro/Max-tier
|
|
14
|
+
// machine (10+) we know in practice it ships with ≥16 GB, so we lift
|
|
15
|
+
// the floor accordingly. Without this, the memory budget computed
|
|
16
|
+
// below pins us to 2 workers on huge files even on 32 GB desktops.
|
|
17
|
+
const reportedMemoryGB = Math.max(1, inputs.deviceMemoryGB);
|
|
18
|
+
const deviceMemoryGB = cores >= 10
|
|
19
|
+
? Math.max(reportedMemoryGB, 16)
|
|
20
|
+
: reportedMemoryGB;
|
|
21
|
+
const totalJobs = Math.max(0, Math.floor(inputs.totalJobs));
|
|
22
|
+
const minWorkers = Math.max(1, Math.floor(inputs.minWorkers ?? 1));
|
|
23
|
+
const maxWorkers = Math.max(minWorkers, Math.floor(inputs.maxWorkers ?? 8));
|
|
24
|
+
if (totalJobs === 0) {
|
|
25
|
+
// No jobs → no workers. Spawning even one worker pays for a
|
|
26
|
+
// ~250ms WASM compile that has nothing to do; the docstring's
|
|
27
|
+
// non-zero guarantee is scoped to "when there are jobs to do."
|
|
28
|
+
return { count: 0, reason: 'jobs' };
|
|
29
|
+
}
|
|
30
|
+
// Cores-based ceiling (preserves the previous tier behaviour, but expressed
|
|
31
|
+
// as upper bounds rather than exact picks).
|
|
32
|
+
let coresCap;
|
|
33
|
+
if (cores >= 16 && deviceMemoryGB >= 16) {
|
|
34
|
+
coresCap = Math.min(maxWorkers, Math.floor(cores / 2));
|
|
35
|
+
}
|
|
36
|
+
else if (cores >= 12 && deviceMemoryGB >= 8) {
|
|
37
|
+
// 12+ cores indicates M-series Pro 12-core or M-series Max with active
|
|
38
|
+
// cooling — sustained 4 workers on huge files. The memoryCap below
|
|
39
|
+
// still gates if RAM isn't there. Memory floor lifted to 16 (see top)
|
|
40
|
+
// to bypass the browser's deviceMemory cap.
|
|
41
|
+
coresCap = fileSizeMB > 512 ? 4 : 5;
|
|
42
|
+
}
|
|
43
|
+
else if (cores >= 10 && deviceMemoryGB >= 8) {
|
|
44
|
+
// 10+ cores indicates M-series Pro/Max or similar with active cooling
|
|
45
|
+
// — they can sustain 3 workers on huge files without throttling.
|
|
46
|
+
coresCap = fileSizeMB > 512 ? 3 : 4;
|
|
47
|
+
}
|
|
48
|
+
else if (cores >= 8 && deviceMemoryGB >= 8) {
|
|
49
|
+
// Fanless laptops (MBA M-series, 8 cores) throttle hard at 4+ workers.
|
|
50
|
+
coresCap = fileSizeMB > 512 ? 2 : 3;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
coresCap = Math.max(1, Math.min(2, Math.floor(cores / 2)));
|
|
54
|
+
}
|
|
55
|
+
// Memory budget. Reserve 25% of reported RAM (or 1 GB, whichever is larger)
|
|
56
|
+
// for the OS, browser, GPU pool, and other tabs. Subtract main-thread cost
|
|
57
|
+
// (`fileSize × 2.5`). Whatever remains funds workers at `fileSize × 1.5`.
|
|
58
|
+
const totalRAMmb = deviceMemoryGB * 1024;
|
|
59
|
+
const reservedHeadroomMB = Math.max(1024, totalRAMmb * 0.25);
|
|
60
|
+
const mainBudgetMB = fileSizeMB * 2.5;
|
|
61
|
+
const perWorkerMB = Math.max(64, fileSizeMB * 1.5);
|
|
62
|
+
const remaining = totalRAMmb - reservedHeadroomMB - mainBudgetMB;
|
|
63
|
+
const memoryCap = remaining > 0
|
|
64
|
+
? Math.max(1, Math.floor(remaining / perWorkerMB))
|
|
65
|
+
: 1;
|
|
66
|
+
// Final pick: tightest of the three ceilings, then clamp.
|
|
67
|
+
const candidates = [
|
|
68
|
+
{ value: coresCap, reason: 'cores' },
|
|
69
|
+
{ value: memoryCap, reason: 'memory' },
|
|
70
|
+
{ value: totalJobs, reason: 'jobs' },
|
|
71
|
+
{ value: maxWorkers, reason: 'max' },
|
|
72
|
+
];
|
|
73
|
+
let pick = candidates[0];
|
|
74
|
+
for (let i = 1; i < candidates.length; i++) {
|
|
75
|
+
if (candidates[i].value < pick.value)
|
|
76
|
+
pick = candidates[i];
|
|
77
|
+
}
|
|
78
|
+
if (pick.value < minWorkers) {
|
|
79
|
+
return { count: minWorkers, reason: 'min' };
|
|
80
|
+
}
|
|
81
|
+
return { count: pick.value, reason: pick.reason };
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Convenience wrapper that returns just the integer count.
|
|
85
|
+
*/
|
|
86
|
+
export function pickWorkerCount(inputs) {
|
|
87
|
+
return computeWorkerCount(inputs).count;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=worker-count.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-count.js","sourceRoot":"","sources":["../src/worker-count.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/geometry",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.2",
|
|
4
4
|
"description": "Geometry processing bridge for IFC-Lite - 1.9x faster than web-ifc",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@ifc-lite/data": "^1.
|
|
16
|
-
"@ifc-lite/wasm": "^1.16.
|
|
15
|
+
"@ifc-lite/data": "^1.17.0",
|
|
16
|
+
"@ifc-lite/wasm": "^1.16.10",
|
|
17
|
+
"@ifc-lite/wasm-threaded": "0.1.0"
|
|
17
18
|
},
|
|
18
19
|
"optionalDependencies": {
|
|
19
20
|
"@tauri-apps/api": "^2.0.0"
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
"README.md"
|
|
48
49
|
],
|
|
49
50
|
"scripts": {
|
|
50
|
-
"build": "pnpm exec tsc && node -e \"const
|
|
51
|
+
"build": "pnpm exec tsc && node -e \"const fs=require('fs');for(const f of ['dist/index.js','dist/geometry-parallel.js']){if(!fs.existsSync(f))continue;fs.writeFileSync(f,fs.readFileSync(f,'utf8').replace(/geometry\\.worker\\.ts/g,'geometry.worker.js').replace(/geometry-controller\\.worker\\.ts/g,'geometry-controller.worker.js'))}\"",
|
|
51
52
|
"dev": "pnpm exec tsc --watch",
|
|
52
53
|
"test": "vitest run"
|
|
53
54
|
}
|