dexie-cloud-addon 4.0.7 → 4.0.8

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.
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * ==========================================================================
10
10
  *
11
- * Version 4.0.7, Sun May 26 2024
11
+ * Version 4.0.8, Tue Jun 04 2024
12
12
  *
13
13
  * https://dexie.org
14
14
  *
@@ -3853,13 +3853,15 @@
3853
3853
  return toDBOperationSet(changes);
3854
3854
  }
3855
3855
 
3856
+ const LIMIT_NUM_MESSAGES_PER_TIME = 10; // Allow a maximum of 10 messages per...
3857
+ const TIME_WINDOW = 10000; // ...10 seconds.
3858
+ const PAUSE_PERIOD = 1000; // Pause for 1 second if reached
3856
3859
  function MessagesFromServerConsumer(db) {
3857
3860
  const queue = [];
3858
3861
  const readyToServe = new rxjs.BehaviorSubject(true);
3859
3862
  const event = new rxjs.BehaviorSubject(null);
3860
3863
  let isWorking = false;
3861
- let loopWarning = 0;
3862
- let loopDetection = [0, 0, 0, 0, 0, 0, 0, 0, 0, Date.now()];
3864
+ let loopDetection = new Array(LIMIT_NUM_MESSAGES_PER_TIME).fill(0);
3863
3865
  event.subscribe(() => __awaiter(this, void 0, void 0, function* () {
3864
3866
  if (isWorking)
3865
3867
  return;
@@ -3873,20 +3875,11 @@
3873
3875
  }
3874
3876
  finally {
3875
3877
  if (loopDetection[loopDetection.length - 1] - loopDetection[0] <
3876
- 10000) {
3878
+ TIME_WINDOW) {
3877
3879
  // Ten loops within 10 seconds. Slow down!
3878
- if (Date.now() - loopWarning < 5000) {
3879
- // Last time we did this, we ended up here too. Wait for a minute.
3880
- console.warn(`Slowing down websocket loop for one minute`);
3881
- loopWarning = Date.now() + 60000;
3882
- yield new Promise((resolve) => setTimeout(resolve, 60000));
3883
- }
3884
- else {
3885
- // This is a one-time event. Just pause 10 seconds.
3886
- console.warn(`Slowing down websocket loop for 10 seconds`);
3887
- loopWarning = Date.now() + 10000;
3888
- yield new Promise((resolve) => setTimeout(resolve, 10000));
3889
- }
3880
+ // This is a one-time event. Just pause 10 seconds.
3881
+ console.warn(`Slowing down websocket loop for ${PAUSE_PERIOD} milliseconds`);
3882
+ yield new Promise((resolve) => setTimeout(resolve, PAUSE_PERIOD));
3890
3883
  }
3891
3884
  isWorking = false;
3892
3885
  readyToServe.next(true);
@@ -6313,7 +6306,7 @@
6313
6306
  const syncComplete = new rxjs.Subject();
6314
6307
  dexie.cloud = {
6315
6308
  // @ts-ignore
6316
- version: "4.0.7",
6309
+ version: "4.0.8",
6317
6310
  options: Object.assign({}, DEFAULT_OPTIONS),
6318
6311
  schema: null,
6319
6312
  get currentUserId() {
@@ -6540,8 +6533,19 @@
6540
6533
  // HERE: If requireAuth, do athentication now.
6541
6534
  let changedUser = false;
6542
6535
  const user = yield db.getCurrentUser();
6543
- if ((_c = db.cloud.options) === null || _c === void 0 ? void 0 : _c.requireAuth) {
6544
- if (!user.isLoggedIn) {
6536
+ const requireAuth = (_c = db.cloud.options) === null || _c === void 0 ? void 0 : _c.requireAuth;
6537
+ if (requireAuth) {
6538
+ if (typeof requireAuth === 'object') {
6539
+ // requireAuth contains login hints. Check if we already fulfil it:
6540
+ if (!user.isLoggedIn ||
6541
+ (requireAuth.userId && user.userId !== requireAuth.userId) ||
6542
+ (requireAuth.email && user.email !== requireAuth.email)) {
6543
+ // If not, login the configured user:
6544
+ changedUser = yield login(db, requireAuth);
6545
+ }
6546
+ }
6547
+ else if (!user.isLoggedIn) {
6548
+ // requireAuth is true and user is not logged in
6545
6549
  changedUser = yield login(db);
6546
6550
  }
6547
6551
  }
@@ -6597,7 +6601,7 @@
6597
6601
  }
6598
6602
  }
6599
6603
  // @ts-ignore
6600
- dexieCloud.version = "4.0.7";
6604
+ dexieCloud.version = "4.0.8";
6601
6605
  Dexie.Cloud = dexieCloud;
6602
6606
 
6603
6607
  // In case the SW lives for a while, let it reuse already opened connections: