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.
- package/dist/modern/dexie-cloud-addon.js +96 -104
- package/dist/modern/dexie-cloud-addon.js.map +1 -1
- package/dist/modern/dexie-cloud-addon.min.js +1 -1
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/service-worker.js +95 -103
- package/dist/modern/service-worker.js.map +1 -1
- package/dist/modern/service-worker.min.js +1 -1
- package/dist/modern/service-worker.min.js.map +1 -1
- package/dist/module-es5/dexie-cloud-addon.js +135 -150
- package/dist/module-es5/dexie-cloud-addon.js.map +1 -1
- package/dist/module-es5/dexie-cloud-addon.min.js +1 -1
- package/dist/module-es5/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/dexie-cloud-addon.js +135 -150
- package/dist/umd/dexie-cloud-addon.js.map +1 -1
- package/dist/umd/dexie-cloud-addon.min.js +1 -1
- package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/service-worker.js +94 -102
- package/dist/umd/service-worker.js.map +1 -1
- package/dist/umd/service-worker.min.js +1 -1
- package/dist/umd/service-worker.min.js.map +1 -1
- package/dist/umd-modern/dexie-cloud-addon.js +92 -100
- package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
- package/package.json +1 -1
- package/dist/types/DexieCloudEntity.d.ts +0 -8
- package/dist/types/WebSocketStatus.d.ts +0 -1
- package/dist/types/createMyMembersObservable.d.ts +0 -14
- package/dist/types/currentUserObservable.d.ts +0 -3
- package/dist/types/helpers/BroadcastedLocalEvent.d.ts +0 -8
- package/dist/types/helpers/visibleState.d.ts +0 -1
- package/dist/types/permissionsLookup.d.ts +0 -9
- package/dist/types/permissionsLookupObservable.d.ts +0 -14
- package/dist/types/sync/globalizePrivateIds.d.ts +0 -4
- package/dist/types/sync/syncServerToClientOnly.d.ts +0 -3
- package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
- package/dist/types/types/ConnectionStatus.d.ts +0 -0
- package/dist/types/types/LoginState.d.ts +0 -41
- package/dist/types/types/SyncConnectionStatus.d.ts +0 -1
- package/dist/types/types/SyncFlowStatus.d.ts +0 -6
- 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.
|
|
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(
|
|
5433
|
-
return [4 /*yield*/,
|
|
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(
|
|
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.
|
|
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.
|
|
7133
|
+
dexieCloud.version = '4.0.0-beta.17';
|
|
7149
7134
|
Dexie.Cloud = dexieCloud;
|
|
7150
7135
|
|
|
7151
7136
|
export { dexieCloud as default, dexieCloud, getTiedObjectId, getTiedRealmId };
|