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.
Files changed (45) hide show
  1. package/dist/modern/dexie-cloud-addon.js +41 -25
  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 +45 -26
  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 +598 -568
  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/types/DexieCloudAPI.d.ts +17 -3
  14. package/dist/types/DexieCloudEntity.d.ts +8 -0
  15. package/dist/types/DexieCloudOptions.d.ts +2 -1
  16. package/dist/types/Invite.d.ts +2 -0
  17. package/dist/types/WebSocketStatus.d.ts +1 -0
  18. package/dist/types/createMyMembersObservable.d.ts +14 -0
  19. package/dist/types/currentUserObservable.d.ts +3 -0
  20. package/dist/types/db/entities/UserLogin.d.ts +0 -2
  21. package/dist/types/default-ui/Dialog.d.ts +2 -1
  22. package/dist/types/getInvitesObservable.d.ts +1 -23
  23. package/dist/types/helpers/BroadcastedLocalEvent.d.ts +8 -0
  24. package/dist/types/helpers/visibleState.d.ts +1 -0
  25. package/dist/types/permissionsLookup.d.ts +9 -0
  26. package/dist/types/permissionsLookupObservable.d.ts +14 -0
  27. package/dist/types/sync/globalizePrivateIds.d.ts +4 -0
  28. package/dist/types/sync/syncServerToClientOnly.d.ts +3 -0
  29. package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
  30. package/dist/types/types/ConnectionStatus.d.ts +0 -0
  31. package/dist/types/types/LoginState.d.ts +41 -0
  32. package/dist/types/types/SyncConnectionStatus.d.ts +1 -0
  33. package/dist/types/types/SyncFlowStatus.d.ts +6 -0
  34. package/dist/types/types/SyncStatus.d.ts +6 -0
  35. package/dist/umd/dexie-cloud-addon.js +598 -568
  36. package/dist/umd/dexie-cloud-addon.js.map +1 -1
  37. package/dist/umd/dexie-cloud-addon.min.js +1 -1
  38. package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
  39. package/dist/umd/service-worker.js +45 -26
  40. package/dist/umd/service-worker.js.map +1 -1
  41. package/dist/umd/service-worker.min.js +1 -1
  42. package/dist/umd/service-worker.min.js.map +1 -1
  43. package/dist/umd-modern/dexie-cloud-addon.js +38 -22
  44. package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
  45. package/package.json +3 -3
@@ -5204,16 +5204,19 @@
5204
5204
  function _syncIfPossible() {
5205
5205
  return __awaiter$1(this, void 0, void 0, function* () {
5206
5206
  try {
5207
- if (db.cloud.usingServiceWorker) {
5208
- if (IS_SERVICE_WORKER) {
5209
- yield sync(db, cloudOptions, cloudSchema, options);
5210
- }
5207
+ if (db.cloud.isServiceWorkerDB) {
5208
+ // We are the dedicated sync SW:
5209
+ yield sync(db, cloudOptions, cloudSchema, options);
5211
5210
  }
5212
- else {
5211
+ else if (!db.cloud.usingServiceWorker) {
5213
5212
  // We use a flow that is better suited for the case when multiple workers want to
5214
5213
  // do the same thing.
5215
5214
  yield performGuardedJob(db, CURRENT_SYNC_WORKER, '$jobs', () => sync(db, cloudOptions, cloudSchema, options));
5216
5215
  }
5216
+ else {
5217
+ assert(false);
5218
+ throw new Error('Internal _syncIfPossible() - invalid precondition - should not have been called.');
5219
+ }
5217
5220
  ongoingSyncs.delete(db);
5218
5221
  console.debug('Done sync');
5219
5222
  }
@@ -5375,8 +5378,8 @@
5375
5378
  }
5376
5379
  };
5377
5380
 
5378
- function Dialog({ children }) {
5379
- return (a$1("div", null,
5381
+ function Dialog({ children, className }) {
5382
+ return (a$1("div", { className: className },
5380
5383
  a$1("div", { style: Styles.Darken }),
5381
5384
  a$1("div", { style: Styles.DialogOuter },
5382
5385
  a$1("div", { style: Styles.DialogInner }, children))));
@@ -5392,7 +5395,7 @@
5392
5395
  const [params, setParams] = l({});
5393
5396
  const firstFieldRef = s();
5394
5397
  h(() => { var _a; return (_a = firstFieldRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []);
5395
- return (a$1(Dialog, null,
5398
+ return (a$1(Dialog, { className: "dxc-login-dlg" },
5396
5399
  a$1(y, null,
5397
5400
  a$1("h3", { style: Styles.WindowHeader }, title),
5398
5401
  alerts.map((alert) => (a$1("p", { style: Styles.Alert[alert.type] }, resolveText(alert)))),
@@ -5806,7 +5809,18 @@
5806
5809
  const reducer = (result, m) => (Object.assign(Object.assign({}, result), { [m.id]: Object.assign(Object.assign({}, m), { realm: realmLookup[m.realmId] }) }));
5807
5810
  const emailMembersById = membersByEmail.reduce(reducer, {});
5808
5811
  const membersById = accessControl.selfMembers.reduce(reducer, emailMembersById);
5809
- return Object.values(membersById).filter(m => !m.accepted);
5812
+ return Object.values(membersById)
5813
+ .filter((invite) => !invite.accepted && !invite.rejected)
5814
+ .map((invite) => (Object.assign(Object.assign({}, invite), { accept() {
5815
+ return __awaiter$1(this, void 0, void 0, function* () {
5816
+ yield db.members.update(invite.id, { accepted: new Date() });
5817
+ });
5818
+ },
5819
+ reject() {
5820
+ return __awaiter$1(this, void 0, void 0, function* () {
5821
+ yield db.members.update(invite.id, { rejected: new Date() });
5822
+ });
5823
+ } })));
5810
5824
  })), []);
5811
5825
  });
5812
5826
 
@@ -5857,7 +5871,6 @@
5857
5871
  version: '{version}',
5858
5872
  options: Object.assign({}, DEFAULT_OPTIONS),
5859
5873
  schema: null,
5860
- serverState: null,
5861
5874
  get currentUserId() {
5862
5875
  return currentUserEmitter.value.userId || UNAUTHORIZED_USER.userId;
5863
5876
  },
@@ -5946,15 +5959,17 @@
5946
5959
  dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
5947
5960
  dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
5948
5961
  function onDbReady(dexie) {
5949
- var _a, _b, _c, _d, _e, _f;
5962
+ var _a, _b, _c, _d, _e, _f, _g;
5950
5963
  return __awaiter$1(this, void 0, void 0, function* () {
5951
5964
  closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
5952
5965
  const db = DexieCloudDB(dexie);
5953
5966
  // Setup default GUI:
5954
- if (!IS_SERVICE_WORKER) {
5967
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
5955
5968
  if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
5956
5969
  subscriptions.push(setupDefaultGUI(dexie));
5957
5970
  }
5971
+ }
5972
+ if (!db.cloud.isServiceWorkerDB) {
5958
5973
  subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
5959
5974
  }
5960
5975
  //verifyConfig(db.cloud.options); Not needed (yet at least!)
@@ -5966,7 +5981,7 @@
5966
5981
  ? yield navigator.serviceWorker.getRegistrations()
5967
5982
  : [];
5968
5983
  const initiallySynced = yield db.transaction('rw', db.$syncState, () => __awaiter$1(this, void 0, void 0, function* () {
5969
- var _g, _h;
5984
+ var _h, _j;
5970
5985
  const { options, schema } = db.cloud;
5971
5986
  const [persistedOptions, persistedSchema, persistedSyncState] = yield Promise.all([
5972
5987
  db.getOptions(),
@@ -5985,7 +6000,7 @@
5985
6000
  throw new Error(`Internal error`); // options cannot be null if configuredProgramatically is set.
5986
6001
  yield db.$syncState.put(options, 'options');
5987
6002
  }
5988
- if (((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.tryUseServiceWorker) &&
6003
+ if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) &&
5989
6004
  'serviceWorker' in navigator &&
5990
6005
  swRegistrations.length > 0 &&
5991
6006
  !DISABLE_SERVICEWORKER_STRATEGY) {
@@ -5999,7 +6014,8 @@
5999
6014
  // Not configured for using service worker or no service worker
6000
6015
  // registration exists. Don't rely on service worker to do any job.
6001
6016
  // Use LocalSyncWorker instead.
6002
- if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) && !IS_SERVICE_WORKER) {
6017
+ if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.tryUseServiceWorker) &&
6018
+ !db.cloud.isServiceWorkerDB) {
6003
6019
  console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
6004
6020
  ? 'No SW registrations found.'
6005
6021
  : 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
@@ -6047,7 +6063,7 @@
6047
6063
  }
6048
6064
  // Manage CurrentUser observable:
6049
6065
  throwIfClosed();
6050
- if (!IS_SERVICE_WORKER) {
6066
+ if (!db.cloud.isServiceWorkerDB) {
6051
6067
  subscriptions.push(Dexie.liveQuery(() => db.getCurrentUser()).subscribe(currentUserEmitter));
6052
6068
  // Manage PersistendSyncState observable:
6053
6069
  subscriptions.push(Dexie.liveQuery(() => db.getPersistedSyncState()).subscribe(db.cloud.persistedSyncState));
@@ -6074,7 +6090,7 @@
6074
6090
  }
6075
6091
  else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
6076
6092
  db.cloud.schema &&
6077
- !IS_SERVICE_WORKER) {
6093
+ !db.cloud.isServiceWorkerDB) {
6078
6094
  // There's no SW. Start SyncWorker instead.
6079
6095
  localSyncWorker = LocalSyncWorker(db, db.cloud.options, db.cloud.schema);
6080
6096
  localSyncWorker.start();
@@ -6082,7 +6098,7 @@
6082
6098
  }
6083
6099
  // Listen to online event and do sync.
6084
6100
  throwIfClosed();
6085
- if (!IS_SERVICE_WORKER) {
6101
+ if (!db.cloud.isServiceWorkerDB) {
6086
6102
  subscriptions.push(rxjs.fromEvent(self, 'online').subscribe(() => {
6087
6103
  console.debug('online!');
6088
6104
  db.syncStateChangedEvent.next({
@@ -6096,10 +6112,10 @@
6096
6112
  });
6097
6113
  }));
6098
6114
  }
6099
- // Connect WebSocket only if we're a browser window
6100
- if (typeof window !== 'undefined' &&
6101
- !IS_SERVICE_WORKER &&
6102
- ((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl)) {
6115
+ // Connect WebSocket unless we
6116
+ if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) &&
6117
+ !((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.disableWebSocket) &&
6118
+ !IS_SERVICE_WORKER) {
6103
6119
  subscriptions.push(connectWebSocket(db));
6104
6120
  }
6105
6121
  });