dexie-cloud-addon 4.0.0-beta.18 → 4.0.0-beta.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.
- package/dist/modern/dexie-cloud-addon.js +26 -20
- 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 +30 -21
- 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 +571 -564
- 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/types/DexieCloudAPI.d.ts +1 -0
- package/dist/types/DexieCloudEntity.d.ts +8 -0
- package/dist/types/DexieCloudOptions.d.ts +1 -0
- package/dist/types/WebSocketStatus.d.ts +1 -0
- package/dist/types/createMyMembersObservable.d.ts +14 -0
- package/dist/types/currentUserObservable.d.ts +3 -0
- package/dist/types/helpers/BroadcastedLocalEvent.d.ts +8 -0
- package/dist/types/helpers/visibleState.d.ts +1 -0
- package/dist/types/permissionsLookup.d.ts +9 -0
- package/dist/types/permissionsLookupObservable.d.ts +14 -0
- package/dist/types/sync/globalizePrivateIds.d.ts +4 -0
- package/dist/types/sync/syncServerToClientOnly.d.ts +3 -0
- 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 +41 -0
- package/dist/types/types/SyncConnectionStatus.d.ts +1 -0
- package/dist/types/types/SyncFlowStatus.d.ts +6 -0
- package/dist/types/types/SyncStatus.d.ts +6 -0
- package/dist/umd/dexie-cloud-addon.js +571 -564
- 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 +30 -21
- 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 +23 -17
- package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
- package/package.json +1 -1
|
@@ -5186,16 +5186,19 @@
|
|
|
5186
5186
|
function _syncIfPossible() {
|
|
5187
5187
|
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5188
5188
|
try {
|
|
5189
|
-
if (db.cloud.
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
}
|
|
5189
|
+
if (db.cloud.isServiceWorkerDB) {
|
|
5190
|
+
// We are the dedicated sync SW:
|
|
5191
|
+
yield sync(db, cloudOptions, cloudSchema, options);
|
|
5193
5192
|
}
|
|
5194
|
-
else {
|
|
5193
|
+
else if (!db.cloud.usingServiceWorker) {
|
|
5195
5194
|
// We use a flow that is better suited for the case when multiple workers want to
|
|
5196
5195
|
// do the same thing.
|
|
5197
5196
|
yield performGuardedJob(db, CURRENT_SYNC_WORKER, '$jobs', () => sync(db, cloudOptions, cloudSchema, options));
|
|
5198
5197
|
}
|
|
5198
|
+
else {
|
|
5199
|
+
assert(false);
|
|
5200
|
+
throw new Error('Internal _syncIfPossible() - invalid precondition - should not have been called.');
|
|
5201
|
+
}
|
|
5199
5202
|
ongoingSyncs.delete(db);
|
|
5200
5203
|
console.debug('Done sync');
|
|
5201
5204
|
}
|
|
@@ -5829,7 +5832,7 @@
|
|
|
5829
5832
|
currentUserEmitter.next(UNAUTHORIZED_USER);
|
|
5830
5833
|
});
|
|
5831
5834
|
dexie.cloud = {
|
|
5832
|
-
version: '4.0.0-beta.
|
|
5835
|
+
version: '4.0.0-beta.19',
|
|
5833
5836
|
options: Object.assign({}, DEFAULT_OPTIONS),
|
|
5834
5837
|
schema: null,
|
|
5835
5838
|
serverState: null,
|
|
@@ -5921,15 +5924,17 @@
|
|
|
5921
5924
|
dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
|
|
5922
5925
|
dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
|
|
5923
5926
|
function onDbReady(dexie) {
|
|
5924
|
-
var _a, _b, _c, _d, _e, _f;
|
|
5927
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
5925
5928
|
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5926
5929
|
closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
|
|
5927
5930
|
const db = DexieCloudDB(dexie);
|
|
5928
5931
|
// Setup default GUI:
|
|
5929
|
-
if (
|
|
5932
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
5930
5933
|
if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
|
|
5931
5934
|
subscriptions.push(setupDefaultGUI(dexie));
|
|
5932
5935
|
}
|
|
5936
|
+
}
|
|
5937
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
5933
5938
|
subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
|
|
5934
5939
|
}
|
|
5935
5940
|
//verifyConfig(db.cloud.options); Not needed (yet at least!)
|
|
@@ -5941,7 +5946,7 @@
|
|
|
5941
5946
|
? yield navigator.serviceWorker.getRegistrations()
|
|
5942
5947
|
: [];
|
|
5943
5948
|
const initiallySynced = yield db.transaction('rw', db.$syncState, () => __awaiter$1(this, void 0, void 0, function* () {
|
|
5944
|
-
var
|
|
5949
|
+
var _h, _j;
|
|
5945
5950
|
const { options, schema } = db.cloud;
|
|
5946
5951
|
const [persistedOptions, persistedSchema, persistedSyncState] = yield Promise.all([
|
|
5947
5952
|
db.getOptions(),
|
|
@@ -5960,7 +5965,7 @@
|
|
|
5960
5965
|
throw new Error(`Internal error`); // options cannot be null if configuredProgramatically is set.
|
|
5961
5966
|
yield db.$syncState.put(options, 'options');
|
|
5962
5967
|
}
|
|
5963
|
-
if (((
|
|
5968
|
+
if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) &&
|
|
5964
5969
|
'serviceWorker' in navigator &&
|
|
5965
5970
|
swRegistrations.length > 0 &&
|
|
5966
5971
|
!DISABLE_SERVICEWORKER_STRATEGY) {
|
|
@@ -5974,7 +5979,8 @@
|
|
|
5974
5979
|
// Not configured for using service worker or no service worker
|
|
5975
5980
|
// registration exists. Don't rely on service worker to do any job.
|
|
5976
5981
|
// Use LocalSyncWorker instead.
|
|
5977
|
-
if (((
|
|
5982
|
+
if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.tryUseServiceWorker) &&
|
|
5983
|
+
!db.cloud.isServiceWorkerDB) {
|
|
5978
5984
|
console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
|
|
5979
5985
|
? 'No SW registrations found.'
|
|
5980
5986
|
: 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
|
|
@@ -6022,7 +6028,7 @@
|
|
|
6022
6028
|
}
|
|
6023
6029
|
// Manage CurrentUser observable:
|
|
6024
6030
|
throwIfClosed();
|
|
6025
|
-
if (!
|
|
6031
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
6026
6032
|
subscriptions.push(Dexie.liveQuery(() => db.getCurrentUser()).subscribe(currentUserEmitter));
|
|
6027
6033
|
// Manage PersistendSyncState observable:
|
|
6028
6034
|
subscriptions.push(Dexie.liveQuery(() => db.getPersistedSyncState()).subscribe(db.cloud.persistedSyncState));
|
|
@@ -6049,7 +6055,7 @@
|
|
|
6049
6055
|
}
|
|
6050
6056
|
else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
|
|
6051
6057
|
db.cloud.schema &&
|
|
6052
|
-
!
|
|
6058
|
+
!db.cloud.isServiceWorkerDB) {
|
|
6053
6059
|
// There's no SW. Start SyncWorker instead.
|
|
6054
6060
|
localSyncWorker = LocalSyncWorker(db, db.cloud.options, db.cloud.schema);
|
|
6055
6061
|
localSyncWorker.start();
|
|
@@ -6057,7 +6063,7 @@
|
|
|
6057
6063
|
}
|
|
6058
6064
|
// Listen to online event and do sync.
|
|
6059
6065
|
throwIfClosed();
|
|
6060
|
-
if (!
|
|
6066
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
6061
6067
|
subscriptions.push(rxjs.fromEvent(self, 'online').subscribe(() => {
|
|
6062
6068
|
console.debug('online!');
|
|
6063
6069
|
db.syncStateChangedEvent.next({
|
|
@@ -6071,16 +6077,16 @@
|
|
|
6071
6077
|
});
|
|
6072
6078
|
}));
|
|
6073
6079
|
}
|
|
6074
|
-
// Connect WebSocket
|
|
6075
|
-
if (
|
|
6076
|
-
!
|
|
6077
|
-
|
|
6080
|
+
// Connect WebSocket unless we
|
|
6081
|
+
if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) &&
|
|
6082
|
+
!((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.disableWebSocket) &&
|
|
6083
|
+
!IS_SERVICE_WORKER) {
|
|
6078
6084
|
subscriptions.push(connectWebSocket(db));
|
|
6079
6085
|
}
|
|
6080
6086
|
});
|
|
6081
6087
|
}
|
|
6082
6088
|
}
|
|
6083
|
-
dexieCloud.version = '4.0.0-beta.
|
|
6089
|
+
dexieCloud.version = '4.0.0-beta.19';
|
|
6084
6090
|
Dexie__default["default"].Cloud = dexieCloud;
|
|
6085
6091
|
|
|
6086
6092
|
// In case the SW lives for a while, let it reuse already opened connections:
|
|
@@ -6117,12 +6123,15 @@
|
|
|
6117
6123
|
console.debug('Dexie Cloud SW: Creating new Dexie instance for', dbName);
|
|
6118
6124
|
const dexie = new Dexie__default["default"](dbName, { addons: [dexieCloud] });
|
|
6119
6125
|
db = DexieCloudDB(dexie);
|
|
6126
|
+
db.cloud.isServiceWorkerDB = true;
|
|
6120
6127
|
dexie.on('versionchange', stopManagingDB);
|
|
6121
6128
|
yield db.dx.open(); // Makes sure db.cloud.options and db.cloud.schema are read from db,
|
|
6122
|
-
if (
|
|
6129
|
+
if (managedDBs.get(dbName)) {
|
|
6123
6130
|
// Avoid race conditions.
|
|
6124
|
-
|
|
6131
|
+
db.close();
|
|
6132
|
+
return yield _syncDB(dbName, purpose);
|
|
6125
6133
|
}
|
|
6134
|
+
managedDBs.set(dbName, db);
|
|
6126
6135
|
}
|
|
6127
6136
|
if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
|
|
6128
6137
|
console.error(`Dexie Cloud: No databaseUrl configured`);
|