core-3nweb-client-lib 0.43.18 → 0.43.19

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.
@@ -1281,9 +1281,7 @@ declare namespace web3n.files {
1281
1281
  * Returns a state of on-disk cache of an item in fs.
1282
1282
  * @param version
1283
1283
  */
1284
- isRemoteVersionOnDisk(
1285
- path: string, version: number
1286
- ): Promise<'partial'|'complete'|'none'>;
1284
+ isRemoteVersionOnDisk(path: string, version: number): Promise<'partial'|'complete'|'none'>;
1287
1285
 
1288
1286
  /**
1289
1287
  * This downloads bytes onto disk, skipping decryption, as item's content isn't read here.
@@ -1301,7 +1299,7 @@ declare namespace web3n.files {
1301
1299
  adoptRemote(path: string, opts?: OptionsToAdopteRemote): Promise<void>;
1302
1300
 
1303
1301
  /**
1304
- * Calculates diff between current local and remote states of folder at given path.
1302
+ * Calculates diff between current and remote states of folder at given path.
1305
1303
  * @param path
1306
1304
  * @param remoteVersion
1307
1305
  */
@@ -1345,32 +1343,83 @@ declare namespace web3n.files {
1345
1343
  }
1346
1344
 
1347
1345
  /**
1348
- *
1346
+ * Difference between two versions of folder node.
1347
+ * Folder items that same in both versions are not included.
1349
1348
  */
1350
1349
  interface FolderDiff {
1350
+ /**
1351
+ * Current version against which this diff is done.
1352
+ */
1351
1353
  currentVersion: number;
1354
+
1355
+ /**
1356
+ * Flag indicating if current version is local, i.e. never uploaded.
1357
+ */
1352
1358
  isCurrentLocal: boolean;
1359
+
1360
+ /**
1361
+ * Remote version against which this diff is done.
1362
+ */
1353
1363
  remoteVersion?: number;
1364
+
1365
+ /**
1366
+ * Flag indicating if remote version is archived.
1367
+ * If remote is archived/delete, it has nothing inside, and with this implicit
1368
+ * understanding there is no need to have other data fields populated here.
1369
+ */
1354
1370
  isRemoteArchived: boolean;
1371
+
1372
+ /**
1373
+ * Items present only in current version.
1374
+ */
1355
1375
  inCurrent?: ListingEntry[];
1376
+
1377
+ /**
1378
+ * Items present only in remote version.
1379
+ */
1356
1380
  inRemote?: ListingEntry[];
1357
1381
 
1358
- // XXX add indication for items that have different name
1382
+ /**
1383
+ * Different names are for items that are same nodes but have different names
1384
+ * in local and remote branches.
1385
+ */
1359
1386
  differentNames?: {
1360
1387
  localName: string;
1361
1388
  remoteName: string;
1362
1389
  }[];
1390
+
1391
+ /**
1392
+ * Different keys identifies items that have different encryption keys in
1393
+ * local and remote branches. Keys may be changed, hence, given situation
1394
+ * should be reflected.
1395
+ */
1363
1396
  differentKeys?: string[];
1364
1397
 
1398
+ /**
1399
+ * Name overlaps are items with same name, but different node objects underneath.
1400
+ */
1365
1401
  nameOverlaps?: string[];
1402
+
1403
+ /**
1404
+ * Creation time should always be same.
1405
+ * But there is no way to enforce it, hence, we have this field.
1406
+ */
1366
1407
  ctime: {
1367
1408
  remote?: Date;
1368
1409
  current: Date;
1369
1410
  };
1411
+
1412
+ /**
1413
+ * Modification time most probably be different between versions.
1414
+ */
1370
1415
  mtime: {
1371
1416
  remote?: Date;
1372
1417
  current: Date;
1373
1418
  };
1419
+
1420
+ /**
1421
+ * Difference between xattrs. Same xattrs in both versions are not included.
1422
+ */
1374
1423
  xattrs?: {
1375
1424
  inCurrent?: { name: string; value: any; }[];
1376
1425
  inRemote?: { name: string; value: any; }[];
@@ -199,7 +199,7 @@ function exposeFSService(fs, expServices) {
199
199
  implExp.v.sync.startUpload = vsStartUpload.wrapService(fs.v.sync.startUpload);
200
200
  implExp.v.sync.upload = vsUpload.wrapService(fs.v.sync.upload);
201
201
  implExp.v.sync.adoptRemoteFolderItem = vsAdoptRemoteFolderItem.wrapService(fs.v.sync.adoptRemoteFolderItem);
202
- implExp.v.sync.adoptAllRemoteFolderItems = vsAdoptAllRemoteItems.wrapService(fs.v.sync.adoptAllRemoteItems);
202
+ implExp.v.sync.adoptAllRemoteItems = vsAdoptAllRemoteItems.wrapService(fs.v.sync.adoptAllRemoteItems);
203
203
  }
204
204
  }
205
205
  }
@@ -2012,7 +2012,7 @@ var vsAdoptAllRemoteItems;
2012
2012
  const ipcPath = (0, protobuf_msg_1.methodPathFor)(objPath, 'adoptAllRemoteItems');
2013
2013
  return (path, opts) => caller
2014
2014
  .startPromiseCall(ipcPath, requestType.pack({ path, opts: optionsToMsg(opts) }))
2015
- .then(buf => (0, protobuf_msg_1.valOfOpt)(replyType.unpack(buf).newVersion));
2015
+ .then(buf => (0, protobuf_msg_1.valOfOptInt)(replyType.unpack(buf).newVersion));
2016
2016
  }
2017
2017
  vsAdoptAllRemoteItems.makeCaller = makeCaller;
2018
2018
  })(vsAdoptAllRemoteItems || (vsAdoptAllRemoteItems = {}));
@@ -2194,6 +2194,8 @@ function folderDiffToMsg(diff) {
2194
2194
  inCurrent: (_a = diff.inCurrent) === null || _a === void 0 ? void 0 : _a.map(lsEntryToMsg),
2195
2195
  inRemote: (_b = diff.inRemote) === null || _b === void 0 ? void 0 : _b.map(lsEntryToMsg),
2196
2196
  nameOverlaps: diff.nameOverlaps,
2197
+ differentKeys: diff.differentKeys,
2198
+ differentNames: diff.differentNames,
2197
2199
  ctime: diffTStoMsg(diff.ctime),
2198
2200
  mtime: diffTStoMsg(diff.mtime),
2199
2201
  xattrs: (diff.xattrs ? {
@@ -2219,20 +2221,19 @@ function folderDiffFromMsg(msg) {
2219
2221
  currentVersion: (0, protobuf_msg_1.fixInt)(msg.currentVersion),
2220
2222
  isCurrentLocal: msg.isCurrentLocal,
2221
2223
  isRemoteArchived: msg.isRemoteArchived,
2222
- inCurrent: ((msg.inCurrent.length > 0) ?
2223
- msg.inCurrent.map(lsEntryFromMsg) : undefined),
2224
- inRemote: ((msg.inRemote.length > 0) ?
2225
- msg.inRemote.map(lsEntryFromMsg) : undefined),
2226
- nameOverlaps: ((msg.nameOverlaps.length > 0) ?
2227
- msg.nameOverlaps : undefined),
2224
+ inCurrent: ((msg.inCurrent && (msg.inCurrent.length > 0)) ? msg.inCurrent.map(lsEntryFromMsg) : undefined),
2225
+ inRemote: ((msg.inRemote && (msg.inRemote.length > 0)) ? msg.inRemote.map(lsEntryFromMsg) : undefined),
2226
+ nameOverlaps: ((msg.nameOverlaps && (msg.nameOverlaps.length > 0)) ? msg.nameOverlaps : undefined),
2227
+ differentKeys: ((msg.differentKeys && (msg.differentKeys.length > 0)) ? msg.differentKeys : undefined),
2228
+ differentNames: ((msg.differentNames && (msg.differentNames.length > 0)) ? msg.differentNames : undefined),
2228
2229
  ctime: diffTSfromMsg(msg.ctime),
2229
2230
  mtime: diffTSfromMsg(msg.mtime),
2230
2231
  xattrs: (msg.xattrs ? {
2231
- inCurrent: ((msg.xattrs.inCurrent.length > 0) ?
2232
+ inCurrent: ((msg.xattrs.inCurrent && (msg.xattrs.inCurrent.length > 0)) ?
2232
2233
  msg.xattrs.inCurrent.map(file.xattrFromMsg) : undefined),
2233
- inRemote: ((msg.xattrs.inRemote.length > 0) ?
2234
+ inRemote: ((msg.xattrs.inRemote && (msg.xattrs.inRemote.length > 0)) ?
2234
2235
  msg.xattrs.inRemote.map(file.xattrFromMsg) : undefined),
2235
- nameOverlaps: ((msg.xattrs.nameOverlaps.length > 0) ?
2236
+ nameOverlaps: ((msg.xattrs.nameOverlaps && (msg.xattrs.nameOverlaps.length > 0)) ?
2236
2237
  msg.xattrs.nameOverlaps : undefined)
2237
2238
  } : undefined)
2238
2239
  };
@@ -402,7 +402,7 @@ class FolderNode extends node_in_fs_1.NodeInFS {
402
402
  newName = `${newName}${postfix}`;
403
403
  }
404
404
  node.name = newName;
405
- state[newName] = node;
405
+ state.nodes[newName] = node;
406
406
  addedNodes.add(itemName);
407
407
  }
408
408
  }
@@ -411,7 +411,7 @@ class FolderNode extends node_in_fs_1.NodeInFS {
411
411
  continue;
412
412
  }
413
413
  const node = remoteState.nodes[itemName];
414
- state[itemName] = node;
414
+ state.nodes[itemName] = node;
415
415
  }
416
416
  return [];
417
417
  });
@@ -1109,7 +1109,7 @@ class FolderNode extends node_in_fs_1.NodeInFS {
1109
1109
  }
1110
1110
  diffWithRemote(isCurrentLocal, remoteVersion, folderInfo, attrs, xattrs) {
1111
1111
  const { ctime, mtime } = diffAttrs(this.attrs, attrs);
1112
- const { inCurrent, inRemote, nameOverlaps } = diffNodes(this.currentState, folderInfo);
1112
+ const { inCurrent, inRemote, nameOverlaps, differentKeys, differentNames } = diffNodes(this.currentState, folderInfo);
1113
1113
  return {
1114
1114
  currentVersion: this.version,
1115
1115
  isCurrentLocal,
@@ -1118,6 +1118,8 @@ class FolderNode extends node_in_fs_1.NodeInFS {
1118
1118
  inCurrent,
1119
1119
  inRemote,
1120
1120
  nameOverlaps,
1121
+ differentKeys,
1122
+ differentNames,
1121
1123
  ctime,
1122
1124
  mtime,
1123
1125
  xattrs: diffXAttrs(this.xattrs, xattrs)
@@ -32082,6 +32082,8 @@ $root.fs = (function() {
32082
32082
  * @property {fs.FolderDiff.ITimeStamps|null} [ctime] FolderDiff ctime
32083
32083
  * @property {fs.FolderDiff.ITimeStamps|null} [mtime] FolderDiff mtime
32084
32084
  * @property {fs.FolderDiff.IXAttrs|null} [xattrs] FolderDiff xattrs
32085
+ * @property {Array.<string>|null} [differentKeys] FolderDiff differentKeys
32086
+ * @property {Array.<fs.FolderDiff.IDifferentNames>|null} [differentNames] FolderDiff differentNames
32085
32087
  */
32086
32088
 
32087
32089
  /**
@@ -32096,6 +32098,8 @@ $root.fs = (function() {
32096
32098
  this.inCurrent = [];
32097
32099
  this.inRemote = [];
32098
32100
  this.nameOverlaps = [];
32101
+ this.differentKeys = [];
32102
+ this.differentNames = [];
32099
32103
  if (properties)
32100
32104
  for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
32101
32105
  if (properties[keys[i]] != null)
@@ -32166,6 +32170,22 @@ $root.fs = (function() {
32166
32170
  */
32167
32171
  FolderDiff.prototype.xattrs = null;
32168
32172
 
32173
+ /**
32174
+ * FolderDiff differentKeys.
32175
+ * @member {Array.<string>} differentKeys
32176
+ * @memberof fs.FolderDiff
32177
+ * @instance
32178
+ */
32179
+ FolderDiff.prototype.differentKeys = $util.emptyArray;
32180
+
32181
+ /**
32182
+ * FolderDiff differentNames.
32183
+ * @member {Array.<fs.FolderDiff.IDifferentNames>} differentNames
32184
+ * @memberof fs.FolderDiff
32185
+ * @instance
32186
+ */
32187
+ FolderDiff.prototype.differentNames = $util.emptyArray;
32188
+
32169
32189
  /**
32170
32190
  * Creates a new FolderDiff instance using the specified properties.
32171
32191
  * @function create
@@ -32209,6 +32229,12 @@ $root.fs = (function() {
32209
32229
  $root.fs.FolderDiff.TimeStamps.encode(message.mtime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
32210
32230
  if (message.xattrs != null && Object.hasOwnProperty.call(message, "xattrs"))
32211
32231
  $root.fs.FolderDiff.XAttrs.encode(message.xattrs, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
32232
+ if (message.differentKeys != null && message.differentKeys.length)
32233
+ for (var i = 0; i < message.differentKeys.length; ++i)
32234
+ writer.uint32(/* id 9, wireType 2 =*/74).string(message.differentKeys[i]);
32235
+ if (message.differentNames != null && message.differentNames.length)
32236
+ for (var i = 0; i < message.differentNames.length; ++i)
32237
+ $root.fs.FolderDiff.DifferentNames.encode(message.differentNames[i], writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
32212
32238
  return writer;
32213
32239
  };
32214
32240
 
@@ -32283,6 +32309,18 @@ $root.fs = (function() {
32283
32309
  message.xattrs = $root.fs.FolderDiff.XAttrs.decode(reader, reader.uint32());
32284
32310
  break;
32285
32311
  }
32312
+ case 9: {
32313
+ if (!(message.differentKeys && message.differentKeys.length))
32314
+ message.differentKeys = [];
32315
+ message.differentKeys.push(reader.string());
32316
+ break;
32317
+ }
32318
+ case 10: {
32319
+ if (!(message.differentNames && message.differentNames.length))
32320
+ message.differentNames = [];
32321
+ message.differentNames.push($root.fs.FolderDiff.DifferentNames.decode(reader, reader.uint32()));
32322
+ break;
32323
+ }
32286
32324
  default:
32287
32325
  reader.skipType(tag & 7);
32288
32326
  break;
@@ -32366,6 +32404,22 @@ $root.fs = (function() {
32366
32404
  if (error)
32367
32405
  return "xattrs." + error;
32368
32406
  }
32407
+ if (message.differentKeys != null && message.hasOwnProperty("differentKeys")) {
32408
+ if (!Array.isArray(message.differentKeys))
32409
+ return "differentKeys: array expected";
32410
+ for (var i = 0; i < message.differentKeys.length; ++i)
32411
+ if (!$util.isString(message.differentKeys[i]))
32412
+ return "differentKeys: string[] expected";
32413
+ }
32414
+ if (message.differentNames != null && message.hasOwnProperty("differentNames")) {
32415
+ if (!Array.isArray(message.differentNames))
32416
+ return "differentNames: array expected";
32417
+ for (var i = 0; i < message.differentNames.length; ++i) {
32418
+ var error = $root.fs.FolderDiff.DifferentNames.verify(message.differentNames[i]);
32419
+ if (error)
32420
+ return "differentNames." + error;
32421
+ }
32422
+ }
32369
32423
  return null;
32370
32424
  };
32371
32425
 
@@ -32437,6 +32491,23 @@ $root.fs = (function() {
32437
32491
  throw TypeError(".fs.FolderDiff.xattrs: object expected");
32438
32492
  message.xattrs = $root.fs.FolderDiff.XAttrs.fromObject(object.xattrs);
32439
32493
  }
32494
+ if (object.differentKeys) {
32495
+ if (!Array.isArray(object.differentKeys))
32496
+ throw TypeError(".fs.FolderDiff.differentKeys: array expected");
32497
+ message.differentKeys = [];
32498
+ for (var i = 0; i < object.differentKeys.length; ++i)
32499
+ message.differentKeys[i] = String(object.differentKeys[i]);
32500
+ }
32501
+ if (object.differentNames) {
32502
+ if (!Array.isArray(object.differentNames))
32503
+ throw TypeError(".fs.FolderDiff.differentNames: array expected");
32504
+ message.differentNames = [];
32505
+ for (var i = 0; i < object.differentNames.length; ++i) {
32506
+ if (typeof object.differentNames[i] !== "object")
32507
+ throw TypeError(".fs.FolderDiff.differentNames: object expected");
32508
+ message.differentNames[i] = $root.fs.FolderDiff.DifferentNames.fromObject(object.differentNames[i]);
32509
+ }
32510
+ }
32440
32511
  return message;
32441
32512
  };
32442
32513
 
@@ -32457,6 +32528,8 @@ $root.fs = (function() {
32457
32528
  object.inCurrent = [];
32458
32529
  object.inRemote = [];
32459
32530
  object.nameOverlaps = [];
32531
+ object.differentKeys = [];
32532
+ object.differentNames = [];
32460
32533
  }
32461
32534
  if (options.defaults) {
32462
32535
  if ($util.Long) {
@@ -32497,6 +32570,16 @@ $root.fs = (function() {
32497
32570
  object.mtime = $root.fs.FolderDiff.TimeStamps.toObject(message.mtime, options);
32498
32571
  if (message.xattrs != null && message.hasOwnProperty("xattrs"))
32499
32572
  object.xattrs = $root.fs.FolderDiff.XAttrs.toObject(message.xattrs, options);
32573
+ if (message.differentKeys && message.differentKeys.length) {
32574
+ object.differentKeys = [];
32575
+ for (var j = 0; j < message.differentKeys.length; ++j)
32576
+ object.differentKeys[j] = message.differentKeys[j];
32577
+ }
32578
+ if (message.differentNames && message.differentNames.length) {
32579
+ object.differentNames = [];
32580
+ for (var j = 0; j < message.differentNames.length; ++j)
32581
+ object.differentNames[j] = $root.fs.FolderDiff.DifferentNames.toObject(message.differentNames[j], options);
32582
+ }
32500
32583
  return object;
32501
32584
  };
32502
32585
 
@@ -33084,6 +33167,235 @@ $root.fs = (function() {
33084
33167
  return XAttrs;
33085
33168
  })();
33086
33169
 
33170
+ FolderDiff.DifferentNames = (function() {
33171
+
33172
+ /**
33173
+ * Properties of a DifferentNames.
33174
+ * @memberof fs.FolderDiff
33175
+ * @interface IDifferentNames
33176
+ * @property {string|null} [localName] DifferentNames localName
33177
+ * @property {string|null} [remoteName] DifferentNames remoteName
33178
+ */
33179
+
33180
+ /**
33181
+ * Constructs a new DifferentNames.
33182
+ * @memberof fs.FolderDiff
33183
+ * @classdesc Represents a DifferentNames.
33184
+ * @implements IDifferentNames
33185
+ * @constructor
33186
+ * @param {fs.FolderDiff.IDifferentNames=} [properties] Properties to set
33187
+ */
33188
+ function DifferentNames(properties) {
33189
+ if (properties)
33190
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
33191
+ if (properties[keys[i]] != null)
33192
+ this[keys[i]] = properties[keys[i]];
33193
+ }
33194
+
33195
+ /**
33196
+ * DifferentNames localName.
33197
+ * @member {string} localName
33198
+ * @memberof fs.FolderDiff.DifferentNames
33199
+ * @instance
33200
+ */
33201
+ DifferentNames.prototype.localName = "";
33202
+
33203
+ /**
33204
+ * DifferentNames remoteName.
33205
+ * @member {string} remoteName
33206
+ * @memberof fs.FolderDiff.DifferentNames
33207
+ * @instance
33208
+ */
33209
+ DifferentNames.prototype.remoteName = "";
33210
+
33211
+ /**
33212
+ * Creates a new DifferentNames instance using the specified properties.
33213
+ * @function create
33214
+ * @memberof fs.FolderDiff.DifferentNames
33215
+ * @static
33216
+ * @param {fs.FolderDiff.IDifferentNames=} [properties] Properties to set
33217
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames instance
33218
+ */
33219
+ DifferentNames.create = function create(properties) {
33220
+ return new DifferentNames(properties);
33221
+ };
33222
+
33223
+ /**
33224
+ * Encodes the specified DifferentNames message. Does not implicitly {@link fs.FolderDiff.DifferentNames.verify|verify} messages.
33225
+ * @function encode
33226
+ * @memberof fs.FolderDiff.DifferentNames
33227
+ * @static
33228
+ * @param {fs.FolderDiff.IDifferentNames} message DifferentNames message or plain object to encode
33229
+ * @param {$protobuf.Writer} [writer] Writer to encode to
33230
+ * @returns {$protobuf.Writer} Writer
33231
+ */
33232
+ DifferentNames.encode = function encode(message, writer) {
33233
+ if (!writer)
33234
+ writer = $Writer.create();
33235
+ if (message.localName != null && Object.hasOwnProperty.call(message, "localName"))
33236
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.localName);
33237
+ if (message.remoteName != null && Object.hasOwnProperty.call(message, "remoteName"))
33238
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.remoteName);
33239
+ return writer;
33240
+ };
33241
+
33242
+ /**
33243
+ * Encodes the specified DifferentNames message, length delimited. Does not implicitly {@link fs.FolderDiff.DifferentNames.verify|verify} messages.
33244
+ * @function encodeDelimited
33245
+ * @memberof fs.FolderDiff.DifferentNames
33246
+ * @static
33247
+ * @param {fs.FolderDiff.IDifferentNames} message DifferentNames message or plain object to encode
33248
+ * @param {$protobuf.Writer} [writer] Writer to encode to
33249
+ * @returns {$protobuf.Writer} Writer
33250
+ */
33251
+ DifferentNames.encodeDelimited = function encodeDelimited(message, writer) {
33252
+ return this.encode(message, writer).ldelim();
33253
+ };
33254
+
33255
+ /**
33256
+ * Decodes a DifferentNames message from the specified reader or buffer.
33257
+ * @function decode
33258
+ * @memberof fs.FolderDiff.DifferentNames
33259
+ * @static
33260
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
33261
+ * @param {number} [length] Message length if known beforehand
33262
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames
33263
+ * @throws {Error} If the payload is not a reader or valid buffer
33264
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
33265
+ */
33266
+ DifferentNames.decode = function decode(reader, length, error) {
33267
+ if (!(reader instanceof $Reader))
33268
+ reader = $Reader.create(reader);
33269
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fs.FolderDiff.DifferentNames();
33270
+ while (reader.pos < end) {
33271
+ var tag = reader.uint32();
33272
+ if (tag === error)
33273
+ break;
33274
+ switch (tag >>> 3) {
33275
+ case 1: {
33276
+ message.localName = reader.string();
33277
+ break;
33278
+ }
33279
+ case 2: {
33280
+ message.remoteName = reader.string();
33281
+ break;
33282
+ }
33283
+ default:
33284
+ reader.skipType(tag & 7);
33285
+ break;
33286
+ }
33287
+ }
33288
+ return message;
33289
+ };
33290
+
33291
+ /**
33292
+ * Decodes a DifferentNames message from the specified reader or buffer, length delimited.
33293
+ * @function decodeDelimited
33294
+ * @memberof fs.FolderDiff.DifferentNames
33295
+ * @static
33296
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
33297
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames
33298
+ * @throws {Error} If the payload is not a reader or valid buffer
33299
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
33300
+ */
33301
+ DifferentNames.decodeDelimited = function decodeDelimited(reader) {
33302
+ if (!(reader instanceof $Reader))
33303
+ reader = new $Reader(reader);
33304
+ return this.decode(reader, reader.uint32());
33305
+ };
33306
+
33307
+ /**
33308
+ * Verifies a DifferentNames message.
33309
+ * @function verify
33310
+ * @memberof fs.FolderDiff.DifferentNames
33311
+ * @static
33312
+ * @param {Object.<string,*>} message Plain object to verify
33313
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
33314
+ */
33315
+ DifferentNames.verify = function verify(message) {
33316
+ if (typeof message !== "object" || message === null)
33317
+ return "object expected";
33318
+ if (message.localName != null && message.hasOwnProperty("localName"))
33319
+ if (!$util.isString(message.localName))
33320
+ return "localName: string expected";
33321
+ if (message.remoteName != null && message.hasOwnProperty("remoteName"))
33322
+ if (!$util.isString(message.remoteName))
33323
+ return "remoteName: string expected";
33324
+ return null;
33325
+ };
33326
+
33327
+ /**
33328
+ * Creates a DifferentNames message from a plain object. Also converts values to their respective internal types.
33329
+ * @function fromObject
33330
+ * @memberof fs.FolderDiff.DifferentNames
33331
+ * @static
33332
+ * @param {Object.<string,*>} object Plain object
33333
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames
33334
+ */
33335
+ DifferentNames.fromObject = function fromObject(object) {
33336
+ if (object instanceof $root.fs.FolderDiff.DifferentNames)
33337
+ return object;
33338
+ var message = new $root.fs.FolderDiff.DifferentNames();
33339
+ if (object.localName != null)
33340
+ message.localName = String(object.localName);
33341
+ if (object.remoteName != null)
33342
+ message.remoteName = String(object.remoteName);
33343
+ return message;
33344
+ };
33345
+
33346
+ /**
33347
+ * Creates a plain object from a DifferentNames message. Also converts values to other types if specified.
33348
+ * @function toObject
33349
+ * @memberof fs.FolderDiff.DifferentNames
33350
+ * @static
33351
+ * @param {fs.FolderDiff.DifferentNames} message DifferentNames
33352
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
33353
+ * @returns {Object.<string,*>} Plain object
33354
+ */
33355
+ DifferentNames.toObject = function toObject(message, options) {
33356
+ if (!options)
33357
+ options = {};
33358
+ var object = {};
33359
+ if (options.defaults) {
33360
+ object.localName = "";
33361
+ object.remoteName = "";
33362
+ }
33363
+ if (message.localName != null && message.hasOwnProperty("localName"))
33364
+ object.localName = message.localName;
33365
+ if (message.remoteName != null && message.hasOwnProperty("remoteName"))
33366
+ object.remoteName = message.remoteName;
33367
+ return object;
33368
+ };
33369
+
33370
+ /**
33371
+ * Converts this DifferentNames to JSON.
33372
+ * @function toJSON
33373
+ * @memberof fs.FolderDiff.DifferentNames
33374
+ * @instance
33375
+ * @returns {Object.<string,*>} JSON object
33376
+ */
33377
+ DifferentNames.prototype.toJSON = function toJSON() {
33378
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
33379
+ };
33380
+
33381
+ /**
33382
+ * Gets the default type url for DifferentNames
33383
+ * @function getTypeUrl
33384
+ * @memberof fs.FolderDiff.DifferentNames
33385
+ * @static
33386
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
33387
+ * @returns {string} The default type url
33388
+ */
33389
+ DifferentNames.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
33390
+ if (typeUrlPrefix === undefined) {
33391
+ typeUrlPrefix = "type.googleapis.com";
33392
+ }
33393
+ return typeUrlPrefix + "/fs.FolderDiff.DifferentNames";
33394
+ };
33395
+
33396
+ return DifferentNames;
33397
+ })();
33398
+
33087
33399
  return FolderDiff;
33088
33400
  })();
33089
33401
 
@@ -13103,6 +13103,8 @@ $root.fs = (function() {
13103
13103
  * @property {fs.FolderDiff.ITimeStamps|null} [ctime] FolderDiff ctime
13104
13104
  * @property {fs.FolderDiff.ITimeStamps|null} [mtime] FolderDiff mtime
13105
13105
  * @property {fs.FolderDiff.IXAttrs|null} [xattrs] FolderDiff xattrs
13106
+ * @property {Array.<string>|null} [differentKeys] FolderDiff differentKeys
13107
+ * @property {Array.<fs.FolderDiff.IDifferentNames>|null} [differentNames] FolderDiff differentNames
13106
13108
  */
13107
13109
 
13108
13110
  /**
@@ -13117,6 +13119,8 @@ $root.fs = (function() {
13117
13119
  this.inCurrent = [];
13118
13120
  this.inRemote = [];
13119
13121
  this.nameOverlaps = [];
13122
+ this.differentKeys = [];
13123
+ this.differentNames = [];
13120
13124
  if (properties)
13121
13125
  for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
13122
13126
  if (properties[keys[i]] != null)
@@ -13187,6 +13191,22 @@ $root.fs = (function() {
13187
13191
  */
13188
13192
  FolderDiff.prototype.xattrs = null;
13189
13193
 
13194
+ /**
13195
+ * FolderDiff differentKeys.
13196
+ * @member {Array.<string>} differentKeys
13197
+ * @memberof fs.FolderDiff
13198
+ * @instance
13199
+ */
13200
+ FolderDiff.prototype.differentKeys = $util.emptyArray;
13201
+
13202
+ /**
13203
+ * FolderDiff differentNames.
13204
+ * @member {Array.<fs.FolderDiff.IDifferentNames>} differentNames
13205
+ * @memberof fs.FolderDiff
13206
+ * @instance
13207
+ */
13208
+ FolderDiff.prototype.differentNames = $util.emptyArray;
13209
+
13190
13210
  /**
13191
13211
  * Creates a new FolderDiff instance using the specified properties.
13192
13212
  * @function create
@@ -13230,6 +13250,12 @@ $root.fs = (function() {
13230
13250
  $root.fs.FolderDiff.TimeStamps.encode(message.mtime, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
13231
13251
  if (message.xattrs != null && Object.hasOwnProperty.call(message, "xattrs"))
13232
13252
  $root.fs.FolderDiff.XAttrs.encode(message.xattrs, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
13253
+ if (message.differentKeys != null && message.differentKeys.length)
13254
+ for (var i = 0; i < message.differentKeys.length; ++i)
13255
+ writer.uint32(/* id 9, wireType 2 =*/74).string(message.differentKeys[i]);
13256
+ if (message.differentNames != null && message.differentNames.length)
13257
+ for (var i = 0; i < message.differentNames.length; ++i)
13258
+ $root.fs.FolderDiff.DifferentNames.encode(message.differentNames[i], writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
13233
13259
  return writer;
13234
13260
  };
13235
13261
 
@@ -13304,6 +13330,18 @@ $root.fs = (function() {
13304
13330
  message.xattrs = $root.fs.FolderDiff.XAttrs.decode(reader, reader.uint32());
13305
13331
  break;
13306
13332
  }
13333
+ case 9: {
13334
+ if (!(message.differentKeys && message.differentKeys.length))
13335
+ message.differentKeys = [];
13336
+ message.differentKeys.push(reader.string());
13337
+ break;
13338
+ }
13339
+ case 10: {
13340
+ if (!(message.differentNames && message.differentNames.length))
13341
+ message.differentNames = [];
13342
+ message.differentNames.push($root.fs.FolderDiff.DifferentNames.decode(reader, reader.uint32()));
13343
+ break;
13344
+ }
13307
13345
  default:
13308
13346
  reader.skipType(tag & 7);
13309
13347
  break;
@@ -13387,6 +13425,22 @@ $root.fs = (function() {
13387
13425
  if (error)
13388
13426
  return "xattrs." + error;
13389
13427
  }
13428
+ if (message.differentKeys != null && message.hasOwnProperty("differentKeys")) {
13429
+ if (!Array.isArray(message.differentKeys))
13430
+ return "differentKeys: array expected";
13431
+ for (var i = 0; i < message.differentKeys.length; ++i)
13432
+ if (!$util.isString(message.differentKeys[i]))
13433
+ return "differentKeys: string[] expected";
13434
+ }
13435
+ if (message.differentNames != null && message.hasOwnProperty("differentNames")) {
13436
+ if (!Array.isArray(message.differentNames))
13437
+ return "differentNames: array expected";
13438
+ for (var i = 0; i < message.differentNames.length; ++i) {
13439
+ var error = $root.fs.FolderDiff.DifferentNames.verify(message.differentNames[i]);
13440
+ if (error)
13441
+ return "differentNames." + error;
13442
+ }
13443
+ }
13390
13444
  return null;
13391
13445
  };
13392
13446
 
@@ -13458,6 +13512,23 @@ $root.fs = (function() {
13458
13512
  throw TypeError(".fs.FolderDiff.xattrs: object expected");
13459
13513
  message.xattrs = $root.fs.FolderDiff.XAttrs.fromObject(object.xattrs);
13460
13514
  }
13515
+ if (object.differentKeys) {
13516
+ if (!Array.isArray(object.differentKeys))
13517
+ throw TypeError(".fs.FolderDiff.differentKeys: array expected");
13518
+ message.differentKeys = [];
13519
+ for (var i = 0; i < object.differentKeys.length; ++i)
13520
+ message.differentKeys[i] = String(object.differentKeys[i]);
13521
+ }
13522
+ if (object.differentNames) {
13523
+ if (!Array.isArray(object.differentNames))
13524
+ throw TypeError(".fs.FolderDiff.differentNames: array expected");
13525
+ message.differentNames = [];
13526
+ for (var i = 0; i < object.differentNames.length; ++i) {
13527
+ if (typeof object.differentNames[i] !== "object")
13528
+ throw TypeError(".fs.FolderDiff.differentNames: object expected");
13529
+ message.differentNames[i] = $root.fs.FolderDiff.DifferentNames.fromObject(object.differentNames[i]);
13530
+ }
13531
+ }
13461
13532
  return message;
13462
13533
  };
13463
13534
 
@@ -13478,6 +13549,8 @@ $root.fs = (function() {
13478
13549
  object.inCurrent = [];
13479
13550
  object.inRemote = [];
13480
13551
  object.nameOverlaps = [];
13552
+ object.differentKeys = [];
13553
+ object.differentNames = [];
13481
13554
  }
13482
13555
  if (options.defaults) {
13483
13556
  if ($util.Long) {
@@ -13518,6 +13591,16 @@ $root.fs = (function() {
13518
13591
  object.mtime = $root.fs.FolderDiff.TimeStamps.toObject(message.mtime, options);
13519
13592
  if (message.xattrs != null && message.hasOwnProperty("xattrs"))
13520
13593
  object.xattrs = $root.fs.FolderDiff.XAttrs.toObject(message.xattrs, options);
13594
+ if (message.differentKeys && message.differentKeys.length) {
13595
+ object.differentKeys = [];
13596
+ for (var j = 0; j < message.differentKeys.length; ++j)
13597
+ object.differentKeys[j] = message.differentKeys[j];
13598
+ }
13599
+ if (message.differentNames && message.differentNames.length) {
13600
+ object.differentNames = [];
13601
+ for (var j = 0; j < message.differentNames.length; ++j)
13602
+ object.differentNames[j] = $root.fs.FolderDiff.DifferentNames.toObject(message.differentNames[j], options);
13603
+ }
13521
13604
  return object;
13522
13605
  };
13523
13606
 
@@ -14105,6 +14188,235 @@ $root.fs = (function() {
14105
14188
  return XAttrs;
14106
14189
  })();
14107
14190
 
14191
+ FolderDiff.DifferentNames = (function() {
14192
+
14193
+ /**
14194
+ * Properties of a DifferentNames.
14195
+ * @memberof fs.FolderDiff
14196
+ * @interface IDifferentNames
14197
+ * @property {string|null} [localName] DifferentNames localName
14198
+ * @property {string|null} [remoteName] DifferentNames remoteName
14199
+ */
14200
+
14201
+ /**
14202
+ * Constructs a new DifferentNames.
14203
+ * @memberof fs.FolderDiff
14204
+ * @classdesc Represents a DifferentNames.
14205
+ * @implements IDifferentNames
14206
+ * @constructor
14207
+ * @param {fs.FolderDiff.IDifferentNames=} [properties] Properties to set
14208
+ */
14209
+ function DifferentNames(properties) {
14210
+ if (properties)
14211
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
14212
+ if (properties[keys[i]] != null)
14213
+ this[keys[i]] = properties[keys[i]];
14214
+ }
14215
+
14216
+ /**
14217
+ * DifferentNames localName.
14218
+ * @member {string} localName
14219
+ * @memberof fs.FolderDiff.DifferentNames
14220
+ * @instance
14221
+ */
14222
+ DifferentNames.prototype.localName = "";
14223
+
14224
+ /**
14225
+ * DifferentNames remoteName.
14226
+ * @member {string} remoteName
14227
+ * @memberof fs.FolderDiff.DifferentNames
14228
+ * @instance
14229
+ */
14230
+ DifferentNames.prototype.remoteName = "";
14231
+
14232
+ /**
14233
+ * Creates a new DifferentNames instance using the specified properties.
14234
+ * @function create
14235
+ * @memberof fs.FolderDiff.DifferentNames
14236
+ * @static
14237
+ * @param {fs.FolderDiff.IDifferentNames=} [properties] Properties to set
14238
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames instance
14239
+ */
14240
+ DifferentNames.create = function create(properties) {
14241
+ return new DifferentNames(properties);
14242
+ };
14243
+
14244
+ /**
14245
+ * Encodes the specified DifferentNames message. Does not implicitly {@link fs.FolderDiff.DifferentNames.verify|verify} messages.
14246
+ * @function encode
14247
+ * @memberof fs.FolderDiff.DifferentNames
14248
+ * @static
14249
+ * @param {fs.FolderDiff.IDifferentNames} message DifferentNames message or plain object to encode
14250
+ * @param {$protobuf.Writer} [writer] Writer to encode to
14251
+ * @returns {$protobuf.Writer} Writer
14252
+ */
14253
+ DifferentNames.encode = function encode(message, writer) {
14254
+ if (!writer)
14255
+ writer = $Writer.create();
14256
+ if (message.localName != null && Object.hasOwnProperty.call(message, "localName"))
14257
+ writer.uint32(/* id 1, wireType 2 =*/10).string(message.localName);
14258
+ if (message.remoteName != null && Object.hasOwnProperty.call(message, "remoteName"))
14259
+ writer.uint32(/* id 2, wireType 2 =*/18).string(message.remoteName);
14260
+ return writer;
14261
+ };
14262
+
14263
+ /**
14264
+ * Encodes the specified DifferentNames message, length delimited. Does not implicitly {@link fs.FolderDiff.DifferentNames.verify|verify} messages.
14265
+ * @function encodeDelimited
14266
+ * @memberof fs.FolderDiff.DifferentNames
14267
+ * @static
14268
+ * @param {fs.FolderDiff.IDifferentNames} message DifferentNames message or plain object to encode
14269
+ * @param {$protobuf.Writer} [writer] Writer to encode to
14270
+ * @returns {$protobuf.Writer} Writer
14271
+ */
14272
+ DifferentNames.encodeDelimited = function encodeDelimited(message, writer) {
14273
+ return this.encode(message, writer).ldelim();
14274
+ };
14275
+
14276
+ /**
14277
+ * Decodes a DifferentNames message from the specified reader or buffer.
14278
+ * @function decode
14279
+ * @memberof fs.FolderDiff.DifferentNames
14280
+ * @static
14281
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
14282
+ * @param {number} [length] Message length if known beforehand
14283
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames
14284
+ * @throws {Error} If the payload is not a reader or valid buffer
14285
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
14286
+ */
14287
+ DifferentNames.decode = function decode(reader, length, error) {
14288
+ if (!(reader instanceof $Reader))
14289
+ reader = $Reader.create(reader);
14290
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.fs.FolderDiff.DifferentNames();
14291
+ while (reader.pos < end) {
14292
+ var tag = reader.uint32();
14293
+ if (tag === error)
14294
+ break;
14295
+ switch (tag >>> 3) {
14296
+ case 1: {
14297
+ message.localName = reader.string();
14298
+ break;
14299
+ }
14300
+ case 2: {
14301
+ message.remoteName = reader.string();
14302
+ break;
14303
+ }
14304
+ default:
14305
+ reader.skipType(tag & 7);
14306
+ break;
14307
+ }
14308
+ }
14309
+ return message;
14310
+ };
14311
+
14312
+ /**
14313
+ * Decodes a DifferentNames message from the specified reader or buffer, length delimited.
14314
+ * @function decodeDelimited
14315
+ * @memberof fs.FolderDiff.DifferentNames
14316
+ * @static
14317
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
14318
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames
14319
+ * @throws {Error} If the payload is not a reader or valid buffer
14320
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
14321
+ */
14322
+ DifferentNames.decodeDelimited = function decodeDelimited(reader) {
14323
+ if (!(reader instanceof $Reader))
14324
+ reader = new $Reader(reader);
14325
+ return this.decode(reader, reader.uint32());
14326
+ };
14327
+
14328
+ /**
14329
+ * Verifies a DifferentNames message.
14330
+ * @function verify
14331
+ * @memberof fs.FolderDiff.DifferentNames
14332
+ * @static
14333
+ * @param {Object.<string,*>} message Plain object to verify
14334
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
14335
+ */
14336
+ DifferentNames.verify = function verify(message) {
14337
+ if (typeof message !== "object" || message === null)
14338
+ return "object expected";
14339
+ if (message.localName != null && message.hasOwnProperty("localName"))
14340
+ if (!$util.isString(message.localName))
14341
+ return "localName: string expected";
14342
+ if (message.remoteName != null && message.hasOwnProperty("remoteName"))
14343
+ if (!$util.isString(message.remoteName))
14344
+ return "remoteName: string expected";
14345
+ return null;
14346
+ };
14347
+
14348
+ /**
14349
+ * Creates a DifferentNames message from a plain object. Also converts values to their respective internal types.
14350
+ * @function fromObject
14351
+ * @memberof fs.FolderDiff.DifferentNames
14352
+ * @static
14353
+ * @param {Object.<string,*>} object Plain object
14354
+ * @returns {fs.FolderDiff.DifferentNames} DifferentNames
14355
+ */
14356
+ DifferentNames.fromObject = function fromObject(object) {
14357
+ if (object instanceof $root.fs.FolderDiff.DifferentNames)
14358
+ return object;
14359
+ var message = new $root.fs.FolderDiff.DifferentNames();
14360
+ if (object.localName != null)
14361
+ message.localName = String(object.localName);
14362
+ if (object.remoteName != null)
14363
+ message.remoteName = String(object.remoteName);
14364
+ return message;
14365
+ };
14366
+
14367
+ /**
14368
+ * Creates a plain object from a DifferentNames message. Also converts values to other types if specified.
14369
+ * @function toObject
14370
+ * @memberof fs.FolderDiff.DifferentNames
14371
+ * @static
14372
+ * @param {fs.FolderDiff.DifferentNames} message DifferentNames
14373
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
14374
+ * @returns {Object.<string,*>} Plain object
14375
+ */
14376
+ DifferentNames.toObject = function toObject(message, options) {
14377
+ if (!options)
14378
+ options = {};
14379
+ var object = {};
14380
+ if (options.defaults) {
14381
+ object.localName = "";
14382
+ object.remoteName = "";
14383
+ }
14384
+ if (message.localName != null && message.hasOwnProperty("localName"))
14385
+ object.localName = message.localName;
14386
+ if (message.remoteName != null && message.hasOwnProperty("remoteName"))
14387
+ object.remoteName = message.remoteName;
14388
+ return object;
14389
+ };
14390
+
14391
+ /**
14392
+ * Converts this DifferentNames to JSON.
14393
+ * @function toJSON
14394
+ * @memberof fs.FolderDiff.DifferentNames
14395
+ * @instance
14396
+ * @returns {Object.<string,*>} JSON object
14397
+ */
14398
+ DifferentNames.prototype.toJSON = function toJSON() {
14399
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
14400
+ };
14401
+
14402
+ /**
14403
+ * Gets the default type url for DifferentNames
14404
+ * @function getTypeUrl
14405
+ * @memberof fs.FolderDiff.DifferentNames
14406
+ * @static
14407
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
14408
+ * @returns {string} The default type url
14409
+ */
14410
+ DifferentNames.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
14411
+ if (typeUrlPrefix === undefined) {
14412
+ typeUrlPrefix = "type.googleapis.com";
14413
+ }
14414
+ return typeUrlPrefix + "/fs.FolderDiff.DifferentNames";
14415
+ };
14416
+
14417
+ return DifferentNames;
14418
+ })();
14419
+
14108
14420
  return FolderDiff;
14109
14421
  })();
14110
14422
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "core-3nweb-client-lib",
3
- "version": "0.43.18",
3
+ "version": "0.43.19",
4
4
  "description": "3NWeb client core library, embeddable into different environments",
5
5
  "main": "build/lib-index.js",
6
6
  "types": "build/lib-index.d.ts",
package/protos/fs.proto CHANGED
@@ -502,6 +502,10 @@ message FolderDiff {
502
502
  repeated file.NameAndXAttrValue in_remote = 2;
503
503
  repeated string name_overlaps = 3;
504
504
  }
505
+ message DifferentNames {
506
+ string local_name = 1;
507
+ string remote_name = 2;
508
+ }
505
509
  uint64 current_version = 1;
506
510
  common.UInt64Value remote_version = 2;
507
511
  repeated ListingEntryMsg in_current = 3;
@@ -510,6 +514,8 @@ message FolderDiff {
510
514
  TimeStamps ctime = 6;
511
515
  TimeStamps mtime = 7;
512
516
  XAttrs xattrs = 8;
517
+ repeated string different_keys = 9;
518
+ repeated DifferentNames different_names = 10;
513
519
  }
514
520
 
515
521
  message RemoteChildRequestBody {