@pilotdev/pilot-bim-dataprovider 24.10.0 → 24.12.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 (33) hide show
  1. package/lib/index.d.ts +1 -1
  2. package/lib/index.js +1 -1
  3. package/lib/index.js.map +1 -1
  4. package/lib/src/file-system/IFileSystem.d.ts +47 -0
  5. package/lib/src/file-system/IFileSystem.js +179 -0
  6. package/lib/src/file-system/IFileSystem.js.map +1 -0
  7. package/lib/src/file-system/IFileSystemCache.d.ts +62 -0
  8. package/lib/src/file-system/IFileSystemCache.js +154 -0
  9. package/lib/src/file-system/IFileSystemCache.js.map +1 -0
  10. package/lib/src/file-system/OPFS.d.ts +35 -0
  11. package/lib/src/file-system/OPFS.js +182 -0
  12. package/lib/src/file-system/OPFS.js.map +1 -0
  13. package/lib/src/file-system/PATH.d.ts +8 -0
  14. package/lib/src/file-system/PATH.js +34 -0
  15. package/lib/src/file-system/PATH.js.map +1 -0
  16. package/lib/src/model/BimDataElement.d.ts +14 -14
  17. package/lib/src/model/BimDataElement.js.map +1 -1
  18. package/lib/src/model/BimDataPart.d.ts +3 -2
  19. package/lib/src/model/BimDataPart.js +20 -15
  20. package/lib/src/model/BimDataPart.js.map +1 -1
  21. package/lib/src/model/BimDataProvider.js +1 -1
  22. package/lib/src/model/BimDataProvider.js.map +1 -1
  23. package/lib/src/model/Consts.d.ts +3 -0
  24. package/lib/src/model/Consts.js +3 -0
  25. package/lib/src/model/Consts.js.map +1 -1
  26. package/lib/src/utils/WasmTools.js.map +1 -1
  27. package/lib/src/wasm/pilot_bim_dataprovider.d.ts +78 -2
  28. package/lib/src/wasm/pilot_bim_dataprovider.js +1 -1
  29. package/lib/src/wasm/pilot_bim_dataprovider.wasm +0 -0
  30. package/lib/src/wasm/wasm.worker.d.ts +42 -35
  31. package/lib/src/wasm/wasm.worker.js +175 -106
  32. package/lib/src/wasm/wasm.worker.js.map +1 -1
  33. package/package.json +3 -2
package/lib/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { BimDataProvider, IBimDataProvider } from "./src/model/BimDataProvider.js";
2
2
  export { IBimDataModelPart, IBimDataCloudPart } from "./src/model/BimDataPart.js";
3
3
  export { BimDataBigIntMaxValue, BimDataBigIntMinValue } from "./src/model/Consts.js";
4
- export { BimDataElement, BimDataMeshProperty, BimDataGridObject, BimDataGridAxis } from "./src/model/BimDataElement.js";
4
+ export { BimDataElement, BimDataMeshProperty, BimDataGridObject, BimDataGridAxis, BimCloudHierarchyItem, BimCloudMetadata } from "./src/model/BimDataElement.js";
5
5
  export { BimDataIfcType } from "./src/model/BimDataIfcType.js";
6
6
  export { BimDataElementPropertySet, BimDataElementProperty, BimDataElementPropertyValue } from "./src/model/BimDataElementPropertySet.js";
7
7
  export { BimDataTessellation } from "./src/model/BimDataTessellation.js";
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { BimDataProvider } from "./src/model/BimDataProvider.js";
2
2
  export { BimDataBigIntMaxValue, BimDataBigIntMinValue } from "./src/model/Consts.js";
3
- export { BimDataElement, BimDataMeshProperty, BimDataGridObject, BimDataGridAxis } from "./src/model/BimDataElement.js";
3
+ export { BimDataElement, BimDataMeshProperty, BimDataGridObject, BimDataGridAxis, BimCloudHierarchyItem, BimCloudMetadata } from "./src/model/BimDataElement.js";
4
4
  export { BimDataIfcType } from "./src/model/BimDataIfcType.js";
5
5
  export { BimDataElementPropertySet, BimDataElementProperty, BimDataElementPropertyValue } from "./src/model/BimDataElementPropertySet.js";
6
6
  export { BimDataTessellation } from "./src/model/BimDataTessellation.js";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC1I,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjK,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC1I,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { FS } from "../wasm/pilot_bim_dataprovider.js";
2
+ import { IOpfsDirNode, IOpfsFileNode } from "./IFileSystemCache.js";
3
+ import { ISyncFileSystem } from "../file-system/OPFS.js";
4
+ export interface IFileSystem {
5
+ init(): Promise<void>;
6
+ mountTo(fs: FS, mountpoint: string): void;
7
+ makeFile(path: string, data: ArrayBufferView): Promise<void>;
8
+ writeFile(path: string, data: ArrayBufferView): Promise<void>;
9
+ isFileExists(path: string): boolean;
10
+ remove(path: string): Promise<void>;
11
+ dispose(): Promise<void>;
12
+ openSyncFileAccess(path: string): Promise<void>;
13
+ closeSyncFileAccess(path: string): void;
14
+ }
15
+ export declare class AsyncFileSystem implements IFileSystem, ISyncFileSystem {
16
+ private _cache;
17
+ constructor();
18
+ mountTo(fs: FS, mountpoint: string): void;
19
+ init(): Promise<void>;
20
+ mkdirAsync(path: string): Promise<void>;
21
+ makeFile(path: string, data: ArrayBufferView): Promise<void>;
22
+ writeFile(path: string, data: ArrayBufferView): Promise<void>;
23
+ remove(path: string): Promise<void>;
24
+ openSyncFileAccess(path: string): Promise<void>;
25
+ closeSyncFileAccess(path: string): void;
26
+ readdir(path: string): string[];
27
+ lookup(path: string): IOpfsDirNode | IOpfsFileNode | undefined;
28
+ dispose(): Promise<void>;
29
+ isFileExists(path: string): boolean;
30
+ private isDirectoryExists;
31
+ private readTree;
32
+ private getLocalPath;
33
+ }
34
+ export declare class ProxyFileSystem implements IFileSystem {
35
+ private _fs;
36
+ private _mountpoint;
37
+ init(): Promise<void>;
38
+ mountTo(fs: FS, mountpoint: string): void;
39
+ makeFile(path: string, data: ArrayBufferView): Promise<void>;
40
+ writeFile(path: string, data: ArrayBufferView): Promise<void>;
41
+ remove(path: string): Promise<void>;
42
+ openSyncFileAccess(path: string): Promise<void>;
43
+ closeSyncFileAccess(path: string): void;
44
+ dispose(): Promise<void>;
45
+ isFileExists(path: string): boolean;
46
+ private getLocalPath;
47
+ }
@@ -0,0 +1,179 @@
1
+ import { FileSystemCache } from "./IFileSystemCache.js";
2
+ import { PATH } from "./PATH.js";
3
+ import { OPFS } from "../file-system/OPFS.js";
4
+ export class AsyncFileSystem {
5
+ constructor() {
6
+ this._cache = new FileSystemCache();
7
+ }
8
+ mountTo(fs, mountpoint) {
9
+ const opfs = new OPFS(fs, this);
10
+ fs.mount(fs.filesystems.PROXYFS, {
11
+ root: "/",
12
+ fs: opfs
13
+ }, `/${mountpoint}`);
14
+ }
15
+ async init() {
16
+ this._cache.clear();
17
+ const handle = await navigator.storage.getDirectory();
18
+ const root = this._cache.setDir("/", handle);
19
+ if (root)
20
+ await this.readTree(root);
21
+ }
22
+ async mkdirAsync(path) {
23
+ const parentPath = PATH.getParentPath(path);
24
+ const parentNode = this._cache.get(parentPath);
25
+ if (!parentNode)
26
+ throw "Parent not found";
27
+ const handle = parentNode.handle;
28
+ const name = PATH.getName(path);
29
+ const dirExists = await this.isDirectoryExists(name, handle);
30
+ let childHandle;
31
+ if (!dirExists) {
32
+ childHandle = await handle.getDirectoryHandle(name, { create: true });
33
+ this._cache.setDir(path, childHandle);
34
+ }
35
+ }
36
+ async makeFile(path, data) {
37
+ const lpath = this.getLocalPath(path);
38
+ const parentFolder = PATH.getParentPath(lpath);
39
+ const parent = this._cache.get(parentFolder);
40
+ const name = PATH.getName(lpath);
41
+ const fileHandle = await parent.handle.getFileHandle(name, { create: true });
42
+ this._cache.setFile(lpath, fileHandle);
43
+ return this.writeFile(lpath, data);
44
+ }
45
+ async writeFile(path, data) {
46
+ const lpath = this.getLocalPath(path);
47
+ const fileHandle = this._cache.get(lpath);
48
+ if (!fileHandle)
49
+ return Promise.reject('File does not exist.');
50
+ await fileHandle.stream_ops.open();
51
+ fileHandle.size = fileHandle.stream_ops.write(data, 0, data.byteLength, 0);
52
+ fileHandle.stream_ops.close();
53
+ }
54
+ async remove(path) {
55
+ const lpath = this.getLocalPath(path);
56
+ const node = this._cache.get(lpath);
57
+ this._cache.delete(lpath);
58
+ if (node) {
59
+ node.stream_ops?.close(undefined, true);
60
+ await node?.parent?.handle?.removeEntry(node.name, { recursive: true });
61
+ }
62
+ }
63
+ async openSyncFileAccess(path) {
64
+ const lpath = this.getLocalPath(path);
65
+ const cachedFile = this.lookup(lpath);
66
+ if (!cachedFile)
67
+ return Promise.reject('File does not cached in OPFS.');
68
+ return cachedFile.stream_ops?.open();
69
+ }
70
+ closeSyncFileAccess(path) {
71
+ const lpath = this.getLocalPath(path);
72
+ const cachedFile = this.lookup(lpath);
73
+ cachedFile?.stream_ops?.close();
74
+ }
75
+ readdir(path) {
76
+ const node = this._cache.get(path);
77
+ if (!node || node.kind === "file")
78
+ return [];
79
+ return node.children.map(n => n.name);
80
+ }
81
+ lookup(path) {
82
+ const lpath = this.getLocalPath(path);
83
+ return this._cache.get(lpath);
84
+ }
85
+ async dispose() {
86
+ const nodes = this.readdir('/');
87
+ for (const node of nodes) {
88
+ await this.remove(node);
89
+ }
90
+ this._cache.clear();
91
+ }
92
+ isFileExists(path) {
93
+ const lpath = this.getLocalPath(path);
94
+ return this._cache.get(lpath)?.kind == 'file';
95
+ }
96
+ async isDirectoryExists(name, parentDirectoryHandle) {
97
+ try {
98
+ await parentDirectoryHandle.getDirectoryHandle(name);
99
+ }
100
+ catch (error) {
101
+ return false;
102
+ }
103
+ return true;
104
+ }
105
+ async readTree(parent) {
106
+ const queue = [{ node: parent, path: "" }];
107
+ while (queue.length > 0) {
108
+ const currentNode = queue.shift();
109
+ if (!currentNode)
110
+ return;
111
+ const currentHandle = currentNode.node.handle;
112
+ if (currentHandle.kind !== "directory")
113
+ continue;
114
+ for await (const [name, handle] of currentHandle) {
115
+ const childPath = `${currentNode.path}/${name}`;
116
+ let child = undefined;
117
+ if (handle.kind === "file")
118
+ child = await this._cache.setFile(childPath, handle);
119
+ else {
120
+ child = this._cache.setDir(childPath, handle);
121
+ if (child)
122
+ queue.push({ node: child, path: childPath });
123
+ }
124
+ }
125
+ }
126
+ }
127
+ getLocalPath(path) {
128
+ if (path.startsWith('/'))
129
+ return path;
130
+ else
131
+ return '/' + path;
132
+ }
133
+ }
134
+ export class ProxyFileSystem {
135
+ init() {
136
+ return Promise.resolve();
137
+ }
138
+ mountTo(fs, mountpoint) {
139
+ this._fs = fs;
140
+ this._mountpoint = mountpoint;
141
+ }
142
+ makeFile(path, data) {
143
+ this._fs.createDataFile(this._mountpoint, path, data, true, true, true);
144
+ return Promise.resolve();
145
+ }
146
+ writeFile(path, data) {
147
+ const lpath = this.getLocalPath(path);
148
+ this._fs.writeFile(lpath, data);
149
+ return Promise.resolve();
150
+ }
151
+ remove(path) {
152
+ const lpath = this.getLocalPath(path);
153
+ this._fs.unlink(lpath);
154
+ return Promise.resolve();
155
+ }
156
+ openSyncFileAccess(path) {
157
+ return Promise.resolve();
158
+ }
159
+ closeSyncFileAccess(path) {
160
+ return;
161
+ }
162
+ dispose() {
163
+ return Promise.resolve();
164
+ }
165
+ isFileExists(path) {
166
+ try {
167
+ const lpath = this.getLocalPath(path);
168
+ const mode = this._fs.lookupPath(lpath, {}).node?.mode;
169
+ return !!mode && this._fs.isFile(mode);
170
+ }
171
+ catch (error) {
172
+ return false;
173
+ }
174
+ }
175
+ getLocalPath(path) {
176
+ return this._mountpoint + '/' + path;
177
+ }
178
+ }
179
+ //# sourceMappingURL=IFileSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFileSystem.js","sourceRoot":"","sources":["../../../src/file-system/IFileSystem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAiD,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAmB,MAAM,wBAAwB,CAAC;AAc/D,MAAM,OAAO,eAAe;IAG1B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,EAAM,EAAE,UAAkB;QAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE;YAC/B,IAAI,EAAE,GAAG;YACT,EAAE,EAAE,IAAI;SACT,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,IAAI;YACN,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU;YACb,MAAM,kBAAkB,CAAC;QAE3B,MAAM,MAAM,GAA8B,UAAU,CAAC,MAAM,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE;YACd,WAAW,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SACvC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAqB;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAiB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAqB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,UAAU,GAAkB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEhD,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACnC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3E,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAY;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU;YACb,OAAO,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAEzD,OAAO,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,mBAAmB,CAAC,IAAY;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAC/B,OAAO,EAAE,CAAC;QAEZ,OAAsB,IAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,qBAAgD;QAC5F,IAAI;YACF,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACtD;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,MAAoB;QACzC,MAAM,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW;gBACd,OAAO;YAET,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9C,IAAI,aAAa,CAAC,IAAI,KAAK,WAAW;gBACpC,SAAS;YAEX,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,aAAoB,EAAE;gBACvD,MAAM,SAAS,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBAChD,IAAI,KAAK,GAAG,SAAS,CAAC;gBACtB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;oBACxB,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;qBAClD;oBACH,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAC9C,IAAI,KAAK;wBACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;iBAChD;aACF;SACF;IACH,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACtB,OAAO,IAAI,CAAC;;YAEZ,OAAO,GAAG,GAAG,IAAI,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,eAAe;IAI1B,IAAI;QACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,EAAM,EAAE,UAAkB;QAChC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IACD,QAAQ,CAAC,IAAY,EAAE,IAAqB;QAC1C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,SAAS,CAAC,IAAY,EAAE,IAAqB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,IAAY;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,kBAAkB,CAAC,IAAY;QAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,mBAAmB,CAAC,IAAY;QAC9B,OAAO;IACT,CAAC;IACD,OAAO;QACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,YAAY,CAAC,IAAY;QACvB,IAAI;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;YACvD,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACxC;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACO,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,62 @@
1
+ export interface FileSystemSyncAccessHandle {
2
+ read(buffer: ArrayBufferView, options?: {
3
+ at?: number;
4
+ }): number;
5
+ write(buffer: ArrayBufferView, options?: {
6
+ at?: number;
7
+ }): number;
8
+ truncate(newSize: number): number;
9
+ getSize(): number; /** bigint??? */
10
+ flush(): void;
11
+ close(): void;
12
+ }
13
+ export interface IOpfsNode<T extends FileSystemHandle> {
14
+ handle: T;
15
+ name: string;
16
+ kind: FileSystemHandleKind;
17
+ id: number;
18
+ size: number;
19
+ parent?: IOpfsDirNode;
20
+ stream_ops?: StreamOps;
21
+ timestamp: number;
22
+ }
23
+ export interface IOpfsDirNode extends IOpfsNode<FileSystemDirectoryHandle> {
24
+ children: (IOpfsDirNode | IOpfsFileNode)[];
25
+ }
26
+ export interface IOpfsFileNode extends IOpfsNode<FileSystemFileHandle> {
27
+ stream_ops: StreamOps;
28
+ }
29
+ export interface IFileSystemCache {
30
+ setDir(path: string, handle: FileSystemDirectoryHandle): IOpfsDirNode | undefined;
31
+ setFile(path: string, handle: FileSystemFileHandle): IOpfsFileNode | undefined;
32
+ get(path: string): IOpfsDirNode | IOpfsFileNode | undefined;
33
+ delete(path: string): void;
34
+ unlink(path: string): void;
35
+ clear(): void;
36
+ }
37
+ export declare class FileSystemCache implements IFileSystemCache {
38
+ private _uniqueId;
39
+ private _cacheTable;
40
+ setDir(path: string, handle: FileSystemDirectoryHandle): IOpfsDirNode | undefined;
41
+ setFile(path: string, handle: FileSystemFileHandle): IOpfsFileNode | undefined;
42
+ get(path: string): IOpfsDirNode | IOpfsFileNode | undefined;
43
+ delete(path: string): void;
44
+ unlink(path: string): void;
45
+ clear(): void;
46
+ private createDirNode;
47
+ private createFileNode;
48
+ }
49
+ export declare class StreamOps {
50
+ private readonly handle;
51
+ private _syncHandle?;
52
+ private _syncHandlePromise?;
53
+ private _openCounter;
54
+ constructor(handle: FileSystemFileHandle);
55
+ open(): Promise<void>;
56
+ read(buffer: ArrayBufferView, offset: number, length: number, position?: number): number;
57
+ write(buffer: ArrayBufferView, offset: number, length: number, position?: number): number;
58
+ getSize(): number;
59
+ truncate(size: number): void;
60
+ close(stream?: object, force?: boolean): void;
61
+ isOpen(): boolean;
62
+ }
@@ -0,0 +1,154 @@
1
+ import { PATH } from "./PATH.js";
2
+ export class FileSystemCache {
3
+ constructor() {
4
+ this._uniqueId = 1;
5
+ this._cacheTable = new Map();
6
+ }
7
+ setDir(path, handle) {
8
+ if (path === "/") {
9
+ return this.createDirNode(path, handle, undefined);
10
+ }
11
+ const parentPath = PATH.getParentPath(path);
12
+ const parentNode = this.get(parentPath);
13
+ if (!parentNode)
14
+ return undefined;
15
+ // create new node
16
+ const opfsDir = this.createDirNode(path, handle, parentNode);
17
+ parentNode.children.push(opfsDir);
18
+ return opfsDir;
19
+ }
20
+ setFile(path, handle) {
21
+ const parentDir = PATH.getParentPath(path);
22
+ const parentNode = this.get(parentDir);
23
+ if (!parentNode)
24
+ return undefined;
25
+ // create new node
26
+ const opfsFile = this.createFileNode(path, handle, parentNode);
27
+ parentNode.children.push(opfsFile);
28
+ return opfsFile;
29
+ }
30
+ get(path) {
31
+ return this._cacheTable.get(path);
32
+ }
33
+ delete(path) {
34
+ const node = this._cacheTable.get(path);
35
+ if (!node)
36
+ return;
37
+ node.stream_ops?.close(undefined, true);
38
+ const parent = node.parent;
39
+ if (node.kind == 'directory') {
40
+ const children = node.children;
41
+ node.children = [];
42
+ children.forEach(child => this.delete(PATH.combine(path, child.name)));
43
+ }
44
+ if (parent) {
45
+ parent.children.splice(parent.children.indexOf(node));
46
+ }
47
+ this._cacheTable.delete(path);
48
+ }
49
+ unlink(path) {
50
+ const node = this._cacheTable.get(path);
51
+ if (!node)
52
+ return;
53
+ const parent = node.parent;
54
+ if (parent) {
55
+ parent.children.splice(parent.children.indexOf(node));
56
+ }
57
+ }
58
+ clear() {
59
+ const keys = Array.from(this._cacheTable.keys());
60
+ for (let i = 0; i < keys.length; i++) {
61
+ this.delete(keys[i]);
62
+ }
63
+ }
64
+ createDirNode(path, handle, parent) {
65
+ this._uniqueId++;
66
+ //const fsNode = this._fs.createNode(null, name, S_IFDIR | 511 /* 0777 */, 0 )
67
+ const node = {
68
+ name: PATH.getName(path),
69
+ handle: handle,
70
+ children: [],
71
+ kind: "directory",
72
+ id: this._uniqueId,
73
+ size: 4096,
74
+ parent: parent,
75
+ timestamp: Date.now(),
76
+ };
77
+ this._cacheTable.set(path, node);
78
+ return node;
79
+ }
80
+ createFileNode(path, handle, parent) {
81
+ this._uniqueId++;
82
+ const node = {
83
+ handle: handle,
84
+ name: PATH.getName(path),
85
+ kind: "file",
86
+ id: this._uniqueId,
87
+ size: 0,
88
+ parent: parent,
89
+ stream_ops: new StreamOps(handle),
90
+ timestamp: Date.now(),
91
+ };
92
+ this._cacheTable.set(path, node);
93
+ return node;
94
+ }
95
+ }
96
+ export class StreamOps {
97
+ constructor(handle) {
98
+ this.handle = handle;
99
+ this._openCounter = 0;
100
+ }
101
+ open() {
102
+ this._openCounter++;
103
+ if (this._syncHandlePromise)
104
+ return this._syncHandlePromise;
105
+ if (!this._syncHandle) {
106
+ this._syncHandlePromise = this.handle.createSyncAccessHandle()
107
+ .then(handle => {
108
+ this._syncHandlePromise = undefined;
109
+ if (this._openCounter == 0)
110
+ handle.close();
111
+ else
112
+ this._syncHandle = handle;
113
+ });
114
+ return this._syncHandlePromise;
115
+ }
116
+ return Promise.resolve();
117
+ }
118
+ read(buffer, offset, length, position) {
119
+ if (!this._syncHandle)
120
+ throw new Error("File is not in synchronous mode.");
121
+ const bufferToRead = new Uint8Array(buffer.buffer, offset, length);
122
+ this._syncHandle.read(bufferToRead, { at: position ?? 0 });
123
+ return length;
124
+ }
125
+ write(buffer, offset, length, position) {
126
+ if (!this._syncHandle)
127
+ throw new Error("File is not in synchronous mode.");
128
+ const bufferToWrite = new Uint8Array(buffer.buffer, offset, length);
129
+ this._syncHandle.write(bufferToWrite, { at: position ?? 0 });
130
+ return length;
131
+ }
132
+ getSize() {
133
+ if (!this._syncHandle)
134
+ throw new Error("File is not in synchronous mode.");
135
+ return this._syncHandle.getSize();
136
+ }
137
+ truncate(size) {
138
+ if (!this._syncHandle)
139
+ throw new Error("File is not in synchronous mode.");
140
+ this._syncHandle.truncate(size);
141
+ }
142
+ close(stream, force) {
143
+ this._openCounter--;
144
+ if (this._openCounter == 0 || force) {
145
+ this._openCounter = 0;
146
+ this._syncHandle?.close();
147
+ this._syncHandle = undefined;
148
+ }
149
+ }
150
+ isOpen() {
151
+ return !!this._syncHandle;
152
+ }
153
+ }
154
+ //# sourceMappingURL=IFileSystemCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IFileSystemCache.js","sourceRoot":"","sources":["../../../src/file-system/IFileSystemCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { FS, FSNode, FSStream, Lookup, FileSystemType } from "../wasm/pilot_bim_dataprovider.js";
2
+ import { IOpfsDirNode, IOpfsFileNode } from "./IFileSystemCache.js";
3
+ export interface ISyncFileSystem {
4
+ lookup(path: string): IOpfsDirNode | IOpfsFileNode | undefined;
5
+ readdir(path: string): string[];
6
+ }
7
+ export declare class OPFS implements FS {
8
+ private readonly _fs;
9
+ private readonly _fsSync;
10
+ private _mountpoint;
11
+ filesystems: any;
12
+ constructor(_fs: FS, _fsSync: ISyncFileSystem);
13
+ lookupPath(path: string, opts: any): Lookup;
14
+ isFile(mode: number): boolean;
15
+ isDir(mode: number): boolean;
16
+ mkdir(path: string, mode?: number): void;
17
+ readdir(path: string): string[];
18
+ stat(path: string, dontFollow?: boolean): any;
19
+ lstat(path: string): any;
20
+ truncate(path: string, len: number): void;
21
+ utime(path: string, atime: number, mtime: number): void;
22
+ open(path: string, flags: string, mode?: number, fd_start?: number, fd_end?: number): FSStream;
23
+ close(stream: FSStream): void;
24
+ read(stream: FSStream, buffer: ArrayBufferView, offset: number, length: number, position?: number): number;
25
+ write(stream: FSStream, buffer: ArrayBufferView, offset: number, length: number, position?: number, canOwn?: boolean): number;
26
+ readFile(path: string, opts?: unknown): Uint8Array;
27
+ writeFile(path: string, data: ArrayBufferView, opts?: {
28
+ flags?: string;
29
+ }): void;
30
+ mount(type: FileSystemType, opts: any, mountpoint: string): FSNode;
31
+ createNode(parent: string | FSNode, name: string, mode: number, dev: number): FSNode;
32
+ createStream(stream: FSStream, fd: number): FSStream;
33
+ unlink(path: string): void;
34
+ createDataFile(parent: string | FSNode, name: string, data: ArrayBufferView, canRead: boolean, canWrite: boolean, canOwn: boolean): FSNode;
35
+ }