@pilotdev/pilot-bim-dataprovider 26.1.0 → 26.3.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 (48) hide show
  1. package/lib/__tests__/test_utils/BinaryCloudTestUtils.d.ts +21 -0
  2. package/lib/__tests__/test_utils/BinaryCloudTestUtils.js +231 -0
  3. package/lib/__tests__/test_utils/BinaryCloudTestUtils.js.map +1 -0
  4. package/lib/src/BimDataProviderApi.d.ts +1 -1
  5. package/lib/src/model/BimDataClasses.d.ts +22 -10
  6. package/lib/src/model/BimDataClasses.js +18 -1
  7. package/lib/src/model/BimDataClasses.js.map +1 -1
  8. package/lib/src/model/BimDataCloudPart.d.ts +1 -1
  9. package/lib/src/model/BimDataCloudPart.js +2 -2
  10. package/lib/src/model/BimDataCloudPart.js.map +1 -1
  11. package/lib/src/utils/Consts.d.ts +7 -0
  12. package/lib/src/utils/Consts.js +8 -1
  13. package/lib/src/utils/Consts.js.map +1 -1
  14. package/lib/src/utils/ViewerTools.d.ts +14 -7
  15. package/lib/src/utils/ViewerTools.js +67 -20
  16. package/lib/src/utils/ViewerTools.js.map +1 -1
  17. package/lib/src/wasm/WorkerApi.d.ts +1 -1
  18. package/lib/src/wasm/cloud_readers/BinaryCloudReader.d.ts +18 -5
  19. package/lib/src/wasm/cloud_readers/BinaryCloudReader.js +219 -202
  20. package/lib/src/wasm/cloud_readers/BinaryCloudReader.js.map +1 -1
  21. package/lib/src/wasm/cloud_readers/ICacheableBinaryCloud.d.ts +42 -0
  22. package/lib/src/wasm/cloud_readers/ICacheableBinaryCloud.js +229 -0
  23. package/lib/src/wasm/cloud_readers/ICacheableBinaryCloud.js.map +1 -0
  24. package/lib/src/wasm/cloud_readers/ICloudReader.d.ts +1 -1
  25. package/lib/src/wasm/cloud_readers/WasmCloudReader.d.ts +1 -1
  26. package/lib/src/wasm/cloud_readers/WasmCloudReader.js +4 -5
  27. package/lib/src/wasm/cloud_readers/WasmCloudReader.js.map +1 -1
  28. package/lib/src/wasm/data_accessors/CloudPartAccessor.d.ts +1 -1
  29. package/lib/src/wasm/data_accessors/CloudPartAccessor.js +6 -6
  30. package/lib/src/wasm/data_accessors/CloudPartAccessor.js.map +1 -1
  31. package/lib/src/wasm/data_accessors/FileAccessor.d.ts +1 -1
  32. package/lib/src/wasm/data_accessors/FileAccessor.js +50 -35
  33. package/lib/src/wasm/data_accessors/FileAccessor.js.map +1 -1
  34. package/lib/src/wasm/file-system/ChunkCacheFile.d.ts +34 -0
  35. package/lib/src/wasm/file-system/ChunkCacheFile.js +254 -0
  36. package/lib/src/wasm/file-system/ChunkCacheFile.js.map +1 -0
  37. package/lib/src/wasm/file-system/File.d.ts +4 -1
  38. package/lib/src/wasm/file-system/File.js +11 -3
  39. package/lib/src/wasm/file-system/File.js.map +1 -1
  40. package/lib/src/wasm/file-system/PartialFile.d.ts +3 -2
  41. package/lib/src/wasm/file-system/PartialFile.js +26 -32
  42. package/lib/src/wasm/file-system/PartialFile.js.map +1 -1
  43. package/lib/src/wasm/file-system/RemoteFile.d.ts +24 -0
  44. package/lib/src/wasm/file-system/RemoteFile.js +106 -0
  45. package/lib/src/wasm/file-system/RemoteFile.js.map +1 -0
  46. package/lib/src/wasm/wasm.worker-node.cjs +1 -1
  47. package/lib/src/wasm/wasm.worker-web.cjs +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,229 @@
1
+ import { BimCloudMetadata, BimCloudHierarchyItem } from "../../model/BimDataClasses.js";
2
+ import { BinaryConverter } from "../../utils/ViewerTools.js";
3
+ import { OPFS_BIM_CACHE_CHUNK_EXT } from "../../utils/Consts.js";
4
+ export class BinaryCloudChunks {
5
+ _chunkTable = [];
6
+ itemSize = 12;
7
+ name = "chunkTable" + OPFS_BIM_CACHE_CHUNK_EXT;
8
+ countToRead = 0;
9
+ get(index) {
10
+ return this._chunkTable[index];
11
+ }
12
+ getData() {
13
+ return this._chunkTable;
14
+ }
15
+ readFromBuffer(buffer) {
16
+ let offset = 0;
17
+ const chunkCount = BinaryConverter.fromU32(buffer, offset);
18
+ offset += 4;
19
+ if (chunkCount * this.itemSize + offset < buffer.byteLength)
20
+ throw new Error("Invalid chunk table size.");
21
+ this._chunkTable = [];
22
+ while (offset < buffer.byteLength) {
23
+ const chunkEntry = {
24
+ offset: Number(BinaryConverter.fromI64(buffer, offset)),
25
+ size: BinaryConverter.fromI32(buffer, offset + 8)
26
+ };
27
+ this._chunkTable.push(chunkEntry);
28
+ offset += this.itemSize;
29
+ }
30
+ }
31
+ bytesToRead() {
32
+ return this.countToRead * this.itemSize + 4;
33
+ }
34
+ }
35
+ export class BinaryCloudNodes {
36
+ _hierarchy = [];
37
+ _nodeMap = new Map();
38
+ itemSize = 56;
39
+ name = "hierarchy" + OPFS_BIM_CACHE_CHUNK_EXT;
40
+ count = 0;
41
+ getData() {
42
+ return this._hierarchy;
43
+ }
44
+ getNodeByDataIndex(dataIndex) {
45
+ return this._nodeMap.get(dataIndex) ?? this._hierarchy.find(node => node.dataIndex == dataIndex);
46
+ }
47
+ getNodesByChunkId(chunkId) {
48
+ return this._hierarchy.filter(node => node.chunkId == chunkId);
49
+ }
50
+ readFromBuffer(buffer) {
51
+ this._hierarchy = [];
52
+ let offset = 0;
53
+ while (offset < buffer.byteLength) {
54
+ // offset: 0
55
+ const index = BinaryConverter.fromI32(buffer, offset);
56
+ offset += 4;
57
+ // offset: 4
58
+ const dataIndex = BinaryConverter.fromI32(buffer, offset);
59
+ offset += 4;
60
+ // offset: 8
61
+ const chunkId = BinaryConverter.fromI32(buffer, offset);
62
+ offset += 4;
63
+ // offset: 12
64
+ const chunkOffset = BinaryConverter.fromU32(buffer, offset);
65
+ offset += 4;
66
+ // offset: 16
67
+ const pointSize = BinaryConverter.fromU32(buffer, offset);
68
+ offset += 4;
69
+ // offset: 20
70
+ const numPoints = BinaryConverter.fromU32(buffer, offset);
71
+ offset += 4;
72
+ // offset: 24
73
+ const childNodesCount = BinaryConverter.fromU32(buffer, offset);
74
+ offset += 4;
75
+ // offset: 28
76
+ const min = { x: 0.0, y: 0.0, z: 0.0 };
77
+ min.x = BinaryConverter.fromF32(buffer, offset);
78
+ offset += 4;
79
+ min.y = BinaryConverter.fromF32(buffer, offset);
80
+ offset += 4;
81
+ min.z = BinaryConverter.fromF32(buffer, offset);
82
+ offset += 4;
83
+ // offset: 40
84
+ const max = { x: 0.0, y: 0.0, z: 0.0 };
85
+ max.x = BinaryConverter.fromF32(buffer, offset);
86
+ offset += 4;
87
+ max.y = BinaryConverter.fromF32(buffer, offset);
88
+ offset += 4;
89
+ max.z = BinaryConverter.fromF32(buffer, offset);
90
+ offset += 4;
91
+ // offset: 52
92
+ const type = buffer[offset];
93
+ offset++;
94
+ // offset: 53
95
+ const mask = buffer[offset];
96
+ offset++;
97
+ // offset: 54
98
+ offset += 2;
99
+ // offset: 56
100
+ const node = new BimCloudHierarchyItem(index, dataIndex, type, mask, numPoints, min, max, chunkOffset, chunkId, pointSize, 0, childNodesCount);
101
+ this._hierarchy.push(node);
102
+ this._nodeMap.set(node.dataIndex, node);
103
+ }
104
+ }
105
+ bytesToRead() {
106
+ return this.count * this.itemSize;
107
+ }
108
+ }
109
+ export class BinaryCloudHeader {
110
+ static size = 136;
111
+ _header = new BimCloudMetadata();
112
+ itemSize = BinaryCloudHeader.size;
113
+ name = "header" + OPFS_BIM_CACHE_CHUNK_EXT;
114
+ getData() {
115
+ return this._header;
116
+ }
117
+ readFromBuffer(buffer) {
118
+ if (buffer.length < this.itemSize)
119
+ throw new Error("Invalid binary cloud header size.");
120
+ let offset = 0;
121
+ // offset: 0
122
+ //const signature = [byteArray[0], byteArray[1], byteArray[2], byteArray[3]];
123
+ offset += 4;
124
+ // offset: 4
125
+ const version = BinaryConverter.fromU32(buffer, offset);
126
+ offset += 4;
127
+ // offset: 8
128
+ const fileSize = BinaryConverter.fromI64(buffer, offset);
129
+ offset += 8;
130
+ // offset: 16
131
+ const nodesOffset = BinaryConverter.fromI64(buffer, offset);
132
+ offset += 8;
133
+ // offset: 24
134
+ const pointsOffset = BinaryConverter.fromI64(buffer, offset);
135
+ offset += 8;
136
+ // offset: 32
137
+ const chunkTableOffset = BinaryConverter.fromI64(buffer, offset);
138
+ offset += 8;
139
+ // offset: 40
140
+ const numPoints = BinaryConverter.fromU64(buffer, offset);
141
+ offset += 8;
142
+ // offset: 48
143
+ const numNodes = BinaryConverter.fromU32(buffer, offset);
144
+ offset += 4;
145
+ // offset: 52
146
+ const numChunks = BinaryConverter.fromU32(buffer, offset);
147
+ offset += 4;
148
+ // offset: 56
149
+ const depth = BinaryConverter.fromU32(buffer, offset);
150
+ offset += 4;
151
+ // offset: 60
152
+ const baseSpacing = BinaryConverter.fromF32(buffer, offset);
153
+ offset += 4;
154
+ // offset: 64
155
+ const scale = BinaryConverter.fromF64(buffer, offset);
156
+ offset += 8;
157
+ // offset: 72
158
+ const min = { x: 0.0, y: 0.0, z: 0.0 };
159
+ min.x = BinaryConverter.fromF32(buffer, offset);
160
+ offset += 4;
161
+ min.y = BinaryConverter.fromF32(buffer, offset);
162
+ offset += 4;
163
+ min.z = BinaryConverter.fromF32(buffer, offset);
164
+ offset += 4;
165
+ // offset: 84
166
+ const max = { x: 0.0, y: 0.0, z: 0.0 };
167
+ max.x = BinaryConverter.fromF32(buffer, offset);
168
+ offset += 4;
169
+ max.y = BinaryConverter.fromF32(buffer, offset);
170
+ offset += 4;
171
+ max.z = BinaryConverter.fromF32(buffer, offset);
172
+ offset += 4;
173
+ // offset: 96
174
+ const rootBoxMin = { x: 0.0, y: 0.0, z: 0.0 };
175
+ rootBoxMin.x = BinaryConverter.fromF32(buffer, offset);
176
+ offset += 4;
177
+ rootBoxMin.y = BinaryConverter.fromF32(buffer, offset);
178
+ offset += 4;
179
+ rootBoxMin.z = BinaryConverter.fromF32(buffer, offset);
180
+ offset += 4;
181
+ // offset: 108
182
+ const rootBoxMax = { x: 0.0, y: 0.0, z: 0.0 };
183
+ rootBoxMax.x = BinaryConverter.fromF32(buffer, offset);
184
+ offset += 4;
185
+ rootBoxMax.y = BinaryConverter.fromF32(buffer, offset);
186
+ offset += 4;
187
+ rootBoxMax.z = BinaryConverter.fromF32(buffer, offset);
188
+ offset += 4;
189
+ // offset: 120
190
+ const centerPosition = { x: 0.0, y: 0.0, z: 0.0 };
191
+ centerPosition.x = BinaryConverter.fromF32(buffer, offset);
192
+ offset += 4;
193
+ centerPosition.y = BinaryConverter.fromF32(buffer, offset);
194
+ offset += 4;
195
+ centerPosition.z = BinaryConverter.fromF32(buffer, offset);
196
+ offset += 4;
197
+ // offset: 132
198
+ const pointFormat = buffer[offset];
199
+ offset++;
200
+ // offset: 133
201
+ const bytesPerPoint = buffer[offset];
202
+ offset++;
203
+ // offset: 134
204
+ offset += 2;
205
+ // offset: 136
206
+ this._header.version = version;
207
+ this._header.fileSize = Number(fileSize);
208
+ this._header.nodesOffset = Number(nodesOffset);
209
+ this._header.pointsOffset = Number(pointsOffset);
210
+ this._header.chunkTableOffset = Number(chunkTableOffset);
211
+ this._header.numPoints = Number(numPoints);
212
+ this._header.nodesCount = numNodes;
213
+ this._header.chunkCount = numChunks;
214
+ this._header.depth = depth;
215
+ this._header.baseSpacing = baseSpacing;
216
+ this._header.posScale = { x: scale, y: scale, z: scale };
217
+ this._header.min = min;
218
+ this._header.max = max;
219
+ this._header.root_min = rootBoxMin;
220
+ this._header.root_max = rootBoxMax;
221
+ this._header.posOffset = centerPosition;
222
+ this._header.pointFormat = pointFormat;
223
+ this._header.bytesPerPoint = bytesPerPoint;
224
+ }
225
+ bytesToRead() {
226
+ return BinaryCloudHeader.size;
227
+ }
228
+ }
229
+ //# sourceMappingURL=ICacheableBinaryCloud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICacheableBinaryCloud.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/ICacheableBinaryCloud.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { BimCloudHierarchyItem, BimCloudMetadata } from "../../model/BimDataClas
2
2
  export interface ICloudReader {
3
3
  open(): Promise<void>;
4
4
  close(): Promise<void>;
5
- getCloudPoints(index: number, offset: number, count: number): Promise<Float32Array>;
5
+ getCloudPoints(index: number): Promise<Float32Array>;
6
6
  getCloudPointsArray(indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>, step: number): Promise<void>;
7
7
  getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
8
8
  getCloudMetadata(): Promise<BimCloudMetadata>;
@@ -12,7 +12,7 @@ export declare class WasmCloudReader implements ICloudReader {
12
12
  constructor(moduleAccessor: IWasmModuleAccessor, fileAccessor: FileAccessor, modelPartId: string);
13
13
  open(): Promise<void>;
14
14
  close(): Promise<void>;
15
- getCloudPoints(index: number, offset: number, count: number): Promise<Float32Array>;
15
+ getCloudPoints(index: number): Promise<Float32Array>;
16
16
  getCloudPointsArray(indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>, step: number): Promise<void>;
17
17
  getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
18
18
  getCloudMetadata(): Promise<BimCloudMetadata>;
@@ -23,16 +23,15 @@ export class WasmCloudReader {
23
23
  this._cloudReader = undefined;
24
24
  await this.fileAccessor.closeSyncFileAccess(this.modelPartId);
25
25
  }
26
- async getCloudPoints(index, offset, count) {
26
+ async getCloudPoints(index) {
27
27
  const pointsData = await this.fileAccessor.runSyncFileOp(this.modelPartId, async () => this._cloudReader?.getCloudPoints(index, true) ?? this.moduleAccessor.module.getCloudPoints(this.path, index), this._memGuardOptions);
28
28
  return BimDataConverter.toCloudPoints(this.moduleAccessor.module, pointsData, true);
29
29
  }
30
30
  async getCloudPointsArray(indicies, transmit, step) {
31
31
  const indiciesVector = new this.moduleAccessor.module.IntVector();
32
- const count = indicies.length / 3;
33
- indiciesVector.resize(count, 0);
34
- for (let i = 0, j = 0; i < count; i++, j += 3) {
35
- indiciesVector.set(i, indicies[j]);
32
+ indiciesVector.resize(indicies.length, 0);
33
+ for (let i = 0; i < indicies.length; i++) {
34
+ indiciesVector.set(i, indicies[i]);
36
35
  }
37
36
  const pointsDataArray = await this.fileAccessor.runSyncFileOp(this.modelPartId, async () => this._cloudReader?.getCloudPointsArray(indiciesVector, true) ?? this.moduleAccessor.module.getCloudPointsArray(this.path, indiciesVector), this._memGuardOptions);
38
37
  indiciesVector.delete();
@@ -1 +1 @@
1
- {"version":3,"file":"WasmCloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/WasmCloudReader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMxG,MAAM,OAAO,eAAe;IAKL;IAA8C;IAAqC;IAJhG,YAAY,CAAe;IAClB,IAAI,CAAC;IACL,gBAAgB,GAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAEvG,YAAqB,cAAmC,EAAW,YAA0B,EAAW,WAAmB;QAAtG,mBAAc,GAAd,cAAc,CAAqB;QAAW,iBAAY,GAAZ,YAAY,CAAc;QAAW,gBAAW,GAAX,WAAW,CAAQ;QACzH,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;QAC/D,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7N,OAAO,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,QAAkB,EAAE,QAAqD,EAAE,IAAY;QAC/G,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAClC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;YAC7C,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SACpC;QAED,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9P,cAAc,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7H,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7M,OAAO,gBAAgB,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpL,OAAO,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9H,CAAC;CACF"}
1
+ {"version":3,"file":"WasmCloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/WasmCloudReader.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare class CloudPartAccessor implements ICloudPartAccessor {
11
11
  closeReader(modelPartId: string): Promise<void>;
12
12
  dispose(): Promise<void>;
13
13
  getCachedCloudKeys(): Array<string>;
14
- getCloudPoints(modelPartId: string, index: number, offset: number, count: number): Promise<Float32Array>;
14
+ getCloudPoints(modelPartId: string, index: number): Promise<Float32Array>;
15
15
  getCloudPointsArray(modelPartId: string, indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>): Promise<void>;
16
16
  getCloudHierarchy(modelPartId: string): Promise<BimCloudHierarchyItem[]>;
17
17
  getCloudMetadata(modelPartId: string): Promise<BimCloudMetadata>;
@@ -33,8 +33,8 @@ export class CloudPartAccessor {
33
33
  getCachedCloudKeys() {
34
34
  return Array.from(this._cachedCloudReaders.keys());
35
35
  }
36
- async getCloudPoints(modelPartId, index, offset, count) {
37
- return (await this.getReader(modelPartId)).getCloudPoints(index, offset, count);
36
+ async getCloudPoints(modelPartId, index) {
37
+ return (await this.getReader(modelPartId)).getCloudPoints(index);
38
38
  }
39
39
  async getCloudPointsArray(modelPartId, indicies, transmit) {
40
40
  return (await this.getReader(modelPartId)).getCloudPointsArray(indicies, transmit, TRANSMIT_STEP);
@@ -57,11 +57,11 @@ export class CloudPartAccessor {
57
57
  const reader = this._cachedCloudReaders.get(modelPartId);
58
58
  if (reader)
59
59
  return reader;
60
- const fileSignLength = Math.max(BinaryCloudFileSignature.byteLength, SqliteFileSignature.length);
61
- const arrayBuffer = await this.fileAccessor.read(modelPartId, 0, fileSignLength);
62
- if (isValidFileSignature(BinaryCloudFileSignature, arrayBuffer))
60
+ const file = await this.fileAccessor.getFile(modelPartId);
61
+ const signature = await file.getFileSignature();
62
+ if (isValidFileSignature(BinaryCloudFileSignature, signature))
63
63
  return new BinaryCloudReader(this.fileAccessor, modelPartId);
64
- else if (isValidFileSignature(SqliteFileSignature, arrayBuffer))
64
+ else if (isValidFileSignature(SqliteFileSignature, signature))
65
65
  return new WasmCloudReader(this.moduleAccessor, this.fileAccessor, modelPartId);
66
66
  else
67
67
  throw new Error("Cloud format is not supported.");
@@ -1 +1 @@
1
- {"version":3,"file":"CloudPartAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/CloudPartAccessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CloudPartAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/CloudPartAccessor.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class FileAccessor implements IFileAccessor {
9
9
  readonly moduleAccessor: IWasmModuleAccessor;
10
10
  readonly fileAccessDispatcher?: FileAccessDispatcher | undefined;
11
11
  private _files;
12
+ private _weakFiles;
12
13
  private readonly _memGuardOptions;
13
14
  constructor(fs: IFileSystem, memoryGuard: IMemoryGuard, moduleAccessor: IWasmModuleAccessor, fileAccessDispatcher?: FileAccessDispatcher | undefined);
14
15
  isFileExists(path: string): boolean;
@@ -33,5 +34,4 @@ export declare class FileAccessor implements IFileAccessor {
33
34
  clearCache(memToFreeAmount?: number): Promise<void>;
34
35
  private openUrl;
35
36
  private fileGuardOp;
36
- private isPartialFile;
37
37
  }
@@ -1,14 +1,17 @@
1
- import { MAX_WRITE_CHUNK_SIZE, OPFS_CACHE_CHUNK_SIZE, BinaryCloudFileSignature, PartialFileSignature, SqliteFileSignature, SupportedFileSignatures } from "../../utils/Consts.js";
1
+ import { MAX_WRITE_CHUNK_SIZE, BinaryCloudFileSignature, SqliteFileSignature, SupportedBimFileSignatures, MaxBimFileSignatureByteLength, RemoteFileSignature, PartialFileSignature, CacheFileSignature } from "../../utils/Consts.js";
2
2
  import { isOPFSEnabled, isValidFileSignature } from "../../utils/ViewerTools.js";
3
3
  import { FetchStatus, FileLoader } from "../file-system/FileLoader.js";
4
4
  import { File } from "../file-system/File.js";
5
5
  import { PartialFile } from "../file-system/PartialFile.js";
6
+ import { RemoteFile } from "../file-system/RemoteFile.js";
7
+ import { ChunkCacheFile } from "../file-system/ChunkCacheFile.js";
6
8
  export class FileAccessor {
7
9
  fs;
8
10
  memoryGuard;
9
11
  moduleAccessor;
10
12
  fileAccessDispatcher;
11
13
  _files;
14
+ _weakFiles;
12
15
  _memGuardOptions = { checkRAM: false, checkCache: isOPFSEnabled };
13
16
  constructor(fs, memoryGuard, moduleAccessor, fileAccessDispatcher) {
14
17
  this.fs = fs;
@@ -16,6 +19,7 @@ export class FileAccessor {
16
19
  this.moduleAccessor = moduleAccessor;
17
20
  this.fileAccessDispatcher = fileAccessDispatcher;
18
21
  this._files = new Map();
22
+ this._weakFiles = new Map();
19
23
  }
20
24
  isFileExists(path) {
21
25
  return this.fs.isFileExists(path);
@@ -27,6 +31,7 @@ export class FileAccessor {
27
31
  return this.fileAccessDispatcher?.lockFile(modelPartId, this.copy.bind(this), this.remove.bind(this)) ?? modelPartId;
28
32
  }
29
33
  async unlockFile(modelPartId) {
34
+ this._weakFiles.delete(modelPartId);
30
35
  return this.fileAccessDispatcher?.unlockFile(modelPartId);
31
36
  }
32
37
  async open(id, source, options) {
@@ -52,8 +57,10 @@ export class FileAccessor {
52
57
  await file.write(source.buffer, 0);
53
58
  }
54
59
  }, this._memGuardOptions);
55
- if (file)
60
+ if (file) {
56
61
  this._files.set(id, file);
62
+ this._weakFiles.delete(id);
63
+ }
57
64
  }
58
65
  async copy(modelPartTargetId, modelPartSourceId) {
59
66
  const source = await this.getFile(modelPartSourceId);
@@ -70,6 +77,7 @@ export class FileAccessor {
70
77
  return file.read(position, size);
71
78
  }
72
79
  async close(modelPartId) {
80
+ this._weakFiles.delete(modelPartId);
73
81
  const file = this._files.get(modelPartId);
74
82
  if (file) {
75
83
  await file.close();
@@ -88,9 +96,8 @@ export class FileAccessor {
88
96
  const file = await this.getFile(modelPartId, { create: false });
89
97
  if (!await file.isValid())
90
98
  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));
99
+ const fileSignature = await file.getFileSignature();
100
+ return SupportedBimFileSignatures.some(signature => isValidFileSignature(signature, fileSignature));
94
101
  }
95
102
  catch {
96
103
  return false;
@@ -100,18 +107,35 @@ export class FileAccessor {
100
107
  return this.getFile(modelPartId, { create: false }).then(file => file.getFileInfo());
101
108
  }
102
109
  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
+ // looking for a file in opened files
111
+ let file = this._files.get(path);
112
+ // looking for a file in weak cache
113
+ if (!file && this._weakFiles.has(path)) {
114
+ file = this._weakFiles.get(path)?.deref();
115
+ if (!file)
116
+ this._weakFiles.delete(path);
117
+ }
118
+ // looking for a file on disk
119
+ if (!file && this.isFileExists(path)) {
120
+ await this.fs.actualizeFilePath(path);
121
+ file = await File.open(this.fs, path);
122
+ }
123
+ if (file) {
124
+ const signature = await file.getFileSignature();
125
+ if (isValidFileSignature(CacheFileSignature, signature))
126
+ file = await ChunkCacheFile.fromFile(file);
127
+ if (isValidFileSignature(RemoteFileSignature, signature))
128
+ file = await RemoteFile.fromFile(file);
129
+ if (isValidFileSignature(PartialFileSignature, signature))
130
+ file = await PartialFile.fromFile(file);
110
131
  }
111
132
  else if (options.create) {
112
- return File.open(this.fs, path, options);
133
+ file = await File.open(this.fs, path, options);
113
134
  }
114
- throw new Error("File is not exist.");
135
+ else
136
+ throw new Error("File is not exist.");
137
+ this._weakFiles.set(path, new WeakRef(file));
138
+ return file;
115
139
  }
116
140
  async runSyncFileOp(path, opFunc, options) {
117
141
  return this.memoryGuard.runOperation(() => this.fileGuardOp(path, opFunc), options);
@@ -145,6 +169,8 @@ export class FileAccessor {
145
169
  for (const [, file] of this._files) {
146
170
  closePromises.push(file.close());
147
171
  }
172
+ this._weakFiles.clear();
173
+ this._files.clear();
148
174
  await Promise.all(closePromises);
149
175
  }
150
176
  async clearCache(memToFreeAmount = Number.MAX_SAFE_INTEGER) {
@@ -161,25 +187,26 @@ export class FileAccessor {
161
187
  await file.remove();
162
188
  }
163
189
  }
190
+ this._weakFiles.clear();
164
191
  }
165
192
  async openUrl(id, source, chunkSize) {
166
193
  // Try to fetch first chunk of the file
167
- const firstChunkRange = { startByte: 0, endByte: OPFS_CACHE_CHUNK_SIZE - 1 };
194
+ const firstChunkRange = { startByte: 0, endByte: MaxBimFileSignatureByteLength - 1 };
168
195
  let response = await FileLoader.fetchRange(source, firstChunkRange);
169
196
  // If file length less than chunk size try again with new range
170
- if (response.status == FetchStatus.InvalidRange && response.length < OPFS_CACHE_CHUNK_SIZE) {
197
+ if (response.status == FetchStatus.InvalidRange && response.length < MaxBimFileSignatureByteLength) {
171
198
  firstChunkRange.endByte = response.length - 1;
172
199
  response = await FileLoader.fetchRange(source, firstChunkRange);
173
200
  }
174
- // If partial load is not supported by the server, the response includes the full file contents.
201
+ // If partial load is not supported by the server, the response includes the full file content.
175
202
  if (response.status == FetchStatus.FullFile) {
176
203
  // get file signature and check if file format is supported by dataprovider
177
204
  const size = response.data.size;
178
- const signatureSize = Math.min(size, Math.max(...SupportedFileSignatures.map(sign => sign.byteLength)));
205
+ const signatureSize = Math.min(size, MaxBimFileSignatureByteLength);
179
206
  const arrayBuffer = await FileLoader.readChunk(0, signatureSize, response.data);
180
- if (SupportedFileSignatures.some(signature => isValidFileSignature(signature, arrayBuffer))) {
207
+ if (SupportedBimFileSignatures.some(signature => isValidFileSignature(signature, arrayBuffer))) {
181
208
  // Store full file if file format is supported
182
- const file = await File.open(this.fs, id, { create: true });
209
+ const file = await File.open(this.fs, id, { create: true }, new Uint8Array(arrayBuffer));
183
210
  await FileLoader.writeBlobToFile(response.data, chunkSize, file);
184
211
  return file;
185
212
  }
@@ -191,7 +218,7 @@ export class FileAccessor {
191
218
  const fileLength = response.length;
192
219
  // If SQLite database:
193
220
  if (isValidFileSignature(SqliteFileSignature, buffer)) {
194
- const file = await File.open(this.fs, id, { create: true });
221
+ const file = await File.open(this.fs, id, { create: true }, SqliteFileSignature);
195
222
  // write first chunk
196
223
  await file.write(buffer, 0);
197
224
  // fetch the rest
@@ -200,11 +227,8 @@ export class FileAccessor {
200
227
  }
201
228
  // If binary cloud
202
229
  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;
230
+ // make remote file
231
+ return await RemoteFile.fromUrl(this.fs, id, String(source), fileLength, BinaryCloudFileSignature);
208
232
  }
209
233
  throw new Error("Given 3D model is not supported");
210
234
  }
@@ -224,14 +248,5 @@ export class FileAccessor {
224
248
  await this.closeSyncFileAccess(path);
225
249
  }
226
250
  }
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
251
  }
237
252
  //# sourceMappingURL=FileAccessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/FileAccessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/FileAccessor.ts"],"names":[],"mappings":"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"}