@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,237 @@
1
+ import { MAX_WRITE_CHUNK_SIZE, OPFS_CACHE_CHUNK_SIZE, BinaryCloudFileSignature, PartialFileSignature, SqliteFileSignature, SupportedFileSignatures } from "../../utils/Consts.js";
2
+ import { isOPFSEnabled, isValidFileSignature } from "../../utils/ViewerTools.js";
3
+ import { FetchStatus, FileLoader } from "../file-system/FileLoader.js";
4
+ import { File } from "../file-system/File.js";
5
+ import { PartialFile } from "../file-system/PartialFile.js";
6
+ export class FileAccessor {
7
+ fs;
8
+ memoryGuard;
9
+ moduleAccessor;
10
+ fileAccessDispatcher;
11
+ _files;
12
+ _memGuardOptions = { checkRAM: false, checkCache: isOPFSEnabled };
13
+ constructor(fs, memoryGuard, moduleAccessor, fileAccessDispatcher) {
14
+ this.fs = fs;
15
+ this.memoryGuard = memoryGuard;
16
+ this.moduleAccessor = moduleAccessor;
17
+ this.fileAccessDispatcher = fileAccessDispatcher;
18
+ this._files = new Map();
19
+ }
20
+ isFileExists(path) {
21
+ return this.fs.isFileExists(path);
22
+ }
23
+ isOpen(path) {
24
+ return this._files.has(path);
25
+ }
26
+ async lockFile(modelPartId) {
27
+ return this.fileAccessDispatcher?.lockFile(modelPartId, this.copy.bind(this), this.remove.bind(this)) ?? modelPartId;
28
+ }
29
+ async unlockFile(modelPartId) {
30
+ return this.fileAccessDispatcher?.unlockFile(modelPartId);
31
+ }
32
+ async open(id, source, options) {
33
+ let file;
34
+ const chunkSize = options?.chunkSize ?? MAX_WRITE_CHUNK_SIZE;
35
+ await this.memoryGuard.runOperation(async () => {
36
+ if (!source) {
37
+ file = await this.getFile(id, { create: true });
38
+ }
39
+ else if (typeof source == "string") {
40
+ file = await this.openUrl(id, source, chunkSize);
41
+ }
42
+ else if (source instanceof Blob) {
43
+ file = await this.getFile(id, { create: true });
44
+ await FileLoader.writeBlobToFile(source, chunkSize, file);
45
+ }
46
+ else if (source instanceof ArrayBuffer) {
47
+ file = await this.getFile(id, { create: true });
48
+ await file.write(source, 0);
49
+ }
50
+ else if (ArrayBuffer.isView(source)) {
51
+ file = await this.getFile(id, { create: true });
52
+ await file.write(source.buffer, 0);
53
+ }
54
+ }, this._memGuardOptions);
55
+ if (file)
56
+ this._files.set(id, file);
57
+ }
58
+ async copy(modelPartTargetId, modelPartSourceId) {
59
+ const source = await this.getFile(modelPartSourceId);
60
+ const target = await this.getFile(modelPartTargetId, { create: true });
61
+ return this.memoryGuard.runOperation(async () => source.copyTo(target), this._memGuardOptions);
62
+ }
63
+ async write(modelPartId, buffer, position) {
64
+ const arrayBuffer = ArrayBuffer.isView(buffer) ? buffer.buffer : buffer;
65
+ const file = await this.getFile(modelPartId, { create: true });
66
+ return this.memoryGuard.runOperation(async () => file.write(arrayBuffer, position), this._memGuardOptions);
67
+ }
68
+ async read(modelPartId, position, size) {
69
+ const file = await this.getFile(modelPartId);
70
+ return file.read(position, size);
71
+ }
72
+ async close(modelPartId) {
73
+ const file = this._files.get(modelPartId);
74
+ if (file) {
75
+ await file.close();
76
+ this._files.delete(modelPartId);
77
+ }
78
+ }
79
+ async remove(modelPartId) {
80
+ if (this.isFileExists(modelPartId)) {
81
+ const file = await this.getFile(modelPartId);
82
+ await file?.remove();
83
+ }
84
+ await this.close(modelPartId);
85
+ }
86
+ async isValid(modelPartId) {
87
+ try {
88
+ const file = await this.getFile(modelPartId, { create: false });
89
+ if (!await file.isValid())
90
+ return false;
91
+ const signatureSize = Math.max(...SupportedFileSignatures.map(sign => sign.byteLength));
92
+ const arrayBuffer = await file.read(0, signatureSize);
93
+ return SupportedFileSignatures.some(signature => isValidFileSignature(signature, arrayBuffer));
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ async getFileInfo(modelPartId) {
100
+ return this.getFile(modelPartId, { create: false }).then(file => file.getFileInfo());
101
+ }
102
+ async getFile(path, options = { create: false }) {
103
+ const file = this._files.get(path);
104
+ if (file)
105
+ return file;
106
+ await this.fs.actualizeFilePath(path);
107
+ if (this.isFileExists(path)) {
108
+ const file = await File.open(this.fs, path);
109
+ return (await this.isPartialFile(file)) ? PartialFile.fromFile(this.fs, path) : file;
110
+ }
111
+ else if (options.create) {
112
+ return File.open(this.fs, path, options);
113
+ }
114
+ throw new Error("File is not exist.");
115
+ }
116
+ async runSyncFileOp(path, opFunc, options) {
117
+ return this.memoryGuard.runOperation(() => this.fileGuardOp(path, opFunc), options);
118
+ }
119
+ async openSyncFileAccess(path) {
120
+ if (Array.isArray(path)) {
121
+ const synchPromises = new Array(path.length);
122
+ for (let i = 0; i < path.length; i++) {
123
+ synchPromises[i] = this.getFile(path[i]).then(file => file.openSyncFileAccess());
124
+ }
125
+ await Promise.all(synchPromises);
126
+ }
127
+ else {
128
+ await this.getFile(path).then(file => file.openSyncFileAccess());
129
+ }
130
+ }
131
+ async closeSyncFileAccess(path) {
132
+ if (Array.isArray(path)) {
133
+ const synchPromises = new Array(path.length);
134
+ for (let i = 0; i < path.length; i++) {
135
+ synchPromises[i] = this.getFile(path[i]).then(file => file.closeSyncFileAccess());
136
+ }
137
+ await Promise.all(synchPromises);
138
+ }
139
+ else {
140
+ await this.getFile(path).then(file => file.closeSyncFileAccess());
141
+ }
142
+ }
143
+ async dispose() {
144
+ const closePromises = new Array();
145
+ for (const [, file] of this._files) {
146
+ closePromises.push(file.close());
147
+ }
148
+ await Promise.all(closePromises);
149
+ }
150
+ async clearCache(memToFreeAmount = Number.MAX_SAFE_INTEGER) {
151
+ if (!this.fileAccessDispatcher)
152
+ return;
153
+ const cachedFiles = await this.fs.getCachedFiles();
154
+ cachedFiles.sort((a, b) => a.lastModified - b.lastModified);
155
+ let freedMemory = 0;
156
+ for (let i = 0; i < cachedFiles.length && freedMemory < memToFreeAmount; i++) {
157
+ const path = cachedFiles[i].path;
158
+ if (!await this.fileAccessDispatcher.isLocked(path)) {
159
+ const file = await this.getFile(path);
160
+ freedMemory += file.getFileInfo().sizeOnDisk;
161
+ await file.remove();
162
+ }
163
+ }
164
+ }
165
+ async openUrl(id, source, chunkSize) {
166
+ // Try to fetch first chunk of the file
167
+ const firstChunkRange = { startByte: 0, endByte: OPFS_CACHE_CHUNK_SIZE - 1 };
168
+ let response = await FileLoader.fetchRange(source, firstChunkRange);
169
+ // If file length less than chunk size try again with new range
170
+ if (response.status == FetchStatus.InvalidRange && response.length < OPFS_CACHE_CHUNK_SIZE) {
171
+ firstChunkRange.endByte = response.length - 1;
172
+ response = await FileLoader.fetchRange(source, firstChunkRange);
173
+ }
174
+ // If partial load is not supported by the server, the response includes the full file contents.
175
+ if (response.status == FetchStatus.FullFile) {
176
+ // get file signature and check if file format is supported by dataprovider
177
+ const size = response.data.size;
178
+ const signatureSize = Math.min(size, Math.max(...SupportedFileSignatures.map(sign => sign.byteLength)));
179
+ const arrayBuffer = await FileLoader.readChunk(0, signatureSize, response.data);
180
+ if (SupportedFileSignatures.some(signature => isValidFileSignature(signature, arrayBuffer))) {
181
+ // Store full file if file format is supported
182
+ const file = await File.open(this.fs, id, { create: true });
183
+ await FileLoader.writeBlobToFile(response.data, chunkSize, file);
184
+ return file;
185
+ }
186
+ throw new Error("Given 3D model is not supported");
187
+ }
188
+ // If partial load is supported, the response includes first chunk of the file
189
+ if (response.status == FetchStatus.PartialContent) {
190
+ const buffer = response.data;
191
+ const fileLength = response.length;
192
+ // If SQLite database:
193
+ if (isValidFileSignature(SqliteFileSignature, buffer)) {
194
+ const file = await File.open(this.fs, id, { create: true });
195
+ // write first chunk
196
+ await file.write(buffer, 0);
197
+ // fetch the rest
198
+ await FileLoader.fetchFile(source, chunkSize, file, fileLength, buffer.byteLength);
199
+ return file;
200
+ }
201
+ // If binary cloud
202
+ if (isValidFileSignature(BinaryCloudFileSignature, buffer)) {
203
+ // make partial file
204
+ const partial = await PartialFile.fromUrl(this.fs, id, String(source), fileLength);
205
+ // write first chunk
206
+ await partial.write(buffer, 0);
207
+ return partial;
208
+ }
209
+ throw new Error("Given 3D model is not supported");
210
+ }
211
+ throw new Error("Failed to fetch file.");
212
+ }
213
+ async fileGuardOp(path, opFunc) {
214
+ try {
215
+ await this.openSyncFileAccess(path);
216
+ const result = await opFunc();
217
+ return result;
218
+ }
219
+ catch (e) {
220
+ console.error(e);
221
+ throw e;
222
+ }
223
+ finally {
224
+ await this.closeSyncFileAccess(path);
225
+ }
226
+ }
227
+ async isPartialFile(file) {
228
+ try {
229
+ const buffer = await file.read(0, PartialFileSignature.byteLength);
230
+ return isValidFileSignature(PartialFileSignature, buffer);
231
+ }
232
+ catch {
233
+ return false;
234
+ }
235
+ }
236
+ }
237
+ //# sourceMappingURL=FileAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/FileAccessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { BimDataElement, BimDataElementPropertySet, BimDataTessellation, BimDataTessellationInfo } from "../../model/BimDataClasses.js";
2
+ import { FileAccessor } from "./FileAccessor.js";
3
+ import { IWasmBimModule } from "../pilot_bim_dataprovider.js";
4
+ import { IModelPartAccessor, IWasmModuleAccessor } from "../WorkerApi.js";
5
+ export declare class ModelPartAccessor implements IModelPartAccessor {
6
+ readonly fileAccessor: FileAccessor;
7
+ readonly moduleAccessor: IWasmModuleAccessor;
8
+ private readonly _memGuardOptions;
9
+ constructor(fileAccessor: FileAccessor, moduleAccessor: IWasmModuleAccessor);
10
+ get module(): IWasmBimModule;
11
+ mergeModelParts(targetId: string, sourceId: string): Promise<void>;
12
+ getAllTessellations(modelPartId: string, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<void>;
13
+ getTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, firstItemIdx: bigint, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<bigint>;
14
+ getTessellationsInfo(modelPartId: string, versionFrom: bigint, versionTo: bigint, compressed: boolean, transmit: (map: BimDataTessellationInfo[]) => Promise<void>): Promise<void>;
15
+ getTessellation(modelPartId: string, tessellationKey: string, version: bigint, compressed: boolean): Promise<BimDataTessellation>;
16
+ getTessellationsByIds(modelPartId: string, tessellations: string[], version: bigint, compressed: boolean, transmit: (map: BimDataTessellation[]) => Promise<void>): Promise<void>;
17
+ getAllElements(modelPartId: string, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
18
+ getElements(modelPartId: string, versionFrom: bigint, versionTo: bigint, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
19
+ getDiffElements(modelPartId: string, versionFrom: bigint, versionTo: bigint, transmit: (elements: BimDataElement[]) => Promise<void>): Promise<void>;
20
+ getElementProperties(modelPartId: string, elementId: string, version: bigint): Promise<BimDataElementPropertySet[]>;
21
+ getElementPropertiesByIds(modelPartId: string, indexes: string[], version: bigint): Promise<Map<string, BimDataElementPropertySet[]>>;
22
+ getElementTessellations(modelPartId: string, versionFrom: bigint, versionTo: bigint, compressed: boolean): Promise<BimDataTessellation[]>;
23
+ getAllVersions(modelPartId: string): Promise<bigint[]>;
24
+ getLatestVersion(modelPartId: string): Promise<bigint>;
25
+ isValid(modelPartId: string): Promise<boolean>;
26
+ dispose(): Promise<void>;
27
+ }
@@ -0,0 +1,142 @@
1
+ import { BimDataConverter, getPath, isOPFSEnabled, transmitWasmData } from "../../utils/ViewerTools.js";
2
+ import { TRANSMIT_STEP } from "../../utils/Consts.js";
3
+ export class ModelPartAccessor {
4
+ fileAccessor;
5
+ moduleAccessor;
6
+ _memGuardOptions = { checkRAM: isOPFSEnabled, checkCache: false };
7
+ constructor(fileAccessor, moduleAccessor) {
8
+ this.fileAccessor = fileAccessor;
9
+ this.moduleAccessor = moduleAccessor;
10
+ }
11
+ get module() {
12
+ return this.moduleAccessor.module;
13
+ }
14
+ async mergeModelParts(targetId, sourceId) {
15
+ const targetPath = getPath(targetId);
16
+ const sourcePath = getPath(sourceId);
17
+ await this.fileAccessor.runSyncFileOp([targetId, sourceId], () => {
18
+ const targetVersion = this.module.getDatabaseVersion(targetPath);
19
+ const sourceVersion = this.module.getDatabaseVersion(sourcePath);
20
+ if (sourceVersion != targetVersion) {
21
+ this.module.manualMergeDatabases(targetPath, sourcePath);
22
+ }
23
+ else {
24
+ this.module.mergeDatabases(targetPath, sourcePath);
25
+ }
26
+ });
27
+ }
28
+ async getAllTessellations(modelPartId, compressed, transmit) {
29
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
30
+ const result = this.module.getAllTessellations(getPath(modelPartId), compressed);
31
+ return transmitWasmData(this.module, result, true, BimDataConverter.toBimDataTessellation, transmit, TRANSMIT_STEP);
32
+ }, this._memGuardOptions);
33
+ }
34
+ async getTessellations(modelPartId, versionFrom, versionTo, firstItemIdx, compressed, transmit) {
35
+ return this.fileAccessor.runSyncFileOp(modelPartId, async () => {
36
+ const result = this.module.getTessellations(getPath(modelPartId), versionFrom, versionTo, firstItemIdx, compressed);
37
+ const nextItemIdx = result.nextItemIdx;
38
+ await transmitWasmData(this.module, result.tessellations, true, BimDataConverter.toBimDataTessellation, transmit, TRANSMIT_STEP);
39
+ result.delete();
40
+ return Promise.resolve(nextItemIdx);
41
+ }, this._memGuardOptions);
42
+ }
43
+ async getTessellationsInfo(modelPartId, versionFrom, versionTo, compressed, transmit) {
44
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
45
+ const result = this.module.getTessellationsInfo(getPath(modelPartId), versionFrom, versionTo, compressed);
46
+ return transmitWasmData(this.module, result, true, BimDataConverter.toBimDataTessellationInfo, transmit, TRANSMIT_STEP);
47
+ }, this._memGuardOptions);
48
+ }
49
+ async getTessellation(modelPartId, tessellationKey, version, compressed) {
50
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
51
+ const result = this.module.getTessellation(getPath(modelPartId), tessellationKey, version, compressed);
52
+ return BimDataConverter.toBimDataTessellation(this.module, result, true);
53
+ }, this._memGuardOptions);
54
+ }
55
+ async getTessellationsByIds(modelPartId, tessellations, version, compressed, transmit) {
56
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
57
+ const idsVector = new this.module.StringVector();
58
+ idsVector.resize(tessellations.length, "");
59
+ for (let i = 0; i < tessellations.length; i++) {
60
+ idsVector.set(i, tessellations[i]);
61
+ }
62
+ const result = this.module.getTessellationsByIds(getPath(modelPartId), version, idsVector, compressed);
63
+ idsVector.delete();
64
+ return transmitWasmData(this.module, result, true, BimDataConverter.toBimDataTessellation, transmit, TRANSMIT_STEP);
65
+ }, this._memGuardOptions);
66
+ }
67
+ async getAllElements(modelPartId, transmit) {
68
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
69
+ const result = this.module.getAllNodes(getPath(modelPartId));
70
+ return transmitWasmData(this.module, result, true, BimDataConverter.toBimDataElement, transmit, TRANSMIT_STEP);
71
+ }, this._memGuardOptions);
72
+ }
73
+ async getElements(modelPartId, versionFrom, versionTo, transmit) {
74
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
75
+ const result = this.module.getNodes(getPath(modelPartId), versionFrom, versionTo);
76
+ return transmitWasmData(this.module, result, true, BimDataConverter.toBimDataElement, transmit, TRANSMIT_STEP);
77
+ }, this._memGuardOptions);
78
+ }
79
+ async getDiffElements(modelPartId, versionFrom, versionTo, transmit) {
80
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
81
+ const result = this.module.getComparedNodes(getPath(modelPartId), versionFrom, versionTo);
82
+ return transmitWasmData(this.module, result, true, BimDataConverter.toBimDataElement, transmit, TRANSMIT_STEP);
83
+ }, this._memGuardOptions);
84
+ }
85
+ async getElementProperties(modelPartId, elementId, version) {
86
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
87
+ const set = this.module.getProperties(getPath(modelPartId), elementId, version);
88
+ return BimDataConverter.toModelElementPropertySet(set, true);
89
+ }, this._memGuardOptions);
90
+ }
91
+ async getElementPropertiesByIds(modelPartId, indexes, version) {
92
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
93
+ const idsVector = new this.module.StringVector();
94
+ idsVector.resize(indexes.length, "");
95
+ for (let i = 0; i < indexes.length; i++) {
96
+ idsVector.set(i, indexes[i]);
97
+ }
98
+ const properties = this.module.getPropertiesByIds(getPath(modelPartId), idsVector, version);
99
+ const result = new Map();
100
+ for (let i = 0; i < indexes.length; i++) {
101
+ const set = BimDataConverter.toModelElementPropertySet(properties.get(i).value, true);
102
+ result.set(indexes[i], set);
103
+ }
104
+ idsVector.delete();
105
+ return result;
106
+ }, this._memGuardOptions);
107
+ }
108
+ async getElementTessellations(modelPartId, versionFrom, versionTo, compressed) {
109
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
110
+ const vts = this.module.getNodesTessellations(getPath(modelPartId), versionFrom, versionTo, compressed);
111
+ return BimDataConverter.toBimDataTessellations(this.module, vts, true);
112
+ }, this._memGuardOptions);
113
+ }
114
+ async getAllVersions(modelPartId) {
115
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
116
+ const bimVersions = this.module.getAllVersions(getPath(modelPartId));
117
+ const versions = new Array(bimVersions.size());
118
+ for (let i = 0; i < versions.length; i++) {
119
+ versions[i] = bimVersions.get(i);
120
+ }
121
+ bimVersions.delete();
122
+ return versions;
123
+ });
124
+ }
125
+ async getLatestVersion(modelPartId) {
126
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => this.module.getLatestVersion(getPath(modelPartId)));
127
+ }
128
+ async isValid(modelPartId) {
129
+ return this.fileAccessor.runSyncFileOp(modelPartId, () => {
130
+ try {
131
+ return this.module.isValidDatabase(getPath(modelPartId));
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ });
137
+ }
138
+ async dispose() {
139
+ // empty method
140
+ }
141
+ }
142
+ //# sourceMappingURL=ModelPartAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelPartAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/ModelPartAccessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { FileInfo, IFileSystem } from "./IFileSystem.js";
2
+ export interface IFile {
3
+ readonly id: string;
4
+ write(buffer: ArrayBuffer, position: number): Promise<void>;
5
+ read(position: number, size: number): Promise<Uint8Array>;
6
+ copyTo(file: IFile): Promise<void>;
7
+ openSyncFileAccess(): Promise<void>;
8
+ closeSyncFileAccess(force?: boolean): Promise<void>;
9
+ isValid(): Promise<boolean>;
10
+ getFileInfo(): FileInfo;
11
+ remove(): Promise<void>;
12
+ close(): Promise<void>;
13
+ }
14
+ export declare class File implements IFile {
15
+ private readonly _fs;
16
+ readonly id: string;
17
+ private constructor();
18
+ static open(fs: IFileSystem, id: string, options?: {
19
+ create: boolean;
20
+ }): Promise<File>;
21
+ write(buffer: ArrayBuffer, position: number): Promise<void>;
22
+ read(position: number, size: number): Promise<Uint8Array>;
23
+ copyTo(file: IFile): Promise<void>;
24
+ openSyncFileAccess(): Promise<void>;
25
+ closeSyncFileAccess(force?: boolean): Promise<void>;
26
+ getFileInfo(): FileInfo;
27
+ isValid(): Promise<boolean>;
28
+ remove(): Promise<void>;
29
+ close(): Promise<void>;
30
+ }
@@ -0,0 +1,58 @@
1
+ export class File {
2
+ _fs;
3
+ id;
4
+ constructor(_fs, id) {
5
+ this._fs = _fs;
6
+ this.id = id;
7
+ }
8
+ static async open(fs, id, options = { create: false }) {
9
+ if (!fs.isFileExists(id)) {
10
+ if (options.create) {
11
+ await fs.makeFile(id, new Uint8Array());
12
+ }
13
+ else {
14
+ throw new Error("File is not exist.");
15
+ }
16
+ }
17
+ return new File(fs, id);
18
+ }
19
+ async write(buffer, position) {
20
+ return this._fs.writeFile(this.id, new Uint8Array(buffer), position);
21
+ }
22
+ async read(position, size) {
23
+ return this._fs.readFile(this.id, position, size);
24
+ }
25
+ async copyTo(file) {
26
+ return this._fs.copyFile(file.id, this.id);
27
+ }
28
+ async openSyncFileAccess() {
29
+ await this._fs.openSyncFileAccess(this.id);
30
+ }
31
+ async closeSyncFileAccess(force = false) {
32
+ await this._fs.closeSyncFileAccess(this.id, force);
33
+ }
34
+ getFileInfo() {
35
+ return this._fs.getFileInfo(this.id);
36
+ }
37
+ async isValid() {
38
+ try {
39
+ // check if file is still present in fs
40
+ if (!this._fs.isFileExists(this.id))
41
+ return false;
42
+ // check if file is can be accessed in synch mode
43
+ await this._fs.openSyncFileAccess(this.id);
44
+ await this._fs.closeSyncFileAccess(this.id);
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ return true;
50
+ }
51
+ async remove() {
52
+ return this._fs.remove(this.id);
53
+ }
54
+ async close() {
55
+ await this.closeSyncFileAccess(true);
56
+ }
57
+ }
58
+ //# sourceMappingURL=File.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"File.js","sourceRoot":"","sources":["../../../../src/wasm/file-system/File.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,IAAI;IACsB;IAA2B;IAAhE,YAAqC,GAAgB,EAAW,EAAU;QAArC,QAAG,GAAH,GAAG,CAAa;QAAW,OAAE,GAAF,EAAE,CAAQ;IAAI,CAAC;IAE/E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAe,EAAE,EAAU,EAAE,UAA+B,EAAE,MAAM,EAAE,KAAK,EAAE;QAC7F,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;aACzC;iBACI;gBACH,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;aACvC;SACF;QACD,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB,EAAE,QAAgB;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,IAAY;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAW;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAiB,KAAK;QAC9C,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAEA,WAAW;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI;YACF,uCAAuC;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YAEf,iDAAiD;YACjD,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7C;QACD,MAAM;YACJ,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ export declare class FileAccessDispatcher {
2
+ private _locks;
3
+ private _broadcastChannel;
4
+ private _tabId;
5
+ constructor();
6
+ lockFile(path: string, copyFunc: (targetPath: string, sourcePath: string) => Promise<void>, removeFunc: (path: string) => Promise<void>): Promise<string>;
7
+ unlockFile(path: string): Promise<void>;
8
+ isLockedByThisTab(path: string): boolean;
9
+ isLocked(path: string): Promise<boolean>;
10
+ dispose(): Promise<void>;
11
+ private requestCopy;
12
+ }