@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,228 @@
1
+ import { BimCloudMetadata, BimCloudHierarchyItem } from "../../model/BimDataClasses.js";
2
+ import { BinaryConverter, transmitBimData } from "../../utils/ViewerTools.js";
3
+ export class BinaryCloudReader {
4
+ fileAccessor;
5
+ modelPartId;
6
+ metadata;
7
+ _file;
8
+ constructor(fileAccessor, modelPartId) {
9
+ this.fileAccessor = fileAccessor;
10
+ this.modelPartId = modelPartId;
11
+ }
12
+ async open() {
13
+ this.metadata = await this.getCloudMetadata();
14
+ this._file = await this.fileAccessor.getFile(this.modelPartId);
15
+ await this._file.openSyncFileAccess();
16
+ }
17
+ async close() {
18
+ this.metadata = undefined;
19
+ await this._file?.closeSyncFileAccess();
20
+ this._file = undefined;
21
+ }
22
+ async getCloudPoints(index, offset, count) {
23
+ const bufferView = await (this._file ? this._file.read(offset, count) : this.fileAccessor.read(this.modelPartId, offset, count));
24
+ return new Float32Array(bufferView.buffer);
25
+ }
26
+ async getCloudPointsArray(indicies, transmit, step) {
27
+ const count = indicies.length / 3;
28
+ const resultPromise = new Array(count);
29
+ for (let i = 0, j = 0; i < count; i++) {
30
+ j++; //const dataIndex = indicies[j++];
31
+ const offset = indicies[j++];
32
+ const size = indicies[j++];
33
+ resultPromise[i] = (this._file ? this._file.read(offset, size) : this.fileAccessor.read(this.modelPartId, offset, size))
34
+ .then(array => new Float32Array(array.buffer));
35
+ }
36
+ const result = await Promise.all(resultPromise);
37
+ return transmitBimData(result, transmit, BinaryCloudReader.transferPoints, step);
38
+ }
39
+ async getCloudHierarchy() {
40
+ if (!this.metadata)
41
+ this.metadata = await this.getCloudMetadata();
42
+ const metadata = this.metadata;
43
+ const count = metadata.nodesCount ?? 0;
44
+ const nodesOffset = metadata.nodesOffset ?? 0;
45
+ const pointsOffset = metadata.pointsOffset ?? 0;
46
+ const byteSize = pointsOffset - nodesOffset;
47
+ const result = new Array(count);
48
+ const bufferView = await (this._file ? this._file.read(nodesOffset, byteSize) : this.fileAccessor.read(this.modelPartId, nodesOffset, byteSize));
49
+ const buffer = bufferView.buffer;
50
+ const byteArray = new Uint8Array(buffer);
51
+ let offset = 0;
52
+ for (let i = 0; i < count; i++) {
53
+ // offset: 0
54
+ const index = BinaryConverter.toI32(byteArray, offset);
55
+ offset += 4;
56
+ // offset: 4
57
+ const dataIndex = BinaryConverter.toI32(byteArray, offset);
58
+ offset += 4;
59
+ // offset: 8
60
+ const pointOffset = BinaryConverter.toI64(byteArray, offset);
61
+ offset += 8;
62
+ // offset: 16
63
+ const pointSize = BinaryConverter.toI64(byteArray, offset);
64
+ offset += 8;
65
+ // offset: 24
66
+ const numPoints = BinaryConverter.toU32(byteArray, offset);
67
+ offset += 4;
68
+ // offset: 28
69
+ const min = { x: 0.0, y: 0.0, z: 0.0 };
70
+ min.x = BinaryConverter.toF32(byteArray, offset);
71
+ offset += 4;
72
+ min.y = BinaryConverter.toF32(byteArray, offset);
73
+ offset += 4;
74
+ min.z = BinaryConverter.toF32(byteArray, offset);
75
+ offset += 4;
76
+ // offset: 40
77
+ const max = { x: 0.0, y: 0.0, z: 0.0 };
78
+ max.x = BinaryConverter.toF32(byteArray, offset);
79
+ offset += 4;
80
+ max.y = BinaryConverter.toF32(byteArray, offset);
81
+ offset += 4;
82
+ max.z = BinaryConverter.toF32(byteArray, offset);
83
+ offset += 4;
84
+ // offset: 52
85
+ const type = byteArray[offset];
86
+ offset++;
87
+ // offset: 53
88
+ const mask = byteArray[offset];
89
+ offset++;
90
+ // offset: 54
91
+ const childNodesCount = BinaryConverter.toU32(byteArray, offset);
92
+ offset += 4;
93
+ // offset: 58
94
+ offset += 2;
95
+ // offset: 60
96
+ offset += 4;
97
+ // offset: 64
98
+ const node = new BimCloudHierarchyItem();
99
+ node.index = index;
100
+ node.dataIndex = dataIndex;
101
+ node.type = type;
102
+ node.mask = mask;
103
+ node.numPoints = numPoints;
104
+ node.min = min;
105
+ node.max = max;
106
+ node.offset = Number(pointOffset);
107
+ node.size = Number(pointSize);
108
+ node.childNodesCount = childNodesCount;
109
+ result[i] = node;
110
+ }
111
+ return result;
112
+ }
113
+ async getCloudMetadata() {
114
+ if (this.metadata)
115
+ return this.metadata;
116
+ const result = new BimCloudMetadata();
117
+ const headerSize = 124;
118
+ const bufferView = await (this._file ? this._file.read(0, headerSize) : this.fileAccessor.read(this.modelPartId, 0, headerSize));
119
+ const buffer = bufferView.buffer;
120
+ const byteArray = new Uint8Array(buffer);
121
+ let offset = 0;
122
+ // offset: 0
123
+ //const signature = [byteArray[0], byteArray[1], byteArray[2], byteArray[3]];
124
+ offset += 4;
125
+ // offset: 4
126
+ const version = BinaryConverter.toU32(byteArray, offset);
127
+ offset += 4;
128
+ // offset: 8
129
+ const fileSize = BinaryConverter.toI64(byteArray, offset);
130
+ offset += 8;
131
+ // offset: 16
132
+ const nodesOffset = BinaryConverter.toI64(byteArray, offset);
133
+ offset += 8;
134
+ // offset: 24
135
+ const pointsOffset = BinaryConverter.toI64(byteArray, offset);
136
+ offset += 8;
137
+ // offset: 32
138
+ const numPoints = BinaryConverter.toU64(byteArray, offset);
139
+ offset += 8;
140
+ // offset: 40
141
+ const nodesCount = BinaryConverter.toU32(byteArray, offset);
142
+ offset += 4;
143
+ // offset: 44
144
+ const depth = BinaryConverter.toU32(byteArray, offset);
145
+ offset += 4;
146
+ // offset: 48
147
+ const baseSpacing = BinaryConverter.toF32(byteArray, offset);
148
+ offset += 4;
149
+ // offset: 52
150
+ const scale = BinaryConverter.toF64(byteArray, offset);
151
+ offset += 8;
152
+ // offset: 60
153
+ const min = { x: 0.0, y: 0.0, z: 0.0 };
154
+ min.x = BinaryConverter.toF32(byteArray, offset);
155
+ offset += 4;
156
+ min.y = BinaryConverter.toF32(byteArray, offset);
157
+ offset += 4;
158
+ min.z = BinaryConverter.toF32(byteArray, offset);
159
+ offset += 4;
160
+ // offset: 72
161
+ const max = { x: 0.0, y: 0.0, z: 0.0 };
162
+ max.x = BinaryConverter.toF32(byteArray, offset);
163
+ offset += 4;
164
+ max.y = BinaryConverter.toF32(byteArray, offset);
165
+ offset += 4;
166
+ max.z = BinaryConverter.toF32(byteArray, offset);
167
+ offset += 4;
168
+ // offset: 84
169
+ const rootBoxMin = { x: 0.0, y: 0.0, z: 0.0 };
170
+ rootBoxMin.x = BinaryConverter.toF32(byteArray, offset);
171
+ offset += 4;
172
+ rootBoxMin.y = BinaryConverter.toF32(byteArray, offset);
173
+ offset += 4;
174
+ rootBoxMin.z = BinaryConverter.toF32(byteArray, offset);
175
+ offset += 4;
176
+ // offset: 96
177
+ const rootBoxMax = { x: 0.0, y: 0.0, z: 0.0 };
178
+ rootBoxMax.x = BinaryConverter.toF32(byteArray, offset);
179
+ offset += 4;
180
+ rootBoxMax.y = BinaryConverter.toF32(byteArray, offset);
181
+ offset += 4;
182
+ rootBoxMax.z = BinaryConverter.toF32(byteArray, offset);
183
+ offset += 4;
184
+ // offset: 108
185
+ const centerPosition = { x: 0.0, y: 0.0, z: 0.0 };
186
+ centerPosition.x = BinaryConverter.toF32(byteArray, offset);
187
+ offset += 4;
188
+ centerPosition.y = BinaryConverter.toF32(byteArray, offset);
189
+ offset += 4;
190
+ centerPosition.z = BinaryConverter.toF32(byteArray, offset);
191
+ offset += 4;
192
+ // offset: 120
193
+ const pointFormat = byteArray[offset];
194
+ offset++;
195
+ // offset: 121
196
+ const bytesPerPoint = byteArray[offset];
197
+ offset++;
198
+ // offset: 122
199
+ offset += 2;
200
+ // offset: 124
201
+ result.depth = depth;
202
+ result.min = min;
203
+ result.max = max;
204
+ result.baseSpacing = baseSpacing;
205
+ result.version = version;
206
+ result.nodesCount = nodesCount;
207
+ result.posOffset = centerPosition;
208
+ result.posScale = { x: scale, y: scale, z: scale };
209
+ result.root_min = rootBoxMin;
210
+ result.root_max = rootBoxMax;
211
+ result.fileSize = Number(fileSize);
212
+ result.pointFormat = pointFormat;
213
+ result.bytesPerPoint = bytesPerPoint;
214
+ result.numPoints = Number(numPoints);
215
+ result.nodesOffset = Number(nodesOffset);
216
+ result.pointsOffset = Number(pointsOffset);
217
+ return result;
218
+ }
219
+ async isValid() {
220
+ const metadata = await this.getCloudMetadata();
221
+ const fileSize = (await this.fileAccessor.getFileInfo(this.modelPartId)).size;
222
+ return fileSize == metadata.fileSize;
223
+ }
224
+ static transferPoints(data) {
225
+ return data.buffer;
226
+ }
227
+ }
228
+ //# sourceMappingURL=BinaryCloudReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BinaryCloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/BinaryCloudReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BimCloudHierarchyItem, BimCloudMetadata } from "../../model/BimDataClasses.js";
2
+ export interface ICloudReader {
3
+ open(): Promise<void>;
4
+ close(): Promise<void>;
5
+ getCloudPoints(index: number, offset: number, count: number): Promise<Float32Array>;
6
+ getCloudPointsArray(indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>, step: number): Promise<void>;
7
+ getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
8
+ getCloudMetadata(): Promise<BimCloudMetadata>;
9
+ isValid(): Promise<boolean>;
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ICloudReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/ICloudReader.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { BimCloudHierarchyItem, BimCloudMetadata } from "../../model/BimDataClasses.js";
2
+ import { ICloudReader } from "./ICloudReader.js";
3
+ import { IWasmModuleAccessor } from "../WorkerApi.js";
4
+ import { FileAccessor } from "../data_accessors/FileAccessor.js";
5
+ export declare class WasmCloudReader implements ICloudReader {
6
+ readonly moduleAccessor: IWasmModuleAccessor;
7
+ readonly fileAccessor: FileAccessor;
8
+ readonly modelPartId: string;
9
+ private _cloudReader?;
10
+ private readonly path;
11
+ private readonly _memGuardOptions;
12
+ constructor(moduleAccessor: IWasmModuleAccessor, fileAccessor: FileAccessor, modelPartId: string);
13
+ open(): Promise<void>;
14
+ close(): Promise<void>;
15
+ getCloudPoints(index: number, offset: number, count: number): Promise<Float32Array>;
16
+ getCloudPointsArray(indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>, step: number): Promise<void>;
17
+ getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
18
+ getCloudMetadata(): Promise<BimCloudMetadata>;
19
+ isValid(): Promise<boolean>;
20
+ }
@@ -0,0 +1,53 @@
1
+ import { BimDataConverter, getPath, isOPFSEnabled, transmitWasmData } from "../../utils/ViewerTools.js";
2
+ export class WasmCloudReader {
3
+ moduleAccessor;
4
+ fileAccessor;
5
+ modelPartId;
6
+ _cloudReader;
7
+ path;
8
+ _memGuardOptions = { checkRAM: isOPFSEnabled, checkCache: false };
9
+ constructor(moduleAccessor, fileAccessor, modelPartId) {
10
+ this.moduleAccessor = moduleAccessor;
11
+ this.fileAccessor = fileAccessor;
12
+ this.modelPartId = modelPartId;
13
+ this.path = getPath(modelPartId);
14
+ }
15
+ async open() {
16
+ await this.fileAccessor.openSyncFileAccess(this.modelPartId);
17
+ this._cloudReader = this.moduleAccessor.module.getCloudReader();
18
+ this._cloudReader.open(this.path);
19
+ }
20
+ async close() {
21
+ this._cloudReader?.close();
22
+ this._cloudReader?.delete();
23
+ this._cloudReader = undefined;
24
+ await this.fileAccessor.closeSyncFileAccess(this.modelPartId);
25
+ }
26
+ async getCloudPoints(index, offset, count) {
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
+ return BimDataConverter.toCloudPoints(this.moduleAccessor.module, pointsData, true);
29
+ }
30
+ async getCloudPointsArray(indicies, transmit, step) {
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]);
36
+ }
37
+ const pointsDataArray = await this.fileAccessor.runSyncFileOp(this.modelPartId, async () => this._cloudReader?.getCloudPointsArray(indiciesVector, true) ?? this.moduleAccessor.module.getCloudPointsArray(this.path, indiciesVector), this._memGuardOptions);
38
+ indiciesVector.delete();
39
+ return transmitWasmData(this.moduleAccessor.module, pointsDataArray, true, BimDataConverter.toCloudPoints, transmit, step);
40
+ }
41
+ async getCloudHierarchy() {
42
+ const result = await this.fileAccessor.runSyncFileOp(this.modelPartId, async () => this._cloudReader?.getCloudHierarchy() ?? this.moduleAccessor.module.getCloudHierarchy(this.path), this._memGuardOptions);
43
+ return BimDataConverter.toBimCloudHierarchy(result, true);
44
+ }
45
+ async getCloudMetadata() {
46
+ const result = await this.fileAccessor.runSyncFileOp(this.modelPartId, async () => this._cloudReader?.getCloudMetadata() ?? this.moduleAccessor.module.getCloudMetadata(this.path));
47
+ return BimDataConverter.toCloudMetadata(result, true);
48
+ }
49
+ async isValid() {
50
+ return this.fileAccessor.runSyncFileOp(this.modelPartId, async () => this.moduleAccessor.module.isValidDatabase(this.path));
51
+ }
52
+ }
53
+ //# sourceMappingURL=WasmCloudReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WasmCloudReader.js","sourceRoot":"","sources":["../../../../src/wasm/cloud_readers/WasmCloudReader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BimCloudHierarchyItem, BimCloudMetadata } from "../../model/BimDataClasses.js";
2
+ import { FileAccessor } from "./FileAccessor.js";
3
+ import { ICloudReader } from "../cloud_readers/ICloudReader.js";
4
+ import { ICloudPartAccessor, IWasmModuleAccessor } from "../WorkerApi.js";
5
+ export declare class CloudPartAccessor implements ICloudPartAccessor {
6
+ readonly fileAccessor: FileAccessor;
7
+ readonly moduleAccessor: IWasmModuleAccessor;
8
+ protected _cachedCloudReaders: Map<string, ICloudReader>;
9
+ constructor(fileAccessor: FileAccessor, moduleAccessor: IWasmModuleAccessor);
10
+ openReader(modelPartId: string): Promise<void>;
11
+ closeReader(modelPartId: string): Promise<void>;
12
+ dispose(): Promise<void>;
13
+ getCachedCloudKeys(): Array<string>;
14
+ getCloudPoints(modelPartId: string, index: number, offset: number, count: number): Promise<Float32Array>;
15
+ getCloudPointsArray(modelPartId: string, indicies: number[], transmit: (elements: Float32Array[]) => Promise<void>): Promise<void>;
16
+ getCloudHierarchy(modelPartId: string): Promise<BimCloudHierarchyItem[]>;
17
+ getCloudMetadata(modelPartId: string): Promise<BimCloudMetadata>;
18
+ isValid(modelPartId: string): Promise<boolean>;
19
+ getReader(modelPartId: string): Promise<ICloudReader>;
20
+ }
@@ -0,0 +1,70 @@
1
+ import { BinaryCloudFileSignature, SqliteFileSignature, TRANSMIT_STEP } from "../../utils/Consts.js";
2
+ import { BinaryCloudReader } from "../cloud_readers/BinaryCloudReader.js";
3
+ import { WasmCloudReader } from "../cloud_readers/WasmCloudReader.js";
4
+ import { isValidFileSignature } from "../../utils/ViewerTools.js";
5
+ export class CloudPartAccessor {
6
+ fileAccessor;
7
+ moduleAccessor;
8
+ _cachedCloudReaders = new Map();
9
+ constructor(fileAccessor, moduleAccessor) {
10
+ this.fileAccessor = fileAccessor;
11
+ this.moduleAccessor = moduleAccessor;
12
+ }
13
+ async openReader(modelPartId) {
14
+ if (!this._cachedCloudReaders.has(modelPartId)) {
15
+ const reader = await this.getReader(modelPartId);
16
+ await reader.open();
17
+ this._cachedCloudReaders.set(modelPartId, reader);
18
+ }
19
+ }
20
+ async closeReader(modelPartId) {
21
+ if (this._cachedCloudReaders.has(modelPartId)) {
22
+ await this._cachedCloudReaders.get(modelPartId)?.close();
23
+ this._cachedCloudReaders.delete(modelPartId);
24
+ }
25
+ }
26
+ async dispose() {
27
+ const closePromises = new Array();
28
+ for (const [, reader] of this._cachedCloudReaders) {
29
+ closePromises.push(reader.close());
30
+ }
31
+ await Promise.all(closePromises);
32
+ }
33
+ getCachedCloudKeys() {
34
+ return Array.from(this._cachedCloudReaders.keys());
35
+ }
36
+ async getCloudPoints(modelPartId, index, offset, count) {
37
+ return (await this.getReader(modelPartId)).getCloudPoints(index, offset, count);
38
+ }
39
+ async getCloudPointsArray(modelPartId, indicies, transmit) {
40
+ return (await this.getReader(modelPartId)).getCloudPointsArray(indicies, transmit, TRANSMIT_STEP);
41
+ }
42
+ async getCloudHierarchy(modelPartId) {
43
+ return (await this.getReader(modelPartId)).getCloudHierarchy();
44
+ }
45
+ async getCloudMetadata(modelPartId) {
46
+ return (await this.getReader(modelPartId)).getCloudMetadata();
47
+ }
48
+ async isValid(modelPartId) {
49
+ try {
50
+ return (await this.getReader(modelPartId)).isValid();
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ }
56
+ async getReader(modelPartId) {
57
+ const reader = this._cachedCloudReaders.get(modelPartId);
58
+ if (reader)
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))
63
+ return new BinaryCloudReader(this.fileAccessor, modelPartId);
64
+ else if (isValidFileSignature(SqliteFileSignature, arrayBuffer))
65
+ return new WasmCloudReader(this.moduleAccessor, this.fileAccessor, modelPartId);
66
+ else
67
+ throw new Error("Cloud format is not supported.");
68
+ }
69
+ }
70
+ //# sourceMappingURL=CloudPartAccessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudPartAccessor.js","sourceRoot":"","sources":["../../../../src/wasm/data_accessors/CloudPartAccessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { FileInfo, IFileSystem } from "../file-system/IFileSystem.js";
2
+ import { IFile } from "../file-system/File.js";
3
+ import { FileAccessDispatcher } from "../file-system/FileAccessDispatcher.js";
4
+ import { MemoryGuardOptions, IFileAccessor, IMemoryGuard, IWasmModuleAccessor } from "../WorkerApi.js";
5
+ import { OpenOptions } from "../../BimDataProviderApi.js";
6
+ export declare class FileAccessor implements IFileAccessor {
7
+ readonly fs: IFileSystem;
8
+ readonly memoryGuard: IMemoryGuard;
9
+ readonly moduleAccessor: IWasmModuleAccessor;
10
+ readonly fileAccessDispatcher?: FileAccessDispatcher | undefined;
11
+ private _files;
12
+ private readonly _memGuardOptions;
13
+ constructor(fs: IFileSystem, memoryGuard: IMemoryGuard, moduleAccessor: IWasmModuleAccessor, fileAccessDispatcher?: FileAccessDispatcher | undefined);
14
+ isFileExists(path: string): boolean;
15
+ isOpen(path: string): boolean;
16
+ lockFile(modelPartId: string): Promise<string>;
17
+ unlockFile(modelPartId: string): Promise<void>;
18
+ open(id: string, source?: ArrayBuffer | ArrayBufferView | Blob | string, options?: OpenOptions): Promise<void>;
19
+ copy(modelPartTargetId: string, modelPartSourceId: string): Promise<void>;
20
+ write(modelPartId: string, buffer: ArrayBuffer | ArrayBufferView, position: number): Promise<void>;
21
+ read(modelPartId: string, position: number, size: number): Promise<Uint8Array>;
22
+ close(modelPartId: string): Promise<void>;
23
+ remove(modelPartId: string): Promise<void>;
24
+ isValid(modelPartId: string): Promise<boolean>;
25
+ getFileInfo(modelPartId: string): Promise<FileInfo>;
26
+ getFile(path: string, options?: {
27
+ create: boolean;
28
+ }): Promise<IFile>;
29
+ runSyncFileOp<T>(path: string | string[], opFunc: () => T | Promise<T>, options?: MemoryGuardOptions): Promise<T>;
30
+ openSyncFileAccess(path: string | string[]): Promise<void>;
31
+ closeSyncFileAccess(path: string | string[]): Promise<void>;
32
+ dispose(): Promise<void>;
33
+ clearCache(memToFreeAmount?: number): Promise<void>;
34
+ private openUrl;
35
+ private fileGuardOp;
36
+ private isPartialFile;
37
+ }