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.
Files changed (41) hide show
  1. package/dist/modern/dexie-cloud-addon.js +26 -20
  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 +30 -21
  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 +571 -564
  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 +1 -0
  14. package/dist/types/DexieCloudEntity.d.ts +8 -0
  15. package/dist/types/DexieCloudOptions.d.ts +1 -0
  16. package/dist/types/WebSocketStatus.d.ts +1 -0
  17. package/dist/types/createMyMembersObservable.d.ts +14 -0
  18. package/dist/types/currentUserObservable.d.ts +3 -0
  19. package/dist/types/helpers/BroadcastedLocalEvent.d.ts +8 -0
  20. package/dist/types/helpers/visibleState.d.ts +1 -0
  21. package/dist/types/permissionsLookup.d.ts +9 -0
  22. package/dist/types/permissionsLookupObservable.d.ts +14 -0
  23. package/dist/types/sync/globalizePrivateIds.d.ts +4 -0
  24. package/dist/types/sync/syncServerToClientOnly.d.ts +3 -0
  25. package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
  26. package/dist/types/types/ConnectionStatus.d.ts +0 -0
  27. package/dist/types/types/LoginState.d.ts +41 -0
  28. package/dist/types/types/SyncConnectionStatus.d.ts +1 -0
  29. package/dist/types/types/SyncFlowStatus.d.ts +6 -0
  30. package/dist/types/types/SyncStatus.d.ts +6 -0
  31. package/dist/umd/dexie-cloud-addon.js +571 -564
  32. package/dist/umd/dexie-cloud-addon.js.map +1 -1
  33. package/dist/umd/dexie-cloud-addon.min.js +1 -1
  34. package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
  35. package/dist/umd/service-worker.js +30 -21
  36. package/dist/umd/service-worker.js.map +1 -1
  37. package/dist/umd/service-worker.min.js +1 -1
  38. package/dist/umd/service-worker.min.js.map +1 -1
  39. package/dist/umd-modern/dexie-cloud-addon.js +23 -17
  40. package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
  41. package/package.json +1 -1
@@ -101,7 +101,7 @@ function __spreadArray$1(to, from, pack) {
101
101
  *
102
102
  * ==========================================================================
103
103
  *
104
- * Version 4.0.0-beta.18, Sun Apr 10 2022
104
+ * Version 4.0.0-beta.19, Fri May 20 2022
105
105
  *
106
106
  * https://dexie.org
107
107
  *
@@ -273,8 +273,8 @@ function applyOperation(target, table, op) {
273
273
  switch (entry.type) {
274
274
  case "ups":
275
275
  // Adjust the existing upsert with additional updates
276
- for (var _j = 0, _k = Object.entries(changeSpec); _j < _k.length; _j++) {
277
- var _l = _k[_j], propPath = _l[0], value = _l[1];
276
+ for (var _k = 0, _l = Object.entries(changeSpec); _k < _l.length; _k++) {
277
+ var _m = _l[_k], propPath = _m[0], value = _m[1];
278
278
  setByKeyPath(entry.val, propPath, value);
279
279
  }
280
280
  break;
@@ -301,10 +301,10 @@ function applyOperation(target, table, op) {
301
301
  return target;
302
302
  }
303
303
  function applyOperations(target, ops) {
304
- for (var _j = 0, ops_1 = ops; _j < ops_1.length; _j++) {
305
- var _k = ops_1[_j], table = _k.table, muts = _k.muts;
306
- for (var _l = 0, muts_1 = muts; _l < muts_1.length; _l++) {
307
- var mut = muts_1[_l];
304
+ for (var _k = 0, ops_1 = ops; _k < ops_1.length; _k++) {
305
+ var _l = ops_1[_k], table = _l.table, muts = _l.muts;
306
+ for (var _m = 0, muts_1 = muts; _m < muts_1.length; _m++) {
307
+ var mut = muts_1[_m];
308
308
  applyOperation(target, table, mut);
309
309
  }
310
310
  }
@@ -313,10 +313,10 @@ function subtractChanges(target, // Server change set
313
313
  changesToSubtract // additional mutations on client during syncWithServer()
314
314
  ) {
315
315
  var _a, _b, _c;
316
- for (var _j = 0, _k = Object.entries(changesToSubtract); _j < _k.length; _j++) {
317
- var _l = _k[_j], table = _l[0], mutationSet = _l[1];
318
- for (var _m = 0, _o = Object.entries(mutationSet); _m < _o.length; _m++) {
319
- var _p = _o[_m], key = _p[0], mut = _p[1];
316
+ for (var _k = 0, _l = Object.entries(changesToSubtract); _k < _l.length; _k++) {
317
+ var _m = _l[_k], table = _m[0], mutationSet = _m[1];
318
+ for (var _o = 0, _p = Object.entries(mutationSet); _o < _p.length; _o++) {
319
+ var _q = _p[_o], key = _q[0], mut = _q[1];
320
320
  switch (mut.type) {
321
321
  case 'ups':
322
322
  {
@@ -346,8 +346,8 @@ changesToSubtract // additional mutations on client during syncWithServer()
346
346
  switch (targetMut.type) {
347
347
  case 'ups':
348
348
  // Adjust the server upsert with locally updated values.
349
- for (var _q = 0, _r = Object.entries(mut.mod); _q < _r.length; _q++) {
350
- var _s = _r[_q], propPath = _s[0], value = _s[1];
349
+ for (var _r = 0, _s = Object.entries(mut.mod); _r < _s.length; _r++) {
350
+ var _t = _s[_r], propPath = _t[0], value = _t[1];
351
351
  setByKeyPath(targetMut.val, propPath, value);
352
352
  }
353
353
  break;
@@ -356,8 +356,8 @@ changesToSubtract // additional mutations on client during syncWithServer()
356
356
  break;
357
357
  case 'upd':
358
358
  // Remove the local update props from the server update mutation.
359
- for (var _t = 0, _u = Object.keys(mut.mod); _t < _u.length; _t++) {
360
- var propPath = _u[_t];
359
+ for (var _u = 0, _v = Object.keys(mut.mod); _u < _v.length; _u++) {
360
+ var propPath = _v[_u];
361
361
  delete targetMut.mod[propPath];
362
362
  }
363
363
  break;
@@ -380,10 +380,10 @@ function toDBOperationSet(inSet) {
380
380
  var txid = randomString$1(16);
381
381
  // Convert data into a temporary map to collect mutations of same table and type
382
382
  var map = {};
383
- for (var _j = 0, _k = Object.entries(inSet); _j < _k.length; _j++) {
384
- var _l = _k[_j], table = _l[0], ops = _l[1];
385
- for (var _m = 0, _o = Object.entries(ops); _m < _o.length; _m++) {
386
- var _p = _o[_m], key = _p[0], op = _p[1];
383
+ for (var _k = 0, _l = Object.entries(inSet); _k < _l.length; _k++) {
384
+ var _m = _l[_k], table = _m[0], ops = _m[1];
385
+ for (var _o = 0, _p = Object.entries(ops); _o < _p.length; _o++) {
386
+ var _q = _p[_o], key = _q[0], op = _q[1];
387
387
  var mapEntry = map[table] || (map[table] = {});
388
388
  var ops_2 = mapEntry[op.type] || (mapEntry[op.type] = []);
389
389
  ops_2.push(Object.assign({ key: key }, op)); // DBKeyMutation doesn't contain key, so we need to bring it in.
@@ -391,14 +391,14 @@ function toDBOperationSet(inSet) {
391
391
  }
392
392
  // Start computing the resulting format:
393
393
  var result = [];
394
- for (var _q = 0, _r = Object.entries(map); _q < _r.length; _q++) {
395
- var _s = _r[_q], table = _s[0], ops = _s[1];
394
+ for (var _r = 0, _s = Object.entries(map); _r < _s.length; _r++) {
395
+ var _t = _s[_r], table = _t[0], ops = _t[1];
396
396
  var resultEntry = {
397
397
  table: table,
398
398
  muts: [],
399
399
  };
400
- for (var _t = 0, _u = Object.entries(ops); _t < _u.length; _t++) {
401
- var _v = _u[_t], optype = _v[0], muts = _v[1];
400
+ for (var _u = 0, _v = Object.entries(ops); _u < _v.length; _u++) {
401
+ var _w = _v[_u], optype = _w[0], muts = _w[1];
402
402
  switch (optype) {
403
403
  case "ups": {
404
404
  var op = {
@@ -2045,18 +2045,18 @@ var hasComplainedAboutSyncEvent = false;
2045
2045
  function registerSyncEvent(db, purpose) {
2046
2046
  return __awaiter$1(this, void 0, void 0, function () {
2047
2047
  var sw, e_3;
2048
- return __generator$1(this, function (_j) {
2049
- switch (_j.label) {
2048
+ return __generator$1(this, function (_k) {
2049
+ switch (_k.label) {
2050
2050
  case 0:
2051
- _j.trys.push([0, 4, , 5]);
2051
+ _k.trys.push([0, 4, , 5]);
2052
2052
  return [4 /*yield*/, navigator.serviceWorker.ready];
2053
2053
  case 1:
2054
- sw = _j.sent();
2054
+ sw = _k.sent();
2055
2055
  if (!(purpose === "push" && sw.sync)) return [3 /*break*/, 3];
2056
2056
  return [4 /*yield*/, sw.sync.register("dexie-cloud:".concat(db.name))];
2057
2057
  case 2:
2058
- _j.sent();
2059
- _j.label = 3;
2058
+ _k.sent();
2059
+ _k.label = 3;
2060
2060
  case 3:
2061
2061
  if (sw.active) {
2062
2062
  // Use postMessage for pull syncs and for browsers not supporting sync event (Firefox, Safari).
@@ -2072,7 +2072,7 @@ function registerSyncEvent(db, purpose) {
2072
2072
  }
2073
2073
  return [2 /*return*/];
2074
2074
  case 4:
2075
- e_3 = _j.sent();
2075
+ e_3 = _k.sent();
2076
2076
  if (!hasComplainedAboutSyncEvent) {
2077
2077
  console.debug("Dexie Cloud: Could not register sync event", e_3);
2078
2078
  hasComplainedAboutSyncEvent = true;
@@ -2087,33 +2087,33 @@ function registerPeriodicSyncEvent(db) {
2087
2087
  var _a;
2088
2088
  return __awaiter$1(this, void 0, void 0, function () {
2089
2089
  var periodicSync, e_4, e_5;
2090
- return __generator$1(this, function (_j) {
2091
- switch (_j.label) {
2090
+ return __generator$1(this, function (_k) {
2091
+ switch (_k.label) {
2092
2092
  case 0:
2093
- _j.trys.push([0, 8, , 9]);
2093
+ _k.trys.push([0, 8, , 9]);
2094
2094
  return [4 /*yield*/, navigator.serviceWorker.ready];
2095
2095
  case 1:
2096
- periodicSync = (_j.sent()).periodicSync;
2096
+ periodicSync = (_k.sent()).periodicSync;
2097
2097
  if (!periodicSync) return [3 /*break*/, 6];
2098
- _j.label = 2;
2098
+ _k.label = 2;
2099
2099
  case 2:
2100
- _j.trys.push([2, 4, , 5]);
2100
+ _k.trys.push([2, 4, , 5]);
2101
2101
  return [4 /*yield*/, periodicSync.register("dexie-cloud:".concat(db.name), (_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.periodicSync)];
2102
2102
  case 3:
2103
- _j.sent();
2103
+ _k.sent();
2104
2104
  console.debug("Dexie Cloud: Successfully registered periodicsync event for ".concat(db.name));
2105
2105
  return [3 /*break*/, 5];
2106
2106
  case 4:
2107
- e_4 = _j.sent();
2107
+ e_4 = _k.sent();
2108
2108
  console.debug("Dexie Cloud: Failed to register periodic sync. Your PWA must be installed to allow background sync.", e_4);
2109
2109
  return [3 /*break*/, 5];
2110
2110
  case 5: return [3 /*break*/, 7];
2111
2111
  case 6:
2112
2112
  console.debug("Dexie Cloud: periodicSync not supported.");
2113
- _j.label = 7;
2113
+ _k.label = 7;
2114
2114
  case 7: return [3 /*break*/, 9];
2115
2115
  case 8:
2116
- e_5 = _j.sent();
2116
+ e_5 = _k.sent();
2117
2117
  console.debug("Dexie Cloud: Could not register periodicSync for ".concat(db.name), e_5);
2118
2118
  return [3 /*break*/, 9];
2119
2119
  case 9: return [2 /*return*/];
@@ -2168,8 +2168,8 @@ function interactWithUser(userInteraction, req) {
2168
2168
  }
2169
2169
  function alertUser(userInteraction, title) {
2170
2170
  var alerts = [];
2171
- for (var _j = 2; _j < arguments.length; _j++) {
2172
- alerts[_j - 2] = arguments[_j];
2171
+ for (var _k = 2; _k < arguments.length; _k++) {
2172
+ alerts[_k - 2] = arguments[_k];
2173
2173
  }
2174
2174
  return interactWithUser(userInteraction, {
2175
2175
  type: 'message-alert',
@@ -2181,11 +2181,11 @@ function alertUser(userInteraction, title) {
2181
2181
  function promptForEmail(userInteraction, title, emailHint) {
2182
2182
  return __awaiter$1(this, void 0, void 0, function () {
2183
2183
  var email;
2184
- return __generator$1(this, function (_j) {
2185
- switch (_j.label) {
2184
+ return __generator$1(this, function (_k) {
2185
+ switch (_k.label) {
2186
2186
  case 0:
2187
2187
  email = emailHint || '';
2188
- _j.label = 1;
2188
+ _k.label = 1;
2189
2189
  case 1:
2190
2190
  if (!(!email || !/^[\w-\.]+@([\w-]+\.)+[\w-]{2,10}$/.test(email))) return [3 /*break*/, 3];
2191
2191
  return [4 /*yield*/, interactWithUser(userInteraction, {
@@ -2209,7 +2209,7 @@ function promptForEmail(userInteraction, title, emailHint) {
2209
2209
  },
2210
2210
  })];
2211
2211
  case 2:
2212
- email = (_j.sent()).email;
2212
+ email = (_k.sent()).email;
2213
2213
  return [3 /*break*/, 1];
2214
2214
  case 3: return [2 /*return*/, email];
2215
2215
  }
@@ -2219,8 +2219,8 @@ function promptForEmail(userInteraction, title, emailHint) {
2219
2219
  function promptForOTP(userInteraction, email, alert) {
2220
2220
  return __awaiter$1(this, void 0, void 0, function () {
2221
2221
  var alerts, otp;
2222
- return __generator$1(this, function (_j) {
2223
- switch (_j.label) {
2222
+ return __generator$1(this, function (_k) {
2223
+ switch (_k.label) {
2224
2224
  case 0:
2225
2225
  alerts = [
2226
2226
  {
@@ -2246,7 +2246,7 @@ function promptForOTP(userInteraction, email, alert) {
2246
2246
  },
2247
2247
  })];
2248
2248
  case 1:
2249
- otp = (_j.sent()).otp;
2249
+ otp = (_k.sent()).otp;
2250
2250
  return [2 /*return*/, otp];
2251
2251
  }
2252
2252
  });
@@ -2256,11 +2256,11 @@ function loadAccessToken(db) {
2256
2256
  var _a, _b;
2257
2257
  return __awaiter$1(this, void 0, void 0, function () {
2258
2258
  var currentUser, accessToken, accessTokenExpiration, refreshToken, refreshTokenExpiration, claims, expTime, refreshExpTime, refreshedLogin;
2259
- return __generator$1(this, function (_j) {
2260
- switch (_j.label) {
2259
+ return __generator$1(this, function (_k) {
2260
+ switch (_k.label) {
2261
2261
  case 0: return [4 /*yield*/, db.getCurrentUser()];
2262
2262
  case 1:
2263
- currentUser = _j.sent();
2263
+ currentUser = _k.sent();
2264
2264
  accessToken = currentUser.accessToken, accessTokenExpiration = currentUser.accessTokenExpiration, refreshToken = currentUser.refreshToken, refreshTokenExpiration = currentUser.refreshTokenExpiration, claims = currentUser.claims;
2265
2265
  if (!accessToken)
2266
2266
  return [2 /*return*/];
@@ -2277,13 +2277,13 @@ function loadAccessToken(db) {
2277
2277
  }
2278
2278
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, currentUser)];
2279
2279
  case 2:
2280
- refreshedLogin = _j.sent();
2280
+ refreshedLogin = _k.sent();
2281
2281
  return [4 /*yield*/, db.table('$logins').update(claims.sub, {
2282
2282
  accessToken: refreshedLogin.accessToken,
2283
2283
  accessTokenExpiration: refreshedLogin.accessTokenExpiration,
2284
2284
  })];
2285
2285
  case 3:
2286
- _j.sent();
2286
+ _k.sent();
2287
2287
  return [2 /*return*/, refreshedLogin.accessToken];
2288
2288
  }
2289
2289
  });
@@ -2291,8 +2291,8 @@ function loadAccessToken(db) {
2291
2291
  }
2292
2292
  function authenticate(url, context, fetchToken, userInteraction, hints) {
2293
2293
  return __awaiter$1(this, void 0, void 0, function () {
2294
- return __generator$1(this, function (_j) {
2295
- switch (_j.label) {
2294
+ return __generator$1(this, function (_k) {
2295
+ switch (_k.label) {
2296
2296
  case 0:
2297
2297
  if (!(context.accessToken &&
2298
2298
  context.accessTokenExpiration.getTime() > Date.now())) return [3 /*break*/, 1];
@@ -2302,9 +2302,9 @@ function authenticate(url, context, fetchToken, userInteraction, hints) {
2302
2302
  (!context.refreshTokenExpiration ||
2303
2303
  context.refreshTokenExpiration.getTime() > Date.now()))) return [3 /*break*/, 3];
2304
2304
  return [4 /*yield*/, refreshAccessToken(url, context)];
2305
- case 2: return [2 /*return*/, _j.sent()];
2305
+ case 2: return [2 /*return*/, _k.sent()];
2306
2306
  case 3: return [4 /*yield*/, userAuthenticate(context, fetchToken, userInteraction, hints)];
2307
- case 4: return [2 /*return*/, _j.sent()];
2307
+ case 4: return [2 /*return*/, _k.sent()];
2308
2308
  }
2309
2309
  });
2310
2310
  });
@@ -2312,8 +2312,8 @@ function authenticate(url, context, fetchToken, userInteraction, hints) {
2312
2312
  function refreshAccessToken(url, login) {
2313
2313
  return __awaiter$1(this, void 0, void 0, function () {
2314
2314
  var time_stamp, signing_algorithm, textEncoder, data, binarySignature, signature, tokenRequest, res, response;
2315
- return __generator$1(this, function (_j) {
2316
- switch (_j.label) {
2315
+ return __generator$1(this, function (_k) {
2316
+ switch (_k.label) {
2317
2317
  case 0:
2318
2318
  if (!login.refreshToken)
2319
2319
  throw new Error("Cannot refresh token - refresh token is missing.");
@@ -2325,7 +2325,7 @@ function refreshAccessToken(url, login) {
2325
2325
  data = textEncoder.encode(login.refreshToken + time_stamp);
2326
2326
  return [4 /*yield*/, crypto.subtle.sign(signing_algorithm, login.nonExportablePrivateKey, data)];
2327
2327
  case 1:
2328
- binarySignature = _j.sent();
2328
+ binarySignature = _k.sent();
2329
2329
  signature = b64encode(binarySignature);
2330
2330
  tokenRequest = {
2331
2331
  grant_type: 'refresh_token',
@@ -2342,12 +2342,12 @@ function refreshAccessToken(url, login) {
2342
2342
  mode: 'cors',
2343
2343
  })];
2344
2344
  case 2:
2345
- res = _j.sent();
2345
+ res = _k.sent();
2346
2346
  if (res.status !== 200)
2347
2347
  throw new Error("RefreshToken: Status ".concat(res.status, " from ").concat(url, "/token"));
2348
2348
  return [4 /*yield*/, res.json()];
2349
2349
  case 3:
2350
- response = _j.sent();
2350
+ response = _k.sent();
2351
2351
  login.accessToken = response.accessToken;
2352
2352
  login.accessTokenExpiration = response.accessTokenExpiration
2353
2353
  ? new Date(response.accessTokenExpiration)
@@ -2359,9 +2359,9 @@ function refreshAccessToken(url, login) {
2359
2359
  }
2360
2360
  function userAuthenticate(context, fetchToken, userInteraction, hints) {
2361
2361
  return __awaiter$1(this, void 0, void 0, function () {
2362
- var _j, privateKey, publicKey, publicKeySPKI, publicKeyPEM, response2, error_1;
2363
- return __generator$1(this, function (_k) {
2364
- switch (_k.label) {
2362
+ var _k, privateKey, publicKey, publicKeySPKI, publicKeyPEM, response2, error_1;
2363
+ return __generator$1(this, function (_l) {
2364
+ switch (_l.label) {
2365
2365
  case 0: return [4 /*yield*/, crypto.subtle.generateKey({
2366
2366
  name: 'RSASSA-PKCS1-v1_5',
2367
2367
  modulusLength: 2048,
@@ -2370,24 +2370,24 @@ function userAuthenticate(context, fetchToken, userInteraction, hints) {
2370
2370
  }, false, // Non-exportable...
2371
2371
  ['sign', 'verify'])];
2372
2372
  case 1:
2373
- _j = _k.sent(), privateKey = _j.privateKey, publicKey = _j.publicKey;
2373
+ _k = _l.sent(), privateKey = _k.privateKey, publicKey = _k.publicKey;
2374
2374
  if (!privateKey || !publicKey)
2375
2375
  throw new Error("Could not generate RSA keypair"); // Typings suggest these can be undefined...
2376
2376
  context.nonExportablePrivateKey = privateKey; //...but storable!
2377
2377
  return [4 /*yield*/, crypto.subtle.exportKey('spki', publicKey)];
2378
2378
  case 2:
2379
- publicKeySPKI = _k.sent();
2379
+ publicKeySPKI = _l.sent();
2380
2380
  publicKeyPEM = spkiToPEM(publicKeySPKI);
2381
2381
  context.publicKey = publicKey;
2382
- _k.label = 3;
2382
+ _l.label = 3;
2383
2383
  case 3:
2384
- _k.trys.push([3, 7, , 9]);
2384
+ _l.trys.push([3, 7, , 9]);
2385
2385
  return [4 /*yield*/, fetchToken({
2386
2386
  public_key: publicKeyPEM,
2387
2387
  hints: hints,
2388
2388
  })];
2389
2389
  case 4:
2390
- response2 = _k.sent();
2390
+ response2 = _l.sent();
2391
2391
  if (response2.type !== 'tokens')
2392
2392
  throw new Error("Unexpected response type from token endpoint: ".concat(response2.type));
2393
2393
  context.accessToken = response2.accessToken;
@@ -2408,11 +2408,11 @@ function userAuthenticate(context, fetchToken, userInteraction, hints) {
2408
2408
  alerts: response2.alerts,
2409
2409
  })];
2410
2410
  case 5:
2411
- _k.sent();
2412
- _k.label = 6;
2411
+ _l.sent();
2412
+ _l.label = 6;
2413
2413
  case 6: return [2 /*return*/, context];
2414
2414
  case 7:
2415
- error_1 = _k.sent();
2415
+ error_1 = _l.sent();
2416
2416
  return [4 /*yield*/, alertUser(userInteraction, 'Authentication Failed', {
2417
2417
  type: 'error',
2418
2418
  messageCode: 'GENERIC_ERROR',
@@ -2420,7 +2420,7 @@ function userAuthenticate(context, fetchToken, userInteraction, hints) {
2420
2420
  messageParams: {}
2421
2421
  }).catch(function () { })];
2422
2422
  case 8:
2423
- _k.sent();
2423
+ _l.sent();
2424
2424
  throw error_1;
2425
2425
  case 9: return [2 /*return*/];
2426
2426
  }
@@ -2463,7 +2463,7 @@ var AuthPersistedContext = /** @class */ (function () {
2463
2463
  AuthPersistedContext.prototype.save = function () {
2464
2464
  return __awaiter$1(this, void 0, void 0, function () {
2465
2465
  var db;
2466
- return __generator$1(this, function (_j) {
2466
+ return __generator$1(this, function (_k) {
2467
2467
  db = wm$1.get(this);
2468
2468
  db.table("$logins").put(this);
2469
2469
  return [2 /*return*/];
@@ -2490,13 +2490,13 @@ var HttpError = /** @class */ (function (_super_1) {
2490
2490
  }(Error));
2491
2491
  function otpFetchTokenCallback(db) {
2492
2492
  var userInteraction = db.cloud.userInteraction;
2493
- return function otpAuthenticate(_j) {
2494
- var public_key = _j.public_key, hints = _j.hints;
2493
+ return function otpAuthenticate(_k) {
2494
+ var public_key = _k.public_key, hints = _k.hints;
2495
2495
  var _a;
2496
2496
  return __awaiter$1(this, void 0, void 0, function () {
2497
- var tokenRequest, url, demo_user, email, res1, errMsg, response, otp, res2, errorText, _j, errMsg, response2;
2498
- return __generator$1(this, function (_k) {
2499
- switch (_k.label) {
2497
+ var tokenRequest, url, demo_user, email, res1, errMsg, response, otp, res2, errorText, _k, errMsg, response2;
2498
+ return __generator$1(this, function (_l) {
2499
+ switch (_l.label) {
2500
2500
  case 0:
2501
2501
  url = (_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl;
2502
2502
  if (!url)
@@ -2504,7 +2504,7 @@ function otpFetchTokenCallback(db) {
2504
2504
  if (!((hints === null || hints === void 0 ? void 0 : hints.grant_type) === 'demo')) return [3 /*break*/, 2];
2505
2505
  return [4 /*yield*/, promptForEmail(userInteraction, 'Enter a demo user email', (hints === null || hints === void 0 ? void 0 : hints.email) || (hints === null || hints === void 0 ? void 0 : hints.userId))];
2506
2506
  case 1:
2507
- demo_user = _k.sent();
2507
+ demo_user = _l.sent();
2508
2508
  tokenRequest = {
2509
2509
  demo_user: demo_user,
2510
2510
  grant_type: 'demo',
@@ -2514,25 +2514,25 @@ function otpFetchTokenCallback(db) {
2514
2514
  return [3 /*break*/, 4];
2515
2515
  case 2: return [4 /*yield*/, promptForEmail(userInteraction, 'Enter email address', hints === null || hints === void 0 ? void 0 : hints.email)];
2516
2516
  case 3:
2517
- email = _k.sent();
2517
+ email = _l.sent();
2518
2518
  tokenRequest = {
2519
2519
  email: email,
2520
2520
  grant_type: 'otp',
2521
2521
  scopes: ['ACCESS_DB'],
2522
2522
  public_key: public_key,
2523
2523
  };
2524
- _k.label = 4;
2524
+ _l.label = 4;
2525
2525
  case 4: return [4 /*yield*/, fetch("".concat(url, "/token"), {
2526
2526
  body: JSON.stringify(tokenRequest),
2527
2527
  method: 'post',
2528
2528
  headers: { 'Content-Type': 'application/json', mode: 'cors' },
2529
2529
  })];
2530
2530
  case 5:
2531
- res1 = _k.sent();
2531
+ res1 = _l.sent();
2532
2532
  if (!(res1.status !== 200)) return [3 /*break*/, 8];
2533
2533
  return [4 /*yield*/, res1.text()];
2534
2534
  case 6:
2535
- errMsg = _k.sent();
2535
+ errMsg = _l.sent();
2536
2536
  return [4 /*yield*/, alertUser(userInteraction, "Token request failed", {
2537
2537
  type: 'error',
2538
2538
  messageCode: 'GENERIC_ERROR',
@@ -2540,11 +2540,11 @@ function otpFetchTokenCallback(db) {
2540
2540
  messageParams: {}
2541
2541
  }).catch(function () { })];
2542
2542
  case 7:
2543
- _k.sent();
2543
+ _l.sent();
2544
2544
  throw new HttpError(res1, errMsg);
2545
2545
  case 8: return [4 /*yield*/, res1.json()];
2546
2546
  case 9:
2547
- response = _k.sent();
2547
+ response = _l.sent();
2548
2548
  if (!(response.type === 'tokens')) return [3 /*break*/, 10];
2549
2549
  // Demo user request can get a "tokens" response right away
2550
2550
  return [2 /*return*/, response];
@@ -2554,7 +2554,7 @@ function otpFetchTokenCallback(db) {
2554
2554
  throw new Error("Unexpected response from ".concat(url, "/token"));
2555
2555
  return [4 /*yield*/, promptForOTP(userInteraction, tokenRequest.email)];
2556
2556
  case 11:
2557
- otp = _k.sent();
2557
+ otp = _l.sent();
2558
2558
  tokenRequest.otp = otp || '';
2559
2559
  tokenRequest.otp_id = response.otp_id;
2560
2560
  return [4 /*yield*/, fetch("".concat(url, "/token"), {
@@ -2564,14 +2564,14 @@ function otpFetchTokenCallback(db) {
2564
2564
  mode: 'cors',
2565
2565
  })];
2566
2566
  case 12:
2567
- res2 = _k.sent();
2568
- _k.label = 13;
2567
+ res2 = _l.sent();
2568
+ _l.label = 13;
2569
2569
  case 13:
2570
2570
  if (!(res2.status === 401)) return [3 /*break*/, 17];
2571
2571
  return [4 /*yield*/, res2.text()];
2572
2572
  case 14:
2573
- errorText = _k.sent();
2574
- _j = tokenRequest;
2573
+ errorText = _l.sent();
2574
+ _k = tokenRequest;
2575
2575
  return [4 /*yield*/, promptForOTP(userInteraction, tokenRequest.email, {
2576
2576
  type: 'error',
2577
2577
  messageCode: 'INVALID_OTP',
@@ -2579,7 +2579,7 @@ function otpFetchTokenCallback(db) {
2579
2579
  messageParams: {}
2580
2580
  })];
2581
2581
  case 15:
2582
- _j.otp = _k.sent();
2582
+ _k.otp = _l.sent();
2583
2583
  return [4 /*yield*/, fetch("".concat(url, "/token"), {
2584
2584
  body: JSON.stringify(tokenRequest),
2585
2585
  method: 'post',
@@ -2587,13 +2587,13 @@ function otpFetchTokenCallback(db) {
2587
2587
  mode: 'cors',
2588
2588
  })];
2589
2589
  case 16:
2590
- res2 = _k.sent();
2590
+ res2 = _l.sent();
2591
2591
  return [3 /*break*/, 13];
2592
2592
  case 17:
2593
2593
  if (!(res2.status !== 200)) return [3 /*break*/, 20];
2594
2594
  return [4 /*yield*/, res2.text()];
2595
2595
  case 18:
2596
- errMsg = _k.sent();
2596
+ errMsg = _l.sent();
2597
2597
  return [4 /*yield*/, alertUser(userInteraction, "OTP Authentication Failed", {
2598
2598
  type: 'error',
2599
2599
  messageCode: 'GENERIC_ERROR',
@@ -2601,11 +2601,11 @@ function otpFetchTokenCallback(db) {
2601
2601
  messageParams: {}
2602
2602
  }).catch(function () { })];
2603
2603
  case 19:
2604
- _k.sent();
2604
+ _l.sent();
2605
2605
  throw new HttpError(res2, errMsg);
2606
2606
  case 20: return [4 /*yield*/, res2.json()];
2607
2607
  case 21:
2608
- response2 = _k.sent();
2608
+ response2 = _l.sent();
2609
2609
  return [2 /*return*/, response2];
2610
2610
  case 22: throw new Error("Unexpected response from ".concat(url, "/token"));
2611
2611
  }
@@ -2628,19 +2628,19 @@ function setCurrentUser(db, user) {
2628
2628
  return __awaiter$1(this, void 0, void 0, function () {
2629
2629
  var $logins;
2630
2630
  var _this_1 = this;
2631
- return __generator$1(this, function (_j) {
2632
- switch (_j.label) {
2631
+ return __generator$1(this, function (_k) {
2632
+ switch (_k.label) {
2633
2633
  case 0:
2634
2634
  if (user.userId === db.cloud.currentUserId)
2635
2635
  return [2 /*return*/]; // Already this user.
2636
2636
  $logins = db.table('$logins');
2637
2637
  return [4 /*yield*/, db.transaction('rw', $logins, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
2638
2638
  var existingLogins;
2639
- return __generator$1(this, function (_j) {
2640
- switch (_j.label) {
2639
+ return __generator$1(this, function (_k) {
2640
+ switch (_k.label) {
2641
2641
  case 0: return [4 /*yield*/, $logins.toArray()];
2642
2642
  case 1:
2643
- existingLogins = _j.sent();
2643
+ existingLogins = _k.sent();
2644
2644
  return [4 /*yield*/, Promise.all(existingLogins
2645
2645
  .filter(function (login) { return login.userId !== user.userId && login.isLoggedIn; })
2646
2646
  .map(function (login) {
@@ -2648,19 +2648,19 @@ function setCurrentUser(db, user) {
2648
2648
  return $logins.put(login);
2649
2649
  }))];
2650
2650
  case 2:
2651
- _j.sent();
2651
+ _k.sent();
2652
2652
  user.isLoggedIn = true;
2653
2653
  user.lastLogin = new Date();
2654
2654
  return [4 /*yield*/, user.save()];
2655
2655
  case 3:
2656
- _j.sent();
2656
+ _k.sent();
2657
2657
  console.debug('Saved new user', user.email);
2658
2658
  return [2 /*return*/];
2659
2659
  }
2660
2660
  });
2661
2661
  }); })];
2662
2662
  case 1:
2663
- _j.sent();
2663
+ _k.sent();
2664
2664
  return [4 /*yield*/, new Promise(function (resolve) {
2665
2665
  if (db.cloud.currentUserId === user.userId) {
2666
2666
  resolve(null);
@@ -2675,7 +2675,7 @@ function setCurrentUser(db, user) {
2675
2675
  }
2676
2676
  })];
2677
2677
  case 2:
2678
- _j.sent();
2678
+ _k.sent();
2679
2679
  return [2 /*return*/];
2680
2680
  }
2681
2681
  });
@@ -2684,11 +2684,11 @@ function setCurrentUser(db, user) {
2684
2684
  function login(db, hints) {
2685
2685
  return __awaiter$1(this, void 0, void 0, function () {
2686
2686
  var currentUser, context;
2687
- return __generator$1(this, function (_j) {
2688
- switch (_j.label) {
2687
+ return __generator$1(this, function (_k) {
2688
+ switch (_k.label) {
2689
2689
  case 0: return [4 /*yield*/, db.getCurrentUser()];
2690
2690
  case 1:
2691
- currentUser = _j.sent();
2691
+ currentUser = _k.sent();
2692
2692
  if (currentUser.isLoggedIn) {
2693
2693
  if (hints) {
2694
2694
  if (hints.email && db.cloud.currentUser.value.email !== hints.email) {
@@ -2707,13 +2707,13 @@ function login(db, hints) {
2707
2707
  });
2708
2708
  return [4 /*yield*/, authenticate(db.cloud.options.databaseUrl, context, db.cloud.options.fetchTokens || otpFetchTokenCallback(db), db.cloud.userInteraction, hints)];
2709
2709
  case 2:
2710
- _j.sent();
2710
+ _k.sent();
2711
2711
  return [4 /*yield*/, context.save()];
2712
2712
  case 3:
2713
- _j.sent();
2713
+ _k.sent();
2714
2714
  return [4 /*yield*/, setCurrentUser(db, context)];
2715
2715
  case 4:
2716
- _j.sent();
2716
+ _k.sent();
2717
2717
  // Make sure to resync as the new login will be authorized
2718
2718
  // for new realms.
2719
2719
  triggerSync(db, "pull");
@@ -2831,18 +2831,18 @@ var BroadcastedAndLocalEvent = /** @class */ (function (_super_1) {
2831
2831
  };
2832
2832
  return BroadcastedAndLocalEvent;
2833
2833
  }(Observable$1));
2834
- function computeRealmSetHash(_j) {
2835
- var realms = _j.realms, inviteRealms = _j.inviteRealms;
2834
+ function computeRealmSetHash(_k) {
2835
+ var realms = _k.realms, inviteRealms = _k.inviteRealms;
2836
2836
  return __awaiter$1(this, void 0, void 0, function () {
2837
2837
  var data, byteArray, digestBytes, base64;
2838
- return __generator$1(this, function (_j) {
2839
- switch (_j.label) {
2838
+ return __generator$1(this, function (_k) {
2839
+ switch (_k.label) {
2840
2840
  case 0:
2841
2841
  data = JSON.stringify(__spreadArray$1(__spreadArray$1([], realms.map(function (realmId) { return ({ realmId: realmId, accepted: true }); }), true), inviteRealms.map(function (realmId) { return ({ realmId: realmId, accepted: false }); }), true).sort(function (a, b) { return a.realmId < b.realmId ? -1 : a.realmId > b.realmId ? 1 : 0; }));
2842
2842
  byteArray = new TextEncoder().encode(data);
2843
2843
  return [4 /*yield*/, crypto.subtle.digest('SHA-1', byteArray)];
2844
2844
  case 1:
2845
- digestBytes = _j.sent();
2845
+ digestBytes = _k.sent();
2846
2846
  base64 = b64encode(digestBytes);
2847
2847
  return [2 /*return*/, base64];
2848
2848
  }
@@ -2851,14 +2851,14 @@ function computeRealmSetHash(_j) {
2851
2851
  }
2852
2852
  function getSyncableTables(db) {
2853
2853
  return Object.entries(db.cloud.schema || {})
2854
- .filter(function (_j) {
2855
- var markedForSync = _j[1].markedForSync;
2854
+ .filter(function (_k) {
2855
+ var markedForSync = _k[1].markedForSync;
2856
2856
  return markedForSync;
2857
2857
  })
2858
- .map(function (_j) {
2859
- var tbl = _j[0];
2860
- return db.tables.filter(function (_j) {
2861
- var name = _j.name;
2858
+ .map(function (_k) {
2859
+ var tbl = _k[0];
2860
+ return db.tables.filter(function (_k) {
2861
+ var name = _k.name;
2862
2862
  return name === tbl;
2863
2863
  })[0];
2864
2864
  })
@@ -2878,17 +2878,17 @@ var concat = [].concat;
2878
2878
  function flatten(a) {
2879
2879
  return concat.apply([], a);
2880
2880
  }
2881
- function listClientChanges(mutationTables, db, _j) {
2882
- var _k = _j === void 0 ? {} : _j, _l = _k.since, since = _l === void 0 ? {} : _l, _m = _k.limit, limit = _m === void 0 ? Infinity : _m;
2881
+ function listClientChanges(mutationTables, db, _k) {
2882
+ var _l = _k === void 0 ? {} : _k, _m = _l.since, since = _m === void 0 ? {} : _m, _o = _l.limit, limit = _o === void 0 ? Infinity : _o;
2883
2883
  return __awaiter$1(this, void 0, void 0, function () {
2884
- var allMutsOnTables, sorted, result, currentEntry, currentTxid, _j, sorted_1, _k, table, mut;
2884
+ var allMutsOnTables, sorted, result, currentEntry, currentTxid, _k, sorted_1, _l, table, mut;
2885
2885
  var _this_1 = this;
2886
- return __generator$1(this, function (_l) {
2887
- switch (_l.label) {
2886
+ return __generator$1(this, function (_m) {
2887
+ switch (_m.label) {
2888
2888
  case 0: return [4 /*yield*/, Promise.all(mutationTables.map(function (mutationTable) { return __awaiter$1(_this_1, void 0, void 0, function () {
2889
2889
  var tableName, lastRevision, query, muts;
2890
- return __generator$1(this, function (_j) {
2891
- switch (_j.label) {
2890
+ return __generator$1(this, function (_k) {
2891
+ switch (_k.label) {
2892
2892
  case 0:
2893
2893
  tableName = getTableFromMutationTable(mutationTable.name);
2894
2894
  lastRevision = since[tableName];
@@ -2899,7 +2899,7 @@ function listClientChanges(mutationTables, db, _j) {
2899
2899
  query = query.limit(limit);
2900
2900
  return [4 /*yield*/, query.toArray()];
2901
2901
  case 1:
2902
- muts = _j.sent();
2902
+ muts = _k.sent();
2903
2903
  //const objTable = db.table(tableName);
2904
2904
  /*for (const mut of muts) {
2905
2905
  if (mut.type === "insert" || mut.type === "upsert") {
@@ -2914,13 +2914,13 @@ function listClientChanges(mutationTables, db, _j) {
2914
2914
  });
2915
2915
  }); }))];
2916
2916
  case 1:
2917
- allMutsOnTables = _l.sent();
2917
+ allMutsOnTables = _m.sent();
2918
2918
  sorted = flatten(allMutsOnTables).sort(function (a, b) { return a.mut.ts - b.mut.ts; });
2919
2919
  result = [];
2920
2920
  currentEntry = null;
2921
2921
  currentTxid = null;
2922
- for (_j = 0, sorted_1 = sorted; _j < sorted_1.length; _j++) {
2923
- _k = sorted_1[_j], table = _k.table, mut = _k.mut;
2922
+ for (_k = 0, sorted_1 = sorted; _k < sorted_1.length; _k++) {
2923
+ _l = sorted_1[_k], table = _l.table, mut = _l.mut;
2924
2924
  if (currentEntry &&
2925
2925
  currentEntry.table === table &&
2926
2926
  currentTxid === mut.txid) {
@@ -2950,8 +2950,8 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2950
2950
  return __awaiter$1(this, void 0, void 0, function () {
2951
2951
  var txid, ignoredRealms_1, upserts;
2952
2952
  var _this_1 = this;
2953
- return __generator$1(this, function (_j) {
2954
- switch (_j.label) {
2953
+ return __generator$1(this, function (_k) {
2954
+ switch (_k.label) {
2955
2955
  case 0:
2956
2956
  txid = "upload-".concat(randomString(8));
2957
2957
  if (!currentUser.isLoggedIn) return [3 /*break*/, 2];
@@ -2959,8 +2959,8 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2959
2959
  ignoredRealms_1 = new Set(alreadySyncedRealms || []);
2960
2960
  return [4 /*yield*/, Promise.all(tablesToSyncify.map(function (table) { return __awaiter$1(_this_1, void 0, void 0, function () {
2961
2961
  var extractKey, dexieCloudTableSchema, query, unsyncedObjects, mut;
2962
- return __generator$1(this, function (_j) {
2963
- switch (_j.label) {
2962
+ return __generator$1(this, function (_k) {
2963
+ switch (_k.label) {
2964
2964
  case 0:
2965
2965
  extractKey = table.core.schema.primaryKey.extractKey;
2966
2966
  if (!extractKey)
@@ -2981,7 +2981,7 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2981
2981
  });
2982
2982
  return [4 /*yield*/, query.toArray()];
2983
2983
  case 1:
2984
- unsyncedObjects = _j.sent();
2984
+ unsyncedObjects = _k.sent();
2985
2985
  if (unsyncedObjects.length > 0) {
2986
2986
  mut = {
2987
2987
  type: 'upsert',
@@ -3005,7 +3005,7 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
3005
3005
  });
3006
3006
  }); }))];
3007
3007
  case 1:
3008
- upserts = _j.sent();
3008
+ upserts = _k.sent();
3009
3009
  return [2 /*return*/, upserts.filter(function (op) { return op.muts.length > 0; })];
3010
3010
  case 2: return [2 /*return*/, []];
3011
3011
  }
@@ -3034,12 +3034,12 @@ function escapeDollarProps(value) {
3034
3034
  if (!dollarKeys)
3035
3035
  return value;
3036
3036
  var clone = __assign({}, value);
3037
- for (var _j = 0, dollarKeys_1 = dollarKeys; _j < dollarKeys_1.length; _j++) {
3038
- var k_1 = dollarKeys_1[_j];
3037
+ for (var _k = 0, dollarKeys_1 = dollarKeys; _k < dollarKeys_1.length; _k++) {
3038
+ var k_1 = dollarKeys_1[_k];
3039
3039
  delete clone[k_1];
3040
3040
  }
3041
- for (var _k = 0, dollarKeys_2 = dollarKeys; _k < dollarKeys_2.length; _k++) {
3042
- var k_2 = dollarKeys_2[_k];
3041
+ for (var _l = 0, dollarKeys_2 = dollarKeys; _l < dollarKeys_2.length; _l++) {
3042
+ var k_2 = dollarKeys_2[_l];
3043
3043
  clone["$" + k_2] = value[k_2];
3044
3044
  }
3045
3045
  return clone;
@@ -3049,8 +3049,8 @@ var ObjectDef = {
3049
3049
  };
3050
3050
  function TypesonSimplified() {
3051
3051
  var typeDefsInputs = [];
3052
- for (var _j = 0; _j < arguments.length; _j++) {
3053
- typeDefsInputs[_j] = arguments[_j];
3052
+ for (var _k = 0; _k < arguments.length; _k++) {
3053
+ typeDefsInputs[_k] = arguments[_k];
3054
3054
  }
3055
3055
  var typeDefs = typeDefsInputs.reduce(function (p, c) { return (__assign(__assign({}, p), c)); }, typeDefsInputs.reduce(function (p, c) { return (__assign(__assign({}, c), p)); }, {}));
3056
3056
  var protoMap = new WeakMap();
@@ -3084,13 +3084,13 @@ function TypesonSimplified() {
3084
3084
  // Unescape dollar props
3085
3085
  value = __assign({}, value);
3086
3086
  // Delete keys that children wanted us to delete
3087
- for (var _j = 0, _k = top[1]; _j < _k.length; _j++) {
3088
- var k_3 = _k[_j];
3087
+ for (var _k = 0, _l = top[1]; _k < _l.length; _k++) {
3088
+ var k_3 = _l[_k];
3089
3089
  delete value[k_3];
3090
3090
  }
3091
3091
  // Set keys that children wanted us to set
3092
- for (var _l = 0, _m = Object.entries(top[2]); _l < _m.length; _l++) {
3093
- var _o = _m[_l], k_4 = _o[0], v_1 = _o[1];
3092
+ for (var _m = 0, _o = Object.entries(top[2]); _m < _o.length; _m++) {
3093
+ var _p = _o[_m], k_4 = _p[0], v_1 = _p[1];
3094
3094
  value[k_4] = v_1;
3095
3095
  }
3096
3096
  stack.pop();
@@ -3138,8 +3138,8 @@ function TypesonSimplified() {
3138
3138
  if (typeDef !== undefined)
3139
3139
  return typeDef; // Null counts to! So the caching of Array.prototype also counts.
3140
3140
  var toStringTag_1 = getToStringTag(realVal);
3141
- var entry = Object.entries(typeDefs).find(function (_j) {
3142
- var typeName = _j[0], typeDef = _j[1];
3141
+ var entry = Object.entries(typeDefs).find(function (_k) {
3142
+ var typeName = _k[0], typeDef = _k[1];
3143
3143
  var _a, _b;
3144
3144
  return (_b = (_a = typeDef === null || typeDef === void 0 ? void 0 : typeDef.test) === null || _a === void 0 ? void 0 : _a.call(typeDef, realVal, toStringTag_1)) !== null && _b !== void 0 ? _b : typeName === toStringTag_1;
3145
3145
  });
@@ -3171,8 +3171,8 @@ var BisonBinaryTypes = {
3171
3171
  i: i,
3172
3172
  };
3173
3173
  },
3174
- revive: function (_j, altChannel) {
3175
- var i = _j.i, mimeType = _j.mimeType;
3174
+ revive: function (_k, altChannel) {
3175
+ var i = _k.i, mimeType = _k.mimeType;
3176
3176
  return new Blob([altChannel[i]], { type: mimeType });
3177
3177
  },
3178
3178
  },
@@ -3191,8 +3191,8 @@ var numberDef = {
3191
3191
  return num;
3192
3192
  }
3193
3193
  },
3194
- revive: function (_j) {
3195
- var v = _j.v;
3194
+ revive: function (_k) {
3195
+ var v = _k.v;
3196
3196
  return Number(v);
3197
3197
  },
3198
3198
  },
@@ -3211,8 +3211,8 @@ var DateDef = {
3211
3211
  $t: "Date",
3212
3212
  v: isNaN(date.getTime()) ? "NaN" : date.toISOString(),
3213
3213
  }); },
3214
- revive: function (_j) {
3215
- var v = _j.v;
3214
+ revive: function (_k) {
3215
+ var v = _k.v;
3216
3216
  return new Date(v === "NaN" ? NaN : Date.parse(v));
3217
3217
  },
3218
3218
  },
@@ -3223,8 +3223,8 @@ var SetDef = {
3223
3223
  $t: "Set",
3224
3224
  v: Array.from(set.entries()),
3225
3225
  }); },
3226
- revive: function (_j) {
3227
- var v = _j.v;
3226
+ revive: function (_k) {
3227
+ var v = _k.v;
3228
3228
  return new Set(v);
3229
3229
  },
3230
3230
  },
@@ -3235,8 +3235,8 @@ var MapDef = {
3235
3235
  $t: "Map",
3236
3236
  v: Array.from(map.entries()),
3237
3237
  }); },
3238
- revive: function (_j) {
3239
- var v = _j.v;
3238
+ revive: function (_k) {
3239
+ var v = _k.v;
3240
3240
  return new Map(v);
3241
3241
  },
3242
3242
  },
@@ -3262,8 +3262,8 @@ var TypedArraysDefs = [
3262
3262
  "BigInt64Array",
3263
3263
  "BigUint64Array",
3264
3264
  ].reduce(function (specs, typeName) {
3265
- var _j;
3266
- return (__assign(__assign({}, specs), (_j = {}, _j[typeName] = {
3265
+ var _k;
3266
+ return (__assign(__assign({}, specs), (_k = {}, _k[typeName] = {
3267
3267
  // Replace passes the the typed array into $t, buffer so that
3268
3268
  // the ArrayBuffer typedef takes care of further handling of the buffer:
3269
3269
  // {$t:"Uint8Array",buffer:{$t:"ArrayBuffer",idx:0}}
@@ -3278,13 +3278,13 @@ var TypedArraysDefs = [
3278
3278
  };
3279
3279
  return result;
3280
3280
  },
3281
- revive: function (_j, _, typeDefs) {
3282
- var v = _j.v;
3281
+ revive: function (_k, _, typeDefs) {
3282
+ var v = _k.v;
3283
3283
  var TypedArray = _global[typeName];
3284
3284
  return (TypedArray &&
3285
3285
  new TypedArray(typeDefs.ArrayBuffer.revive({ v: v }, _, typeDefs)));
3286
3286
  },
3287
- }, _j)));
3287
+ }, _k)));
3288
3288
  }, {});
3289
3289
  function b64LexEncode(b) {
3290
3290
  return b64ToLex(b64encode(b));
@@ -3378,8 +3378,8 @@ var DECODE_TABLE = {
3378
3378
  "|": "/",
3379
3379
  };
3380
3380
  var ENCODE_TABLE = {};
3381
- for (var _j = 0, _k = Object.keys(DECODE_TABLE); _j < _k.length; _j++) {
3382
- var c_1 = _k[_j];
3381
+ for (var _k = 0, _l = Object.keys(DECODE_TABLE); _k < _l.length; _k++) {
3382
+ var c_1 = _l[_k];
3383
3383
  ENCODE_TABLE[DECODE_TABLE[c_1]] = c_1;
3384
3384
  }
3385
3385
  var ArrayBufferDef = {
@@ -3388,8 +3388,8 @@ var ArrayBufferDef = {
3388
3388
  $t: "ArrayBuffer",
3389
3389
  v: b64LexEncode(ab),
3390
3390
  }); },
3391
- revive: function (_j) {
3392
- var v = _j.v;
3391
+ revive: function (_k) {
3392
+ var v = _k.v;
3393
3393
  var ba = b64LexDecode(v);
3394
3394
  return ba.buffer.byteLength === ba.byteLength
3395
3395
  ? ba.buffer
@@ -3431,8 +3431,8 @@ var BlobDef = {
3431
3431
  : b64encode(string2ArrayBuffer(readBlobSync(blob))),
3432
3432
  type: blob.type,
3433
3433
  }); },
3434
- revive: function (_j) {
3435
- var type = _j.type, v = _j.v;
3434
+ revive: function (_k) {
3435
+ var type = _k.type, v = _k.v;
3436
3436
  var ab = b64decode(v);
3437
3437
  return typeof Blob !== undefined
3438
3438
  ? new Blob([ab])
@@ -3443,13 +3443,13 @@ var BlobDef = {
3443
3443
  var builtin = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, numberDef), bigIntDef), DateDef), SetDef), MapDef), TypedArraysDefs), ArrayBufferDef), BlobDef);
3444
3444
  function Bison() {
3445
3445
  var typeDefsInputs = [];
3446
- for (var _j = 0; _j < arguments.length; _j++) {
3447
- typeDefsInputs[_j] = arguments[_j];
3446
+ for (var _k = 0; _k < arguments.length; _k++) {
3447
+ typeDefsInputs[_k] = arguments[_k];
3448
3448
  }
3449
3449
  var tson = TypesonSimplified.apply(void 0, __spreadArray$1([builtin, BisonBinaryTypes], typeDefsInputs, false));
3450
3450
  return {
3451
3451
  toBinary: function (value) {
3452
- var _j = this.stringify(value), blob = _j[0], json = _j[1];
3452
+ var _k = this.stringify(value), blob = _k[0], json = _k[1];
3453
3453
  var lenBuf = new ArrayBuffer(4);
3454
3454
  new DataView(lenBuf).setUint32(0, blob.size);
3455
3455
  return new Blob([lenBuf, blob, json]);
@@ -3467,14 +3467,14 @@ function Bison() {
3467
3467
  parse: function (json, binData) {
3468
3468
  return __awaiter$2(this, void 0, void 0, function () {
3469
3469
  var pos, arrayBuffers, buf, view, len, ab;
3470
- return __generator$1(this, function (_j) {
3471
- switch (_j.label) {
3470
+ return __generator$1(this, function (_k) {
3471
+ switch (_k.label) {
3472
3472
  case 0:
3473
3473
  pos = 0;
3474
3474
  arrayBuffers = [];
3475
3475
  return [4 /*yield*/, readBlobBinary(binData)];
3476
3476
  case 1:
3477
- buf = _j.sent();
3477
+ buf = _k.sent();
3478
3478
  view = new DataView(buf);
3479
3479
  while (pos < buf.byteLength) {
3480
3480
  len = view.getUint32(pos);
@@ -3490,20 +3490,20 @@ function Bison() {
3490
3490
  },
3491
3491
  fromBinary: function (blob) {
3492
3492
  return __awaiter$2(this, void 0, void 0, function () {
3493
- var len, _j, binData, json;
3494
- return __generator$1(this, function (_k) {
3495
- switch (_k.label) {
3493
+ var len, _k, binData, json;
3494
+ return __generator$1(this, function (_l) {
3495
+ switch (_l.label) {
3496
3496
  case 0:
3497
- _j = DataView.bind;
3497
+ _k = DataView.bind;
3498
3498
  return [4 /*yield*/, readBlobBinary(blob.slice(0, 4))];
3499
3499
  case 1:
3500
- len = new (_j.apply(DataView, [void 0, _k.sent()]))().getUint32(0);
3500
+ len = new (_k.apply(DataView, [void 0, _l.sent()]))().getUint32(0);
3501
3501
  binData = blob.slice(4, len + 4);
3502
3502
  return [4 /*yield*/, readBlob(blob.slice(len + 4))];
3503
3503
  case 2:
3504
- json = _k.sent();
3504
+ json = _l.sent();
3505
3505
  return [4 /*yield*/, this.parse(json, binData)];
3506
- case 3: return [2 /*return*/, _k.sent()];
3506
+ case 3: return [2 /*return*/, _l.sent()];
3507
3507
  }
3508
3508
  });
3509
3509
  });
@@ -3577,8 +3577,8 @@ var defs = Object.assign(Object.assign({}, undefinedDef), (hasBigIntSupport
3577
3577
  replace: function (fakeBigInt) {
3578
3578
  return Object.assign({ $t: 'bigint' }, fakeBigInt);
3579
3579
  },
3580
- revive: function (_j) {
3581
- var v = _j.v;
3580
+ revive: function (_k) {
3581
+ var v = _k.v;
3582
3582
  return new FakeBigInt(v);
3583
3583
  }
3584
3584
  }
@@ -3626,8 +3626,8 @@ function encodeIdsForServer(schema, currentUser, changes) {
3626
3626
  });
3627
3627
  rv.push(changeClone);
3628
3628
  };
3629
- for (var _j = 0, changes_1 = changes; _j < changes_1.length; _j++) {
3630
- var change = changes_1[_j];
3629
+ for (var _k = 0, changes_1 = changes; _k < changes_1.length; _k++) {
3630
+ var change = changes_1[_k];
3631
3631
  _loop_2(change);
3632
3632
  }
3633
3633
  return rv;
@@ -3641,9 +3641,9 @@ function cloneChange(change, rewriteValues) {
3641
3641
  //import {BisonWebStreamReader} from "dreambase-library/dist/typeson-simplified/BisonWebStreamReader";
3642
3642
  function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, clientIdentity, currentUser) {
3643
3643
  return __awaiter$1(this, void 0, void 0, function () {
3644
- var headers, accessToken, syncRequest, res, _j, _k, _l, text, syncRes;
3645
- return __generator$1(this, function (_m) {
3646
- switch (_m.label) {
3644
+ var headers, accessToken, syncRequest, res, _k, _l, _m, text, syncRes;
3645
+ return __generator$1(this, function (_o) {
3646
+ switch (_o.label) {
3647
3647
  case 0:
3648
3648
  headers = {
3649
3649
  Accept: 'application/json, application/x-bison, application/x-bison-stream',
@@ -3651,7 +3651,7 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3651
3651
  };
3652
3652
  return [4 /*yield*/, loadAccessToken(db)];
3653
3653
  case 1:
3654
- accessToken = _m.sent();
3654
+ accessToken = _o.sent();
3655
3655
  if (accessToken) {
3656
3656
  headers.Authorization = "Bearer ".concat(accessToken);
3657
3657
  }
@@ -3678,7 +3678,7 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3678
3678
  body: TSON.stringify(syncRequest)
3679
3679
  })];
3680
3680
  case 2:
3681
- res = _m.sent();
3681
+ res = _o.sent();
3682
3682
  //const contentLength = Number(res.headers.get('content-length'));
3683
3683
  db.syncStateChangedEvent.next({
3684
3684
  phase: 'pulling'
@@ -3686,20 +3686,20 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3686
3686
  if (!res.ok) {
3687
3687
  throw new HttpError(res);
3688
3688
  }
3689
- _j = res.headers.get('content-type');
3690
- switch (_j) {
3689
+ _k = res.headers.get('content-type');
3690
+ switch (_k) {
3691
3691
  case 'application/x-bison': return [3 /*break*/, 3];
3692
3692
  case 'application/x-bison-stream': return [3 /*break*/, 5];
3693
3693
  case 'application/json': return [3 /*break*/, 5];
3694
3694
  }
3695
3695
  return [3 /*break*/, 5];
3696
3696
  case 3:
3697
- _l = (_k = BISON).fromBinary;
3697
+ _m = (_l = BISON).fromBinary;
3698
3698
  return [4 /*yield*/, res.blob()];
3699
- case 4: return [2 /*return*/, _l.apply(_k, [_m.sent()])];
3699
+ case 4: return [2 /*return*/, _m.apply(_l, [_o.sent()])];
3700
3700
  case 5: return [4 /*yield*/, res.text()];
3701
3701
  case 6:
3702
- text = _m.sent();
3702
+ text = _o.sent();
3703
3703
  syncRes = TSON.parse(text);
3704
3704
  return [2 /*return*/, syncRes];
3705
3705
  }
@@ -3708,16 +3708,16 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3708
3708
  }
3709
3709
  function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySyncedRealms) {
3710
3710
  return __awaiter$1(this, void 0, void 0, function () {
3711
- var ignoredRealms, _j, syncifiedTables_1, table;
3712
- return __generator$1(this, function (_k) {
3713
- switch (_k.label) {
3711
+ var ignoredRealms, _k, syncifiedTables_1, table;
3712
+ return __generator$1(this, function (_l) {
3713
+ switch (_l.label) {
3714
3714
  case 0:
3715
3715
  ignoredRealms = new Set(alreadySyncedRealms || []);
3716
- _j = 0, syncifiedTables_1 = syncifiedTables;
3717
- _k.label = 1;
3716
+ _k = 0, syncifiedTables_1 = syncifiedTables;
3717
+ _l.label = 1;
3718
3718
  case 1:
3719
- if (!(_j < syncifiedTables_1.length)) return [3 /*break*/, 9];
3720
- table = syncifiedTables_1[_j];
3719
+ if (!(_k < syncifiedTables_1.length)) return [3 /*break*/, 9];
3720
+ table = syncifiedTables_1[_k];
3721
3721
  if (!(table.name === "members")) return [3 /*break*/, 3];
3722
3722
  // members
3723
3723
  return [4 /*yield*/, table.toCollection().modify(function (member) {
@@ -3727,7 +3727,7 @@ function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySy
3727
3727
  })];
3728
3728
  case 2:
3729
3729
  // members
3730
- _k.sent();
3730
+ _l.sent();
3731
3731
  return [3 /*break*/, 8];
3732
3732
  case 3:
3733
3733
  if (!(table.name === "roles")) return [3 /*break*/, 4];
@@ -3742,7 +3742,7 @@ function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySy
3742
3742
  })];
3743
3743
  case 5:
3744
3744
  // realms
3745
- _k.sent();
3745
+ _l.sent();
3746
3746
  return [3 /*break*/, 8];
3747
3747
  case 6:
3748
3748
  // application entities
@@ -3757,10 +3757,10 @@ function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySy
3757
3757
  })];
3758
3758
  case 7:
3759
3759
  // application entities
3760
- _k.sent();
3761
- _k.label = 8;
3760
+ _l.sent();
3761
+ _l.label = 8;
3762
3762
  case 8:
3763
- _j++;
3763
+ _k++;
3764
3764
  return [3 /*break*/, 1];
3765
3765
  case 9: return [2 /*return*/];
3766
3766
  }
@@ -3780,8 +3780,8 @@ self.addEventListener('online', function () { return isOnline = true; });
3780
3780
  self.addEventListener('offline', function () { return isOnline = false; });
3781
3781
  function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3782
3782
  return __awaiter$1(this, void 0, void 0, function () {
3783
- return __generator$1(this, function (_j) {
3784
- switch (_j.label) {
3783
+ return __generator$1(this, function (_k) {
3784
+ switch (_k.label) {
3785
3785
  case 0: return [4 /*yield*/, db.$baseRevs.bulkPut(Object.keys(schema)
3786
3786
  .filter(function (table) { return schema[table].markedForSync; })
3787
3787
  .map(function (tableName) {
@@ -3793,7 +3793,7 @@ function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3793
3793
  };
3794
3794
  }))];
3795
3795
  case 1:
3796
- _j.sent();
3796
+ _k.sent();
3797
3797
  return [2 /*return*/];
3798
3798
  }
3799
3799
  });
@@ -3801,8 +3801,8 @@ function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3801
3801
  }
3802
3802
  function getLatestRevisionsPerTable(clientChangeSet, lastRevisions) {
3803
3803
  if (lastRevisions === void 0) { lastRevisions = {}; }
3804
- for (var _j = 0, clientChangeSet_1 = clientChangeSet; _j < clientChangeSet_1.length; _j++) {
3805
- var _k = clientChangeSet_1[_j], table = _k.table, muts = _k.muts;
3804
+ for (var _k = 0, clientChangeSet_1 = clientChangeSet; _k < clientChangeSet_1.length; _k++) {
3805
+ var _l = clientChangeSet_1[_k], table = _l.table, muts = _l.muts;
3806
3806
  var lastRev = muts.length > 0 ? muts[muts.length - 1].rev : null;
3807
3807
  lastRevisions[table] = lastRev || lastRevisions[table] || 0;
3808
3808
  }
@@ -3811,18 +3811,18 @@ function getLatestRevisionsPerTable(clientChangeSet, lastRevisions) {
3811
3811
  function bulkUpdate(table, keys, changeSpecs) {
3812
3812
  return __awaiter$1(this, void 0, void 0, function () {
3813
3813
  var objs, resultKeys, resultObjs;
3814
- return __generator$1(this, function (_j) {
3815
- switch (_j.label) {
3814
+ return __generator$1(this, function (_k) {
3815
+ switch (_k.label) {
3816
3816
  case 0: return [4 /*yield*/, table.bulkGet(keys)];
3817
3817
  case 1:
3818
- objs = _j.sent();
3818
+ objs = _k.sent();
3819
3819
  resultKeys = [];
3820
3820
  resultObjs = [];
3821
3821
  keys.forEach(function (key, idx) {
3822
3822
  var obj = objs[idx];
3823
3823
  if (obj) {
3824
- for (var _j = 0, _k = Object.entries(changeSpecs[idx]); _j < _k.length; _j++) {
3825
- var _l = _k[_j], keyPath = _l[0], value = _l[1];
3824
+ for (var _k = 0, _l = Object.entries(changeSpecs[idx]); _k < _l.length; _k++) {
3825
+ var _m = _l[_k], keyPath = _m[0], value = _m[1];
3826
3826
  if (keyPath === table.schema.primKey.keyPath) {
3827
3827
  if (cmp(value, key) !== 0) {
3828
3828
  throw new Error("Cannot change primary key");
@@ -3840,7 +3840,7 @@ function bulkUpdate(table, keys, changeSpecs) {
3840
3840
  ? table.bulkPut(resultObjs, resultKeys)
3841
3841
  : table.bulkPut(resultObjs))];
3842
3842
  case 2:
3843
- _j.sent();
3843
+ _k.sent();
3844
3844
  return [2 /*return*/];
3845
3845
  }
3846
3846
  });
@@ -3848,15 +3848,15 @@ function bulkUpdate(table, keys, changeSpecs) {
3848
3848
  }
3849
3849
  function applyServerChanges(changes, db) {
3850
3850
  return __awaiter$1(this, void 0, void 0, function () {
3851
- var _loop_3, _j, changes_2, _k, tableName, muts;
3852
- return __generator$1(this, function (_l) {
3853
- switch (_l.label) {
3851
+ var _loop_3, _k, changes_2, _l, tableName, muts;
3852
+ return __generator$1(this, function (_m) {
3853
+ switch (_m.label) {
3854
3854
  case 0:
3855
3855
  console.debug('Applying server changes', changes, Dexie.currentTransaction);
3856
3856
  _loop_3 = function (tableName, muts) {
3857
- var table, primaryKey, keyDecoder, _loop_4, _m, muts_2, mut;
3858
- return __generator$1(this, function (_o) {
3859
- switch (_o.label) {
3857
+ var table, primaryKey, keyDecoder, _loop_4, _o, muts_2, mut;
3858
+ return __generator$1(this, function (_p) {
3859
+ switch (_p.label) {
3860
3860
  case 0:
3861
3861
  table = db.table(tableName);
3862
3862
  if (!table)
@@ -3884,13 +3884,13 @@ function applyServerChanges(changes, db) {
3884
3884
  }
3885
3885
  };
3886
3886
  _loop_4 = function (mut) {
3887
- var keys, _p;
3888
- return __generator$1(this, function (_q) {
3889
- switch (_q.label) {
3887
+ var keys, _q;
3888
+ return __generator$1(this, function (_r) {
3889
+ switch (_r.label) {
3890
3890
  case 0:
3891
3891
  keys = mut.keys.map(keyDecoder);
3892
- _p = mut.type;
3893
- switch (_p) {
3892
+ _q = mut.type;
3893
+ switch (_q) {
3894
3894
  case 'insert': return [3 /*break*/, 1];
3895
3895
  case 'upsert': return [3 /*break*/, 6];
3896
3896
  case 'modify': return [3 /*break*/, 11];
@@ -3902,7 +3902,7 @@ function applyServerChanges(changes, db) {
3902
3902
  if (!primaryKey.outbound) return [3 /*break*/, 3];
3903
3903
  return [4 /*yield*/, table.bulkAdd(mut.values, keys)];
3904
3904
  case 2:
3905
- _q.sent();
3905
+ _r.sent();
3906
3906
  return [3 /*break*/, 5];
3907
3907
  case 3:
3908
3908
  keys.forEach(function (key, i) {
@@ -3911,14 +3911,14 @@ function applyServerChanges(changes, db) {
3911
3911
  });
3912
3912
  return [4 /*yield*/, table.bulkAdd(mut.values)];
3913
3913
  case 4:
3914
- _q.sent();
3915
- _q.label = 5;
3914
+ _r.sent();
3915
+ _r.label = 5;
3916
3916
  case 5: return [3 /*break*/, 20];
3917
3917
  case 6:
3918
3918
  if (!primaryKey.outbound) return [3 /*break*/, 8];
3919
3919
  return [4 /*yield*/, table.bulkPut(mut.values, keys)];
3920
3920
  case 7:
3921
- _q.sent();
3921
+ _r.sent();
3922
3922
  return [3 /*break*/, 10];
3923
3923
  case 8:
3924
3924
  keys.forEach(function (key, i) {
@@ -3927,59 +3927,59 @@ function applyServerChanges(changes, db) {
3927
3927
  });
3928
3928
  return [4 /*yield*/, table.bulkPut(mut.values)];
3929
3929
  case 9:
3930
- _q.sent();
3931
- _q.label = 10;
3930
+ _r.sent();
3931
+ _r.label = 10;
3932
3932
  case 10: return [3 /*break*/, 20];
3933
3933
  case 11:
3934
3934
  if (!(keys.length === 1)) return [3 /*break*/, 13];
3935
3935
  return [4 /*yield*/, table.update(keys[0], mut.changeSpec)];
3936
3936
  case 12:
3937
- _q.sent();
3937
+ _r.sent();
3938
3938
  return [3 /*break*/, 15];
3939
3939
  case 13: return [4 /*yield*/, table.where(':id').anyOf(keys).modify(mut.changeSpec)];
3940
3940
  case 14:
3941
- _q.sent();
3942
- _q.label = 15;
3941
+ _r.sent();
3942
+ _r.label = 15;
3943
3943
  case 15: return [3 /*break*/, 20];
3944
3944
  case 16: return [4 /*yield*/, bulkUpdate(table, keys, mut.changeSpecs)];
3945
3945
  case 17:
3946
- _q.sent();
3946
+ _r.sent();
3947
3947
  return [3 /*break*/, 20];
3948
3948
  case 18: return [4 /*yield*/, table.bulkDelete(keys)];
3949
3949
  case 19:
3950
- _q.sent();
3950
+ _r.sent();
3951
3951
  return [3 /*break*/, 20];
3952
3952
  case 20: return [2 /*return*/];
3953
3953
  }
3954
3954
  });
3955
3955
  };
3956
- _m = 0, muts_2 = muts;
3957
- _o.label = 1;
3956
+ _o = 0, muts_2 = muts;
3957
+ _p.label = 1;
3958
3958
  case 1:
3959
- if (!(_m < muts_2.length)) return [3 /*break*/, 4];
3960
- mut = muts_2[_m];
3959
+ if (!(_o < muts_2.length)) return [3 /*break*/, 4];
3960
+ mut = muts_2[_o];
3961
3961
  return [5 /*yield**/, _loop_4(mut)];
3962
3962
  case 2:
3963
- _o.sent();
3964
- _o.label = 3;
3963
+ _p.sent();
3964
+ _p.label = 3;
3965
3965
  case 3:
3966
- _m++;
3966
+ _o++;
3967
3967
  return [3 /*break*/, 1];
3968
3968
  case 4: return [2 /*return*/];
3969
3969
  }
3970
3970
  });
3971
3971
  };
3972
- _j = 0, changes_2 = changes;
3973
- _l.label = 1;
3972
+ _k = 0, changes_2 = changes;
3973
+ _m.label = 1;
3974
3974
  case 1:
3975
- if (!(_j < changes_2.length)) return [3 /*break*/, 4];
3976
- _k = changes_2[_j], tableName = _k.table, muts = _k.muts;
3975
+ if (!(_k < changes_2.length)) return [3 /*break*/, 4];
3976
+ _l = changes_2[_k], tableName = _l.table, muts = _l.muts;
3977
3977
  return [5 /*yield**/, _loop_3(tableName, muts)];
3978
3978
  case 2:
3979
- _l.sent();
3980
- _l.label = 3;
3979
+ _m.sent();
3980
+ _m.label = 3;
3981
3981
  case 3:
3982
- _j++;
3982
+ _k++;
3983
3983
  return [3 /*break*/, 1];
3984
3984
  case 4: return [2 /*return*/];
3985
3985
  }
@@ -3999,8 +3999,8 @@ function sync(db, options, schema, syncOptions) {
3999
3999
  }
4000
4000
  })
4001
4001
  .catch(function (error) { return __awaiter$1(_this_1, void 0, void 0, function () {
4002
- return __generator$1(this, function (_j) {
4003
- switch (_j.label) {
4002
+ return __generator$1(this, function (_k) {
4003
+ switch (_k.label) {
4004
4004
  case 0:
4005
4005
  if (syncOptions === null || syncOptions === void 0 ? void 0 : syncOptions.justCheckIfNeeded)
4006
4006
  return [2 /*return*/, Promise.reject(error)]; // Just rethrow.
@@ -4021,9 +4021,9 @@ function sync(db, options, schema, syncOptions) {
4021
4021
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 500); })];
4022
4022
  case 1:
4023
4023
  // Retry again in 500 ms but if it fails again, don't retry.
4024
- _j.sent();
4024
+ _k.sent();
4025
4025
  return [4 /*yield*/, sync(db, options, schema, Object.assign(Object.assign({}, syncOptions), { retryImmediatelyOnFetchError: false }))];
4026
- case 2: return [2 /*return*/, _j.sent()];
4026
+ case 2: return [2 /*return*/, _k.sent()];
4027
4027
  case 3:
4028
4028
  // Make sure that no matter whether sync() explodes or not,
4029
4029
  // always update the timestamp. Also store the error.
@@ -4034,7 +4034,7 @@ function sync(db, options, schema, syncOptions) {
4034
4034
  case 4:
4035
4035
  // Make sure that no matter whether sync() explodes or not,
4036
4036
  // always update the timestamp. Also store the error.
4037
- _j.sent();
4037
+ _k.sent();
4038
4038
  db.syncStateChangedEvent.next({
4039
4039
  phase: isOnline ? 'error' : 'offline',
4040
4040
  error: error,
@@ -4044,16 +4044,16 @@ function sync(db, options, schema, syncOptions) {
4044
4044
  });
4045
4045
  }); });
4046
4046
  }
4047
- function _sync(db, options, schema, _j) {
4048
- var _k = _j === void 0 ? {
4047
+ function _sync(db, options, schema, _k) {
4048
+ var _l = _k === void 0 ? {
4049
4049
  isInitialSync: false,
4050
- } : _j, isInitialSync = _k.isInitialSync, cancelToken = _k.cancelToken, justCheckIfNeeded = _k.justCheckIfNeeded, purpose = _k.purpose;
4050
+ } : _k, isInitialSync = _l.isInitialSync, cancelToken = _l.cancelToken, justCheckIfNeeded = _l.justCheckIfNeeded, purpose = _l.purpose;
4051
4051
  var _a;
4052
4052
  return __awaiter$1(this, void 0, void 0, function () {
4053
- var databaseUrl, currentUser, tablesToSync, mutationTables, persistedSyncState, tablesToSyncify, doSyncify, _j, clientChangeSet, syncState, baseRevs, syncIsNeeded, latestRevisions, clientIdentity, res, done;
4053
+ var databaseUrl, currentUser, tablesToSync, mutationTables, persistedSyncState, tablesToSyncify, doSyncify, _k, clientChangeSet, syncState, baseRevs, syncIsNeeded, latestRevisions, clientIdentity, res, done;
4054
4054
  var _this_1 = this;
4055
- return __generator$1(this, function (_k) {
4056
- switch (_k.label) {
4055
+ return __generator$1(this, function (_l) {
4056
+ switch (_l.label) {
4057
4057
  case 0:
4058
4058
  if (!justCheckIfNeeded) {
4059
4059
  console.debug('SYNC STARTED', { isInitialSync: isInitialSync, purpose: purpose });
@@ -4063,12 +4063,12 @@ function _sync(db, options, schema, _j) {
4063
4063
  databaseUrl = options.databaseUrl;
4064
4064
  return [4 /*yield*/, db.getCurrentUser()];
4065
4065
  case 1:
4066
- currentUser = _k.sent();
4066
+ currentUser = _l.sent();
4067
4067
  tablesToSync = currentUser.isLoggedIn ? getSyncableTables(db) : [];
4068
4068
  mutationTables = tablesToSync.map(function (tbl) { return db.table(getMutationTable(tbl.name)); });
4069
4069
  return [4 /*yield*/, db.getPersistedSyncState()];
4070
4070
  case 2:
4071
- persistedSyncState = _k.sent();
4071
+ persistedSyncState = _l.sent();
4072
4072
  tablesToSyncify = !isInitialSync && currentUser.isLoggedIn
4073
4073
  ? getTablesToSyncify(db, persistedSyncState)
4074
4074
  : [];
@@ -4079,8 +4079,8 @@ function _sync(db, options, schema, _j) {
4079
4079
  return [2 /*return*/, true];
4080
4080
  //console.debug('sync doSyncify is true');
4081
4081
  return [4 /*yield*/, db.transaction('rw', tablesToSyncify, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4082
- return __generator$1(this, function (_j) {
4083
- switch (_j.label) {
4082
+ return __generator$1(this, function (_k) {
4083
+ switch (_k.label) {
4084
4084
  case 0:
4085
4085
  // @ts-ignore
4086
4086
  tx.idbtrans.disableChangeTracking = true;
@@ -4088,35 +4088,35 @@ function _sync(db, options, schema, _j) {
4088
4088
  tx.idbtrans.disableAccessControl = true; // TODO: Take care of this flag in access control middleware!
4089
4089
  return [4 /*yield*/, modifyLocalObjectsWithNewUserId(tablesToSyncify, currentUser, persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms)];
4090
4090
  case 1:
4091
- _j.sent();
4091
+ _k.sent();
4092
4092
  return [2 /*return*/];
4093
4093
  }
4094
4094
  });
4095
4095
  }); })];
4096
4096
  case 3:
4097
4097
  //console.debug('sync doSyncify is true');
4098
- _k.sent();
4098
+ _l.sent();
4099
4099
  throwIfCancelled(cancelToken);
4100
- _k.label = 4;
4100
+ _l.label = 4;
4101
4101
  case 4: return [4 /*yield*/, db.transaction('r', db.tables, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
4102
4102
  var syncState, baseRevs, clientChanges, alreadySyncedRealms, syncificationInserts;
4103
- return __generator$1(this, function (_j) {
4104
- switch (_j.label) {
4103
+ return __generator$1(this, function (_k) {
4104
+ switch (_k.label) {
4105
4105
  case 0: return [4 /*yield*/, db.getPersistedSyncState()];
4106
4106
  case 1:
4107
- syncState = _j.sent();
4107
+ syncState = _k.sent();
4108
4108
  return [4 /*yield*/, db.$baseRevs.toArray()];
4109
4109
  case 2:
4110
- baseRevs = _j.sent();
4110
+ baseRevs = _k.sent();
4111
4111
  return [4 /*yield*/, listClientChanges(mutationTables)];
4112
4112
  case 3:
4113
- clientChanges = _j.sent();
4113
+ clientChanges = _k.sent();
4114
4114
  throwIfCancelled(cancelToken);
4115
4115
  if (!doSyncify) return [3 /*break*/, 5];
4116
4116
  alreadySyncedRealms = __spreadArray$1(__spreadArray$1([], ((persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms) || []), true), ((persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.inviteRealms) || []), true);
4117
4117
  return [4 /*yield*/, listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySyncedRealms)];
4118
4118
  case 4:
4119
- syncificationInserts = _j.sent();
4119
+ syncificationInserts = _k.sent();
4120
4120
  throwIfCancelled(cancelToken);
4121
4121
  clientChanges = clientChanges.concat(syncificationInserts);
4122
4122
  return [2 /*return*/, [clientChanges, syncState, baseRevs]];
@@ -4125,7 +4125,7 @@ function _sync(db, options, schema, _j) {
4125
4125
  });
4126
4126
  }); })];
4127
4127
  case 5:
4128
- _j = _k.sent(), clientChangeSet = _j[0], syncState = _j[1], baseRevs = _j[2];
4128
+ _k = _l.sent(), clientChangeSet = _k[0], syncState = _k[1], baseRevs = _k[2];
4129
4129
  syncIsNeeded = clientChangeSet.some(function (set) { return set.muts.some(function (mut) { return mut.keys.length > 0; }); });
4130
4130
  if (justCheckIfNeeded) {
4131
4131
  console.debug('Sync is needed:', syncIsNeeded);
@@ -4143,12 +4143,12 @@ function _sync(db, options, schema, _j) {
4143
4143
  throwIfCancelled(cancelToken);
4144
4144
  return [4 /*yield*/, syncWithServer(clientChangeSet, syncState, baseRevs, db, databaseUrl, schema, clientIdentity, currentUser)];
4145
4145
  case 6:
4146
- res = _k.sent();
4146
+ res = _l.sent();
4147
4147
  console.debug('Sync response', res);
4148
4148
  return [4 /*yield*/, db.transaction('rw', db.tables, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4149
- var _j, _k, tableName, addedClientChanges, _loop_5, _l, mutationTables_1, mutTable, syncState, newSyncState, filteredChanges;
4150
- return __generator$1(this, function (_m) {
4151
- switch (_m.label) {
4149
+ var _k, _l, tableName, addedClientChanges, _loop_5, _m, mutationTables_1, mutTable, syncState, newSyncState, filteredChanges;
4150
+ return __generator$1(this, function (_o) {
4151
+ switch (_o.label) {
4152
4152
  case 0:
4153
4153
  // @ts-ignore
4154
4154
  tx.idbtrans.disableChangeTracking = true;
@@ -4156,8 +4156,8 @@ function _sync(db, options, schema, _j) {
4156
4156
  tx.idbtrans.disableAccessControl = true; // TODO: Take care of this flag in access control middleware!
4157
4157
  // Update db.cloud.schema from server response.
4158
4158
  // Local schema MAY include a subset of tables, so do not force all tables into local schema.
4159
- for (_j = 0, _k = Object.keys(schema); _j < _k.length; _j++) {
4160
- tableName = _k[_j];
4159
+ for (_k = 0, _l = Object.keys(schema); _k < _l.length; _k++) {
4160
+ tableName = _l[_k];
4161
4161
  if (res.schema[tableName]) {
4162
4162
  // Write directly into configured schema. This code can only be executed alone.
4163
4163
  schema[tableName] = res.schema[tableName];
@@ -4165,16 +4165,16 @@ function _sync(db, options, schema, _j) {
4165
4165
  }
4166
4166
  return [4 /*yield*/, db.$syncState.put(schema, 'schema')];
4167
4167
  case 1:
4168
- _m.sent();
4168
+ _o.sent();
4169
4169
  return [4 /*yield*/, listClientChanges(mutationTables, db, {
4170
4170
  since: latestRevisions,
4171
4171
  })];
4172
4172
  case 2:
4173
- addedClientChanges = _m.sent();
4173
+ addedClientChanges = _o.sent();
4174
4174
  _loop_5 = function (mutTable) {
4175
4175
  var tableName, latestRev;
4176
- return __generator$1(this, function (_o) {
4177
- switch (_o.label) {
4176
+ return __generator$1(this, function (_p) {
4177
+ switch (_p.label) {
4178
4178
  case 0:
4179
4179
  tableName = getTableFromMutationTable(mutTable.name);
4180
4180
  if (!!addedClientChanges.some(function (ch) { return ch.table === tableName && ch.muts.length > 0; })) return [3 /*break*/, 2];
@@ -4191,7 +4191,7 @@ function _sync(db, options, schema, _j) {
4191
4191
  // to the server.
4192
4192
  // It is therefore safe to clear all changes (which is faster than
4193
4193
  // deleting a range)
4194
- _o.sent();
4194
+ _p.sent();
4195
4195
  return [3 /*break*/, 5];
4196
4196
  case 2:
4197
4197
  if (!latestRevisions[tableName]) return [3 /*break*/, 4];
@@ -4206,25 +4206,25 @@ function _sync(db, options, schema, _j) {
4206
4206
  .delete(),
4207
4207
  ])];
4208
4208
  case 3:
4209
- _o.sent();
4209
+ _p.sent();
4210
4210
  return [3 /*break*/, 5];
4211
4211
  case 4:
4212
- _o.label = 5;
4212
+ _p.label = 5;
4213
4213
  case 5: return [2 /*return*/];
4214
4214
  }
4215
4215
  });
4216
4216
  };
4217
- _l = 0, mutationTables_1 = mutationTables;
4218
- _m.label = 3;
4217
+ _m = 0, mutationTables_1 = mutationTables;
4218
+ _o.label = 3;
4219
4219
  case 3:
4220
- if (!(_l < mutationTables_1.length)) return [3 /*break*/, 6];
4221
- mutTable = mutationTables_1[_l];
4220
+ if (!(_m < mutationTables_1.length)) return [3 /*break*/, 6];
4221
+ mutTable = mutationTables_1[_m];
4222
4222
  return [5 /*yield**/, _loop_5(mutTable)];
4223
4223
  case 4:
4224
- _m.sent();
4225
- _m.label = 5;
4224
+ _o.sent();
4225
+ _o.label = 5;
4226
4226
  case 5:
4227
- _l++;
4227
+ _m++;
4228
4228
  return [3 /*break*/, 3];
4229
4229
  case 6:
4230
4230
  // Update latestRevisions object according to additional changes:
@@ -4247,10 +4247,10 @@ function _sync(db, options, schema, _j) {
4247
4247
  // The purpose of this operation is to mark a start revision (per table)
4248
4248
  // so that all client-mutations that come after this, will be mapped to current
4249
4249
  // server revision.
4250
- _m.sent();
4250
+ _o.sent();
4251
4251
  return [4 /*yield*/, db.getPersistedSyncState()];
4252
4252
  case 8:
4253
- syncState = _m.sent();
4253
+ syncState = _o.sent();
4254
4254
  //
4255
4255
  // Delete objects from removed realms
4256
4256
  //
@@ -4259,7 +4259,7 @@ function _sync(db, options, schema, _j) {
4259
4259
  //
4260
4260
  // Delete objects from removed realms
4261
4261
  //
4262
- _m.sent();
4262
+ _o.sent();
4263
4263
  newSyncState = syncState || {
4264
4264
  syncedTables: [],
4265
4265
  latestRevisions: {},
@@ -4287,7 +4287,7 @@ function _sync(db, options, schema, _j) {
4287
4287
  //
4288
4288
  // apply server changes
4289
4289
  //
4290
- _m.sent();
4290
+ _o.sent();
4291
4291
  //
4292
4292
  // Update syncState
4293
4293
  //
@@ -4297,11 +4297,11 @@ function _sync(db, options, schema, _j) {
4297
4297
  });
4298
4298
  }); })];
4299
4299
  case 7:
4300
- done = _k.sent();
4300
+ done = _l.sent();
4301
4301
  if (!!done) return [3 /*break*/, 9];
4302
4302
  console.debug('MORE SYNC NEEDED. Go for it again!');
4303
4303
  return [4 /*yield*/, _sync(db, options, schema, { isInitialSync: isInitialSync, cancelToken: cancelToken })];
4304
- case 8: return [2 /*return*/, _k.sent()];
4304
+ case 8: return [2 /*return*/, _l.sent()];
4305
4305
  case 9:
4306
4306
  console.debug('SYNC DONE', { isInitialSync: isInitialSync });
4307
4307
  return [2 /*return*/, false]; // Not needed anymore
@@ -4311,9 +4311,9 @@ function _sync(db, options, schema, _j) {
4311
4311
  }
4312
4312
  function deleteObjectsFromRemovedRealms(db, res, prevState) {
4313
4313
  return __awaiter$1(this, void 0, void 0, function () {
4314
- var deletedRealms, rejectedRealms, previousRealmSet, previousInviteRealmSet, updatedRealmSet, updatedTotalRealmSet, _j, previousRealmSet_1, realmId, _k, _l, realmId, tables, _loop_6, _m, tables_1, table;
4315
- return __generator$1(this, function (_o) {
4316
- switch (_o.label) {
4314
+ var deletedRealms, rejectedRealms, previousRealmSet, previousInviteRealmSet, updatedRealmSet, updatedTotalRealmSet, _k, previousRealmSet_1, realmId, _l, _m, realmId, tables, _loop_6, _o, tables_1, table;
4315
+ return __generator$1(this, function (_p) {
4316
+ switch (_p.label) {
4317
4317
  case 0:
4318
4318
  deletedRealms = new Set();
4319
4319
  rejectedRealms = new Set();
@@ -4321,8 +4321,8 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4321
4321
  previousInviteRealmSet = prevState ? prevState.inviteRealms : [];
4322
4322
  updatedRealmSet = new Set(res.realms);
4323
4323
  updatedTotalRealmSet = new Set(res.realms.concat(res.inviteRealms));
4324
- for (_j = 0, previousRealmSet_1 = previousRealmSet; _j < previousRealmSet_1.length; _j++) {
4325
- realmId = previousRealmSet_1[_j];
4324
+ for (_k = 0, previousRealmSet_1 = previousRealmSet; _k < previousRealmSet_1.length; _k++) {
4325
+ realmId = previousRealmSet_1[_k];
4326
4326
  if (!updatedRealmSet.has(realmId)) {
4327
4327
  rejectedRealms.add(realmId);
4328
4328
  if (!updatedTotalRealmSet.has(realmId)) {
@@ -4330,8 +4330,8 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4330
4330
  }
4331
4331
  }
4332
4332
  }
4333
- for (_k = 0, _l = previousInviteRealmSet.concat(previousRealmSet); _k < _l.length; _k++) {
4334
- realmId = _l[_k];
4333
+ for (_l = 0, _m = previousInviteRealmSet.concat(previousRealmSet); _l < _m.length; _l++) {
4334
+ realmId = _m[_l];
4335
4335
  if (!updatedTotalRealmSet.has(realmId)) {
4336
4336
  deletedRealms.add(realmId);
4337
4337
  }
@@ -4340,8 +4340,8 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4340
4340
  tables = getSyncableTables(db);
4341
4341
  _loop_6 = function (table) {
4342
4342
  var realmsToDelete;
4343
- return __generator$1(this, function (_p) {
4344
- switch (_p.label) {
4343
+ return __generator$1(this, function (_q) {
4344
+ switch (_q.label) {
4345
4345
  case 0:
4346
4346
  realmsToDelete = ['realms', 'members', 'roles'].includes(table.name)
4347
4347
  ? deletedRealms // These tables should spare rejected ones.
@@ -4359,7 +4359,7 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4359
4359
  case 1:
4360
4360
  // There's an index to use:
4361
4361
  //console.debug(`REMOVAL: deleting all ${table.name} where realmId anyOf `, JSON.stringify([...realmsToDelete]));
4362
- _p.sent();
4362
+ _q.sent();
4363
4363
  return [3 /*break*/, 4];
4364
4364
  case 2:
4365
4365
  // No index to use:
@@ -4370,23 +4370,23 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4370
4370
  case 3:
4371
4371
  // No index to use:
4372
4372
  //console.debug(`REMOVAL: deleting all ${table.name} where realmId is any of `, JSON.stringify([...realmsToDelete]), realmsToDelete.size);
4373
- _p.sent();
4374
- _p.label = 4;
4373
+ _q.sent();
4374
+ _q.label = 4;
4375
4375
  case 4: return [2 /*return*/];
4376
4376
  }
4377
4377
  });
4378
4378
  };
4379
- _m = 0, tables_1 = tables;
4380
- _o.label = 1;
4379
+ _o = 0, tables_1 = tables;
4380
+ _p.label = 1;
4381
4381
  case 1:
4382
- if (!(_m < tables_1.length)) return [3 /*break*/, 4];
4383
- table = tables_1[_m];
4382
+ if (!(_o < tables_1.length)) return [3 /*break*/, 4];
4383
+ table = tables_1[_o];
4384
4384
  return [5 /*yield**/, _loop_6(table)];
4385
4385
  case 2:
4386
- _o.sent();
4387
- _o.label = 3;
4386
+ _p.sent();
4387
+ _p.label = 3;
4388
4388
  case 3:
4389
- _m++;
4389
+ _o++;
4390
4390
  return [3 /*break*/, 1];
4391
4391
  case 4: return [2 /*return*/];
4392
4392
  }
@@ -4410,8 +4410,8 @@ function MessagesFromServerConsumer(db) {
4410
4410
  var loopWarning = 0;
4411
4411
  var loopDetection = [0, 0, 0, 0, 0, 0, 0, 0, 0, Date.now()];
4412
4412
  event.subscribe(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
4413
- return __generator$1(this, function (_j) {
4414
- switch (_j.label) {
4413
+ return __generator$1(this, function (_k) {
4414
+ switch (_k.label) {
4415
4415
  case 0:
4416
4416
  if (isWorking)
4417
4417
  return [2 /*return*/];
@@ -4420,12 +4420,12 @@ function MessagesFromServerConsumer(db) {
4420
4420
  loopDetection.shift();
4421
4421
  loopDetection.push(Date.now());
4422
4422
  readyToServe.next(false);
4423
- _j.label = 1;
4423
+ _k.label = 1;
4424
4424
  case 1:
4425
- _j.trys.push([1, , 3, 8]);
4425
+ _k.trys.push([1, , 3, 8]);
4426
4426
  return [4 /*yield*/, consumeQueue()];
4427
4427
  case 2:
4428
- _j.sent();
4428
+ _k.sent();
4429
4429
  return [3 /*break*/, 8];
4430
4430
  case 3:
4431
4431
  if (!(loopDetection[loopDetection.length - 1] - loopDetection[0] <
@@ -4436,7 +4436,7 @@ function MessagesFromServerConsumer(db) {
4436
4436
  loopWarning = Date.now() + 60000;
4437
4437
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 60000); })];
4438
4438
  case 4:
4439
- _j.sent();
4439
+ _k.sent();
4440
4440
  return [3 /*break*/, 7];
4441
4441
  case 5:
4442
4442
  // This is a one-time event. Just pause 10 seconds.
@@ -4444,8 +4444,8 @@ function MessagesFromServerConsumer(db) {
4444
4444
  loopWarning = Date.now() + 10000;
4445
4445
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 10000); })];
4446
4446
  case 6:
4447
- _j.sent();
4448
- _j.label = 7;
4447
+ _k.sent();
4448
+ _k.label = 7;
4449
4449
  case 7:
4450
4450
  isWorking = false;
4451
4451
  readyToServe.next(true);
@@ -4463,24 +4463,24 @@ function MessagesFromServerConsumer(db) {
4463
4463
  return __awaiter$1(this, void 0, void 0, function () {
4464
4464
  var _loop_7;
4465
4465
  var _this_1 = this;
4466
- return __generator$1(this, function (_j) {
4467
- switch (_j.label) {
4466
+ return __generator$1(this, function (_k) {
4467
+ switch (_k.label) {
4468
4468
  case 0:
4469
4469
  _loop_7 = function () {
4470
- var msg, persistedSyncState, _k, user, refreshedLogin, error_2;
4471
- return __generator$1(this, function (_l) {
4472
- switch (_l.label) {
4470
+ var msg, persistedSyncState, _l, user, refreshedLogin, error_2;
4471
+ return __generator$1(this, function (_m) {
4472
+ switch (_m.label) {
4473
4473
  case 0:
4474
4474
  msg = queue.shift();
4475
- _l.label = 1;
4475
+ _m.label = 1;
4476
4476
  case 1:
4477
- _l.trys.push([1, 13, , 14]);
4477
+ _m.trys.push([1, 13, , 14]);
4478
4478
  // If the sync worker or service worker is syncing, wait 'til thei're done.
4479
4479
  // It's no need to have two channels at the same time - even though it wouldnt
4480
4480
  // be a problem - this is an optimization.
4481
4481
  return [4 /*yield*/, db.cloud.syncState
4482
- .pipe(filter(function (_j) {
4483
- var phase = _j.phase;
4482
+ .pipe(filter(function (_k) {
4483
+ var phase = _k.phase;
4484
4484
  return phase === 'in-sync' || phase === 'error';
4485
4485
  }), take(1))
4486
4486
  .toPromise()];
@@ -4488,14 +4488,14 @@ function MessagesFromServerConsumer(db) {
4488
4488
  // If the sync worker or service worker is syncing, wait 'til thei're done.
4489
4489
  // It's no need to have two channels at the same time - even though it wouldnt
4490
4490
  // be a problem - this is an optimization.
4491
- _l.sent();
4491
+ _m.sent();
4492
4492
  console.debug('processing msg', msg);
4493
4493
  persistedSyncState = db.cloud.persistedSyncState.value;
4494
4494
  //syncState.
4495
4495
  if (!msg)
4496
4496
  return [2 /*return*/, "continue"];
4497
- _k = msg.type;
4498
- switch (_k) {
4497
+ _l = msg.type;
4498
+ switch (_l) {
4499
4499
  case 'token-expired': return [3 /*break*/, 3];
4500
4500
  case 'realm-added': return [3 /*break*/, 6];
4501
4501
  case 'realm-accepted': return [3 /*break*/, 7];
@@ -4509,7 +4509,7 @@ function MessagesFromServerConsumer(db) {
4509
4509
  user = db.cloud.currentUser.value;
4510
4510
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, user)];
4511
4511
  case 4:
4512
- refreshedLogin = _l.sent();
4512
+ refreshedLogin = _m.sent();
4513
4513
  // Persist updated access token
4514
4514
  return [4 /*yield*/, db.table('$logins').update(user.userId, {
4515
4515
  accessToken: refreshedLogin.accessToken,
@@ -4517,7 +4517,7 @@ function MessagesFromServerConsumer(db) {
4517
4517
  })];
4518
4518
  case 5:
4519
4519
  // Persist updated access token
4520
- _l.sent();
4520
+ _m.sent();
4521
4521
  // Updating $logins will trigger emission of db.cloud.currentUser observable, which
4522
4522
  // in turn will lead to that connectWebSocket.ts will reconnect the socket with the
4523
4523
  // new token. So we don't need to do anything more here.
@@ -4550,9 +4550,9 @@ function MessagesFromServerConsumer(db) {
4550
4550
  return [3 /*break*/, 12];
4551
4551
  }
4552
4552
  return [4 /*yield*/, db.transaction('rw', db.dx.tables, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4553
- var _j, schema, syncState, currentUser, ourRealmSetHash, clientChanges, mutationTables, filteredChanges;
4554
- return __generator$1(this, function (_k) {
4555
- switch (_k.label) {
4553
+ var _k, schema, syncState, currentUser, ourRealmSetHash, clientChanges, mutationTables, filteredChanges;
4554
+ return __generator$1(this, function (_l) {
4555
+ switch (_l.label) {
4556
4556
  case 0:
4557
4557
  // @ts-ignore
4558
4558
  tx.idbtrans.disableChangeTracking = true;
@@ -4564,7 +4564,7 @@ function MessagesFromServerConsumer(db) {
4564
4564
  db.getCurrentUser(),
4565
4565
  ])];
4566
4566
  case 1:
4567
- _j = _k.sent(), schema = _j[0], syncState = _j[1], currentUser = _j[2];
4567
+ _k = _l.sent(), schema = _k[0], syncState = _k[1], currentUser = _k[2];
4568
4568
  console.debug('ws message queue: in transaction');
4569
4569
  if (!syncState || !schema || !currentUser) {
4570
4570
  console.debug('required vars not present', {
@@ -4599,7 +4599,7 @@ function MessagesFromServerConsumer(db) {
4599
4599
  // Keep TX in non-IDB work
4600
4600
  computeRealmSetHash(syncState))];
4601
4601
  case 2:
4602
- ourRealmSetHash = _k.sent();
4602
+ ourRealmSetHash = _l.sent();
4603
4603
  console.debug('ourRealmSetHash', ourRealmSetHash);
4604
4604
  if (ourRealmSetHash !== msg.realmSetHash) {
4605
4605
  console.debug('not same realmSetHash', msg.realmSetHash);
@@ -4613,9 +4613,9 @@ function MessagesFromServerConsumer(db) {
4613
4613
  mutationTables = getSyncableTables(db).map(function (tbl) { return db.table(getMutationTable(tbl.name)); });
4614
4614
  return [4 /*yield*/, listClientChanges(mutationTables)];
4615
4615
  case 3:
4616
- clientChanges = _k.sent();
4616
+ clientChanges = _l.sent();
4617
4617
  console.debug('msg queue: client changes', clientChanges);
4618
- _k.label = 4;
4618
+ _l.label = 4;
4619
4619
  case 4:
4620
4620
  if (!(msg.changes.length > 0)) return [3 /*break*/, 6];
4621
4621
  filteredChanges = filterServerChangesThroughAddedClientChanges(msg.changes, clientChanges);
@@ -4625,8 +4625,8 @@ function MessagesFromServerConsumer(db) {
4625
4625
  console.debug('applying filtered server changes', filteredChanges);
4626
4626
  return [4 /*yield*/, applyServerChanges(filteredChanges, db)];
4627
4627
  case 5:
4628
- _k.sent();
4629
- _k.label = 6;
4628
+ _l.sent();
4629
+ _l.label = 6;
4630
4630
  case 6:
4631
4631
  // Update latest revisions per table in case there are unsynced changes
4632
4632
  // This can be a real case in future when we allow non-eagery sync.
@@ -4637,37 +4637,37 @@ function MessagesFromServerConsumer(db) {
4637
4637
  console.debug('Updating baseRefs', syncState.latestRevisions);
4638
4638
  return [4 /*yield*/, updateBaseRevs(db, schema, syncState.latestRevisions, msg.newRev)];
4639
4639
  case 7:
4640
- _k.sent();
4640
+ _l.sent();
4641
4641
  //
4642
4642
  // Update syncState
4643
4643
  //
4644
4644
  console.debug('Updating syncState', syncState);
4645
4645
  return [4 /*yield*/, db.$syncState.put(syncState, 'syncState')];
4646
4646
  case 8:
4647
- _k.sent();
4647
+ _l.sent();
4648
4648
  return [2 /*return*/];
4649
4649
  }
4650
4650
  });
4651
4651
  }); })];
4652
4652
  case 11:
4653
- _l.sent();
4653
+ _m.sent();
4654
4654
  console.debug('msg queue: done with rw transaction');
4655
4655
  return [3 /*break*/, 12];
4656
4656
  case 12: return [3 /*break*/, 14];
4657
4657
  case 13:
4658
- error_2 = _l.sent();
4658
+ error_2 = _m.sent();
4659
4659
  console.error("Error in msg queue", error_2);
4660
4660
  return [3 /*break*/, 14];
4661
4661
  case 14: return [2 /*return*/];
4662
4662
  }
4663
4663
  });
4664
4664
  };
4665
- _j.label = 1;
4665
+ _k.label = 1;
4666
4666
  case 1:
4667
4667
  if (!(queue.length > 0)) return [3 /*break*/, 3];
4668
4668
  return [5 /*yield**/, _loop_7()];
4669
4669
  case 2:
4670
- _j.sent();
4670
+ _k.sent();
4671
4671
  return [3 /*break*/, 1];
4672
4672
  case 3: return [2 /*return*/];
4673
4673
  }
@@ -5002,8 +5002,8 @@ function createImplicitPropSetterMiddleware(db) {
5002
5002
  // however, application code will work better if we can always rely on that the properties realmId
5003
5003
  // and owner are set. Application code may index them and query them based on db.cloud.currentUserId,
5004
5004
  // and expect them to be returned. That scenario must work also when db.cloud.currentUserId === 'unauthorized'.
5005
- for (var _j = 0, _k = req.values; _j < _k.length; _j++) {
5006
- var obj = _k[_j];
5005
+ for (var _k = 0, _l = req.values; _k < _l.length; _k++) {
5006
+ var obj = _l[_k];
5007
5007
  if (!obj.owner) {
5008
5008
  obj.owner = trans.currentUser.userId;
5009
5009
  }
@@ -5059,7 +5059,7 @@ function guardedTable(table) {
5059
5059
  }
5060
5060
  function readLock(fn, prop) {
5061
5061
  return function readLocker(req) {
5062
- var _j = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _j.readers, writers = _j.writers;
5062
+ var _k = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _k.readers, writers = _k.writers;
5063
5063
  var numWriters = writers.length;
5064
5064
  var promise = (numWriters > 0
5065
5065
  ? writers[numWriters - 1].then(function () { return fn(req); }, function () { return fn(req); })
@@ -5070,7 +5070,7 @@ function readLock(fn, prop) {
5070
5070
  }
5071
5071
  function writeLock(fn, prop) {
5072
5072
  return function writeLocker(req) {
5073
- var _j = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _j.readers, writers = _j.writers;
5073
+ var _k = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _k.readers, writers = _k.writers;
5074
5074
  var promise = (writers.length > 0
5075
5075
  ? writers[writers.length - 1].then(function () { return fn(req); }, function () { return fn(req); })
5076
5076
  : readers.length > 0
@@ -5089,8 +5089,8 @@ var outstandingTransactions = new BehaviorSubject(new Set());
5089
5089
  * changes to server and cleanup the tracked mutations once the server has
5090
5090
  * ackowledged that it got them.
5091
5091
  */
5092
- function createMutationTrackingMiddleware(_j) {
5093
- var currentUserObservable = _j.currentUserObservable, db = _j.db;
5092
+ function createMutationTrackingMiddleware(_k) {
5093
+ var currentUserObservable = _k.currentUserObservable, db = _k.db;
5094
5094
  return {
5095
5095
  stack: 'dbcore',
5096
5096
  name: 'MutationTrackingMiddleware',
@@ -5331,13 +5331,13 @@ function overrideParseStoresSpec(origFunc, dexie) {
5331
5331
  }
5332
5332
  function performInitialSync(db, cloudOptions, cloudSchema) {
5333
5333
  return __awaiter$1(this, void 0, void 0, function () {
5334
- return __generator$1(this, function (_j) {
5335
- switch (_j.label) {
5334
+ return __generator$1(this, function (_k) {
5335
+ switch (_k.label) {
5336
5336
  case 0:
5337
5337
  console.debug('Performing initial sync');
5338
5338
  return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5339
5339
  case 1:
5340
- _j.sent();
5340
+ _k.sent();
5341
5341
  console.debug('Done initial sync');
5342
5342
  return [2 /*return*/];
5343
5343
  }
@@ -5488,8 +5488,8 @@ var WSConnection = /** @class */ (function (_super_1) {
5488
5488
  return __awaiter$1(this, void 0, void 0, function () {
5489
5489
  var wsUrl, searchParams, ws, everConnected_1;
5490
5490
  var _this_1 = this;
5491
- return __generator$1(this, function (_j) {
5492
- switch (_j.label) {
5491
+ return __generator$1(this, function (_k) {
5492
+ switch (_k.label) {
5493
5493
  case 0:
5494
5494
  this.lastServerActivity = new Date();
5495
5495
  if (this.pauseUntil && this.pauseUntil > new Date()) {
@@ -5515,7 +5515,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5515
5515
  this.webSocketStatus.next('connecting');
5516
5516
  this.pinger = setInterval(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5517
5517
  var _this_1 = this;
5518
- return __generator$1(this, function (_j) {
5518
+ return __generator$1(this, function (_k) {
5519
5519
  if (this.closed) {
5520
5520
  console.debug('pinger check', this.id, 'CLOSED.');
5521
5521
  this.teardown();
@@ -5600,9 +5600,9 @@ var WSConnection = /** @class */ (function (_super_1) {
5600
5600
  _this_1.subscriber.error(e);
5601
5601
  }
5602
5602
  };
5603
- _j.label = 1;
5603
+ _k.label = 1;
5604
5604
  case 1:
5605
- _j.trys.push([1, 3, , 4]);
5605
+ _k.trys.push([1, 3, , 4]);
5606
5606
  everConnected_1 = false;
5607
5607
  return [4 /*yield*/, new Promise(function (resolve, reject) {
5608
5608
  ws.onopen = function (event) {
@@ -5623,7 +5623,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5623
5623
  };
5624
5624
  })];
5625
5625
  case 2:
5626
- _j.sent();
5626
+ _k.sent();
5627
5627
  this.messageProducerSubscription = this.messageProducer.subscribe(function (msg) {
5628
5628
  var _a;
5629
5629
  if (!_this_1.closed) {
@@ -5636,7 +5636,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5636
5636
  });
5637
5637
  return [3 /*break*/, 4];
5638
5638
  case 3:
5639
- _j.sent();
5639
+ _k.sent();
5640
5640
  this.pauseUntil = new Date(Date.now() + FAIL_RETRY_WAIT_TIME);
5641
5641
  return [3 /*break*/, 4];
5642
5642
  case 4: return [2 /*return*/];
@@ -5651,20 +5651,20 @@ function sleep(ms) {
5651
5651
  }
5652
5652
  function waitAndReconnectWhenUserDoesSomething(error) {
5653
5653
  return __awaiter$1(this, void 0, void 0, function () {
5654
- return __generator$1(this, function (_j) {
5655
- switch (_j.label) {
5654
+ return __generator$1(this, function (_k) {
5655
+ switch (_k.label) {
5656
5656
  case 0:
5657
5657
  console.error("WebSocket observable: error but revive when user does some active thing...", error);
5658
5658
  // Sleep some seconds...
5659
5659
  return [4 /*yield*/, sleep(3000)];
5660
5660
  case 1:
5661
5661
  // Sleep some seconds...
5662
- _j.sent();
5662
+ _k.sent();
5663
5663
  // Wait til user does something (move mouse, tap, scroll, click etc)
5664
5664
  console.debug('waiting for someone to do something');
5665
5665
  return [4 /*yield*/, userDoesSomething.pipe(take(1)).toPromise()];
5666
5666
  case 2:
5667
- _j.sent();
5667
+ _k.sent();
5668
5668
  console.debug('someone did something!');
5669
5669
  return [2 /*return*/];
5670
5670
  }
@@ -5688,21 +5688,21 @@ function connectWebSocket(db) {
5688
5688
  var _this_1 = this;
5689
5689
  return db.cloud.persistedSyncState.pipe(filter(function (syncState) { return syncState === null || syncState === void 0 ? void 0 : syncState.serverRevision; }), // Don't connect before there's no initial sync performed.
5690
5690
  take(1), // Don't continue waking up whenever syncState change
5691
- switchMap(function (syncState) { return db.cloud.currentUser.pipe(map(function (userLogin) { return [userLogin, syncState]; })); }), switchMap(function (_j) {
5692
- var userLogin = _j[0], syncState = _j[1];
5691
+ switchMap(function (syncState) { return db.cloud.currentUser.pipe(map(function (userLogin) { return [userLogin, syncState]; })); }), switchMap(function (_k) {
5692
+ var userLogin = _k[0], syncState = _k[1];
5693
5693
  return userIsReallyActive.pipe(map(function (isActive) { return [isActive ? userLogin : null, syncState]; }));
5694
- }), switchMap(function (_j) {
5695
- var userLogin = _j[0], syncState = _j[1];
5696
- return __awaiter$1(_this_1, void 0, void 0, function () { var _j; return __generator$1(this, function (_k) {
5697
- switch (_k.label) {
5694
+ }), switchMap(function (_k) {
5695
+ var userLogin = _k[0], syncState = _k[1];
5696
+ return __awaiter$1(_this_1, void 0, void 0, function () { var _k; return __generator$1(this, function (_l) {
5697
+ switch (_l.label) {
5698
5698
  case 0:
5699
- _j = [userLogin];
5699
+ _k = [userLogin];
5700
5700
  return [4 /*yield*/, computeRealmSetHash(syncState)];
5701
- case 1: return [2 /*return*/, _j.concat([_k.sent()])];
5701
+ case 1: return [2 /*return*/, _k.concat([_l.sent()])];
5702
5702
  }
5703
5703
  }); });
5704
- }), switchMap(function (_j) {
5705
- var userLogin = _j[0], realmSetHash = _j[1];
5704
+ }), switchMap(function (_k) {
5705
+ var userLogin = _k[0], realmSetHash = _k[1];
5706
5706
  // Let server end query changes from last entry of same client-ID and forward.
5707
5707
  // If no new entries, server won't bother the client. If new entries, server sends only those
5708
5708
  // and the baseRev of the last from same client-ID.
@@ -5714,14 +5714,14 @@ function connectWebSocket(db) {
5714
5714
  console.debug('WebSocket observable: Token expired. Refreshing token...');
5715
5715
  return of(true).pipe(switchMap(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5716
5716
  var user, refreshedLogin;
5717
- return __generator$1(this, function (_j) {
5718
- switch (_j.label) {
5717
+ return __generator$1(this, function (_k) {
5718
+ switch (_k.label) {
5719
5719
  case 0: return [4 /*yield*/, db.getCurrentUser()];
5720
5720
  case 1:
5721
- user = _j.sent();
5721
+ user = _k.sent();
5722
5722
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, user)];
5723
5723
  case 2:
5724
- refreshedLogin = _j.sent();
5724
+ refreshedLogin = _k.sent();
5725
5725
  // Persist updated access token
5726
5726
  return [4 /*yield*/, db.table('$logins').update(user.userId, {
5727
5727
  accessToken: refreshedLogin.accessToken,
@@ -5729,7 +5729,7 @@ function connectWebSocket(db) {
5729
5729
  })];
5730
5730
  case 3:
5731
5731
  // Persist updated access token
5732
- _j.sent();
5732
+ _k.sent();
5733
5733
  return [2 /*return*/];
5734
5734
  }
5735
5735
  });
@@ -5757,19 +5757,19 @@ function connectWebSocket(db) {
5757
5757
  function isSyncNeeded(db) {
5758
5758
  var _a;
5759
5759
  return __awaiter$1(this, void 0, void 0, function () {
5760
- var _j;
5761
- return __generator$1(this, function (_k) {
5762
- switch (_k.label) {
5760
+ var _k;
5761
+ return __generator$1(this, function (_l) {
5762
+ switch (_l.label) {
5763
5763
  case 0:
5764
5764
  if (!(((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl) && db.cloud.schema)) return [3 /*break*/, 2];
5765
5765
  return [4 /*yield*/, sync(db, db.cloud.options, db.cloud.schema, { justCheckIfNeeded: true })];
5766
5766
  case 1:
5767
- _j = _k.sent();
5767
+ _k = _l.sent();
5768
5768
  return [3 /*break*/, 3];
5769
5769
  case 2:
5770
- _j = false;
5771
- _k.label = 3;
5772
- case 3: return [2 /*return*/, _j];
5770
+ _k = false;
5771
+ _l.label = 3;
5772
+ case 3: return [2 /*return*/, _k];
5773
5773
  }
5774
5774
  });
5775
5775
  });
@@ -5779,22 +5779,22 @@ var MINUTES = 60 * SECONDS;
5779
5779
  var myId = randomString(16);
5780
5780
  var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5781
5781
  var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5782
- function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5783
- var _k = _j === void 0 ? {} : _j, awaitRemoteJob = _k.awaitRemoteJob;
5782
+ function performGuardedJob(db, jobName, jobsTableName, job, _k) {
5783
+ var _l = _k === void 0 ? {} : _k, awaitRemoteJob = _l.awaitRemoteJob;
5784
5784
  return __awaiter$1(this, void 0, void 0, function () {
5785
5785
  function aquireLock() {
5786
5786
  return __awaiter$1(this, void 0, void 0, function () {
5787
5787
  var gotTheLock, jobDoneObservable, err_1;
5788
5788
  var _this_1 = this;
5789
- return __generator$1(this, function (_j) {
5790
- switch (_j.label) {
5789
+ return __generator$1(this, function (_k) {
5790
+ switch (_k.label) {
5791
5791
  case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5792
5792
  var currentWork;
5793
- return __generator$1(this, function (_j) {
5794
- switch (_j.label) {
5793
+ return __generator$1(this, function (_k) {
5794
+ switch (_k.label) {
5795
5795
  case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5796
5796
  case 1:
5797
- currentWork = _j.sent();
5797
+ currentWork = _k.sent();
5798
5798
  if (!!currentWork) return [3 /*break*/, 3];
5799
5799
  // No one else is working. Let's record that we are.
5800
5800
  return [4 /*yield*/, jobsTable.add({
@@ -5804,7 +5804,7 @@ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5804
5804
  }, jobName)];
5805
5805
  case 2:
5806
5806
  // No one else is working. Let's record that we are.
5807
- _j.sent();
5807
+ _k.sent();
5808
5808
  return [2 /*return*/, true];
5809
5809
  case 3:
5810
5810
  if (!(currentWork.heartbeat.getTime() <
@@ -5818,27 +5818,27 @@ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5818
5818
  }, jobName)];
5819
5819
  case 4:
5820
5820
  // Now, take over!
5821
- _j.sent();
5821
+ _k.sent();
5822
5822
  return [2 /*return*/, true];
5823
5823
  case 5: return [2 /*return*/, false];
5824
5824
  }
5825
5825
  });
5826
5826
  }); })];
5827
5827
  case 1:
5828
- gotTheLock = _j.sent();
5828
+ gotTheLock = _k.sent();
5829
5829
  if (gotTheLock)
5830
5830
  return [2 /*return*/, true];
5831
5831
  if (!awaitRemoteJob) return [3 /*break*/, 6];
5832
- _j.label = 2;
5832
+ _k.label = 2;
5833
5833
  case 2:
5834
- _j.trys.push([2, 4, , 6]);
5834
+ _k.trys.push([2, 4, , 6]);
5835
5835
  jobDoneObservable = from$1(liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5836
5836
  return [4 /*yield*/, jobDoneObservable.toPromise()];
5837
5837
  case 3:
5838
- _j.sent();
5838
+ _k.sent();
5839
5839
  return [2 /*return*/, false];
5840
5840
  case 4:
5841
- err_1 = _j.sent();
5841
+ err_1 = _k.sent();
5842
5842
  if (err_1.name !== 'TimeoutError') {
5843
5843
  throw err_1;
5844
5844
  }
@@ -5847,7 +5847,7 @@ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5847
5847
  // Timeout stopped us! Try aquire the lock now.
5848
5848
  // It will likely succeed this time unless
5849
5849
  // another client took it.
5850
- return [2 /*return*/, _j.sent()];
5850
+ return [2 /*return*/, _k.sent()];
5851
5851
  case 6: return [2 /*return*/, false];
5852
5852
  }
5853
5853
  });
@@ -5855,13 +5855,13 @@ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5855
5855
  }
5856
5856
  var jobsTable, heartbeat;
5857
5857
  var _this_1 = this;
5858
- return __generator$1(this, function (_j) {
5859
- switch (_j.label) {
5858
+ return __generator$1(this, function (_k) {
5859
+ switch (_k.label) {
5860
5860
  case 0:
5861
5861
  jobsTable = db.table(jobsTableName);
5862
5862
  return [4 /*yield*/, aquireLock()];
5863
5863
  case 1:
5864
- if (!_j.sent()) return [3 /*break*/, 6];
5864
+ if (!_k.sent()) return [3 /*break*/, 6];
5865
5865
  heartbeat = setInterval(function () {
5866
5866
  jobsTable.update(jobName, function (job) {
5867
5867
  if (job.nodeId === myId) {
@@ -5869,34 +5869,34 @@ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5869
5869
  }
5870
5870
  });
5871
5871
  }, GUARDED_JOB_HEARTBEAT);
5872
- _j.label = 2;
5872
+ _k.label = 2;
5873
5873
  case 2:
5874
- _j.trys.push([2, , 4, 6]);
5874
+ _k.trys.push([2, , 4, 6]);
5875
5875
  return [4 /*yield*/, job()];
5876
- case 3: return [2 /*return*/, _j.sent()];
5876
+ case 3: return [2 /*return*/, _k.sent()];
5877
5877
  case 4:
5878
5878
  // Stop heartbeat
5879
5879
  clearInterval(heartbeat);
5880
5880
  // Remove the persisted job state:
5881
5881
  return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5882
5882
  var currentWork;
5883
- return __generator$1(this, function (_j) {
5884
- switch (_j.label) {
5883
+ return __generator$1(this, function (_k) {
5884
+ switch (_k.label) {
5885
5885
  case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5886
5886
  case 1:
5887
- currentWork = _j.sent();
5887
+ currentWork = _k.sent();
5888
5888
  if (!(currentWork && currentWork.nodeId === myId)) return [3 /*break*/, 3];
5889
5889
  return [4 /*yield*/, jobsTable.delete(jobName)];
5890
5890
  case 2:
5891
- _j.sent();
5892
- _j.label = 3;
5891
+ _k.sent();
5892
+ _k.label = 3;
5893
5893
  case 3: return [2 /*return*/];
5894
5894
  }
5895
5895
  });
5896
5896
  }); })];
5897
5897
  case 5:
5898
5898
  // Remove the persisted job state:
5899
- _j.sent();
5899
+ _k.sent();
5900
5900
  return [7 /*endfinally*/];
5901
5901
  case 6: return [2 /*return*/];
5902
5902
  }
@@ -5954,32 +5954,36 @@ function syncIfPossible(db, cloudOptions, cloudSchema, options) {
5954
5954
  function _syncIfPossible() {
5955
5955
  return __awaiter$1(this, void 0, void 0, function () {
5956
5956
  var error_4;
5957
- return __generator$1(this, function (_j) {
5958
- switch (_j.label) {
5957
+ return __generator$1(this, function (_k) {
5958
+ switch (_k.label) {
5959
5959
  case 0:
5960
- _j.trys.push([0, 6, , 7]);
5961
- if (!db.cloud.usingServiceWorker) return [3 /*break*/, 3];
5962
- if (!IS_SERVICE_WORKER) return [3 /*break*/, 2];
5960
+ _k.trys.push([0, 6, , 7]);
5961
+ if (!db.cloud.isServiceWorkerDB) return [3 /*break*/, 2];
5962
+ // We are the dedicated sync SW:
5963
5963
  return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, options)];
5964
5964
  case 1:
5965
- _j.sent();
5966
- _j.label = 2;
5967
- case 2: return [3 /*break*/, 5];
5968
- case 3:
5969
- // We use a flow that is better suited for the case when multiple workers want to
5970
- // do the same thing.
5971
- return [4 /*yield*/, performGuardedJob(db, CURRENT_SYNC_WORKER, '$jobs', function () { return sync(db, cloudOptions, cloudSchema, options); })];
5972
- case 4:
5965
+ // We are the dedicated sync SW:
5966
+ _k.sent();
5967
+ return [3 /*break*/, 5];
5968
+ case 2:
5969
+ if (!!db.cloud.usingServiceWorker) return [3 /*break*/, 4];
5970
+ // We use a flow that is better suited for the case when multiple workers want to
5971
+ // do the same thing.
5972
+ return [4 /*yield*/, performGuardedJob(db, CURRENT_SYNC_WORKER, '$jobs', function () { return sync(db, cloudOptions, cloudSchema, options); })];
5973
+ case 3:
5973
5974
  // We use a flow that is better suited for the case when multiple workers want to
5974
5975
  // do the same thing.
5975
- _j.sent();
5976
- _j.label = 5;
5976
+ _k.sent();
5977
+ return [3 /*break*/, 5];
5978
+ case 4:
5979
+ assert(false);
5980
+ throw new Error('Internal _syncIfPossible() - invalid precondition - should not have been called.');
5977
5981
  case 5:
5978
5982
  ongoingSyncs.delete(db);
5979
5983
  console.debug('Done sync');
5980
5984
  return [3 /*break*/, 7];
5981
5985
  case 6:
5982
- error_4 = _j.sent();
5986
+ error_4 = _k.sent();
5983
5987
  ongoingSyncs.delete(db);
5984
5988
  console.error("Failed to sync client changes", error_4);
5985
5989
  throw error_4; // Make sure we rethrow error so that sync event is retried.
@@ -6021,8 +6025,8 @@ function LocalSyncWorker(db, cloudOptions, cloudSchema) {
6021
6025
  // Sync eagerly whenever a change has happened (+ initially when there's no syncState yet)
6022
6026
  // This initial subscribe will also trigger an sync also now.
6023
6027
  console.debug('Starting LocalSyncWorker', db.localSyncEvent['id']);
6024
- localSyncEventSubscription = db.localSyncEvent.subscribe(function (_j) {
6025
- var purpose = _j.purpose;
6028
+ localSyncEventSubscription = db.localSyncEvent.subscribe(function (_k) {
6029
+ var purpose = _k.purpose;
6026
6030
  try {
6027
6031
  syncAndRetry(purpose || 'pull');
6028
6032
  }
@@ -6046,8 +6050,8 @@ function LocalSyncWorker(db, cloudOptions, cloudSchema) {
6046
6050
  function updateSchemaFromOptions(schema, options) {
6047
6051
  if (schema && options) {
6048
6052
  if (options.unsyncedTables) {
6049
- for (var _j = 0, _k = options.unsyncedTables; _j < _k.length; _j++) {
6050
- var tableName = _k[_j];
6053
+ for (var _k = 0, _l = options.unsyncedTables; _k < _l.length; _k++) {
6054
+ var tableName = _l[_k];
6051
6055
  if (schema[tableName]) {
6052
6056
  schema[tableName].markedForSync = false;
6053
6057
  }
@@ -6057,8 +6061,8 @@ function updateSchemaFromOptions(schema, options) {
6057
6061
  }
6058
6062
  function verifySchema(db) {
6059
6063
  var _a, _b;
6060
- for (var _j = 0, _k = db.tables; _j < _k.length; _j++) {
6061
- var table = _k[_j];
6064
+ for (var _k = 0, _l = db.tables; _k < _l.length; _k++) {
6065
+ var table = _l[_k];
6062
6066
  if ((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[table.name]) === null || _b === void 0 ? void 0 : _b.markedForSync) {
6063
6067
  if (table.schema.primKey.auto) {
6064
6068
  throw new Dexie.SchemaError("Table ".concat(table.name, " is both autoIncremented and synced. ") +
@@ -6301,8 +6305,8 @@ var Styles = {
6301
6305
  padding: "8px"
6302
6306
  }
6303
6307
  };
6304
- function Dialog(_j) {
6305
- var children = _j.children;
6308
+ function Dialog(_k) {
6309
+ var children = _k.children;
6306
6310
  return (a$1("div", null, a$1("div", { style: Styles.Darken }), a$1("div", { style: Styles.DialogOuter }, a$1("div", { style: Styles.DialogInner }, children))));
6307
6311
  }
6308
6312
  var t, u, r, o = 0, i = [], c = n.__b, f = n.__r, e = n.diffed, a = n.__c, v = n.unmount;
@@ -6336,24 +6340,24 @@ function g(n) { var t = u; "function" == typeof n.__c && n.__c(), u = t; }
6336
6340
  function j(n) { var t = u; n.__c = n.__(), u = t; }
6337
6341
  function k(n, t) { return !n || n.length !== t.length || t.some(function (t, u) { return t !== n[u]; }); }
6338
6342
  function w(n, t) { return "function" == typeof t ? t(n) : t; }
6339
- function resolveText(_j) {
6340
- var message = _j.message; _j.messageCode; var messageParams = _j.messageParams;
6343
+ function resolveText(_k) {
6344
+ var message = _k.message; _k.messageCode; var messageParams = _k.messageParams;
6341
6345
  return message.replace(/\{\w+\}/ig, function (n) { return messageParams[n.substr(1, n.length - 2)]; });
6342
6346
  }
6343
- function LoginDialog(_j) {
6344
- var title = _j.title, alerts = _j.alerts, fields = _j.fields, onCancel = _j.onCancel, onSubmit = _j.onSubmit;
6345
- var _k = l({}), params = _k[0], setParams = _k[1];
6347
+ function LoginDialog(_k) {
6348
+ var title = _k.title, alerts = _k.alerts, fields = _k.fields, onCancel = _k.onCancel, onSubmit = _k.onSubmit;
6349
+ var _l = l({}), params = _l[0], setParams = _l[1];
6346
6350
  var firstFieldRef = s();
6347
6351
  h(function () { var _a; return (_a = firstFieldRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []);
6348
6352
  return (a$1(Dialog, null, a$1(y, null, a$1("h3", { style: Styles.WindowHeader }, title), alerts.map(function (alert) { return (a$1("p", { style: Styles.Alert[alert.type] }, resolveText(alert))); }), a$1("form", { onSubmit: function (ev) {
6349
6353
  ev.preventDefault();
6350
6354
  onSubmit(params);
6351
- } }, Object.entries(fields).map(function (_j, idx) {
6352
- var fieldName = _j[0], _k = _j[1], type = _k.type, label = _k.label, placeholder = _k.placeholder;
6355
+ } }, Object.entries(fields).map(function (_k, idx) {
6356
+ var fieldName = _k[0], _l = _k[1], type = _l.type, label = _l.label, placeholder = _l.placeholder;
6353
6357
  return (a$1("label", { style: Styles.Label }, label ? "".concat(label, ": ") : '', a$1("input", { ref: idx === 0 ? firstFieldRef : undefined, type: type, name: fieldName, autoComplete: "on", style: Styles.Input, autoFocus: true, placeholder: placeholder, value: params[fieldName] || '', onInput: function (ev) {
6354
- var _j;
6358
+ var _k;
6355
6359
  var _a;
6356
- return setParams(Object.assign(Object.assign({}, params), (_j = {}, _j[fieldName] = valueTransformer(type, (_a = ev.target) === null || _a === void 0 ? void 0 : _a['value']), _j)));
6360
+ return setParams(Object.assign(Object.assign({}, params), (_k = {}, _k[fieldName] = valueTransformer(type, (_a = ev.target) === null || _a === void 0 ? void 0 : _a['value']), _k)));
6357
6361
  } })));
6358
6362
  }))), a$1("div", { style: Styles.ButtonsDiv }, a$1("button", { type: "submit", style: Styles.Button, onClick: function () { return onSubmit(params); } }, "Submit"), a$1("button", { style: Styles.Button, onClick: onCancel }, "Cancel"))));
6359
6363
  }
@@ -6381,8 +6385,8 @@ var LoginGui = /** @class */ (function (_super_1) {
6381
6385
  delete this.subscription;
6382
6386
  }
6383
6387
  };
6384
- LoginGui.prototype.render = function (props, _j) {
6385
- var userInteraction = _j.userInteraction;
6388
+ LoginGui.prototype.render = function (props, _k) {
6389
+ var userInteraction = _k.userInteraction;
6386
6390
  if (!userInteraction)
6387
6391
  return null;
6388
6392
  //if (props.db.cloud.userInteraction.observers.length > 1) return null; // Someone else subscribes.
@@ -6437,8 +6441,8 @@ function computeSyncState(db) {
6437
6441
  lazyWebSocketStatus,
6438
6442
  db.syncStateChangedEvent.pipe(startWith({ phase: 'initial' })),
6439
6443
  userIsReallyActive
6440
- ]).pipe(map(function (_j) {
6441
- var status = _j[0], syncState = _j[1], userIsActive = _j[2];
6444
+ ]).pipe(map(function (_k) {
6445
+ var status = _k[0], syncState = _k[1], userIsActive = _k[2];
6442
6446
  var phase = syncState.phase, error = syncState.error, progress = syncState.progress;
6443
6447
  var adjustedStatus = status;
6444
6448
  if (phase === 'error') {
@@ -6517,10 +6521,10 @@ var getGlobalRolesObservable = associate(function (db) {
6517
6521
  .toArray()
6518
6522
  .then(function (roles) {
6519
6523
  var rv = {};
6520
- for (var _j = 0, _k = roles
6524
+ for (var _k = 0, _l = roles
6521
6525
  .slice()
6522
- .sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); _j < _k.length; _j++) {
6523
- var role = _k[_j];
6526
+ .sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); _k < _l.length; _k++) {
6527
+ var role = _l[_k];
6524
6528
  rv[role.name] = role;
6525
6529
  }
6526
6530
  return rv;
@@ -6532,8 +6536,8 @@ var getInternalAccessControlObservable = associate(function (db) {
6532
6536
  db.members.where({ userId: currentUser.userId }).toArray(),
6533
6537
  db.realms.toArray(),
6534
6538
  currentUser.userId,
6535
- ]).then(function (_j) {
6536
- var selfMembers = _j[0], realms = _j[1], userId = _j[2];
6539
+ ]).then(function (_k) {
6540
+ var selfMembers = _k[0], realms = _k[1], userId = _k[2];
6537
6541
  //console.debug(`PERMS: Result from liveQUery():`, JSON.stringify({selfMembers, realms, userId}, null, 2))
6538
6542
  return { selfMembers: selfMembers, realms: realms, userId: userId };
6539
6543
  }); }); }); })), {
@@ -6566,15 +6570,15 @@ function mapValueObservable(o, mapper) {
6566
6570
  // TODO: Move to dexie-cloud-common
6567
6571
  function mergePermissions() {
6568
6572
  var permissions = [];
6569
- for (var _j = 0; _j < arguments.length; _j++) {
6570
- permissions[_j] = arguments[_j];
6573
+ for (var _k = 0; _k < arguments.length; _k++) {
6574
+ permissions[_k] = arguments[_k];
6571
6575
  }
6572
6576
  if (permissions.length === 0)
6573
6577
  return {};
6574
6578
  var reduced = permissions.reduce(function (result, next) {
6575
6579
  var ret = Object.assign({}, result);
6576
- for (var _j = 0, _k = Object.entries(next); _j < _k.length; _j++) {
6577
- var _l = _k[_j], verb = _l[0], rights = _l[1];
6580
+ for (var _k = 0, _l = Object.entries(next); _k < _l.length; _k++) {
6581
+ var _m = _l[_k], verb = _m[0], rights = _m[1];
6578
6582
  if (verb in ret && ret[verb]) {
6579
6583
  if (ret[verb] === '*')
6580
6584
  continue;
@@ -6592,8 +6596,8 @@ function mergePermissions() {
6592
6596
  typeof ret[verb] === 'object') {
6593
6597
  // Both are objects (verb is 'update')
6594
6598
  var mergedRights = ret[verb]; // because we've checked that typeof ret[verb] === 'object' and earlier that not ret[verb] === '*'.
6595
- for (var _m = 0, _o = Object.entries(rights); _m < _o.length; _m++) {
6596
- var _p = _o[_m], tableName = _p[0], tableRights = _p[1];
6599
+ for (var _o = 0, _p = Object.entries(rights); _o < _p.length; _o++) {
6600
+ var _q = _p[_o], tableName = _q[0], tableRights = _q[1];
6597
6601
  if (mergedRights[tableName] === '*')
6598
6602
  continue;
6599
6603
  if (tableRights === '*') {
@@ -6631,8 +6635,8 @@ var getPermissionsLookupObservable = associate(function (db) {
6631
6635
  var o = createSharedValueObservable(combineLatest([
6632
6636
  getInternalAccessControlObservable(db._novip),
6633
6637
  getGlobalRolesObservable(db._novip),
6634
- ]).pipe(map(function (_j) {
6635
- var _k = _j[0], selfMembers = _k.selfMembers, realms = _k.realms, userId = _k.userId, globalRoles = _j[1];
6638
+ ]).pipe(map(function (_k) {
6639
+ var _l = _k[0], selfMembers = _l.selfMembers, realms = _l.realms, userId = _l.userId, globalRoles = _k[1];
6636
6640
  return ({
6637
6641
  selfMembers: selfMembers,
6638
6642
  realms: realms,
@@ -6645,9 +6649,9 @@ var getPermissionsLookupObservable = associate(function (db) {
6645
6649
  userId: UNAUTHORIZED_USER.userId,
6646
6650
  globalRoles: {},
6647
6651
  });
6648
- return mapValueObservable(o, function (_j) {
6649
- var _k;
6650
- var selfMembers = _j.selfMembers, realms = _j.realms, userId = _j.userId, globalRoles = _j.globalRoles;
6652
+ return mapValueObservable(o, function (_k) {
6653
+ var _l;
6654
+ var selfMembers = _k.selfMembers, realms = _k.realms, userId = _k.userId, globalRoles = _k.globalRoles;
6651
6655
  var rv = realms
6652
6656
  .map(function (realm) {
6653
6657
  var selfRealmMembers = selfMembers.filter(function (m) { return m.realmId === realm.realmId; });
@@ -6663,16 +6667,16 @@ var getPermissionsLookupObservable = associate(function (db) {
6663
6667
  : mergePermissions.apply(void 0, __spreadArray$1(__spreadArray$1([], directPermissionSets, false), rolePermissionSets, false)) });
6664
6668
  })
6665
6669
  .reduce(function (p, c) {
6666
- var _j;
6667
- return (Object.assign(Object.assign({}, p), (_j = {}, _j[c.realmId] = c, _j)));
6668
- }, (_k = {},
6669
- _k[userId] = {
6670
+ var _k;
6671
+ return (Object.assign(Object.assign({}, p), (_k = {}, _k[c.realmId] = c, _k)));
6672
+ }, (_l = {},
6673
+ _l[userId] = {
6670
6674
  realmId: userId,
6671
6675
  owner: userId,
6672
6676
  name: userId,
6673
6677
  permissions: { manage: '*' },
6674
6678
  },
6675
- _k));
6679
+ _l));
6676
6680
  return rv;
6677
6681
  });
6678
6682
  });
@@ -6685,8 +6689,8 @@ var PermissionChecker = /** @class */ (function () {
6685
6689
  PermissionChecker.prototype.add = function () {
6686
6690
  var _this_1 = this;
6687
6691
  var tableNames = [];
6688
- for (var _j = 0; _j < arguments.length; _j++) {
6689
- tableNames[_j] = arguments[_j];
6692
+ for (var _k = 0; _k < arguments.length; _k++) {
6693
+ tableNames[_k] = arguments[_k];
6690
6694
  }
6691
6695
  var _a;
6692
6696
  // If user can manage the whole realm, return true.
@@ -6706,8 +6710,8 @@ var PermissionChecker = /** @class */ (function () {
6706
6710
  };
6707
6711
  PermissionChecker.prototype.update = function () {
6708
6712
  var props = [];
6709
- for (var _j = 0; _j < arguments.length; _j++) {
6710
- props[_j] = arguments[_j];
6713
+ for (var _k = 0; _k < arguments.length; _k++) {
6714
+ props[_k] = arguments[_k];
6711
6715
  }
6712
6716
  var _a, _b;
6713
6717
  // If user is owner of this object, or if user can manage the whole realm, return true.
@@ -6769,11 +6773,11 @@ var getInvitesObservable = associate(function (db) {
6769
6773
  var membersByEmail = getCurrentUserEmitter(db._novip).pipe(switchMap$1(function (currentUser) { return liveQuery(function () { return db.members.where({ email: currentUser.email || '' }).toArray(); }); }));
6770
6774
  var permissions = getPermissionsLookupObservable(db._novip);
6771
6775
  var accessControl = getInternalAccessControlObservable(db._novip);
6772
- return createSharedValueObservable(combineLatest([membersByEmail, accessControl, permissions]).pipe(map$1(function (_j) {
6773
- var membersByEmail = _j[0], accessControl = _j[1], realmLookup = _j[2];
6776
+ return createSharedValueObservable(combineLatest([membersByEmail, accessControl, permissions]).pipe(map$1(function (_k) {
6777
+ var membersByEmail = _k[0], accessControl = _k[1], realmLookup = _k[2];
6774
6778
  var reducer = function (result, m) {
6775
- var _j;
6776
- return (Object.assign(Object.assign({}, result), (_j = {}, _j[m.id] = Object.assign(Object.assign({}, m), { realm: realmLookup[m.realmId] }), _j)));
6779
+ var _k;
6780
+ return (Object.assign(Object.assign({}, result), (_k = {}, _k[m.id] = Object.assign(Object.assign({}, m), { realm: realmLookup[m.realmId] }), _k)));
6777
6781
  };
6778
6782
  var emailMembersById = membersByEmail.reduce(reducer, {});
6779
6783
  var membersById = accessControl.selfMembers.reduce(reducer, emailMembersById);
@@ -6802,16 +6806,16 @@ function dexieCloud(dexie) {
6802
6806
  var localSyncWorker = null;
6803
6807
  dexie.on('ready', function (dexie) { return __awaiter$1(_this_1, void 0, void 0, function () {
6804
6808
  var error_5;
6805
- return __generator$1(this, function (_j) {
6806
- switch (_j.label) {
6809
+ return __generator$1(this, function (_k) {
6810
+ switch (_k.label) {
6807
6811
  case 0:
6808
- _j.trys.push([0, 2, , 3]);
6812
+ _k.trys.push([0, 2, , 3]);
6809
6813
  return [4 /*yield*/, onDbReady(dexie)];
6810
6814
  case 1:
6811
- _j.sent();
6815
+ _k.sent();
6812
6816
  return [3 /*break*/, 3];
6813
6817
  case 2:
6814
- error_5 = _j.sent();
6818
+ error_5 = _k.sent();
6815
6819
  console.error(error_5);
6816
6820
  return [3 /*break*/, 3];
6817
6821
  case 3: return [2 /*return*/];
@@ -6833,7 +6837,7 @@ function dexieCloud(dexie) {
6833
6837
  currentUserEmitter.next(UNAUTHORIZED_USER);
6834
6838
  });
6835
6839
  dexie.cloud = {
6836
- version: '4.0.0-beta.18',
6840
+ version: '4.0.0-beta.19',
6837
6841
  options: Object.assign({}, DEFAULT_OPTIONS),
6838
6842
  schema: null,
6839
6843
  serverState: null,
@@ -6851,16 +6855,16 @@ function dexieCloud(dexie) {
6851
6855
  login: function (hint) {
6852
6856
  return __awaiter$1(this, void 0, void 0, function () {
6853
6857
  var db;
6854
- return __generator$1(this, function (_j) {
6855
- switch (_j.label) {
6858
+ return __generator$1(this, function (_k) {
6859
+ switch (_k.label) {
6856
6860
  case 0:
6857
6861
  db = DexieCloudDB(dexie);
6858
6862
  return [4 /*yield*/, db.cloud.sync()];
6859
6863
  case 1:
6860
- _j.sent();
6864
+ _k.sent();
6861
6865
  return [4 /*yield*/, login(db, hint)];
6862
6866
  case 2:
6863
- _j.sent();
6867
+ _k.sent();
6864
6868
  return [2 /*return*/];
6865
6869
  }
6866
6870
  });
@@ -6878,13 +6882,13 @@ function dexieCloud(dexie) {
6878
6882
  }
6879
6883
  updateSchemaFromOptions(dexie.cloud.schema, dexie.cloud.options);
6880
6884
  },
6881
- sync: function (_j) {
6882
- var _k = _j === void 0 ? { wait: true, purpose: 'push' } : _j, wait = _k.wait, purpose = _k.purpose;
6885
+ sync: function (_k) {
6886
+ var _l = _k === void 0 ? { wait: true, purpose: 'push' } : _k, wait = _l.wait, purpose = _l.purpose;
6883
6887
  return __awaiter$1(this, void 0, void 0, function () {
6884
6888
  var db, syncState_1, newSyncState, syncState_2;
6885
6889
  var _this_1 = this;
6886
- return __generator$1(this, function (_j) {
6887
- switch (_j.label) {
6890
+ return __generator$1(this, function (_k) {
6891
+ switch (_k.label) {
6888
6892
  case 0:
6889
6893
  if (wait === undefined)
6890
6894
  wait = true;
@@ -6898,29 +6902,29 @@ function dexieCloud(dexie) {
6898
6902
  (!syncState_1 || newSyncState.timestamp > syncState_1.timestamp); }), take(1))
6899
6903
  .toPromise()];
6900
6904
  case 1:
6901
- newSyncState = _j.sent();
6905
+ newSyncState = _k.sent();
6902
6906
  if (newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.error) {
6903
6907
  throw new Error("Sync error: " + newSyncState.error);
6904
6908
  }
6905
- _j.label = 2;
6909
+ _k.label = 2;
6906
6910
  case 2: return [3 /*break*/, 6];
6907
6911
  case 3: return [4 /*yield*/, isSyncNeeded(db)];
6908
6912
  case 4:
6909
- if (!_j.sent()) return [3 /*break*/, 6];
6913
+ if (!_k.sent()) return [3 /*break*/, 6];
6910
6914
  syncState_2 = db.cloud.persistedSyncState.value;
6911
6915
  triggerSync(db, purpose);
6912
6916
  if (!wait) return [3 /*break*/, 6];
6913
6917
  console.debug('db.cloud.login() is waiting for sync completion...');
6914
6918
  return [4 /*yield*/, from$1(liveQuery(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
6915
6919
  var syncNeeded, newSyncState;
6916
- return __generator$1(this, function (_j) {
6917
- switch (_j.label) {
6920
+ return __generator$1(this, function (_k) {
6921
+ switch (_k.label) {
6918
6922
  case 0: return [4 /*yield*/, isSyncNeeded(db)];
6919
6923
  case 1:
6920
- syncNeeded = _j.sent();
6924
+ syncNeeded = _k.sent();
6921
6925
  return [4 /*yield*/, db.getPersistedSyncState()];
6922
6926
  case 2:
6923
- newSyncState = _j.sent();
6927
+ newSyncState = _k.sent();
6924
6928
  if ((newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.timestamp) !== (syncState_2 === null || syncState_2 === void 0 ? void 0 : syncState_2.timestamp) &&
6925
6929
  (newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.error))
6926
6930
  throw new Error("Sync error: " + newSyncState.error);
@@ -6931,9 +6935,9 @@ function dexieCloud(dexie) {
6931
6935
  .pipe(filter(function (isNeeded) { return !isNeeded; }), take(1))
6932
6936
  .toPromise()];
6933
6937
  case 5:
6934
- _j.sent();
6938
+ _k.sent();
6935
6939
  console.debug('Done waiting for sync completion because we have nothing to push anymore');
6936
- _j.label = 6;
6940
+ _k.label = 6;
6937
6941
  case 6: return [2 /*return*/];
6938
6942
  }
6939
6943
  });
@@ -6944,8 +6948,8 @@ function dexieCloud(dexie) {
6944
6948
  },
6945
6949
  };
6946
6950
  dexie.Version.prototype['_parseStoresSpec'] = Dexie.override(dexie.Version.prototype['_parseStoresSpec'], function (origFunc) { return overrideParseStoresSpec(origFunc, dexie); });
6947
- dexie.Table.prototype.newId = function (_j) {
6948
- var _k = _j === void 0 ? {} : _j, colocateWith = _k.colocateWith;
6951
+ dexie.Table.prototype.newId = function (_k) {
6952
+ var _l = _k === void 0 ? {} : _k, colocateWith = _l.colocateWith;
6949
6953
  var shardKey = colocateWith && colocateWith.substr(colocateWith.length - 3);
6950
6954
  return generateKey(dexie.cloud.schema[this.name].idPrefix || '', shardKey);
6951
6955
  };
@@ -6960,20 +6964,22 @@ function dexieCloud(dexie) {
6960
6964
  dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
6961
6965
  dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
6962
6966
  function onDbReady(dexie) {
6963
- var _a, _b, _c, _d, _e, _f;
6967
+ var _a, _b, _c, _d, _e, _f, _g;
6964
6968
  return __awaiter$1(this, void 0, void 0, function () {
6965
- var db, swRegistrations, _j, initiallySynced;
6969
+ var db, swRegistrations, _k, initiallySynced;
6966
6970
  var _this_1 = this;
6967
- return __generator$1(this, function (_k) {
6968
- switch (_k.label) {
6971
+ return __generator$1(this, function (_l) {
6972
+ switch (_l.label) {
6969
6973
  case 0:
6970
6974
  closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
6971
6975
  db = DexieCloudDB(dexie);
6972
6976
  // Setup default GUI:
6973
- if (!IS_SERVICE_WORKER) {
6977
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
6974
6978
  if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
6975
6979
  subscriptions.push(setupDefaultGUI(dexie));
6976
6980
  }
6981
+ }
6982
+ if (!db.cloud.isServiceWorkerDB) {
6977
6983
  subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
6978
6984
  }
6979
6985
  //verifyConfig(db.cloud.options); Not needed (yet at least!)
@@ -6984,26 +6990,26 @@ function dexieCloud(dexie) {
6984
6990
  if (!('serviceWorker' in navigator)) return [3 /*break*/, 2];
6985
6991
  return [4 /*yield*/, navigator.serviceWorker.getRegistrations()];
6986
6992
  case 1:
6987
- _j = _k.sent();
6993
+ _k = _l.sent();
6988
6994
  return [3 /*break*/, 3];
6989
6995
  case 2:
6990
- _j = [];
6991
- _k.label = 3;
6996
+ _k = [];
6997
+ _l.label = 3;
6992
6998
  case 3:
6993
- swRegistrations = _j;
6999
+ swRegistrations = _k;
6994
7000
  return [4 /*yield*/, db.transaction('rw', db.$syncState, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
6995
- var _g, _h, _j, options, schema, _k, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _l, _m, _o, table, tblSchema, newTblSchema;
6996
- return __generator$1(this, function (_p) {
6997
- switch (_p.label) {
7001
+ var _h, _j, _k, options, schema, _l, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _m, _o, _p, table, tblSchema, newTblSchema;
7002
+ return __generator$1(this, function (_q) {
7003
+ switch (_q.label) {
6998
7004
  case 0:
6999
- _j = db.cloud, options = _j.options, schema = _j.schema;
7005
+ _k = db.cloud, options = _k.options, schema = _k.schema;
7000
7006
  return [4 /*yield*/, Promise.all([
7001
7007
  db.getOptions(),
7002
7008
  db.getSchema(),
7003
7009
  db.getPersistedSyncState(),
7004
7010
  ])];
7005
7011
  case 1:
7006
- _k = _p.sent(), persistedOptions = _k[0], persistedSchema = _k[1], persistedSyncState = _k[2];
7012
+ _l = _q.sent(), persistedOptions = _l[0], persistedSchema = _l[1], persistedSyncState = _l[2];
7007
7013
  if (!!configuredProgramatically) return [3 /*break*/, 2];
7008
7014
  // Options not specified programatically (use case for SW!)
7009
7015
  // Take persisted options:
@@ -7017,10 +7023,10 @@ function dexieCloud(dexie) {
7017
7023
  throw new Error("Internal error"); // options cannot be null if configuredProgramatically is set.
7018
7024
  return [4 /*yield*/, db.$syncState.put(options, 'options')];
7019
7025
  case 3:
7020
- _p.sent();
7021
- _p.label = 4;
7026
+ _q.sent();
7027
+ _q.label = 4;
7022
7028
  case 4:
7023
- if (((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.tryUseServiceWorker) &&
7029
+ if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) &&
7024
7030
  'serviceWorker' in navigator &&
7025
7031
  swRegistrations.length > 0 &&
7026
7032
  !DISABLE_SERVICEWORKER_STRATEGY) {
@@ -7034,7 +7040,8 @@ function dexieCloud(dexie) {
7034
7040
  // Not configured for using service worker or no service worker
7035
7041
  // registration exists. Don't rely on service worker to do any job.
7036
7042
  // Use LocalSyncWorker instead.
7037
- if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) && !IS_SERVICE_WORKER) {
7043
+ if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.tryUseServiceWorker) &&
7044
+ !db.cloud.isServiceWorkerDB) {
7038
7045
  console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
7039
7046
  ? 'No SW registrations found.'
7040
7047
  : 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
@@ -7054,8 +7061,8 @@ function dexieCloud(dexie) {
7054
7061
  if (!(!persistedSchema ||
7055
7062
  JSON.stringify(persistedSchema) !== JSON.stringify(schema))) return [3 /*break*/, 7];
7056
7063
  newPersistedSchema = persistedSchema || {};
7057
- for (_l = 0, _m = Object.entries(schema); _l < _m.length; _l++) {
7058
- _o = _m[_l], table = _o[0], tblSchema = _o[1];
7064
+ for (_m = 0, _o = Object.entries(schema); _m < _o.length; _m++) {
7065
+ _p = _o[_m], table = _p[0], tblSchema = _p[1];
7059
7066
  newTblSchema = newPersistedSchema[table];
7060
7067
  if (!newTblSchema) {
7061
7068
  newPersistedSchema[table] = Object.assign({}, tblSchema);
@@ -7068,17 +7075,17 @@ function dexieCloud(dexie) {
7068
7075
  }
7069
7076
  return [4 /*yield*/, db.$syncState.put(newPersistedSchema, 'schema')];
7070
7077
  case 6:
7071
- _p.sent();
7078
+ _q.sent();
7072
7079
  // Make sure persisted table prefixes are being used instead of computed ones:
7073
7080
  // Let's assign all props as the newPersistedSchems should be what we should be working with.
7074
7081
  Object.assign(schema, newPersistedSchema);
7075
- _p.label = 7;
7082
+ _q.label = 7;
7076
7083
  case 7: return [2 /*return*/, persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.initiallySynced];
7077
7084
  }
7078
7085
  });
7079
7086
  }); })];
7080
7087
  case 4:
7081
- initiallySynced = _k.sent();
7088
+ initiallySynced = _l.sent();
7082
7089
  if (initiallySynced) {
7083
7090
  db.setInitiallySynced(true);
7084
7091
  }
@@ -7086,13 +7093,13 @@ function dexieCloud(dexie) {
7086
7093
  if (!(((_b = db.cloud.options) === null || _b === void 0 ? void 0 : _b.databaseUrl) && !initiallySynced)) return [3 /*break*/, 6];
7087
7094
  return [4 /*yield*/, performInitialSync(db, db.cloud.options, db.cloud.schema)];
7088
7095
  case 5:
7089
- _k.sent();
7096
+ _l.sent();
7090
7097
  db.setInitiallySynced(true);
7091
- _k.label = 6;
7098
+ _l.label = 6;
7092
7099
  case 6:
7093
7100
  // Manage CurrentUser observable:
7094
7101
  throwIfClosed();
7095
- if (!!IS_SERVICE_WORKER) return [3 /*break*/, 8];
7102
+ if (!!db.cloud.isServiceWorkerDB) return [3 /*break*/, 8];
7096
7103
  subscriptions.push(liveQuery(function () { return db.getCurrentUser(); }).subscribe(currentUserEmitter));
7097
7104
  // Manage PersistendSyncState observable:
7098
7105
  subscriptions.push(liveQuery(function () { return db.getPersistedSyncState(); }).subscribe(db.cloud.persistedSyncState));
@@ -7109,14 +7116,14 @@ function dexieCloud(dexie) {
7109
7116
  // with things from the database and not just the default values.
7110
7117
  // This is so that when db.open() completes, user should be safe
7111
7118
  // to subscribe to these observables and get actual data.
7112
- _k.sent();
7113
- _k.label = 8;
7119
+ _l.sent();
7120
+ _l.label = 8;
7114
7121
  case 8:
7115
7122
  if (!((_c = db.cloud.options) === null || _c === void 0 ? void 0 : _c.requireAuth)) return [3 /*break*/, 10];
7116
7123
  return [4 /*yield*/, login(db)];
7117
7124
  case 9:
7118
- _k.sent();
7119
- _k.label = 10;
7125
+ _l.sent();
7126
+ _l.label = 10;
7120
7127
  case 10:
7121
7128
  if (localSyncWorker)
7122
7129
  localSyncWorker.stop();
@@ -7128,7 +7135,7 @@ function dexieCloud(dexie) {
7128
7135
  }
7129
7136
  else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
7130
7137
  db.cloud.schema &&
7131
- !IS_SERVICE_WORKER) {
7138
+ !db.cloud.isServiceWorkerDB) {
7132
7139
  // There's no SW. Start SyncWorker instead.
7133
7140
  localSyncWorker = LocalSyncWorker(db, db.cloud.options, db.cloud.schema);
7134
7141
  localSyncWorker.start();
@@ -7136,7 +7143,7 @@ function dexieCloud(dexie) {
7136
7143
  }
7137
7144
  // Listen to online event and do sync.
7138
7145
  throwIfClosed();
7139
- if (!IS_SERVICE_WORKER) {
7146
+ if (!db.cloud.isServiceWorkerDB) {
7140
7147
  subscriptions.push(fromEvent(self, 'online').subscribe(function () {
7141
7148
  console.debug('online!');
7142
7149
  db.syncStateChangedEvent.next({
@@ -7150,10 +7157,10 @@ function dexieCloud(dexie) {
7150
7157
  });
7151
7158
  }));
7152
7159
  }
7153
- // Connect WebSocket only if we're a browser window
7154
- if (typeof window !== 'undefined' &&
7155
- !IS_SERVICE_WORKER &&
7156
- ((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl)) {
7160
+ // Connect WebSocket unless we
7161
+ if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) &&
7162
+ !((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.disableWebSocket) &&
7163
+ !IS_SERVICE_WORKER) {
7157
7164
  subscriptions.push(connectWebSocket(db));
7158
7165
  }
7159
7166
  return [2 /*return*/];
@@ -7162,7 +7169,7 @@ function dexieCloud(dexie) {
7162
7169
  });
7163
7170
  }
7164
7171
  }
7165
- dexieCloud.version = '4.0.0-beta.18';
7172
+ dexieCloud.version = '4.0.0-beta.19';
7166
7173
  Dexie.Cloud = dexieCloud;
7167
7174
 
7168
7175
  export { dexieCloud as default, dexieCloud, getTiedObjectId, getTiedRealmId };