core-3nweb-client-lib 0.43.15 → 0.43.17
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.
- package/build/api-defs/files.d.ts +14 -1
- package/build/core/id-manager/index.js +1 -4
- package/build/core/storage/synced/remote-events.js +16 -8
- package/build/core-ipc/fs.js +30 -0
- package/build/lib-client/cryptor/cryptor-wasm.js +1 -1
- package/build/lib-client/cryptor/cryptor.wasm +0 -0
- package/build/lib-client/fs-utils/files.js +2 -0
- package/build/lib-client/xsp-fs/folder-node.d.ts +1 -0
- package/build/lib-client/xsp-fs/folder-node.js +6 -0
- package/build/lib-client/xsp-fs/fs.d.ts +2 -0
- package/build/lib-client/xsp-fs/fs.js +16 -4
- package/build/lib-client/xsp-fs/node-in-fs.js +16 -8
- package/package.json +1 -1
- package/protos/fs.proto +4 -0
|
@@ -1331,8 +1331,13 @@ declare namespace web3n.files {
|
|
|
1331
1331
|
*/
|
|
1332
1332
|
getRemoteFileItem(path: string, remoteItemName: string, remoteVersion?: number): Promise<ReadonlyFile>;
|
|
1333
1333
|
|
|
1334
|
+
getRemoteFolderItem(path: string, remoteItemName: string, remoteVersion?: number): Promise<ReadonlyFS>;
|
|
1335
|
+
|
|
1334
1336
|
}
|
|
1335
1337
|
|
|
1338
|
+
/**
|
|
1339
|
+
*
|
|
1340
|
+
*/
|
|
1336
1341
|
interface FolderDiff {
|
|
1337
1342
|
currentVersion: number;
|
|
1338
1343
|
isCurrentLocal: boolean;
|
|
@@ -1340,6 +1345,10 @@ declare namespace web3n.files {
|
|
|
1340
1345
|
isRemoteArchived: boolean;
|
|
1341
1346
|
inCurrent?: ListingEntry[];
|
|
1342
1347
|
inRemote?: ListingEntry[];
|
|
1348
|
+
|
|
1349
|
+
// XXX
|
|
1350
|
+
// differentNames?: ;
|
|
1351
|
+
|
|
1343
1352
|
nameOverlaps?: string[];
|
|
1344
1353
|
ctime: {
|
|
1345
1354
|
remote?: Date;
|
|
@@ -1469,20 +1478,24 @@ declare namespace web3n.files {
|
|
|
1469
1478
|
interface RemoteVersionArchivalEvent extends FSEvent {
|
|
1470
1479
|
type: 'remote-version-archival';
|
|
1471
1480
|
archivedVersion: number;
|
|
1481
|
+
syncStatus: SyncStatus;
|
|
1472
1482
|
}
|
|
1473
1483
|
|
|
1474
1484
|
interface RemoteArchVerRemovalEvent extends FSEvent {
|
|
1475
1485
|
type: 'remote-arch-ver-removal';
|
|
1476
1486
|
removedArchVer: number;
|
|
1487
|
+
syncStatus: SyncStatus;
|
|
1477
1488
|
}
|
|
1478
1489
|
|
|
1479
1490
|
interface RemoteRemovalEvent extends FSEvent {
|
|
1480
1491
|
type: 'remote-removal';
|
|
1492
|
+
syncStatus: SyncStatus;
|
|
1481
1493
|
}
|
|
1482
1494
|
|
|
1483
1495
|
interface RemoteChangeEvent extends FSEvent {
|
|
1484
1496
|
type: 'remote-change';
|
|
1485
|
-
|
|
1497
|
+
newRemoteVersion: number;
|
|
1498
|
+
syncStatus: SyncStatus;
|
|
1486
1499
|
}
|
|
1487
1500
|
|
|
1488
1501
|
type UploadEvent = UploadStartEvent | UploadProgressEvent | UploadDoneEvent;
|
|
@@ -66,10 +66,7 @@ class IdManager {
|
|
|
66
66
|
}
|
|
67
67
|
return {
|
|
68
68
|
idManager,
|
|
69
|
-
setupManagerStorage: (fs, keys) => setupManagerStorage(fs, (keys ? {
|
|
70
|
-
address: idManager.address,
|
|
71
|
-
keys
|
|
72
|
-
} : undefined))
|
|
69
|
+
setupManagerStorage: (fs, keys) => setupManagerStorage(fs, (keys ? { address: idManager.address, keys } : undefined))
|
|
73
70
|
};
|
|
74
71
|
};
|
|
75
72
|
}
|
|
@@ -33,7 +33,6 @@ const SERVER_EVENTS_RESTART_WAIT_SECS = 5;
|
|
|
33
33
|
* events. Someone down the stream can react to these changes from remote.
|
|
34
34
|
*/
|
|
35
35
|
class RemoteEvents {
|
|
36
|
-
// private listeningProc: Subscription|undefined = undefined;
|
|
37
36
|
constructor(remoteStorage, files, broadcastNodeEvent, logError) {
|
|
38
37
|
this.remoteStorage = remoteStorage;
|
|
39
38
|
this.files = files;
|
|
@@ -68,19 +67,25 @@ class RemoteEvents {
|
|
|
68
67
|
}
|
|
69
68
|
absorbObjChange(client) {
|
|
70
69
|
return (new rxjs_1.Observable(obs => client.subscribe(owner_1.events.objChanged.EVENT_NAME, obs)))
|
|
71
|
-
.pipe((0, operators_1.mergeMap)(async ({ newVer, objId }) => {
|
|
72
|
-
|
|
70
|
+
.pipe((0, operators_1.mergeMap)(async ({ newVer: newRemoteVersion, objId }) => {
|
|
71
|
+
var _a;
|
|
72
|
+
if (!Number.isInteger(newRemoteVersion) || (newRemoteVersion < 1)) {
|
|
73
73
|
return;
|
|
74
74
|
}
|
|
75
75
|
const obj = await this.files.findObj(objId);
|
|
76
76
|
if (!obj) {
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
|
-
obj.
|
|
79
|
+
const syncStatus = obj.syncStatus().syncStatus();
|
|
80
|
+
if (!((_a = syncStatus.synced) === null || _a === void 0 ? void 0 : _a.latest) || (syncStatus.synced.latest >= newRemoteVersion)) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
obj.statusObj().recordRemoteChange(newRemoteVersion);
|
|
80
84
|
this.broadcastNodeEvent(obj.objId, undefined, undefined, {
|
|
81
85
|
type: 'remote-change',
|
|
82
86
|
path: '',
|
|
83
|
-
|
|
87
|
+
newRemoteVersion,
|
|
88
|
+
syncStatus: obj.syncStatus().syncStatus()
|
|
84
89
|
});
|
|
85
90
|
}, 1));
|
|
86
91
|
}
|
|
@@ -94,7 +99,8 @@ class RemoteEvents {
|
|
|
94
99
|
obj.statusObj().recordRemoteRemoval();
|
|
95
100
|
this.broadcastNodeEvent(obj.objId, undefined, undefined, {
|
|
96
101
|
type: 'remote-removal',
|
|
97
|
-
path: ''
|
|
102
|
+
path: '',
|
|
103
|
+
syncStatus: obj.syncStatus().syncStatus()
|
|
98
104
|
});
|
|
99
105
|
}, 1));
|
|
100
106
|
}
|
|
@@ -109,7 +115,8 @@ class RemoteEvents {
|
|
|
109
115
|
this.broadcastNodeEvent(obj.objId, undefined, undefined, {
|
|
110
116
|
type: 'remote-version-archival',
|
|
111
117
|
path: '',
|
|
112
|
-
archivedVersion: archivedVer
|
|
118
|
+
archivedVersion: archivedVer,
|
|
119
|
+
syncStatus: obj.syncStatus().syncStatus()
|
|
113
120
|
});
|
|
114
121
|
}, 1));
|
|
115
122
|
}
|
|
@@ -124,7 +131,8 @@ class RemoteEvents {
|
|
|
124
131
|
this.broadcastNodeEvent(obj.objId, undefined, undefined, {
|
|
125
132
|
type: 'remote-arch-ver-removal',
|
|
126
133
|
path: '',
|
|
127
|
-
removedArchVer: archivedVer
|
|
134
|
+
removedArchVer: archivedVer,
|
|
135
|
+
syncStatus: obj.syncStatus().syncStatus()
|
|
128
136
|
});
|
|
129
137
|
}, 1));
|
|
130
138
|
}
|
package/build/core-ipc/fs.js
CHANGED
|
@@ -111,6 +111,7 @@ function makeFSCaller(caller, fsMsg) {
|
|
|
111
111
|
statRemoteItem: vsStatRemoteItem.makeCaller(caller, vsPath),
|
|
112
112
|
listRemoteFolderItem: vsListRemoteFolderItem.makeCaller(caller, vsPath),
|
|
113
113
|
getRemoteFileItem: vsGetRemoteFileItem.makeCaller(caller, vsPath),
|
|
114
|
+
getRemoteFolderItem: vsGetRemoteFolderItem.makeCaller(caller, vsPath),
|
|
114
115
|
};
|
|
115
116
|
if (fs.writable) {
|
|
116
117
|
fs.v.sync.startUpload = vsStartUpload.makeCaller(caller, vsPath);
|
|
@@ -192,6 +193,7 @@ function exposeFSService(fs, expServices) {
|
|
|
192
193
|
statRemoteItem: vsStatRemoteItem.wrapService(fs.v.sync.statRemoteItem),
|
|
193
194
|
listRemoteFolderItem: vsListRemoteFolderItem.wrapService(fs.v.sync.listRemoteFolderItem),
|
|
194
195
|
getRemoteFileItem: vsGetRemoteFileItem.wrapService(fs.v.sync.getRemoteFileItem, expServices),
|
|
196
|
+
getRemoteFolderItem: vsGetRemoteFolderItem.wrapService(fs.v.sync.getRemoteFolderItem, expServices),
|
|
195
197
|
diffCurrentAndRemoteFolderVersions: vsDiffCurrentAndRemoteFolderVersions.wrapService(fs.v.sync.diffCurrentAndRemoteFolderVersions)
|
|
196
198
|
};
|
|
197
199
|
if (fs.writable) {
|
|
@@ -2068,6 +2070,34 @@ var vsGetRemoteFileItem;
|
|
|
2068
2070
|
vsGetRemoteFileItem.makeCaller = makeCaller;
|
|
2069
2071
|
})(vsGetRemoteFileItem || (vsGetRemoteFileItem = {}));
|
|
2070
2072
|
Object.freeze(vsGetRemoteFileItem);
|
|
2073
|
+
var vsGetRemoteFolderItem;
|
|
2074
|
+
(function (vsGetRemoteFolderItem) {
|
|
2075
|
+
function wrapService(fn, expServices) {
|
|
2076
|
+
return buf => {
|
|
2077
|
+
const { path, remoteItemName, remoteVersion } = remoteChildReqType.unpack(buf);
|
|
2078
|
+
const promise = fn(path, remoteItemName, (0, protobuf_msg_1.valOfOptInt)(remoteVersion))
|
|
2079
|
+
.then(fs => {
|
|
2080
|
+
const fsMsg = exposeFSService(fs, expServices);
|
|
2081
|
+
return exports.fsMsgType.pack(fsMsg);
|
|
2082
|
+
});
|
|
2083
|
+
return { promise };
|
|
2084
|
+
};
|
|
2085
|
+
}
|
|
2086
|
+
vsGetRemoteFolderItem.wrapService = wrapService;
|
|
2087
|
+
function makeCaller(caller, objPath) {
|
|
2088
|
+
const ipcPath = (0, protobuf_msg_1.methodPathFor)(objPath, 'getRemoteFolderItem');
|
|
2089
|
+
return (path, remoteItemName, remoteVersion) => caller
|
|
2090
|
+
.startPromiseCall(ipcPath, remoteChildReqType.pack({
|
|
2091
|
+
path, remoteItemName, remoteVersion: (0, protobuf_msg_1.toOptVal)(remoteVersion)
|
|
2092
|
+
}))
|
|
2093
|
+
.then(buf => {
|
|
2094
|
+
const fsMsg = exports.fsMsgType.unpack(buf);
|
|
2095
|
+
return makeFSCaller(caller, fsMsg);
|
|
2096
|
+
});
|
|
2097
|
+
}
|
|
2098
|
+
vsGetRemoteFolderItem.makeCaller = makeCaller;
|
|
2099
|
+
})(vsGetRemoteFolderItem || (vsGetRemoteFolderItem = {}));
|
|
2100
|
+
Object.freeze(vsGetRemoteFolderItem);
|
|
2071
2101
|
var vListVersions;
|
|
2072
2102
|
(function (vListVersions) {
|
|
2073
2103
|
function wrapService(fn) {
|