@pilotdev/pilot-bim-dataprovider 25.8.0 → 25.10.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 (122) hide show
  1. package/lib/index.d.ts +4 -9
  2. package/lib/index.js +2 -5
  3. package/lib/index.js.map +1 -1
  4. package/lib/src/BimDataProviderApi.d.ts +52 -0
  5. package/lib/src/BimDataProviderApi.js +2 -0
  6. package/lib/src/BimDataProviderApi.js.map +1 -0
  7. package/lib/src/model/{BimDataIfcType.d.ts → BimDataClasses.d.ts} +159 -0
  8. package/lib/src/model/{BimDataIfcType.js → BimDataClasses.js} +203 -1
  9. package/lib/src/model/BimDataClasses.js.map +1 -0
  10. package/lib/src/model/BimDataCloudPart.d.ts +6 -12
  11. package/lib/src/model/BimDataCloudPart.js +12 -17
  12. package/lib/src/model/BimDataCloudPart.js.map +1 -1
  13. package/lib/src/model/BimDataModelPart.d.ts +4 -23
  14. package/lib/src/model/BimDataModelPart.js +22 -36
  15. package/lib/src/model/BimDataModelPart.js.map +1 -1
  16. package/lib/src/model/BimDataPart.d.ts +11 -21
  17. package/lib/src/model/BimDataPart.js +41 -67
  18. package/lib/src/model/BimDataPart.js.map +1 -1
  19. package/lib/src/model/BimDataProvider.d.ts +4 -17
  20. package/lib/src/model/BimDataProvider.js +18 -27
  21. package/lib/src/model/BimDataProvider.js.map +1 -1
  22. package/lib/src/utils/Consts.d.ts +17 -0
  23. package/lib/src/utils/Consts.js +20 -0
  24. package/lib/src/utils/Consts.js.map +1 -0
  25. package/lib/src/utils/ViewerTools.d.ts +34 -15
  26. package/lib/src/utils/ViewerTools.js +121 -14
  27. package/lib/src/utils/ViewerTools.js.map +1 -1
  28. package/lib/src/utils/WasmTools.js +1 -1
  29. package/lib/src/utils/WasmTools.js.map +1 -1
  30. package/lib/src/wasm/WasmWorker.d.ts +22 -72
  31. package/lib/src/wasm/WasmWorker.js +89 -184
  32. package/lib/src/wasm/WasmWorker.js.map +1 -1
  33. package/lib/src/wasm/{WasmWorkerThreadSafeWrapper.d.ts → WorkerApi.d.ts} +40 -23
  34. package/lib/src/wasm/WorkerApi.js +2 -0
  35. package/lib/src/wasm/WorkerApi.js.map +1 -0
  36. package/lib/src/wasm/cloud_readers/BinaryCloudReader.d.ts +18 -0
  37. package/lib/src/wasm/cloud_readers/BinaryCloudReader.js +228 -0
  38. package/lib/src/wasm/cloud_readers/BinaryCloudReader.js.map +1 -0
  39. package/lib/src/wasm/cloud_readers/ICloudReader.d.ts +10 -0
  40. package/lib/src/wasm/cloud_readers/ICloudReader.js +2 -0
  41. package/lib/src/wasm/cloud_readers/ICloudReader.js.map +1 -0
  42. package/lib/src/wasm/cloud_readers/WasmCloudReader.d.ts +20 -0
  43. package/lib/src/wasm/cloud_readers/WasmCloudReader.js +53 -0
  44. package/lib/src/wasm/cloud_readers/WasmCloudReader.js.map +1 -0
  45. package/lib/src/wasm/data_accessors/CloudPartAccessor.d.ts +20 -0
  46. package/lib/src/wasm/data_accessors/CloudPartAccessor.js +70 -0
  47. package/lib/src/wasm/data_accessors/CloudPartAccessor.js.map +1 -0
  48. package/lib/src/wasm/data_accessors/FileAccessor.d.ts +37 -0
  49. package/lib/src/wasm/data_accessors/FileAccessor.js +237 -0
  50. package/lib/src/wasm/data_accessors/FileAccessor.js.map +1 -0
  51. package/lib/src/wasm/data_accessors/ModelPartAccessor.d.ts +27 -0
  52. package/lib/src/wasm/data_accessors/ModelPartAccessor.js +142 -0
  53. package/lib/src/wasm/data_accessors/ModelPartAccessor.js.map +1 -0
  54. package/lib/src/wasm/file-system/File.d.ts +30 -0
  55. package/lib/src/wasm/file-system/File.js +58 -0
  56. package/lib/src/wasm/file-system/File.js.map +1 -0
  57. package/lib/src/wasm/file-system/FileAccessDispatcher.d.ts +12 -0
  58. package/lib/src/{model → wasm/file-system}/FileAccessDispatcher.js +68 -26
  59. package/lib/src/wasm/file-system/FileAccessDispatcher.js.map +1 -0
  60. package/lib/src/wasm/file-system/FileLoader.d.ts +41 -0
  61. package/lib/src/wasm/file-system/FileLoader.js +107 -0
  62. package/lib/src/wasm/file-system/FileLoader.js.map +1 -0
  63. package/lib/src/wasm/file-system/IFileSystem.d.ts +76 -0
  64. package/lib/src/wasm/file-system/IFileSystem.js +308 -0
  65. package/lib/src/wasm/file-system/IFileSystem.js.map +1 -0
  66. package/lib/src/{file-system → wasm/file-system}/IFileSystemCache.d.ts +10 -6
  67. package/lib/src/{file-system → wasm/file-system}/IFileSystemCache.js +11 -13
  68. package/lib/src/wasm/file-system/IFileSystemCache.js.map +1 -0
  69. package/lib/src/{file-system → wasm/file-system}/OPFS.d.ts +8 -8
  70. package/lib/src/{file-system → wasm/file-system}/OPFS.js +7 -3
  71. package/lib/src/wasm/file-system/OPFS.js.map +1 -0
  72. package/lib/src/wasm/file-system/PATH.js.map +1 -0
  73. package/lib/src/wasm/file-system/PartialFile.d.ts +48 -0
  74. package/lib/src/wasm/file-system/PartialFile.js +367 -0
  75. package/lib/src/wasm/file-system/PartialFile.js.map +1 -0
  76. package/lib/src/wasm/pilot_bim_dataprovider.d.ts +26 -5
  77. package/lib/src/wasm/pilot_bim_dataprovider.wasm +0 -0
  78. package/lib/src/wasm/wasm.worker-node.cjs +1 -1
  79. package/lib/src/wasm/wasm.worker-web.cjs +1 -1
  80. package/lib/src/wasm/worker.js +2 -0
  81. package/lib/src/wasm/worker.js.map +1 -1
  82. package/package.json +3 -4
  83. package/lib/src/file-system/IFileSystem.d.ts +0 -50
  84. package/lib/src/file-system/IFileSystem.js +0 -232
  85. package/lib/src/file-system/IFileSystem.js.map +0 -1
  86. package/lib/src/file-system/IFileSystemCache.js.map +0 -1
  87. package/lib/src/file-system/OPFS.js.map +0 -1
  88. package/lib/src/file-system/PATH.js.map +0 -1
  89. package/lib/src/model/BimDataElement.d.ts +0 -106
  90. package/lib/src/model/BimDataElement.js +0 -45
  91. package/lib/src/model/BimDataElement.js.map +0 -1
  92. package/lib/src/model/BimDataElementPropertySet.d.ts +0 -26
  93. package/lib/src/model/BimDataElementPropertySet.js +0 -90
  94. package/lib/src/model/BimDataElementPropertySet.js.map +0 -1
  95. package/lib/src/model/BimDataIfcRepresentationStatus.d.ts +0 -10
  96. package/lib/src/model/BimDataIfcRepresentationStatus.js +0 -12
  97. package/lib/src/model/BimDataIfcRepresentationStatus.js.map +0 -1
  98. package/lib/src/model/BimDataIfcType.js.map +0 -1
  99. package/lib/src/model/BimDataTessellation.d.ts +0 -13
  100. package/lib/src/model/BimDataTessellation.js +0 -16
  101. package/lib/src/model/BimDataTessellation.js.map +0 -1
  102. package/lib/src/model/Consts.d.ts +0 -7
  103. package/lib/src/model/Consts.js +0 -8
  104. package/lib/src/model/Consts.js.map +0 -1
  105. package/lib/src/model/FileAccessDispatcher.d.ts +0 -14
  106. package/lib/src/model/FileAccessDispatcher.js.map +0 -1
  107. package/lib/src/wasm/BimCloudPartAccessor.d.ts +0 -16
  108. package/lib/src/wasm/BimCloudPartAccessor.js +0 -49
  109. package/lib/src/wasm/BimCloudPartAccessor.js.map +0 -1
  110. package/lib/src/wasm/BimDataModelPartAccessor.d.ts +0 -20
  111. package/lib/src/wasm/BimDataModelPartAccessor.js +0 -89
  112. package/lib/src/wasm/BimDataModelPartAccessor.js.map +0 -1
  113. package/lib/src/wasm/BimDataPartAccessor.d.ts +0 -8
  114. package/lib/src/wasm/BimDataPartAccessor.js +0 -19
  115. package/lib/src/wasm/BimDataPartAccessor.js.map +0 -1
  116. package/lib/src/wasm/WasmWorkerThreadSafeWrapper.js +0 -144
  117. package/lib/src/wasm/WasmWorkerThreadSafeWrapper.js.map +0 -1
  118. package/lib/src/wasm/index.d.ts +0 -0
  119. package/lib/src/wasm/index.js +0 -3
  120. package/lib/src/wasm/index.js.map +0 -1
  121. /package/lib/src/{file-system → wasm/file-system}/PATH.d.ts +0 -0
  122. /package/lib/src/{file-system → wasm/file-system}/PATH.js +0 -0
@@ -1,24 +1,48 @@
1
1
  import BimDataProviderModule from "./pilot_bim_dataprovider.js";
2
- import { WasmTools } from "../utils/WasmTools.js";
3
2
  import { isNode, isCrossOriginIsolated, isSecureContext, isOPFSEnabled } from "../utils/ViewerTools.js";
4
- import { DATA_ROOT_FOLDER } from "../model/Consts.js";
5
- import { AsyncFileSystem, ProxyFileSystem } from "../file-system/IFileSystem.js";
6
- import { BimCloudPartAccessor } from "./BimCloudPartAccessor.js";
7
- import { BimDataPartAccessor } from "./BimDataPartAccessor.js";
8
- import { BimDataModelPartAccessor } from "./BimDataModelPartAccessor.js";
3
+ import { DATA_ROOT_FOLDER, HEAP_SIZE_LIMIT, OPFS_CACHE_MIN_QUOTA, OPFS_BIM_FOLDER, OPFS_CACHE_LIMIT } from "../utils/Consts.js";
4
+ import { AsyncFileSystem, ProxyFileSystem } from "./file-system/IFileSystem.js";
5
+ import { FileAccessDispatcher } from "./file-system/FileAccessDispatcher.js";
6
+ import { CloudPartAccessor } from "./data_accessors/CloudPartAccessor.js";
7
+ import { FileAccessor } from "./data_accessors/FileAccessor.js";
8
+ import { ModelPartAccessor } from "./data_accessors/ModelPartAccessor.js";
9
+ import { expose } from "./worker.js";
9
10
  export class WasmWorker {
11
+ _module;
12
+ _modelPartAccessor;
13
+ _cloudPartAccessor;
14
+ _fileAccessor;
15
+ _fileAccessDispatcher;
16
+ _fs;
17
+ _memoryLocker = { isLocked: false, lock: Promise.resolve() };
18
+ _operationsSet = new Set();
10
19
  constructor() {
11
- this._cachedCloudReaders = new Map();
12
20
  console.log(`BimDataProvider worker: (env: ${isNode() ? 'Node.js' : 'web'}, isSecureContext: ${isSecureContext}, isCrossOriginIsolated: ${isCrossOriginIsolated})`);
13
- this._fs = isOPFSEnabled ? new AsyncFileSystem() : new ProxyFileSystem();
21
+ this._fs = isOPFSEnabled ? new AsyncFileSystem() : new ProxyFileSystem(this);
22
+ this._fileAccessDispatcher = isOPFSEnabled ? new FileAccessDispatcher() : undefined;
23
+ this._fileAccessor = new FileAccessor(this._fs, this, this, this._fileAccessDispatcher);
24
+ this._modelPartAccessor = new ModelPartAccessor(this._fileAccessor, this);
25
+ this._cloudPartAccessor = new CloudPartAccessor(this._fileAccessor, this);
14
26
  }
15
27
  get module() {
16
- return this._module;
28
+ if (this._module)
29
+ return this._module;
30
+ else
31
+ throw new Error("Wasm module is not initialized");
32
+ }
33
+ get modelPartAccessor() {
34
+ return this._modelPartAccessor;
35
+ }
36
+ get cloudPartAccessor() {
37
+ return this._cloudPartAccessor;
17
38
  }
18
- get cachedCloudReaders() {
19
- return this._cachedCloudReaders;
39
+ get fileAccessor() {
40
+ return this._fileAccessor;
20
41
  }
21
42
  async init() {
43
+ const cachedClouds = this.cloudPartAccessor.getCachedCloudKeys();
44
+ for (let i = 0; i < cachedClouds.length; i++)
45
+ await this.cloudPartAccessor.closeReader(cachedClouds[i]);
22
46
  const moduleOverrides = {
23
47
  print: (s) => console.log(s),
24
48
  printErr: (e) => console.error(e)
@@ -26,188 +50,69 @@ export class WasmWorker {
26
50
  this._module = await BimDataProviderModule(moduleOverrides);
27
51
  this._module.FS.mkdir(DATA_ROOT_FOLDER);
28
52
  const moduleFS = this._module.FS;
29
- await this._fs.init();
53
+ await this._fs.init(OPFS_BIM_FOLDER);
30
54
  this._fs.mountTo(moduleFS, DATA_ROOT_FOLDER);
31
- }
32
- async open(id, buffer) {
33
- this._cachedCloudReaders.get(id)?.close();
34
- this._cachedCloudReaders.delete(id);
35
- if (!id)
36
- id = "id_" + (0xffffffff * Math.random() >>> 0);
37
- const data = new Uint8Array(buffer ?? []);
38
- if (!this._fs.isFileExists(id)) {
39
- await this._fs.makeFile(id, data);
40
- }
41
- else if (buffer) {
42
- await this._fs.writeFile(id, data);
43
- }
44
- }
45
- async copy(modelPartTargetId, modelPartSourceId) {
46
- await this._fs.copyFile(modelPartTargetId, modelPartSourceId);
47
- }
48
- async write(modelPartId, buffer, position) {
49
- const data = new Uint8Array(buffer);
50
- if (this._fs.isFileExists(modelPartId)) {
51
- await this._fs.writeFile(modelPartId, data, position);
52
- }
53
- else {
54
- await this._fs.makeFile(modelPartId, new Uint8Array(position));
55
- await this._fs.writeFile(modelPartId, data, position);
56
- }
57
- }
58
- async close(modelPartId) {
59
- await this._cachedCloudReaders.get(modelPartId)?.close();
60
- this._cachedCloudReaders.delete(modelPartId);
61
- }
62
- async remove(modelPartId) {
63
- await this.close(modelPartId);
64
- if (this._fs.isFileExists(modelPartId)) {
65
- await this._fs.remove(modelPartId);
66
- }
55
+ for (let i = 0; i < cachedClouds.length; i++)
56
+ await this.cloudPartAccessor.openReader(cachedClouds[i]);
67
57
  }
68
58
  async dispose() {
69
- for (const [, reader] of this._cachedCloudReaders) {
70
- await reader.close();
71
- }
72
- this._cachedCloudReaders.clear();
59
+ await this._modelPartAccessor.dispose();
60
+ await this._cloudPartAccessor.dispose();
61
+ await this._fileAccessor.dispose();
62
+ await this._fileAccessDispatcher?.dispose();
73
63
  await this._fs.dispose();
74
64
  }
75
- async flushMemory() {
76
- /** */
77
- }
78
- async isValidDatabase(modelPartId) {
79
- if (this._fs.isFileExists(modelPartId)) {
80
- const modelPart = new BimDataPartAccessor(modelPartId, this._module);
81
- return this.runSyncFileOp(modelPartId, () => modelPart.isValidDatabase());
65
+ // IMemoryGuard
66
+ estimate() {
67
+ const heapSize = this._module?.HEAP8?.byteLength ?? 0;
68
+ const maxHeapSize = 2147483648;
69
+ return { usage: heapSize, quota: maxHeapSize - heapSize };
70
+ }
71
+ async runOperation(op, options) {
72
+ await this.checkMemory(options);
73
+ const opPromise = op();
74
+ this._operationsSet.add(opPromise);
75
+ opPromise.finally(() => this._operationsSet.delete(opPromise));
76
+ return opPromise;
77
+ }
78
+ async checkMemory(options) {
79
+ while (this._memoryLocker.isLocked)
80
+ await this._memoryLocker.lock;
81
+ let heapEstimate = undefined;
82
+ let cacheEstimate = undefined;
83
+ if (options?.checkRAM)
84
+ heapEstimate = this.estimate();
85
+ if (options?.checkCache)
86
+ cacheEstimate = await this._fs.estimate();
87
+ const isHeapSizeLimitExceeded = (heapEstimate?.usage != undefined) && heapEstimate.usage > HEAP_SIZE_LIMIT;
88
+ const isCacheSizeExceeded = (cacheEstimate?.usage != undefined) && cacheEstimate.usage > OPFS_CACHE_LIMIT;
89
+ const isCacheQuotaExceeded = (cacheEstimate?.quota != undefined) && cacheEstimate.quota < OPFS_CACHE_MIN_QUOTA;
90
+ if (isHeapSizeLimitExceeded || isCacheSizeExceeded || isCacheQuotaExceeded) {
91
+ await this.flushMemory({ flushRAM: isHeapSizeLimitExceeded, flushCache: isCacheSizeExceeded || isCacheQuotaExceeded, desiredCacheQuota: 2 * OPFS_CACHE_MIN_QUOTA });
82
92
  }
83
- else
84
- return false;
85
- }
86
- // ModelPart
87
- async updateModelPart(modelPartId, buffer) {
88
- const tmpModelPartId = "tmp_" + (0xffffffff * Math.random() >>> 0);
89
- await this.open(tmpModelPartId, buffer);
90
- await this.mergeModelParts(modelPartId, tmpModelPartId);
91
- await this.remove(tmpModelPartId);
92
- }
93
- async mergeModelParts(targetId, sourceId) {
94
- const module = this._module;
95
- const modelPart = new BimDataModelPartAccessor(targetId, module);
96
- const modelPartId = modelPart.path;
97
- const sourcePart = new BimDataModelPartAccessor(sourceId, module);
98
- const sourcePartId = this._fs.isFileExists(sourceId) ? sourcePart.path : sourceId;
99
- if (!WasmTools.isFileExists(sourcePartId, module))
100
- return Promise.reject('Failed to merge model parts: source file does not exist.');
101
- await this.runSyncFileOp([targetId, sourceId], () => modelPart.merge(modelPartId, sourcePartId));
102
- }
103
- async getAllTessellations(modelPartId, compressed, transmit) {
104
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
105
- return this.runSyncFileOp(modelPartId, () => modelPart.getAllTessellations(compressed, transmit));
106
- }
107
- async getTessellations(modelPartId, versionFrom, versionTo, firstItemIdx, compressed, transmit) {
108
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
109
- return this.runSyncFileOp(modelPartId, () => modelPart.getTessellations(versionFrom, versionTo, firstItemIdx, compressed, transmit));
110
- }
111
- async getTessellationsInfo(modelPartId, versionFrom, versionTo, compressed, transmit) {
112
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
113
- return this.runSyncFileOp(modelPartId, () => modelPart.getTessellationsInfo(versionFrom, versionTo, compressed, transmit));
114
- }
115
- async getTessellation(modelPartId, tessellationKey, version, compressed) {
116
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
117
- return this.runSyncFileOp(modelPartId, () => modelPart.getTessellation(tessellationKey, version, compressed));
118
- }
119
- async getTessellationsByIds(modelPartId, tessellations, version, compressed, transmit) {
120
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
121
- return this.runSyncFileOp(modelPartId, () => modelPart.getTessellationsByIds(tessellations, version, compressed, transmit));
122
93
  }
123
- async getAllElements(modelPartId, transmit) {
124
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
125
- return this.runSyncFileOp(modelPartId, () => modelPart.getAllElements(transmit));
126
- }
127
- async getElements(modelPartId, versionFrom, versionTo, transmit) {
128
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
129
- return this.runSyncFileOp(modelPartId, () => modelPart.getElements(versionFrom, versionTo, transmit));
130
- }
131
- async getDiffElements(modelPartId, versionFrom, versionTo, transmit) {
132
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
133
- return this.runSyncFileOp(modelPartId, () => modelPart.getDiffElements(versionFrom, versionTo, transmit));
134
- }
135
- async getElementProperties(modelPartId, elementId, version) {
136
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
137
- return this.runSyncFileOp(modelPartId, () => modelPart.getElementProperties(elementId, version));
138
- }
139
- async getElementPropertiesByIds(modelPartId, indexes, version) {
140
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
141
- return this.runSyncFileOp(modelPartId, () => modelPart.getElementPropertiesByIds(indexes, version));
142
- }
143
- async getElementTessellations(modelPartId, versionFrom, versionTo, compressed) {
144
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
145
- return this.runSyncFileOp(modelPartId, () => modelPart.getElementTessellations(versionFrom, versionTo, compressed));
146
- }
147
- async getAllVersions(modelPartId) {
148
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
149
- return this.runSyncFileOp(modelPartId, () => modelPart.getAllVersions());
150
- }
151
- async getLatestVersion(modelPartId) {
152
- const modelPart = new BimDataModelPartAccessor(modelPartId, this._module);
153
- return this.runSyncFileOp(modelPartId, () => modelPart.getLatestVersion());
154
- }
155
- // CloudPart
156
- async cacheCloudPart(modelPartId) {
157
- return this.runSyncFileOp(modelPartId, async () => {
158
- const reader = new BimCloudPartAccessor(modelPartId, this._module, () => this._fs.openSyncFileAccess(modelPartId), () => Promise.resolve(this._fs.closeSyncFileAccess(modelPartId)));
159
- await this._cachedCloudReaders.get(modelPartId)?.close();
160
- await reader.open();
161
- this._cachedCloudReaders.set(modelPartId, reader);
162
- });
163
- }
164
- async getCloudPoints(modelPartId, index) {
165
- const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
166
- return this.runSyncFileOp(modelPartId, () => modelPart.getCloudPoints(index));
167
- }
168
- async getCloudPointsArray(modelPartId, indicies, transmit) {
169
- const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
170
- return this.runSyncFileOp(modelPartId, () => modelPart.getCloudPointsArray(indicies, transmit));
171
- }
172
- getCloudHierarchy(modelPartId) {
173
- const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
174
- return this.runSyncFileOp(modelPartId, () => modelPart.getCloudHierarchy());
175
- }
176
- async getCloudParameters(modelPartId) {
177
- const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
178
- return this.runSyncFileOp(modelPartId, () => modelPart.getCloudParameters());
179
- }
180
- async getCloudMetadata(modelPartId) {
181
- const modelPart = this._cachedCloudReaders.get(modelPartId) ?? new BimCloudPartAccessor(modelPartId, this._module);
182
- return this.runSyncFileOp(modelPartId, () => modelPart.getCloudMetadata());
183
- }
184
- async runSyncFileOp(path, opFunc) {
185
- try {
186
- if (Array.isArray(path)) {
187
- for (const p of path) {
188
- await this._fs.openSyncFileAccess(p);
94
+ async flushMemory(options = { flushRAM: true, flushCache: true }) {
95
+ if (!this._module || !isOPFSEnabled)
96
+ return Promise.resolve();
97
+ if (this._memoryLocker.isLocked)
98
+ return this._memoryLocker.lock;
99
+ this._memoryLocker.isLocked = true;
100
+ const promise = async () => {
101
+ await Promise.all(Array.from(this._operationsSet.values()));
102
+ if (options.flushRAM)
103
+ await this.init();
104
+ if (options.flushCache) {
105
+ let memToFreeAmount;
106
+ if (options.desiredCacheQuota) {
107
+ const estimate = await this._fs.estimate();
108
+ memToFreeAmount = Math.max(Math.max(options.desiredCacheQuota, OPFS_CACHE_MIN_QUOTA) - (estimate.quota ?? 0), 0);
189
109
  }
110
+ await this.fileAccessor.clearCache(memToFreeAmount);
190
111
  }
191
- else {
192
- await this._fs.openSyncFileAccess(path);
193
- }
194
- const result = await opFunc();
195
- return result;
196
- }
197
- catch (e) {
198
- console.error(e);
199
- throw e;
200
- }
201
- finally {
202
- if (Array.isArray(path)) {
203
- for (const p of path) {
204
- this._fs.closeSyncFileAccess(p);
205
- }
206
- }
207
- else {
208
- this._fs.closeSyncFileAccess(path);
209
- }
210
- }
112
+ };
113
+ return this._memoryLocker.lock = promise()
114
+ .finally(() => this._memoryLocker.isLocked = false);
211
115
  }
212
116
  }
117
+ expose(WasmWorker);
213
118
  //# sourceMappingURL=WasmWorker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WasmWorker.js","sourceRoot":"","sources":["../../../src/wasm/WasmWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WasmWorker.js","sourceRoot":"","sources":["../../../src/wasm/WasmWorker.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,31 @@
1
- import { IWasmWorker } from "./WasmWorker.js";
2
- import { BimDataTessellation, BimDataTessellationInfo } 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";
1
+ import { FlushMemoryOptions, OpenOptions } from "../BimDataProviderApi.js";
2
+ import { BimCloudHierarchyItem, BimCloudMetadata, BimDataElement, BimDataElementPropertySet, BimDataTessellation, BimDataTessellationInfo } from "../model/BimDataClasses.js";
6
3
  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>;
4
+ export type MemoryGuardOptions = {
5
+ checkRAM?: boolean;
6
+ checkCache?: boolean;
7
+ };
8
+ export interface IWasmWorker {
9
+ get fileAccessor(): IFileAccessor;
10
+ get modelPartAccessor(): IModelPartAccessor;
11
+ get cloudPartAccessor(): ICloudPartAccessor;
13
12
  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>;
13
+ dispose(): void;
14
+ flushMemory(options?: FlushMemoryOptions): Promise<void>;
15
+ }
16
+ export interface IFileAccessor {
17
+ open(modelPartId: string, source?: ArrayBuffer | ArrayBufferView | Blob | string, options?: OpenOptions): Promise<void>;
18
+ write(modelPartId: string, buffer: ArrayBuffer | ArrayBufferView, position: number): Promise<void>;
19
+ read(modelPartId: string, position: number, size: number): Promise<Uint8Array>;
17
20
  close(modelPartId: string): Promise<void>;
18
21
  remove(modelPartId: string): Promise<void>;
19
22
  copy(modelPartTargetId: string, modelPartSourceId: string): Promise<void>;
20
- isValidDatabase(modelPartId: string): Promise<boolean>;
21
- updateModelPart(modelPartId: string, buffer: ArrayBuffer): Promise<void>;
23
+ isValid(modelPartId: string): Promise<boolean>;
24
+ lockFile(modelPartId: string): Promise<string>;
25
+ unlockFile(modelPartId: string): Promise<void>;
26
+ clearCache(memToFreeAmount?: number): Promise<void>;
27
+ }
28
+ export interface IModelPartAccessor {
22
29
  mergeModelParts(targetId: string, sourceId: string): Promise<void>;
23
30
  getAllTessellations(modelPartId: string, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<void>;
24
31
  getTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, firstItemIdx: bigint, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<bigint>;
@@ -28,18 +35,28 @@ export declare class WasmWorkerThreadSafeWrapper implements IWasmWorker {
28
35
  getAllElements(modelPartId: string, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
29
36
  getElements(modelPartId: string, versionFrom: bigint, versionTo: bigint, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
30
37
  getDiffElements(modelPartId: string, versionFrom: bigint, versionTo: bigint, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
38
+ getElementTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, compressed: boolean): Promise<BimDataTessellation[]>;
31
39
  getElementProperties(modelPartId: string, elementId: string, version: bigint): Promise<BimDataElementPropertySet[]>;
32
40
  getElementPropertiesByIds(modelPartId: string, indexes: string[], version: bigint): Promise<Map<string, BimDataElementPropertySet[]>>;
33
- getElementTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, compressed: boolean): Promise<BimDataTessellation[]>;
34
41
  getAllVersions(modelPartId: string): Promise<bigint[]>;
35
42
  getLatestVersion(modelPartId: string): Promise<bigint>;
36
- cacheCloudPart(modelPartId: string): Promise<void>;
37
- getCloudPoints(modelPartId: string, index: number): Promise<Float32Array>;
43
+ isValid(modelPartId: string): Promise<boolean>;
44
+ }
45
+ export interface ICloudPartAccessor {
46
+ openReader(modelPartId: string): Promise<void>;
47
+ closeReader(modelPartId: string): Promise<void>;
48
+ getCloudPoints(modelPartId: string, index: number, offset: number, count: number): Promise<Float32Array>;
38
49
  getCloudPointsArray(modelPartId: string, indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>): Promise<void>;
39
50
  getCloudHierarchy(modelPartId: string): Promise<BimCloudHierarchyItem[]>;
40
- getCloudParameters(modelPartId: string): Promise<Map<string, string>>;
41
51
  getCloudMetadata(modelPartId: string): Promise<BimCloudMetadata>;
42
- flushMemory(): Promise<void>;
43
- private checkMemory;
44
- private wrapOperation;
52
+ getCachedCloudKeys(): Array<string>;
53
+ isValid(modelPartId: string): Promise<boolean>;
54
+ }
55
+ export interface IWasmModuleAccessor {
56
+ get module(): IWasmBimModule;
57
+ }
58
+ export interface IMemoryGuard {
59
+ estimate(): StorageEstimate;
60
+ runOperation<T>(op: () => Promise<T>, options?: MemoryGuardOptions): Promise<T>;
61
+ checkMemory(options?: MemoryGuardOptions): Promise<void>;
45
62
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WorkerApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerApi.js","sourceRoot":"","sources":["../../../src/wasm/WorkerApi.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { BimCloudMetadata, BimCloudHierarchyItem } from "../../model/BimDataClasses.js";
2
+ import { ICloudReader } from "./ICloudReader.js";
3
+ import { FileAccessor } from "../data_accessors/FileAccessor.js";
4
+ export declare class BinaryCloudReader implements ICloudReader {
5
+ readonly fileAccessor: FileAccessor;
6
+ readonly modelPartId: string;
7
+ private metadata;
8
+ private _file?;
9
+ constructor(fileAccessor: FileAccessor, modelPartId: string);
10
+ open(): Promise<void>;
11
+ close(): Promise<void>;
12
+ getCloudPoints(index: number, offset: number, count: number): Promise<Float32Array>;
13
+ getCloudPointsArray(indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>, step: number): Promise<void>;
14
+ getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
15
+ getCloudMetadata(): Promise<BimCloudMetadata>;
16
+ isValid(): Promise<boolean>;
17
+ private static transferPoints;
18
+ }