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
@@ -101,7 +101,7 @@ function __spreadArray$1(to, from, pack) {
101
101
  *
102
102
  * ==========================================================================
103
103
  *
104
- * Version 4.0.0-beta.16, Fri Apr 01 2022
104
+ * Version 4.0.0-beta.17, Fri Apr 08 2022
105
105
  *
106
106
  * https://dexie.org
107
107
  *
@@ -5296,160 +5296,16 @@ function overrideParseStoresSpec(origFunc, dexie) {
5296
5296
  return rv;
5297
5297
  };
5298
5298
  }
5299
- var SECONDS = 1000;
5300
- var MINUTES = 60 * SECONDS;
5301
- var myId = randomString(16);
5302
- var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5303
- var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5304
- function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5305
- var _f = _e === void 0 ? {} : _e, awaitRemoteJob = _f.awaitRemoteJob;
5306
- return __awaiter$1(this, void 0, void 0, function () {
5307
- function aquireLock() {
5308
- return __awaiter$1(this, void 0, void 0, function () {
5309
- var gotTheLock, jobDoneObservable, err_1;
5310
- var _this_1 = this;
5311
- return __generator$1(this, function (_e) {
5312
- switch (_e.label) {
5313
- case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5314
- var currentWork;
5315
- return __generator$1(this, function (_e) {
5316
- switch (_e.label) {
5317
- case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5318
- case 1:
5319
- currentWork = _e.sent();
5320
- if (!!currentWork) return [3 /*break*/, 3];
5321
- // No one else is working. Let's record that we are.
5322
- return [4 /*yield*/, jobsTable.add({
5323
- nodeId: myId,
5324
- started: new Date(),
5325
- heartbeat: new Date()
5326
- }, jobName)];
5327
- case 2:
5328
- // No one else is working. Let's record that we are.
5329
- _e.sent();
5330
- return [2 /*return*/, true];
5331
- case 3:
5332
- if (!(currentWork.heartbeat.getTime() <
5333
- Date.now() - GUARDED_JOB_TIMEOUT)) return [3 /*break*/, 5];
5334
- 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!");
5335
- // Now, take over!
5336
- return [4 /*yield*/, jobsTable.put({
5337
- nodeId: myId,
5338
- started: new Date(),
5339
- heartbeat: new Date()
5340
- }, jobName)];
5341
- case 4:
5342
- // Now, take over!
5343
- _e.sent();
5344
- return [2 /*return*/, true];
5345
- case 5: return [2 /*return*/, false];
5346
- }
5347
- });
5348
- }); })];
5349
- case 1:
5350
- gotTheLock = _e.sent();
5351
- if (gotTheLock)
5352
- return [2 /*return*/, true];
5353
- if (!awaitRemoteJob) return [3 /*break*/, 6];
5354
- _e.label = 2;
5355
- case 2:
5356
- _e.trys.push([2, 4, , 6]);
5357
- jobDoneObservable = from$1(liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5358
- return [4 /*yield*/, jobDoneObservable.toPromise()];
5359
- case 3:
5360
- _e.sent();
5361
- return [2 /*return*/, false];
5362
- case 4:
5363
- err_1 = _e.sent();
5364
- if (err_1.name !== 'TimeoutError') {
5365
- throw err_1;
5366
- }
5367
- return [4 /*yield*/, aquireLock()];
5368
- case 5:
5369
- // Timeout stopped us! Try aquire the lock now.
5370
- // It will likely succeed this time unless
5371
- // another client took it.
5372
- return [2 /*return*/, _e.sent()];
5373
- case 6: return [2 /*return*/, false];
5374
- }
5375
- });
5376
- });
5377
- }
5378
- var jobsTable, heartbeat;
5379
- var _this_1 = this;
5380
- return __generator$1(this, function (_g) {
5381
- switch (_g.label) {
5382
- case 0:
5383
- jobsTable = db.table(jobsTableName);
5384
- return [4 /*yield*/, aquireLock()];
5385
- case 1:
5386
- if (!_g.sent()) return [3 /*break*/, 6];
5387
- heartbeat = setInterval(function () {
5388
- jobsTable.update(jobName, function (job) {
5389
- if (job.nodeId === myId) {
5390
- job.heartbeat = new Date();
5391
- }
5392
- });
5393
- }, GUARDED_JOB_HEARTBEAT);
5394
- _g.label = 2;
5395
- case 2:
5396
- _g.trys.push([2, , 4, 6]);
5397
- return [4 /*yield*/, job()];
5398
- case 3: return [2 /*return*/, _g.sent()];
5399
- case 4:
5400
- // Stop heartbeat
5401
- clearInterval(heartbeat);
5402
- // Remove the persisted job state:
5403
- return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5404
- var currentWork;
5405
- return __generator$1(this, function (_e) {
5406
- switch (_e.label) {
5407
- case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5408
- case 1:
5409
- currentWork = _e.sent();
5410
- if (currentWork && currentWork.nodeId === myId) {
5411
- jobsTable.delete(jobName);
5412
- }
5413
- return [2 /*return*/];
5414
- }
5415
- });
5416
- }); })];
5417
- case 5:
5418
- // Remove the persisted job state:
5419
- _g.sent();
5420
- return [7 /*endfinally*/];
5421
- case 6: return [2 /*return*/];
5422
- }
5423
- });
5424
- });
5425
- }
5426
5299
  function performInitialSync(db, cloudOptions, cloudSchema) {
5427
5300
  return __awaiter$1(this, void 0, void 0, function () {
5428
- var _this_1 = this;
5429
5301
  return __generator$1(this, function (_e) {
5430
5302
  switch (_e.label) {
5431
5303
  case 0:
5432
- console.debug("Performing initial sync");
5433
- return [4 /*yield*/, performGuardedJob(db, 'initialSync', '$jobs', function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5434
- var syncState;
5435
- return __generator$1(this, function (_e) {
5436
- switch (_e.label) {
5437
- case 0: return [4 /*yield*/, db.getPersistedSyncState()];
5438
- case 1:
5439
- syncState = _e.sent();
5440
- if (!!(syncState === null || syncState === void 0 ? void 0 : syncState.initiallySynced)) return [3 /*break*/, 3];
5441
- return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5442
- case 2:
5443
- _e.sent();
5444
- _e.label = 3;
5445
- case 3: return [2 /*return*/];
5446
- }
5447
- });
5448
- }); }, { awaitRemoteJob: true } // Don't return until the job is done!
5449
- )];
5304
+ console.debug('Performing initial sync');
5305
+ return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5450
5306
  case 1:
5451
5307
  _e.sent();
5452
- console.debug("Done initial sync");
5308
+ console.debug('Done initial sync');
5453
5309
  return [2 /*return*/];
5454
5310
  }
5455
5311
  });
@@ -5885,6 +5741,135 @@ function isSyncNeeded(db) {
5885
5741
  });
5886
5742
  });
5887
5743
  }
5744
+ var SECONDS = 1000;
5745
+ var MINUTES = 60 * SECONDS;
5746
+ var myId = randomString(16);
5747
+ var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5748
+ var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5749
+ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5750
+ var _f = _e === void 0 ? {} : _e, awaitRemoteJob = _f.awaitRemoteJob;
5751
+ return __awaiter$1(this, void 0, void 0, function () {
5752
+ function aquireLock() {
5753
+ return __awaiter$1(this, void 0, void 0, function () {
5754
+ var gotTheLock, jobDoneObservable, err_1;
5755
+ var _this_1 = this;
5756
+ return __generator$1(this, function (_e) {
5757
+ switch (_e.label) {
5758
+ case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5759
+ var currentWork;
5760
+ return __generator$1(this, function (_e) {
5761
+ switch (_e.label) {
5762
+ case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5763
+ case 1:
5764
+ currentWork = _e.sent();
5765
+ if (!!currentWork) return [3 /*break*/, 3];
5766
+ // No one else is working. Let's record that we are.
5767
+ return [4 /*yield*/, jobsTable.add({
5768
+ nodeId: myId,
5769
+ started: new Date(),
5770
+ heartbeat: new Date()
5771
+ }, jobName)];
5772
+ case 2:
5773
+ // No one else is working. Let's record that we are.
5774
+ _e.sent();
5775
+ return [2 /*return*/, true];
5776
+ case 3:
5777
+ if (!(currentWork.heartbeat.getTime() <
5778
+ Date.now() - GUARDED_JOB_TIMEOUT)) return [3 /*break*/, 5];
5779
+ 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!");
5780
+ // Now, take over!
5781
+ return [4 /*yield*/, jobsTable.put({
5782
+ nodeId: myId,
5783
+ started: new Date(),
5784
+ heartbeat: new Date()
5785
+ }, jobName)];
5786
+ case 4:
5787
+ // Now, take over!
5788
+ _e.sent();
5789
+ return [2 /*return*/, true];
5790
+ case 5: return [2 /*return*/, false];
5791
+ }
5792
+ });
5793
+ }); })];
5794
+ case 1:
5795
+ gotTheLock = _e.sent();
5796
+ if (gotTheLock)
5797
+ return [2 /*return*/, true];
5798
+ if (!awaitRemoteJob) return [3 /*break*/, 6];
5799
+ _e.label = 2;
5800
+ case 2:
5801
+ _e.trys.push([2, 4, , 6]);
5802
+ jobDoneObservable = from$1(liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5803
+ return [4 /*yield*/, jobDoneObservable.toPromise()];
5804
+ case 3:
5805
+ _e.sent();
5806
+ return [2 /*return*/, false];
5807
+ case 4:
5808
+ err_1 = _e.sent();
5809
+ if (err_1.name !== 'TimeoutError') {
5810
+ throw err_1;
5811
+ }
5812
+ return [4 /*yield*/, aquireLock()];
5813
+ case 5:
5814
+ // Timeout stopped us! Try aquire the lock now.
5815
+ // It will likely succeed this time unless
5816
+ // another client took it.
5817
+ return [2 /*return*/, _e.sent()];
5818
+ case 6: return [2 /*return*/, false];
5819
+ }
5820
+ });
5821
+ });
5822
+ }
5823
+ var jobsTable, heartbeat;
5824
+ var _this_1 = this;
5825
+ return __generator$1(this, function (_g) {
5826
+ switch (_g.label) {
5827
+ case 0:
5828
+ jobsTable = db.table(jobsTableName);
5829
+ return [4 /*yield*/, aquireLock()];
5830
+ case 1:
5831
+ if (!_g.sent()) return [3 /*break*/, 6];
5832
+ heartbeat = setInterval(function () {
5833
+ jobsTable.update(jobName, function (job) {
5834
+ if (job.nodeId === myId) {
5835
+ job.heartbeat = new Date();
5836
+ }
5837
+ });
5838
+ }, GUARDED_JOB_HEARTBEAT);
5839
+ _g.label = 2;
5840
+ case 2:
5841
+ _g.trys.push([2, , 4, 6]);
5842
+ return [4 /*yield*/, job()];
5843
+ case 3: return [2 /*return*/, _g.sent()];
5844
+ case 4:
5845
+ // Stop heartbeat
5846
+ clearInterval(heartbeat);
5847
+ // Remove the persisted job state:
5848
+ return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5849
+ var currentWork;
5850
+ return __generator$1(this, function (_e) {
5851
+ switch (_e.label) {
5852
+ case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5853
+ case 1:
5854
+ currentWork = _e.sent();
5855
+ if (!(currentWork && currentWork.nodeId === myId)) return [3 /*break*/, 3];
5856
+ return [4 /*yield*/, jobsTable.delete(jobName)];
5857
+ case 2:
5858
+ _e.sent();
5859
+ _e.label = 3;
5860
+ case 3: return [2 /*return*/];
5861
+ }
5862
+ });
5863
+ }); })];
5864
+ case 5:
5865
+ // Remove the persisted job state:
5866
+ _g.sent();
5867
+ return [7 /*endfinally*/];
5868
+ case 6: return [2 /*return*/];
5869
+ }
5870
+ });
5871
+ });
5872
+ }
5888
5873
  var ongoingSyncs = new WeakMap();
5889
5874
  function syncIfPossible(db, cloudOptions, cloudSchema, options) {
5890
5875
  var ongoing = ongoingSyncs.get(db);
@@ -6815,7 +6800,7 @@ function dexieCloud(dexie) {
6815
6800
  currentUserEmitter.next(UNAUTHORIZED_USER);
6816
6801
  });
6817
6802
  dexie.cloud = {
6818
- version: '4.0.0-beta.16',
6803
+ version: '4.0.0-beta.17',
6819
6804
  options: __assign({}, DEFAULT_OPTIONS),
6820
6805
  schema: null,
6821
6806
  serverState: null,
@@ -7145,7 +7130,7 @@ function dexieCloud(dexie) {
7145
7130
  });
7146
7131
  }
7147
7132
  }
7148
- dexieCloud.version = '4.0.0-beta.16';
7133
+ dexieCloud.version = '4.0.0-beta.17';
7149
7134
  Dexie.Cloud = dexieCloud;
7150
7135
 
7151
7136
  export { dexieCloud as default, dexieCloud, getTiedObjectId, getTiedRealmId };