dexie-cloud-addon 4.0.0-beta.16 → 4.0.0-beta.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.
Files changed (39) hide show
  1. package/dist/modern/dexie-cloud-addon.js +96 -104
  2. package/dist/modern/dexie-cloud-addon.js.map +1 -1
  3. package/dist/modern/dexie-cloud-addon.min.js +1 -1
  4. package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
  5. package/dist/modern/service-worker.js +95 -103
  6. package/dist/modern/service-worker.js.map +1 -1
  7. package/dist/modern/service-worker.min.js +1 -1
  8. package/dist/modern/service-worker.min.js.map +1 -1
  9. package/dist/module-es5/dexie-cloud-addon.js +135 -150
  10. package/dist/module-es5/dexie-cloud-addon.js.map +1 -1
  11. package/dist/module-es5/dexie-cloud-addon.min.js +1 -1
  12. package/dist/module-es5/dexie-cloud-addon.min.js.map +1 -1
  13. package/dist/umd/dexie-cloud-addon.js +135 -150
  14. package/dist/umd/dexie-cloud-addon.js.map +1 -1
  15. package/dist/umd/dexie-cloud-addon.min.js +1 -1
  16. package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
  17. package/dist/umd/service-worker.js +94 -102
  18. package/dist/umd/service-worker.js.map +1 -1
  19. package/dist/umd/service-worker.min.js +1 -1
  20. package/dist/umd/service-worker.min.js.map +1 -1
  21. package/dist/umd-modern/dexie-cloud-addon.js +92 -100
  22. package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
  23. package/package.json +1 -1
  24. package/dist/types/DexieCloudEntity.d.ts +0 -8
  25. package/dist/types/WebSocketStatus.d.ts +0 -1
  26. package/dist/types/createMyMembersObservable.d.ts +0 -14
  27. package/dist/types/currentUserObservable.d.ts +0 -3
  28. package/dist/types/helpers/BroadcastedLocalEvent.d.ts +0 -8
  29. package/dist/types/helpers/visibleState.d.ts +0 -1
  30. package/dist/types/permissionsLookup.d.ts +0 -9
  31. package/dist/types/permissionsLookupObservable.d.ts +0 -14
  32. package/dist/types/sync/globalizePrivateIds.d.ts +0 -4
  33. package/dist/types/sync/syncServerToClientOnly.d.ts +0 -3
  34. package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
  35. package/dist/types/types/ConnectionStatus.d.ts +0 -0
  36. package/dist/types/types/LoginState.d.ts +0 -41
  37. package/dist/types/types/SyncConnectionStatus.d.ts +0 -1
  38. package/dist/types/types/SyncFlowStatus.d.ts +0 -6
  39. package/dist/types/types/SyncStatus.d.ts +0 -6
@@ -108,7 +108,7 @@
108
108
  *
109
109
  * ==========================================================================
110
110
  *
111
- * Version 4.0.0-beta.16, Fri Apr 01 2022
111
+ * Version 4.0.0-beta.17, Fri Apr 08 2022
112
112
  *
113
113
  * https://dexie.org
114
114
  *
@@ -5303,160 +5303,16 @@
5303
5303
  return rv;
5304
5304
  };
5305
5305
  }
5306
- var SECONDS = 1000;
5307
- var MINUTES = 60 * SECONDS;
5308
- var myId = randomString(16);
5309
- var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5310
- var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5311
- function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5312
- var _f = _e === void 0 ? {} : _e, awaitRemoteJob = _f.awaitRemoteJob;
5313
- return __awaiter$1(this, void 0, void 0, function () {
5314
- function aquireLock() {
5315
- return __awaiter$1(this, void 0, void 0, function () {
5316
- var gotTheLock, jobDoneObservable, err_1;
5317
- var _this_1 = this;
5318
- return __generator$1(this, function (_e) {
5319
- switch (_e.label) {
5320
- case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5321
- var currentWork;
5322
- return __generator$1(this, function (_e) {
5323
- switch (_e.label) {
5324
- case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5325
- case 1:
5326
- currentWork = _e.sent();
5327
- if (!!currentWork) return [3 /*break*/, 3];
5328
- // No one else is working. Let's record that we are.
5329
- return [4 /*yield*/, jobsTable.add({
5330
- nodeId: myId,
5331
- started: new Date(),
5332
- heartbeat: new Date()
5333
- }, jobName)];
5334
- case 2:
5335
- // No one else is working. Let's record that we are.
5336
- _e.sent();
5337
- return [2 /*return*/, true];
5338
- case 3:
5339
- if (!(currentWork.heartbeat.getTime() <
5340
- Date.now() - GUARDED_JOB_TIMEOUT)) return [3 /*break*/, 5];
5341
- console.warn("Latest ".concat(jobName, " worker seem to have died.\n"), "The dead job started:", currentWork.started, "\n", "Last heart beat was:", currentWork.heartbeat, '\n', "We're now taking over!");
5342
- // Now, take over!
5343
- return [4 /*yield*/, jobsTable.put({
5344
- nodeId: myId,
5345
- started: new Date(),
5346
- heartbeat: new Date()
5347
- }, jobName)];
5348
- case 4:
5349
- // Now, take over!
5350
- _e.sent();
5351
- return [2 /*return*/, true];
5352
- case 5: return [2 /*return*/, false];
5353
- }
5354
- });
5355
- }); })];
5356
- case 1:
5357
- gotTheLock = _e.sent();
5358
- if (gotTheLock)
5359
- return [2 /*return*/, true];
5360
- if (!awaitRemoteJob) return [3 /*break*/, 6];
5361
- _e.label = 2;
5362
- case 2:
5363
- _e.trys.push([2, 4, , 6]);
5364
- jobDoneObservable = rxjs.from(Dexie.liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5365
- return [4 /*yield*/, jobDoneObservable.toPromise()];
5366
- case 3:
5367
- _e.sent();
5368
- return [2 /*return*/, false];
5369
- case 4:
5370
- err_1 = _e.sent();
5371
- if (err_1.name !== 'TimeoutError') {
5372
- throw err_1;
5373
- }
5374
- return [4 /*yield*/, aquireLock()];
5375
- case 5:
5376
- // Timeout stopped us! Try aquire the lock now.
5377
- // It will likely succeed this time unless
5378
- // another client took it.
5379
- return [2 /*return*/, _e.sent()];
5380
- case 6: return [2 /*return*/, false];
5381
- }
5382
- });
5383
- });
5384
- }
5385
- var jobsTable, heartbeat;
5386
- var _this_1 = this;
5387
- return __generator$1(this, function (_g) {
5388
- switch (_g.label) {
5389
- case 0:
5390
- jobsTable = db.table(jobsTableName);
5391
- return [4 /*yield*/, aquireLock()];
5392
- case 1:
5393
- if (!_g.sent()) return [3 /*break*/, 6];
5394
- heartbeat = setInterval(function () {
5395
- jobsTable.update(jobName, function (job) {
5396
- if (job.nodeId === myId) {
5397
- job.heartbeat = new Date();
5398
- }
5399
- });
5400
- }, GUARDED_JOB_HEARTBEAT);
5401
- _g.label = 2;
5402
- case 2:
5403
- _g.trys.push([2, , 4, 6]);
5404
- return [4 /*yield*/, job()];
5405
- case 3: return [2 /*return*/, _g.sent()];
5406
- case 4:
5407
- // Stop heartbeat
5408
- clearInterval(heartbeat);
5409
- // Remove the persisted job state:
5410
- return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5411
- var currentWork;
5412
- return __generator$1(this, function (_e) {
5413
- switch (_e.label) {
5414
- case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5415
- case 1:
5416
- currentWork = _e.sent();
5417
- if (currentWork && currentWork.nodeId === myId) {
5418
- jobsTable.delete(jobName);
5419
- }
5420
- return [2 /*return*/];
5421
- }
5422
- });
5423
- }); })];
5424
- case 5:
5425
- // Remove the persisted job state:
5426
- _g.sent();
5427
- return [7 /*endfinally*/];
5428
- case 6: return [2 /*return*/];
5429
- }
5430
- });
5431
- });
5432
- }
5433
5306
  function performInitialSync(db, cloudOptions, cloudSchema) {
5434
5307
  return __awaiter$1(this, void 0, void 0, function () {
5435
- var _this_1 = this;
5436
5308
  return __generator$1(this, function (_e) {
5437
5309
  switch (_e.label) {
5438
5310
  case 0:
5439
- console.debug("Performing initial sync");
5440
- return [4 /*yield*/, performGuardedJob(db, 'initialSync', '$jobs', function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5441
- var syncState;
5442
- return __generator$1(this, function (_e) {
5443
- switch (_e.label) {
5444
- case 0: return [4 /*yield*/, db.getPersistedSyncState()];
5445
- case 1:
5446
- syncState = _e.sent();
5447
- if (!!(syncState === null || syncState === void 0 ? void 0 : syncState.initiallySynced)) return [3 /*break*/, 3];
5448
- return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5449
- case 2:
5450
- _e.sent();
5451
- _e.label = 3;
5452
- case 3: return [2 /*return*/];
5453
- }
5454
- });
5455
- }); }, { awaitRemoteJob: true } // Don't return until the job is done!
5456
- )];
5311
+ console.debug('Performing initial sync');
5312
+ return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5457
5313
  case 1:
5458
5314
  _e.sent();
5459
- console.debug("Done initial sync");
5315
+ console.debug('Done initial sync');
5460
5316
  return [2 /*return*/];
5461
5317
  }
5462
5318
  });
@@ -5892,6 +5748,135 @@
5892
5748
  });
5893
5749
  });
5894
5750
  }
5751
+ var SECONDS = 1000;
5752
+ var MINUTES = 60 * SECONDS;
5753
+ var myId = randomString(16);
5754
+ var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5755
+ var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5756
+ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5757
+ var _f = _e === void 0 ? {} : _e, awaitRemoteJob = _f.awaitRemoteJob;
5758
+ return __awaiter$1(this, void 0, void 0, function () {
5759
+ function aquireLock() {
5760
+ return __awaiter$1(this, void 0, void 0, function () {
5761
+ var gotTheLock, jobDoneObservable, err_1;
5762
+ var _this_1 = this;
5763
+ return __generator$1(this, function (_e) {
5764
+ switch (_e.label) {
5765
+ case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5766
+ var currentWork;
5767
+ return __generator$1(this, function (_e) {
5768
+ switch (_e.label) {
5769
+ case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5770
+ case 1:
5771
+ currentWork = _e.sent();
5772
+ if (!!currentWork) return [3 /*break*/, 3];
5773
+ // No one else is working. Let's record that we are.
5774
+ return [4 /*yield*/, jobsTable.add({
5775
+ nodeId: myId,
5776
+ started: new Date(),
5777
+ heartbeat: new Date()
5778
+ }, jobName)];
5779
+ case 2:
5780
+ // No one else is working. Let's record that we are.
5781
+ _e.sent();
5782
+ return [2 /*return*/, true];
5783
+ case 3:
5784
+ if (!(currentWork.heartbeat.getTime() <
5785
+ Date.now() - GUARDED_JOB_TIMEOUT)) return [3 /*break*/, 5];
5786
+ console.warn("Latest ".concat(jobName, " worker seem to have died.\n"), "The dead job started:", currentWork.started, "\n", "Last heart beat was:", currentWork.heartbeat, '\n', "We're now taking over!");
5787
+ // Now, take over!
5788
+ return [4 /*yield*/, jobsTable.put({
5789
+ nodeId: myId,
5790
+ started: new Date(),
5791
+ heartbeat: new Date()
5792
+ }, jobName)];
5793
+ case 4:
5794
+ // Now, take over!
5795
+ _e.sent();
5796
+ return [2 /*return*/, true];
5797
+ case 5: return [2 /*return*/, false];
5798
+ }
5799
+ });
5800
+ }); })];
5801
+ case 1:
5802
+ gotTheLock = _e.sent();
5803
+ if (gotTheLock)
5804
+ return [2 /*return*/, true];
5805
+ if (!awaitRemoteJob) return [3 /*break*/, 6];
5806
+ _e.label = 2;
5807
+ case 2:
5808
+ _e.trys.push([2, 4, , 6]);
5809
+ jobDoneObservable = rxjs.from(Dexie.liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5810
+ return [4 /*yield*/, jobDoneObservable.toPromise()];
5811
+ case 3:
5812
+ _e.sent();
5813
+ return [2 /*return*/, false];
5814
+ case 4:
5815
+ err_1 = _e.sent();
5816
+ if (err_1.name !== 'TimeoutError') {
5817
+ throw err_1;
5818
+ }
5819
+ return [4 /*yield*/, aquireLock()];
5820
+ case 5:
5821
+ // Timeout stopped us! Try aquire the lock now.
5822
+ // It will likely succeed this time unless
5823
+ // another client took it.
5824
+ return [2 /*return*/, _e.sent()];
5825
+ case 6: return [2 /*return*/, false];
5826
+ }
5827
+ });
5828
+ });
5829
+ }
5830
+ var jobsTable, heartbeat;
5831
+ var _this_1 = this;
5832
+ return __generator$1(this, function (_g) {
5833
+ switch (_g.label) {
5834
+ case 0:
5835
+ jobsTable = db.table(jobsTableName);
5836
+ return [4 /*yield*/, aquireLock()];
5837
+ case 1:
5838
+ if (!_g.sent()) return [3 /*break*/, 6];
5839
+ heartbeat = setInterval(function () {
5840
+ jobsTable.update(jobName, function (job) {
5841
+ if (job.nodeId === myId) {
5842
+ job.heartbeat = new Date();
5843
+ }
5844
+ });
5845
+ }, GUARDED_JOB_HEARTBEAT);
5846
+ _g.label = 2;
5847
+ case 2:
5848
+ _g.trys.push([2, , 4, 6]);
5849
+ return [4 /*yield*/, job()];
5850
+ case 3: return [2 /*return*/, _g.sent()];
5851
+ case 4:
5852
+ // Stop heartbeat
5853
+ clearInterval(heartbeat);
5854
+ // Remove the persisted job state:
5855
+ return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5856
+ var currentWork;
5857
+ return __generator$1(this, function (_e) {
5858
+ switch (_e.label) {
5859
+ case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5860
+ case 1:
5861
+ currentWork = _e.sent();
5862
+ if (!(currentWork && currentWork.nodeId === myId)) return [3 /*break*/, 3];
5863
+ return [4 /*yield*/, jobsTable.delete(jobName)];
5864
+ case 2:
5865
+ _e.sent();
5866
+ _e.label = 3;
5867
+ case 3: return [2 /*return*/];
5868
+ }
5869
+ });
5870
+ }); })];
5871
+ case 5:
5872
+ // Remove the persisted job state:
5873
+ _g.sent();
5874
+ return [7 /*endfinally*/];
5875
+ case 6: return [2 /*return*/];
5876
+ }
5877
+ });
5878
+ });
5879
+ }
5895
5880
  var ongoingSyncs = new WeakMap();
5896
5881
  function syncIfPossible(db, cloudOptions, cloudSchema, options) {
5897
5882
  var ongoing = ongoingSyncs.get(db);
@@ -6822,7 +6807,7 @@
6822
6807
  currentUserEmitter.next(UNAUTHORIZED_USER);
6823
6808
  });
6824
6809
  dexie.cloud = {
6825
- version: '4.0.0-beta.16',
6810
+ version: '4.0.0-beta.17',
6826
6811
  options: __assign({}, DEFAULT_OPTIONS),
6827
6812
  schema: null,
6828
6813
  serverState: null,
@@ -7152,7 +7137,7 @@
7152
7137
  });
7153
7138
  }
7154
7139
  }
7155
- dexieCloud.version = '4.0.0-beta.16';
7140
+ dexieCloud.version = '4.0.0-beta.17';
7156
7141
  Dexie__default["default"].Cloud = dexieCloud;
7157
7142
 
7158
7143
  exports["default"] = dexieCloud;