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.
@@ -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
- newVersion: number;
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
- if (!Number.isInteger(newVer) || (newVer < 1)) {
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.statusObj().recordRemoteChange(newVer);
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
- newVersion: newVer
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
  }
@@ -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) {