@pilotdev/pilot-bim-dataprovider 24.23.0 → 24.24.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 (34) hide show
  1. package/lib/src/model/BimDataCloudPart.d.ts +2 -0
  2. package/lib/src/model/BimDataCloudPart.js +8 -0
  3. package/lib/src/model/BimDataCloudPart.js.map +1 -1
  4. package/lib/src/model/BimDataModelPart.d.ts +2 -1
  5. package/lib/src/model/BimDataModelPart.js +7 -6
  6. package/lib/src/model/BimDataModelPart.js.map +1 -1
  7. package/lib/src/model/BimDataPart.d.ts +5 -3
  8. package/lib/src/model/BimDataPart.js +9 -3
  9. package/lib/src/model/BimDataPart.js.map +1 -1
  10. package/lib/src/model/BimDataProvider.js.map +1 -1
  11. package/lib/src/model/Consts.d.ts +1 -0
  12. package/lib/src/model/Consts.js +1 -0
  13. package/lib/src/model/Consts.js.map +1 -1
  14. package/lib/src/utils/ViewerTools.d.ts +1 -1
  15. package/lib/src/utils/ViewerTools.js +4 -4
  16. package/lib/src/utils/ViewerTools.js.map +1 -1
  17. package/lib/src/wasm/BimCloudPartAccessor.d.ts +1 -0
  18. package/lib/src/wasm/BimCloudPartAccessor.js +10 -1
  19. package/lib/src/wasm/BimCloudPartAccessor.js.map +1 -1
  20. package/lib/src/wasm/BimDataModelPartAccessor.d.ts +1 -1
  21. package/lib/src/wasm/BimDataModelPartAccessor.js +9 -10
  22. package/lib/src/wasm/BimDataModelPartAccessor.js.map +1 -1
  23. package/lib/src/wasm/{wasm.worker.d.ts → WasmWorker.d.ts} +17 -10
  24. package/lib/src/wasm/{wasm.worker.js → WasmWorker.js} +25 -53
  25. package/lib/src/wasm/WasmWorker.js.map +1 -0
  26. package/lib/src/wasm/WasmWorkerThreadSafeWrapper.d.ts +42 -0
  27. package/lib/src/wasm/WasmWorkerThreadSafeWrapper.js +135 -0
  28. package/lib/src/wasm/WasmWorkerThreadSafeWrapper.js.map +1 -0
  29. package/lib/src/wasm/pilot_bim_dataprovider.d.ts +5 -1
  30. package/lib/src/wasm/pilot_bim_dataprovider.wasm +0 -0
  31. package/lib/src/wasm/wasm.worker-node.cjs +1 -1
  32. package/lib/src/wasm/wasm.worker-web.cjs +1 -1
  33. package/package.json +1 -1
  34. package/lib/src/wasm/wasm.worker.js.map +0 -1
@@ -6,15 +6,18 @@ import { AsyncFileSystem, ProxyFileSystem } from "../file-system/IFileSystem.js"
6
6
  import { BimCloudPartAccessor } from "./BimCloudPartAccessor.js";
7
7
  import { BimDataPartAccessor } from "./BimDataPartAccessor.js";
8
8
  import { BimDataModelPartAccessor } from "./BimDataModelPartAccessor.js";
9
- import { expose } from "./worker.js";
10
- const HEAP_SIZE_LIMIT = 1024 * 1024 * 1024;
11
9
  export class WasmWorker {
12
10
  constructor() {
13
11
  this._cachedCloudReaders = new Map();
14
- this._locker = { isLocked: false, lock: Promise.resolve() };
15
12
  console.log(`BimDataProvider worker: (env: ${isNode() ? 'Node.js' : 'web'}, isSecureContext: ${isSecureContext}, isCrossOriginIsolated: ${isCrossOriginIsolated})`);
16
13
  this._fs = isOPFSEnabled ? new AsyncFileSystem() : new ProxyFileSystem();
17
14
  }
15
+ get module() {
16
+ return this._module;
17
+ }
18
+ get cachedCloudReaders() {
19
+ return this._cachedCloudReaders;
20
+ }
18
21
  async init() {
19
22
  const moduleOverrides = {
20
23
  print: (s) => console.log(s),
@@ -50,7 +53,7 @@ export class WasmWorker {
50
53
  }
51
54
  }
52
55
  async close(modelPartId) {
53
- this._cachedCloudReaders.get(modelPartId)?.close();
56
+ await this._cachedCloudReaders.get(modelPartId)?.close();
54
57
  this._cachedCloudReaders.delete(modelPartId);
55
58
  }
56
59
  async remove(modelPartId) {
@@ -67,20 +70,9 @@ export class WasmWorker {
67
70
  await this._fs.dispose();
68
71
  }
69
72
  async flushMemory() {
70
- if (!this._module || !isSecureContext)
71
- return;
72
- const cloudParts = Array.from(this._cachedCloudReaders.keys());
73
- for await (const [, reader] of this._cachedCloudReaders) {
74
- await reader.close();
75
- }
76
- this._cachedCloudReaders.clear();
77
- await this.init();
78
- for await (const cloudId of cloudParts) {
79
- await this.cacheCloudPart(cloudId);
80
- }
73
+ /** */
81
74
  }
82
75
  async isValidDatabase(modelPartId) {
83
- await this.checkMemory();
84
76
  if (this._fs.isFileExists(modelPartId)) {
85
77
  const modelPart = new BimDataPartAccessor(modelPartId, this._module);
86
78
  return this.runSyncFileOp(modelPartId, () => modelPart.isValidDatabase());
@@ -89,20 +81,13 @@ export class WasmWorker {
89
81
  return false;
90
82
  }
91
83
  // ModelPart
92
- async auditModelPart(modelPartId) {
93
- await this.checkMemory();
94
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
95
- return this.runSyncFileOp(modelPartId, () => modelPart.auditModelDatabase());
96
- }
97
84
  async updateModelPart(modelPartId, buffer) {
98
- await this.checkMemory();
99
85
  const tmpModelPartId = "tmp_" + (0xffffffff * Math.random() >>> 0);
100
86
  await this.open(tmpModelPartId, buffer);
101
87
  await this.mergeModelParts(modelPartId, tmpModelPartId);
102
88
  await this.remove(tmpModelPartId);
103
89
  }
104
90
  async mergeModelParts(targetId, sourceId) {
105
- await this.checkMemory();
106
91
  const module = this._module;
107
92
  const modelPart = new BimDataModelPartAccessor(targetId, module);
108
93
  const modelPartId = modelPart.path;
@@ -113,76 +98,75 @@ export class WasmWorker {
113
98
  await this.runSyncFileOp([targetId, sourceId], () => modelPart.merge(modelPartId, sourcePartId));
114
99
  }
115
100
  async getAllTessellations(modelPartId, compressed, transmit) {
116
- await this.checkMemory();
117
101
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
118
102
  return this.runSyncFileOp(modelPartId, () => modelPart.getAllTessellations(compressed, transmit));
119
103
  }
120
104
  async getTessellations(modelPartId, versionFrom, versionTo, compressed, transmit) {
121
- await this.checkMemory();
122
105
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
123
106
  return this.runSyncFileOp(modelPartId, () => modelPart.getTessellations(versionFrom, versionTo, compressed, transmit));
124
107
  }
125
108
  async getTessellation(modelPartId, tessellationKey, version, compressed) {
126
- await this.checkMemory();
127
109
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
128
110
  return this.runSyncFileOp(modelPartId, () => modelPart.getTessellation(tessellationKey, version, compressed));
129
111
  }
112
+ async getTessellationsByIds(modelPartId, tessellations, version, compressed, transmit) {
113
+ const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
114
+ return this.runSyncFileOp(modelPartId, () => modelPart.getTessellationsByIds(tessellations, version, compressed, transmit));
115
+ }
130
116
  async getAllElements(modelPartId, transmit) {
131
- await this.checkMemory();
132
117
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
133
118
  return this.runSyncFileOp(modelPartId, () => modelPart.getAllElements(transmit));
134
119
  }
135
120
  async getElements(modelPartId, versionFrom, versionTo, transmit) {
136
- await this.checkMemory();
137
121
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
138
122
  return this.runSyncFileOp(modelPartId, () => modelPart.getElements(versionFrom, versionTo, transmit));
139
123
  }
140
124
  async getDiffElements(modelPartId, versionFrom, versionTo, transmit) {
141
- await this.checkMemory();
142
125
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
143
126
  return this.runSyncFileOp(modelPartId, () => modelPart.getDiffElements(versionFrom, versionTo, transmit));
144
127
  }
145
128
  async getElementProperties(modelPartId, elementId, version) {
146
- await this.checkMemory();
147
129
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
148
130
  return this.runSyncFileOp(modelPartId, () => modelPart.getElementProperties(elementId, version));
149
131
  }
150
132
  async getElementTessellations(modelPartId, versionFrom, versionTo, compressed) {
151
- await this.checkMemory();
152
133
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
153
134
  return this.runSyncFileOp(modelPartId, () => modelPart.getElementTessellations(versionFrom, versionTo, compressed));
154
135
  }
155
136
  async getAllVersions(modelPartId) {
156
- await this.checkMemory();
157
137
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
158
138
  return this.runSyncFileOp(modelPartId, () => modelPart.getAllVersions());
159
139
  }
160
140
  async getLatestVersion(modelPartId) {
161
- await this.checkMemory();
162
141
  const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
163
142
  return this.runSyncFileOp(modelPartId, () => modelPart.getLatestVersion());
164
143
  }
165
144
  // CloudPart
166
145
  async cacheCloudPart(modelPartId) {
167
- const reader = new BimCloudPartAccessor(modelPartId, this._module, () => this._fs.openSyncFileAccess(modelPartId), () => Promise.resolve(this._fs.closeSyncFileAccess(modelPartId)));
168
- await this._cachedCloudReaders.get(modelPartId)?.close();
169
- await reader.open();
170
- this._cachedCloudReaders.set(modelPartId, reader);
146
+ return this.runSyncFileOp(modelPartId, async () => {
147
+ const reader = new BimCloudPartAccessor(modelPartId, this._module, () => this._fs.openSyncFileAccess(modelPartId), () => Promise.resolve(this._fs.closeSyncFileAccess(modelPartId)));
148
+ await this._cachedCloudReaders.get(modelPartId)?.close();
149
+ await reader.open();
150
+ this._cachedCloudReaders.set(modelPartId, reader);
151
+ });
171
152
  }
172
153
  async getCloudPoints(modelPartId, index) {
173
- await this.checkMemory();
174
154
  const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
175
155
  return this.runSyncFileOp(modelPartId, () => modelPart.getCloudPoints(index));
176
156
  }
157
+ async getCloudPointsArray(modelPartId, indicies, transmit) {
158
+ const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
159
+ return this.runSyncFileOp(modelPartId, () => modelPart.getCloudPointsArray(indicies, transmit));
160
+ }
177
161
  getCloudHierarchy(modelPartId) {
178
162
  const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
179
163
  return this.runSyncFileOp(modelPartId, () => modelPart.getCloudHierarchy());
180
164
  }
181
- getCloudParameters(modelPartId) {
165
+ async getCloudParameters(modelPartId) {
182
166
  const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
183
167
  return this.runSyncFileOp(modelPartId, () => modelPart.getCloudParameters());
184
168
  }
185
- getCloudMetadata(modelPartId) {
169
+ async getCloudMetadata(modelPartId) {
186
170
  const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
187
171
  return this.runSyncFileOp(modelPartId, () => modelPart.getCloudMetadata());
188
172
  }
@@ -214,17 +198,5 @@ export class WasmWorker {
214
198
  }
215
199
  }
216
200
  }
217
- async checkMemory() {
218
- if (this._locker.isLocked)
219
- await this._locker.lock;
220
- const heapSize = this._module?.HEAP8.byteLength;
221
- if (heapSize && heapSize > HEAP_SIZE_LIMIT) {
222
- this._locker.isLocked = true;
223
- this._locker.lock = this.flushMemory();
224
- await this._locker.lock;
225
- this._locker.isLocked = false;
226
- }
227
- }
228
201
  }
229
- expose(WasmWorker);
230
- //# sourceMappingURL=wasm.worker.js.map
202
+ //# sourceMappingURL=WasmWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmWorker.js","sourceRoot":"","sources":["../../../src/wasm/WasmWorker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { IWasmWorker } from "./WasmWorker.js";
2
+ import { BimDataTessellation } from "../model/BimDataTessellation.js";
3
+ import { BimCloudHierarchyItem, BimCloudMetadata, BimDataElement } from "../model/BimDataElement.js";
4
+ import { BimDataElementPropertySet } from "../model/BimDataElementPropertySet.js";
5
+ import { BimCloudPartAccessor } from "./BimCloudPartAccessor.js";
6
+ import { IWasmBimModule } from "./pilot_bim_dataprovider.js";
7
+ export declare class WasmWorkerThreadSafeWrapper implements IWasmWorker {
8
+ private _memoryLocker;
9
+ private _operationsSet;
10
+ private _wasmWorker;
11
+ get module(): IWasmBimModule | undefined;
12
+ get cachedCloudReaders(): Map<string, BimCloudPartAccessor>;
13
+ init(): Promise<void>;
14
+ dispose(): Promise<void>;
15
+ open(id: string, buffer?: ArrayBuffer): Promise<void>;
16
+ write(modelPartId: string, buffer: ArrayBuffer, position: number): Promise<void>;
17
+ close(modelPartId: string): Promise<void>;
18
+ remove(modelPartId: string): Promise<void>;
19
+ isValidDatabase(modelPartId: string): Promise<boolean>;
20
+ updateModelPart(modelPartId: string, buffer: ArrayBuffer): Promise<void>;
21
+ mergeModelParts(targetId: string, sourceId: string): Promise<void>;
22
+ getAllTessellations(modelPartId: string, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<void>;
23
+ getTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<void>;
24
+ getTessellation(modelPartId: string, tessellationKey: string, version: bigint, compressed: boolean): Promise<BimDataTessellation>;
25
+ getTessellationsByIds(modelPartId: string, tessellations: string[], version: bigint, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<void>;
26
+ getAllElements(modelPartId: string, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
27
+ getElements(modelPartId: string, versionFrom: bigint, versionTo: bigint, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
28
+ getDiffElements(modelPartId: string, versionFrom: bigint, versionTo: bigint, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
29
+ getElementProperties(modelPartId: string, elementId: string, version: bigint): Promise<BimDataElementPropertySet[]>;
30
+ getElementTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, compressed: boolean): Promise<BimDataTessellation[]>;
31
+ getAllVersions(modelPartId: string): Promise<bigint[]>;
32
+ getLatestVersion(modelPartId: string): Promise<bigint>;
33
+ cacheCloudPart(modelPartId: string): Promise<void>;
34
+ getCloudPoints(modelPartId: string, index: number): Promise<Float32Array>;
35
+ getCloudPointsArray(modelPartId: string, indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>): Promise<void>;
36
+ getCloudHierarchy(modelPartId: string): Promise<BimCloudHierarchyItem[]>;
37
+ getCloudParameters(modelPartId: string): Promise<Map<string, string>>;
38
+ getCloudMetadata(modelPartId: string): Promise<BimCloudMetadata>;
39
+ flushMemory(): Promise<void>;
40
+ private checkMemory;
41
+ private wrapOperation;
42
+ }
@@ -0,0 +1,135 @@
1
+ import { WasmWorker } from "./WasmWorker.js";
2
+ import { isSecureContext } from "../utils/ViewerTools.js";
3
+ import { expose } from "./worker.js";
4
+ const HEAP_SIZE_LIMIT = 1024 * 1024 * 1024;
5
+ export class WasmWorkerThreadSafeWrapper {
6
+ constructor() {
7
+ this._memoryLocker = { isLocked: false, lock: Promise.resolve() };
8
+ this._operationsSet = new Set();
9
+ this._wasmWorker = new WasmWorker();
10
+ }
11
+ get module() {
12
+ return this._wasmWorker.module;
13
+ }
14
+ get cachedCloudReaders() {
15
+ return this._wasmWorker.cachedCloudReaders;
16
+ }
17
+ init() {
18
+ return this._wasmWorker.init();
19
+ }
20
+ dispose() {
21
+ return this._wasmWorker.dispose();
22
+ }
23
+ // DataPart
24
+ open(id, buffer) {
25
+ return this.wrapOperation(async () => this._wasmWorker.open(id, buffer));
26
+ }
27
+ write(modelPartId, buffer, position) {
28
+ return this.wrapOperation(async () => this._wasmWorker.write(modelPartId, buffer, position));
29
+ }
30
+ close(modelPartId) {
31
+ return this.wrapOperation(async () => this._wasmWorker.close(modelPartId));
32
+ }
33
+ remove(modelPartId) {
34
+ return this.wrapOperation(async () => this._wasmWorker.remove(modelPartId));
35
+ }
36
+ isValidDatabase(modelPartId) {
37
+ return this.wrapOperation(async () => this._wasmWorker.isValidDatabase(modelPartId));
38
+ }
39
+ // ModelPart
40
+ updateModelPart(modelPartId, buffer) {
41
+ return this.wrapOperation(async () => this._wasmWorker.updateModelPart(modelPartId, buffer));
42
+ }
43
+ mergeModelParts(targetId, sourceId) {
44
+ return this.wrapOperation(async () => this._wasmWorker.mergeModelParts(targetId, sourceId));
45
+ }
46
+ getAllTessellations(modelPartId, compressed, transmit) {
47
+ return this.wrapOperation(async () => this._wasmWorker.getAllTessellations(modelPartId, compressed, transmit));
48
+ }
49
+ getTessellations(modelPartId, versionFrom, versionTo, compressed, transmit) {
50
+ return this.wrapOperation(async () => this._wasmWorker.getTessellations(modelPartId, versionFrom, versionTo, compressed, transmit));
51
+ }
52
+ getTessellation(modelPartId, tessellationKey, version, compressed) {
53
+ return this.wrapOperation(async () => this._wasmWorker.getTessellation(modelPartId, tessellationKey, version, compressed));
54
+ }
55
+ getTessellationsByIds(modelPartId, tessellations, version, compressed, transmit) {
56
+ return this.wrapOperation(async () => this._wasmWorker.getTessellationsByIds(modelPartId, tessellations, version, compressed, transmit));
57
+ }
58
+ getAllElements(modelPartId, transmit) {
59
+ return this.wrapOperation(async () => this._wasmWorker.getAllElements(modelPartId, transmit));
60
+ }
61
+ getElements(modelPartId, versionFrom, versionTo, transmit) {
62
+ return this.wrapOperation(async () => this._wasmWorker.getElements(modelPartId, versionFrom, versionTo, transmit));
63
+ }
64
+ getDiffElements(modelPartId, versionFrom, versionTo, transmit) {
65
+ return this.wrapOperation(async () => this._wasmWorker.getDiffElements(modelPartId, versionFrom, versionTo, transmit));
66
+ }
67
+ getElementProperties(modelPartId, elementId, version) {
68
+ return this.wrapOperation(async () => this._wasmWorker.getElementProperties(modelPartId, elementId, version));
69
+ }
70
+ getElementTessellations(modelPartId, versionFrom, versionTo, compressed) {
71
+ return this.wrapOperation(async () => this._wasmWorker.getElementTessellations(modelPartId, versionFrom, versionTo, compressed));
72
+ }
73
+ getAllVersions(modelPartId) {
74
+ return this.wrapOperation(async () => this._wasmWorker.getAllVersions(modelPartId));
75
+ }
76
+ getLatestVersion(modelPartId) {
77
+ return this.wrapOperation(async () => this._wasmWorker.getLatestVersion(modelPartId));
78
+ }
79
+ // CloudPart
80
+ async cacheCloudPart(modelPartId) {
81
+ return this.wrapOperation(async () => this._wasmWorker.cacheCloudPart(modelPartId));
82
+ }
83
+ getCloudPoints(modelPartId, index) {
84
+ return this.wrapOperation(async () => this._wasmWorker.getCloudPoints(modelPartId, index));
85
+ }
86
+ getCloudPointsArray(modelPartId, indicies, transmit) {
87
+ return this.wrapOperation(async () => this._wasmWorker.getCloudPointsArray(modelPartId, indicies, transmit));
88
+ }
89
+ getCloudHierarchy(modelPartId) {
90
+ return this.wrapOperation(async () => this._wasmWorker.getCloudHierarchy(modelPartId));
91
+ }
92
+ getCloudParameters(modelPartId) {
93
+ return this.wrapOperation(async () => this._wasmWorker.getCloudParameters(modelPartId));
94
+ }
95
+ getCloudMetadata(modelPartId) {
96
+ return this.wrapOperation(async () => this._wasmWorker.getCloudMetadata(modelPartId));
97
+ }
98
+ // Memory checks & locks
99
+ flushMemory() {
100
+ if (!this.module || !isSecureContext)
101
+ return Promise.resolve();
102
+ if (this._memoryLocker.isLocked)
103
+ return this._memoryLocker.lock;
104
+ this._memoryLocker.isLocked = true;
105
+ const promise = async () => {
106
+ await Promise.all(Array.from(this._operationsSet.values()));
107
+ const cloudParts = Array.from(this.cachedCloudReaders.keys());
108
+ for await (const [, reader] of this.cachedCloudReaders)
109
+ await reader.close();
110
+ this.cachedCloudReaders.clear();
111
+ await this.init();
112
+ for await (const cloudId of cloudParts)
113
+ await this._wasmWorker.cacheCloudPart(cloudId);
114
+ this._memoryLocker.isLocked = false;
115
+ };
116
+ return this._memoryLocker.lock = promise();
117
+ }
118
+ async checkMemory() {
119
+ while (this._memoryLocker.isLocked)
120
+ await this._memoryLocker.lock;
121
+ const heapSize = this.module?.HEAP8.byteLength;
122
+ if (heapSize && heapSize > HEAP_SIZE_LIMIT) {
123
+ await this.flushMemory();
124
+ }
125
+ }
126
+ async wrapOperation(op) {
127
+ await this.checkMemory();
128
+ const opPromise = op();
129
+ this._operationsSet.add(opPromise);
130
+ opPromise.finally(() => this._operationsSet.delete(opPromise));
131
+ return opPromise;
132
+ }
133
+ }
134
+ expose(WasmWorkerThreadSafeWrapper);
135
+ //# sourceMappingURL=WasmWorkerThreadSafeWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmWorkerThreadSafeWrapper.js","sourceRoot":"","sources":["../../../src/wasm/WasmWorkerThreadSafeWrapper.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export interface IWasmBimModule extends EmscriptenModule {
7
7
  getTessellations(filename: string, versionFrom: bigint, versionTo: bigint, compressed?: boolean): VectorOf<WasmTessellation>;
8
8
  getTessellation(filename: string, tessId: string, version: bigint, compressed?: boolean): WasmTessellation;
9
9
  getNodesTessellations(filename: string, versionFrom: bigint, versionTo: bigint, compressed?: boolean): VectorOf<WasmTessellation>;
10
+ getTessellationsByIds(filename: string, version: bigint, tessIds: VectorOf<string>, compressed?: boolean): VectorOf<WasmTessellation>;
10
11
  getNodes(filename: string, versionFrom: bigint, versionTo: bigint): VectorOf<WasmIfcNode>;
11
12
  getProperties(filename: string, elementId: string, version: bigint): VectorOf<WasmElementPropertySet>;
12
13
  getComparedNodes(filename: string, versionFrom: bigint, versionTo: bigint): VectorOf<WasmIfcNode>;
@@ -16,10 +17,10 @@ export interface IWasmBimModule extends EmscriptenModule {
16
17
  getDatabaseVersion(filename: string): bigint;
17
18
  mergeDatabases(targetDBFilename: string, sourceDBFilename: string): void;
18
19
  manualMergeDatabases(targetDBFilename: string, sourceDBFilename: string): void;
19
- auditDatabase(filename: string): void;
20
20
  isValidDatabase(filename: string): boolean;
21
21
 
22
22
  getCloudPoints(filename: string, index: number): WasmPointsData;
23
+ getCloudPointsArray(filename: string, indicies: VectorOf<number>): VectorOf<WasmPointsData>;
23
24
  getCloudHierarchy(filename: string): VectorOf<WasmCloudHierarchyItem>;
24
25
  getCloudParameters(filename: string): MapOf<string, string>;
25
26
  getCloudMetadata(filename: string): WasmPointsMetadata;
@@ -29,6 +30,8 @@ export interface IWasmBimModule extends EmscriptenModule {
29
30
 
30
31
  export interface VectorOf<T> extends IDisposable {
31
32
  get(index: number): T;
33
+ set(index: number, value: T): void;
34
+ push_back(value: T): void;
32
35
  size(): number;
33
36
  }
34
37
 
@@ -218,6 +221,7 @@ export interface WasmCloudReader extends IDisposable {
218
221
  close(): void;
219
222
 
220
223
  getCloudPoints(index: number, cmdCacheEnable: boolean): WasmPointsData;
224
+ getCloudPointsArray(indicies: VectorOf<number>, cmdCacheEnable: boolean): VectorOf<WasmPointsData>;
221
225
  getCloudHierarchy(): VectorOf<WasmCloudHierarchyItem>;
222
226
  getCloudParameters(): MapOf<string, string>;
223
227
  getCloudMetadata(): WasmPointsMetadata;