dexie-cloud-addon 4.0.0-beta.17 → 4.0.0-beta.18

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.
@@ -50,7 +50,7 @@
50
50
  return __assign.apply(this, arguments);
51
51
  };
52
52
 
53
- function __awaiter$1(thisArg, _arguments, P, generator) {
53
+ function __awaiter$2(thisArg, _arguments, P, generator) {
54
54
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
55
55
  return new (P || (P = Promise))(function (resolve, reject) {
56
56
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -108,13 +108,46 @@
108
108
  *
109
109
  * ==========================================================================
110
110
  *
111
- * Version 4.0.0-beta.17, Fri Apr 08 2022
111
+ * Version 4.0.0-beta.18, Sun Apr 10 2022
112
112
  *
113
113
  * https://dexie.org
114
114
  *
115
115
  * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/
116
116
  *
117
117
  */
118
+ /*! *****************************************************************************
119
+ Copyright (c) Microsoft Corporation.
120
+
121
+ Permission to use, copy, modify, and/or distribute this software for any
122
+ purpose with or without fee is hereby granted.
123
+
124
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
125
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
126
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
127
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
128
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
129
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
130
+ PERFORMANCE OF THIS SOFTWARE.
131
+ ***************************************************************************** */
132
+ function __awaiter$1(thisArg, _arguments, P, generator) {
133
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
134
+ return new (P || (P = Promise))(function (resolve, reject) {
135
+ function fulfilled(value) { try {
136
+ step(generator.next(value));
137
+ }
138
+ catch (e) {
139
+ reject(e);
140
+ } }
141
+ function rejected(value) { try {
142
+ step(generator["throw"](value));
143
+ }
144
+ catch (e) {
145
+ reject(e);
146
+ } }
147
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
148
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
149
+ });
150
+ }
118
151
  //@ts-check
119
152
  var randomFillSync = crypto.getRandomValues;
120
153
  function assert(b) {
@@ -247,8 +280,8 @@
247
280
  switch (entry.type) {
248
281
  case "ups":
249
282
  // Adjust the existing upsert with additional updates
250
- for (var _e = 0, _f = Object.entries(changeSpec); _e < _f.length; _e++) {
251
- var _g = _f[_e], propPath = _g[0], value = _g[1];
283
+ for (var _j = 0, _k = Object.entries(changeSpec); _j < _k.length; _j++) {
284
+ var _l = _k[_j], propPath = _l[0], value = _l[1];
252
285
  setByKeyPath(entry.val, propPath, value);
253
286
  }
254
287
  break;
@@ -275,10 +308,10 @@
275
308
  return target;
276
309
  }
277
310
  function applyOperations(target, ops) {
278
- for (var _e = 0, ops_1 = ops; _e < ops_1.length; _e++) {
279
- var _f = ops_1[_e], table = _f.table, muts = _f.muts;
280
- for (var _g = 0, muts_1 = muts; _g < muts_1.length; _g++) {
281
- var mut = muts_1[_g];
311
+ for (var _j = 0, ops_1 = ops; _j < ops_1.length; _j++) {
312
+ var _k = ops_1[_j], table = _k.table, muts = _k.muts;
313
+ for (var _l = 0, muts_1 = muts; _l < muts_1.length; _l++) {
314
+ var mut = muts_1[_l];
282
315
  applyOperation(target, table, mut);
283
316
  }
284
317
  }
@@ -287,10 +320,10 @@
287
320
  changesToSubtract // additional mutations on client during syncWithServer()
288
321
  ) {
289
322
  var _a, _b, _c;
290
- for (var _e = 0, _f = Object.entries(changesToSubtract); _e < _f.length; _e++) {
291
- var _g = _f[_e], table = _g[0], mutationSet = _g[1];
292
- for (var _h = 0, _j = Object.entries(mutationSet); _h < _j.length; _h++) {
293
- var _k = _j[_h], key = _k[0], mut = _k[1];
323
+ for (var _j = 0, _k = Object.entries(changesToSubtract); _j < _k.length; _j++) {
324
+ var _l = _k[_j], table = _l[0], mutationSet = _l[1];
325
+ for (var _m = 0, _o = Object.entries(mutationSet); _m < _o.length; _m++) {
326
+ var _p = _o[_m], key = _p[0], mut = _p[1];
294
327
  switch (mut.type) {
295
328
  case 'ups':
296
329
  {
@@ -320,8 +353,8 @@
320
353
  switch (targetMut.type) {
321
354
  case 'ups':
322
355
  // Adjust the server upsert with locally updated values.
323
- for (var _l = 0, _m = Object.entries(mut.mod); _l < _m.length; _l++) {
324
- var _o = _m[_l], propPath = _o[0], value = _o[1];
356
+ for (var _q = 0, _r = Object.entries(mut.mod); _q < _r.length; _q++) {
357
+ var _s = _r[_q], propPath = _s[0], value = _s[1];
325
358
  setByKeyPath(targetMut.val, propPath, value);
326
359
  }
327
360
  break;
@@ -330,8 +363,8 @@
330
363
  break;
331
364
  case 'upd':
332
365
  // Remove the local update props from the server update mutation.
333
- for (var _p = 0, _q = Object.keys(mut.mod); _p < _q.length; _p++) {
334
- var propPath = _q[_p];
366
+ for (var _t = 0, _u = Object.keys(mut.mod); _t < _u.length; _t++) {
367
+ var propPath = _u[_t];
335
368
  delete targetMut.mod[propPath];
336
369
  }
337
370
  break;
@@ -354,10 +387,10 @@
354
387
  var txid = randomString$1(16);
355
388
  // Convert data into a temporary map to collect mutations of same table and type
356
389
  var map = {};
357
- for (var _e = 0, _f = Object.entries(inSet); _e < _f.length; _e++) {
358
- var _g = _f[_e], table = _g[0], ops = _g[1];
359
- for (var _h = 0, _j = Object.entries(ops); _h < _j.length; _h++) {
360
- var _k = _j[_h], key = _k[0], op = _k[1];
390
+ for (var _j = 0, _k = Object.entries(inSet); _j < _k.length; _j++) {
391
+ var _l = _k[_j], table = _l[0], ops = _l[1];
392
+ for (var _m = 0, _o = Object.entries(ops); _m < _o.length; _m++) {
393
+ var _p = _o[_m], key = _p[0], op = _p[1];
361
394
  var mapEntry = map[table] || (map[table] = {});
362
395
  var ops_2 = mapEntry[op.type] || (mapEntry[op.type] = []);
363
396
  ops_2.push(Object.assign({ key: key }, op)); // DBKeyMutation doesn't contain key, so we need to bring it in.
@@ -365,14 +398,14 @@
365
398
  }
366
399
  // Start computing the resulting format:
367
400
  var result = [];
368
- for (var _l = 0, _m = Object.entries(map); _l < _m.length; _l++) {
369
- var _o = _m[_l], table = _o[0], ops = _o[1];
401
+ for (var _q = 0, _r = Object.entries(map); _q < _r.length; _q++) {
402
+ var _s = _r[_q], table = _s[0], ops = _s[1];
370
403
  var resultEntry = {
371
404
  table: table,
372
405
  muts: [],
373
406
  };
374
- for (var _p = 0, _q = Object.entries(ops); _p < _q.length; _p++) {
375
- var _r = _q[_p], optype = _r[0], muts = _r[1];
407
+ for (var _t = 0, _u = Object.entries(ops); _t < _u.length; _t++) {
408
+ var _v = _u[_t], optype = _v[0], muts = _v[1];
376
409
  switch (optype) {
377
410
  case "ups": {
378
411
  var op = {
@@ -2019,18 +2052,18 @@
2019
2052
  function registerSyncEvent(db, purpose) {
2020
2053
  return __awaiter$1(this, void 0, void 0, function () {
2021
2054
  var sw, e_3;
2022
- return __generator$1(this, function (_e) {
2023
- switch (_e.label) {
2055
+ return __generator$1(this, function (_j) {
2056
+ switch (_j.label) {
2024
2057
  case 0:
2025
- _e.trys.push([0, 4, , 5]);
2058
+ _j.trys.push([0, 4, , 5]);
2026
2059
  return [4 /*yield*/, navigator.serviceWorker.ready];
2027
2060
  case 1:
2028
- sw = _e.sent();
2061
+ sw = _j.sent();
2029
2062
  if (!(purpose === "push" && sw.sync)) return [3 /*break*/, 3];
2030
2063
  return [4 /*yield*/, sw.sync.register("dexie-cloud:".concat(db.name))];
2031
2064
  case 2:
2032
- _e.sent();
2033
- _e.label = 3;
2065
+ _j.sent();
2066
+ _j.label = 3;
2034
2067
  case 3:
2035
2068
  if (sw.active) {
2036
2069
  // Use postMessage for pull syncs and for browsers not supporting sync event (Firefox, Safari).
@@ -2046,7 +2079,7 @@
2046
2079
  }
2047
2080
  return [2 /*return*/];
2048
2081
  case 4:
2049
- e_3 = _e.sent();
2082
+ e_3 = _j.sent();
2050
2083
  if (!hasComplainedAboutSyncEvent) {
2051
2084
  console.debug("Dexie Cloud: Could not register sync event", e_3);
2052
2085
  hasComplainedAboutSyncEvent = true;
@@ -2058,36 +2091,36 @@
2058
2091
  });
2059
2092
  }
2060
2093
  function registerPeriodicSyncEvent(db) {
2061
- var _e;
2094
+ var _a;
2062
2095
  return __awaiter$1(this, void 0, void 0, function () {
2063
2096
  var periodicSync, e_4, e_5;
2064
- return __generator$1(this, function (_f) {
2065
- switch (_f.label) {
2097
+ return __generator$1(this, function (_j) {
2098
+ switch (_j.label) {
2066
2099
  case 0:
2067
- _f.trys.push([0, 8, , 9]);
2100
+ _j.trys.push([0, 8, , 9]);
2068
2101
  return [4 /*yield*/, navigator.serviceWorker.ready];
2069
2102
  case 1:
2070
- periodicSync = (_f.sent()).periodicSync;
2103
+ periodicSync = (_j.sent()).periodicSync;
2071
2104
  if (!periodicSync) return [3 /*break*/, 6];
2072
- _f.label = 2;
2105
+ _j.label = 2;
2073
2106
  case 2:
2074
- _f.trys.push([2, 4, , 5]);
2075
- return [4 /*yield*/, periodicSync.register("dexie-cloud:".concat(db.name), (_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.periodicSync)];
2107
+ _j.trys.push([2, 4, , 5]);
2108
+ return [4 /*yield*/, periodicSync.register("dexie-cloud:".concat(db.name), (_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.periodicSync)];
2076
2109
  case 3:
2077
- _f.sent();
2110
+ _j.sent();
2078
2111
  console.debug("Dexie Cloud: Successfully registered periodicsync event for ".concat(db.name));
2079
2112
  return [3 /*break*/, 5];
2080
2113
  case 4:
2081
- e_4 = _f.sent();
2114
+ e_4 = _j.sent();
2082
2115
  console.debug("Dexie Cloud: Failed to register periodic sync. Your PWA must be installed to allow background sync.", e_4);
2083
2116
  return [3 /*break*/, 5];
2084
2117
  case 5: return [3 /*break*/, 7];
2085
2118
  case 6:
2086
2119
  console.debug("Dexie Cloud: periodicSync not supported.");
2087
- _f.label = 7;
2120
+ _j.label = 7;
2088
2121
  case 7: return [3 /*break*/, 9];
2089
2122
  case 8:
2090
- e_5 = _f.sent();
2123
+ e_5 = _j.sent();
2091
2124
  console.debug("Dexie Cloud: Could not register periodicSync for ".concat(db.name), e_5);
2092
2125
  return [3 /*break*/, 9];
2093
2126
  case 9: return [2 /*return*/];
@@ -2121,7 +2154,7 @@
2121
2154
  : function (b) { return btoa(String.fromCharCode.apply(null, b)); };
2122
2155
  function interactWithUser(userInteraction, req) {
2123
2156
  return new Promise(function (resolve, reject) {
2124
- var interactionProps = __assign(__assign({}, req), { onSubmit: function (res) {
2157
+ var interactionProps = Object.assign(Object.assign({}, req), { onSubmit: function (res) {
2125
2158
  userInteraction.next(undefined);
2126
2159
  resolve(res);
2127
2160
  }, onCancel: function () {
@@ -2142,8 +2175,8 @@
2142
2175
  }
2143
2176
  function alertUser(userInteraction, title) {
2144
2177
  var alerts = [];
2145
- for (var _e = 2; _e < arguments.length; _e++) {
2146
- alerts[_e - 2] = arguments[_e];
2178
+ for (var _j = 2; _j < arguments.length; _j++) {
2179
+ alerts[_j - 2] = arguments[_j];
2147
2180
  }
2148
2181
  return interactWithUser(userInteraction, {
2149
2182
  type: 'message-alert',
@@ -2155,11 +2188,11 @@
2155
2188
  function promptForEmail(userInteraction, title, emailHint) {
2156
2189
  return __awaiter$1(this, void 0, void 0, function () {
2157
2190
  var email;
2158
- return __generator$1(this, function (_e) {
2159
- switch (_e.label) {
2191
+ return __generator$1(this, function (_j) {
2192
+ switch (_j.label) {
2160
2193
  case 0:
2161
2194
  email = emailHint || '';
2162
- _e.label = 1;
2195
+ _j.label = 1;
2163
2196
  case 1:
2164
2197
  if (!(!email || !/^[\w-\.]+@([\w-]+\.)+[\w-]{2,10}$/.test(email))) return [3 /*break*/, 3];
2165
2198
  return [4 /*yield*/, interactWithUser(userInteraction, {
@@ -2183,7 +2216,7 @@
2183
2216
  },
2184
2217
  })];
2185
2218
  case 2:
2186
- email = (_e.sent()).email;
2219
+ email = (_j.sent()).email;
2187
2220
  return [3 /*break*/, 1];
2188
2221
  case 3: return [2 /*return*/, email];
2189
2222
  }
@@ -2193,8 +2226,8 @@
2193
2226
  function promptForOTP(userInteraction, email, alert) {
2194
2227
  return __awaiter$1(this, void 0, void 0, function () {
2195
2228
  var alerts, otp;
2196
- return __generator$1(this, function (_e) {
2197
- switch (_e.label) {
2229
+ return __generator$1(this, function (_j) {
2230
+ switch (_j.label) {
2198
2231
  case 0:
2199
2232
  alerts = [
2200
2233
  {
@@ -2220,44 +2253,44 @@
2220
2253
  },
2221
2254
  })];
2222
2255
  case 1:
2223
- otp = (_e.sent()).otp;
2256
+ otp = (_j.sent()).otp;
2224
2257
  return [2 /*return*/, otp];
2225
2258
  }
2226
2259
  });
2227
2260
  });
2228
2261
  }
2229
2262
  function loadAccessToken(db) {
2230
- var _e, _f;
2263
+ var _a, _b;
2231
2264
  return __awaiter$1(this, void 0, void 0, function () {
2232
2265
  var currentUser, accessToken, accessTokenExpiration, refreshToken, refreshTokenExpiration, claims, expTime, refreshExpTime, refreshedLogin;
2233
- return __generator$1(this, function (_g) {
2234
- switch (_g.label) {
2266
+ return __generator$1(this, function (_j) {
2267
+ switch (_j.label) {
2235
2268
  case 0: return [4 /*yield*/, db.getCurrentUser()];
2236
2269
  case 1:
2237
- currentUser = _g.sent();
2270
+ currentUser = _j.sent();
2238
2271
  accessToken = currentUser.accessToken, accessTokenExpiration = currentUser.accessTokenExpiration, refreshToken = currentUser.refreshToken, refreshTokenExpiration = currentUser.refreshTokenExpiration, claims = currentUser.claims;
2239
2272
  if (!accessToken)
2240
2273
  return [2 /*return*/];
2241
- expTime = (_e = accessTokenExpiration === null || accessTokenExpiration === void 0 ? void 0 : accessTokenExpiration.getTime()) !== null && _e !== void 0 ? _e : Infinity;
2274
+ expTime = (_a = accessTokenExpiration === null || accessTokenExpiration === void 0 ? void 0 : accessTokenExpiration.getTime()) !== null && _a !== void 0 ? _a : Infinity;
2242
2275
  if (expTime > Date.now()) {
2243
2276
  return [2 /*return*/, accessToken];
2244
2277
  }
2245
2278
  if (!refreshToken) {
2246
2279
  throw new Error("Refresh token missing");
2247
2280
  }
2248
- refreshExpTime = (_f = refreshTokenExpiration === null || refreshTokenExpiration === void 0 ? void 0 : refreshTokenExpiration.getTime()) !== null && _f !== void 0 ? _f : Infinity;
2281
+ refreshExpTime = (_b = refreshTokenExpiration === null || refreshTokenExpiration === void 0 ? void 0 : refreshTokenExpiration.getTime()) !== null && _b !== void 0 ? _b : Infinity;
2249
2282
  if (refreshExpTime <= Date.now()) {
2250
2283
  throw new Error("Refresh token has expired");
2251
2284
  }
2252
2285
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, currentUser)];
2253
2286
  case 2:
2254
- refreshedLogin = _g.sent();
2287
+ refreshedLogin = _j.sent();
2255
2288
  return [4 /*yield*/, db.table('$logins').update(claims.sub, {
2256
2289
  accessToken: refreshedLogin.accessToken,
2257
2290
  accessTokenExpiration: refreshedLogin.accessTokenExpiration,
2258
2291
  })];
2259
2292
  case 3:
2260
- _g.sent();
2293
+ _j.sent();
2261
2294
  return [2 /*return*/, refreshedLogin.accessToken];
2262
2295
  }
2263
2296
  });
@@ -2265,8 +2298,8 @@
2265
2298
  }
2266
2299
  function authenticate(url, context, fetchToken, userInteraction, hints) {
2267
2300
  return __awaiter$1(this, void 0, void 0, function () {
2268
- return __generator$1(this, function (_e) {
2269
- switch (_e.label) {
2301
+ return __generator$1(this, function (_j) {
2302
+ switch (_j.label) {
2270
2303
  case 0:
2271
2304
  if (!(context.accessToken &&
2272
2305
  context.accessTokenExpiration.getTime() > Date.now())) return [3 /*break*/, 1];
@@ -2276,9 +2309,9 @@
2276
2309
  (!context.refreshTokenExpiration ||
2277
2310
  context.refreshTokenExpiration.getTime() > Date.now()))) return [3 /*break*/, 3];
2278
2311
  return [4 /*yield*/, refreshAccessToken(url, context)];
2279
- case 2: return [2 /*return*/, _e.sent()];
2312
+ case 2: return [2 /*return*/, _j.sent()];
2280
2313
  case 3: return [4 /*yield*/, userAuthenticate(context, fetchToken, userInteraction, hints)];
2281
- case 4: return [2 /*return*/, _e.sent()];
2314
+ case 4: return [2 /*return*/, _j.sent()];
2282
2315
  }
2283
2316
  });
2284
2317
  });
@@ -2286,8 +2319,8 @@
2286
2319
  function refreshAccessToken(url, login) {
2287
2320
  return __awaiter$1(this, void 0, void 0, function () {
2288
2321
  var time_stamp, signing_algorithm, textEncoder, data, binarySignature, signature, tokenRequest, res, response;
2289
- return __generator$1(this, function (_e) {
2290
- switch (_e.label) {
2322
+ return __generator$1(this, function (_j) {
2323
+ switch (_j.label) {
2291
2324
  case 0:
2292
2325
  if (!login.refreshToken)
2293
2326
  throw new Error("Cannot refresh token - refresh token is missing.");
@@ -2299,7 +2332,7 @@
2299
2332
  data = textEncoder.encode(login.refreshToken + time_stamp);
2300
2333
  return [4 /*yield*/, crypto.subtle.sign(signing_algorithm, login.nonExportablePrivateKey, data)];
2301
2334
  case 1:
2302
- binarySignature = _e.sent();
2335
+ binarySignature = _j.sent();
2303
2336
  signature = b64encode(binarySignature);
2304
2337
  tokenRequest = {
2305
2338
  grant_type: 'refresh_token',
@@ -2316,12 +2349,12 @@
2316
2349
  mode: 'cors',
2317
2350
  })];
2318
2351
  case 2:
2319
- res = _e.sent();
2352
+ res = _j.sent();
2320
2353
  if (res.status !== 200)
2321
2354
  throw new Error("RefreshToken: Status ".concat(res.status, " from ").concat(url, "/token"));
2322
2355
  return [4 /*yield*/, res.json()];
2323
2356
  case 3:
2324
- response = _e.sent();
2357
+ response = _j.sent();
2325
2358
  login.accessToken = response.accessToken;
2326
2359
  login.accessTokenExpiration = response.accessTokenExpiration
2327
2360
  ? new Date(response.accessTokenExpiration)
@@ -2333,9 +2366,9 @@
2333
2366
  }
2334
2367
  function userAuthenticate(context, fetchToken, userInteraction, hints) {
2335
2368
  return __awaiter$1(this, void 0, void 0, function () {
2336
- var _e, privateKey, publicKey, publicKeySPKI, publicKeyPEM, response2, error_1;
2337
- return __generator$1(this, function (_f) {
2338
- switch (_f.label) {
2369
+ var _j, privateKey, publicKey, publicKeySPKI, publicKeyPEM, response2, error_1;
2370
+ return __generator$1(this, function (_k) {
2371
+ switch (_k.label) {
2339
2372
  case 0: return [4 /*yield*/, crypto.subtle.generateKey({
2340
2373
  name: 'RSASSA-PKCS1-v1_5',
2341
2374
  modulusLength: 2048,
@@ -2344,24 +2377,24 @@
2344
2377
  }, false, // Non-exportable...
2345
2378
  ['sign', 'verify'])];
2346
2379
  case 1:
2347
- _e = _f.sent(), privateKey = _e.privateKey, publicKey = _e.publicKey;
2380
+ _j = _k.sent(), privateKey = _j.privateKey, publicKey = _j.publicKey;
2348
2381
  if (!privateKey || !publicKey)
2349
2382
  throw new Error("Could not generate RSA keypair"); // Typings suggest these can be undefined...
2350
2383
  context.nonExportablePrivateKey = privateKey; //...but storable!
2351
2384
  return [4 /*yield*/, crypto.subtle.exportKey('spki', publicKey)];
2352
2385
  case 2:
2353
- publicKeySPKI = _f.sent();
2386
+ publicKeySPKI = _k.sent();
2354
2387
  publicKeyPEM = spkiToPEM(publicKeySPKI);
2355
2388
  context.publicKey = publicKey;
2356
- _f.label = 3;
2389
+ _k.label = 3;
2357
2390
  case 3:
2358
- _f.trys.push([3, 7, , 9]);
2391
+ _k.trys.push([3, 7, , 9]);
2359
2392
  return [4 /*yield*/, fetchToken({
2360
2393
  public_key: publicKeyPEM,
2361
2394
  hints: hints,
2362
2395
  })];
2363
2396
  case 4:
2364
- response2 = _f.sent();
2397
+ response2 = _k.sent();
2365
2398
  if (response2.type !== 'tokens')
2366
2399
  throw new Error("Unexpected response type from token endpoint: ".concat(response2.type));
2367
2400
  context.accessToken = response2.accessToken;
@@ -2382,11 +2415,11 @@
2382
2415
  alerts: response2.alerts,
2383
2416
  })];
2384
2417
  case 5:
2385
- _f.sent();
2386
- _f.label = 6;
2418
+ _k.sent();
2419
+ _k.label = 6;
2387
2420
  case 6: return [2 /*return*/, context];
2388
2421
  case 7:
2389
- error_1 = _f.sent();
2422
+ error_1 = _k.sent();
2390
2423
  return [4 /*yield*/, alertUser(userInteraction, 'Authentication Failed', {
2391
2424
  type: 'error',
2392
2425
  messageCode: 'GENERIC_ERROR',
@@ -2394,7 +2427,7 @@
2394
2427
  messageParams: {}
2395
2428
  }).catch(function () { })];
2396
2429
  case 8:
2397
- _f.sent();
2430
+ _k.sent();
2398
2431
  throw error_1;
2399
2432
  case 9: return [2 /*return*/];
2400
2433
  }
@@ -2437,7 +2470,7 @@
2437
2470
  AuthPersistedContext.prototype.save = function () {
2438
2471
  return __awaiter$1(this, void 0, void 0, function () {
2439
2472
  var db;
2440
- return __generator$1(this, function (_e) {
2473
+ return __generator$1(this, function (_j) {
2441
2474
  db = wm$1.get(this);
2442
2475
  db.table("$logins").put(this);
2443
2476
  return [2 /*return*/];
@@ -2464,21 +2497,21 @@
2464
2497
  }(Error));
2465
2498
  function otpFetchTokenCallback(db) {
2466
2499
  var userInteraction = db.cloud.userInteraction;
2467
- return function otpAuthenticate(_e) {
2468
- var _f;
2469
- var public_key = _e.public_key, hints = _e.hints;
2500
+ return function otpAuthenticate(_j) {
2501
+ var public_key = _j.public_key, hints = _j.hints;
2502
+ var _a;
2470
2503
  return __awaiter$1(this, void 0, void 0, function () {
2471
- var tokenRequest, url, demo_user, email, res1, errMsg, response, otp, res2, errorText, _g, errMsg, response2;
2472
- return __generator$1(this, function (_h) {
2473
- switch (_h.label) {
2504
+ var tokenRequest, url, demo_user, email, res1, errMsg, response, otp, res2, errorText, _j, errMsg, response2;
2505
+ return __generator$1(this, function (_k) {
2506
+ switch (_k.label) {
2474
2507
  case 0:
2475
- url = (_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl;
2508
+ url = (_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl;
2476
2509
  if (!url)
2477
2510
  throw new Error("No database URL given.");
2478
2511
  if (!((hints === null || hints === void 0 ? void 0 : hints.grant_type) === 'demo')) return [3 /*break*/, 2];
2479
2512
  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))];
2480
2513
  case 1:
2481
- demo_user = _h.sent();
2514
+ demo_user = _k.sent();
2482
2515
  tokenRequest = {
2483
2516
  demo_user: demo_user,
2484
2517
  grant_type: 'demo',
@@ -2488,25 +2521,25 @@
2488
2521
  return [3 /*break*/, 4];
2489
2522
  case 2: return [4 /*yield*/, promptForEmail(userInteraction, 'Enter email address', hints === null || hints === void 0 ? void 0 : hints.email)];
2490
2523
  case 3:
2491
- email = _h.sent();
2524
+ email = _k.sent();
2492
2525
  tokenRequest = {
2493
2526
  email: email,
2494
2527
  grant_type: 'otp',
2495
2528
  scopes: ['ACCESS_DB'],
2496
2529
  public_key: public_key,
2497
2530
  };
2498
- _h.label = 4;
2531
+ _k.label = 4;
2499
2532
  case 4: return [4 /*yield*/, fetch("".concat(url, "/token"), {
2500
2533
  body: JSON.stringify(tokenRequest),
2501
2534
  method: 'post',
2502
2535
  headers: { 'Content-Type': 'application/json', mode: 'cors' },
2503
2536
  })];
2504
2537
  case 5:
2505
- res1 = _h.sent();
2538
+ res1 = _k.sent();
2506
2539
  if (!(res1.status !== 200)) return [3 /*break*/, 8];
2507
2540
  return [4 /*yield*/, res1.text()];
2508
2541
  case 6:
2509
- errMsg = _h.sent();
2542
+ errMsg = _k.sent();
2510
2543
  return [4 /*yield*/, alertUser(userInteraction, "Token request failed", {
2511
2544
  type: 'error',
2512
2545
  messageCode: 'GENERIC_ERROR',
@@ -2514,11 +2547,11 @@
2514
2547
  messageParams: {}
2515
2548
  }).catch(function () { })];
2516
2549
  case 7:
2517
- _h.sent();
2550
+ _k.sent();
2518
2551
  throw new HttpError(res1, errMsg);
2519
2552
  case 8: return [4 /*yield*/, res1.json()];
2520
2553
  case 9:
2521
- response = _h.sent();
2554
+ response = _k.sent();
2522
2555
  if (!(response.type === 'tokens')) return [3 /*break*/, 10];
2523
2556
  // Demo user request can get a "tokens" response right away
2524
2557
  return [2 /*return*/, response];
@@ -2528,7 +2561,7 @@
2528
2561
  throw new Error("Unexpected response from ".concat(url, "/token"));
2529
2562
  return [4 /*yield*/, promptForOTP(userInteraction, tokenRequest.email)];
2530
2563
  case 11:
2531
- otp = _h.sent();
2564
+ otp = _k.sent();
2532
2565
  tokenRequest.otp = otp || '';
2533
2566
  tokenRequest.otp_id = response.otp_id;
2534
2567
  return [4 /*yield*/, fetch("".concat(url, "/token"), {
@@ -2538,14 +2571,14 @@
2538
2571
  mode: 'cors',
2539
2572
  })];
2540
2573
  case 12:
2541
- res2 = _h.sent();
2542
- _h.label = 13;
2574
+ res2 = _k.sent();
2575
+ _k.label = 13;
2543
2576
  case 13:
2544
2577
  if (!(res2.status === 401)) return [3 /*break*/, 17];
2545
2578
  return [4 /*yield*/, res2.text()];
2546
2579
  case 14:
2547
- errorText = _h.sent();
2548
- _g = tokenRequest;
2580
+ errorText = _k.sent();
2581
+ _j = tokenRequest;
2549
2582
  return [4 /*yield*/, promptForOTP(userInteraction, tokenRequest.email, {
2550
2583
  type: 'error',
2551
2584
  messageCode: 'INVALID_OTP',
@@ -2553,7 +2586,7 @@
2553
2586
  messageParams: {}
2554
2587
  })];
2555
2588
  case 15:
2556
- _g.otp = _h.sent();
2589
+ _j.otp = _k.sent();
2557
2590
  return [4 /*yield*/, fetch("".concat(url, "/token"), {
2558
2591
  body: JSON.stringify(tokenRequest),
2559
2592
  method: 'post',
@@ -2561,13 +2594,13 @@
2561
2594
  mode: 'cors',
2562
2595
  })];
2563
2596
  case 16:
2564
- res2 = _h.sent();
2597
+ res2 = _k.sent();
2565
2598
  return [3 /*break*/, 13];
2566
2599
  case 17:
2567
2600
  if (!(res2.status !== 200)) return [3 /*break*/, 20];
2568
2601
  return [4 /*yield*/, res2.text()];
2569
2602
  case 18:
2570
- errMsg = _h.sent();
2603
+ errMsg = _k.sent();
2571
2604
  return [4 /*yield*/, alertUser(userInteraction, "OTP Authentication Failed", {
2572
2605
  type: 'error',
2573
2606
  messageCode: 'GENERIC_ERROR',
@@ -2575,11 +2608,11 @@
2575
2608
  messageParams: {}
2576
2609
  }).catch(function () { })];
2577
2610
  case 19:
2578
- _h.sent();
2611
+ _k.sent();
2579
2612
  throw new HttpError(res2, errMsg);
2580
2613
  case 20: return [4 /*yield*/, res2.json()];
2581
2614
  case 21:
2582
- response2 = _h.sent();
2615
+ response2 = _k.sent();
2583
2616
  return [2 /*return*/, response2];
2584
2617
  case 22: throw new Error("Unexpected response from ".concat(url, "/token"));
2585
2618
  }
@@ -2602,19 +2635,19 @@
2602
2635
  return __awaiter$1(this, void 0, void 0, function () {
2603
2636
  var $logins;
2604
2637
  var _this_1 = this;
2605
- return __generator$1(this, function (_e) {
2606
- switch (_e.label) {
2638
+ return __generator$1(this, function (_j) {
2639
+ switch (_j.label) {
2607
2640
  case 0:
2608
2641
  if (user.userId === db.cloud.currentUserId)
2609
2642
  return [2 /*return*/]; // Already this user.
2610
2643
  $logins = db.table('$logins');
2611
2644
  return [4 /*yield*/, db.transaction('rw', $logins, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
2612
2645
  var existingLogins;
2613
- return __generator$1(this, function (_e) {
2614
- switch (_e.label) {
2646
+ return __generator$1(this, function (_j) {
2647
+ switch (_j.label) {
2615
2648
  case 0: return [4 /*yield*/, $logins.toArray()];
2616
2649
  case 1:
2617
- existingLogins = _e.sent();
2650
+ existingLogins = _j.sent();
2618
2651
  return [4 /*yield*/, Promise.all(existingLogins
2619
2652
  .filter(function (login) { return login.userId !== user.userId && login.isLoggedIn; })
2620
2653
  .map(function (login) {
@@ -2622,19 +2655,19 @@
2622
2655
  return $logins.put(login);
2623
2656
  }))];
2624
2657
  case 2:
2625
- _e.sent();
2658
+ _j.sent();
2626
2659
  user.isLoggedIn = true;
2627
2660
  user.lastLogin = new Date();
2628
2661
  return [4 /*yield*/, user.save()];
2629
2662
  case 3:
2630
- _e.sent();
2663
+ _j.sent();
2631
2664
  console.debug('Saved new user', user.email);
2632
2665
  return [2 /*return*/];
2633
2666
  }
2634
2667
  });
2635
2668
  }); })];
2636
2669
  case 1:
2637
- _e.sent();
2670
+ _j.sent();
2638
2671
  return [4 /*yield*/, new Promise(function (resolve) {
2639
2672
  if (db.cloud.currentUserId === user.userId) {
2640
2673
  resolve(null);
@@ -2649,7 +2682,7 @@
2649
2682
  }
2650
2683
  })];
2651
2684
  case 2:
2652
- _e.sent();
2685
+ _j.sent();
2653
2686
  return [2 /*return*/];
2654
2687
  }
2655
2688
  });
@@ -2658,11 +2691,11 @@
2658
2691
  function login(db, hints) {
2659
2692
  return __awaiter$1(this, void 0, void 0, function () {
2660
2693
  var currentUser, context;
2661
- return __generator$1(this, function (_e) {
2662
- switch (_e.label) {
2694
+ return __generator$1(this, function (_j) {
2695
+ switch (_j.label) {
2663
2696
  case 0: return [4 /*yield*/, db.getCurrentUser()];
2664
2697
  case 1:
2665
- currentUser = _e.sent();
2698
+ currentUser = _j.sent();
2666
2699
  if (currentUser.isLoggedIn) {
2667
2700
  if (hints) {
2668
2701
  if (hints.email && db.cloud.currentUser.value.email !== hints.email) {
@@ -2681,13 +2714,13 @@
2681
2714
  });
2682
2715
  return [4 /*yield*/, authenticate(db.cloud.options.databaseUrl, context, db.cloud.options.fetchTokens || otpFetchTokenCallback(db), db.cloud.userInteraction, hints)];
2683
2716
  case 2:
2684
- _e.sent();
2717
+ _j.sent();
2685
2718
  return [4 /*yield*/, context.save()];
2686
2719
  case 3:
2687
- _e.sent();
2720
+ _j.sent();
2688
2721
  return [4 /*yield*/, setCurrentUser(db, context)];
2689
2722
  case 4:
2690
- _e.sent();
2723
+ _j.sent();
2691
2724
  // Make sure to resync as the new login will be authorized
2692
2725
  // for new realms.
2693
2726
  triggerSync(db, "pull");
@@ -2708,7 +2741,7 @@
2708
2741
  Object.freeze(UNAUTHORIZED_USER);
2709
2742
  Object.freeze(UNAUTHORIZED_USER.claims);
2710
2743
  }
2711
- catch (_e) { }
2744
+ catch (_a) { }
2712
2745
  var swHolder = {};
2713
2746
  var swContainer = self.document && navigator.serviceWorker; // self.document is to verify we're not the SW ourself
2714
2747
  if (swContainer)
@@ -2716,9 +2749,9 @@
2716
2749
  if (typeof self !== 'undefined' && 'clients' in self && !self.document) {
2717
2750
  // We are the service worker. Propagate messages to all our clients.
2718
2751
  addEventListener('message', function (ev) {
2719
- var _e, _f;
2720
- if ((_f = (_e = ev.data) === null || _e === void 0 ? void 0 : _e.type) === null || _f === void 0 ? void 0 : _f.startsWith('sw-broadcast-')) {
2721
- __spreadArray$1([], self['clients'].matchAll({ includeUncontrolled: true }), true).forEach(function (client) { var _e; return client.id !== ((_e = ev.source) === null || _e === void 0 ? void 0 : _e.id) && client.postMessage(ev.data); });
2752
+ var _a, _b;
2753
+ if ((_b = (_a = ev.data) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.startsWith('sw-broadcast-')) {
2754
+ __spreadArray$1([], self['clients'].matchAll({ includeUncontrolled: true }), true).forEach(function (client) { var _a; return client.id !== ((_a = ev.source) === null || _a === void 0 ? void 0 : _a.id) && client.postMessage(ev.data); });
2722
2755
  }
2723
2756
  });
2724
2757
  }
@@ -2731,8 +2764,8 @@
2731
2764
  if (!swContainer)
2732
2765
  return function () { };
2733
2766
  var forwarder = function (ev) {
2734
- var _e;
2735
- if (((_e = ev.data) === null || _e === void 0 ? void 0 : _e.type) === "sw-broadcast-".concat(_this_1.name)) {
2767
+ var _a;
2768
+ if (((_a = ev.data) === null || _a === void 0 ? void 0 : _a.type) === "sw-broadcast-".concat(_this_1.name)) {
2736
2769
  listener(ev.data.message);
2737
2770
  }
2738
2771
  };
@@ -2741,7 +2774,7 @@
2741
2774
  };
2742
2775
  SWBroadcastChannel.prototype.postMessage = function (message) {
2743
2776
  var _this_1 = this;
2744
- var _e;
2777
+ var _a;
2745
2778
  if (typeof self['clients'] === 'object') {
2746
2779
  // We're a service worker. Propagate to our browser clients.
2747
2780
  __spreadArray$1([], self['clients'].matchAll({ includeUncontrolled: true }), true).forEach(function (client) { return client.postMessage({
@@ -2752,7 +2785,7 @@
2752
2785
  else if (swHolder.registration) {
2753
2786
  // We're a client (browser window or other worker)
2754
2787
  // Post to SW so it can repost to all its clients and to itself
2755
- (_e = swHolder.registration.active) === null || _e === void 0 ? void 0 : _e.postMessage({
2788
+ (_a = swHolder.registration.active) === null || _a === void 0 ? void 0 : _a.postMessage({
2756
2789
  type: "sw-broadcast-".concat(this.name),
2757
2790
  message: message
2758
2791
  });
@@ -2798,25 +2831,25 @@
2798
2831
  return _this_1;
2799
2832
  }
2800
2833
  BroadcastedAndLocalEvent.prototype.next = function (message) {
2801
- console.debug("BroadcastedAndLocalEvent: bc.postMessage()", __assign({}, message), "bc is a", this.bc);
2834
+ console.debug("BroadcastedAndLocalEvent: bc.postMessage()", Object.assign({}, message), "bc is a", this.bc);
2802
2835
  this.bc.postMessage(message);
2803
2836
  var ev = new CustomEvent("lbc-".concat(this.name), { detail: message });
2804
2837
  self.dispatchEvent(ev);
2805
2838
  };
2806
2839
  return BroadcastedAndLocalEvent;
2807
2840
  }(rxjs.Observable));
2808
- function computeRealmSetHash(_e) {
2809
- var realms = _e.realms, inviteRealms = _e.inviteRealms;
2841
+ function computeRealmSetHash(_j) {
2842
+ var realms = _j.realms, inviteRealms = _j.inviteRealms;
2810
2843
  return __awaiter$1(this, void 0, void 0, function () {
2811
2844
  var data, byteArray, digestBytes, base64;
2812
- return __generator$1(this, function (_f) {
2813
- switch (_f.label) {
2845
+ return __generator$1(this, function (_j) {
2846
+ switch (_j.label) {
2814
2847
  case 0:
2815
2848
  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; }));
2816
2849
  byteArray = new TextEncoder().encode(data);
2817
2850
  return [4 /*yield*/, crypto.subtle.digest('SHA-1', byteArray)];
2818
2851
  case 1:
2819
- digestBytes = _f.sent();
2852
+ digestBytes = _j.sent();
2820
2853
  base64 = b64encode(digestBytes);
2821
2854
  return [2 /*return*/, base64];
2822
2855
  }
@@ -2825,14 +2858,14 @@
2825
2858
  }
2826
2859
  function getSyncableTables(db) {
2827
2860
  return Object.entries(db.cloud.schema || {})
2828
- .filter(function (_e) {
2829
- var markedForSync = _e[1].markedForSync;
2861
+ .filter(function (_j) {
2862
+ var markedForSync = _j[1].markedForSync;
2830
2863
  return markedForSync;
2831
2864
  })
2832
- .map(function (_e) {
2833
- var tbl = _e[0];
2834
- return db.tables.filter(function (_e) {
2835
- var name = _e.name;
2865
+ .map(function (_j) {
2866
+ var tbl = _j[0];
2867
+ return db.tables.filter(function (_j) {
2868
+ var name = _j.name;
2836
2869
  return name === tbl;
2837
2870
  })[0];
2838
2871
  })
@@ -2842,8 +2875,8 @@
2842
2875
  return "$".concat(tableName, "_mutations");
2843
2876
  }
2844
2877
  function getTableFromMutationTable(mutationTable) {
2845
- var _e;
2846
- var tableName = (_e = /^\$(.*)_mutations$/.exec(mutationTable)) === null || _e === void 0 ? void 0 : _e[1];
2878
+ var _a;
2879
+ var tableName = (_a = /^\$(.*)_mutations$/.exec(mutationTable)) === null || _a === void 0 ? void 0 : _a[1];
2847
2880
  if (!tableName)
2848
2881
  throw new Error("Given mutationTable ".concat(mutationTable, " is not correct"));
2849
2882
  return tableName;
@@ -2852,8 +2885,8 @@
2852
2885
  function flatten(a) {
2853
2886
  return concat.apply([], a);
2854
2887
  }
2855
- function listClientChanges(mutationTables, db, _e) {
2856
- var _f = _e === void 0 ? {} : _e, _g = _f.since, since = _g === void 0 ? {} : _g, _h = _f.limit, limit = _h === void 0 ? Infinity : _h;
2888
+ function listClientChanges(mutationTables, db, _j) {
2889
+ var _k = _j === void 0 ? {} : _j, _l = _k.since, since = _l === void 0 ? {} : _l, _m = _k.limit, limit = _m === void 0 ? Infinity : _m;
2857
2890
  return __awaiter$1(this, void 0, void 0, function () {
2858
2891
  var allMutsOnTables, sorted, result, currentEntry, currentTxid, _j, sorted_1, _k, table, mut;
2859
2892
  var _this_1 = this;
@@ -2861,8 +2894,8 @@
2861
2894
  switch (_l.label) {
2862
2895
  case 0: return [4 /*yield*/, Promise.all(mutationTables.map(function (mutationTable) { return __awaiter$1(_this_1, void 0, void 0, function () {
2863
2896
  var tableName, lastRevision, query, muts;
2864
- return __generator$1(this, function (_e) {
2865
- switch (_e.label) {
2897
+ return __generator$1(this, function (_j) {
2898
+ switch (_j.label) {
2866
2899
  case 0:
2867
2900
  tableName = getTableFromMutationTable(mutationTable.name);
2868
2901
  lastRevision = since[tableName];
@@ -2873,7 +2906,7 @@
2873
2906
  query = query.limit(limit);
2874
2907
  return [4 /*yield*/, query.toArray()];
2875
2908
  case 1:
2876
- muts = _e.sent();
2909
+ muts = _j.sent();
2877
2910
  //const objTable = db.table(tableName);
2878
2911
  /*for (const mut of muts) {
2879
2912
  if (mut.type === "insert" || mut.type === "upsert") {
@@ -2924,8 +2957,8 @@
2924
2957
  return __awaiter$1(this, void 0, void 0, function () {
2925
2958
  var txid, ignoredRealms_1, upserts;
2926
2959
  var _this_1 = this;
2927
- return __generator$1(this, function (_e) {
2928
- switch (_e.label) {
2960
+ return __generator$1(this, function (_j) {
2961
+ switch (_j.label) {
2929
2962
  case 0:
2930
2963
  txid = "upload-".concat(randomString(8));
2931
2964
  if (!currentUser.isLoggedIn) return [3 /*break*/, 2];
@@ -2933,8 +2966,8 @@
2933
2966
  ignoredRealms_1 = new Set(alreadySyncedRealms || []);
2934
2967
  return [4 /*yield*/, Promise.all(tablesToSyncify.map(function (table) { return __awaiter$1(_this_1, void 0, void 0, function () {
2935
2968
  var extractKey, dexieCloudTableSchema, query, unsyncedObjects, mut;
2936
- return __generator$1(this, function (_e) {
2937
- switch (_e.label) {
2969
+ return __generator$1(this, function (_j) {
2970
+ switch (_j.label) {
2938
2971
  case 0:
2939
2972
  extractKey = table.core.schema.primaryKey.extractKey;
2940
2973
  if (!extractKey)
@@ -2955,7 +2988,7 @@
2955
2988
  });
2956
2989
  return [4 /*yield*/, query.toArray()];
2957
2990
  case 1:
2958
- unsyncedObjects = _e.sent();
2991
+ unsyncedObjects = _j.sent();
2959
2992
  if (unsyncedObjects.length > 0) {
2960
2993
  mut = {
2961
2994
  type: 'upsert',
@@ -2979,7 +3012,7 @@
2979
3012
  });
2980
3013
  }); }))];
2981
3014
  case 1:
2982
- upserts = _e.sent();
3015
+ upserts = _j.sent();
2983
3016
  return [2 /*return*/, upserts.filter(function (op) { return op.muts.length > 0; })];
2984
3017
  case 2: return [2 /*return*/, []];
2985
3018
  }
@@ -3008,12 +3041,12 @@
3008
3041
  if (!dollarKeys)
3009
3042
  return value;
3010
3043
  var clone = __assign({}, value);
3011
- for (var _e = 0, dollarKeys_1 = dollarKeys; _e < dollarKeys_1.length; _e++) {
3012
- var k_1 = dollarKeys_1[_e];
3044
+ for (var _j = 0, dollarKeys_1 = dollarKeys; _j < dollarKeys_1.length; _j++) {
3045
+ var k_1 = dollarKeys_1[_j];
3013
3046
  delete clone[k_1];
3014
3047
  }
3015
- for (var _f = 0, dollarKeys_2 = dollarKeys; _f < dollarKeys_2.length; _f++) {
3016
- var k_2 = dollarKeys_2[_f];
3048
+ for (var _k = 0, dollarKeys_2 = dollarKeys; _k < dollarKeys_2.length; _k++) {
3049
+ var k_2 = dollarKeys_2[_k];
3017
3050
  clone["$" + k_2] = value[k_2];
3018
3051
  }
3019
3052
  return clone;
@@ -3023,8 +3056,8 @@
3023
3056
  };
3024
3057
  function TypesonSimplified() {
3025
3058
  var typeDefsInputs = [];
3026
- for (var _e = 0; _e < arguments.length; _e++) {
3027
- typeDefsInputs[_e] = arguments[_e];
3059
+ for (var _j = 0; _j < arguments.length; _j++) {
3060
+ typeDefsInputs[_j] = arguments[_j];
3028
3061
  }
3029
3062
  var typeDefs = typeDefsInputs.reduce(function (p, c) { return (__assign(__assign({}, p), c)); }, typeDefsInputs.reduce(function (p, c) { return (__assign(__assign({}, c), p)); }, {}));
3030
3063
  var protoMap = new WeakMap();
@@ -3058,13 +3091,13 @@
3058
3091
  // Unescape dollar props
3059
3092
  value = __assign({}, value);
3060
3093
  // Delete keys that children wanted us to delete
3061
- for (var _e = 0, _f = top[1]; _e < _f.length; _e++) {
3062
- var k_3 = _f[_e];
3094
+ for (var _j = 0, _k = top[1]; _j < _k.length; _j++) {
3095
+ var k_3 = _k[_j];
3063
3096
  delete value[k_3];
3064
3097
  }
3065
3098
  // Set keys that children wanted us to set
3066
- for (var _g = 0, _h = Object.entries(top[2]); _g < _h.length; _g++) {
3067
- var _j = _h[_g], k_4 = _j[0], v_1 = _j[1];
3099
+ for (var _l = 0, _m = Object.entries(top[2]); _l < _m.length; _l++) {
3100
+ var _o = _m[_l], k_4 = _o[0], v_1 = _o[1];
3068
3101
  value[k_4] = v_1;
3069
3102
  }
3070
3103
  stack.pop();
@@ -3112,8 +3145,8 @@
3112
3145
  if (typeDef !== undefined)
3113
3146
  return typeDef; // Null counts to! So the caching of Array.prototype also counts.
3114
3147
  var toStringTag_1 = getToStringTag(realVal);
3115
- var entry = Object.entries(typeDefs).find(function (_e) {
3116
- var typeName = _e[0], typeDef = _e[1];
3148
+ var entry = Object.entries(typeDefs).find(function (_j) {
3149
+ var typeName = _j[0], typeDef = _j[1];
3117
3150
  var _a, _b;
3118
3151
  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;
3119
3152
  });
@@ -3145,8 +3178,8 @@
3145
3178
  i: i,
3146
3179
  };
3147
3180
  },
3148
- revive: function (_e, altChannel) {
3149
- var i = _e.i, mimeType = _e.mimeType;
3181
+ revive: function (_j, altChannel) {
3182
+ var i = _j.i, mimeType = _j.mimeType;
3150
3183
  return new Blob([altChannel[i]], { type: mimeType });
3151
3184
  },
3152
3185
  },
@@ -3165,8 +3198,8 @@
3165
3198
  return num;
3166
3199
  }
3167
3200
  },
3168
- revive: function (_e) {
3169
- var v = _e.v;
3201
+ revive: function (_j) {
3202
+ var v = _j.v;
3170
3203
  return Number(v);
3171
3204
  },
3172
3205
  },
@@ -3185,8 +3218,8 @@
3185
3218
  $t: "Date",
3186
3219
  v: isNaN(date.getTime()) ? "NaN" : date.toISOString(),
3187
3220
  }); },
3188
- revive: function (_e) {
3189
- var v = _e.v;
3221
+ revive: function (_j) {
3222
+ var v = _j.v;
3190
3223
  return new Date(v === "NaN" ? NaN : Date.parse(v));
3191
3224
  },
3192
3225
  },
@@ -3197,8 +3230,8 @@
3197
3230
  $t: "Set",
3198
3231
  v: Array.from(set.entries()),
3199
3232
  }); },
3200
- revive: function (_e) {
3201
- var v = _e.v;
3233
+ revive: function (_j) {
3234
+ var v = _j.v;
3202
3235
  return new Set(v);
3203
3236
  },
3204
3237
  },
@@ -3209,8 +3242,8 @@
3209
3242
  $t: "Map",
3210
3243
  v: Array.from(map.entries()),
3211
3244
  }); },
3212
- revive: function (_e) {
3213
- var v = _e.v;
3245
+ revive: function (_j) {
3246
+ var v = _j.v;
3214
3247
  return new Map(v);
3215
3248
  },
3216
3249
  },
@@ -3236,8 +3269,8 @@
3236
3269
  "BigInt64Array",
3237
3270
  "BigUint64Array",
3238
3271
  ].reduce(function (specs, typeName) {
3239
- var _e;
3240
- return (__assign(__assign({}, specs), (_e = {}, _e[typeName] = {
3272
+ var _j;
3273
+ return (__assign(__assign({}, specs), (_j = {}, _j[typeName] = {
3241
3274
  // Replace passes the the typed array into $t, buffer so that
3242
3275
  // the ArrayBuffer typedef takes care of further handling of the buffer:
3243
3276
  // {$t:"Uint8Array",buffer:{$t:"ArrayBuffer",idx:0}}
@@ -3252,13 +3285,13 @@
3252
3285
  };
3253
3286
  return result;
3254
3287
  },
3255
- revive: function (_e, _, typeDefs) {
3256
- var v = _e.v;
3288
+ revive: function (_j, _, typeDefs) {
3289
+ var v = _j.v;
3257
3290
  var TypedArray = _global[typeName];
3258
3291
  return (TypedArray &&
3259
3292
  new TypedArray(typeDefs.ArrayBuffer.revive({ v: v }, _, typeDefs)));
3260
3293
  },
3261
- }, _e)));
3294
+ }, _j)));
3262
3295
  }, {});
3263
3296
  function b64LexEncode(b) {
3264
3297
  return b64ToLex(b64encode(b));
@@ -3352,8 +3385,8 @@
3352
3385
  "|": "/",
3353
3386
  };
3354
3387
  var ENCODE_TABLE = {};
3355
- for (var _f = 0, _g = Object.keys(DECODE_TABLE); _f < _g.length; _f++) {
3356
- var c_1 = _g[_f];
3388
+ for (var _j = 0, _k = Object.keys(DECODE_TABLE); _j < _k.length; _j++) {
3389
+ var c_1 = _k[_j];
3357
3390
  ENCODE_TABLE[DECODE_TABLE[c_1]] = c_1;
3358
3391
  }
3359
3392
  var ArrayBufferDef = {
@@ -3362,8 +3395,8 @@
3362
3395
  $t: "ArrayBuffer",
3363
3396
  v: b64LexEncode(ab),
3364
3397
  }); },
3365
- revive: function (_e) {
3366
- var v = _e.v;
3398
+ revive: function (_j) {
3399
+ var v = _j.v;
3367
3400
  var ba = b64LexDecode(v);
3368
3401
  return ba.buffer.byteLength === ba.byteLength
3369
3402
  ? ba.buffer
@@ -3405,8 +3438,8 @@
3405
3438
  : b64encode(string2ArrayBuffer(readBlobSync(blob))),
3406
3439
  type: blob.type,
3407
3440
  }); },
3408
- revive: function (_e) {
3409
- var type = _e.type, v = _e.v;
3441
+ revive: function (_j) {
3442
+ var type = _j.type, v = _j.v;
3410
3443
  var ab = b64decode(v);
3411
3444
  return typeof Blob !== undefined
3412
3445
  ? new Blob([ab])
@@ -3417,13 +3450,13 @@
3417
3450
  var builtin = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, numberDef), bigIntDef), DateDef), SetDef), MapDef), TypedArraysDefs), ArrayBufferDef), BlobDef);
3418
3451
  function Bison() {
3419
3452
  var typeDefsInputs = [];
3420
- for (var _e = 0; _e < arguments.length; _e++) {
3421
- typeDefsInputs[_e] = arguments[_e];
3453
+ for (var _j = 0; _j < arguments.length; _j++) {
3454
+ typeDefsInputs[_j] = arguments[_j];
3422
3455
  }
3423
3456
  var tson = TypesonSimplified.apply(void 0, __spreadArray$1([builtin, BisonBinaryTypes], typeDefsInputs, false));
3424
3457
  return {
3425
3458
  toBinary: function (value) {
3426
- var _e = this.stringify(value), blob = _e[0], json = _e[1];
3459
+ var _j = this.stringify(value), blob = _j[0], json = _j[1];
3427
3460
  var lenBuf = new ArrayBuffer(4);
3428
3461
  new DataView(lenBuf).setUint32(0, blob.size);
3429
3462
  return new Blob([lenBuf, blob, json]);
@@ -3439,16 +3472,16 @@
3439
3472
  return [blob, json];
3440
3473
  },
3441
3474
  parse: function (json, binData) {
3442
- return __awaiter$1(this, void 0, void 0, function () {
3475
+ return __awaiter$2(this, void 0, void 0, function () {
3443
3476
  var pos, arrayBuffers, buf, view, len, ab;
3444
- return __generator$1(this, function (_e) {
3445
- switch (_e.label) {
3477
+ return __generator$1(this, function (_j) {
3478
+ switch (_j.label) {
3446
3479
  case 0:
3447
3480
  pos = 0;
3448
3481
  arrayBuffers = [];
3449
3482
  return [4 /*yield*/, readBlobBinary(binData)];
3450
3483
  case 1:
3451
- buf = _e.sent();
3484
+ buf = _j.sent();
3452
3485
  view = new DataView(buf);
3453
3486
  while (pos < buf.byteLength) {
3454
3487
  len = view.getUint32(pos);
@@ -3463,21 +3496,21 @@
3463
3496
  });
3464
3497
  },
3465
3498
  fromBinary: function (blob) {
3466
- return __awaiter$1(this, void 0, void 0, function () {
3467
- var len, _e, binData, json;
3468
- return __generator$1(this, function (_f) {
3469
- switch (_f.label) {
3499
+ return __awaiter$2(this, void 0, void 0, function () {
3500
+ var len, _j, binData, json;
3501
+ return __generator$1(this, function (_k) {
3502
+ switch (_k.label) {
3470
3503
  case 0:
3471
- _e = DataView.bind;
3504
+ _j = DataView.bind;
3472
3505
  return [4 /*yield*/, readBlobBinary(blob.slice(0, 4))];
3473
3506
  case 1:
3474
- len = new (_e.apply(DataView, [void 0, _f.sent()]))().getUint32(0);
3507
+ len = new (_j.apply(DataView, [void 0, _k.sent()]))().getUint32(0);
3475
3508
  binData = blob.slice(4, len + 4);
3476
3509
  return [4 /*yield*/, readBlob(blob.slice(len + 4))];
3477
3510
  case 2:
3478
- json = _f.sent();
3511
+ json = _k.sent();
3479
3512
  return [4 /*yield*/, this.parse(json, binData)];
3480
- case 3: return [2 /*return*/, _f.sent()];
3513
+ case 3: return [2 /*return*/, _k.sent()];
3481
3514
  }
3482
3515
  });
3483
3516
  });
@@ -3543,16 +3576,16 @@
3543
3576
  };
3544
3577
  return FakeBigInt;
3545
3578
  }());
3546
- var defs = __assign(__assign({}, undefinedDef), (hasBigIntSupport
3579
+ var defs = Object.assign(Object.assign({}, undefinedDef), (hasBigIntSupport
3547
3580
  ? {}
3548
3581
  : {
3549
3582
  bigint: {
3550
3583
  test: function (val) { return val instanceof FakeBigInt; },
3551
3584
  replace: function (fakeBigInt) {
3552
- return __assign({ $t: 'bigint' }, fakeBigInt);
3585
+ return Object.assign({ $t: 'bigint' }, fakeBigInt);
3553
3586
  },
3554
- revive: function (_e) {
3555
- var v = _e.v;
3587
+ revive: function (_j) {
3588
+ var v = _j.v;
3556
3589
  return new FakeBigInt(v);
3557
3590
  }
3558
3591
  }
@@ -3600,24 +3633,24 @@
3600
3633
  });
3601
3634
  rv.push(changeClone);
3602
3635
  };
3603
- for (var _e = 0, changes_1 = changes; _e < changes_1.length; _e++) {
3604
- var change = changes_1[_e];
3636
+ for (var _j = 0, changes_1 = changes; _j < changes_1.length; _j++) {
3637
+ var change = changes_1[_j];
3605
3638
  _loop_2(change);
3606
3639
  }
3607
3640
  return rv;
3608
3641
  }
3609
3642
  function cloneChange(change, rewriteValues) {
3610
3643
  // clone on demand:
3611
- return __assign(__assign({}, change), { muts: rewriteValues
3612
- ? change.muts.map(function (m) { return (__assign(__assign({}, m), { keys: m.keys.slice(), values: m.values.slice() })); })
3613
- : change.muts.map(function (m) { return (__assign(__assign({}, m), { keys: m.keys.slice() })); }) });
3644
+ return Object.assign(Object.assign({}, change), { muts: rewriteValues
3645
+ ? change.muts.map(function (m) { return (Object.assign(Object.assign({}, m), { keys: m.keys.slice(), values: m.values.slice() })); })
3646
+ : change.muts.map(function (m) { return (Object.assign(Object.assign({}, m), { keys: m.keys.slice() })); }) });
3614
3647
  }
3615
3648
  //import {BisonWebStreamReader} from "dreambase-library/dist/typeson-simplified/BisonWebStreamReader";
3616
3649
  function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, clientIdentity, currentUser) {
3617
3650
  return __awaiter$1(this, void 0, void 0, function () {
3618
- var headers, accessToken, syncRequest, res, _e, _f, _g, text, syncRes;
3619
- return __generator$1(this, function (_h) {
3620
- switch (_h.label) {
3651
+ var headers, accessToken, syncRequest, res, _j, _k, _l, text, syncRes;
3652
+ return __generator$1(this, function (_m) {
3653
+ switch (_m.label) {
3621
3654
  case 0:
3622
3655
  headers = {
3623
3656
  Accept: 'application/json, application/x-bison, application/x-bison-stream',
@@ -3625,7 +3658,7 @@
3625
3658
  };
3626
3659
  return [4 /*yield*/, loadAccessToken(db)];
3627
3660
  case 1:
3628
- accessToken = _h.sent();
3661
+ accessToken = _m.sent();
3629
3662
  if (accessToken) {
3630
3663
  headers.Authorization = "Bearer ".concat(accessToken);
3631
3664
  }
@@ -3652,7 +3685,7 @@
3652
3685
  body: TSON.stringify(syncRequest)
3653
3686
  })];
3654
3687
  case 2:
3655
- res = _h.sent();
3688
+ res = _m.sent();
3656
3689
  //const contentLength = Number(res.headers.get('content-length'));
3657
3690
  db.syncStateChangedEvent.next({
3658
3691
  phase: 'pulling'
@@ -3660,20 +3693,20 @@
3660
3693
  if (!res.ok) {
3661
3694
  throw new HttpError(res);
3662
3695
  }
3663
- _e = res.headers.get('content-type');
3664
- switch (_e) {
3696
+ _j = res.headers.get('content-type');
3697
+ switch (_j) {
3665
3698
  case 'application/x-bison': return [3 /*break*/, 3];
3666
3699
  case 'application/x-bison-stream': return [3 /*break*/, 5];
3667
3700
  case 'application/json': return [3 /*break*/, 5];
3668
3701
  }
3669
3702
  return [3 /*break*/, 5];
3670
3703
  case 3:
3671
- _g = (_f = BISON).fromBinary;
3704
+ _l = (_k = BISON).fromBinary;
3672
3705
  return [4 /*yield*/, res.blob()];
3673
- case 4: return [2 /*return*/, _g.apply(_f, [_h.sent()])];
3706
+ case 4: return [2 /*return*/, _l.apply(_k, [_m.sent()])];
3674
3707
  case 5: return [4 /*yield*/, res.text()];
3675
3708
  case 6:
3676
- text = _h.sent();
3709
+ text = _m.sent();
3677
3710
  syncRes = TSON.parse(text);
3678
3711
  return [2 /*return*/, syncRes];
3679
3712
  }
@@ -3682,16 +3715,16 @@
3682
3715
  }
3683
3716
  function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySyncedRealms) {
3684
3717
  return __awaiter$1(this, void 0, void 0, function () {
3685
- var ignoredRealms, _e, syncifiedTables_1, table;
3686
- return __generator$1(this, function (_f) {
3687
- switch (_f.label) {
3718
+ var ignoredRealms, _j, syncifiedTables_1, table;
3719
+ return __generator$1(this, function (_k) {
3720
+ switch (_k.label) {
3688
3721
  case 0:
3689
3722
  ignoredRealms = new Set(alreadySyncedRealms || []);
3690
- _e = 0, syncifiedTables_1 = syncifiedTables;
3691
- _f.label = 1;
3723
+ _j = 0, syncifiedTables_1 = syncifiedTables;
3724
+ _k.label = 1;
3692
3725
  case 1:
3693
- if (!(_e < syncifiedTables_1.length)) return [3 /*break*/, 9];
3694
- table = syncifiedTables_1[_e];
3726
+ if (!(_j < syncifiedTables_1.length)) return [3 /*break*/, 9];
3727
+ table = syncifiedTables_1[_j];
3695
3728
  if (!(table.name === "members")) return [3 /*break*/, 3];
3696
3729
  // members
3697
3730
  return [4 /*yield*/, table.toCollection().modify(function (member) {
@@ -3701,7 +3734,7 @@
3701
3734
  })];
3702
3735
  case 2:
3703
3736
  // members
3704
- _f.sent();
3737
+ _k.sent();
3705
3738
  return [3 /*break*/, 8];
3706
3739
  case 3:
3707
3740
  if (!(table.name === "roles")) return [3 /*break*/, 4];
@@ -3716,7 +3749,7 @@
3716
3749
  })];
3717
3750
  case 5:
3718
3751
  // realms
3719
- _f.sent();
3752
+ _k.sent();
3720
3753
  return [3 /*break*/, 8];
3721
3754
  case 6:
3722
3755
  // application entities
@@ -3731,10 +3764,10 @@
3731
3764
  })];
3732
3765
  case 7:
3733
3766
  // application entities
3734
- _f.sent();
3735
- _f.label = 8;
3767
+ _k.sent();
3768
+ _k.label = 8;
3736
3769
  case 8:
3737
- _e++;
3770
+ _j++;
3738
3771
  return [3 /*break*/, 1];
3739
3772
  case 9: return [2 /*return*/];
3740
3773
  }
@@ -3754,8 +3787,8 @@
3754
3787
  self.addEventListener('offline', function () { return isOnline = false; });
3755
3788
  function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3756
3789
  return __awaiter$1(this, void 0, void 0, function () {
3757
- return __generator$1(this, function (_e) {
3758
- switch (_e.label) {
3790
+ return __generator$1(this, function (_j) {
3791
+ switch (_j.label) {
3759
3792
  case 0: return [4 /*yield*/, db.$baseRevs.bulkPut(Object.keys(schema)
3760
3793
  .filter(function (table) { return schema[table].markedForSync; })
3761
3794
  .map(function (tableName) {
@@ -3767,7 +3800,7 @@
3767
3800
  };
3768
3801
  }))];
3769
3802
  case 1:
3770
- _e.sent();
3803
+ _j.sent();
3771
3804
  return [2 /*return*/];
3772
3805
  }
3773
3806
  });
@@ -3775,8 +3808,8 @@
3775
3808
  }
3776
3809
  function getLatestRevisionsPerTable(clientChangeSet, lastRevisions) {
3777
3810
  if (lastRevisions === void 0) { lastRevisions = {}; }
3778
- for (var _e = 0, clientChangeSet_1 = clientChangeSet; _e < clientChangeSet_1.length; _e++) {
3779
- var _f = clientChangeSet_1[_e], table = _f.table, muts = _f.muts;
3811
+ for (var _j = 0, clientChangeSet_1 = clientChangeSet; _j < clientChangeSet_1.length; _j++) {
3812
+ var _k = clientChangeSet_1[_j], table = _k.table, muts = _k.muts;
3780
3813
  var lastRev = muts.length > 0 ? muts[muts.length - 1].rev : null;
3781
3814
  lastRevisions[table] = lastRev || lastRevisions[table] || 0;
3782
3815
  }
@@ -3785,18 +3818,18 @@
3785
3818
  function bulkUpdate(table, keys, changeSpecs) {
3786
3819
  return __awaiter$1(this, void 0, void 0, function () {
3787
3820
  var objs, resultKeys, resultObjs;
3788
- return __generator$1(this, function (_e) {
3789
- switch (_e.label) {
3821
+ return __generator$1(this, function (_j) {
3822
+ switch (_j.label) {
3790
3823
  case 0: return [4 /*yield*/, table.bulkGet(keys)];
3791
3824
  case 1:
3792
- objs = _e.sent();
3825
+ objs = _j.sent();
3793
3826
  resultKeys = [];
3794
3827
  resultObjs = [];
3795
3828
  keys.forEach(function (key, idx) {
3796
3829
  var obj = objs[idx];
3797
3830
  if (obj) {
3798
- for (var _e = 0, _f = Object.entries(changeSpecs[idx]); _e < _f.length; _e++) {
3799
- var _g = _f[_e], keyPath = _g[0], value = _g[1];
3831
+ for (var _j = 0, _k = Object.entries(changeSpecs[idx]); _j < _k.length; _j++) {
3832
+ var _l = _k[_j], keyPath = _l[0], value = _l[1];
3800
3833
  if (keyPath === table.schema.primKey.keyPath) {
3801
3834
  if (Dexie.cmp(value, key) !== 0) {
3802
3835
  throw new Error("Cannot change primary key");
@@ -3814,7 +3847,7 @@
3814
3847
  ? table.bulkPut(resultObjs, resultKeys)
3815
3848
  : table.bulkPut(resultObjs))];
3816
3849
  case 2:
3817
- _e.sent();
3850
+ _j.sent();
3818
3851
  return [2 /*return*/];
3819
3852
  }
3820
3853
  });
@@ -3822,15 +3855,15 @@
3822
3855
  }
3823
3856
  function applyServerChanges(changes, db) {
3824
3857
  return __awaiter$1(this, void 0, void 0, function () {
3825
- var _loop_3, _e, changes_2, _f, tableName, muts;
3826
- return __generator$1(this, function (_g) {
3827
- switch (_g.label) {
3858
+ var _loop_3, _j, changes_2, _k, tableName, muts;
3859
+ return __generator$1(this, function (_l) {
3860
+ switch (_l.label) {
3828
3861
  case 0:
3829
3862
  console.debug('Applying server changes', changes, Dexie__default["default"].currentTransaction);
3830
3863
  _loop_3 = function (tableName, muts) {
3831
- var table, primaryKey, keyDecoder, _loop_4, _h, muts_2, mut;
3832
- return __generator$1(this, function (_j) {
3833
- switch (_j.label) {
3864
+ var table, primaryKey, keyDecoder, _loop_4, _m, muts_2, mut;
3865
+ return __generator$1(this, function (_o) {
3866
+ switch (_o.label) {
3834
3867
  case 0:
3835
3868
  table = db.table(tableName);
3836
3869
  if (!table)
@@ -3845,7 +3878,7 @@
3845
3878
  // On server, array keys are transformed to JSON string representation
3846
3879
  return JSON.parse(key);
3847
3880
  }
3848
- catch (_e) { }
3881
+ catch (_a) { }
3849
3882
  return key;
3850
3883
  case '#':
3851
3884
  // Decode private ID (do the opposite from what's done in encodeIdsForServer())
@@ -3858,13 +3891,13 @@
3858
3891
  }
3859
3892
  };
3860
3893
  _loop_4 = function (mut) {
3861
- var keys, _k;
3862
- return __generator$1(this, function (_l) {
3863
- switch (_l.label) {
3894
+ var keys, _p;
3895
+ return __generator$1(this, function (_q) {
3896
+ switch (_q.label) {
3864
3897
  case 0:
3865
3898
  keys = mut.keys.map(keyDecoder);
3866
- _k = mut.type;
3867
- switch (_k) {
3899
+ _p = mut.type;
3900
+ switch (_p) {
3868
3901
  case 'insert': return [3 /*break*/, 1];
3869
3902
  case 'upsert': return [3 /*break*/, 6];
3870
3903
  case 'modify': return [3 /*break*/, 11];
@@ -3876,7 +3909,7 @@
3876
3909
  if (!primaryKey.outbound) return [3 /*break*/, 3];
3877
3910
  return [4 /*yield*/, table.bulkAdd(mut.values, keys)];
3878
3911
  case 2:
3879
- _l.sent();
3912
+ _q.sent();
3880
3913
  return [3 /*break*/, 5];
3881
3914
  case 3:
3882
3915
  keys.forEach(function (key, i) {
@@ -3885,14 +3918,14 @@
3885
3918
  });
3886
3919
  return [4 /*yield*/, table.bulkAdd(mut.values)];
3887
3920
  case 4:
3888
- _l.sent();
3889
- _l.label = 5;
3921
+ _q.sent();
3922
+ _q.label = 5;
3890
3923
  case 5: return [3 /*break*/, 20];
3891
3924
  case 6:
3892
3925
  if (!primaryKey.outbound) return [3 /*break*/, 8];
3893
3926
  return [4 /*yield*/, table.bulkPut(mut.values, keys)];
3894
3927
  case 7:
3895
- _l.sent();
3928
+ _q.sent();
3896
3929
  return [3 /*break*/, 10];
3897
3930
  case 8:
3898
3931
  keys.forEach(function (key, i) {
@@ -3901,59 +3934,59 @@
3901
3934
  });
3902
3935
  return [4 /*yield*/, table.bulkPut(mut.values)];
3903
3936
  case 9:
3904
- _l.sent();
3905
- _l.label = 10;
3937
+ _q.sent();
3938
+ _q.label = 10;
3906
3939
  case 10: return [3 /*break*/, 20];
3907
3940
  case 11:
3908
3941
  if (!(keys.length === 1)) return [3 /*break*/, 13];
3909
3942
  return [4 /*yield*/, table.update(keys[0], mut.changeSpec)];
3910
3943
  case 12:
3911
- _l.sent();
3944
+ _q.sent();
3912
3945
  return [3 /*break*/, 15];
3913
3946
  case 13: return [4 /*yield*/, table.where(':id').anyOf(keys).modify(mut.changeSpec)];
3914
3947
  case 14:
3915
- _l.sent();
3916
- _l.label = 15;
3948
+ _q.sent();
3949
+ _q.label = 15;
3917
3950
  case 15: return [3 /*break*/, 20];
3918
3951
  case 16: return [4 /*yield*/, bulkUpdate(table, keys, mut.changeSpecs)];
3919
3952
  case 17:
3920
- _l.sent();
3953
+ _q.sent();
3921
3954
  return [3 /*break*/, 20];
3922
3955
  case 18: return [4 /*yield*/, table.bulkDelete(keys)];
3923
3956
  case 19:
3924
- _l.sent();
3957
+ _q.sent();
3925
3958
  return [3 /*break*/, 20];
3926
3959
  case 20: return [2 /*return*/];
3927
3960
  }
3928
3961
  });
3929
3962
  };
3930
- _h = 0, muts_2 = muts;
3931
- _j.label = 1;
3963
+ _m = 0, muts_2 = muts;
3964
+ _o.label = 1;
3932
3965
  case 1:
3933
- if (!(_h < muts_2.length)) return [3 /*break*/, 4];
3934
- mut = muts_2[_h];
3966
+ if (!(_m < muts_2.length)) return [3 /*break*/, 4];
3967
+ mut = muts_2[_m];
3935
3968
  return [5 /*yield**/, _loop_4(mut)];
3936
3969
  case 2:
3937
- _j.sent();
3938
- _j.label = 3;
3970
+ _o.sent();
3971
+ _o.label = 3;
3939
3972
  case 3:
3940
- _h++;
3973
+ _m++;
3941
3974
  return [3 /*break*/, 1];
3942
3975
  case 4: return [2 /*return*/];
3943
3976
  }
3944
3977
  });
3945
3978
  };
3946
- _e = 0, changes_2 = changes;
3947
- _g.label = 1;
3979
+ _j = 0, changes_2 = changes;
3980
+ _l.label = 1;
3948
3981
  case 1:
3949
- if (!(_e < changes_2.length)) return [3 /*break*/, 4];
3950
- _f = changes_2[_e], tableName = _f.table, muts = _f.muts;
3982
+ if (!(_j < changes_2.length)) return [3 /*break*/, 4];
3983
+ _k = changes_2[_j], tableName = _k.table, muts = _k.muts;
3951
3984
  return [5 /*yield**/, _loop_3(tableName, muts)];
3952
3985
  case 2:
3953
- _g.sent();
3954
- _g.label = 3;
3986
+ _l.sent();
3987
+ _l.label = 3;
3955
3988
  case 3:
3956
- _e++;
3989
+ _j++;
3957
3990
  return [3 /*break*/, 1];
3958
3991
  case 4: return [2 /*return*/];
3959
3992
  }
@@ -3973,8 +4006,8 @@
3973
4006
  }
3974
4007
  })
3975
4008
  .catch(function (error) { return __awaiter$1(_this_1, void 0, void 0, function () {
3976
- return __generator$1(this, function (_e) {
3977
- switch (_e.label) {
4009
+ return __generator$1(this, function (_j) {
4010
+ switch (_j.label) {
3978
4011
  case 0:
3979
4012
  if (syncOptions === null || syncOptions === void 0 ? void 0 : syncOptions.justCheckIfNeeded)
3980
4013
  return [2 /*return*/, Promise.reject(error)]; // Just rethrow.
@@ -3995,9 +4028,9 @@
3995
4028
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 500); })];
3996
4029
  case 1:
3997
4030
  // Retry again in 500 ms but if it fails again, don't retry.
3998
- _e.sent();
3999
- return [4 /*yield*/, sync(db, options, schema, __assign(__assign({}, syncOptions), { retryImmediatelyOnFetchError: false }))];
4000
- case 2: return [2 /*return*/, _e.sent()];
4031
+ _j.sent();
4032
+ return [4 /*yield*/, sync(db, options, schema, Object.assign(Object.assign({}, syncOptions), { retryImmediatelyOnFetchError: false }))];
4033
+ case 2: return [2 /*return*/, _j.sent()];
4001
4034
  case 3:
4002
4035
  // Make sure that no matter whether sync() explodes or not,
4003
4036
  // always update the timestamp. Also store the error.
@@ -4008,7 +4041,7 @@
4008
4041
  case 4:
4009
4042
  // Make sure that no matter whether sync() explodes or not,
4010
4043
  // always update the timestamp. Also store the error.
4011
- _e.sent();
4044
+ _j.sent();
4012
4045
  db.syncStateChangedEvent.next({
4013
4046
  phase: isOnline ? 'error' : 'offline',
4014
4047
  error: error,
@@ -4018,31 +4051,31 @@
4018
4051
  });
4019
4052
  }); });
4020
4053
  }
4021
- function _sync(db, options, schema, _e) {
4022
- var _f;
4023
- var _g = _e === void 0 ? {
4054
+ function _sync(db, options, schema, _j) {
4055
+ var _k = _j === void 0 ? {
4024
4056
  isInitialSync: false,
4025
- } : _e, isInitialSync = _g.isInitialSync, cancelToken = _g.cancelToken, justCheckIfNeeded = _g.justCheckIfNeeded, purpose = _g.purpose;
4057
+ } : _j, isInitialSync = _k.isInitialSync, cancelToken = _k.cancelToken, justCheckIfNeeded = _k.justCheckIfNeeded, purpose = _k.purpose;
4058
+ var _a;
4026
4059
  return __awaiter$1(this, void 0, void 0, function () {
4027
- var databaseUrl, currentUser, tablesToSync, mutationTables, persistedSyncState, tablesToSyncify, doSyncify, _h, clientChangeSet, syncState, baseRevs, syncIsNeeded, latestRevisions, clientIdentity, res, done;
4060
+ var databaseUrl, currentUser, tablesToSync, mutationTables, persistedSyncState, tablesToSyncify, doSyncify, _j, clientChangeSet, syncState, baseRevs, syncIsNeeded, latestRevisions, clientIdentity, res, done;
4028
4061
  var _this_1 = this;
4029
- return __generator$1(this, function (_j) {
4030
- switch (_j.label) {
4062
+ return __generator$1(this, function (_k) {
4063
+ switch (_k.label) {
4031
4064
  case 0:
4032
4065
  if (!justCheckIfNeeded) {
4033
4066
  console.debug('SYNC STARTED', { isInitialSync: isInitialSync, purpose: purpose });
4034
4067
  }
4035
- if (!((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl))
4068
+ if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl))
4036
4069
  throw new Error("Internal error: sync must not be called when no databaseUrl is configured");
4037
4070
  databaseUrl = options.databaseUrl;
4038
4071
  return [4 /*yield*/, db.getCurrentUser()];
4039
4072
  case 1:
4040
- currentUser = _j.sent();
4073
+ currentUser = _k.sent();
4041
4074
  tablesToSync = currentUser.isLoggedIn ? getSyncableTables(db) : [];
4042
4075
  mutationTables = tablesToSync.map(function (tbl) { return db.table(getMutationTable(tbl.name)); });
4043
4076
  return [4 /*yield*/, db.getPersistedSyncState()];
4044
4077
  case 2:
4045
- persistedSyncState = _j.sent();
4078
+ persistedSyncState = _k.sent();
4046
4079
  tablesToSyncify = !isInitialSync && currentUser.isLoggedIn
4047
4080
  ? getTablesToSyncify(db, persistedSyncState)
4048
4081
  : [];
@@ -4053,8 +4086,8 @@
4053
4086
  return [2 /*return*/, true];
4054
4087
  //console.debug('sync doSyncify is true');
4055
4088
  return [4 /*yield*/, db.transaction('rw', tablesToSyncify, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4056
- return __generator$1(this, function (_e) {
4057
- switch (_e.label) {
4089
+ return __generator$1(this, function (_j) {
4090
+ switch (_j.label) {
4058
4091
  case 0:
4059
4092
  // @ts-ignore
4060
4093
  tx.idbtrans.disableChangeTracking = true;
@@ -4062,35 +4095,35 @@
4062
4095
  tx.idbtrans.disableAccessControl = true; // TODO: Take care of this flag in access control middleware!
4063
4096
  return [4 /*yield*/, modifyLocalObjectsWithNewUserId(tablesToSyncify, currentUser, persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms)];
4064
4097
  case 1:
4065
- _e.sent();
4098
+ _j.sent();
4066
4099
  return [2 /*return*/];
4067
4100
  }
4068
4101
  });
4069
4102
  }); })];
4070
4103
  case 3:
4071
4104
  //console.debug('sync doSyncify is true');
4072
- _j.sent();
4105
+ _k.sent();
4073
4106
  throwIfCancelled(cancelToken);
4074
- _j.label = 4;
4107
+ _k.label = 4;
4075
4108
  case 4: return [4 /*yield*/, db.transaction('r', db.tables, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
4076
4109
  var syncState, baseRevs, clientChanges, alreadySyncedRealms, syncificationInserts;
4077
- return __generator$1(this, function (_e) {
4078
- switch (_e.label) {
4110
+ return __generator$1(this, function (_j) {
4111
+ switch (_j.label) {
4079
4112
  case 0: return [4 /*yield*/, db.getPersistedSyncState()];
4080
4113
  case 1:
4081
- syncState = _e.sent();
4114
+ syncState = _j.sent();
4082
4115
  return [4 /*yield*/, db.$baseRevs.toArray()];
4083
4116
  case 2:
4084
- baseRevs = _e.sent();
4117
+ baseRevs = _j.sent();
4085
4118
  return [4 /*yield*/, listClientChanges(mutationTables)];
4086
4119
  case 3:
4087
- clientChanges = _e.sent();
4120
+ clientChanges = _j.sent();
4088
4121
  throwIfCancelled(cancelToken);
4089
4122
  if (!doSyncify) return [3 /*break*/, 5];
4090
4123
  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);
4091
4124
  return [4 /*yield*/, listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySyncedRealms)];
4092
4125
  case 4:
4093
- syncificationInserts = _e.sent();
4126
+ syncificationInserts = _j.sent();
4094
4127
  throwIfCancelled(cancelToken);
4095
4128
  clientChanges = clientChanges.concat(syncificationInserts);
4096
4129
  return [2 /*return*/, [clientChanges, syncState, baseRevs]];
@@ -4099,7 +4132,7 @@
4099
4132
  });
4100
4133
  }); })];
4101
4134
  case 5:
4102
- _h = _j.sent(), clientChangeSet = _h[0], syncState = _h[1], baseRevs = _h[2];
4135
+ _j = _k.sent(), clientChangeSet = _j[0], syncState = _j[1], baseRevs = _j[2];
4103
4136
  syncIsNeeded = clientChangeSet.some(function (set) { return set.muts.some(function (mut) { return mut.keys.length > 0; }); });
4104
4137
  if (justCheckIfNeeded) {
4105
4138
  console.debug('Sync is needed:', syncIsNeeded);
@@ -4117,12 +4150,12 @@
4117
4150
  throwIfCancelled(cancelToken);
4118
4151
  return [4 /*yield*/, syncWithServer(clientChangeSet, syncState, baseRevs, db, databaseUrl, schema, clientIdentity, currentUser)];
4119
4152
  case 6:
4120
- res = _j.sent();
4153
+ res = _k.sent();
4121
4154
  console.debug('Sync response', res);
4122
4155
  return [4 /*yield*/, db.transaction('rw', db.tables, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4123
- var _e, _f, tableName, addedClientChanges, _loop_5, _g, mutationTables_1, mutTable, syncState, newSyncState, filteredChanges;
4124
- return __generator$1(this, function (_h) {
4125
- switch (_h.label) {
4156
+ var _j, _k, tableName, addedClientChanges, _loop_5, _l, mutationTables_1, mutTable, syncState, newSyncState, filteredChanges;
4157
+ return __generator$1(this, function (_m) {
4158
+ switch (_m.label) {
4126
4159
  case 0:
4127
4160
  // @ts-ignore
4128
4161
  tx.idbtrans.disableChangeTracking = true;
@@ -4130,8 +4163,8 @@
4130
4163
  tx.idbtrans.disableAccessControl = true; // TODO: Take care of this flag in access control middleware!
4131
4164
  // Update db.cloud.schema from server response.
4132
4165
  // Local schema MAY include a subset of tables, so do not force all tables into local schema.
4133
- for (_e = 0, _f = Object.keys(schema); _e < _f.length; _e++) {
4134
- tableName = _f[_e];
4166
+ for (_j = 0, _k = Object.keys(schema); _j < _k.length; _j++) {
4167
+ tableName = _k[_j];
4135
4168
  if (res.schema[tableName]) {
4136
4169
  // Write directly into configured schema. This code can only be executed alone.
4137
4170
  schema[tableName] = res.schema[tableName];
@@ -4139,16 +4172,16 @@
4139
4172
  }
4140
4173
  return [4 /*yield*/, db.$syncState.put(schema, 'schema')];
4141
4174
  case 1:
4142
- _h.sent();
4175
+ _m.sent();
4143
4176
  return [4 /*yield*/, listClientChanges(mutationTables, db, {
4144
4177
  since: latestRevisions,
4145
4178
  })];
4146
4179
  case 2:
4147
- addedClientChanges = _h.sent();
4180
+ addedClientChanges = _m.sent();
4148
4181
  _loop_5 = function (mutTable) {
4149
4182
  var tableName, latestRev;
4150
- return __generator$1(this, function (_j) {
4151
- switch (_j.label) {
4183
+ return __generator$1(this, function (_o) {
4184
+ switch (_o.label) {
4152
4185
  case 0:
4153
4186
  tableName = getTableFromMutationTable(mutTable.name);
4154
4187
  if (!!addedClientChanges.some(function (ch) { return ch.table === tableName && ch.muts.length > 0; })) return [3 /*break*/, 2];
@@ -4165,7 +4198,7 @@
4165
4198
  // to the server.
4166
4199
  // It is therefore safe to clear all changes (which is faster than
4167
4200
  // deleting a range)
4168
- _j.sent();
4201
+ _o.sent();
4169
4202
  return [3 /*break*/, 5];
4170
4203
  case 2:
4171
4204
  if (!latestRevisions[tableName]) return [3 /*break*/, 4];
@@ -4180,25 +4213,25 @@
4180
4213
  .delete(),
4181
4214
  ])];
4182
4215
  case 3:
4183
- _j.sent();
4216
+ _o.sent();
4184
4217
  return [3 /*break*/, 5];
4185
4218
  case 4:
4186
- _j.label = 5;
4219
+ _o.label = 5;
4187
4220
  case 5: return [2 /*return*/];
4188
4221
  }
4189
4222
  });
4190
4223
  };
4191
- _g = 0, mutationTables_1 = mutationTables;
4192
- _h.label = 3;
4224
+ _l = 0, mutationTables_1 = mutationTables;
4225
+ _m.label = 3;
4193
4226
  case 3:
4194
- if (!(_g < mutationTables_1.length)) return [3 /*break*/, 6];
4195
- mutTable = mutationTables_1[_g];
4227
+ if (!(_l < mutationTables_1.length)) return [3 /*break*/, 6];
4228
+ mutTable = mutationTables_1[_l];
4196
4229
  return [5 /*yield**/, _loop_5(mutTable)];
4197
4230
  case 4:
4198
- _h.sent();
4199
- _h.label = 5;
4231
+ _m.sent();
4232
+ _m.label = 5;
4200
4233
  case 5:
4201
- _g++;
4234
+ _l++;
4202
4235
  return [3 /*break*/, 3];
4203
4236
  case 6:
4204
4237
  // Update latestRevisions object according to additional changes:
@@ -4221,10 +4254,10 @@
4221
4254
  // The purpose of this operation is to mark a start revision (per table)
4222
4255
  // so that all client-mutations that come after this, will be mapped to current
4223
4256
  // server revision.
4224
- _h.sent();
4257
+ _m.sent();
4225
4258
  return [4 /*yield*/, db.getPersistedSyncState()];
4226
4259
  case 8:
4227
- syncState = _h.sent();
4260
+ syncState = _m.sent();
4228
4261
  //
4229
4262
  // Delete objects from removed realms
4230
4263
  //
@@ -4233,7 +4266,7 @@
4233
4266
  //
4234
4267
  // Delete objects from removed realms
4235
4268
  //
4236
- _h.sent();
4269
+ _m.sent();
4237
4270
  newSyncState = syncState || {
4238
4271
  syncedTables: [],
4239
4272
  latestRevisions: {},
@@ -4261,7 +4294,7 @@
4261
4294
  //
4262
4295
  // apply server changes
4263
4296
  //
4264
- _h.sent();
4297
+ _m.sent();
4265
4298
  //
4266
4299
  // Update syncState
4267
4300
  //
@@ -4271,11 +4304,11 @@
4271
4304
  });
4272
4305
  }); })];
4273
4306
  case 7:
4274
- done = _j.sent();
4307
+ done = _k.sent();
4275
4308
  if (!!done) return [3 /*break*/, 9];
4276
4309
  console.debug('MORE SYNC NEEDED. Go for it again!');
4277
4310
  return [4 /*yield*/, _sync(db, options, schema, { isInitialSync: isInitialSync, cancelToken: cancelToken })];
4278
- case 8: return [2 /*return*/, _j.sent()];
4311
+ case 8: return [2 /*return*/, _k.sent()];
4279
4312
  case 9:
4280
4313
  console.debug('SYNC DONE', { isInitialSync: isInitialSync });
4281
4314
  return [2 /*return*/, false]; // Not needed anymore
@@ -4285,9 +4318,9 @@
4285
4318
  }
4286
4319
  function deleteObjectsFromRemovedRealms(db, res, prevState) {
4287
4320
  return __awaiter$1(this, void 0, void 0, function () {
4288
- var deletedRealms, rejectedRealms, previousRealmSet, previousInviteRealmSet, updatedRealmSet, updatedTotalRealmSet, _e, previousRealmSet_1, realmId, _f, _g, realmId, tables, _loop_6, _h, tables_1, table;
4289
- return __generator$1(this, function (_j) {
4290
- switch (_j.label) {
4321
+ var deletedRealms, rejectedRealms, previousRealmSet, previousInviteRealmSet, updatedRealmSet, updatedTotalRealmSet, _j, previousRealmSet_1, realmId, _k, _l, realmId, tables, _loop_6, _m, tables_1, table;
4322
+ return __generator$1(this, function (_o) {
4323
+ switch (_o.label) {
4291
4324
  case 0:
4292
4325
  deletedRealms = new Set();
4293
4326
  rejectedRealms = new Set();
@@ -4295,8 +4328,8 @@
4295
4328
  previousInviteRealmSet = prevState ? prevState.inviteRealms : [];
4296
4329
  updatedRealmSet = new Set(res.realms);
4297
4330
  updatedTotalRealmSet = new Set(res.realms.concat(res.inviteRealms));
4298
- for (_e = 0, previousRealmSet_1 = previousRealmSet; _e < previousRealmSet_1.length; _e++) {
4299
- realmId = previousRealmSet_1[_e];
4331
+ for (_j = 0, previousRealmSet_1 = previousRealmSet; _j < previousRealmSet_1.length; _j++) {
4332
+ realmId = previousRealmSet_1[_j];
4300
4333
  if (!updatedRealmSet.has(realmId)) {
4301
4334
  rejectedRealms.add(realmId);
4302
4335
  if (!updatedTotalRealmSet.has(realmId)) {
@@ -4304,8 +4337,8 @@
4304
4337
  }
4305
4338
  }
4306
4339
  }
4307
- for (_f = 0, _g = previousInviteRealmSet.concat(previousRealmSet); _f < _g.length; _f++) {
4308
- realmId = _g[_f];
4340
+ for (_k = 0, _l = previousInviteRealmSet.concat(previousRealmSet); _k < _l.length; _k++) {
4341
+ realmId = _l[_k];
4309
4342
  if (!updatedTotalRealmSet.has(realmId)) {
4310
4343
  deletedRealms.add(realmId);
4311
4344
  }
@@ -4314,8 +4347,8 @@
4314
4347
  tables = getSyncableTables(db);
4315
4348
  _loop_6 = function (table) {
4316
4349
  var realmsToDelete;
4317
- return __generator$1(this, function (_k) {
4318
- switch (_k.label) {
4350
+ return __generator$1(this, function (_p) {
4351
+ switch (_p.label) {
4319
4352
  case 0:
4320
4353
  realmsToDelete = ['realms', 'members', 'roles'].includes(table.name)
4321
4354
  ? deletedRealms // These tables should spare rejected ones.
@@ -4333,7 +4366,7 @@
4333
4366
  case 1:
4334
4367
  // There's an index to use:
4335
4368
  //console.debug(`REMOVAL: deleting all ${table.name} where realmId anyOf `, JSON.stringify([...realmsToDelete]));
4336
- _k.sent();
4369
+ _p.sent();
4337
4370
  return [3 /*break*/, 4];
4338
4371
  case 2:
4339
4372
  // No index to use:
@@ -4344,23 +4377,23 @@
4344
4377
  case 3:
4345
4378
  // No index to use:
4346
4379
  //console.debug(`REMOVAL: deleting all ${table.name} where realmId is any of `, JSON.stringify([...realmsToDelete]), realmsToDelete.size);
4347
- _k.sent();
4348
- _k.label = 4;
4380
+ _p.sent();
4381
+ _p.label = 4;
4349
4382
  case 4: return [2 /*return*/];
4350
4383
  }
4351
4384
  });
4352
4385
  };
4353
- _h = 0, tables_1 = tables;
4354
- _j.label = 1;
4386
+ _m = 0, tables_1 = tables;
4387
+ _o.label = 1;
4355
4388
  case 1:
4356
- if (!(_h < tables_1.length)) return [3 /*break*/, 4];
4357
- table = tables_1[_h];
4389
+ if (!(_m < tables_1.length)) return [3 /*break*/, 4];
4390
+ table = tables_1[_m];
4358
4391
  return [5 /*yield**/, _loop_6(table)];
4359
4392
  case 2:
4360
- _j.sent();
4361
- _j.label = 3;
4393
+ _o.sent();
4394
+ _o.label = 3;
4362
4395
  case 3:
4363
- _h++;
4396
+ _m++;
4364
4397
  return [3 /*break*/, 1];
4365
4398
  case 4: return [2 /*return*/];
4366
4399
  }
@@ -4384,8 +4417,8 @@
4384
4417
  var loopWarning = 0;
4385
4418
  var loopDetection = [0, 0, 0, 0, 0, 0, 0, 0, 0, Date.now()];
4386
4419
  event.subscribe(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
4387
- return __generator$1(this, function (_e) {
4388
- switch (_e.label) {
4420
+ return __generator$1(this, function (_j) {
4421
+ switch (_j.label) {
4389
4422
  case 0:
4390
4423
  if (isWorking)
4391
4424
  return [2 /*return*/];
@@ -4394,12 +4427,12 @@
4394
4427
  loopDetection.shift();
4395
4428
  loopDetection.push(Date.now());
4396
4429
  readyToServe.next(false);
4397
- _e.label = 1;
4430
+ _j.label = 1;
4398
4431
  case 1:
4399
- _e.trys.push([1, , 3, 8]);
4432
+ _j.trys.push([1, , 3, 8]);
4400
4433
  return [4 /*yield*/, consumeQueue()];
4401
4434
  case 2:
4402
- _e.sent();
4435
+ _j.sent();
4403
4436
  return [3 /*break*/, 8];
4404
4437
  case 3:
4405
4438
  if (!(loopDetection[loopDetection.length - 1] - loopDetection[0] <
@@ -4410,7 +4443,7 @@
4410
4443
  loopWarning = Date.now() + 60000;
4411
4444
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 60000); })];
4412
4445
  case 4:
4413
- _e.sent();
4446
+ _j.sent();
4414
4447
  return [3 /*break*/, 7];
4415
4448
  case 5:
4416
4449
  // This is a one-time event. Just pause 10 seconds.
@@ -4418,8 +4451,8 @@
4418
4451
  loopWarning = Date.now() + 10000;
4419
4452
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 10000); })];
4420
4453
  case 6:
4421
- _e.sent();
4422
- _e.label = 7;
4454
+ _j.sent();
4455
+ _j.label = 7;
4423
4456
  case 7:
4424
4457
  isWorking = false;
4425
4458
  readyToServe.next(true);
@@ -4433,28 +4466,28 @@
4433
4466
  event.next(null);
4434
4467
  }
4435
4468
  function consumeQueue() {
4436
- var _e, _f, _g;
4469
+ var _a, _b, _c;
4437
4470
  return __awaiter$1(this, void 0, void 0, function () {
4438
4471
  var _loop_7;
4439
4472
  var _this_1 = this;
4440
- return __generator$1(this, function (_h) {
4441
- switch (_h.label) {
4473
+ return __generator$1(this, function (_j) {
4474
+ switch (_j.label) {
4442
4475
  case 0:
4443
4476
  _loop_7 = function () {
4444
- var msg, persistedSyncState, _j, user, refreshedLogin, error_2;
4445
- return __generator$1(this, function (_k) {
4446
- switch (_k.label) {
4477
+ var msg, persistedSyncState, _k, user, refreshedLogin, error_2;
4478
+ return __generator$1(this, function (_l) {
4479
+ switch (_l.label) {
4447
4480
  case 0:
4448
4481
  msg = queue.shift();
4449
- _k.label = 1;
4482
+ _l.label = 1;
4450
4483
  case 1:
4451
- _k.trys.push([1, 13, , 14]);
4484
+ _l.trys.push([1, 13, , 14]);
4452
4485
  // If the sync worker or service worker is syncing, wait 'til thei're done.
4453
4486
  // It's no need to have two channels at the same time - even though it wouldnt
4454
4487
  // be a problem - this is an optimization.
4455
4488
  return [4 /*yield*/, db.cloud.syncState
4456
- .pipe(filter(function (_e) {
4457
- var phase = _e.phase;
4489
+ .pipe(filter(function (_j) {
4490
+ var phase = _j.phase;
4458
4491
  return phase === 'in-sync' || phase === 'error';
4459
4492
  }), take(1))
4460
4493
  .toPromise()];
@@ -4462,14 +4495,14 @@
4462
4495
  // If the sync worker or service worker is syncing, wait 'til thei're done.
4463
4496
  // It's no need to have two channels at the same time - even though it wouldnt
4464
4497
  // be a problem - this is an optimization.
4465
- _k.sent();
4498
+ _l.sent();
4466
4499
  console.debug('processing msg', msg);
4467
4500
  persistedSyncState = db.cloud.persistedSyncState.value;
4468
4501
  //syncState.
4469
4502
  if (!msg)
4470
4503
  return [2 /*return*/, "continue"];
4471
- _j = msg.type;
4472
- switch (_j) {
4504
+ _k = msg.type;
4505
+ switch (_k) {
4473
4506
  case 'token-expired': return [3 /*break*/, 3];
4474
4507
  case 'realm-added': return [3 /*break*/, 6];
4475
4508
  case 'realm-accepted': return [3 /*break*/, 7];
@@ -4483,7 +4516,7 @@
4483
4516
  user = db.cloud.currentUser.value;
4484
4517
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, user)];
4485
4518
  case 4:
4486
- refreshedLogin = _k.sent();
4519
+ refreshedLogin = _l.sent();
4487
4520
  // Persist updated access token
4488
4521
  return [4 /*yield*/, db.table('$logins').update(user.userId, {
4489
4522
  accessToken: refreshedLogin.accessToken,
@@ -4491,7 +4524,7 @@
4491
4524
  })];
4492
4525
  case 5:
4493
4526
  // Persist updated access token
4494
- _k.sent();
4527
+ _l.sent();
4495
4528
  // Updating $logins will trigger emission of db.cloud.currentUser observable, which
4496
4529
  // in turn will lead to that connectWebSocket.ts will reconnect the socket with the
4497
4530
  // new token. So we don't need to do anything more here.
@@ -4508,8 +4541,8 @@
4508
4541
  return [3 /*break*/, 12];
4509
4542
  case 8:
4510
4543
  //if (
4511
- ((_e = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms) === null || _e === void 0 ? void 0 : _e.includes(msg.realm)) ||
4512
- ((_f = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.inviteRealms) === null || _f === void 0 ? void 0 : _f.includes(msg.realm));
4544
+ ((_a = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms) === null || _a === void 0 ? void 0 : _a.includes(msg.realm)) ||
4545
+ ((_b = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.inviteRealms) === null || _b === void 0 ? void 0 : _b.includes(msg.realm));
4513
4546
  //) {
4514
4547
  triggerSync(db, 'pull');
4515
4548
  //}
@@ -4519,14 +4552,14 @@
4519
4552
  return [3 /*break*/, 12];
4520
4553
  case 10:
4521
4554
  console.debug('changes');
4522
- if (((_g = db.cloud.syncState.value) === null || _g === void 0 ? void 0 : _g.phase) === 'error') {
4555
+ if (((_c = db.cloud.syncState.value) === null || _c === void 0 ? void 0 : _c.phase) === 'error') {
4523
4556
  triggerSync(db, 'pull');
4524
4557
  return [3 /*break*/, 12];
4525
4558
  }
4526
4559
  return [4 /*yield*/, db.transaction('rw', db.dx.tables, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4527
- var _e, schema, syncState, currentUser, ourRealmSetHash, clientChanges, mutationTables, filteredChanges;
4528
- return __generator$1(this, function (_f) {
4529
- switch (_f.label) {
4560
+ var _j, schema, syncState, currentUser, ourRealmSetHash, clientChanges, mutationTables, filteredChanges;
4561
+ return __generator$1(this, function (_k) {
4562
+ switch (_k.label) {
4530
4563
  case 0:
4531
4564
  // @ts-ignore
4532
4565
  tx.idbtrans.disableChangeTracking = true;
@@ -4538,7 +4571,7 @@
4538
4571
  db.getCurrentUser(),
4539
4572
  ])];
4540
4573
  case 1:
4541
- _e = _f.sent(), schema = _e[0], syncState = _e[1], currentUser = _e[2];
4574
+ _j = _k.sent(), schema = _j[0], syncState = _j[1], currentUser = _j[2];
4542
4575
  console.debug('ws message queue: in transaction');
4543
4576
  if (!syncState || !schema || !currentUser) {
4544
4577
  console.debug('required vars not present', {
@@ -4573,7 +4606,7 @@
4573
4606
  // Keep TX in non-IDB work
4574
4607
  computeRealmSetHash(syncState))];
4575
4608
  case 2:
4576
- ourRealmSetHash = _f.sent();
4609
+ ourRealmSetHash = _k.sent();
4577
4610
  console.debug('ourRealmSetHash', ourRealmSetHash);
4578
4611
  if (ourRealmSetHash !== msg.realmSetHash) {
4579
4612
  console.debug('not same realmSetHash', msg.realmSetHash);
@@ -4587,9 +4620,9 @@
4587
4620
  mutationTables = getSyncableTables(db).map(function (tbl) { return db.table(getMutationTable(tbl.name)); });
4588
4621
  return [4 /*yield*/, listClientChanges(mutationTables)];
4589
4622
  case 3:
4590
- clientChanges = _f.sent();
4623
+ clientChanges = _k.sent();
4591
4624
  console.debug('msg queue: client changes', clientChanges);
4592
- _f.label = 4;
4625
+ _k.label = 4;
4593
4626
  case 4:
4594
4627
  if (!(msg.changes.length > 0)) return [3 /*break*/, 6];
4595
4628
  filteredChanges = filterServerChangesThroughAddedClientChanges(msg.changes, clientChanges);
@@ -4599,8 +4632,8 @@
4599
4632
  console.debug('applying filtered server changes', filteredChanges);
4600
4633
  return [4 /*yield*/, applyServerChanges(filteredChanges, db)];
4601
4634
  case 5:
4602
- _f.sent();
4603
- _f.label = 6;
4635
+ _k.sent();
4636
+ _k.label = 6;
4604
4637
  case 6:
4605
4638
  // Update latest revisions per table in case there are unsynced changes
4606
4639
  // This can be a real case in future when we allow non-eagery sync.
@@ -4611,37 +4644,37 @@
4611
4644
  console.debug('Updating baseRefs', syncState.latestRevisions);
4612
4645
  return [4 /*yield*/, updateBaseRevs(db, schema, syncState.latestRevisions, msg.newRev)];
4613
4646
  case 7:
4614
- _f.sent();
4647
+ _k.sent();
4615
4648
  //
4616
4649
  // Update syncState
4617
4650
  //
4618
4651
  console.debug('Updating syncState', syncState);
4619
4652
  return [4 /*yield*/, db.$syncState.put(syncState, 'syncState')];
4620
4653
  case 8:
4621
- _f.sent();
4654
+ _k.sent();
4622
4655
  return [2 /*return*/];
4623
4656
  }
4624
4657
  });
4625
4658
  }); })];
4626
4659
  case 11:
4627
- _k.sent();
4660
+ _l.sent();
4628
4661
  console.debug('msg queue: done with rw transaction');
4629
4662
  return [3 /*break*/, 12];
4630
4663
  case 12: return [3 /*break*/, 14];
4631
4664
  case 13:
4632
- error_2 = _k.sent();
4665
+ error_2 = _l.sent();
4633
4666
  console.error("Error in msg queue", error_2);
4634
4667
  return [3 /*break*/, 14];
4635
4668
  case 14: return [2 /*return*/];
4636
4669
  }
4637
4670
  });
4638
4671
  };
4639
- _h.label = 1;
4672
+ _j.label = 1;
4640
4673
  case 1:
4641
4674
  if (!(queue.length > 0)) return [3 /*break*/, 3];
4642
4675
  return [5 /*yield**/, _loop_7()];
4643
4676
  case 2:
4644
- _h.sent();
4677
+ _j.sent();
4645
4678
  return [3 /*break*/, 1];
4646
4679
  case 3: return [2 /*return*/];
4647
4680
  }
@@ -4783,10 +4816,10 @@
4783
4816
  return toString.call(o).slice(8, -1);
4784
4817
  }
4785
4818
  function getEffectiveKeys(primaryKey, req) {
4786
- var _e;
4819
+ var _a;
4787
4820
  if (req.type === 'delete')
4788
4821
  return req.keys;
4789
- return ((_e = req.keys) === null || _e === void 0 ? void 0 : _e.slice()) || req.values.map(primaryKey.extractKey);
4822
+ return ((_a = req.keys) === null || _a === void 0 ? void 0 : _a.slice()) || req.values.map(primaryKey.extractKey);
4790
4823
  }
4791
4824
  function applyToUpperBitFix(orig, bits) {
4792
4825
  return ((bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +
@@ -4876,7 +4909,7 @@
4876
4909
  name: 'idGenerationMiddleware',
4877
4910
  level: 1,
4878
4911
  create: function (core) {
4879
- return __assign(__assign({}, core), { table: function (tableName) {
4912
+ return Object.assign(Object.assign({}, core), { table: function (tableName) {
4880
4913
  var table = core.table(tableName);
4881
4914
  function generateOrVerifyAtKeys(req, idPrefix) {
4882
4915
  var valueClones = null;
@@ -4902,17 +4935,17 @@
4902
4935
  "If you want to generate IDs programmatically, remove '@' from the schema to get rid of this constraint. Dexie Cloud supports custom IDs as long as they are random and globally unique.");
4903
4936
  }
4904
4937
  });
4905
- return table.mutate(__assign(__assign({}, req), { keys: keys, values: valueClones || req.values }));
4938
+ return table.mutate(Object.assign(Object.assign({}, req), { keys: keys, values: valueClones || req.values }));
4906
4939
  }
4907
- return __assign(__assign({}, table), { mutate: function (req) {
4908
- var _e, _f;
4940
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
4941
+ var _a, _b;
4909
4942
  // @ts-ignore
4910
4943
  if (req.trans.disableChangeTracking) {
4911
4944
  // Disable ID policy checks and ID generation
4912
4945
  return table.mutate(req);
4913
4946
  }
4914
4947
  if (req.type === 'add' || req.type === 'put') {
4915
- var cloudTableSchema = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tableName];
4948
+ var cloudTableSchema = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tableName];
4916
4949
  if (!(cloudTableSchema === null || cloudTableSchema === void 0 ? void 0 : cloudTableSchema.generatedGlobalId)) {
4917
4950
  if (cloudTableSchema === null || cloudTableSchema === void 0 ? void 0 : cloudTableSchema.markedForSync) {
4918
4951
  // Just make sure primary key is of a supported type:
@@ -4928,7 +4961,7 @@
4928
4961
  }
4929
4962
  }
4930
4963
  else {
4931
- if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) && !db.initiallySynced) {
4964
+ if (((_b = db.cloud.options) === null || _b === void 0 ? void 0 : _b.databaseUrl) && !db.initiallySynced) {
4932
4965
  // A database URL is configured but no initial sync has been performed.
4933
4966
  var keys_1 = getEffectiveKeys(table.schema.primaryKey, req);
4934
4967
  // Check if the operation would yield any INSERT. If so, complain! We never want wrong ID prefixes stored.
@@ -4960,16 +4993,16 @@
4960
4993
  name: 'implicitPropSetterMiddleware',
4961
4994
  level: 1,
4962
4995
  create: function (core) {
4963
- return __assign(__assign({}, core), { table: function (tableName) {
4996
+ return Object.assign(Object.assign({}, core), { table: function (tableName) {
4964
4997
  var table = core.table(tableName);
4965
- return __assign(__assign({}, table), { mutate: function (req) {
4966
- var _e, _f, _g, _h;
4998
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
4999
+ var _a, _b, _c, _d;
4967
5000
  // @ts-ignore
4968
5001
  if (req.trans.disableChangeTracking) {
4969
5002
  return table.mutate(req);
4970
5003
  }
4971
5004
  var trans = req.trans;
4972
- if ((_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tableName]) === null || _f === void 0 ? void 0 : _f.markedForSync) {
5005
+ if ((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tableName]) === null || _b === void 0 ? void 0 : _b.markedForSync) {
4973
5006
  if (req.type === 'add' || req.type === 'put') {
4974
5007
  // No matter if user is logged in or not, make sure "owner" and "realmId" props are set properly.
4975
5008
  // If not logged in, this will be changed upon syncification of the tables (next sync after login),
@@ -4984,7 +5017,7 @@
4984
5017
  if (!obj.realmId) {
4985
5018
  obj.realmId = trans.currentUser.userId;
4986
5019
  }
4987
- var key = (_h = (_g = table.schema.primaryKey).extractKey) === null || _h === void 0 ? void 0 : _h.call(_g, obj);
5020
+ var key = (_d = (_c = table.schema.primaryKey).extractKey) === null || _d === void 0 ? void 0 : _d.call(_c, obj);
4988
5021
  if (typeof key === 'string' && key[0] === '#') {
4989
5022
  // Add $ts prop for put operations and
4990
5023
  // disable update operations as well as consistent
@@ -5029,11 +5062,11 @@
5029
5062
  var counter$1 = 0;
5030
5063
  function guardedTable(table) {
5031
5064
  var prop = "$lock" + (++counter$1);
5032
- return __assign(__assign({}, table), { count: readLock(table.count, prop), get: readLock(table.get, prop), getMany: readLock(table.getMany, prop), openCursor: readLock(table.openCursor, prop), query: readLock(table.query, prop), mutate: writeLock(table.mutate, prop) });
5065
+ return Object.assign(Object.assign({}, table), { count: readLock(table.count, prop), get: readLock(table.get, prop), getMany: readLock(table.getMany, prop), openCursor: readLock(table.openCursor, prop), query: readLock(table.query, prop), mutate: writeLock(table.mutate, prop) });
5033
5066
  }
5034
5067
  function readLock(fn, prop) {
5035
5068
  return function readLocker(req) {
5036
- var _e = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _e.readers, writers = _e.writers;
5069
+ var _j = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _j.readers, writers = _j.writers;
5037
5070
  var numWriters = writers.length;
5038
5071
  var promise = (numWriters > 0
5039
5072
  ? writers[numWriters - 1].then(function () { return fn(req); }, function () { return fn(req); })
@@ -5044,7 +5077,7 @@
5044
5077
  }
5045
5078
  function writeLock(fn, prop) {
5046
5079
  return function writeLocker(req) {
5047
- var _e = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _e.readers, writers = _e.writers;
5080
+ var _j = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _j.readers, writers = _j.writers;
5048
5081
  var promise = (writers.length > 0
5049
5082
  ? writers[writers.length - 1].then(function () { return fn(req); }, function () { return fn(req); })
5050
5083
  : readers.length > 0
@@ -5063,8 +5096,8 @@
5063
5096
  * changes to server and cleanup the tracked mutations once the server has
5064
5097
  * ackowledged that it got them.
5065
5098
  */
5066
- function createMutationTrackingMiddleware(_e) {
5067
- var currentUserObservable = _e.currentUserObservable, db = _e.db;
5099
+ function createMutationTrackingMiddleware(_j) {
5100
+ var currentUserObservable = _j.currentUserObservable, db = _j.db;
5068
5101
  return {
5069
5102
  stack: 'dbcore',
5070
5103
  name: 'MutationTrackingMiddleware',
@@ -5078,14 +5111,14 @@
5078
5111
  core.table("$".concat(tbl.name, "_mutations"))
5079
5112
  ]; }));
5080
5113
  }
5081
- catch (_e) {
5114
+ catch (_a) {
5082
5115
  throwVersionIncrementNeeded();
5083
5116
  }
5084
- return __assign(__assign({}, core), { transaction: function (tables, mode) {
5117
+ return Object.assign(Object.assign({}, core), { transaction: function (tables, mode) {
5085
5118
  var tx;
5086
5119
  if (mode === 'readwrite') {
5087
5120
  var mutationTables = tables
5088
- .filter(function (tbl) { var _e, _f; return (_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tbl]) === null || _f === void 0 ? void 0 : _f.markedForSync; })
5121
+ .filter(function (tbl) { var _a, _b; return (_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tbl]) === null || _b === void 0 ? void 0 : _b.markedForSync; })
5089
5122
  .map(function (tbl) { return getMutationTable(tbl); });
5090
5123
  tx = core.transaction(__spreadArray$1(__spreadArray$1([], tables, true), mutationTables, true), mode);
5091
5124
  }
@@ -5108,8 +5141,8 @@
5108
5141
  outstandingTransactions.next(outstandingTransactions.value);
5109
5142
  };
5110
5143
  var txComplete_1 = function () {
5111
- var _e;
5112
- if (tx.mutationsAdded && ((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl)) {
5144
+ var _a;
5145
+ if (tx.mutationsAdded && ((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
5113
5146
  if (db.cloud.usingServiceWorker) {
5114
5147
  console.debug('registering sync event');
5115
5148
  registerSyncEvent(db, "push");
@@ -5133,7 +5166,7 @@
5133
5166
  // make sure to set the mutationsAdded flag on transaction.
5134
5167
  // This is also done in mutateAndLog() as that function talks to a
5135
5168
  // lower level DBCore and wouldn't be catched by this code.
5136
- return __assign(__assign({}, table), { mutate: function (req) {
5169
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
5137
5170
  if (req.type === 'add' || req.type === 'put') {
5138
5171
  req.trans.mutationsAdded = true;
5139
5172
  }
@@ -5141,7 +5174,7 @@
5141
5174
  } });
5142
5175
  }
5143
5176
  else if (tableName === '$logins') {
5144
- return __assign(__assign({}, table), { mutate: function (req) {
5177
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
5145
5178
  //console.debug('Mutating $logins table', req);
5146
5179
  return table
5147
5180
  .mutate(req)
@@ -5163,16 +5196,16 @@
5163
5196
  }
5164
5197
  var schema = table.schema;
5165
5198
  var mutsTable = mutTableMap.get(tableName);
5166
- return guardedTable(__assign(__assign({}, table), { mutate: function (req) {
5167
- var _e, _f, _g;
5199
+ return guardedTable(Object.assign(Object.assign({}, table), { mutate: function (req) {
5200
+ var _a, _b, _c;
5168
5201
  var trans = req.trans;
5169
5202
  if (!trans.txid)
5170
5203
  return table.mutate(req); // Upgrade transactions not guarded by us.
5171
5204
  if (trans.disableChangeTracking)
5172
5205
  return table.mutate(req);
5173
- if (!((_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tableName]) === null || _f === void 0 ? void 0 : _f.markedForSync))
5206
+ if (!((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tableName]) === null || _b === void 0 ? void 0 : _b.markedForSync))
5174
5207
  return table.mutate(req);
5175
- if (!((_g = trans.currentUser) === null || _g === void 0 ? void 0 : _g.isLoggedIn)) {
5208
+ if (!((_c = trans.currentUser) === null || _c === void 0 ? void 0 : _c.isLoggedIn)) {
5176
5209
  // Unauthorized user should not log mutations.
5177
5210
  // Instead, after login all local data should be logged at once.
5178
5211
  return table.mutate(req);
@@ -5272,7 +5305,7 @@
5272
5305
  }
5273
5306
  function overrideParseStoresSpec(origFunc, dexie) {
5274
5307
  return function (stores, dbSchema) {
5275
- var storesClone = __assign(__assign({}, DEXIE_CLOUD_SCHEMA), stores);
5308
+ var storesClone = Object.assign(Object.assign({}, DEXIE_CLOUD_SCHEMA), stores);
5276
5309
  var cloudSchema = dexie.cloud.schema || (dexie.cloud.schema = {});
5277
5310
  var allPrefixes = new Set();
5278
5311
  Object.keys(storesClone).forEach(function (tableName) {
@@ -5305,13 +5338,13 @@
5305
5338
  }
5306
5339
  function performInitialSync(db, cloudOptions, cloudSchema) {
5307
5340
  return __awaiter$1(this, void 0, void 0, function () {
5308
- return __generator$1(this, function (_e) {
5309
- switch (_e.label) {
5341
+ return __generator$1(this, function (_j) {
5342
+ switch (_j.label) {
5310
5343
  case 0:
5311
5344
  console.debug('Performing initial sync');
5312
5345
  return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5313
5346
  case 1:
5314
- _e.sent();
5347
+ _j.sent();
5315
5348
  console.debug('Done initial sync');
5316
5349
  return [2 /*return*/];
5317
5350
  }
@@ -5437,7 +5470,7 @@
5437
5470
  try {
5438
5471
  this.ws.close();
5439
5472
  }
5440
- catch (_e) { }
5473
+ catch (_a) { }
5441
5474
  }
5442
5475
  this.ws = null;
5443
5476
  if (this.messageProducerSubscription) {
@@ -5453,7 +5486,7 @@
5453
5486
  try {
5454
5487
  this.disconnect();
5455
5488
  }
5456
- catch (_e) { }
5489
+ catch (_a) { }
5457
5490
  this.connect()
5458
5491
  .catch(function () { })
5459
5492
  .then(function () { return (_this_1.reconnecting = false); }); // finally()
@@ -5462,8 +5495,8 @@
5462
5495
  return __awaiter$1(this, void 0, void 0, function () {
5463
5496
  var wsUrl, searchParams, ws, everConnected_1;
5464
5497
  var _this_1 = this;
5465
- return __generator$1(this, function (_e) {
5466
- switch (_e.label) {
5498
+ return __generator$1(this, function (_j) {
5499
+ switch (_j.label) {
5467
5500
  case 0:
5468
5501
  this.lastServerActivity = new Date();
5469
5502
  if (this.pauseUntil && this.pauseUntil > new Date()) {
@@ -5489,7 +5522,7 @@
5489
5522
  this.webSocketStatus.next('connecting');
5490
5523
  this.pinger = setInterval(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5491
5524
  var _this_1 = this;
5492
- return __generator$1(this, function (_e) {
5525
+ return __generator$1(this, function (_j) {
5493
5526
  if (this.closed) {
5494
5527
  console.debug('pinger check', this.id, 'CLOSED.');
5495
5528
  this.teardown();
@@ -5519,7 +5552,7 @@
5519
5552
  }
5520
5553
  }, SERVER_PING_TIMEOUT);
5521
5554
  }
5522
- catch (_f) {
5555
+ catch (_a) {
5523
5556
  console.debug('pinger catch error', this.id, 'reconnecting');
5524
5557
  this.reconnect();
5525
5558
  }
@@ -5574,9 +5607,9 @@
5574
5607
  _this_1.subscriber.error(e);
5575
5608
  }
5576
5609
  };
5577
- _e.label = 1;
5610
+ _j.label = 1;
5578
5611
  case 1:
5579
- _e.trys.push([1, 3, , 4]);
5612
+ _j.trys.push([1, 3, , 4]);
5580
5613
  everConnected_1 = false;
5581
5614
  return [4 /*yield*/, new Promise(function (resolve, reject) {
5582
5615
  ws.onopen = function (event) {
@@ -5597,20 +5630,20 @@
5597
5630
  };
5598
5631
  })];
5599
5632
  case 2:
5600
- _e.sent();
5633
+ _j.sent();
5601
5634
  this.messageProducerSubscription = this.messageProducer.subscribe(function (msg) {
5602
- var _e;
5635
+ var _a;
5603
5636
  if (!_this_1.closed) {
5604
5637
  if (msg.type === 'ready' &&
5605
5638
  _this_1.webSocketStatus.value !== 'connected') {
5606
5639
  _this_1.webSocketStatus.next('connected');
5607
5640
  }
5608
- (_e = _this_1.ws) === null || _e === void 0 ? void 0 : _e.send(TSON.stringify(msg));
5641
+ (_a = _this_1.ws) === null || _a === void 0 ? void 0 : _a.send(TSON.stringify(msg));
5609
5642
  }
5610
5643
  });
5611
5644
  return [3 /*break*/, 4];
5612
5645
  case 3:
5613
- _e.sent();
5646
+ _j.sent();
5614
5647
  this.pauseUntil = new Date(Date.now() + FAIL_RETRY_WAIT_TIME);
5615
5648
  return [3 /*break*/, 4];
5616
5649
  case 4: return [2 /*return*/];
@@ -5625,20 +5658,20 @@
5625
5658
  }
5626
5659
  function waitAndReconnectWhenUserDoesSomething(error) {
5627
5660
  return __awaiter$1(this, void 0, void 0, function () {
5628
- return __generator$1(this, function (_e) {
5629
- switch (_e.label) {
5661
+ return __generator$1(this, function (_j) {
5662
+ switch (_j.label) {
5630
5663
  case 0:
5631
5664
  console.error("WebSocket observable: error but revive when user does some active thing...", error);
5632
5665
  // Sleep some seconds...
5633
5666
  return [4 /*yield*/, sleep(3000)];
5634
5667
  case 1:
5635
5668
  // Sleep some seconds...
5636
- _e.sent();
5669
+ _j.sent();
5637
5670
  // Wait til user does something (move mouse, tap, scroll, click etc)
5638
5671
  console.debug('waiting for someone to do something');
5639
5672
  return [4 /*yield*/, userDoesSomething.pipe(take(1)).toPromise()];
5640
5673
  case 2:
5641
- _e.sent();
5674
+ _j.sent();
5642
5675
  console.debug('someone did something!');
5643
5676
  return [2 /*return*/];
5644
5677
  }
@@ -5646,8 +5679,8 @@
5646
5679
  });
5647
5680
  }
5648
5681
  function connectWebSocket(db) {
5649
- var _e;
5650
- if (!((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl)) {
5682
+ var _a;
5683
+ if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
5651
5684
  throw new Error("No database URL to connect WebSocket to");
5652
5685
  }
5653
5686
  var messageProducer = db.messageConsumer.readyToServe.pipe(filter(function (isReady) { return isReady; }), // When consumer is ready for new messages, produce such a message to inform server about it
@@ -5662,21 +5695,21 @@
5662
5695
  var _this_1 = this;
5663
5696
  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.
5664
5697
  take(1), // Don't continue waking up whenever syncState change
5665
- switchMap(function (syncState) { return db.cloud.currentUser.pipe(map(function (userLogin) { return [userLogin, syncState]; })); }), switchMap(function (_e) {
5666
- var userLogin = _e[0], syncState = _e[1];
5698
+ switchMap(function (syncState) { return db.cloud.currentUser.pipe(map(function (userLogin) { return [userLogin, syncState]; })); }), switchMap(function (_j) {
5699
+ var userLogin = _j[0], syncState = _j[1];
5667
5700
  return userIsReallyActive.pipe(map(function (isActive) { return [isActive ? userLogin : null, syncState]; }));
5668
- }), switchMap(function (_e) {
5669
- var userLogin = _e[0], syncState = _e[1];
5670
- return __awaiter$1(_this_1, void 0, void 0, function () { var _f; return __generator$1(this, function (_g) {
5671
- switch (_g.label) {
5701
+ }), switchMap(function (_j) {
5702
+ var userLogin = _j[0], syncState = _j[1];
5703
+ return __awaiter$1(_this_1, void 0, void 0, function () { var _j; return __generator$1(this, function (_k) {
5704
+ switch (_k.label) {
5672
5705
  case 0:
5673
- _f = [userLogin];
5706
+ _j = [userLogin];
5674
5707
  return [4 /*yield*/, computeRealmSetHash(syncState)];
5675
- case 1: return [2 /*return*/, _f.concat([_g.sent()])];
5708
+ case 1: return [2 /*return*/, _j.concat([_k.sent()])];
5676
5709
  }
5677
5710
  }); });
5678
- }), switchMap(function (_e) {
5679
- var userLogin = _e[0], realmSetHash = _e[1];
5711
+ }), switchMap(function (_j) {
5712
+ var userLogin = _j[0], realmSetHash = _j[1];
5680
5713
  // Let server end query changes from last entry of same client-ID and forward.
5681
5714
  // If no new entries, server won't bother the client. If new entries, server sends only those
5682
5715
  // and the baseRev of the last from same client-ID.
@@ -5688,14 +5721,14 @@
5688
5721
  console.debug('WebSocket observable: Token expired. Refreshing token...');
5689
5722
  return rxjs.of(true).pipe(switchMap(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5690
5723
  var user, refreshedLogin;
5691
- return __generator$1(this, function (_e) {
5692
- switch (_e.label) {
5724
+ return __generator$1(this, function (_j) {
5725
+ switch (_j.label) {
5693
5726
  case 0: return [4 /*yield*/, db.getCurrentUser()];
5694
5727
  case 1:
5695
- user = _e.sent();
5728
+ user = _j.sent();
5696
5729
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, user)];
5697
5730
  case 2:
5698
- refreshedLogin = _e.sent();
5731
+ refreshedLogin = _j.sent();
5699
5732
  // Persist updated access token
5700
5733
  return [4 /*yield*/, db.table('$logins').update(user.userId, {
5701
5734
  accessToken: refreshedLogin.accessToken,
@@ -5703,7 +5736,7 @@
5703
5736
  })];
5704
5737
  case 3:
5705
5738
  // Persist updated access token
5706
- _e.sent();
5739
+ _j.sent();
5707
5740
  return [2 /*return*/];
5708
5741
  }
5709
5742
  });
@@ -5729,21 +5762,21 @@
5729
5762
  });
5730
5763
  }
5731
5764
  function isSyncNeeded(db) {
5732
- var _e;
5765
+ var _a;
5733
5766
  return __awaiter$1(this, void 0, void 0, function () {
5734
- var _f;
5735
- return __generator$1(this, function (_g) {
5736
- switch (_g.label) {
5767
+ var _j;
5768
+ return __generator$1(this, function (_k) {
5769
+ switch (_k.label) {
5737
5770
  case 0:
5738
- if (!(((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) && db.cloud.schema)) return [3 /*break*/, 2];
5771
+ if (!(((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl) && db.cloud.schema)) return [3 /*break*/, 2];
5739
5772
  return [4 /*yield*/, sync(db, db.cloud.options, db.cloud.schema, { justCheckIfNeeded: true })];
5740
5773
  case 1:
5741
- _f = _g.sent();
5774
+ _j = _k.sent();
5742
5775
  return [3 /*break*/, 3];
5743
5776
  case 2:
5744
- _f = false;
5745
- _g.label = 3;
5746
- case 3: return [2 /*return*/, _f];
5777
+ _j = false;
5778
+ _k.label = 3;
5779
+ case 3: return [2 /*return*/, _j];
5747
5780
  }
5748
5781
  });
5749
5782
  });
@@ -5753,22 +5786,22 @@
5753
5786
  var myId = randomString(16);
5754
5787
  var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5755
5788
  var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5756
- function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5757
- var _f = _e === void 0 ? {} : _e, awaitRemoteJob = _f.awaitRemoteJob;
5789
+ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5790
+ var _k = _j === void 0 ? {} : _j, awaitRemoteJob = _k.awaitRemoteJob;
5758
5791
  return __awaiter$1(this, void 0, void 0, function () {
5759
5792
  function aquireLock() {
5760
5793
  return __awaiter$1(this, void 0, void 0, function () {
5761
5794
  var gotTheLock, jobDoneObservable, err_1;
5762
5795
  var _this_1 = this;
5763
- return __generator$1(this, function (_e) {
5764
- switch (_e.label) {
5796
+ return __generator$1(this, function (_j) {
5797
+ switch (_j.label) {
5765
5798
  case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5766
5799
  var currentWork;
5767
- return __generator$1(this, function (_e) {
5768
- switch (_e.label) {
5800
+ return __generator$1(this, function (_j) {
5801
+ switch (_j.label) {
5769
5802
  case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5770
5803
  case 1:
5771
- currentWork = _e.sent();
5804
+ currentWork = _j.sent();
5772
5805
  if (!!currentWork) return [3 /*break*/, 3];
5773
5806
  // No one else is working. Let's record that we are.
5774
5807
  return [4 /*yield*/, jobsTable.add({
@@ -5778,7 +5811,7 @@
5778
5811
  }, jobName)];
5779
5812
  case 2:
5780
5813
  // No one else is working. Let's record that we are.
5781
- _e.sent();
5814
+ _j.sent();
5782
5815
  return [2 /*return*/, true];
5783
5816
  case 3:
5784
5817
  if (!(currentWork.heartbeat.getTime() <
@@ -5792,27 +5825,27 @@
5792
5825
  }, jobName)];
5793
5826
  case 4:
5794
5827
  // Now, take over!
5795
- _e.sent();
5828
+ _j.sent();
5796
5829
  return [2 /*return*/, true];
5797
5830
  case 5: return [2 /*return*/, false];
5798
5831
  }
5799
5832
  });
5800
5833
  }); })];
5801
5834
  case 1:
5802
- gotTheLock = _e.sent();
5835
+ gotTheLock = _j.sent();
5803
5836
  if (gotTheLock)
5804
5837
  return [2 /*return*/, true];
5805
5838
  if (!awaitRemoteJob) return [3 /*break*/, 6];
5806
- _e.label = 2;
5839
+ _j.label = 2;
5807
5840
  case 2:
5808
- _e.trys.push([2, 4, , 6]);
5841
+ _j.trys.push([2, 4, , 6]);
5809
5842
  jobDoneObservable = rxjs.from(Dexie.liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5810
5843
  return [4 /*yield*/, jobDoneObservable.toPromise()];
5811
5844
  case 3:
5812
- _e.sent();
5845
+ _j.sent();
5813
5846
  return [2 /*return*/, false];
5814
5847
  case 4:
5815
- err_1 = _e.sent();
5848
+ err_1 = _j.sent();
5816
5849
  if (err_1.name !== 'TimeoutError') {
5817
5850
  throw err_1;
5818
5851
  }
@@ -5821,7 +5854,7 @@
5821
5854
  // Timeout stopped us! Try aquire the lock now.
5822
5855
  // It will likely succeed this time unless
5823
5856
  // another client took it.
5824
- return [2 /*return*/, _e.sent()];
5857
+ return [2 /*return*/, _j.sent()];
5825
5858
  case 6: return [2 /*return*/, false];
5826
5859
  }
5827
5860
  });
@@ -5829,13 +5862,13 @@
5829
5862
  }
5830
5863
  var jobsTable, heartbeat;
5831
5864
  var _this_1 = this;
5832
- return __generator$1(this, function (_g) {
5833
- switch (_g.label) {
5865
+ return __generator$1(this, function (_j) {
5866
+ switch (_j.label) {
5834
5867
  case 0:
5835
5868
  jobsTable = db.table(jobsTableName);
5836
5869
  return [4 /*yield*/, aquireLock()];
5837
5870
  case 1:
5838
- if (!_g.sent()) return [3 /*break*/, 6];
5871
+ if (!_j.sent()) return [3 /*break*/, 6];
5839
5872
  heartbeat = setInterval(function () {
5840
5873
  jobsTable.update(jobName, function (job) {
5841
5874
  if (job.nodeId === myId) {
@@ -5843,34 +5876,34 @@
5843
5876
  }
5844
5877
  });
5845
5878
  }, GUARDED_JOB_HEARTBEAT);
5846
- _g.label = 2;
5879
+ _j.label = 2;
5847
5880
  case 2:
5848
- _g.trys.push([2, , 4, 6]);
5881
+ _j.trys.push([2, , 4, 6]);
5849
5882
  return [4 /*yield*/, job()];
5850
- case 3: return [2 /*return*/, _g.sent()];
5883
+ case 3: return [2 /*return*/, _j.sent()];
5851
5884
  case 4:
5852
5885
  // Stop heartbeat
5853
5886
  clearInterval(heartbeat);
5854
5887
  // Remove the persisted job state:
5855
5888
  return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5856
5889
  var currentWork;
5857
- return __generator$1(this, function (_e) {
5858
- switch (_e.label) {
5890
+ return __generator$1(this, function (_j) {
5891
+ switch (_j.label) {
5859
5892
  case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5860
5893
  case 1:
5861
- currentWork = _e.sent();
5894
+ currentWork = _j.sent();
5862
5895
  if (!(currentWork && currentWork.nodeId === myId)) return [3 /*break*/, 3];
5863
5896
  return [4 /*yield*/, jobsTable.delete(jobName)];
5864
5897
  case 2:
5865
- _e.sent();
5866
- _e.label = 3;
5898
+ _j.sent();
5899
+ _j.label = 3;
5867
5900
  case 3: return [2 /*return*/];
5868
5901
  }
5869
5902
  });
5870
5903
  }); })];
5871
5904
  case 5:
5872
5905
  // Remove the persisted job state:
5873
- _g.sent();
5906
+ _j.sent();
5874
5907
  return [7 /*endfinally*/];
5875
5908
  case 6: return [2 /*return*/];
5876
5909
  }
@@ -5928,16 +5961,16 @@
5928
5961
  function _syncIfPossible() {
5929
5962
  return __awaiter$1(this, void 0, void 0, function () {
5930
5963
  var error_4;
5931
- return __generator$1(this, function (_e) {
5932
- switch (_e.label) {
5964
+ return __generator$1(this, function (_j) {
5965
+ switch (_j.label) {
5933
5966
  case 0:
5934
- _e.trys.push([0, 6, , 7]);
5967
+ _j.trys.push([0, 6, , 7]);
5935
5968
  if (!db.cloud.usingServiceWorker) return [3 /*break*/, 3];
5936
5969
  if (!IS_SERVICE_WORKER) return [3 /*break*/, 2];
5937
5970
  return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, options)];
5938
5971
  case 1:
5939
- _e.sent();
5940
- _e.label = 2;
5972
+ _j.sent();
5973
+ _j.label = 2;
5941
5974
  case 2: return [3 /*break*/, 5];
5942
5975
  case 3:
5943
5976
  // We use a flow that is better suited for the case when multiple workers want to
@@ -5946,14 +5979,14 @@
5946
5979
  case 4:
5947
5980
  // We use a flow that is better suited for the case when multiple workers want to
5948
5981
  // do the same thing.
5949
- _e.sent();
5950
- _e.label = 5;
5982
+ _j.sent();
5983
+ _j.label = 5;
5951
5984
  case 5:
5952
5985
  ongoingSyncs.delete(db);
5953
5986
  console.debug('Done sync');
5954
5987
  return [3 /*break*/, 7];
5955
5988
  case 6:
5956
- error_4 = _e.sent();
5989
+ error_4 = _j.sent();
5957
5990
  ongoingSyncs.delete(db);
5958
5991
  console.error("Failed to sync client changes", error_4);
5959
5992
  throw error_4; // Make sure we rethrow error so that sync event is retried.
@@ -5995,8 +6028,8 @@
5995
6028
  // Sync eagerly whenever a change has happened (+ initially when there's no syncState yet)
5996
6029
  // This initial subscribe will also trigger an sync also now.
5997
6030
  console.debug('Starting LocalSyncWorker', db.localSyncEvent['id']);
5998
- localSyncEventSubscription = db.localSyncEvent.subscribe(function (_e) {
5999
- var purpose = _e.purpose;
6031
+ localSyncEventSubscription = db.localSyncEvent.subscribe(function (_j) {
6032
+ var purpose = _j.purpose;
6000
6033
  try {
6001
6034
  syncAndRetry(purpose || 'pull');
6002
6035
  }
@@ -6020,8 +6053,8 @@
6020
6053
  function updateSchemaFromOptions(schema, options) {
6021
6054
  if (schema && options) {
6022
6055
  if (options.unsyncedTables) {
6023
- for (var _e = 0, _f = options.unsyncedTables; _e < _f.length; _e++) {
6024
- var tableName = _f[_e];
6056
+ for (var _j = 0, _k = options.unsyncedTables; _j < _k.length; _j++) {
6057
+ var tableName = _k[_j];
6025
6058
  if (schema[tableName]) {
6026
6059
  schema[tableName].markedForSync = false;
6027
6060
  }
@@ -6030,10 +6063,10 @@
6030
6063
  }
6031
6064
  }
6032
6065
  function verifySchema(db) {
6033
- var _e, _f;
6034
- for (var _g = 0, _h = db.tables; _g < _h.length; _g++) {
6035
- var table = _h[_g];
6036
- if ((_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[table.name]) === null || _f === void 0 ? void 0 : _f.markedForSync) {
6066
+ var _a, _b;
6067
+ for (var _j = 0, _k = db.tables; _j < _k.length; _j++) {
6068
+ var table = _k[_j];
6069
+ if ((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[table.name]) === null || _b === void 0 ? void 0 : _b.markedForSync) {
6037
6070
  if (table.schema.primKey.auto) {
6038
6071
  throw new Dexie__default["default"].SchemaError("Table ".concat(table.name, " is both autoIncremented and synced. ") +
6039
6072
  "Use db.cloud.configure({unsyncedTables: [".concat(JSON.stringify(table.name), "]}) to blacklist it from sync"));
@@ -6275,8 +6308,8 @@
6275
6308
  padding: "8px"
6276
6309
  }
6277
6310
  };
6278
- function Dialog(_e) {
6279
- var children = _e.children;
6311
+ function Dialog(_j) {
6312
+ var children = _j.children;
6280
6313
  return (a$1("div", null, a$1("div", { style: Styles.Darken }), a$1("div", { style: Styles.DialogOuter }, a$1("div", { style: Styles.DialogInner }, children))));
6281
6314
  }
6282
6315
  var t, u, r, o = 0, i = [], c = n.__b, f = n.__r, e = n.diffed, a = n.__c, v = n.unmount;
@@ -6310,24 +6343,24 @@
6310
6343
  function j(n) { var t = u; n.__c = n.__(), u = t; }
6311
6344
  function k(n, t) { return !n || n.length !== t.length || t.some(function (t, u) { return t !== n[u]; }); }
6312
6345
  function w(n, t) { return "function" == typeof t ? t(n) : t; }
6313
- function resolveText(_e) {
6314
- var message = _e.message; _e.messageCode; var messageParams = _e.messageParams;
6346
+ function resolveText(_j) {
6347
+ var message = _j.message; _j.messageCode; var messageParams = _j.messageParams;
6315
6348
  return message.replace(/\{\w+\}/ig, function (n) { return messageParams[n.substr(1, n.length - 2)]; });
6316
6349
  }
6317
- function LoginDialog(_e) {
6318
- var title = _e.title, alerts = _e.alerts, fields = _e.fields, onCancel = _e.onCancel, onSubmit = _e.onSubmit;
6319
- var _f = l({}), params = _f[0], setParams = _f[1];
6350
+ function LoginDialog(_j) {
6351
+ var title = _j.title, alerts = _j.alerts, fields = _j.fields, onCancel = _j.onCancel, onSubmit = _j.onSubmit;
6352
+ var _k = l({}), params = _k[0], setParams = _k[1];
6320
6353
  var firstFieldRef = s();
6321
- h(function () { var _e; return (_e = firstFieldRef.current) === null || _e === void 0 ? void 0 : _e.focus(); }, []);
6354
+ h(function () { var _a; return (_a = firstFieldRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []);
6322
6355
  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) {
6323
6356
  ev.preventDefault();
6324
6357
  onSubmit(params);
6325
- } }, Object.entries(fields).map(function (_e, idx) {
6326
- var fieldName = _e[0], _f = _e[1], type = _f.type, label = _f.label, placeholder = _f.placeholder;
6358
+ } }, Object.entries(fields).map(function (_j, idx) {
6359
+ var fieldName = _j[0], _k = _j[1], type = _k.type, label = _k.label, placeholder = _k.placeholder;
6327
6360
  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) {
6328
- var _e;
6329
- var _f;
6330
- return setParams(__assign(__assign({}, params), (_e = {}, _e[fieldName] = valueTransformer(type, (_f = ev.target) === null || _f === void 0 ? void 0 : _f['value']), _e)));
6361
+ var _j;
6362
+ var _a;
6363
+ return setParams(Object.assign(Object.assign({}, params), (_j = {}, _j[fieldName] = valueTransformer(type, (_a = ev.target) === null || _a === void 0 ? void 0 : _a['value']), _j)));
6331
6364
  } })));
6332
6365
  }))), 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"))));
6333
6366
  }
@@ -6355,12 +6388,12 @@
6355
6388
  delete this.subscription;
6356
6389
  }
6357
6390
  };
6358
- LoginGui.prototype.render = function (props, _e) {
6359
- var userInteraction = _e.userInteraction;
6391
+ LoginGui.prototype.render = function (props, _j) {
6392
+ var userInteraction = _j.userInteraction;
6360
6393
  if (!userInteraction)
6361
6394
  return null;
6362
6395
  //if (props.db.cloud.userInteraction.observers.length > 1) return null; // Someone else subscribes.
6363
- return a$1(LoginDialog, __assign({}, userInteraction));
6396
+ return a$1(LoginDialog, Object.assign({}, userInteraction));
6364
6397
  };
6365
6398
  return LoginGui;
6366
6399
  }(p$1));
@@ -6411,8 +6444,8 @@
6411
6444
  lazyWebSocketStatus,
6412
6445
  db.syncStateChangedEvent.pipe(startWith({ phase: 'initial' })),
6413
6446
  userIsReallyActive
6414
- ]).pipe(map(function (_e) {
6415
- var status = _e[0], syncState = _e[1], userIsActive = _e[2];
6447
+ ]).pipe(map(function (_j) {
6448
+ var status = _j[0], syncState = _j[1], userIsActive = _j[2];
6416
6449
  var phase = syncState.phase, error = syncState.error, progress = syncState.progress;
6417
6450
  var adjustedStatus = status;
6418
6451
  if (phase === 'error') {
@@ -6491,10 +6524,10 @@
6491
6524
  .toArray()
6492
6525
  .then(function (roles) {
6493
6526
  var rv = {};
6494
- for (var _e = 0, _f = roles
6527
+ for (var _j = 0, _k = roles
6495
6528
  .slice()
6496
- .sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); _e < _f.length; _e++) {
6497
- var role = _f[_e];
6529
+ .sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); _j < _k.length; _j++) {
6530
+ var role = _k[_j];
6498
6531
  rv[role.name] = role;
6499
6532
  }
6500
6533
  return rv;
@@ -6506,8 +6539,8 @@
6506
6539
  db.members.where({ userId: currentUser.userId }).toArray(),
6507
6540
  db.realms.toArray(),
6508
6541
  currentUser.userId,
6509
- ]).then(function (_e) {
6510
- var selfMembers = _e[0], realms = _e[1], userId = _e[2];
6542
+ ]).then(function (_j) {
6543
+ var selfMembers = _j[0], realms = _j[1], userId = _j[2];
6511
6544
  //console.debug(`PERMS: Result from liveQUery():`, JSON.stringify({selfMembers, realms, userId}, null, 2))
6512
6545
  return { selfMembers: selfMembers, realms: realms, userId: userId };
6513
6546
  }); }); }); })), {
@@ -6540,15 +6573,15 @@
6540
6573
  // TODO: Move to dexie-cloud-common
6541
6574
  function mergePermissions() {
6542
6575
  var permissions = [];
6543
- for (var _e = 0; _e < arguments.length; _e++) {
6544
- permissions[_e] = arguments[_e];
6576
+ for (var _j = 0; _j < arguments.length; _j++) {
6577
+ permissions[_j] = arguments[_j];
6545
6578
  }
6546
6579
  if (permissions.length === 0)
6547
6580
  return {};
6548
6581
  var reduced = permissions.reduce(function (result, next) {
6549
- var ret = __assign({}, result);
6550
- for (var _e = 0, _f = Object.entries(next); _e < _f.length; _e++) {
6551
- var _g = _f[_e], verb = _g[0], rights = _g[1];
6582
+ var ret = Object.assign({}, result);
6583
+ for (var _j = 0, _k = Object.entries(next); _j < _k.length; _j++) {
6584
+ var _l = _k[_j], verb = _l[0], rights = _l[1];
6552
6585
  if (verb in ret && ret[verb]) {
6553
6586
  if (ret[verb] === '*')
6554
6587
  continue;
@@ -6566,8 +6599,8 @@
6566
6599
  typeof ret[verb] === 'object') {
6567
6600
  // Both are objects (verb is 'update')
6568
6601
  var mergedRights = ret[verb]; // because we've checked that typeof ret[verb] === 'object' and earlier that not ret[verb] === '*'.
6569
- for (var _h = 0, _j = Object.entries(rights); _h < _j.length; _h++) {
6570
- var _k = _j[_h], tableName = _k[0], tableRights = _k[1];
6602
+ for (var _m = 0, _o = Object.entries(rights); _m < _o.length; _m++) {
6603
+ var _p = _o[_m], tableName = _p[0], tableRights = _p[1];
6571
6604
  if (mergedRights[tableName] === '*')
6572
6605
  continue;
6573
6606
  if (tableRights === '*') {
@@ -6605,8 +6638,8 @@
6605
6638
  var o = createSharedValueObservable(rxjs.combineLatest([
6606
6639
  getInternalAccessControlObservable(db._novip),
6607
6640
  getGlobalRolesObservable(db._novip),
6608
- ]).pipe(map(function (_e) {
6609
- var _f = _e[0], selfMembers = _f.selfMembers, realms = _f.realms, userId = _f.userId, globalRoles = _e[1];
6641
+ ]).pipe(map(function (_j) {
6642
+ var _k = _j[0], selfMembers = _k.selfMembers, realms = _k.realms, userId = _k.userId, globalRoles = _j[1];
6610
6643
  return ({
6611
6644
  selfMembers: selfMembers,
6612
6645
  realms: realms,
@@ -6619,9 +6652,9 @@
6619
6652
  userId: UNAUTHORIZED_USER.userId,
6620
6653
  globalRoles: {},
6621
6654
  });
6622
- return mapValueObservable(o, function (_e) {
6623
- var _f;
6624
- var selfMembers = _e.selfMembers, realms = _e.realms, userId = _e.userId, globalRoles = _e.globalRoles;
6655
+ return mapValueObservable(o, function (_j) {
6656
+ var _k;
6657
+ var selfMembers = _j.selfMembers, realms = _j.realms, userId = _j.userId, globalRoles = _j.globalRoles;
6625
6658
  var rv = realms
6626
6659
  .map(function (realm) {
6627
6660
  var selfRealmMembers = selfMembers.filter(function (m) { return m.realmId === realm.realmId; });
@@ -6632,21 +6665,21 @@
6632
6665
  .map(function (role) { return globalRoles[role]; })
6633
6666
  .filter(function (role) { return role; })
6634
6667
  .map(function (role) { return role.permissions; });
6635
- return __assign(__assign({}, realm), { permissions: realm.owner === userId
6668
+ return Object.assign(Object.assign({}, realm), { permissions: realm.owner === userId
6636
6669
  ? { manage: '*' }
6637
6670
  : mergePermissions.apply(void 0, __spreadArray$1(__spreadArray$1([], directPermissionSets, false), rolePermissionSets, false)) });
6638
6671
  })
6639
6672
  .reduce(function (p, c) {
6640
- var _e;
6641
- return (__assign(__assign({}, p), (_e = {}, _e[c.realmId] = c, _e)));
6642
- }, (_f = {},
6643
- _f[userId] = {
6673
+ var _j;
6674
+ return (Object.assign(Object.assign({}, p), (_j = {}, _j[c.realmId] = c, _j)));
6675
+ }, (_k = {},
6676
+ _k[userId] = {
6644
6677
  realmId: userId,
6645
6678
  owner: userId,
6646
6679
  name: userId,
6647
6680
  permissions: { manage: '*' },
6648
6681
  },
6649
- _f));
6682
+ _k));
6650
6683
  return rv;
6651
6684
  });
6652
6685
  });
@@ -6658,44 +6691,44 @@
6658
6691
  }
6659
6692
  PermissionChecker.prototype.add = function () {
6660
6693
  var _this_1 = this;
6661
- var _e;
6662
6694
  var tableNames = [];
6663
- for (var _f = 0; _f < arguments.length; _f++) {
6664
- tableNames[_f] = arguments[_f];
6695
+ for (var _j = 0; _j < arguments.length; _j++) {
6696
+ tableNames[_j] = arguments[_j];
6665
6697
  }
6698
+ var _a;
6666
6699
  // If user can manage the whole realm, return true.
6667
6700
  if (this.permissions.manage === '*')
6668
6701
  return true;
6669
6702
  // If user can manage given table in realm, return true
6670
- if ((_e = this.permissions.manage) === null || _e === void 0 ? void 0 : _e.includes(this.tableName))
6703
+ if ((_a = this.permissions.manage) === null || _a === void 0 ? void 0 : _a.includes(this.tableName))
6671
6704
  return true;
6672
6705
  // If user can add any type, return true
6673
6706
  if (this.permissions.add === '*')
6674
6707
  return true;
6675
6708
  // If user can add objects into given table names in the realm, return true
6676
- if (tableNames.every(function (tableName) { var _e; return (_e = _this_1.permissions.add) === null || _e === void 0 ? void 0 : _e.includes(tableName); })) {
6709
+ if (tableNames.every(function (tableName) { var _a; return (_a = _this_1.permissions.add) === null || _a === void 0 ? void 0 : _a.includes(tableName); })) {
6677
6710
  return true;
6678
6711
  }
6679
6712
  return false;
6680
6713
  };
6681
6714
  PermissionChecker.prototype.update = function () {
6682
- var _e, _f;
6683
6715
  var props = [];
6684
- for (var _g = 0; _g < arguments.length; _g++) {
6685
- props[_g] = arguments[_g];
6716
+ for (var _j = 0; _j < arguments.length; _j++) {
6717
+ props[_j] = arguments[_j];
6686
6718
  }
6719
+ var _a, _b;
6687
6720
  // If user is owner of this object, or if user can manage the whole realm, return true.
6688
6721
  if (this.isOwner || this.permissions.manage === '*')
6689
6722
  return true;
6690
6723
  // If user can manage given table in realm, return true
6691
- if ((_e = this.permissions.manage) === null || _e === void 0 ? void 0 : _e.includes(this.tableName))
6724
+ if ((_a = this.permissions.manage) === null || _a === void 0 ? void 0 : _a.includes(this.tableName))
6692
6725
  return true;
6693
6726
  // If user can update any prop in any table in this realm, return true unless
6694
6727
  // it regards to ownership change:
6695
6728
  if (this.permissions.update === '*') {
6696
6729
  return props.every(function (prop) { return prop !== 'owner'; });
6697
6730
  }
6698
- var tablePermissions = (_f = this.permissions.update) === null || _f === void 0 ? void 0 : _f[this.tableName];
6731
+ var tablePermissions = (_b = this.permissions.update) === null || _b === void 0 ? void 0 : _b[this.tableName];
6699
6732
  // If user can update any prop in table and realm, return true unless
6700
6733
  // accessing special props owner or realmId
6701
6734
  if (tablePermissions === '*')
@@ -6704,12 +6737,12 @@
6704
6737
  return props.every(function (prop) { return tablePermissions === null || tablePermissions === void 0 ? void 0 : tablePermissions.some(function (permittedProp) { return permittedProp === prop || (permittedProp === '*' && prop !== 'owner'); }); });
6705
6738
  };
6706
6739
  PermissionChecker.prototype.delete = function () {
6707
- var _e;
6740
+ var _a;
6708
6741
  // If user is owner of this object, or if user can manage the whole realm, return true.
6709
6742
  if (this.isOwner || this.permissions.manage === '*')
6710
6743
  return true;
6711
6744
  // If user can manage given table in realm, return true
6712
- if ((_e = this.permissions.manage) === null || _e === void 0 ? void 0 : _e.includes(this.tableName))
6745
+ if ((_a = this.permissions.manage) === null || _a === void 0 ? void 0 : _a.includes(this.tableName))
6713
6746
  return true;
6714
6747
  return false;
6715
6748
  };
@@ -6743,11 +6776,11 @@
6743
6776
  var membersByEmail = getCurrentUserEmitter(db._novip).pipe(rxjs.switchMap(function (currentUser) { return Dexie.liveQuery(function () { return db.members.where({ email: currentUser.email || '' }).toArray(); }); }));
6744
6777
  var permissions = getPermissionsLookupObservable(db._novip);
6745
6778
  var accessControl = getInternalAccessControlObservable(db._novip);
6746
- return createSharedValueObservable(rxjs.combineLatest([membersByEmail, accessControl, permissions]).pipe(rxjs.map(function (_e) {
6747
- var membersByEmail = _e[0], accessControl = _e[1], realmLookup = _e[2];
6779
+ return createSharedValueObservable(rxjs.combineLatest([membersByEmail, accessControl, permissions]).pipe(rxjs.map(function (_j) {
6780
+ var membersByEmail = _j[0], accessControl = _j[1], realmLookup = _j[2];
6748
6781
  var reducer = function (result, m) {
6749
- var _e;
6750
- return (__assign(__assign({}, result), (_e = {}, _e[m.id] = __assign(__assign({}, m), { realm: realmLookup[m.realmId] }), _e)));
6782
+ var _j;
6783
+ return (Object.assign(Object.assign({}, result), (_j = {}, _j[m.id] = Object.assign(Object.assign({}, m), { realm: realmLookup[m.realmId] }), _j)));
6751
6784
  };
6752
6785
  var emailMembersById = membersByEmail.reduce(reducer, {});
6753
6786
  var membersById = accessControl.selfMembers.reduce(reducer, emailMembersById);
@@ -6776,16 +6809,16 @@
6776
6809
  var localSyncWorker = null;
6777
6810
  dexie.on('ready', function (dexie) { return __awaiter$1(_this_1, void 0, void 0, function () {
6778
6811
  var error_5;
6779
- return __generator$1(this, function (_e) {
6780
- switch (_e.label) {
6812
+ return __generator$1(this, function (_j) {
6813
+ switch (_j.label) {
6781
6814
  case 0:
6782
- _e.trys.push([0, 2, , 3]);
6815
+ _j.trys.push([0, 2, , 3]);
6783
6816
  return [4 /*yield*/, onDbReady(dexie)];
6784
6817
  case 1:
6785
- _e.sent();
6818
+ _j.sent();
6786
6819
  return [3 /*break*/, 3];
6787
6820
  case 2:
6788
- error_5 = _e.sent();
6821
+ error_5 = _j.sent();
6789
6822
  console.error(error_5);
6790
6823
  return [3 /*break*/, 3];
6791
6824
  case 3: return [2 /*return*/];
@@ -6807,8 +6840,8 @@
6807
6840
  currentUserEmitter.next(UNAUTHORIZED_USER);
6808
6841
  });
6809
6842
  dexie.cloud = {
6810
- version: '4.0.0-beta.17',
6811
- options: __assign({}, DEFAULT_OPTIONS),
6843
+ version: '4.0.0-beta.18',
6844
+ options: Object.assign({}, DEFAULT_OPTIONS),
6812
6845
  schema: null,
6813
6846
  serverState: null,
6814
6847
  get currentUserId() {
@@ -6825,16 +6858,16 @@
6825
6858
  login: function (hint) {
6826
6859
  return __awaiter$1(this, void 0, void 0, function () {
6827
6860
  var db;
6828
- return __generator$1(this, function (_e) {
6829
- switch (_e.label) {
6861
+ return __generator$1(this, function (_j) {
6862
+ switch (_j.label) {
6830
6863
  case 0:
6831
6864
  db = DexieCloudDB(dexie);
6832
6865
  return [4 /*yield*/, db.cloud.sync()];
6833
6866
  case 1:
6834
- _e.sent();
6867
+ _j.sent();
6835
6868
  return [4 /*yield*/, login(db, hint)];
6836
6869
  case 2:
6837
- _e.sent();
6870
+ _j.sent();
6838
6871
  return [2 /*return*/];
6839
6872
  }
6840
6873
  });
@@ -6843,7 +6876,7 @@
6843
6876
  invites: getInvitesObservable(dexie),
6844
6877
  roles: getGlobalRolesObservable(dexie),
6845
6878
  configure: function (options) {
6846
- options = dexie.cloud.options = __assign(__assign({}, dexie.cloud.options), options);
6879
+ options = dexie.cloud.options = Object.assign(Object.assign({}, dexie.cloud.options), options);
6847
6880
  configuredProgramatically = true;
6848
6881
  if (options.databaseUrl && options.nameSuffix) {
6849
6882
  // @ts-ignore
@@ -6852,13 +6885,13 @@
6852
6885
  }
6853
6886
  updateSchemaFromOptions(dexie.cloud.schema, dexie.cloud.options);
6854
6887
  },
6855
- sync: function (_e) {
6856
- var _f = _e === void 0 ? { wait: true, purpose: 'push' } : _e, wait = _f.wait, purpose = _f.purpose;
6888
+ sync: function (_j) {
6889
+ var _k = _j === void 0 ? { wait: true, purpose: 'push' } : _j, wait = _k.wait, purpose = _k.purpose;
6857
6890
  return __awaiter$1(this, void 0, void 0, function () {
6858
6891
  var db, syncState_1, newSyncState, syncState_2;
6859
6892
  var _this_1 = this;
6860
- return __generator$1(this, function (_g) {
6861
- switch (_g.label) {
6893
+ return __generator$1(this, function (_j) {
6894
+ switch (_j.label) {
6862
6895
  case 0:
6863
6896
  if (wait === undefined)
6864
6897
  wait = true;
@@ -6872,29 +6905,29 @@
6872
6905
  (!syncState_1 || newSyncState.timestamp > syncState_1.timestamp); }), take(1))
6873
6906
  .toPromise()];
6874
6907
  case 1:
6875
- newSyncState = _g.sent();
6908
+ newSyncState = _j.sent();
6876
6909
  if (newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.error) {
6877
6910
  throw new Error("Sync error: " + newSyncState.error);
6878
6911
  }
6879
- _g.label = 2;
6912
+ _j.label = 2;
6880
6913
  case 2: return [3 /*break*/, 6];
6881
6914
  case 3: return [4 /*yield*/, isSyncNeeded(db)];
6882
6915
  case 4:
6883
- if (!_g.sent()) return [3 /*break*/, 6];
6916
+ if (!_j.sent()) return [3 /*break*/, 6];
6884
6917
  syncState_2 = db.cloud.persistedSyncState.value;
6885
6918
  triggerSync(db, purpose);
6886
6919
  if (!wait) return [3 /*break*/, 6];
6887
6920
  console.debug('db.cloud.login() is waiting for sync completion...');
6888
6921
  return [4 /*yield*/, rxjs.from(Dexie.liveQuery(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
6889
6922
  var syncNeeded, newSyncState;
6890
- return __generator$1(this, function (_e) {
6891
- switch (_e.label) {
6923
+ return __generator$1(this, function (_j) {
6924
+ switch (_j.label) {
6892
6925
  case 0: return [4 /*yield*/, isSyncNeeded(db)];
6893
6926
  case 1:
6894
- syncNeeded = _e.sent();
6927
+ syncNeeded = _j.sent();
6895
6928
  return [4 /*yield*/, db.getPersistedSyncState()];
6896
6929
  case 2:
6897
- newSyncState = _e.sent();
6930
+ newSyncState = _j.sent();
6898
6931
  if ((newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.timestamp) !== (syncState_2 === null || syncState_2 === void 0 ? void 0 : syncState_2.timestamp) &&
6899
6932
  (newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.error))
6900
6933
  throw new Error("Sync error: " + newSyncState.error);
@@ -6905,9 +6938,9 @@
6905
6938
  .pipe(filter(function (isNeeded) { return !isNeeded; }), take(1))
6906
6939
  .toPromise()];
6907
6940
  case 5:
6908
- _g.sent();
6941
+ _j.sent();
6909
6942
  console.debug('Done waiting for sync completion because we have nothing to push anymore');
6910
- _g.label = 6;
6943
+ _j.label = 6;
6911
6944
  case 6: return [2 /*return*/];
6912
6945
  }
6913
6946
  });
@@ -6918,14 +6951,14 @@
6918
6951
  },
6919
6952
  };
6920
6953
  dexie.Version.prototype['_parseStoresSpec'] = Dexie__default["default"].override(dexie.Version.prototype['_parseStoresSpec'], function (origFunc) { return overrideParseStoresSpec(origFunc, dexie); });
6921
- dexie.Table.prototype.newId = function (_e) {
6922
- var _f = _e === void 0 ? {} : _e, colocateWith = _f.colocateWith;
6954
+ dexie.Table.prototype.newId = function (_j) {
6955
+ var _k = _j === void 0 ? {} : _j, colocateWith = _k.colocateWith;
6923
6956
  var shardKey = colocateWith && colocateWith.substr(colocateWith.length - 3);
6924
6957
  return generateKey(dexie.cloud.schema[this.name].idPrefix || '', shardKey);
6925
6958
  };
6926
6959
  dexie.Table.prototype.idPrefix = function () {
6927
- var _e, _f;
6928
- return ((_f = (_e = this.db.cloud.schema) === null || _e === void 0 ? void 0 : _e[this.name]) === null || _f === void 0 ? void 0 : _f.idPrefix) || '';
6960
+ var _a, _b;
6961
+ return ((_b = (_a = this.db.cloud.schema) === null || _a === void 0 ? void 0 : _a[this.name]) === null || _b === void 0 ? void 0 : _b.idPrefix) || '';
6929
6962
  };
6930
6963
  dexie.use(createMutationTrackingMiddleware({
6931
6964
  currentUserObservable: dexie.cloud.currentUser,
@@ -6934,18 +6967,18 @@
6934
6967
  dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
6935
6968
  dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
6936
6969
  function onDbReady(dexie) {
6937
- var _e, _f, _g, _h, _j, _k;
6970
+ var _a, _b, _c, _d, _e, _f;
6938
6971
  return __awaiter$1(this, void 0, void 0, function () {
6939
- var db, swRegistrations, _l, initiallySynced;
6972
+ var db, swRegistrations, _j, initiallySynced;
6940
6973
  var _this_1 = this;
6941
- return __generator$1(this, function (_m) {
6942
- switch (_m.label) {
6974
+ return __generator$1(this, function (_k) {
6975
+ switch (_k.label) {
6943
6976
  case 0:
6944
6977
  closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
6945
6978
  db = DexieCloudDB(dexie);
6946
6979
  // Setup default GUI:
6947
6980
  if (!IS_SERVICE_WORKER) {
6948
- if (!((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.customLoginGui)) {
6981
+ if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
6949
6982
  subscriptions.push(setupDefaultGUI(dexie));
6950
6983
  }
6951
6984
  subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
@@ -6958,27 +6991,26 @@
6958
6991
  if (!('serviceWorker' in navigator)) return [3 /*break*/, 2];
6959
6992
  return [4 /*yield*/, navigator.serviceWorker.getRegistrations()];
6960
6993
  case 1:
6961
- _l = _m.sent();
6994
+ _j = _k.sent();
6962
6995
  return [3 /*break*/, 3];
6963
6996
  case 2:
6964
- _l = [];
6965
- _m.label = 3;
6997
+ _j = [];
6998
+ _k.label = 3;
6966
6999
  case 3:
6967
- swRegistrations = _l;
7000
+ swRegistrations = _j;
6968
7001
  return [4 /*yield*/, db.transaction('rw', db.$syncState, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
6969
- var _e, options, schema, _f, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _g, _h, _j, table, tblSchema, newTblSchema;
6970
- var _k, _l;
6971
- return __generator$1(this, function (_m) {
6972
- switch (_m.label) {
7002
+ var _g, _h, _j, options, schema, _k, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _l, _m, _o, table, tblSchema, newTblSchema;
7003
+ return __generator$1(this, function (_p) {
7004
+ switch (_p.label) {
6973
7005
  case 0:
6974
- _e = db.cloud, options = _e.options, schema = _e.schema;
7006
+ _j = db.cloud, options = _j.options, schema = _j.schema;
6975
7007
  return [4 /*yield*/, Promise.all([
6976
7008
  db.getOptions(),
6977
7009
  db.getSchema(),
6978
7010
  db.getPersistedSyncState(),
6979
7011
  ])];
6980
7012
  case 1:
6981
- _f = _m.sent(), persistedOptions = _f[0], persistedSchema = _f[1], persistedSyncState = _f[2];
7013
+ _k = _p.sent(), persistedOptions = _k[0], persistedSchema = _k[1], persistedSyncState = _k[2];
6982
7014
  if (!!configuredProgramatically) return [3 /*break*/, 2];
6983
7015
  // Options not specified programatically (use case for SW!)
6984
7016
  // Take persisted options:
@@ -6992,10 +7024,10 @@
6992
7024
  throw new Error("Internal error"); // options cannot be null if configuredProgramatically is set.
6993
7025
  return [4 /*yield*/, db.$syncState.put(options, 'options')];
6994
7026
  case 3:
6995
- _m.sent();
6996
- _m.label = 4;
7027
+ _p.sent();
7028
+ _p.label = 4;
6997
7029
  case 4:
6998
- if (((_k = db.cloud.options) === null || _k === void 0 ? void 0 : _k.tryUseServiceWorker) &&
7030
+ if (((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.tryUseServiceWorker) &&
6999
7031
  'serviceWorker' in navigator &&
7000
7032
  swRegistrations.length > 0 &&
7001
7033
  !DISABLE_SERVICEWORKER_STRATEGY) {
@@ -7009,7 +7041,7 @@
7009
7041
  // Not configured for using service worker or no service worker
7010
7042
  // registration exists. Don't rely on service worker to do any job.
7011
7043
  // Use LocalSyncWorker instead.
7012
- if (((_l = db.cloud.options) === null || _l === void 0 ? void 0 : _l.tryUseServiceWorker) && !IS_SERVICE_WORKER) {
7044
+ if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) && !IS_SERVICE_WORKER) {
7013
7045
  console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
7014
7046
  ? 'No SW registrations found.'
7015
7047
  : 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
@@ -7029,11 +7061,11 @@
7029
7061
  if (!(!persistedSchema ||
7030
7062
  JSON.stringify(persistedSchema) !== JSON.stringify(schema))) return [3 /*break*/, 7];
7031
7063
  newPersistedSchema = persistedSchema || {};
7032
- for (_g = 0, _h = Object.entries(schema); _g < _h.length; _g++) {
7033
- _j = _h[_g], table = _j[0], tblSchema = _j[1];
7064
+ for (_l = 0, _m = Object.entries(schema); _l < _m.length; _l++) {
7065
+ _o = _m[_l], table = _o[0], tblSchema = _o[1];
7034
7066
  newTblSchema = newPersistedSchema[table];
7035
7067
  if (!newTblSchema) {
7036
- newPersistedSchema[table] = __assign({}, tblSchema);
7068
+ newPersistedSchema[table] = Object.assign({}, tblSchema);
7037
7069
  }
7038
7070
  else {
7039
7071
  newTblSchema.markedForSync = tblSchema.markedForSync;
@@ -7043,27 +7075,27 @@
7043
7075
  }
7044
7076
  return [4 /*yield*/, db.$syncState.put(newPersistedSchema, 'schema')];
7045
7077
  case 6:
7046
- _m.sent();
7078
+ _p.sent();
7047
7079
  // Make sure persisted table prefixes are being used instead of computed ones:
7048
7080
  // Let's assign all props as the newPersistedSchems should be what we should be working with.
7049
7081
  Object.assign(schema, newPersistedSchema);
7050
- _m.label = 7;
7082
+ _p.label = 7;
7051
7083
  case 7: return [2 /*return*/, persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.initiallySynced];
7052
7084
  }
7053
7085
  });
7054
7086
  }); })];
7055
7087
  case 4:
7056
- initiallySynced = _m.sent();
7088
+ initiallySynced = _k.sent();
7057
7089
  if (initiallySynced) {
7058
7090
  db.setInitiallySynced(true);
7059
7091
  }
7060
7092
  verifySchema(db);
7061
- if (!(((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) && !initiallySynced)) return [3 /*break*/, 6];
7093
+ if (!(((_b = db.cloud.options) === null || _b === void 0 ? void 0 : _b.databaseUrl) && !initiallySynced)) return [3 /*break*/, 6];
7062
7094
  return [4 /*yield*/, performInitialSync(db, db.cloud.options, db.cloud.schema)];
7063
7095
  case 5:
7064
- _m.sent();
7096
+ _k.sent();
7065
7097
  db.setInitiallySynced(true);
7066
- _m.label = 6;
7098
+ _k.label = 6;
7067
7099
  case 6:
7068
7100
  // Manage CurrentUser observable:
7069
7101
  throwIfClosed();
@@ -7084,24 +7116,24 @@
7084
7116
  // with things from the database and not just the default values.
7085
7117
  // This is so that when db.open() completes, user should be safe
7086
7118
  // to subscribe to these observables and get actual data.
7087
- _m.sent();
7088
- _m.label = 8;
7119
+ _k.sent();
7120
+ _k.label = 8;
7089
7121
  case 8:
7090
- if (!((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.requireAuth)) return [3 /*break*/, 10];
7122
+ if (!((_c = db.cloud.options) === null || _c === void 0 ? void 0 : _c.requireAuth)) return [3 /*break*/, 10];
7091
7123
  return [4 /*yield*/, login(db)];
7092
7124
  case 9:
7093
- _m.sent();
7094
- _m.label = 10;
7125
+ _k.sent();
7126
+ _k.label = 10;
7095
7127
  case 10:
7096
7128
  if (localSyncWorker)
7097
7129
  localSyncWorker.stop();
7098
7130
  localSyncWorker = null;
7099
7131
  throwIfClosed();
7100
- if (db.cloud.usingServiceWorker && ((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.databaseUrl)) {
7132
+ if (db.cloud.usingServiceWorker && ((_d = db.cloud.options) === null || _d === void 0 ? void 0 : _d.databaseUrl)) {
7101
7133
  registerSyncEvent(db, 'push').catch(function () { });
7102
7134
  registerPeriodicSyncEvent(db).catch(function () { });
7103
7135
  }
7104
- else if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.databaseUrl) &&
7136
+ else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
7105
7137
  db.cloud.schema &&
7106
7138
  !IS_SERVICE_WORKER) {
7107
7139
  // There's no SW. Start SyncWorker instead.
@@ -7128,7 +7160,7 @@
7128
7160
  // Connect WebSocket only if we're a browser window
7129
7161
  if (typeof window !== 'undefined' &&
7130
7162
  !IS_SERVICE_WORKER &&
7131
- ((_k = db.cloud.options) === null || _k === void 0 ? void 0 : _k.databaseUrl)) {
7163
+ ((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl)) {
7132
7164
  subscriptions.push(connectWebSocket(db));
7133
7165
  }
7134
7166
  return [2 /*return*/];
@@ -7137,7 +7169,7 @@
7137
7169
  });
7138
7170
  }
7139
7171
  }
7140
- dexieCloud.version = '4.0.0-beta.17';
7172
+ dexieCloud.version = '4.0.0-beta.18';
7141
7173
  Dexie__default["default"].Cloud = dexieCloud;
7142
7174
 
7143
7175
  exports["default"] = dexieCloud;