@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
@@ -0,0 +1,367 @@
1
+ import { OPFS_CACHE_CHUNK_SIZE, OPFS_BIM_CACHE_FOLDER, PartialFileSignature } from "../../utils/Consts.js";
2
+ import { BinaryConverter, isOPFSEnabled } from "../../utils/ViewerTools.js";
3
+ import { FetchStatus, FileLoader } from "./FileLoader.js";
4
+ import { File } from "./File.js";
5
+ export class PartialFile {
6
+ fs;
7
+ id;
8
+ _metaFile;
9
+ _url;
10
+ _fileSize;
11
+ _chunkSize;
12
+ _chunkCount;
13
+ _loadedChunks;
14
+ _openSynchAccessCounter;
15
+ _isInSynchMode;
16
+ _cacheRoot;
17
+ _cachedDirs;
18
+ _metadataUpdater;
19
+ constructor(fs, file, url, fileSize) {
20
+ this.fs = fs;
21
+ this._metaFile = file;
22
+ this.id = file.id;
23
+ this._cachedDirs = new Map();
24
+ this._url = url ?? "";
25
+ this._fileSize = fileSize ?? 0;
26
+ this._chunkSize = OPFS_CACHE_CHUNK_SIZE;
27
+ this._chunkCount = Math.ceil(this._fileSize / this._chunkSize);
28
+ this._loadedChunks = 0;
29
+ this._openSynchAccessCounter = 0;
30
+ this._isInSynchMode = false;
31
+ }
32
+ static async fromUrl(fs, id, url, fileSize) {
33
+ const file = await File.open(fs, id, { create: true });
34
+ const partialFile = new PartialFile(fs, file, url, fileSize);
35
+ await partialFile.storeMetadata();
36
+ await partialFile.initCache();
37
+ return partialFile;
38
+ }
39
+ static async fromFile(fs, id) {
40
+ const file = await File.open(fs, id);
41
+ const partialFile = new PartialFile(fs, file);
42
+ await partialFile.readMetadata();
43
+ await partialFile.initCache();
44
+ return partialFile;
45
+ }
46
+ async write(buffer, position) {
47
+ if (!this._cacheRoot)
48
+ return;
49
+ const chunksToWrite = this.calcRwChunkInfo(position, buffer.byteLength);
50
+ const writeResultPromise = new Array(chunksToWrite.length);
51
+ const array = new Uint8Array(buffer);
52
+ let offset = 0;
53
+ for (let i = 0; i < chunksToWrite.length; i++) {
54
+ writeResultPromise[i] = this.writeChunk(chunksToWrite[i], array, offset);
55
+ offset += chunksToWrite[i].rwByteLength;
56
+ }
57
+ await Promise.all(writeResultPromise);
58
+ }
59
+ async read(position, size) {
60
+ if (!this._cacheRoot) {
61
+ const response = await FileLoader.fetchRange(this._url, { startByte: position, endByte: position + size - 1 });
62
+ if (response.status != FetchStatus.PartialContent)
63
+ throw new Error("Failed to fetch remote file.");
64
+ return new Uint8Array(response.data);
65
+ }
66
+ const chunksToRead = this.calcRwChunkInfo(position, size);
67
+ const readResultPromise = new Array(chunksToRead.length);
68
+ const resultBuffer = new Uint8Array(size);
69
+ let offset = 0;
70
+ for (let i = 0; i < chunksToRead.length; i++) {
71
+ readResultPromise[i] = this.readChunk(chunksToRead[i], resultBuffer, offset);
72
+ offset += chunksToRead[i].rwByteLength;
73
+ }
74
+ await Promise.all(readResultPromise);
75
+ return resultBuffer;
76
+ }
77
+ async copyTo(file) {
78
+ return this._metaFile.copyTo(file);
79
+ }
80
+ async openSyncFileAccess() {
81
+ this._openSynchAccessCounter++;
82
+ this._isInSynchMode = this._openSynchAccessCounter > 0;
83
+ return this._metaFile.openSyncFileAccess();
84
+ }
85
+ async closeSyncFileAccess() {
86
+ this._openSynchAccessCounter--;
87
+ this._isInSynchMode = this._openSynchAccessCounter > 0;
88
+ if (!this._isInSynchMode) {
89
+ this._openSynchAccessCounter = 0;
90
+ for (const [, cacheDir] of this._cachedDirs) {
91
+ for (const [, chunk] of cacheDir.cachedChunks) {
92
+ chunk.lock.then(() => {
93
+ chunk.synchHandle?.close();
94
+ chunk.synchHandle = null;
95
+ });
96
+ }
97
+ }
98
+ }
99
+ return this._metaFile.closeSyncFileAccess();
100
+ }
101
+ getFileInfo() {
102
+ return {
103
+ path: this.id,
104
+ size: this._fileSize,
105
+ sizeOnDisk: this._chunkSize * this._loadedChunks,
106
+ lastModified: this._metaFile.getFileInfo().lastModified
107
+ };
108
+ }
109
+ async isValid() {
110
+ if (!(await this._metaFile.isValid()))
111
+ return false;
112
+ if (this._chunkSize != OPFS_CACHE_CHUNK_SIZE)
113
+ return false;
114
+ // Check if url is stil valid
115
+ const response = await FileLoader.fetchRange(this._url, { startByte: 0, endByte: 1 });
116
+ return response.status == FetchStatus.PartialContent && response.length == this._fileSize;
117
+ }
118
+ async remove() {
119
+ this.clearCache();
120
+ await this._metaFile.remove();
121
+ if (isOPFSEnabled) {
122
+ try {
123
+ const rootDirectory = await navigator.storage.getDirectory();
124
+ const cacheDirectory = await rootDirectory.getDirectoryHandle(OPFS_BIM_CACHE_FOLDER);
125
+ await cacheDirectory.removeEntry(this.id, { recursive: true });
126
+ }
127
+ catch {
128
+ /**/
129
+ }
130
+ }
131
+ }
132
+ async close() {
133
+ this.clearCache();
134
+ await this._metaFile.close();
135
+ }
136
+ calcRwChunkInfo(offset, size) {
137
+ const fromByte = offset;
138
+ const toByte = offset + size - 1;
139
+ const fromIndex = Math.floor(fromByte / this._chunkSize);
140
+ const fromOffset = fromByte % this._chunkSize;
141
+ const toIndex = Math.floor(toByte / this._chunkSize);
142
+ const toOffset = toByte % this._chunkSize;
143
+ const lastChunkSize = this._fileSize % this._chunkSize;
144
+ let chunkOffset = fromIndex * this._chunkSize;
145
+ const result = Array(toIndex - fromIndex + 1);
146
+ for (let i = 0, index = fromIndex; i < result.length; i++, index++) {
147
+ const startByte = index == fromIndex ? fromOffset : 0;
148
+ const endByte = index == toIndex ? toOffset : this._chunkSize - 1;
149
+ const chunkSize = index == this._chunkCount - 1 ? lastChunkSize : this._chunkSize;
150
+ const rwSize = endByte - startByte + 1;
151
+ result[i] = {
152
+ index,
153
+ size: chunkSize,
154
+ chunkOffset: chunkOffset,
155
+ rwOffsetLocal: startByte,
156
+ rwByteLength: rwSize,
157
+ };
158
+ chunkOffset += chunkSize;
159
+ }
160
+ return result;
161
+ }
162
+ async storeMetadata() {
163
+ const metadataSize = 20;
164
+ const encoder = new TextEncoder();
165
+ const urlBytes = encoder.encode(this._url);
166
+ const urlLength = urlBytes.length;
167
+ const metaFileSize = PartialFileSignature.byteLength + metadataSize + urlLength;
168
+ const buffer = new ArrayBuffer(metaFileSize);
169
+ const bytes = new Uint8Array(buffer);
170
+ const byteReprArray = new Uint8Array(4);
171
+ const uintReprArray = new Uint32Array(byteReprArray.buffer);
172
+ let offset = 0;
173
+ bytes.set(PartialFileSignature, offset);
174
+ offset += PartialFileSignature.byteLength;
175
+ uintReprArray[0] = urlLength;
176
+ bytes.set(byteReprArray, offset);
177
+ offset += 4;
178
+ uintReprArray[0] = this._fileSize;
179
+ bytes.set(byteReprArray, offset);
180
+ offset += 4;
181
+ uintReprArray[0] = this._chunkSize;
182
+ bytes.set(byteReprArray, offset);
183
+ offset += 4;
184
+ uintReprArray[0] = this._chunkCount;
185
+ bytes.set(byteReprArray, offset);
186
+ offset += 4;
187
+ uintReprArray[0] = this._loadedChunks;
188
+ bytes.set(byteReprArray, offset);
189
+ offset += 4;
190
+ bytes.set(urlBytes, offset);
191
+ await this._metaFile.write(buffer, 0);
192
+ }
193
+ async readMetadata() {
194
+ const metadataSize = 20;
195
+ const metadataLength = PartialFileSignature.byteLength + metadataSize;
196
+ const bufferView = await this._metaFile.read(0, metadataLength);
197
+ const byteView = new Uint8Array(bufferView.buffer);
198
+ let offset = PartialFileSignature.byteLength;
199
+ const urlLength = BinaryConverter.toU32(byteView, offset);
200
+ offset += 4;
201
+ this._fileSize = BinaryConverter.toU32(byteView, offset);
202
+ offset += 4;
203
+ this._chunkSize = BinaryConverter.toU32(byteView, offset);
204
+ offset += 4;
205
+ this._chunkCount = BinaryConverter.toU32(byteView, offset);
206
+ offset += 4;
207
+ this._loadedChunks = BinaryConverter.toU32(byteView, offset);
208
+ offset += 4;
209
+ const urlBytes = await this._metaFile.read(offset, urlLength);
210
+ const decoder = new TextDecoder();
211
+ this._url = decoder.decode(urlBytes);
212
+ }
213
+ async initCache() {
214
+ if (isOPFSEnabled) {
215
+ const rootDirectory = await navigator.storage.getDirectory();
216
+ const bimCacheDir = await rootDirectory.getDirectoryHandle(OPFS_BIM_CACHE_FOLDER, { create: true });
217
+ this._cacheRoot = await bimCacheDir.getDirectoryHandle(this.id, { create: true });
218
+ const numOfCachedDirs = (this._chunkCount >> 10) + 1;
219
+ for (let i = 0; i < numOfCachedDirs; i++) {
220
+ const dir = await this._cacheRoot.getDirectoryHandle(i.toString(), { create: true });
221
+ this._cachedDirs.set(i, { root: dir, cachedChunks: new Map() });
222
+ }
223
+ }
224
+ }
225
+ clearCache() {
226
+ for (const [, cacheDir] of this._cachedDirs) {
227
+ for (const [, chunk] of cacheDir.cachedChunks) {
228
+ chunk.lock.then(() => {
229
+ chunk.synchHandle?.close();
230
+ chunk.synchHandle = null;
231
+ });
232
+ }
233
+ cacheDir.cachedChunks.clear();
234
+ }
235
+ }
236
+ getCached(index) {
237
+ const path = index.toString();
238
+ const dirId = index >> 10;
239
+ const cacheDir = this._cachedDirs.get(dirId);
240
+ if (cacheDir.cachedChunks.has(path))
241
+ return cacheDir.cachedChunks.get(path);
242
+ const chunkSize = this._chunkSize;
243
+ const chunk = { isLocked: true, isValid: false, handle: null, synchHandle: null, lock: Promise.resolve() };
244
+ const getChunk = async () => {
245
+ try {
246
+ // пытаемся получить файл из OPFS
247
+ chunk.handle = await cacheDir.root.getFileHandle(path, { create: true });
248
+ chunk.isValid = (await chunk.handle.getFile()).size == chunkSize;
249
+ chunk.isLocked = false;
250
+ }
251
+ catch {
252
+ chunk.isValid = false;
253
+ chunk.isLocked = false;
254
+ }
255
+ };
256
+ cacheDir.cachedChunks.set(path, chunk);
257
+ chunk.lock = getChunk();
258
+ return chunk;
259
+ }
260
+ async readChunk(chunk, array, offset) {
261
+ const cachedChunk = this.getCached(chunk.index);
262
+ // ждем пока чанк освободится
263
+ while (cachedChunk.isLocked)
264
+ await cachedChunk.lock;
265
+ // если чанк содержит данные, читаем
266
+ if (cachedChunk.isValid) {
267
+ const buffer = new Uint8Array(array.buffer, offset, chunk.rwByteLength);
268
+ return this.readCached(cachedChunk, buffer, chunk.rwOffsetLocal);
269
+ }
270
+ else {
271
+ // отправляем запрос на скачивание чанка
272
+ const readRemote = async () => {
273
+ const response = await FileLoader.fetchRange(this._url, { startByte: chunk.chunkOffset, endByte: chunk.chunkOffset + chunk.size - 1 });
274
+ if (response.status != FetchStatus.PartialContent)
275
+ throw new Error("Failed to fetch chunk");
276
+ return response.data;
277
+ };
278
+ const readRemotePromise = readRemote();
279
+ // выбираем нужные данные из чанка
280
+ const resultPromise = readRemotePromise.then(buffer => {
281
+ const source = new Uint8Array(buffer, chunk.rwOffsetLocal, chunk.rwByteLength);
282
+ const target = new Uint8Array(array.buffer, offset, chunk.rwByteLength);
283
+ target.set(source);
284
+ });
285
+ // сохраняем чанк в OPFS
286
+ cachedChunk.isLocked = true;
287
+ cachedChunk.lock = readRemotePromise
288
+ .then(buffer => this.writeCached(cachedChunk, new Uint8Array(buffer), 0))
289
+ .then(() => { if (cachedChunk.isValid) {
290
+ this._loadedChunks++;
291
+ this.updateMetadata();
292
+ } });
293
+ return resultPromise;
294
+ }
295
+ }
296
+ async writeChunk(chunk, array, offset) {
297
+ const cachedChunk = this.getCached(chunk.index);
298
+ // ждем пока чанк освободится
299
+ while (cachedChunk.isLocked)
300
+ await cachedChunk.lock;
301
+ const source = new Uint8Array(array.buffer, offset, chunk.rwByteLength);
302
+ const target = new Uint8Array(chunk.rwByteLength);
303
+ target.set(source);
304
+ return this.writeCached(cachedChunk, target, chunk.rwOffsetLocal);
305
+ }
306
+ async readCached(file, buffer, position) {
307
+ // пытаемся выполнить синхронное чтение
308
+ if (file.synchHandle) {
309
+ file.synchHandle.read(buffer, { at: position });
310
+ return;
311
+ }
312
+ // выполняем операцию асинхронно
313
+ const promise = async () => {
314
+ if (this._isInSynchMode && !file.synchHandle) {
315
+ file.synchHandle = await file.handle.createSyncAccessHandle();
316
+ file.synchHandle.read(buffer, { at: position });
317
+ }
318
+ else {
319
+ const blob = await file.handle.getFile();
320
+ const result = await blob.slice(position, position + buffer.byteLength).arrayBuffer();
321
+ buffer.set(new Uint8Array(result));
322
+ }
323
+ };
324
+ file.isLocked = true;
325
+ return file.lock = promise()
326
+ .catch(() => { file.isValid = false; })
327
+ .finally(() => { file.isLocked = false; });
328
+ }
329
+ async writeCached(file, buffer, position) {
330
+ // пытаемся выполнить синхронную запись в файл
331
+ if (file.synchHandle) {
332
+ file.synchHandle.write(buffer, { at: position });
333
+ file.isValid = file.synchHandle.getSize() == this._chunkSize;
334
+ }
335
+ // выполняем операцию асинхронно
336
+ const promise = async () => {
337
+ if (this._isInSynchMode && !file.synchHandle) {
338
+ file.synchHandle = await file.handle.createSyncAccessHandle();
339
+ file.synchHandle.write(buffer, { at: position });
340
+ file.isValid = file.synchHandle.getSize() == this._chunkSize;
341
+ }
342
+ else {
343
+ /* eslint-disable-next-line -- так как собираем и под node и под web, а createWritable определен только для web? (lib.dom) */
344
+ const stream = await file.handle.createWritable();
345
+ await stream.write({ type: "write", data: buffer, position: position, });
346
+ await stream.close();
347
+ file.isValid = (await file.handle.getFile()).size == this._chunkSize;
348
+ }
349
+ };
350
+ file.isLocked = true;
351
+ return file.lock = promise()
352
+ .catch(() => { file.isValid = false; })
353
+ .finally(() => { file.isLocked = false; });
354
+ }
355
+ updateMetadata() {
356
+ if (this._metadataUpdater)
357
+ return;
358
+ this._metadataUpdater = new Promise(resolve => {
359
+ setTimeout(async () => {
360
+ this.storeMetadata();
361
+ this._metadataUpdater = undefined;
362
+ resolve();
363
+ }, 1000);
364
+ }).catch();
365
+ }
366
+ }
367
+ //# sourceMappingURL=PartialFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PartialFile.js","sourceRoot":"","sources":["../../../../src/wasm/file-system/PartialFile.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  /// <reference types="emscripten" />
2
+
3
+ type ConstructorOf<T> = new () => T;
4
+
2
5
  export interface IWasmBimModule extends EmscriptenModule {
3
6
  get FS(): FS;
4
7
  getAllTessellations(filename: string, compressed?: boolean): VectorOf<WasmTessellation>;
@@ -24,10 +27,12 @@ export interface IWasmBimModule extends EmscriptenModule {
24
27
  getCloudPoints(filename: string, index: number): WasmPointsData;
25
28
  getCloudPointsArray(filename: string, indicies: VectorOf<number>): VectorOf<WasmPointsData>;
26
29
  getCloudHierarchy(filename: string): VectorOf<WasmCloudHierarchyItem>;
27
- getCloudParameters(filename: string): MapOf<string, string>;
28
30
  getCloudMetadata(filename: string): WasmPointsMetadata;
29
31
  getCloudReader(): WasmCloudReader;
30
32
  //doLeakCheck(): void;
33
+
34
+ StringVector: ConstructorOf<VectorOf<string>>;
35
+ IntVector: ConstructorOf<VectorOf<number>>;
31
36
  }
32
37
 
33
38
  export interface VectorOf<T> extends IDisposable {
@@ -35,6 +40,7 @@ export interface VectorOf<T> extends IDisposable {
35
40
  set(index: number, value: T): void;
36
41
  push_back(value: T): void;
37
42
  size(): number;
43
+ resize(size: number, value: T): void;
38
44
  }
39
45
 
40
46
  export interface MapOf<TKey, TValue> extends IDisposable {
@@ -204,8 +210,8 @@ export interface WasmCloudHierarchyItem {
204
210
  type: number;
205
211
  mask: number;
206
212
  numPoints: number;
207
- offset: number;
208
- size: number;
213
+ offset: bigint;
214
+ size: bigint;
209
215
  min: number[];
210
216
  max: number[];
211
217
  spacing: number;
@@ -242,7 +248,6 @@ export interface WasmCloudReader extends IDisposable {
242
248
  getCloudPoints(index: number, cmdCacheEnable: boolean): WasmPointsData;
243
249
  getCloudPointsArray(indicies: VectorOf<number>, cmdCacheEnable: boolean): VectorOf<WasmPointsData>;
244
250
  getCloudHierarchy(): VectorOf<WasmCloudHierarchyItem>;
245
- getCloudParameters(): MapOf<string, string>;
246
251
  getCloudMetadata(): WasmPointsMetadata;
247
252
  }
248
253
 
@@ -287,6 +292,22 @@ export interface FileSystemType {
287
292
  type: any;
288
293
  }
289
294
 
295
+ export interface FStat {
296
+ dev: number,
297
+ ino: number,
298
+ mode: number,
299
+ nlink: number,
300
+ uid: number,
301
+ gid: number,
302
+ rdev: number,
303
+ size: number,
304
+ atime: Date,
305
+ ctime: Date,
306
+ mtime: Date,
307
+ blksize: number,
308
+ blocks: number
309
+ }
310
+
290
311
  export declare const MEMFS: Emscripten.FileSystemType;
291
312
  export declare const NODEFS: Emscripten.FileSystemType;
292
313
  export declare const IDBFS: Emscripten.FileSystemType;
@@ -301,7 +322,7 @@ export interface FS {
301
322
  unlink(path: string): void;
302
323
 
303
324
  stat(path: string, dontFollow?: boolean): any;
304
- lstat(path: string): any;
325
+ lstat(path: string): FStat;
305
326
  open(path: string, flags: string | number, mode?: number, fd_start?: number, fd_end?: number): FSStream;
306
327
  close(stream: FSStream): void;
307
328
  read(stream: FSStream, buffer: ArrayBufferView, offset: number, length: number, position?: number): number;