@vrtmrz/livesync-commonlib 0.2.0 → 0.2.2

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 (49) hide show
  1. package/README.md +43 -0
  2. package/dist/API/processSetting.d.ts +2 -0
  3. package/dist/common/models/setting.const.defaults.js +2 -0
  4. package/dist/common/models/setting.const.qr.js +3 -0
  5. package/dist/common/models/setting.policy.d.ts +8 -0
  6. package/dist/common/models/setting.policy.js +2 -0
  7. package/dist/common/models/setting.type.d.ts +6 -0
  8. package/dist/common/models/shared.definition.d.ts +20 -0
  9. package/dist/common/models/tweak.definition.d.ts +2 -0
  10. package/dist/common/settingConstants.d.ts +2 -0
  11. package/dist/common/settingConstants.js +10 -2
  12. package/dist/interfaces/FileHandler.d.ts +7 -1
  13. package/dist/interfaces/StorageAccess.d.ts +2 -0
  14. package/dist/interfaces/StorageEventManager.d.ts +7 -0
  15. package/dist/interfaces/StorageEventManager.js +11 -0
  16. package/dist/managers/StorageEventManager.d.ts +20 -10
  17. package/dist/managers/StorageEventManager.js +268 -189
  18. package/dist/replication/LiveSyncAbstractReplicator.d.ts +2 -0
  19. package/dist/replication/LiveSyncAbstractReplicator.js +5 -2
  20. package/dist/replication/couchdb/LiveSyncReplicator.d.ts +6 -0
  21. package/dist/replication/couchdb/LiveSyncReplicator.js +39 -2
  22. package/dist/replication/couchdb/replicationProgress.d.ts +6 -0
  23. package/dist/replication/couchdb/replicationProgress.js +105 -0
  24. package/dist/replication/index.d.ts +1 -0
  25. package/dist/replication/trystero/TrysteroReplicator.d.ts +4 -0
  26. package/dist/serviceFeatures/offlineScanner.d.ts +4 -4
  27. package/dist/serviceFeatures/offlineScanner.js +30 -13
  28. package/dist/serviceFeatures/prepareDatabaseForUse.d.ts +3 -2
  29. package/dist/serviceFeatures/prepareDatabaseForUse.js +5 -4
  30. package/dist/serviceModules/ServiceFileAccessBase.d.ts +1 -0
  31. package/dist/serviceModules/ServiceFileAccessBase.js +8 -0
  32. package/dist/serviceModules/ServiceFileHandlerBase.d.ts +9 -5
  33. package/dist/serviceModules/ServiceFileHandlerBase.js +96 -38
  34. package/dist/services/base/AppLifecycleService.js +1 -1
  35. package/dist/services/base/ControlService.js +6 -2
  36. package/dist/services/base/DatabaseEventService.d.ts +1 -1
  37. package/dist/services/base/FileProcessingService.d.ts +7 -1
  38. package/dist/services/base/FileProcessingService.js +9 -1
  39. package/dist/services/base/IService.d.ts +12 -4
  40. package/dist/services/base/ReplicatorService.d.ts +1 -0
  41. package/dist/services/base/VaultScanResult.d.ts +5 -0
  42. package/dist/services/base/VaultService.d.ts +1 -1
  43. package/dist/services/lib/HandlerUtils.d.ts +60 -0
  44. package/dist/services/lib/HandlerUtils.js +46 -0
  45. package/dist/worker/bgWorker.js +1 -1
  46. package/docs/offline-scanner.md +23 -13
  47. package/docs/settings-lifecycle.md +2 -0
  48. package/docs/storage-events-and-reflection.md +113 -10
  49. package/package.json +2 -2
@@ -326,6 +326,30 @@ class FirstResultHandler extends MultiBinder {
326
326
  return false;
327
327
  }
328
328
  }
329
+ class FirstHandledHandler extends MultiBinder {
330
+ /**
331
+ * Whether at least one callback is currently registered.
332
+ */
333
+ get hasHandlers() {
334
+ return this._callbackMap.size > 0;
335
+ }
336
+ /**
337
+ * Invokes handlers until one returns a completed or veto outcome.
338
+ * @param args The arguments to pass to the handlers.
339
+ * @returns The first handled outcome, or a not-applicable outcome when no handler applies.
340
+ * @throws Any synchronous callback error or rejected callback value, unchanged.
341
+ */
342
+ async invoke(...args) {
343
+ const callbacks = [...this._callbacks];
344
+ for (const callback of callbacks) {
345
+ const outcome = await Promise.resolve(callback(...args));
346
+ if (outcome.kind !== "not-applicable") {
347
+ return outcome;
348
+ }
349
+ }
350
+ return { kind: "not-applicable" };
351
+ }
352
+ }
329
353
  function getMultipleBound(handler) {
330
354
  const _handler = "invoke" in handler ? handler.invoke : handler.dispatch;
331
355
  const __handler = _handler.bind(handler);
@@ -367,6 +391,17 @@ function firstResultFunction(name) {
367
391
  const handler = new FirstResultHandler(name ?? "firstResultFunction");
368
392
  return getMultipleBound(handler);
369
393
  }
394
+ function firstHandledFunction(name) {
395
+ const handler = new FirstHandledHandler(
396
+ name ?? "firstHandledFunction"
397
+ );
398
+ const toHandlerCallback = (callback) => callback;
399
+ const bound = (...args) => handler.invoke(...args);
400
+ bound.addHandler = (callback, priority) => handler.addHandler(toHandlerCallback(callback), priority);
401
+ bound.removeHandler = (callback) => handler.removeHandler(toHandlerCallback(callback));
402
+ Object.defineProperty(bound, "hasHandlers", { get: () => handler.hasHandlers });
403
+ return bound;
404
+ }
370
405
  function dispatchParallelFunction(name) {
371
406
  const handler = new DispatchParallel(
372
407
  name ?? "dispatchParallelFunction"
@@ -452,6 +487,15 @@ function handlers() {
452
487
  firstResult(name) {
453
488
  return firstResultFunction(String(name));
454
489
  },
490
+ /**
491
+ * Create a handler that invokes registered handlers until one completes or vetoes.
492
+ * Callback errors and rejections propagate unchanged.
493
+ * @param name The name of the callback on `T`.
494
+ * @returns A bound handler with a live `hasHandlers` property.
495
+ */
496
+ firstHandled(name) {
497
+ return firstHandledFunction(String(name));
498
+ },
455
499
  /**
456
500
  * Create a handler that invokes all added handler functions in parallel.
457
501
  * @param name
@@ -481,6 +525,7 @@ export {
481
525
  BooleanHandlerBase,
482
526
  Dispatch,
483
527
  DispatchParallel,
528
+ FirstHandledHandler,
484
529
  FirstResultHandler,
485
530
  LazyBinder,
486
531
  MultiBinder,
@@ -494,6 +539,7 @@ export {
494
539
  bailFirstFailureWithResultFunction,
495
540
  bindableFunction,
496
541
  dispatchParallelFunction,
542
+ firstHandledFunction,
497
543
  firstResultFunction,
498
544
  handlers,
499
545
  lazyBindableFunction