dexie-cloud-addon 4.0.0-beta.18 → 4.0.0-beta.21
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 +41 -25
- 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 +45 -26
- 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 +598 -568
- 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 +17 -3
- package/dist/types/DexieCloudEntity.d.ts +8 -0
- package/dist/types/DexieCloudOptions.d.ts +2 -1
- package/dist/types/Invite.d.ts +2 -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/db/entities/UserLogin.d.ts +0 -2
- package/dist/types/default-ui/Dialog.d.ts +2 -1
- package/dist/types/getInvitesObservable.d.ts +1 -23
- 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 +598 -568
- 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 +45 -26
- 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 +38 -22
- package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
- package/package.json +3 -3
|
@@ -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
|
}
|
|
@@ -5357,8 +5360,8 @@
|
|
|
5357
5360
|
}
|
|
5358
5361
|
};
|
|
5359
5362
|
|
|
5360
|
-
function Dialog({ children }) {
|
|
5361
|
-
return (a$1("div",
|
|
5363
|
+
function Dialog({ children, className }) {
|
|
5364
|
+
return (a$1("div", { className: className },
|
|
5362
5365
|
a$1("div", { style: Styles.Darken }),
|
|
5363
5366
|
a$1("div", { style: Styles.DialogOuter },
|
|
5364
5367
|
a$1("div", { style: Styles.DialogInner }, children))));
|
|
@@ -5374,7 +5377,7 @@
|
|
|
5374
5377
|
const [params, setParams] = l({});
|
|
5375
5378
|
const firstFieldRef = s();
|
|
5376
5379
|
h(() => { var _a; return (_a = firstFieldRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []);
|
|
5377
|
-
return (a$1(Dialog,
|
|
5380
|
+
return (a$1(Dialog, { className: "dxc-login-dlg" },
|
|
5378
5381
|
a$1(y, null,
|
|
5379
5382
|
a$1("h3", { style: Styles.WindowHeader }, title),
|
|
5380
5383
|
alerts.map((alert) => (a$1("p", { style: Styles.Alert[alert.type] }, resolveText(alert)))),
|
|
@@ -5788,7 +5791,18 @@
|
|
|
5788
5791
|
const reducer = (result, m) => (Object.assign(Object.assign({}, result), { [m.id]: Object.assign(Object.assign({}, m), { realm: realmLookup[m.realmId] }) }));
|
|
5789
5792
|
const emailMembersById = membersByEmail.reduce(reducer, {});
|
|
5790
5793
|
const membersById = accessControl.selfMembers.reduce(reducer, emailMembersById);
|
|
5791
|
-
return Object.values(membersById)
|
|
5794
|
+
return Object.values(membersById)
|
|
5795
|
+
.filter((invite) => !invite.accepted && !invite.rejected)
|
|
5796
|
+
.map((invite) => (Object.assign(Object.assign({}, invite), { accept() {
|
|
5797
|
+
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5798
|
+
yield db.members.update(invite.id, { accepted: new Date() });
|
|
5799
|
+
});
|
|
5800
|
+
},
|
|
5801
|
+
reject() {
|
|
5802
|
+
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5803
|
+
yield db.members.update(invite.id, { rejected: new Date() });
|
|
5804
|
+
});
|
|
5805
|
+
} })));
|
|
5792
5806
|
})), []);
|
|
5793
5807
|
});
|
|
5794
5808
|
|
|
@@ -5829,10 +5843,9 @@
|
|
|
5829
5843
|
currentUserEmitter.next(UNAUTHORIZED_USER);
|
|
5830
5844
|
});
|
|
5831
5845
|
dexie.cloud = {
|
|
5832
|
-
version: '4.0.0-beta.
|
|
5846
|
+
version: '4.0.0-beta.21',
|
|
5833
5847
|
options: Object.assign({}, DEFAULT_OPTIONS),
|
|
5834
5848
|
schema: null,
|
|
5835
|
-
serverState: null,
|
|
5836
5849
|
get currentUserId() {
|
|
5837
5850
|
return currentUserEmitter.value.userId || UNAUTHORIZED_USER.userId;
|
|
5838
5851
|
},
|
|
@@ -5921,15 +5934,17 @@
|
|
|
5921
5934
|
dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
|
|
5922
5935
|
dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
|
|
5923
5936
|
function onDbReady(dexie) {
|
|
5924
|
-
var _a, _b, _c, _d, _e, _f;
|
|
5937
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
5925
5938
|
return __awaiter$1(this, void 0, void 0, function* () {
|
|
5926
5939
|
closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
|
|
5927
5940
|
const db = DexieCloudDB(dexie);
|
|
5928
5941
|
// Setup default GUI:
|
|
5929
|
-
if (
|
|
5942
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
5930
5943
|
if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
|
|
5931
5944
|
subscriptions.push(setupDefaultGUI(dexie));
|
|
5932
5945
|
}
|
|
5946
|
+
}
|
|
5947
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
5933
5948
|
subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
|
|
5934
5949
|
}
|
|
5935
5950
|
//verifyConfig(db.cloud.options); Not needed (yet at least!)
|
|
@@ -5941,7 +5956,7 @@
|
|
|
5941
5956
|
? yield navigator.serviceWorker.getRegistrations()
|
|
5942
5957
|
: [];
|
|
5943
5958
|
const initiallySynced = yield db.transaction('rw', db.$syncState, () => __awaiter$1(this, void 0, void 0, function* () {
|
|
5944
|
-
var
|
|
5959
|
+
var _h, _j;
|
|
5945
5960
|
const { options, schema } = db.cloud;
|
|
5946
5961
|
const [persistedOptions, persistedSchema, persistedSyncState] = yield Promise.all([
|
|
5947
5962
|
db.getOptions(),
|
|
@@ -5960,7 +5975,7 @@
|
|
|
5960
5975
|
throw new Error(`Internal error`); // options cannot be null if configuredProgramatically is set.
|
|
5961
5976
|
yield db.$syncState.put(options, 'options');
|
|
5962
5977
|
}
|
|
5963
|
-
if (((
|
|
5978
|
+
if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) &&
|
|
5964
5979
|
'serviceWorker' in navigator &&
|
|
5965
5980
|
swRegistrations.length > 0 &&
|
|
5966
5981
|
!DISABLE_SERVICEWORKER_STRATEGY) {
|
|
@@ -5974,7 +5989,8 @@
|
|
|
5974
5989
|
// Not configured for using service worker or no service worker
|
|
5975
5990
|
// registration exists. Don't rely on service worker to do any job.
|
|
5976
5991
|
// Use LocalSyncWorker instead.
|
|
5977
|
-
if (((
|
|
5992
|
+
if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.tryUseServiceWorker) &&
|
|
5993
|
+
!db.cloud.isServiceWorkerDB) {
|
|
5978
5994
|
console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
|
|
5979
5995
|
? 'No SW registrations found.'
|
|
5980
5996
|
: 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
|
|
@@ -6022,7 +6038,7 @@
|
|
|
6022
6038
|
}
|
|
6023
6039
|
// Manage CurrentUser observable:
|
|
6024
6040
|
throwIfClosed();
|
|
6025
|
-
if (!
|
|
6041
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
6026
6042
|
subscriptions.push(Dexie.liveQuery(() => db.getCurrentUser()).subscribe(currentUserEmitter));
|
|
6027
6043
|
// Manage PersistendSyncState observable:
|
|
6028
6044
|
subscriptions.push(Dexie.liveQuery(() => db.getPersistedSyncState()).subscribe(db.cloud.persistedSyncState));
|
|
@@ -6049,7 +6065,7 @@
|
|
|
6049
6065
|
}
|
|
6050
6066
|
else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
|
|
6051
6067
|
db.cloud.schema &&
|
|
6052
|
-
!
|
|
6068
|
+
!db.cloud.isServiceWorkerDB) {
|
|
6053
6069
|
// There's no SW. Start SyncWorker instead.
|
|
6054
6070
|
localSyncWorker = LocalSyncWorker(db, db.cloud.options, db.cloud.schema);
|
|
6055
6071
|
localSyncWorker.start();
|
|
@@ -6057,7 +6073,7 @@
|
|
|
6057
6073
|
}
|
|
6058
6074
|
// Listen to online event and do sync.
|
|
6059
6075
|
throwIfClosed();
|
|
6060
|
-
if (!
|
|
6076
|
+
if (!db.cloud.isServiceWorkerDB) {
|
|
6061
6077
|
subscriptions.push(rxjs.fromEvent(self, 'online').subscribe(() => {
|
|
6062
6078
|
console.debug('online!');
|
|
6063
6079
|
db.syncStateChangedEvent.next({
|
|
@@ -6071,16 +6087,16 @@
|
|
|
6071
6087
|
});
|
|
6072
6088
|
}));
|
|
6073
6089
|
}
|
|
6074
|
-
// Connect WebSocket
|
|
6075
|
-
if (
|
|
6076
|
-
!
|
|
6077
|
-
|
|
6090
|
+
// Connect WebSocket unless we
|
|
6091
|
+
if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) &&
|
|
6092
|
+
!((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.disableWebSocket) &&
|
|
6093
|
+
!IS_SERVICE_WORKER) {
|
|
6078
6094
|
subscriptions.push(connectWebSocket(db));
|
|
6079
6095
|
}
|
|
6080
6096
|
});
|
|
6081
6097
|
}
|
|
6082
6098
|
}
|
|
6083
|
-
dexieCloud.version = '4.0.0-beta.
|
|
6099
|
+
dexieCloud.version = '4.0.0-beta.21';
|
|
6084
6100
|
Dexie__default["default"].Cloud = dexieCloud;
|
|
6085
6101
|
|
|
6086
6102
|
// In case the SW lives for a while, let it reuse already opened connections:
|
|
@@ -6117,12 +6133,15 @@
|
|
|
6117
6133
|
console.debug('Dexie Cloud SW: Creating new Dexie instance for', dbName);
|
|
6118
6134
|
const dexie = new Dexie__default["default"](dbName, { addons: [dexieCloud] });
|
|
6119
6135
|
db = DexieCloudDB(dexie);
|
|
6136
|
+
db.cloud.isServiceWorkerDB = true;
|
|
6120
6137
|
dexie.on('versionchange', stopManagingDB);
|
|
6121
6138
|
yield db.dx.open(); // Makes sure db.cloud.options and db.cloud.schema are read from db,
|
|
6122
|
-
if (
|
|
6139
|
+
if (managedDBs.get(dbName)) {
|
|
6123
6140
|
// Avoid race conditions.
|
|
6124
|
-
|
|
6141
|
+
db.close();
|
|
6142
|
+
return yield _syncDB(dbName, purpose);
|
|
6125
6143
|
}
|
|
6144
|
+
managedDBs.set(dbName, db);
|
|
6126
6145
|
}
|
|
6127
6146
|
if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
|
|
6128
6147
|
console.error(`Dexie Cloud: No databaseUrl configured`);
|