@ifc-lite/geometry 1.1.7 → 1.2.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/LICENSE +373 -0
- package/dist/default-materials.d.ts.map +1 -1
- package/dist/default-materials.js +12 -1
- package/dist/default-materials.js.map +1 -1
- package/dist/ifc-lite-bridge.d.ts +1 -0
- package/dist/ifc-lite-bridge.d.ts.map +1 -1
- package/dist/ifc-lite-bridge.js.map +1 -1
- package/dist/ifc-lite-mesh-collector.d.ts +12 -2
- package/dist/ifc-lite-mesh-collector.d.ts.map +1 -1
- package/dist/ifc-lite-mesh-collector.js +63 -7
- package/dist/ifc-lite-mesh-collector.js.map +1 -1
- package/dist/index.d.ts +31 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -64
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wasm-memory-manager.d.ts +178 -0
- package/dist/wasm-memory-manager.d.ts.map +1 -0
- package/dist/wasm-memory-manager.js +86 -0
- package/dist/wasm-memory-manager.js.map +1 -0
- package/dist/zero-copy-collector.d.ts +158 -0
- package/dist/zero-copy-collector.d.ts.map +1 -0
- package/dist/zero-copy-collector.js +224 -0
- package/dist/zero-copy-collector.js.map +1 -0
- package/package.json +8 -8
- package/dist/geometry.worker.d.ts +0 -2
- package/dist/geometry.worker.d.ts.map +0 -1
- package/dist/geometry.worker.js +0 -116
- package/dist/geometry.worker.js.map +0 -1
- package/dist/worker-pool.d.ts +0 -56
- package/dist/worker-pool.d.ts.map +0 -1
- package/dist/worker-pool.js +0 -160
- package/dist/worker-pool.js.map +0 -1
package/dist/worker-pool.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
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
|
-
* Worker Pool for geometry processing tasks
|
|
6
|
-
*/
|
|
7
|
-
export class WorkerPool {
|
|
8
|
-
workers = [];
|
|
9
|
-
taskQueue = [];
|
|
10
|
-
activeTasks = new Map();
|
|
11
|
-
availableWorkers = new Set();
|
|
12
|
-
workerCount;
|
|
13
|
-
workerUrl;
|
|
14
|
-
initialized = false;
|
|
15
|
-
constructor(workerUrl, workerCount) {
|
|
16
|
-
this.workerUrl = workerUrl;
|
|
17
|
-
this.workerCount = workerCount ?? Math.max(1, navigator.hardwareConcurrency ?? 4);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Initialize worker pool
|
|
21
|
-
*/
|
|
22
|
-
async init() {
|
|
23
|
-
if (this.initialized)
|
|
24
|
-
return;
|
|
25
|
-
const initStart = performance.now();
|
|
26
|
-
// Check if workers are available
|
|
27
|
-
if (typeof Worker === 'undefined') {
|
|
28
|
-
console.warn('[WorkerPool] Web Workers not available');
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
try {
|
|
32
|
-
// Spawn workers
|
|
33
|
-
for (let i = 0; i < this.workerCount; i++) {
|
|
34
|
-
const workerStart = performance.now();
|
|
35
|
-
const worker = new Worker(this.workerUrl, { type: 'module' });
|
|
36
|
-
// Wait for worker to be ready before setting up main handler
|
|
37
|
-
await new Promise((resolve) => {
|
|
38
|
-
const readyHandler = (e) => {
|
|
39
|
-
if (e.data.type === 'ready') {
|
|
40
|
-
worker.removeEventListener('message', readyHandler);
|
|
41
|
-
// Now set up the main message handler
|
|
42
|
-
worker.onmessage = (e) => {
|
|
43
|
-
this.handleMessage(worker, e);
|
|
44
|
-
};
|
|
45
|
-
const workerInitTime = performance.now() - workerStart;
|
|
46
|
-
console.log(`[WorkerPool] Worker ${i} ready in ${workerInitTime.toFixed(2)}ms`);
|
|
47
|
-
resolve();
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
worker.addEventListener('message', readyHandler);
|
|
51
|
-
});
|
|
52
|
-
worker.onerror = (error) => {
|
|
53
|
-
console.error(`[WorkerPool] Worker ${i} error:`, error);
|
|
54
|
-
this.availableWorkers.delete(worker);
|
|
55
|
-
};
|
|
56
|
-
this.workers.push(worker);
|
|
57
|
-
this.availableWorkers.add(worker);
|
|
58
|
-
}
|
|
59
|
-
this.initialized = true;
|
|
60
|
-
const totalInitTime = performance.now() - initStart;
|
|
61
|
-
console.log(`[WorkerPool] Initialized ${this.workers.length} workers in ${totalInitTime.toFixed(2)}ms`);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error('[WorkerPool] Failed to initialize:', error);
|
|
65
|
-
// Workers unavailable, but don't throw - fallback to main thread
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Check if workers are available
|
|
70
|
-
*/
|
|
71
|
-
isAvailable() {
|
|
72
|
-
return this.initialized && this.workers.length > 0 && this.availableWorkers.size > 0;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Submit a task to the worker pool
|
|
76
|
-
*/
|
|
77
|
-
async submit(type, data) {
|
|
78
|
-
if (!this.isAvailable()) {
|
|
79
|
-
throw new Error('Worker pool not available. Use fallback to main thread.');
|
|
80
|
-
}
|
|
81
|
-
return new Promise((resolve, reject) => {
|
|
82
|
-
const task = {
|
|
83
|
-
id: crypto.randomUUID(),
|
|
84
|
-
type,
|
|
85
|
-
data,
|
|
86
|
-
resolve,
|
|
87
|
-
reject,
|
|
88
|
-
};
|
|
89
|
-
this.taskQueue.push(task);
|
|
90
|
-
this.processQueue();
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Process queued tasks
|
|
95
|
-
*/
|
|
96
|
-
processQueue() {
|
|
97
|
-
if (this.taskQueue.length === 0 || this.availableWorkers.size === 0) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
// Get next available worker (round-robin)
|
|
101
|
-
const worker = Array.from(this.availableWorkers)[0];
|
|
102
|
-
const task = this.taskQueue.shift();
|
|
103
|
-
if (!task || !worker)
|
|
104
|
-
return;
|
|
105
|
-
// Move task to active tasks
|
|
106
|
-
this.activeTasks.set(task.id, task);
|
|
107
|
-
// Mark worker as busy
|
|
108
|
-
this.availableWorkers.delete(worker);
|
|
109
|
-
// Send task to worker
|
|
110
|
-
worker.postMessage({
|
|
111
|
-
id: task.id,
|
|
112
|
-
type: task.type,
|
|
113
|
-
data: task.data,
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Handle message from worker
|
|
118
|
-
*/
|
|
119
|
-
handleMessage(worker, e) {
|
|
120
|
-
const { id, type, result, error } = e.data;
|
|
121
|
-
if (type === 'ready') {
|
|
122
|
-
// Worker is ready, already handled in init()
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
// Find task in active tasks
|
|
126
|
-
const task = this.activeTasks.get(id);
|
|
127
|
-
if (!task) {
|
|
128
|
-
// Task not found
|
|
129
|
-
console.warn(`[WorkerPool] Task ${id} not found`);
|
|
130
|
-
this.availableWorkers.add(worker);
|
|
131
|
-
this.processQueue();
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
// Remove from active tasks
|
|
135
|
-
this.activeTasks.delete(id);
|
|
136
|
-
if (type === 'task-result') {
|
|
137
|
-
task.resolve(result);
|
|
138
|
-
}
|
|
139
|
-
else if (type === 'task-error') {
|
|
140
|
-
task.reject(new Error(error || 'Unknown worker error'));
|
|
141
|
-
}
|
|
142
|
-
// Return worker to available pool
|
|
143
|
-
this.availableWorkers.add(worker);
|
|
144
|
-
this.processQueue();
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Terminate all workers
|
|
148
|
-
*/
|
|
149
|
-
terminate() {
|
|
150
|
-
for (const worker of this.workers) {
|
|
151
|
-
worker.terminate();
|
|
152
|
-
}
|
|
153
|
-
this.workers = [];
|
|
154
|
-
this.availableWorkers.clear();
|
|
155
|
-
this.taskQueue = [];
|
|
156
|
-
this.activeTasks.clear();
|
|
157
|
-
this.initialized = false;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=worker-pool.js.map
|
package/dist/worker-pool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"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"}
|