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
|
@@ -5179,16 +5179,19 @@ function syncIfPossible(db, cloudOptions, cloudSchema, options) {
|
|
|
5179
5179
|
function _syncIfPossible() {
|
|
5180
5180
|
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5181
5181
|
try {
|
|
5182
|
-
if (db.cloud.
|
|
5183
|
-
|
|
5184
|
-
|
|
5185
|
-
}
|
|
5182
|
+
if (db.cloud.isServiceWorkerDB) {
|
|
5183
|
+
// We are the dedicated sync SW:
|
|
5184
|
+
yield sync(db, cloudOptions, cloudSchema, options);
|
|
5186
5185
|
}
|
|
5187
|
-
else {
|
|
5186
|
+
else if (!db.cloud.usingServiceWorker) {
|
|
5188
5187
|
// We use a flow that is better suited for the case when multiple workers want to
|
|
5189
5188
|
// do the same thing.
|
|
5190
5189
|
yield performGuardedJob(db, CURRENT_SYNC_WORKER, '$jobs', () => sync(db, cloudOptions, cloudSchema, options));
|
|
5191
5190
|
}
|
|
5191
|
+
else {
|
|
5192
|
+
assert(false);
|
|
5193
|
+
throw new Error('Internal _syncIfPossible() - invalid precondition - should not have been called.');
|
|
5194
|
+
}
|
|
5192
5195
|
ongoingSyncs.delete(db);
|
|
5193
5196
|
console.debug('Done sync');
|
|
5194
5197
|
}
|
|
@@ -5822,7 +5825,7 @@ function dexieCloud(dexie) {
|
|
|
5822
5825
|
currentUserEmitter.next(UNAUTHORIZED_USER);
|
|
5823
5826
|
});
|
|
5824
5827
|
dexie.cloud = {
|
|
5825
|
-
version: '4.0.0-beta.
|
|
5828
|
+
version: '4.0.0-beta.19',
|
|
5826
5829
|
options: Object.assign({}, DEFAULT_OPTIONS),
|
|
5827
5830
|
schema: null,
|
|
5828
5831
|
serverState: null,
|
|
@@ -5914,15 +5917,17 @@ function dexieCloud(dexie) {
|
|
|
5914
5917
|
dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
|
|
5915
5918
|
dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
|
|
5916
5919
|
function onDbReady(dexie) {
|
|
5917
|
-
var _a, _b, _c, _d, _e, _f;
|
|
5920
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
5918
5921
|
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5919
5922
|
closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
|
|
5920
5923
|
const db = DexieCloudDB(dexie);
|
|
5921
5924
|
// Setup default GUI:
|
|
5922
|
-
if (
|
|
5925
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
5923
5926
|
if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
|
|
5924
5927
|
subscriptions.push(setupDefaultGUI(dexie));
|
|
5925
5928
|
}
|
|
5929
|
+
}
|
|
5930
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
5926
5931
|
subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
|
|
5927
5932
|
}
|
|
5928
5933
|
//verifyConfig(db.cloud.options); Not needed (yet at least!)
|
|
@@ -5934,7 +5939,7 @@ function dexieCloud(dexie) {
|
|
|
5934
5939
|
? yield navigator.serviceWorker.getRegistrations()
|
|
5935
5940
|
: [];
|
|
5936
5941
|
const initiallySynced = yield db.transaction('rw', db.$syncState, () => __awaiter$1(this, void 0, void 0, function* () {
|
|
5937
|
-
var
|
|
5942
|
+
var _h, _j;
|
|
5938
5943
|
const { options, schema } = db.cloud;
|
|
5939
5944
|
const [persistedOptions, persistedSchema, persistedSyncState] = yield Promise.all([
|
|
5940
5945
|
db.getOptions(),
|
|
@@ -5953,7 +5958,7 @@ function dexieCloud(dexie) {
|
|
|
5953
5958
|
throw new Error(`Internal error`); // options cannot be null if configuredProgramatically is set.
|
|
5954
5959
|
yield db.$syncState.put(options, 'options');
|
|
5955
5960
|
}
|
|
5956
|
-
if (((
|
|
5961
|
+
if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) &&
|
|
5957
5962
|
'serviceWorker' in navigator &&
|
|
5958
5963
|
swRegistrations.length > 0 &&
|
|
5959
5964
|
!DISABLE_SERVICEWORKER_STRATEGY) {
|
|
@@ -5967,7 +5972,8 @@ function dexieCloud(dexie) {
|
|
|
5967
5972
|
// Not configured for using service worker or no service worker
|
|
5968
5973
|
// registration exists. Don't rely on service worker to do any job.
|
|
5969
5974
|
// Use LocalSyncWorker instead.
|
|
5970
|
-
if (((
|
|
5975
|
+
if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.tryUseServiceWorker) &&
|
|
5976
|
+
!db.cloud.isServiceWorkerDB) {
|
|
5971
5977
|
console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
|
|
5972
5978
|
? 'No SW registrations found.'
|
|
5973
5979
|
: 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
|
|
@@ -6015,7 +6021,7 @@ function dexieCloud(dexie) {
|
|
|
6015
6021
|
}
|
|
6016
6022
|
// Manage CurrentUser observable:
|
|
6017
6023
|
throwIfClosed();
|
|
6018
|
-
if (!
|
|
6024
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
6019
6025
|
subscriptions.push(liveQuery(() => db.getCurrentUser()).subscribe(currentUserEmitter));
|
|
6020
6026
|
// Manage PersistendSyncState observable:
|
|
6021
6027
|
subscriptions.push(liveQuery(() => db.getPersistedSyncState()).subscribe(db.cloud.persistedSyncState));
|
|
@@ -6042,7 +6048,7 @@ function dexieCloud(dexie) {
|
|
|
6042
6048
|
}
|
|
6043
6049
|
else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
|
|
6044
6050
|
db.cloud.schema &&
|
|
6045
|
-
!
|
|
6051
|
+
!db.cloud.isServiceWorkerDB) {
|
|
6046
6052
|
// There's no SW. Start SyncWorker instead.
|
|
6047
6053
|
localSyncWorker = LocalSyncWorker(db, db.cloud.options, db.cloud.schema);
|
|
6048
6054
|
localSyncWorker.start();
|
|
@@ -6050,7 +6056,7 @@ function dexieCloud(dexie) {
|
|
|
6050
6056
|
}
|
|
6051
6057
|
// Listen to online event and do sync.
|
|
6052
6058
|
throwIfClosed();
|
|
6053
|
-
if (!
|
|
6059
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
6054
6060
|
subscriptions.push(fromEvent(self, 'online').subscribe(() => {
|
|
6055
6061
|
console.debug('online!');
|
|
6056
6062
|
db.syncStateChangedEvent.next({
|
|
@@ -6064,16 +6070,16 @@ function dexieCloud(dexie) {
|
|
|
6064
6070
|
});
|
|
6065
6071
|
}));
|
|
6066
6072
|
}
|
|
6067
|
-
// Connect WebSocket
|
|
6068
|
-
if (
|
|
6069
|
-
!
|
|
6070
|
-
|
|
6073
|
+
// Connect WebSocket unless we
|
|
6074
|
+
if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) &&
|
|
6075
|
+
!((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.disableWebSocket) &&
|
|
6076
|
+
!IS_SERVICE_WORKER) {
|
|
6071
6077
|
subscriptions.push(connectWebSocket(db));
|
|
6072
6078
|
}
|
|
6073
6079
|
});
|
|
6074
6080
|
}
|
|
6075
6081
|
}
|
|
6076
|
-
dexieCloud.version = '4.0.0-beta.
|
|
6082
|
+
dexieCloud.version = '4.0.0-beta.19';
|
|
6077
6083
|
Dexie.Cloud = dexieCloud;
|
|
6078
6084
|
|
|
6079
6085
|
// In case the SW lives for a while, let it reuse already opened connections:
|
|
@@ -6110,12 +6116,15 @@ function syncDB(dbName, purpose) {
|
|
|
6110
6116
|
console.debug('Dexie Cloud SW: Creating new Dexie instance for', dbName);
|
|
6111
6117
|
const dexie = new Dexie(dbName, { addons: [dexieCloud] });
|
|
6112
6118
|
db = DexieCloudDB(dexie);
|
|
6119
|
+
db.cloud.isServiceWorkerDB = true;
|
|
6113
6120
|
dexie.on('versionchange', stopManagingDB);
|
|
6114
6121
|
yield db.dx.open(); // Makes sure db.cloud.options and db.cloud.schema are read from db,
|
|
6115
|
-
if (
|
|
6122
|
+
if (managedDBs.get(dbName)) {
|
|
6116
6123
|
// Avoid race conditions.
|
|
6117
|
-
|
|
6124
|
+
db.close();
|
|
6125
|
+
return yield _syncDB(dbName, purpose);
|
|
6118
6126
|
}
|
|
6127
|
+
managedDBs.set(dbName, db);
|
|
6119
6128
|
}
|
|
6120
6129
|
if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
|
|
6121
6130
|
console.error(`Dexie Cloud: No databaseUrl configured`);
|