@ifc-lite/geometry 1.1.7 → 1.2.1

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 (46) hide show
  1. package/LICENSE +373 -0
  2. package/dist/default-materials.d.ts.map +1 -1
  3. package/dist/default-materials.js +12 -1
  4. package/dist/default-materials.js.map +1 -1
  5. package/dist/ifc-lite-bridge.d.ts +1 -0
  6. package/dist/ifc-lite-bridge.d.ts.map +1 -1
  7. package/dist/ifc-lite-bridge.js.map +1 -1
  8. package/dist/ifc-lite-mesh-collector.d.ts +12 -2
  9. package/dist/ifc-lite-mesh-collector.d.ts.map +1 -1
  10. package/dist/ifc-lite-mesh-collector.js +63 -7
  11. package/dist/ifc-lite-mesh-collector.js.map +1 -1
  12. package/dist/index.d.ts +40 -13
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +167 -85
  15. package/dist/index.js.map +1 -1
  16. package/dist/native-bridge.d.ts +24 -0
  17. package/dist/native-bridge.d.ts.map +1 -0
  18. package/dist/native-bridge.js +141 -0
  19. package/dist/native-bridge.js.map +1 -0
  20. package/dist/platform-bridge.d.ts +96 -0
  21. package/dist/platform-bridge.d.ts.map +1 -0
  22. package/dist/platform-bridge.js +26 -0
  23. package/dist/platform-bridge.js.map +1 -0
  24. package/dist/types.d.ts +1 -0
  25. package/dist/types.d.ts.map +1 -1
  26. package/dist/wasm-bridge.d.ts +21 -0
  27. package/dist/wasm-bridge.d.ts.map +1 -0
  28. package/dist/wasm-bridge.js +111 -0
  29. package/dist/wasm-bridge.js.map +1 -0
  30. package/dist/wasm-memory-manager.d.ts +178 -0
  31. package/dist/wasm-memory-manager.d.ts.map +1 -0
  32. package/dist/wasm-memory-manager.js +86 -0
  33. package/dist/wasm-memory-manager.js.map +1 -0
  34. package/dist/zero-copy-collector.d.ts +158 -0
  35. package/dist/zero-copy-collector.d.ts.map +1 -0
  36. package/dist/zero-copy-collector.js +224 -0
  37. package/dist/zero-copy-collector.js.map +1 -0
  38. package/package.json +12 -8
  39. package/dist/geometry.worker.d.ts +0 -2
  40. package/dist/geometry.worker.d.ts.map +0 -1
  41. package/dist/geometry.worker.js +0 -116
  42. package/dist/geometry.worker.js.map +0 -1
  43. package/dist/worker-pool.d.ts +0 -56
  44. package/dist/worker-pool.d.ts.map +0 -1
  45. package/dist/worker-pool.js +0 -160
  46. package/dist/worker-pool.js.map +0 -1
@@ -1,56 +0,0 @@
1
- /**
2
- * Worker Pool - Generic worker pool with task queue
3
- * Supports multiple task types and zero-copy transferable objects
4
- */
5
- export type TaskType = 'mesh-collection' | 'generate-lod' | 'build-bvh';
6
- export interface Task<T = any> {
7
- id: string;
8
- type: TaskType;
9
- data: any;
10
- resolve: (value: T) => void;
11
- reject: (error: Error) => void;
12
- }
13
- export interface WorkerMessage {
14
- id: string;
15
- type: 'task-result' | 'task-error' | 'ready';
16
- result?: any;
17
- error?: string;
18
- }
19
- /**
20
- * Worker Pool for geometry processing tasks
21
- */
22
- export declare class WorkerPool {
23
- private workers;
24
- private taskQueue;
25
- private activeTasks;
26
- private availableWorkers;
27
- private workerCount;
28
- private workerUrl;
29
- private initialized;
30
- constructor(workerUrl: URL | string, workerCount?: number);
31
- /**
32
- * Initialize worker pool
33
- */
34
- init(): Promise<void>;
35
- /**
36
- * Check if workers are available
37
- */
38
- isAvailable(): boolean;
39
- /**
40
- * Submit a task to the worker pool
41
- */
42
- submit<T>(type: TaskType, data: any): Promise<T>;
43
- /**
44
- * Process queued tasks
45
- */
46
- private processQueue;
47
- /**
48
- * Handle message from worker
49
- */
50
- private handleMessage;
51
- /**
52
- * Terminate all workers
53
- */
54
- terminate(): void;
55
- }
56
- //# sourceMappingURL=worker-pool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"AAIA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;AAExE,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,SAAS,EAAE,GAAG,GAAG,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAKzD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD3B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBtD;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAgCrB;;OAEG;IACH,SAAS,IAAI,IAAI;CAUlB"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"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"}