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.
@@ -43,7 +43,7 @@ var __assign = function() {
43
43
  return __assign.apply(this, arguments);
44
44
  };
45
45
 
46
- function __awaiter$1(thisArg, _arguments, P, generator) {
46
+ function __awaiter$2(thisArg, _arguments, P, generator) {
47
47
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
48
48
  return new (P || (P = Promise))(function (resolve, reject) {
49
49
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -101,13 +101,46 @@ function __spreadArray$1(to, from, pack) {
101
101
  *
102
102
  * ==========================================================================
103
103
  *
104
- * Version 4.0.0-beta.17, Fri Apr 08 2022
104
+ * Version 4.0.0-beta.18, Sun Apr 10 2022
105
105
  *
106
106
  * https://dexie.org
107
107
  *
108
108
  * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/
109
109
  *
110
110
  */
111
+ /*! *****************************************************************************
112
+ Copyright (c) Microsoft Corporation.
113
+
114
+ Permission to use, copy, modify, and/or distribute this software for any
115
+ purpose with or without fee is hereby granted.
116
+
117
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
118
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
119
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
120
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
121
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
122
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
123
+ PERFORMANCE OF THIS SOFTWARE.
124
+ ***************************************************************************** */
125
+ function __awaiter$1(thisArg, _arguments, P, generator) {
126
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
127
+ return new (P || (P = Promise))(function (resolve, reject) {
128
+ function fulfilled(value) { try {
129
+ step(generator.next(value));
130
+ }
131
+ catch (e) {
132
+ reject(e);
133
+ } }
134
+ function rejected(value) { try {
135
+ step(generator["throw"](value));
136
+ }
137
+ catch (e) {
138
+ reject(e);
139
+ } }
140
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
141
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
142
+ });
143
+ }
111
144
  //@ts-check
112
145
  var randomFillSync = crypto.getRandomValues;
113
146
  function assert(b) {
@@ -240,8 +273,8 @@ function applyOperation(target, table, op) {
240
273
  switch (entry.type) {
241
274
  case "ups":
242
275
  // Adjust the existing upsert with additional updates
243
- for (var _e = 0, _f = Object.entries(changeSpec); _e < _f.length; _e++) {
244
- var _g = _f[_e], propPath = _g[0], value = _g[1];
276
+ for (var _j = 0, _k = Object.entries(changeSpec); _j < _k.length; _j++) {
277
+ var _l = _k[_j], propPath = _l[0], value = _l[1];
245
278
  setByKeyPath(entry.val, propPath, value);
246
279
  }
247
280
  break;
@@ -268,10 +301,10 @@ function applyOperation(target, table, op) {
268
301
  return target;
269
302
  }
270
303
  function applyOperations(target, ops) {
271
- for (var _e = 0, ops_1 = ops; _e < ops_1.length; _e++) {
272
- var _f = ops_1[_e], table = _f.table, muts = _f.muts;
273
- for (var _g = 0, muts_1 = muts; _g < muts_1.length; _g++) {
274
- var mut = muts_1[_g];
304
+ for (var _j = 0, ops_1 = ops; _j < ops_1.length; _j++) {
305
+ var _k = ops_1[_j], table = _k.table, muts = _k.muts;
306
+ for (var _l = 0, muts_1 = muts; _l < muts_1.length; _l++) {
307
+ var mut = muts_1[_l];
275
308
  applyOperation(target, table, mut);
276
309
  }
277
310
  }
@@ -280,10 +313,10 @@ function subtractChanges(target, // Server change set
280
313
  changesToSubtract // additional mutations on client during syncWithServer()
281
314
  ) {
282
315
  var _a, _b, _c;
283
- for (var _e = 0, _f = Object.entries(changesToSubtract); _e < _f.length; _e++) {
284
- var _g = _f[_e], table = _g[0], mutationSet = _g[1];
285
- for (var _h = 0, _j = Object.entries(mutationSet); _h < _j.length; _h++) {
286
- var _k = _j[_h], key = _k[0], mut = _k[1];
316
+ for (var _j = 0, _k = Object.entries(changesToSubtract); _j < _k.length; _j++) {
317
+ var _l = _k[_j], table = _l[0], mutationSet = _l[1];
318
+ for (var _m = 0, _o = Object.entries(mutationSet); _m < _o.length; _m++) {
319
+ var _p = _o[_m], key = _p[0], mut = _p[1];
287
320
  switch (mut.type) {
288
321
  case 'ups':
289
322
  {
@@ -313,8 +346,8 @@ changesToSubtract // additional mutations on client during syncWithServer()
313
346
  switch (targetMut.type) {
314
347
  case 'ups':
315
348
  // Adjust the server upsert with locally updated values.
316
- for (var _l = 0, _m = Object.entries(mut.mod); _l < _m.length; _l++) {
317
- var _o = _m[_l], propPath = _o[0], value = _o[1];
349
+ for (var _q = 0, _r = Object.entries(mut.mod); _q < _r.length; _q++) {
350
+ var _s = _r[_q], propPath = _s[0], value = _s[1];
318
351
  setByKeyPath(targetMut.val, propPath, value);
319
352
  }
320
353
  break;
@@ -323,8 +356,8 @@ changesToSubtract // additional mutations on client during syncWithServer()
323
356
  break;
324
357
  case 'upd':
325
358
  // Remove the local update props from the server update mutation.
326
- for (var _p = 0, _q = Object.keys(mut.mod); _p < _q.length; _p++) {
327
- var propPath = _q[_p];
359
+ for (var _t = 0, _u = Object.keys(mut.mod); _t < _u.length; _t++) {
360
+ var propPath = _u[_t];
328
361
  delete targetMut.mod[propPath];
329
362
  }
330
363
  break;
@@ -347,10 +380,10 @@ function toDBOperationSet(inSet) {
347
380
  var txid = randomString$1(16);
348
381
  // Convert data into a temporary map to collect mutations of same table and type
349
382
  var map = {};
350
- for (var _e = 0, _f = Object.entries(inSet); _e < _f.length; _e++) {
351
- var _g = _f[_e], table = _g[0], ops = _g[1];
352
- for (var _h = 0, _j = Object.entries(ops); _h < _j.length; _h++) {
353
- var _k = _j[_h], key = _k[0], op = _k[1];
383
+ for (var _j = 0, _k = Object.entries(inSet); _j < _k.length; _j++) {
384
+ var _l = _k[_j], table = _l[0], ops = _l[1];
385
+ for (var _m = 0, _o = Object.entries(ops); _m < _o.length; _m++) {
386
+ var _p = _o[_m], key = _p[0], op = _p[1];
354
387
  var mapEntry = map[table] || (map[table] = {});
355
388
  var ops_2 = mapEntry[op.type] || (mapEntry[op.type] = []);
356
389
  ops_2.push(Object.assign({ key: key }, op)); // DBKeyMutation doesn't contain key, so we need to bring it in.
@@ -358,14 +391,14 @@ function toDBOperationSet(inSet) {
358
391
  }
359
392
  // Start computing the resulting format:
360
393
  var result = [];
361
- for (var _l = 0, _m = Object.entries(map); _l < _m.length; _l++) {
362
- var _o = _m[_l], table = _o[0], ops = _o[1];
394
+ for (var _q = 0, _r = Object.entries(map); _q < _r.length; _q++) {
395
+ var _s = _r[_q], table = _s[0], ops = _s[1];
363
396
  var resultEntry = {
364
397
  table: table,
365
398
  muts: [],
366
399
  };
367
- for (var _p = 0, _q = Object.entries(ops); _p < _q.length; _p++) {
368
- var _r = _q[_p], optype = _r[0], muts = _r[1];
400
+ for (var _t = 0, _u = Object.entries(ops); _t < _u.length; _t++) {
401
+ var _v = _u[_t], optype = _v[0], muts = _v[1];
369
402
  switch (optype) {
370
403
  case "ups": {
371
404
  var op = {
@@ -2012,18 +2045,18 @@ var hasComplainedAboutSyncEvent = false;
2012
2045
  function registerSyncEvent(db, purpose) {
2013
2046
  return __awaiter$1(this, void 0, void 0, function () {
2014
2047
  var sw, e_3;
2015
- return __generator$1(this, function (_e) {
2016
- switch (_e.label) {
2048
+ return __generator$1(this, function (_j) {
2049
+ switch (_j.label) {
2017
2050
  case 0:
2018
- _e.trys.push([0, 4, , 5]);
2051
+ _j.trys.push([0, 4, , 5]);
2019
2052
  return [4 /*yield*/, navigator.serviceWorker.ready];
2020
2053
  case 1:
2021
- sw = _e.sent();
2054
+ sw = _j.sent();
2022
2055
  if (!(purpose === "push" && sw.sync)) return [3 /*break*/, 3];
2023
2056
  return [4 /*yield*/, sw.sync.register("dexie-cloud:".concat(db.name))];
2024
2057
  case 2:
2025
- _e.sent();
2026
- _e.label = 3;
2058
+ _j.sent();
2059
+ _j.label = 3;
2027
2060
  case 3:
2028
2061
  if (sw.active) {
2029
2062
  // Use postMessage for pull syncs and for browsers not supporting sync event (Firefox, Safari).
@@ -2039,7 +2072,7 @@ function registerSyncEvent(db, purpose) {
2039
2072
  }
2040
2073
  return [2 /*return*/];
2041
2074
  case 4:
2042
- e_3 = _e.sent();
2075
+ e_3 = _j.sent();
2043
2076
  if (!hasComplainedAboutSyncEvent) {
2044
2077
  console.debug("Dexie Cloud: Could not register sync event", e_3);
2045
2078
  hasComplainedAboutSyncEvent = true;
@@ -2051,36 +2084,36 @@ function registerSyncEvent(db, purpose) {
2051
2084
  });
2052
2085
  }
2053
2086
  function registerPeriodicSyncEvent(db) {
2054
- var _e;
2087
+ var _a;
2055
2088
  return __awaiter$1(this, void 0, void 0, function () {
2056
2089
  var periodicSync, e_4, e_5;
2057
- return __generator$1(this, function (_f) {
2058
- switch (_f.label) {
2090
+ return __generator$1(this, function (_j) {
2091
+ switch (_j.label) {
2059
2092
  case 0:
2060
- _f.trys.push([0, 8, , 9]);
2093
+ _j.trys.push([0, 8, , 9]);
2061
2094
  return [4 /*yield*/, navigator.serviceWorker.ready];
2062
2095
  case 1:
2063
- periodicSync = (_f.sent()).periodicSync;
2096
+ periodicSync = (_j.sent()).periodicSync;
2064
2097
  if (!periodicSync) return [3 /*break*/, 6];
2065
- _f.label = 2;
2098
+ _j.label = 2;
2066
2099
  case 2:
2067
- _f.trys.push([2, 4, , 5]);
2068
- return [4 /*yield*/, periodicSync.register("dexie-cloud:".concat(db.name), (_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.periodicSync)];
2100
+ _j.trys.push([2, 4, , 5]);
2101
+ return [4 /*yield*/, periodicSync.register("dexie-cloud:".concat(db.name), (_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.periodicSync)];
2069
2102
  case 3:
2070
- _f.sent();
2103
+ _j.sent();
2071
2104
  console.debug("Dexie Cloud: Successfully registered periodicsync event for ".concat(db.name));
2072
2105
  return [3 /*break*/, 5];
2073
2106
  case 4:
2074
- e_4 = _f.sent();
2107
+ e_4 = _j.sent();
2075
2108
  console.debug("Dexie Cloud: Failed to register periodic sync. Your PWA must be installed to allow background sync.", e_4);
2076
2109
  return [3 /*break*/, 5];
2077
2110
  case 5: return [3 /*break*/, 7];
2078
2111
  case 6:
2079
2112
  console.debug("Dexie Cloud: periodicSync not supported.");
2080
- _f.label = 7;
2113
+ _j.label = 7;
2081
2114
  case 7: return [3 /*break*/, 9];
2082
2115
  case 8:
2083
- e_5 = _f.sent();
2116
+ e_5 = _j.sent();
2084
2117
  console.debug("Dexie Cloud: Could not register periodicSync for ".concat(db.name), e_5);
2085
2118
  return [3 /*break*/, 9];
2086
2119
  case 9: return [2 /*return*/];
@@ -2114,7 +2147,7 @@ var b64encode = typeof Buffer !== "undefined"
2114
2147
  : function (b) { return btoa(String.fromCharCode.apply(null, b)); };
2115
2148
  function interactWithUser(userInteraction, req) {
2116
2149
  return new Promise(function (resolve, reject) {
2117
- var interactionProps = __assign(__assign({}, req), { onSubmit: function (res) {
2150
+ var interactionProps = Object.assign(Object.assign({}, req), { onSubmit: function (res) {
2118
2151
  userInteraction.next(undefined);
2119
2152
  resolve(res);
2120
2153
  }, onCancel: function () {
@@ -2135,8 +2168,8 @@ function interactWithUser(userInteraction, req) {
2135
2168
  }
2136
2169
  function alertUser(userInteraction, title) {
2137
2170
  var alerts = [];
2138
- for (var _e = 2; _e < arguments.length; _e++) {
2139
- alerts[_e - 2] = arguments[_e];
2171
+ for (var _j = 2; _j < arguments.length; _j++) {
2172
+ alerts[_j - 2] = arguments[_j];
2140
2173
  }
2141
2174
  return interactWithUser(userInteraction, {
2142
2175
  type: 'message-alert',
@@ -2148,11 +2181,11 @@ function alertUser(userInteraction, title) {
2148
2181
  function promptForEmail(userInteraction, title, emailHint) {
2149
2182
  return __awaiter$1(this, void 0, void 0, function () {
2150
2183
  var email;
2151
- return __generator$1(this, function (_e) {
2152
- switch (_e.label) {
2184
+ return __generator$1(this, function (_j) {
2185
+ switch (_j.label) {
2153
2186
  case 0:
2154
2187
  email = emailHint || '';
2155
- _e.label = 1;
2188
+ _j.label = 1;
2156
2189
  case 1:
2157
2190
  if (!(!email || !/^[\w-\.]+@([\w-]+\.)+[\w-]{2,10}$/.test(email))) return [3 /*break*/, 3];
2158
2191
  return [4 /*yield*/, interactWithUser(userInteraction, {
@@ -2176,7 +2209,7 @@ function promptForEmail(userInteraction, title, emailHint) {
2176
2209
  },
2177
2210
  })];
2178
2211
  case 2:
2179
- email = (_e.sent()).email;
2212
+ email = (_j.sent()).email;
2180
2213
  return [3 /*break*/, 1];
2181
2214
  case 3: return [2 /*return*/, email];
2182
2215
  }
@@ -2186,8 +2219,8 @@ function promptForEmail(userInteraction, title, emailHint) {
2186
2219
  function promptForOTP(userInteraction, email, alert) {
2187
2220
  return __awaiter$1(this, void 0, void 0, function () {
2188
2221
  var alerts, otp;
2189
- return __generator$1(this, function (_e) {
2190
- switch (_e.label) {
2222
+ return __generator$1(this, function (_j) {
2223
+ switch (_j.label) {
2191
2224
  case 0:
2192
2225
  alerts = [
2193
2226
  {
@@ -2213,44 +2246,44 @@ function promptForOTP(userInteraction, email, alert) {
2213
2246
  },
2214
2247
  })];
2215
2248
  case 1:
2216
- otp = (_e.sent()).otp;
2249
+ otp = (_j.sent()).otp;
2217
2250
  return [2 /*return*/, otp];
2218
2251
  }
2219
2252
  });
2220
2253
  });
2221
2254
  }
2222
2255
  function loadAccessToken(db) {
2223
- var _e, _f;
2256
+ var _a, _b;
2224
2257
  return __awaiter$1(this, void 0, void 0, function () {
2225
2258
  var currentUser, accessToken, accessTokenExpiration, refreshToken, refreshTokenExpiration, claims, expTime, refreshExpTime, refreshedLogin;
2226
- return __generator$1(this, function (_g) {
2227
- switch (_g.label) {
2259
+ return __generator$1(this, function (_j) {
2260
+ switch (_j.label) {
2228
2261
  case 0: return [4 /*yield*/, db.getCurrentUser()];
2229
2262
  case 1:
2230
- currentUser = _g.sent();
2263
+ currentUser = _j.sent();
2231
2264
  accessToken = currentUser.accessToken, accessTokenExpiration = currentUser.accessTokenExpiration, refreshToken = currentUser.refreshToken, refreshTokenExpiration = currentUser.refreshTokenExpiration, claims = currentUser.claims;
2232
2265
  if (!accessToken)
2233
2266
  return [2 /*return*/];
2234
- expTime = (_e = accessTokenExpiration === null || accessTokenExpiration === void 0 ? void 0 : accessTokenExpiration.getTime()) !== null && _e !== void 0 ? _e : Infinity;
2267
+ expTime = (_a = accessTokenExpiration === null || accessTokenExpiration === void 0 ? void 0 : accessTokenExpiration.getTime()) !== null && _a !== void 0 ? _a : Infinity;
2235
2268
  if (expTime > Date.now()) {
2236
2269
  return [2 /*return*/, accessToken];
2237
2270
  }
2238
2271
  if (!refreshToken) {
2239
2272
  throw new Error("Refresh token missing");
2240
2273
  }
2241
- refreshExpTime = (_f = refreshTokenExpiration === null || refreshTokenExpiration === void 0 ? void 0 : refreshTokenExpiration.getTime()) !== null && _f !== void 0 ? _f : Infinity;
2274
+ refreshExpTime = (_b = refreshTokenExpiration === null || refreshTokenExpiration === void 0 ? void 0 : refreshTokenExpiration.getTime()) !== null && _b !== void 0 ? _b : Infinity;
2242
2275
  if (refreshExpTime <= Date.now()) {
2243
2276
  throw new Error("Refresh token has expired");
2244
2277
  }
2245
2278
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, currentUser)];
2246
2279
  case 2:
2247
- refreshedLogin = _g.sent();
2280
+ refreshedLogin = _j.sent();
2248
2281
  return [4 /*yield*/, db.table('$logins').update(claims.sub, {
2249
2282
  accessToken: refreshedLogin.accessToken,
2250
2283
  accessTokenExpiration: refreshedLogin.accessTokenExpiration,
2251
2284
  })];
2252
2285
  case 3:
2253
- _g.sent();
2286
+ _j.sent();
2254
2287
  return [2 /*return*/, refreshedLogin.accessToken];
2255
2288
  }
2256
2289
  });
@@ -2258,8 +2291,8 @@ function loadAccessToken(db) {
2258
2291
  }
2259
2292
  function authenticate(url, context, fetchToken, userInteraction, hints) {
2260
2293
  return __awaiter$1(this, void 0, void 0, function () {
2261
- return __generator$1(this, function (_e) {
2262
- switch (_e.label) {
2294
+ return __generator$1(this, function (_j) {
2295
+ switch (_j.label) {
2263
2296
  case 0:
2264
2297
  if (!(context.accessToken &&
2265
2298
  context.accessTokenExpiration.getTime() > Date.now())) return [3 /*break*/, 1];
@@ -2269,9 +2302,9 @@ function authenticate(url, context, fetchToken, userInteraction, hints) {
2269
2302
  (!context.refreshTokenExpiration ||
2270
2303
  context.refreshTokenExpiration.getTime() > Date.now()))) return [3 /*break*/, 3];
2271
2304
  return [4 /*yield*/, refreshAccessToken(url, context)];
2272
- case 2: return [2 /*return*/, _e.sent()];
2305
+ case 2: return [2 /*return*/, _j.sent()];
2273
2306
  case 3: return [4 /*yield*/, userAuthenticate(context, fetchToken, userInteraction, hints)];
2274
- case 4: return [2 /*return*/, _e.sent()];
2307
+ case 4: return [2 /*return*/, _j.sent()];
2275
2308
  }
2276
2309
  });
2277
2310
  });
@@ -2279,8 +2312,8 @@ function authenticate(url, context, fetchToken, userInteraction, hints) {
2279
2312
  function refreshAccessToken(url, login) {
2280
2313
  return __awaiter$1(this, void 0, void 0, function () {
2281
2314
  var time_stamp, signing_algorithm, textEncoder, data, binarySignature, signature, tokenRequest, res, response;
2282
- return __generator$1(this, function (_e) {
2283
- switch (_e.label) {
2315
+ return __generator$1(this, function (_j) {
2316
+ switch (_j.label) {
2284
2317
  case 0:
2285
2318
  if (!login.refreshToken)
2286
2319
  throw new Error("Cannot refresh token - refresh token is missing.");
@@ -2292,7 +2325,7 @@ function refreshAccessToken(url, login) {
2292
2325
  data = textEncoder.encode(login.refreshToken + time_stamp);
2293
2326
  return [4 /*yield*/, crypto.subtle.sign(signing_algorithm, login.nonExportablePrivateKey, data)];
2294
2327
  case 1:
2295
- binarySignature = _e.sent();
2328
+ binarySignature = _j.sent();
2296
2329
  signature = b64encode(binarySignature);
2297
2330
  tokenRequest = {
2298
2331
  grant_type: 'refresh_token',
@@ -2309,12 +2342,12 @@ function refreshAccessToken(url, login) {
2309
2342
  mode: 'cors',
2310
2343
  })];
2311
2344
  case 2:
2312
- res = _e.sent();
2345
+ res = _j.sent();
2313
2346
  if (res.status !== 200)
2314
2347
  throw new Error("RefreshToken: Status ".concat(res.status, " from ").concat(url, "/token"));
2315
2348
  return [4 /*yield*/, res.json()];
2316
2349
  case 3:
2317
- response = _e.sent();
2350
+ response = _j.sent();
2318
2351
  login.accessToken = response.accessToken;
2319
2352
  login.accessTokenExpiration = response.accessTokenExpiration
2320
2353
  ? new Date(response.accessTokenExpiration)
@@ -2326,9 +2359,9 @@ function refreshAccessToken(url, login) {
2326
2359
  }
2327
2360
  function userAuthenticate(context, fetchToken, userInteraction, hints) {
2328
2361
  return __awaiter$1(this, void 0, void 0, function () {
2329
- var _e, privateKey, publicKey, publicKeySPKI, publicKeyPEM, response2, error_1;
2330
- return __generator$1(this, function (_f) {
2331
- switch (_f.label) {
2362
+ var _j, privateKey, publicKey, publicKeySPKI, publicKeyPEM, response2, error_1;
2363
+ return __generator$1(this, function (_k) {
2364
+ switch (_k.label) {
2332
2365
  case 0: return [4 /*yield*/, crypto.subtle.generateKey({
2333
2366
  name: 'RSASSA-PKCS1-v1_5',
2334
2367
  modulusLength: 2048,
@@ -2337,24 +2370,24 @@ function userAuthenticate(context, fetchToken, userInteraction, hints) {
2337
2370
  }, false, // Non-exportable...
2338
2371
  ['sign', 'verify'])];
2339
2372
  case 1:
2340
- _e = _f.sent(), privateKey = _e.privateKey, publicKey = _e.publicKey;
2373
+ _j = _k.sent(), privateKey = _j.privateKey, publicKey = _j.publicKey;
2341
2374
  if (!privateKey || !publicKey)
2342
2375
  throw new Error("Could not generate RSA keypair"); // Typings suggest these can be undefined...
2343
2376
  context.nonExportablePrivateKey = privateKey; //...but storable!
2344
2377
  return [4 /*yield*/, crypto.subtle.exportKey('spki', publicKey)];
2345
2378
  case 2:
2346
- publicKeySPKI = _f.sent();
2379
+ publicKeySPKI = _k.sent();
2347
2380
  publicKeyPEM = spkiToPEM(publicKeySPKI);
2348
2381
  context.publicKey = publicKey;
2349
- _f.label = 3;
2382
+ _k.label = 3;
2350
2383
  case 3:
2351
- _f.trys.push([3, 7, , 9]);
2384
+ _k.trys.push([3, 7, , 9]);
2352
2385
  return [4 /*yield*/, fetchToken({
2353
2386
  public_key: publicKeyPEM,
2354
2387
  hints: hints,
2355
2388
  })];
2356
2389
  case 4:
2357
- response2 = _f.sent();
2390
+ response2 = _k.sent();
2358
2391
  if (response2.type !== 'tokens')
2359
2392
  throw new Error("Unexpected response type from token endpoint: ".concat(response2.type));
2360
2393
  context.accessToken = response2.accessToken;
@@ -2375,11 +2408,11 @@ function userAuthenticate(context, fetchToken, userInteraction, hints) {
2375
2408
  alerts: response2.alerts,
2376
2409
  })];
2377
2410
  case 5:
2378
- _f.sent();
2379
- _f.label = 6;
2411
+ _k.sent();
2412
+ _k.label = 6;
2380
2413
  case 6: return [2 /*return*/, context];
2381
2414
  case 7:
2382
- error_1 = _f.sent();
2415
+ error_1 = _k.sent();
2383
2416
  return [4 /*yield*/, alertUser(userInteraction, 'Authentication Failed', {
2384
2417
  type: 'error',
2385
2418
  messageCode: 'GENERIC_ERROR',
@@ -2387,7 +2420,7 @@ function userAuthenticate(context, fetchToken, userInteraction, hints) {
2387
2420
  messageParams: {}
2388
2421
  }).catch(function () { })];
2389
2422
  case 8:
2390
- _f.sent();
2423
+ _k.sent();
2391
2424
  throw error_1;
2392
2425
  case 9: return [2 /*return*/];
2393
2426
  }
@@ -2430,7 +2463,7 @@ var AuthPersistedContext = /** @class */ (function () {
2430
2463
  AuthPersistedContext.prototype.save = function () {
2431
2464
  return __awaiter$1(this, void 0, void 0, function () {
2432
2465
  var db;
2433
- return __generator$1(this, function (_e) {
2466
+ return __generator$1(this, function (_j) {
2434
2467
  db = wm$1.get(this);
2435
2468
  db.table("$logins").put(this);
2436
2469
  return [2 /*return*/];
@@ -2457,21 +2490,21 @@ var HttpError = /** @class */ (function (_super_1) {
2457
2490
  }(Error));
2458
2491
  function otpFetchTokenCallback(db) {
2459
2492
  var userInteraction = db.cloud.userInteraction;
2460
- return function otpAuthenticate(_e) {
2461
- var _f;
2462
- var public_key = _e.public_key, hints = _e.hints;
2493
+ return function otpAuthenticate(_j) {
2494
+ var public_key = _j.public_key, hints = _j.hints;
2495
+ var _a;
2463
2496
  return __awaiter$1(this, void 0, void 0, function () {
2464
- var tokenRequest, url, demo_user, email, res1, errMsg, response, otp, res2, errorText, _g, errMsg, response2;
2465
- return __generator$1(this, function (_h) {
2466
- switch (_h.label) {
2497
+ var tokenRequest, url, demo_user, email, res1, errMsg, response, otp, res2, errorText, _j, errMsg, response2;
2498
+ return __generator$1(this, function (_k) {
2499
+ switch (_k.label) {
2467
2500
  case 0:
2468
- url = (_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl;
2501
+ url = (_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl;
2469
2502
  if (!url)
2470
2503
  throw new Error("No database URL given.");
2471
2504
  if (!((hints === null || hints === void 0 ? void 0 : hints.grant_type) === 'demo')) return [3 /*break*/, 2];
2472
2505
  return [4 /*yield*/, promptForEmail(userInteraction, 'Enter a demo user email', (hints === null || hints === void 0 ? void 0 : hints.email) || (hints === null || hints === void 0 ? void 0 : hints.userId))];
2473
2506
  case 1:
2474
- demo_user = _h.sent();
2507
+ demo_user = _k.sent();
2475
2508
  tokenRequest = {
2476
2509
  demo_user: demo_user,
2477
2510
  grant_type: 'demo',
@@ -2481,25 +2514,25 @@ function otpFetchTokenCallback(db) {
2481
2514
  return [3 /*break*/, 4];
2482
2515
  case 2: return [4 /*yield*/, promptForEmail(userInteraction, 'Enter email address', hints === null || hints === void 0 ? void 0 : hints.email)];
2483
2516
  case 3:
2484
- email = _h.sent();
2517
+ email = _k.sent();
2485
2518
  tokenRequest = {
2486
2519
  email: email,
2487
2520
  grant_type: 'otp',
2488
2521
  scopes: ['ACCESS_DB'],
2489
2522
  public_key: public_key,
2490
2523
  };
2491
- _h.label = 4;
2524
+ _k.label = 4;
2492
2525
  case 4: return [4 /*yield*/, fetch("".concat(url, "/token"), {
2493
2526
  body: JSON.stringify(tokenRequest),
2494
2527
  method: 'post',
2495
2528
  headers: { 'Content-Type': 'application/json', mode: 'cors' },
2496
2529
  })];
2497
2530
  case 5:
2498
- res1 = _h.sent();
2531
+ res1 = _k.sent();
2499
2532
  if (!(res1.status !== 200)) return [3 /*break*/, 8];
2500
2533
  return [4 /*yield*/, res1.text()];
2501
2534
  case 6:
2502
- errMsg = _h.sent();
2535
+ errMsg = _k.sent();
2503
2536
  return [4 /*yield*/, alertUser(userInteraction, "Token request failed", {
2504
2537
  type: 'error',
2505
2538
  messageCode: 'GENERIC_ERROR',
@@ -2507,11 +2540,11 @@ function otpFetchTokenCallback(db) {
2507
2540
  messageParams: {}
2508
2541
  }).catch(function () { })];
2509
2542
  case 7:
2510
- _h.sent();
2543
+ _k.sent();
2511
2544
  throw new HttpError(res1, errMsg);
2512
2545
  case 8: return [4 /*yield*/, res1.json()];
2513
2546
  case 9:
2514
- response = _h.sent();
2547
+ response = _k.sent();
2515
2548
  if (!(response.type === 'tokens')) return [3 /*break*/, 10];
2516
2549
  // Demo user request can get a "tokens" response right away
2517
2550
  return [2 /*return*/, response];
@@ -2521,7 +2554,7 @@ function otpFetchTokenCallback(db) {
2521
2554
  throw new Error("Unexpected response from ".concat(url, "/token"));
2522
2555
  return [4 /*yield*/, promptForOTP(userInteraction, tokenRequest.email)];
2523
2556
  case 11:
2524
- otp = _h.sent();
2557
+ otp = _k.sent();
2525
2558
  tokenRequest.otp = otp || '';
2526
2559
  tokenRequest.otp_id = response.otp_id;
2527
2560
  return [4 /*yield*/, fetch("".concat(url, "/token"), {
@@ -2531,14 +2564,14 @@ function otpFetchTokenCallback(db) {
2531
2564
  mode: 'cors',
2532
2565
  })];
2533
2566
  case 12:
2534
- res2 = _h.sent();
2535
- _h.label = 13;
2567
+ res2 = _k.sent();
2568
+ _k.label = 13;
2536
2569
  case 13:
2537
2570
  if (!(res2.status === 401)) return [3 /*break*/, 17];
2538
2571
  return [4 /*yield*/, res2.text()];
2539
2572
  case 14:
2540
- errorText = _h.sent();
2541
- _g = tokenRequest;
2573
+ errorText = _k.sent();
2574
+ _j = tokenRequest;
2542
2575
  return [4 /*yield*/, promptForOTP(userInteraction, tokenRequest.email, {
2543
2576
  type: 'error',
2544
2577
  messageCode: 'INVALID_OTP',
@@ -2546,7 +2579,7 @@ function otpFetchTokenCallback(db) {
2546
2579
  messageParams: {}
2547
2580
  })];
2548
2581
  case 15:
2549
- _g.otp = _h.sent();
2582
+ _j.otp = _k.sent();
2550
2583
  return [4 /*yield*/, fetch("".concat(url, "/token"), {
2551
2584
  body: JSON.stringify(tokenRequest),
2552
2585
  method: 'post',
@@ -2554,13 +2587,13 @@ function otpFetchTokenCallback(db) {
2554
2587
  mode: 'cors',
2555
2588
  })];
2556
2589
  case 16:
2557
- res2 = _h.sent();
2590
+ res2 = _k.sent();
2558
2591
  return [3 /*break*/, 13];
2559
2592
  case 17:
2560
2593
  if (!(res2.status !== 200)) return [3 /*break*/, 20];
2561
2594
  return [4 /*yield*/, res2.text()];
2562
2595
  case 18:
2563
- errMsg = _h.sent();
2596
+ errMsg = _k.sent();
2564
2597
  return [4 /*yield*/, alertUser(userInteraction, "OTP Authentication Failed", {
2565
2598
  type: 'error',
2566
2599
  messageCode: 'GENERIC_ERROR',
@@ -2568,11 +2601,11 @@ function otpFetchTokenCallback(db) {
2568
2601
  messageParams: {}
2569
2602
  }).catch(function () { })];
2570
2603
  case 19:
2571
- _h.sent();
2604
+ _k.sent();
2572
2605
  throw new HttpError(res2, errMsg);
2573
2606
  case 20: return [4 /*yield*/, res2.json()];
2574
2607
  case 21:
2575
- response2 = _h.sent();
2608
+ response2 = _k.sent();
2576
2609
  return [2 /*return*/, response2];
2577
2610
  case 22: throw new Error("Unexpected response from ".concat(url, "/token"));
2578
2611
  }
@@ -2595,19 +2628,19 @@ function setCurrentUser(db, user) {
2595
2628
  return __awaiter$1(this, void 0, void 0, function () {
2596
2629
  var $logins;
2597
2630
  var _this_1 = this;
2598
- return __generator$1(this, function (_e) {
2599
- switch (_e.label) {
2631
+ return __generator$1(this, function (_j) {
2632
+ switch (_j.label) {
2600
2633
  case 0:
2601
2634
  if (user.userId === db.cloud.currentUserId)
2602
2635
  return [2 /*return*/]; // Already this user.
2603
2636
  $logins = db.table('$logins');
2604
2637
  return [4 /*yield*/, db.transaction('rw', $logins, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
2605
2638
  var existingLogins;
2606
- return __generator$1(this, function (_e) {
2607
- switch (_e.label) {
2639
+ return __generator$1(this, function (_j) {
2640
+ switch (_j.label) {
2608
2641
  case 0: return [4 /*yield*/, $logins.toArray()];
2609
2642
  case 1:
2610
- existingLogins = _e.sent();
2643
+ existingLogins = _j.sent();
2611
2644
  return [4 /*yield*/, Promise.all(existingLogins
2612
2645
  .filter(function (login) { return login.userId !== user.userId && login.isLoggedIn; })
2613
2646
  .map(function (login) {
@@ -2615,19 +2648,19 @@ function setCurrentUser(db, user) {
2615
2648
  return $logins.put(login);
2616
2649
  }))];
2617
2650
  case 2:
2618
- _e.sent();
2651
+ _j.sent();
2619
2652
  user.isLoggedIn = true;
2620
2653
  user.lastLogin = new Date();
2621
2654
  return [4 /*yield*/, user.save()];
2622
2655
  case 3:
2623
- _e.sent();
2656
+ _j.sent();
2624
2657
  console.debug('Saved new user', user.email);
2625
2658
  return [2 /*return*/];
2626
2659
  }
2627
2660
  });
2628
2661
  }); })];
2629
2662
  case 1:
2630
- _e.sent();
2663
+ _j.sent();
2631
2664
  return [4 /*yield*/, new Promise(function (resolve) {
2632
2665
  if (db.cloud.currentUserId === user.userId) {
2633
2666
  resolve(null);
@@ -2642,7 +2675,7 @@ function setCurrentUser(db, user) {
2642
2675
  }
2643
2676
  })];
2644
2677
  case 2:
2645
- _e.sent();
2678
+ _j.sent();
2646
2679
  return [2 /*return*/];
2647
2680
  }
2648
2681
  });
@@ -2651,11 +2684,11 @@ function setCurrentUser(db, user) {
2651
2684
  function login(db, hints) {
2652
2685
  return __awaiter$1(this, void 0, void 0, function () {
2653
2686
  var currentUser, context;
2654
- return __generator$1(this, function (_e) {
2655
- switch (_e.label) {
2687
+ return __generator$1(this, function (_j) {
2688
+ switch (_j.label) {
2656
2689
  case 0: return [4 /*yield*/, db.getCurrentUser()];
2657
2690
  case 1:
2658
- currentUser = _e.sent();
2691
+ currentUser = _j.sent();
2659
2692
  if (currentUser.isLoggedIn) {
2660
2693
  if (hints) {
2661
2694
  if (hints.email && db.cloud.currentUser.value.email !== hints.email) {
@@ -2674,13 +2707,13 @@ function login(db, hints) {
2674
2707
  });
2675
2708
  return [4 /*yield*/, authenticate(db.cloud.options.databaseUrl, context, db.cloud.options.fetchTokens || otpFetchTokenCallback(db), db.cloud.userInteraction, hints)];
2676
2709
  case 2:
2677
- _e.sent();
2710
+ _j.sent();
2678
2711
  return [4 /*yield*/, context.save()];
2679
2712
  case 3:
2680
- _e.sent();
2713
+ _j.sent();
2681
2714
  return [4 /*yield*/, setCurrentUser(db, context)];
2682
2715
  case 4:
2683
- _e.sent();
2716
+ _j.sent();
2684
2717
  // Make sure to resync as the new login will be authorized
2685
2718
  // for new realms.
2686
2719
  triggerSync(db, "pull");
@@ -2701,7 +2734,7 @@ try {
2701
2734
  Object.freeze(UNAUTHORIZED_USER);
2702
2735
  Object.freeze(UNAUTHORIZED_USER.claims);
2703
2736
  }
2704
- catch (_e) { }
2737
+ catch (_a) { }
2705
2738
  var swHolder = {};
2706
2739
  var swContainer = self.document && navigator.serviceWorker; // self.document is to verify we're not the SW ourself
2707
2740
  if (swContainer)
@@ -2709,9 +2742,9 @@ if (swContainer)
2709
2742
  if (typeof self !== 'undefined' && 'clients' in self && !self.document) {
2710
2743
  // We are the service worker. Propagate messages to all our clients.
2711
2744
  addEventListener('message', function (ev) {
2712
- var _e, _f;
2713
- if ((_f = (_e = ev.data) === null || _e === void 0 ? void 0 : _e.type) === null || _f === void 0 ? void 0 : _f.startsWith('sw-broadcast-')) {
2714
- __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); });
2745
+ var _a, _b;
2746
+ if ((_b = (_a = ev.data) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.startsWith('sw-broadcast-')) {
2747
+ __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); });
2715
2748
  }
2716
2749
  });
2717
2750
  }
@@ -2724,8 +2757,8 @@ var SWBroadcastChannel = /** @class */ (function () {
2724
2757
  if (!swContainer)
2725
2758
  return function () { };
2726
2759
  var forwarder = function (ev) {
2727
- var _e;
2728
- if (((_e = ev.data) === null || _e === void 0 ? void 0 : _e.type) === "sw-broadcast-".concat(_this_1.name)) {
2760
+ var _a;
2761
+ if (((_a = ev.data) === null || _a === void 0 ? void 0 : _a.type) === "sw-broadcast-".concat(_this_1.name)) {
2729
2762
  listener(ev.data.message);
2730
2763
  }
2731
2764
  };
@@ -2734,7 +2767,7 @@ var SWBroadcastChannel = /** @class */ (function () {
2734
2767
  };
2735
2768
  SWBroadcastChannel.prototype.postMessage = function (message) {
2736
2769
  var _this_1 = this;
2737
- var _e;
2770
+ var _a;
2738
2771
  if (typeof self['clients'] === 'object') {
2739
2772
  // We're a service worker. Propagate to our browser clients.
2740
2773
  __spreadArray$1([], self['clients'].matchAll({ includeUncontrolled: true }), true).forEach(function (client) { return client.postMessage({
@@ -2745,7 +2778,7 @@ var SWBroadcastChannel = /** @class */ (function () {
2745
2778
  else if (swHolder.registration) {
2746
2779
  // We're a client (browser window or other worker)
2747
2780
  // Post to SW so it can repost to all its clients and to itself
2748
- (_e = swHolder.registration.active) === null || _e === void 0 ? void 0 : _e.postMessage({
2781
+ (_a = swHolder.registration.active) === null || _a === void 0 ? void 0 : _a.postMessage({
2749
2782
  type: "sw-broadcast-".concat(this.name),
2750
2783
  message: message
2751
2784
  });
@@ -2791,25 +2824,25 @@ var BroadcastedAndLocalEvent = /** @class */ (function (_super_1) {
2791
2824
  return _this_1;
2792
2825
  }
2793
2826
  BroadcastedAndLocalEvent.prototype.next = function (message) {
2794
- console.debug("BroadcastedAndLocalEvent: bc.postMessage()", __assign({}, message), "bc is a", this.bc);
2827
+ console.debug("BroadcastedAndLocalEvent: bc.postMessage()", Object.assign({}, message), "bc is a", this.bc);
2795
2828
  this.bc.postMessage(message);
2796
2829
  var ev = new CustomEvent("lbc-".concat(this.name), { detail: message });
2797
2830
  self.dispatchEvent(ev);
2798
2831
  };
2799
2832
  return BroadcastedAndLocalEvent;
2800
2833
  }(Observable$1));
2801
- function computeRealmSetHash(_e) {
2802
- var realms = _e.realms, inviteRealms = _e.inviteRealms;
2834
+ function computeRealmSetHash(_j) {
2835
+ var realms = _j.realms, inviteRealms = _j.inviteRealms;
2803
2836
  return __awaiter$1(this, void 0, void 0, function () {
2804
2837
  var data, byteArray, digestBytes, base64;
2805
- return __generator$1(this, function (_f) {
2806
- switch (_f.label) {
2838
+ return __generator$1(this, function (_j) {
2839
+ switch (_j.label) {
2807
2840
  case 0:
2808
2841
  data = JSON.stringify(__spreadArray$1(__spreadArray$1([], realms.map(function (realmId) { return ({ realmId: realmId, accepted: true }); }), true), inviteRealms.map(function (realmId) { return ({ realmId: realmId, accepted: false }); }), true).sort(function (a, b) { return a.realmId < b.realmId ? -1 : a.realmId > b.realmId ? 1 : 0; }));
2809
2842
  byteArray = new TextEncoder().encode(data);
2810
2843
  return [4 /*yield*/, crypto.subtle.digest('SHA-1', byteArray)];
2811
2844
  case 1:
2812
- digestBytes = _f.sent();
2845
+ digestBytes = _j.sent();
2813
2846
  base64 = b64encode(digestBytes);
2814
2847
  return [2 /*return*/, base64];
2815
2848
  }
@@ -2818,14 +2851,14 @@ function computeRealmSetHash(_e) {
2818
2851
  }
2819
2852
  function getSyncableTables(db) {
2820
2853
  return Object.entries(db.cloud.schema || {})
2821
- .filter(function (_e) {
2822
- var markedForSync = _e[1].markedForSync;
2854
+ .filter(function (_j) {
2855
+ var markedForSync = _j[1].markedForSync;
2823
2856
  return markedForSync;
2824
2857
  })
2825
- .map(function (_e) {
2826
- var tbl = _e[0];
2827
- return db.tables.filter(function (_e) {
2828
- var name = _e.name;
2858
+ .map(function (_j) {
2859
+ var tbl = _j[0];
2860
+ return db.tables.filter(function (_j) {
2861
+ var name = _j.name;
2829
2862
  return name === tbl;
2830
2863
  })[0];
2831
2864
  })
@@ -2835,8 +2868,8 @@ function getMutationTable(tableName) {
2835
2868
  return "$".concat(tableName, "_mutations");
2836
2869
  }
2837
2870
  function getTableFromMutationTable(mutationTable) {
2838
- var _e;
2839
- var tableName = (_e = /^\$(.*)_mutations$/.exec(mutationTable)) === null || _e === void 0 ? void 0 : _e[1];
2871
+ var _a;
2872
+ var tableName = (_a = /^\$(.*)_mutations$/.exec(mutationTable)) === null || _a === void 0 ? void 0 : _a[1];
2840
2873
  if (!tableName)
2841
2874
  throw new Error("Given mutationTable ".concat(mutationTable, " is not correct"));
2842
2875
  return tableName;
@@ -2845,8 +2878,8 @@ var concat = [].concat;
2845
2878
  function flatten(a) {
2846
2879
  return concat.apply([], a);
2847
2880
  }
2848
- function listClientChanges(mutationTables, db, _e) {
2849
- var _f = _e === void 0 ? {} : _e, _g = _f.since, since = _g === void 0 ? {} : _g, _h = _f.limit, limit = _h === void 0 ? Infinity : _h;
2881
+ function listClientChanges(mutationTables, db, _j) {
2882
+ var _k = _j === void 0 ? {} : _j, _l = _k.since, since = _l === void 0 ? {} : _l, _m = _k.limit, limit = _m === void 0 ? Infinity : _m;
2850
2883
  return __awaiter$1(this, void 0, void 0, function () {
2851
2884
  var allMutsOnTables, sorted, result, currentEntry, currentTxid, _j, sorted_1, _k, table, mut;
2852
2885
  var _this_1 = this;
@@ -2854,8 +2887,8 @@ function listClientChanges(mutationTables, db, _e) {
2854
2887
  switch (_l.label) {
2855
2888
  case 0: return [4 /*yield*/, Promise.all(mutationTables.map(function (mutationTable) { return __awaiter$1(_this_1, void 0, void 0, function () {
2856
2889
  var tableName, lastRevision, query, muts;
2857
- return __generator$1(this, function (_e) {
2858
- switch (_e.label) {
2890
+ return __generator$1(this, function (_j) {
2891
+ switch (_j.label) {
2859
2892
  case 0:
2860
2893
  tableName = getTableFromMutationTable(mutationTable.name);
2861
2894
  lastRevision = since[tableName];
@@ -2866,7 +2899,7 @@ function listClientChanges(mutationTables, db, _e) {
2866
2899
  query = query.limit(limit);
2867
2900
  return [4 /*yield*/, query.toArray()];
2868
2901
  case 1:
2869
- muts = _e.sent();
2902
+ muts = _j.sent();
2870
2903
  //const objTable = db.table(tableName);
2871
2904
  /*for (const mut of muts) {
2872
2905
  if (mut.type === "insert" || mut.type === "upsert") {
@@ -2917,8 +2950,8 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2917
2950
  return __awaiter$1(this, void 0, void 0, function () {
2918
2951
  var txid, ignoredRealms_1, upserts;
2919
2952
  var _this_1 = this;
2920
- return __generator$1(this, function (_e) {
2921
- switch (_e.label) {
2953
+ return __generator$1(this, function (_j) {
2954
+ switch (_j.label) {
2922
2955
  case 0:
2923
2956
  txid = "upload-".concat(randomString(8));
2924
2957
  if (!currentUser.isLoggedIn) return [3 /*break*/, 2];
@@ -2926,8 +2959,8 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2926
2959
  ignoredRealms_1 = new Set(alreadySyncedRealms || []);
2927
2960
  return [4 /*yield*/, Promise.all(tablesToSyncify.map(function (table) { return __awaiter$1(_this_1, void 0, void 0, function () {
2928
2961
  var extractKey, dexieCloudTableSchema, query, unsyncedObjects, mut;
2929
- return __generator$1(this, function (_e) {
2930
- switch (_e.label) {
2962
+ return __generator$1(this, function (_j) {
2963
+ switch (_j.label) {
2931
2964
  case 0:
2932
2965
  extractKey = table.core.schema.primaryKey.extractKey;
2933
2966
  if (!extractKey)
@@ -2948,7 +2981,7 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2948
2981
  });
2949
2982
  return [4 /*yield*/, query.toArray()];
2950
2983
  case 1:
2951
- unsyncedObjects = _e.sent();
2984
+ unsyncedObjects = _j.sent();
2952
2985
  if (unsyncedObjects.length > 0) {
2953
2986
  mut = {
2954
2987
  type: 'upsert',
@@ -2972,7 +3005,7 @@ function listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySynce
2972
3005
  });
2973
3006
  }); }))];
2974
3007
  case 1:
2975
- upserts = _e.sent();
3008
+ upserts = _j.sent();
2976
3009
  return [2 /*return*/, upserts.filter(function (op) { return op.muts.length > 0; })];
2977
3010
  case 2: return [2 /*return*/, []];
2978
3011
  }
@@ -3001,12 +3034,12 @@ function escapeDollarProps(value) {
3001
3034
  if (!dollarKeys)
3002
3035
  return value;
3003
3036
  var clone = __assign({}, value);
3004
- for (var _e = 0, dollarKeys_1 = dollarKeys; _e < dollarKeys_1.length; _e++) {
3005
- var k_1 = dollarKeys_1[_e];
3037
+ for (var _j = 0, dollarKeys_1 = dollarKeys; _j < dollarKeys_1.length; _j++) {
3038
+ var k_1 = dollarKeys_1[_j];
3006
3039
  delete clone[k_1];
3007
3040
  }
3008
- for (var _f = 0, dollarKeys_2 = dollarKeys; _f < dollarKeys_2.length; _f++) {
3009
- var k_2 = dollarKeys_2[_f];
3041
+ for (var _k = 0, dollarKeys_2 = dollarKeys; _k < dollarKeys_2.length; _k++) {
3042
+ var k_2 = dollarKeys_2[_k];
3010
3043
  clone["$" + k_2] = value[k_2];
3011
3044
  }
3012
3045
  return clone;
@@ -3016,8 +3049,8 @@ var ObjectDef = {
3016
3049
  };
3017
3050
  function TypesonSimplified() {
3018
3051
  var typeDefsInputs = [];
3019
- for (var _e = 0; _e < arguments.length; _e++) {
3020
- typeDefsInputs[_e] = arguments[_e];
3052
+ for (var _j = 0; _j < arguments.length; _j++) {
3053
+ typeDefsInputs[_j] = arguments[_j];
3021
3054
  }
3022
3055
  var typeDefs = typeDefsInputs.reduce(function (p, c) { return (__assign(__assign({}, p), c)); }, typeDefsInputs.reduce(function (p, c) { return (__assign(__assign({}, c), p)); }, {}));
3023
3056
  var protoMap = new WeakMap();
@@ -3051,13 +3084,13 @@ function TypesonSimplified() {
3051
3084
  // Unescape dollar props
3052
3085
  value = __assign({}, value);
3053
3086
  // Delete keys that children wanted us to delete
3054
- for (var _e = 0, _f = top[1]; _e < _f.length; _e++) {
3055
- var k_3 = _f[_e];
3087
+ for (var _j = 0, _k = top[1]; _j < _k.length; _j++) {
3088
+ var k_3 = _k[_j];
3056
3089
  delete value[k_3];
3057
3090
  }
3058
3091
  // Set keys that children wanted us to set
3059
- for (var _g = 0, _h = Object.entries(top[2]); _g < _h.length; _g++) {
3060
- var _j = _h[_g], k_4 = _j[0], v_1 = _j[1];
3092
+ for (var _l = 0, _m = Object.entries(top[2]); _l < _m.length; _l++) {
3093
+ var _o = _m[_l], k_4 = _o[0], v_1 = _o[1];
3061
3094
  value[k_4] = v_1;
3062
3095
  }
3063
3096
  stack.pop();
@@ -3105,8 +3138,8 @@ function TypesonSimplified() {
3105
3138
  if (typeDef !== undefined)
3106
3139
  return typeDef; // Null counts to! So the caching of Array.prototype also counts.
3107
3140
  var toStringTag_1 = getToStringTag(realVal);
3108
- var entry = Object.entries(typeDefs).find(function (_e) {
3109
- var typeName = _e[0], typeDef = _e[1];
3141
+ var entry = Object.entries(typeDefs).find(function (_j) {
3142
+ var typeName = _j[0], typeDef = _j[1];
3110
3143
  var _a, _b;
3111
3144
  return (_b = (_a = typeDef === null || typeDef === void 0 ? void 0 : typeDef.test) === null || _a === void 0 ? void 0 : _a.call(typeDef, realVal, toStringTag_1)) !== null && _b !== void 0 ? _b : typeName === toStringTag_1;
3112
3145
  });
@@ -3138,8 +3171,8 @@ var BisonBinaryTypes = {
3138
3171
  i: i,
3139
3172
  };
3140
3173
  },
3141
- revive: function (_e, altChannel) {
3142
- var i = _e.i, mimeType = _e.mimeType;
3174
+ revive: function (_j, altChannel) {
3175
+ var i = _j.i, mimeType = _j.mimeType;
3143
3176
  return new Blob([altChannel[i]], { type: mimeType });
3144
3177
  },
3145
3178
  },
@@ -3158,8 +3191,8 @@ var numberDef = {
3158
3191
  return num;
3159
3192
  }
3160
3193
  },
3161
- revive: function (_e) {
3162
- var v = _e.v;
3194
+ revive: function (_j) {
3195
+ var v = _j.v;
3163
3196
  return Number(v);
3164
3197
  },
3165
3198
  },
@@ -3178,8 +3211,8 @@ var DateDef = {
3178
3211
  $t: "Date",
3179
3212
  v: isNaN(date.getTime()) ? "NaN" : date.toISOString(),
3180
3213
  }); },
3181
- revive: function (_e) {
3182
- var v = _e.v;
3214
+ revive: function (_j) {
3215
+ var v = _j.v;
3183
3216
  return new Date(v === "NaN" ? NaN : Date.parse(v));
3184
3217
  },
3185
3218
  },
@@ -3190,8 +3223,8 @@ var SetDef = {
3190
3223
  $t: "Set",
3191
3224
  v: Array.from(set.entries()),
3192
3225
  }); },
3193
- revive: function (_e) {
3194
- var v = _e.v;
3226
+ revive: function (_j) {
3227
+ var v = _j.v;
3195
3228
  return new Set(v);
3196
3229
  },
3197
3230
  },
@@ -3202,8 +3235,8 @@ var MapDef = {
3202
3235
  $t: "Map",
3203
3236
  v: Array.from(map.entries()),
3204
3237
  }); },
3205
- revive: function (_e) {
3206
- var v = _e.v;
3238
+ revive: function (_j) {
3239
+ var v = _j.v;
3207
3240
  return new Map(v);
3208
3241
  },
3209
3242
  },
@@ -3229,8 +3262,8 @@ var TypedArraysDefs = [
3229
3262
  "BigInt64Array",
3230
3263
  "BigUint64Array",
3231
3264
  ].reduce(function (specs, typeName) {
3232
- var _e;
3233
- return (__assign(__assign({}, specs), (_e = {}, _e[typeName] = {
3265
+ var _j;
3266
+ return (__assign(__assign({}, specs), (_j = {}, _j[typeName] = {
3234
3267
  // Replace passes the the typed array into $t, buffer so that
3235
3268
  // the ArrayBuffer typedef takes care of further handling of the buffer:
3236
3269
  // {$t:"Uint8Array",buffer:{$t:"ArrayBuffer",idx:0}}
@@ -3245,13 +3278,13 @@ var TypedArraysDefs = [
3245
3278
  };
3246
3279
  return result;
3247
3280
  },
3248
- revive: function (_e, _, typeDefs) {
3249
- var v = _e.v;
3281
+ revive: function (_j, _, typeDefs) {
3282
+ var v = _j.v;
3250
3283
  var TypedArray = _global[typeName];
3251
3284
  return (TypedArray &&
3252
3285
  new TypedArray(typeDefs.ArrayBuffer.revive({ v: v }, _, typeDefs)));
3253
3286
  },
3254
- }, _e)));
3287
+ }, _j)));
3255
3288
  }, {});
3256
3289
  function b64LexEncode(b) {
3257
3290
  return b64ToLex(b64encode(b));
@@ -3345,8 +3378,8 @@ var DECODE_TABLE = {
3345
3378
  "|": "/",
3346
3379
  };
3347
3380
  var ENCODE_TABLE = {};
3348
- for (var _f = 0, _g = Object.keys(DECODE_TABLE); _f < _g.length; _f++) {
3349
- var c_1 = _g[_f];
3381
+ for (var _j = 0, _k = Object.keys(DECODE_TABLE); _j < _k.length; _j++) {
3382
+ var c_1 = _k[_j];
3350
3383
  ENCODE_TABLE[DECODE_TABLE[c_1]] = c_1;
3351
3384
  }
3352
3385
  var ArrayBufferDef = {
@@ -3355,8 +3388,8 @@ var ArrayBufferDef = {
3355
3388
  $t: "ArrayBuffer",
3356
3389
  v: b64LexEncode(ab),
3357
3390
  }); },
3358
- revive: function (_e) {
3359
- var v = _e.v;
3391
+ revive: function (_j) {
3392
+ var v = _j.v;
3360
3393
  var ba = b64LexDecode(v);
3361
3394
  return ba.buffer.byteLength === ba.byteLength
3362
3395
  ? ba.buffer
@@ -3398,8 +3431,8 @@ var BlobDef = {
3398
3431
  : b64encode(string2ArrayBuffer(readBlobSync(blob))),
3399
3432
  type: blob.type,
3400
3433
  }); },
3401
- revive: function (_e) {
3402
- var type = _e.type, v = _e.v;
3434
+ revive: function (_j) {
3435
+ var type = _j.type, v = _j.v;
3403
3436
  var ab = b64decode(v);
3404
3437
  return typeof Blob !== undefined
3405
3438
  ? new Blob([ab])
@@ -3410,13 +3443,13 @@ var BlobDef = {
3410
3443
  var builtin = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, numberDef), bigIntDef), DateDef), SetDef), MapDef), TypedArraysDefs), ArrayBufferDef), BlobDef);
3411
3444
  function Bison() {
3412
3445
  var typeDefsInputs = [];
3413
- for (var _e = 0; _e < arguments.length; _e++) {
3414
- typeDefsInputs[_e] = arguments[_e];
3446
+ for (var _j = 0; _j < arguments.length; _j++) {
3447
+ typeDefsInputs[_j] = arguments[_j];
3415
3448
  }
3416
3449
  var tson = TypesonSimplified.apply(void 0, __spreadArray$1([builtin, BisonBinaryTypes], typeDefsInputs, false));
3417
3450
  return {
3418
3451
  toBinary: function (value) {
3419
- var _e = this.stringify(value), blob = _e[0], json = _e[1];
3452
+ var _j = this.stringify(value), blob = _j[0], json = _j[1];
3420
3453
  var lenBuf = new ArrayBuffer(4);
3421
3454
  new DataView(lenBuf).setUint32(0, blob.size);
3422
3455
  return new Blob([lenBuf, blob, json]);
@@ -3432,16 +3465,16 @@ function Bison() {
3432
3465
  return [blob, json];
3433
3466
  },
3434
3467
  parse: function (json, binData) {
3435
- return __awaiter$1(this, void 0, void 0, function () {
3468
+ return __awaiter$2(this, void 0, void 0, function () {
3436
3469
  var pos, arrayBuffers, buf, view, len, ab;
3437
- return __generator$1(this, function (_e) {
3438
- switch (_e.label) {
3470
+ return __generator$1(this, function (_j) {
3471
+ switch (_j.label) {
3439
3472
  case 0:
3440
3473
  pos = 0;
3441
3474
  arrayBuffers = [];
3442
3475
  return [4 /*yield*/, readBlobBinary(binData)];
3443
3476
  case 1:
3444
- buf = _e.sent();
3477
+ buf = _j.sent();
3445
3478
  view = new DataView(buf);
3446
3479
  while (pos < buf.byteLength) {
3447
3480
  len = view.getUint32(pos);
@@ -3456,21 +3489,21 @@ function Bison() {
3456
3489
  });
3457
3490
  },
3458
3491
  fromBinary: function (blob) {
3459
- return __awaiter$1(this, void 0, void 0, function () {
3460
- var len, _e, binData, json;
3461
- return __generator$1(this, function (_f) {
3462
- switch (_f.label) {
3492
+ return __awaiter$2(this, void 0, void 0, function () {
3493
+ var len, _j, binData, json;
3494
+ return __generator$1(this, function (_k) {
3495
+ switch (_k.label) {
3463
3496
  case 0:
3464
- _e = DataView.bind;
3497
+ _j = DataView.bind;
3465
3498
  return [4 /*yield*/, readBlobBinary(blob.slice(0, 4))];
3466
3499
  case 1:
3467
- len = new (_e.apply(DataView, [void 0, _f.sent()]))().getUint32(0);
3500
+ len = new (_j.apply(DataView, [void 0, _k.sent()]))().getUint32(0);
3468
3501
  binData = blob.slice(4, len + 4);
3469
3502
  return [4 /*yield*/, readBlob(blob.slice(len + 4))];
3470
3503
  case 2:
3471
- json = _f.sent();
3504
+ json = _k.sent();
3472
3505
  return [4 /*yield*/, this.parse(json, binData)];
3473
- case 3: return [2 /*return*/, _f.sent()];
3506
+ case 3: return [2 /*return*/, _k.sent()];
3474
3507
  }
3475
3508
  });
3476
3509
  });
@@ -3536,16 +3569,16 @@ var FakeBigInt = /** @class */ (function () {
3536
3569
  };
3537
3570
  return FakeBigInt;
3538
3571
  }());
3539
- var defs = __assign(__assign({}, undefinedDef), (hasBigIntSupport
3572
+ var defs = Object.assign(Object.assign({}, undefinedDef), (hasBigIntSupport
3540
3573
  ? {}
3541
3574
  : {
3542
3575
  bigint: {
3543
3576
  test: function (val) { return val instanceof FakeBigInt; },
3544
3577
  replace: function (fakeBigInt) {
3545
- return __assign({ $t: 'bigint' }, fakeBigInt);
3578
+ return Object.assign({ $t: 'bigint' }, fakeBigInt);
3546
3579
  },
3547
- revive: function (_e) {
3548
- var v = _e.v;
3580
+ revive: function (_j) {
3581
+ var v = _j.v;
3549
3582
  return new FakeBigInt(v);
3550
3583
  }
3551
3584
  }
@@ -3593,24 +3626,24 @@ function encodeIdsForServer(schema, currentUser, changes) {
3593
3626
  });
3594
3627
  rv.push(changeClone);
3595
3628
  };
3596
- for (var _e = 0, changes_1 = changes; _e < changes_1.length; _e++) {
3597
- var change = changes_1[_e];
3629
+ for (var _j = 0, changes_1 = changes; _j < changes_1.length; _j++) {
3630
+ var change = changes_1[_j];
3598
3631
  _loop_2(change);
3599
3632
  }
3600
3633
  return rv;
3601
3634
  }
3602
3635
  function cloneChange(change, rewriteValues) {
3603
3636
  // clone on demand:
3604
- return __assign(__assign({}, change), { muts: rewriteValues
3605
- ? change.muts.map(function (m) { return (__assign(__assign({}, m), { keys: m.keys.slice(), values: m.values.slice() })); })
3606
- : change.muts.map(function (m) { return (__assign(__assign({}, m), { keys: m.keys.slice() })); }) });
3637
+ return Object.assign(Object.assign({}, change), { muts: rewriteValues
3638
+ ? change.muts.map(function (m) { return (Object.assign(Object.assign({}, m), { keys: m.keys.slice(), values: m.values.slice() })); })
3639
+ : change.muts.map(function (m) { return (Object.assign(Object.assign({}, m), { keys: m.keys.slice() })); }) });
3607
3640
  }
3608
3641
  //import {BisonWebStreamReader} from "dreambase-library/dist/typeson-simplified/BisonWebStreamReader";
3609
3642
  function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, clientIdentity, currentUser) {
3610
3643
  return __awaiter$1(this, void 0, void 0, function () {
3611
- var headers, accessToken, syncRequest, res, _e, _f, _g, text, syncRes;
3612
- return __generator$1(this, function (_h) {
3613
- switch (_h.label) {
3644
+ var headers, accessToken, syncRequest, res, _j, _k, _l, text, syncRes;
3645
+ return __generator$1(this, function (_m) {
3646
+ switch (_m.label) {
3614
3647
  case 0:
3615
3648
  headers = {
3616
3649
  Accept: 'application/json, application/x-bison, application/x-bison-stream',
@@ -3618,7 +3651,7 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3618
3651
  };
3619
3652
  return [4 /*yield*/, loadAccessToken(db)];
3620
3653
  case 1:
3621
- accessToken = _h.sent();
3654
+ accessToken = _m.sent();
3622
3655
  if (accessToken) {
3623
3656
  headers.Authorization = "Bearer ".concat(accessToken);
3624
3657
  }
@@ -3645,7 +3678,7 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3645
3678
  body: TSON.stringify(syncRequest)
3646
3679
  })];
3647
3680
  case 2:
3648
- res = _h.sent();
3681
+ res = _m.sent();
3649
3682
  //const contentLength = Number(res.headers.get('content-length'));
3650
3683
  db.syncStateChangedEvent.next({
3651
3684
  phase: 'pulling'
@@ -3653,20 +3686,20 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3653
3686
  if (!res.ok) {
3654
3687
  throw new HttpError(res);
3655
3688
  }
3656
- _e = res.headers.get('content-type');
3657
- switch (_e) {
3689
+ _j = res.headers.get('content-type');
3690
+ switch (_j) {
3658
3691
  case 'application/x-bison': return [3 /*break*/, 3];
3659
3692
  case 'application/x-bison-stream': return [3 /*break*/, 5];
3660
3693
  case 'application/json': return [3 /*break*/, 5];
3661
3694
  }
3662
3695
  return [3 /*break*/, 5];
3663
3696
  case 3:
3664
- _g = (_f = BISON).fromBinary;
3697
+ _l = (_k = BISON).fromBinary;
3665
3698
  return [4 /*yield*/, res.blob()];
3666
- case 4: return [2 /*return*/, _g.apply(_f, [_h.sent()])];
3699
+ case 4: return [2 /*return*/, _l.apply(_k, [_m.sent()])];
3667
3700
  case 5: return [4 /*yield*/, res.text()];
3668
3701
  case 6:
3669
- text = _h.sent();
3702
+ text = _m.sent();
3670
3703
  syncRes = TSON.parse(text);
3671
3704
  return [2 /*return*/, syncRes];
3672
3705
  }
@@ -3675,16 +3708,16 @@ function syncWithServer(changes, syncState, baseRevs, db, databaseUrl, schema, c
3675
3708
  }
3676
3709
  function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySyncedRealms) {
3677
3710
  return __awaiter$1(this, void 0, void 0, function () {
3678
- var ignoredRealms, _e, syncifiedTables_1, table;
3679
- return __generator$1(this, function (_f) {
3680
- switch (_f.label) {
3711
+ var ignoredRealms, _j, syncifiedTables_1, table;
3712
+ return __generator$1(this, function (_k) {
3713
+ switch (_k.label) {
3681
3714
  case 0:
3682
3715
  ignoredRealms = new Set(alreadySyncedRealms || []);
3683
- _e = 0, syncifiedTables_1 = syncifiedTables;
3684
- _f.label = 1;
3716
+ _j = 0, syncifiedTables_1 = syncifiedTables;
3717
+ _k.label = 1;
3685
3718
  case 1:
3686
- if (!(_e < syncifiedTables_1.length)) return [3 /*break*/, 9];
3687
- table = syncifiedTables_1[_e];
3719
+ if (!(_j < syncifiedTables_1.length)) return [3 /*break*/, 9];
3720
+ table = syncifiedTables_1[_j];
3688
3721
  if (!(table.name === "members")) return [3 /*break*/, 3];
3689
3722
  // members
3690
3723
  return [4 /*yield*/, table.toCollection().modify(function (member) {
@@ -3694,7 +3727,7 @@ function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySy
3694
3727
  })];
3695
3728
  case 2:
3696
3729
  // members
3697
- _f.sent();
3730
+ _k.sent();
3698
3731
  return [3 /*break*/, 8];
3699
3732
  case 3:
3700
3733
  if (!(table.name === "roles")) return [3 /*break*/, 4];
@@ -3709,7 +3742,7 @@ function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySy
3709
3742
  })];
3710
3743
  case 5:
3711
3744
  // realms
3712
- _f.sent();
3745
+ _k.sent();
3713
3746
  return [3 /*break*/, 8];
3714
3747
  case 6:
3715
3748
  // application entities
@@ -3724,10 +3757,10 @@ function modifyLocalObjectsWithNewUserId(syncifiedTables, currentUser, alreadySy
3724
3757
  })];
3725
3758
  case 7:
3726
3759
  // application entities
3727
- _f.sent();
3728
- _f.label = 8;
3760
+ _k.sent();
3761
+ _k.label = 8;
3729
3762
  case 8:
3730
- _e++;
3763
+ _j++;
3731
3764
  return [3 /*break*/, 1];
3732
3765
  case 9: return [2 /*return*/];
3733
3766
  }
@@ -3747,8 +3780,8 @@ self.addEventListener('online', function () { return isOnline = true; });
3747
3780
  self.addEventListener('offline', function () { return isOnline = false; });
3748
3781
  function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3749
3782
  return __awaiter$1(this, void 0, void 0, function () {
3750
- return __generator$1(this, function (_e) {
3751
- switch (_e.label) {
3783
+ return __generator$1(this, function (_j) {
3784
+ switch (_j.label) {
3752
3785
  case 0: return [4 /*yield*/, db.$baseRevs.bulkPut(Object.keys(schema)
3753
3786
  .filter(function (table) { return schema[table].markedForSync; })
3754
3787
  .map(function (tableName) {
@@ -3760,7 +3793,7 @@ function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3760
3793
  };
3761
3794
  }))];
3762
3795
  case 1:
3763
- _e.sent();
3796
+ _j.sent();
3764
3797
  return [2 /*return*/];
3765
3798
  }
3766
3799
  });
@@ -3768,8 +3801,8 @@ function updateBaseRevs(db, schema, latestRevisions, serverRev) {
3768
3801
  }
3769
3802
  function getLatestRevisionsPerTable(clientChangeSet, lastRevisions) {
3770
3803
  if (lastRevisions === void 0) { lastRevisions = {}; }
3771
- for (var _e = 0, clientChangeSet_1 = clientChangeSet; _e < clientChangeSet_1.length; _e++) {
3772
- var _f = clientChangeSet_1[_e], table = _f.table, muts = _f.muts;
3804
+ for (var _j = 0, clientChangeSet_1 = clientChangeSet; _j < clientChangeSet_1.length; _j++) {
3805
+ var _k = clientChangeSet_1[_j], table = _k.table, muts = _k.muts;
3773
3806
  var lastRev = muts.length > 0 ? muts[muts.length - 1].rev : null;
3774
3807
  lastRevisions[table] = lastRev || lastRevisions[table] || 0;
3775
3808
  }
@@ -3778,18 +3811,18 @@ function getLatestRevisionsPerTable(clientChangeSet, lastRevisions) {
3778
3811
  function bulkUpdate(table, keys, changeSpecs) {
3779
3812
  return __awaiter$1(this, void 0, void 0, function () {
3780
3813
  var objs, resultKeys, resultObjs;
3781
- return __generator$1(this, function (_e) {
3782
- switch (_e.label) {
3814
+ return __generator$1(this, function (_j) {
3815
+ switch (_j.label) {
3783
3816
  case 0: return [4 /*yield*/, table.bulkGet(keys)];
3784
3817
  case 1:
3785
- objs = _e.sent();
3818
+ objs = _j.sent();
3786
3819
  resultKeys = [];
3787
3820
  resultObjs = [];
3788
3821
  keys.forEach(function (key, idx) {
3789
3822
  var obj = objs[idx];
3790
3823
  if (obj) {
3791
- for (var _e = 0, _f = Object.entries(changeSpecs[idx]); _e < _f.length; _e++) {
3792
- var _g = _f[_e], keyPath = _g[0], value = _g[1];
3824
+ for (var _j = 0, _k = Object.entries(changeSpecs[idx]); _j < _k.length; _j++) {
3825
+ var _l = _k[_j], keyPath = _l[0], value = _l[1];
3793
3826
  if (keyPath === table.schema.primKey.keyPath) {
3794
3827
  if (cmp(value, key) !== 0) {
3795
3828
  throw new Error("Cannot change primary key");
@@ -3807,7 +3840,7 @@ function bulkUpdate(table, keys, changeSpecs) {
3807
3840
  ? table.bulkPut(resultObjs, resultKeys)
3808
3841
  : table.bulkPut(resultObjs))];
3809
3842
  case 2:
3810
- _e.sent();
3843
+ _j.sent();
3811
3844
  return [2 /*return*/];
3812
3845
  }
3813
3846
  });
@@ -3815,15 +3848,15 @@ function bulkUpdate(table, keys, changeSpecs) {
3815
3848
  }
3816
3849
  function applyServerChanges(changes, db) {
3817
3850
  return __awaiter$1(this, void 0, void 0, function () {
3818
- var _loop_3, _e, changes_2, _f, tableName, muts;
3819
- return __generator$1(this, function (_g) {
3820
- switch (_g.label) {
3851
+ var _loop_3, _j, changes_2, _k, tableName, muts;
3852
+ return __generator$1(this, function (_l) {
3853
+ switch (_l.label) {
3821
3854
  case 0:
3822
3855
  console.debug('Applying server changes', changes, Dexie.currentTransaction);
3823
3856
  _loop_3 = function (tableName, muts) {
3824
- var table, primaryKey, keyDecoder, _loop_4, _h, muts_2, mut;
3825
- return __generator$1(this, function (_j) {
3826
- switch (_j.label) {
3857
+ var table, primaryKey, keyDecoder, _loop_4, _m, muts_2, mut;
3858
+ return __generator$1(this, function (_o) {
3859
+ switch (_o.label) {
3827
3860
  case 0:
3828
3861
  table = db.table(tableName);
3829
3862
  if (!table)
@@ -3838,7 +3871,7 @@ function applyServerChanges(changes, db) {
3838
3871
  // On server, array keys are transformed to JSON string representation
3839
3872
  return JSON.parse(key);
3840
3873
  }
3841
- catch (_e) { }
3874
+ catch (_a) { }
3842
3875
  return key;
3843
3876
  case '#':
3844
3877
  // Decode private ID (do the opposite from what's done in encodeIdsForServer())
@@ -3851,13 +3884,13 @@ function applyServerChanges(changes, db) {
3851
3884
  }
3852
3885
  };
3853
3886
  _loop_4 = function (mut) {
3854
- var keys, _k;
3855
- return __generator$1(this, function (_l) {
3856
- switch (_l.label) {
3887
+ var keys, _p;
3888
+ return __generator$1(this, function (_q) {
3889
+ switch (_q.label) {
3857
3890
  case 0:
3858
3891
  keys = mut.keys.map(keyDecoder);
3859
- _k = mut.type;
3860
- switch (_k) {
3892
+ _p = mut.type;
3893
+ switch (_p) {
3861
3894
  case 'insert': return [3 /*break*/, 1];
3862
3895
  case 'upsert': return [3 /*break*/, 6];
3863
3896
  case 'modify': return [3 /*break*/, 11];
@@ -3869,7 +3902,7 @@ function applyServerChanges(changes, db) {
3869
3902
  if (!primaryKey.outbound) return [3 /*break*/, 3];
3870
3903
  return [4 /*yield*/, table.bulkAdd(mut.values, keys)];
3871
3904
  case 2:
3872
- _l.sent();
3905
+ _q.sent();
3873
3906
  return [3 /*break*/, 5];
3874
3907
  case 3:
3875
3908
  keys.forEach(function (key, i) {
@@ -3878,14 +3911,14 @@ function applyServerChanges(changes, db) {
3878
3911
  });
3879
3912
  return [4 /*yield*/, table.bulkAdd(mut.values)];
3880
3913
  case 4:
3881
- _l.sent();
3882
- _l.label = 5;
3914
+ _q.sent();
3915
+ _q.label = 5;
3883
3916
  case 5: return [3 /*break*/, 20];
3884
3917
  case 6:
3885
3918
  if (!primaryKey.outbound) return [3 /*break*/, 8];
3886
3919
  return [4 /*yield*/, table.bulkPut(mut.values, keys)];
3887
3920
  case 7:
3888
- _l.sent();
3921
+ _q.sent();
3889
3922
  return [3 /*break*/, 10];
3890
3923
  case 8:
3891
3924
  keys.forEach(function (key, i) {
@@ -3894,59 +3927,59 @@ function applyServerChanges(changes, db) {
3894
3927
  });
3895
3928
  return [4 /*yield*/, table.bulkPut(mut.values)];
3896
3929
  case 9:
3897
- _l.sent();
3898
- _l.label = 10;
3930
+ _q.sent();
3931
+ _q.label = 10;
3899
3932
  case 10: return [3 /*break*/, 20];
3900
3933
  case 11:
3901
3934
  if (!(keys.length === 1)) return [3 /*break*/, 13];
3902
3935
  return [4 /*yield*/, table.update(keys[0], mut.changeSpec)];
3903
3936
  case 12:
3904
- _l.sent();
3937
+ _q.sent();
3905
3938
  return [3 /*break*/, 15];
3906
3939
  case 13: return [4 /*yield*/, table.where(':id').anyOf(keys).modify(mut.changeSpec)];
3907
3940
  case 14:
3908
- _l.sent();
3909
- _l.label = 15;
3941
+ _q.sent();
3942
+ _q.label = 15;
3910
3943
  case 15: return [3 /*break*/, 20];
3911
3944
  case 16: return [4 /*yield*/, bulkUpdate(table, keys, mut.changeSpecs)];
3912
3945
  case 17:
3913
- _l.sent();
3946
+ _q.sent();
3914
3947
  return [3 /*break*/, 20];
3915
3948
  case 18: return [4 /*yield*/, table.bulkDelete(keys)];
3916
3949
  case 19:
3917
- _l.sent();
3950
+ _q.sent();
3918
3951
  return [3 /*break*/, 20];
3919
3952
  case 20: return [2 /*return*/];
3920
3953
  }
3921
3954
  });
3922
3955
  };
3923
- _h = 0, muts_2 = muts;
3924
- _j.label = 1;
3956
+ _m = 0, muts_2 = muts;
3957
+ _o.label = 1;
3925
3958
  case 1:
3926
- if (!(_h < muts_2.length)) return [3 /*break*/, 4];
3927
- mut = muts_2[_h];
3959
+ if (!(_m < muts_2.length)) return [3 /*break*/, 4];
3960
+ mut = muts_2[_m];
3928
3961
  return [5 /*yield**/, _loop_4(mut)];
3929
3962
  case 2:
3930
- _j.sent();
3931
- _j.label = 3;
3963
+ _o.sent();
3964
+ _o.label = 3;
3932
3965
  case 3:
3933
- _h++;
3966
+ _m++;
3934
3967
  return [3 /*break*/, 1];
3935
3968
  case 4: return [2 /*return*/];
3936
3969
  }
3937
3970
  });
3938
3971
  };
3939
- _e = 0, changes_2 = changes;
3940
- _g.label = 1;
3972
+ _j = 0, changes_2 = changes;
3973
+ _l.label = 1;
3941
3974
  case 1:
3942
- if (!(_e < changes_2.length)) return [3 /*break*/, 4];
3943
- _f = changes_2[_e], tableName = _f.table, muts = _f.muts;
3975
+ if (!(_j < changes_2.length)) return [3 /*break*/, 4];
3976
+ _k = changes_2[_j], tableName = _k.table, muts = _k.muts;
3944
3977
  return [5 /*yield**/, _loop_3(tableName, muts)];
3945
3978
  case 2:
3946
- _g.sent();
3947
- _g.label = 3;
3979
+ _l.sent();
3980
+ _l.label = 3;
3948
3981
  case 3:
3949
- _e++;
3982
+ _j++;
3950
3983
  return [3 /*break*/, 1];
3951
3984
  case 4: return [2 /*return*/];
3952
3985
  }
@@ -3966,8 +3999,8 @@ function sync(db, options, schema, syncOptions) {
3966
3999
  }
3967
4000
  })
3968
4001
  .catch(function (error) { return __awaiter$1(_this_1, void 0, void 0, function () {
3969
- return __generator$1(this, function (_e) {
3970
- switch (_e.label) {
4002
+ return __generator$1(this, function (_j) {
4003
+ switch (_j.label) {
3971
4004
  case 0:
3972
4005
  if (syncOptions === null || syncOptions === void 0 ? void 0 : syncOptions.justCheckIfNeeded)
3973
4006
  return [2 /*return*/, Promise.reject(error)]; // Just rethrow.
@@ -3988,9 +4021,9 @@ function sync(db, options, schema, syncOptions) {
3988
4021
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 500); })];
3989
4022
  case 1:
3990
4023
  // Retry again in 500 ms but if it fails again, don't retry.
3991
- _e.sent();
3992
- return [4 /*yield*/, sync(db, options, schema, __assign(__assign({}, syncOptions), { retryImmediatelyOnFetchError: false }))];
3993
- case 2: return [2 /*return*/, _e.sent()];
4024
+ _j.sent();
4025
+ return [4 /*yield*/, sync(db, options, schema, Object.assign(Object.assign({}, syncOptions), { retryImmediatelyOnFetchError: false }))];
4026
+ case 2: return [2 /*return*/, _j.sent()];
3994
4027
  case 3:
3995
4028
  // Make sure that no matter whether sync() explodes or not,
3996
4029
  // always update the timestamp. Also store the error.
@@ -4001,7 +4034,7 @@ function sync(db, options, schema, syncOptions) {
4001
4034
  case 4:
4002
4035
  // Make sure that no matter whether sync() explodes or not,
4003
4036
  // always update the timestamp. Also store the error.
4004
- _e.sent();
4037
+ _j.sent();
4005
4038
  db.syncStateChangedEvent.next({
4006
4039
  phase: isOnline ? 'error' : 'offline',
4007
4040
  error: error,
@@ -4011,31 +4044,31 @@ function sync(db, options, schema, syncOptions) {
4011
4044
  });
4012
4045
  }); });
4013
4046
  }
4014
- function _sync(db, options, schema, _e) {
4015
- var _f;
4016
- var _g = _e === void 0 ? {
4047
+ function _sync(db, options, schema, _j) {
4048
+ var _k = _j === void 0 ? {
4017
4049
  isInitialSync: false,
4018
- } : _e, isInitialSync = _g.isInitialSync, cancelToken = _g.cancelToken, justCheckIfNeeded = _g.justCheckIfNeeded, purpose = _g.purpose;
4050
+ } : _j, isInitialSync = _k.isInitialSync, cancelToken = _k.cancelToken, justCheckIfNeeded = _k.justCheckIfNeeded, purpose = _k.purpose;
4051
+ var _a;
4019
4052
  return __awaiter$1(this, void 0, void 0, function () {
4020
- var databaseUrl, currentUser, tablesToSync, mutationTables, persistedSyncState, tablesToSyncify, doSyncify, _h, clientChangeSet, syncState, baseRevs, syncIsNeeded, latestRevisions, clientIdentity, res, done;
4053
+ var databaseUrl, currentUser, tablesToSync, mutationTables, persistedSyncState, tablesToSyncify, doSyncify, _j, clientChangeSet, syncState, baseRevs, syncIsNeeded, latestRevisions, clientIdentity, res, done;
4021
4054
  var _this_1 = this;
4022
- return __generator$1(this, function (_j) {
4023
- switch (_j.label) {
4055
+ return __generator$1(this, function (_k) {
4056
+ switch (_k.label) {
4024
4057
  case 0:
4025
4058
  if (!justCheckIfNeeded) {
4026
4059
  console.debug('SYNC STARTED', { isInitialSync: isInitialSync, purpose: purpose });
4027
4060
  }
4028
- if (!((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl))
4061
+ if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl))
4029
4062
  throw new Error("Internal error: sync must not be called when no databaseUrl is configured");
4030
4063
  databaseUrl = options.databaseUrl;
4031
4064
  return [4 /*yield*/, db.getCurrentUser()];
4032
4065
  case 1:
4033
- currentUser = _j.sent();
4066
+ currentUser = _k.sent();
4034
4067
  tablesToSync = currentUser.isLoggedIn ? getSyncableTables(db) : [];
4035
4068
  mutationTables = tablesToSync.map(function (tbl) { return db.table(getMutationTable(tbl.name)); });
4036
4069
  return [4 /*yield*/, db.getPersistedSyncState()];
4037
4070
  case 2:
4038
- persistedSyncState = _j.sent();
4071
+ persistedSyncState = _k.sent();
4039
4072
  tablesToSyncify = !isInitialSync && currentUser.isLoggedIn
4040
4073
  ? getTablesToSyncify(db, persistedSyncState)
4041
4074
  : [];
@@ -4046,8 +4079,8 @@ function _sync(db, options, schema, _e) {
4046
4079
  return [2 /*return*/, true];
4047
4080
  //console.debug('sync doSyncify is true');
4048
4081
  return [4 /*yield*/, db.transaction('rw', tablesToSyncify, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4049
- return __generator$1(this, function (_e) {
4050
- switch (_e.label) {
4082
+ return __generator$1(this, function (_j) {
4083
+ switch (_j.label) {
4051
4084
  case 0:
4052
4085
  // @ts-ignore
4053
4086
  tx.idbtrans.disableChangeTracking = true;
@@ -4055,35 +4088,35 @@ function _sync(db, options, schema, _e) {
4055
4088
  tx.idbtrans.disableAccessControl = true; // TODO: Take care of this flag in access control middleware!
4056
4089
  return [4 /*yield*/, modifyLocalObjectsWithNewUserId(tablesToSyncify, currentUser, persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms)];
4057
4090
  case 1:
4058
- _e.sent();
4091
+ _j.sent();
4059
4092
  return [2 /*return*/];
4060
4093
  }
4061
4094
  });
4062
4095
  }); })];
4063
4096
  case 3:
4064
4097
  //console.debug('sync doSyncify is true');
4065
- _j.sent();
4098
+ _k.sent();
4066
4099
  throwIfCancelled(cancelToken);
4067
- _j.label = 4;
4100
+ _k.label = 4;
4068
4101
  case 4: return [4 /*yield*/, db.transaction('r', db.tables, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
4069
4102
  var syncState, baseRevs, clientChanges, alreadySyncedRealms, syncificationInserts;
4070
- return __generator$1(this, function (_e) {
4071
- switch (_e.label) {
4103
+ return __generator$1(this, function (_j) {
4104
+ switch (_j.label) {
4072
4105
  case 0: return [4 /*yield*/, db.getPersistedSyncState()];
4073
4106
  case 1:
4074
- syncState = _e.sent();
4107
+ syncState = _j.sent();
4075
4108
  return [4 /*yield*/, db.$baseRevs.toArray()];
4076
4109
  case 2:
4077
- baseRevs = _e.sent();
4110
+ baseRevs = _j.sent();
4078
4111
  return [4 /*yield*/, listClientChanges(mutationTables)];
4079
4112
  case 3:
4080
- clientChanges = _e.sent();
4113
+ clientChanges = _j.sent();
4081
4114
  throwIfCancelled(cancelToken);
4082
4115
  if (!doSyncify) return [3 /*break*/, 5];
4083
4116
  alreadySyncedRealms = __spreadArray$1(__spreadArray$1([], ((persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms) || []), true), ((persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.inviteRealms) || []), true);
4084
4117
  return [4 /*yield*/, listSyncifiedChanges(tablesToSyncify, currentUser, schema, alreadySyncedRealms)];
4085
4118
  case 4:
4086
- syncificationInserts = _e.sent();
4119
+ syncificationInserts = _j.sent();
4087
4120
  throwIfCancelled(cancelToken);
4088
4121
  clientChanges = clientChanges.concat(syncificationInserts);
4089
4122
  return [2 /*return*/, [clientChanges, syncState, baseRevs]];
@@ -4092,7 +4125,7 @@ function _sync(db, options, schema, _e) {
4092
4125
  });
4093
4126
  }); })];
4094
4127
  case 5:
4095
- _h = _j.sent(), clientChangeSet = _h[0], syncState = _h[1], baseRevs = _h[2];
4128
+ _j = _k.sent(), clientChangeSet = _j[0], syncState = _j[1], baseRevs = _j[2];
4096
4129
  syncIsNeeded = clientChangeSet.some(function (set) { return set.muts.some(function (mut) { return mut.keys.length > 0; }); });
4097
4130
  if (justCheckIfNeeded) {
4098
4131
  console.debug('Sync is needed:', syncIsNeeded);
@@ -4110,12 +4143,12 @@ function _sync(db, options, schema, _e) {
4110
4143
  throwIfCancelled(cancelToken);
4111
4144
  return [4 /*yield*/, syncWithServer(clientChangeSet, syncState, baseRevs, db, databaseUrl, schema, clientIdentity, currentUser)];
4112
4145
  case 6:
4113
- res = _j.sent();
4146
+ res = _k.sent();
4114
4147
  console.debug('Sync response', res);
4115
4148
  return [4 /*yield*/, db.transaction('rw', db.tables, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4116
- var _e, _f, tableName, addedClientChanges, _loop_5, _g, mutationTables_1, mutTable, syncState, newSyncState, filteredChanges;
4117
- return __generator$1(this, function (_h) {
4118
- switch (_h.label) {
4149
+ var _j, _k, tableName, addedClientChanges, _loop_5, _l, mutationTables_1, mutTable, syncState, newSyncState, filteredChanges;
4150
+ return __generator$1(this, function (_m) {
4151
+ switch (_m.label) {
4119
4152
  case 0:
4120
4153
  // @ts-ignore
4121
4154
  tx.idbtrans.disableChangeTracking = true;
@@ -4123,8 +4156,8 @@ function _sync(db, options, schema, _e) {
4123
4156
  tx.idbtrans.disableAccessControl = true; // TODO: Take care of this flag in access control middleware!
4124
4157
  // Update db.cloud.schema from server response.
4125
4158
  // Local schema MAY include a subset of tables, so do not force all tables into local schema.
4126
- for (_e = 0, _f = Object.keys(schema); _e < _f.length; _e++) {
4127
- tableName = _f[_e];
4159
+ for (_j = 0, _k = Object.keys(schema); _j < _k.length; _j++) {
4160
+ tableName = _k[_j];
4128
4161
  if (res.schema[tableName]) {
4129
4162
  // Write directly into configured schema. This code can only be executed alone.
4130
4163
  schema[tableName] = res.schema[tableName];
@@ -4132,16 +4165,16 @@ function _sync(db, options, schema, _e) {
4132
4165
  }
4133
4166
  return [4 /*yield*/, db.$syncState.put(schema, 'schema')];
4134
4167
  case 1:
4135
- _h.sent();
4168
+ _m.sent();
4136
4169
  return [4 /*yield*/, listClientChanges(mutationTables, db, {
4137
4170
  since: latestRevisions,
4138
4171
  })];
4139
4172
  case 2:
4140
- addedClientChanges = _h.sent();
4173
+ addedClientChanges = _m.sent();
4141
4174
  _loop_5 = function (mutTable) {
4142
4175
  var tableName, latestRev;
4143
- return __generator$1(this, function (_j) {
4144
- switch (_j.label) {
4176
+ return __generator$1(this, function (_o) {
4177
+ switch (_o.label) {
4145
4178
  case 0:
4146
4179
  tableName = getTableFromMutationTable(mutTable.name);
4147
4180
  if (!!addedClientChanges.some(function (ch) { return ch.table === tableName && ch.muts.length > 0; })) return [3 /*break*/, 2];
@@ -4158,7 +4191,7 @@ function _sync(db, options, schema, _e) {
4158
4191
  // to the server.
4159
4192
  // It is therefore safe to clear all changes (which is faster than
4160
4193
  // deleting a range)
4161
- _j.sent();
4194
+ _o.sent();
4162
4195
  return [3 /*break*/, 5];
4163
4196
  case 2:
4164
4197
  if (!latestRevisions[tableName]) return [3 /*break*/, 4];
@@ -4173,25 +4206,25 @@ function _sync(db, options, schema, _e) {
4173
4206
  .delete(),
4174
4207
  ])];
4175
4208
  case 3:
4176
- _j.sent();
4209
+ _o.sent();
4177
4210
  return [3 /*break*/, 5];
4178
4211
  case 4:
4179
- _j.label = 5;
4212
+ _o.label = 5;
4180
4213
  case 5: return [2 /*return*/];
4181
4214
  }
4182
4215
  });
4183
4216
  };
4184
- _g = 0, mutationTables_1 = mutationTables;
4185
- _h.label = 3;
4217
+ _l = 0, mutationTables_1 = mutationTables;
4218
+ _m.label = 3;
4186
4219
  case 3:
4187
- if (!(_g < mutationTables_1.length)) return [3 /*break*/, 6];
4188
- mutTable = mutationTables_1[_g];
4220
+ if (!(_l < mutationTables_1.length)) return [3 /*break*/, 6];
4221
+ mutTable = mutationTables_1[_l];
4189
4222
  return [5 /*yield**/, _loop_5(mutTable)];
4190
4223
  case 4:
4191
- _h.sent();
4192
- _h.label = 5;
4224
+ _m.sent();
4225
+ _m.label = 5;
4193
4226
  case 5:
4194
- _g++;
4227
+ _l++;
4195
4228
  return [3 /*break*/, 3];
4196
4229
  case 6:
4197
4230
  // Update latestRevisions object according to additional changes:
@@ -4214,10 +4247,10 @@ function _sync(db, options, schema, _e) {
4214
4247
  // The purpose of this operation is to mark a start revision (per table)
4215
4248
  // so that all client-mutations that come after this, will be mapped to current
4216
4249
  // server revision.
4217
- _h.sent();
4250
+ _m.sent();
4218
4251
  return [4 /*yield*/, db.getPersistedSyncState()];
4219
4252
  case 8:
4220
- syncState = _h.sent();
4253
+ syncState = _m.sent();
4221
4254
  //
4222
4255
  // Delete objects from removed realms
4223
4256
  //
@@ -4226,7 +4259,7 @@ function _sync(db, options, schema, _e) {
4226
4259
  //
4227
4260
  // Delete objects from removed realms
4228
4261
  //
4229
- _h.sent();
4262
+ _m.sent();
4230
4263
  newSyncState = syncState || {
4231
4264
  syncedTables: [],
4232
4265
  latestRevisions: {},
@@ -4254,7 +4287,7 @@ function _sync(db, options, schema, _e) {
4254
4287
  //
4255
4288
  // apply server changes
4256
4289
  //
4257
- _h.sent();
4290
+ _m.sent();
4258
4291
  //
4259
4292
  // Update syncState
4260
4293
  //
@@ -4264,11 +4297,11 @@ function _sync(db, options, schema, _e) {
4264
4297
  });
4265
4298
  }); })];
4266
4299
  case 7:
4267
- done = _j.sent();
4300
+ done = _k.sent();
4268
4301
  if (!!done) return [3 /*break*/, 9];
4269
4302
  console.debug('MORE SYNC NEEDED. Go for it again!');
4270
4303
  return [4 /*yield*/, _sync(db, options, schema, { isInitialSync: isInitialSync, cancelToken: cancelToken })];
4271
- case 8: return [2 /*return*/, _j.sent()];
4304
+ case 8: return [2 /*return*/, _k.sent()];
4272
4305
  case 9:
4273
4306
  console.debug('SYNC DONE', { isInitialSync: isInitialSync });
4274
4307
  return [2 /*return*/, false]; // Not needed anymore
@@ -4278,9 +4311,9 @@ function _sync(db, options, schema, _e) {
4278
4311
  }
4279
4312
  function deleteObjectsFromRemovedRealms(db, res, prevState) {
4280
4313
  return __awaiter$1(this, void 0, void 0, function () {
4281
- var deletedRealms, rejectedRealms, previousRealmSet, previousInviteRealmSet, updatedRealmSet, updatedTotalRealmSet, _e, previousRealmSet_1, realmId, _f, _g, realmId, tables, _loop_6, _h, tables_1, table;
4282
- return __generator$1(this, function (_j) {
4283
- switch (_j.label) {
4314
+ var deletedRealms, rejectedRealms, previousRealmSet, previousInviteRealmSet, updatedRealmSet, updatedTotalRealmSet, _j, previousRealmSet_1, realmId, _k, _l, realmId, tables, _loop_6, _m, tables_1, table;
4315
+ return __generator$1(this, function (_o) {
4316
+ switch (_o.label) {
4284
4317
  case 0:
4285
4318
  deletedRealms = new Set();
4286
4319
  rejectedRealms = new Set();
@@ -4288,8 +4321,8 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4288
4321
  previousInviteRealmSet = prevState ? prevState.inviteRealms : [];
4289
4322
  updatedRealmSet = new Set(res.realms);
4290
4323
  updatedTotalRealmSet = new Set(res.realms.concat(res.inviteRealms));
4291
- for (_e = 0, previousRealmSet_1 = previousRealmSet; _e < previousRealmSet_1.length; _e++) {
4292
- realmId = previousRealmSet_1[_e];
4324
+ for (_j = 0, previousRealmSet_1 = previousRealmSet; _j < previousRealmSet_1.length; _j++) {
4325
+ realmId = previousRealmSet_1[_j];
4293
4326
  if (!updatedRealmSet.has(realmId)) {
4294
4327
  rejectedRealms.add(realmId);
4295
4328
  if (!updatedTotalRealmSet.has(realmId)) {
@@ -4297,8 +4330,8 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4297
4330
  }
4298
4331
  }
4299
4332
  }
4300
- for (_f = 0, _g = previousInviteRealmSet.concat(previousRealmSet); _f < _g.length; _f++) {
4301
- realmId = _g[_f];
4333
+ for (_k = 0, _l = previousInviteRealmSet.concat(previousRealmSet); _k < _l.length; _k++) {
4334
+ realmId = _l[_k];
4302
4335
  if (!updatedTotalRealmSet.has(realmId)) {
4303
4336
  deletedRealms.add(realmId);
4304
4337
  }
@@ -4307,8 +4340,8 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4307
4340
  tables = getSyncableTables(db);
4308
4341
  _loop_6 = function (table) {
4309
4342
  var realmsToDelete;
4310
- return __generator$1(this, function (_k) {
4311
- switch (_k.label) {
4343
+ return __generator$1(this, function (_p) {
4344
+ switch (_p.label) {
4312
4345
  case 0:
4313
4346
  realmsToDelete = ['realms', 'members', 'roles'].includes(table.name)
4314
4347
  ? deletedRealms // These tables should spare rejected ones.
@@ -4326,7 +4359,7 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4326
4359
  case 1:
4327
4360
  // There's an index to use:
4328
4361
  //console.debug(`REMOVAL: deleting all ${table.name} where realmId anyOf `, JSON.stringify([...realmsToDelete]));
4329
- _k.sent();
4362
+ _p.sent();
4330
4363
  return [3 /*break*/, 4];
4331
4364
  case 2:
4332
4365
  // No index to use:
@@ -4337,23 +4370,23 @@ function deleteObjectsFromRemovedRealms(db, res, prevState) {
4337
4370
  case 3:
4338
4371
  // No index to use:
4339
4372
  //console.debug(`REMOVAL: deleting all ${table.name} where realmId is any of `, JSON.stringify([...realmsToDelete]), realmsToDelete.size);
4340
- _k.sent();
4341
- _k.label = 4;
4373
+ _p.sent();
4374
+ _p.label = 4;
4342
4375
  case 4: return [2 /*return*/];
4343
4376
  }
4344
4377
  });
4345
4378
  };
4346
- _h = 0, tables_1 = tables;
4347
- _j.label = 1;
4379
+ _m = 0, tables_1 = tables;
4380
+ _o.label = 1;
4348
4381
  case 1:
4349
- if (!(_h < tables_1.length)) return [3 /*break*/, 4];
4350
- table = tables_1[_h];
4382
+ if (!(_m < tables_1.length)) return [3 /*break*/, 4];
4383
+ table = tables_1[_m];
4351
4384
  return [5 /*yield**/, _loop_6(table)];
4352
4385
  case 2:
4353
- _j.sent();
4354
- _j.label = 3;
4386
+ _o.sent();
4387
+ _o.label = 3;
4355
4388
  case 3:
4356
- _h++;
4389
+ _m++;
4357
4390
  return [3 /*break*/, 1];
4358
4391
  case 4: return [2 /*return*/];
4359
4392
  }
@@ -4377,8 +4410,8 @@ function MessagesFromServerConsumer(db) {
4377
4410
  var loopWarning = 0;
4378
4411
  var loopDetection = [0, 0, 0, 0, 0, 0, 0, 0, 0, Date.now()];
4379
4412
  event.subscribe(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
4380
- return __generator$1(this, function (_e) {
4381
- switch (_e.label) {
4413
+ return __generator$1(this, function (_j) {
4414
+ switch (_j.label) {
4382
4415
  case 0:
4383
4416
  if (isWorking)
4384
4417
  return [2 /*return*/];
@@ -4387,12 +4420,12 @@ function MessagesFromServerConsumer(db) {
4387
4420
  loopDetection.shift();
4388
4421
  loopDetection.push(Date.now());
4389
4422
  readyToServe.next(false);
4390
- _e.label = 1;
4423
+ _j.label = 1;
4391
4424
  case 1:
4392
- _e.trys.push([1, , 3, 8]);
4425
+ _j.trys.push([1, , 3, 8]);
4393
4426
  return [4 /*yield*/, consumeQueue()];
4394
4427
  case 2:
4395
- _e.sent();
4428
+ _j.sent();
4396
4429
  return [3 /*break*/, 8];
4397
4430
  case 3:
4398
4431
  if (!(loopDetection[loopDetection.length - 1] - loopDetection[0] <
@@ -4403,7 +4436,7 @@ function MessagesFromServerConsumer(db) {
4403
4436
  loopWarning = Date.now() + 60000;
4404
4437
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 60000); })];
4405
4438
  case 4:
4406
- _e.sent();
4439
+ _j.sent();
4407
4440
  return [3 /*break*/, 7];
4408
4441
  case 5:
4409
4442
  // This is a one-time event. Just pause 10 seconds.
@@ -4411,8 +4444,8 @@ function MessagesFromServerConsumer(db) {
4411
4444
  loopWarning = Date.now() + 10000;
4412
4445
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 10000); })];
4413
4446
  case 6:
4414
- _e.sent();
4415
- _e.label = 7;
4447
+ _j.sent();
4448
+ _j.label = 7;
4416
4449
  case 7:
4417
4450
  isWorking = false;
4418
4451
  readyToServe.next(true);
@@ -4426,28 +4459,28 @@ function MessagesFromServerConsumer(db) {
4426
4459
  event.next(null);
4427
4460
  }
4428
4461
  function consumeQueue() {
4429
- var _e, _f, _g;
4462
+ var _a, _b, _c;
4430
4463
  return __awaiter$1(this, void 0, void 0, function () {
4431
4464
  var _loop_7;
4432
4465
  var _this_1 = this;
4433
- return __generator$1(this, function (_h) {
4434
- switch (_h.label) {
4466
+ return __generator$1(this, function (_j) {
4467
+ switch (_j.label) {
4435
4468
  case 0:
4436
4469
  _loop_7 = function () {
4437
- var msg, persistedSyncState, _j, user, refreshedLogin, error_2;
4438
- return __generator$1(this, function (_k) {
4439
- switch (_k.label) {
4470
+ var msg, persistedSyncState, _k, user, refreshedLogin, error_2;
4471
+ return __generator$1(this, function (_l) {
4472
+ switch (_l.label) {
4440
4473
  case 0:
4441
4474
  msg = queue.shift();
4442
- _k.label = 1;
4475
+ _l.label = 1;
4443
4476
  case 1:
4444
- _k.trys.push([1, 13, , 14]);
4477
+ _l.trys.push([1, 13, , 14]);
4445
4478
  // If the sync worker or service worker is syncing, wait 'til thei're done.
4446
4479
  // It's no need to have two channels at the same time - even though it wouldnt
4447
4480
  // be a problem - this is an optimization.
4448
4481
  return [4 /*yield*/, db.cloud.syncState
4449
- .pipe(filter(function (_e) {
4450
- var phase = _e.phase;
4482
+ .pipe(filter(function (_j) {
4483
+ var phase = _j.phase;
4451
4484
  return phase === 'in-sync' || phase === 'error';
4452
4485
  }), take(1))
4453
4486
  .toPromise()];
@@ -4455,14 +4488,14 @@ function MessagesFromServerConsumer(db) {
4455
4488
  // If the sync worker or service worker is syncing, wait 'til thei're done.
4456
4489
  // It's no need to have two channels at the same time - even though it wouldnt
4457
4490
  // be a problem - this is an optimization.
4458
- _k.sent();
4491
+ _l.sent();
4459
4492
  console.debug('processing msg', msg);
4460
4493
  persistedSyncState = db.cloud.persistedSyncState.value;
4461
4494
  //syncState.
4462
4495
  if (!msg)
4463
4496
  return [2 /*return*/, "continue"];
4464
- _j = msg.type;
4465
- switch (_j) {
4497
+ _k = msg.type;
4498
+ switch (_k) {
4466
4499
  case 'token-expired': return [3 /*break*/, 3];
4467
4500
  case 'realm-added': return [3 /*break*/, 6];
4468
4501
  case 'realm-accepted': return [3 /*break*/, 7];
@@ -4476,7 +4509,7 @@ function MessagesFromServerConsumer(db) {
4476
4509
  user = db.cloud.currentUser.value;
4477
4510
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, user)];
4478
4511
  case 4:
4479
- refreshedLogin = _k.sent();
4512
+ refreshedLogin = _l.sent();
4480
4513
  // Persist updated access token
4481
4514
  return [4 /*yield*/, db.table('$logins').update(user.userId, {
4482
4515
  accessToken: refreshedLogin.accessToken,
@@ -4484,7 +4517,7 @@ function MessagesFromServerConsumer(db) {
4484
4517
  })];
4485
4518
  case 5:
4486
4519
  // Persist updated access token
4487
- _k.sent();
4520
+ _l.sent();
4488
4521
  // Updating $logins will trigger emission of db.cloud.currentUser observable, which
4489
4522
  // in turn will lead to that connectWebSocket.ts will reconnect the socket with the
4490
4523
  // new token. So we don't need to do anything more here.
@@ -4501,8 +4534,8 @@ function MessagesFromServerConsumer(db) {
4501
4534
  return [3 /*break*/, 12];
4502
4535
  case 8:
4503
4536
  //if (
4504
- ((_e = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms) === null || _e === void 0 ? void 0 : _e.includes(msg.realm)) ||
4505
- ((_f = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.inviteRealms) === null || _f === void 0 ? void 0 : _f.includes(msg.realm));
4537
+ ((_a = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.realms) === null || _a === void 0 ? void 0 : _a.includes(msg.realm)) ||
4538
+ ((_b = persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.inviteRealms) === null || _b === void 0 ? void 0 : _b.includes(msg.realm));
4506
4539
  //) {
4507
4540
  triggerSync(db, 'pull');
4508
4541
  //}
@@ -4512,14 +4545,14 @@ function MessagesFromServerConsumer(db) {
4512
4545
  return [3 /*break*/, 12];
4513
4546
  case 10:
4514
4547
  console.debug('changes');
4515
- if (((_g = db.cloud.syncState.value) === null || _g === void 0 ? void 0 : _g.phase) === 'error') {
4548
+ if (((_c = db.cloud.syncState.value) === null || _c === void 0 ? void 0 : _c.phase) === 'error') {
4516
4549
  triggerSync(db, 'pull');
4517
4550
  return [3 /*break*/, 12];
4518
4551
  }
4519
4552
  return [4 /*yield*/, db.transaction('rw', db.dx.tables, function (tx) { return __awaiter$1(_this_1, void 0, void 0, function () {
4520
- var _e, schema, syncState, currentUser, ourRealmSetHash, clientChanges, mutationTables, filteredChanges;
4521
- return __generator$1(this, function (_f) {
4522
- switch (_f.label) {
4553
+ var _j, schema, syncState, currentUser, ourRealmSetHash, clientChanges, mutationTables, filteredChanges;
4554
+ return __generator$1(this, function (_k) {
4555
+ switch (_k.label) {
4523
4556
  case 0:
4524
4557
  // @ts-ignore
4525
4558
  tx.idbtrans.disableChangeTracking = true;
@@ -4531,7 +4564,7 @@ function MessagesFromServerConsumer(db) {
4531
4564
  db.getCurrentUser(),
4532
4565
  ])];
4533
4566
  case 1:
4534
- _e = _f.sent(), schema = _e[0], syncState = _e[1], currentUser = _e[2];
4567
+ _j = _k.sent(), schema = _j[0], syncState = _j[1], currentUser = _j[2];
4535
4568
  console.debug('ws message queue: in transaction');
4536
4569
  if (!syncState || !schema || !currentUser) {
4537
4570
  console.debug('required vars not present', {
@@ -4566,7 +4599,7 @@ function MessagesFromServerConsumer(db) {
4566
4599
  // Keep TX in non-IDB work
4567
4600
  computeRealmSetHash(syncState))];
4568
4601
  case 2:
4569
- ourRealmSetHash = _f.sent();
4602
+ ourRealmSetHash = _k.sent();
4570
4603
  console.debug('ourRealmSetHash', ourRealmSetHash);
4571
4604
  if (ourRealmSetHash !== msg.realmSetHash) {
4572
4605
  console.debug('not same realmSetHash', msg.realmSetHash);
@@ -4580,9 +4613,9 @@ function MessagesFromServerConsumer(db) {
4580
4613
  mutationTables = getSyncableTables(db).map(function (tbl) { return db.table(getMutationTable(tbl.name)); });
4581
4614
  return [4 /*yield*/, listClientChanges(mutationTables)];
4582
4615
  case 3:
4583
- clientChanges = _f.sent();
4616
+ clientChanges = _k.sent();
4584
4617
  console.debug('msg queue: client changes', clientChanges);
4585
- _f.label = 4;
4618
+ _k.label = 4;
4586
4619
  case 4:
4587
4620
  if (!(msg.changes.length > 0)) return [3 /*break*/, 6];
4588
4621
  filteredChanges = filterServerChangesThroughAddedClientChanges(msg.changes, clientChanges);
@@ -4592,8 +4625,8 @@ function MessagesFromServerConsumer(db) {
4592
4625
  console.debug('applying filtered server changes', filteredChanges);
4593
4626
  return [4 /*yield*/, applyServerChanges(filteredChanges, db)];
4594
4627
  case 5:
4595
- _f.sent();
4596
- _f.label = 6;
4628
+ _k.sent();
4629
+ _k.label = 6;
4597
4630
  case 6:
4598
4631
  // Update latest revisions per table in case there are unsynced changes
4599
4632
  // This can be a real case in future when we allow non-eagery sync.
@@ -4604,37 +4637,37 @@ function MessagesFromServerConsumer(db) {
4604
4637
  console.debug('Updating baseRefs', syncState.latestRevisions);
4605
4638
  return [4 /*yield*/, updateBaseRevs(db, schema, syncState.latestRevisions, msg.newRev)];
4606
4639
  case 7:
4607
- _f.sent();
4640
+ _k.sent();
4608
4641
  //
4609
4642
  // Update syncState
4610
4643
  //
4611
4644
  console.debug('Updating syncState', syncState);
4612
4645
  return [4 /*yield*/, db.$syncState.put(syncState, 'syncState')];
4613
4646
  case 8:
4614
- _f.sent();
4647
+ _k.sent();
4615
4648
  return [2 /*return*/];
4616
4649
  }
4617
4650
  });
4618
4651
  }); })];
4619
4652
  case 11:
4620
- _k.sent();
4653
+ _l.sent();
4621
4654
  console.debug('msg queue: done with rw transaction');
4622
4655
  return [3 /*break*/, 12];
4623
4656
  case 12: return [3 /*break*/, 14];
4624
4657
  case 13:
4625
- error_2 = _k.sent();
4658
+ error_2 = _l.sent();
4626
4659
  console.error("Error in msg queue", error_2);
4627
4660
  return [3 /*break*/, 14];
4628
4661
  case 14: return [2 /*return*/];
4629
4662
  }
4630
4663
  });
4631
4664
  };
4632
- _h.label = 1;
4665
+ _j.label = 1;
4633
4666
  case 1:
4634
4667
  if (!(queue.length > 0)) return [3 /*break*/, 3];
4635
4668
  return [5 /*yield**/, _loop_7()];
4636
4669
  case 2:
4637
- _h.sent();
4670
+ _j.sent();
4638
4671
  return [3 /*break*/, 1];
4639
4672
  case 3: return [2 /*return*/];
4640
4673
  }
@@ -4776,10 +4809,10 @@ function toStringTag(o) {
4776
4809
  return toString.call(o).slice(8, -1);
4777
4810
  }
4778
4811
  function getEffectiveKeys(primaryKey, req) {
4779
- var _e;
4812
+ var _a;
4780
4813
  if (req.type === 'delete')
4781
4814
  return req.keys;
4782
- return ((_e = req.keys) === null || _e === void 0 ? void 0 : _e.slice()) || req.values.map(primaryKey.extractKey);
4815
+ return ((_a = req.keys) === null || _a === void 0 ? void 0 : _a.slice()) || req.values.map(primaryKey.extractKey);
4783
4816
  }
4784
4817
  function applyToUpperBitFix(orig, bits) {
4785
4818
  return ((bits & 1 ? orig[0].toUpperCase() : orig[0].toLowerCase()) +
@@ -4869,7 +4902,7 @@ function createIdGenerationMiddleware(db) {
4869
4902
  name: 'idGenerationMiddleware',
4870
4903
  level: 1,
4871
4904
  create: function (core) {
4872
- return __assign(__assign({}, core), { table: function (tableName) {
4905
+ return Object.assign(Object.assign({}, core), { table: function (tableName) {
4873
4906
  var table = core.table(tableName);
4874
4907
  function generateOrVerifyAtKeys(req, idPrefix) {
4875
4908
  var valueClones = null;
@@ -4895,17 +4928,17 @@ function createIdGenerationMiddleware(db) {
4895
4928
  "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.");
4896
4929
  }
4897
4930
  });
4898
- return table.mutate(__assign(__assign({}, req), { keys: keys, values: valueClones || req.values }));
4931
+ return table.mutate(Object.assign(Object.assign({}, req), { keys: keys, values: valueClones || req.values }));
4899
4932
  }
4900
- return __assign(__assign({}, table), { mutate: function (req) {
4901
- var _e, _f;
4933
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
4934
+ var _a, _b;
4902
4935
  // @ts-ignore
4903
4936
  if (req.trans.disableChangeTracking) {
4904
4937
  // Disable ID policy checks and ID generation
4905
4938
  return table.mutate(req);
4906
4939
  }
4907
4940
  if (req.type === 'add' || req.type === 'put') {
4908
- var cloudTableSchema = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tableName];
4941
+ var cloudTableSchema = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tableName];
4909
4942
  if (!(cloudTableSchema === null || cloudTableSchema === void 0 ? void 0 : cloudTableSchema.generatedGlobalId)) {
4910
4943
  if (cloudTableSchema === null || cloudTableSchema === void 0 ? void 0 : cloudTableSchema.markedForSync) {
4911
4944
  // Just make sure primary key is of a supported type:
@@ -4921,7 +4954,7 @@ function createIdGenerationMiddleware(db) {
4921
4954
  }
4922
4955
  }
4923
4956
  else {
4924
- if (((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) && !db.initiallySynced) {
4957
+ if (((_b = db.cloud.options) === null || _b === void 0 ? void 0 : _b.databaseUrl) && !db.initiallySynced) {
4925
4958
  // A database URL is configured but no initial sync has been performed.
4926
4959
  var keys_1 = getEffectiveKeys(table.schema.primaryKey, req);
4927
4960
  // Check if the operation would yield any INSERT. If so, complain! We never want wrong ID prefixes stored.
@@ -4953,16 +4986,16 @@ function createImplicitPropSetterMiddleware(db) {
4953
4986
  name: 'implicitPropSetterMiddleware',
4954
4987
  level: 1,
4955
4988
  create: function (core) {
4956
- return __assign(__assign({}, core), { table: function (tableName) {
4989
+ return Object.assign(Object.assign({}, core), { table: function (tableName) {
4957
4990
  var table = core.table(tableName);
4958
- return __assign(__assign({}, table), { mutate: function (req) {
4959
- var _e, _f, _g, _h;
4991
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
4992
+ var _a, _b, _c, _d;
4960
4993
  // @ts-ignore
4961
4994
  if (req.trans.disableChangeTracking) {
4962
4995
  return table.mutate(req);
4963
4996
  }
4964
4997
  var trans = req.trans;
4965
- if ((_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tableName]) === null || _f === void 0 ? void 0 : _f.markedForSync) {
4998
+ if ((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tableName]) === null || _b === void 0 ? void 0 : _b.markedForSync) {
4966
4999
  if (req.type === 'add' || req.type === 'put') {
4967
5000
  // No matter if user is logged in or not, make sure "owner" and "realmId" props are set properly.
4968
5001
  // If not logged in, this will be changed upon syncification of the tables (next sync after login),
@@ -4977,7 +5010,7 @@ function createImplicitPropSetterMiddleware(db) {
4977
5010
  if (!obj.realmId) {
4978
5011
  obj.realmId = trans.currentUser.userId;
4979
5012
  }
4980
- var key = (_h = (_g = table.schema.primaryKey).extractKey) === null || _h === void 0 ? void 0 : _h.call(_g, obj);
5013
+ var key = (_d = (_c = table.schema.primaryKey).extractKey) === null || _d === void 0 ? void 0 : _d.call(_c, obj);
4981
5014
  if (typeof key === 'string' && key[0] === '#') {
4982
5015
  // Add $ts prop for put operations and
4983
5016
  // disable update operations as well as consistent
@@ -5022,11 +5055,11 @@ function allSettled(possiblePromises) {
5022
5055
  var counter$1 = 0;
5023
5056
  function guardedTable(table) {
5024
5057
  var prop = "$lock" + (++counter$1);
5025
- 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) });
5058
+ 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) });
5026
5059
  }
5027
5060
  function readLock(fn, prop) {
5028
5061
  return function readLocker(req) {
5029
- var _e = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _e.readers, writers = _e.writers;
5062
+ var _j = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _j.readers, writers = _j.writers;
5030
5063
  var numWriters = writers.length;
5031
5064
  var promise = (numWriters > 0
5032
5065
  ? writers[numWriters - 1].then(function () { return fn(req); }, function () { return fn(req); })
@@ -5037,7 +5070,7 @@ function readLock(fn, prop) {
5037
5070
  }
5038
5071
  function writeLock(fn, prop) {
5039
5072
  return function writeLocker(req) {
5040
- var _e = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _e.readers, writers = _e.writers;
5073
+ var _j = req.trans[prop] || (req.trans[prop] = { writers: [], readers: [] }), readers = _j.readers, writers = _j.writers;
5041
5074
  var promise = (writers.length > 0
5042
5075
  ? writers[writers.length - 1].then(function () { return fn(req); }, function () { return fn(req); })
5043
5076
  : readers.length > 0
@@ -5056,8 +5089,8 @@ var outstandingTransactions = new BehaviorSubject(new Set());
5056
5089
  * changes to server and cleanup the tracked mutations once the server has
5057
5090
  * ackowledged that it got them.
5058
5091
  */
5059
- function createMutationTrackingMiddleware(_e) {
5060
- var currentUserObservable = _e.currentUserObservable, db = _e.db;
5092
+ function createMutationTrackingMiddleware(_j) {
5093
+ var currentUserObservable = _j.currentUserObservable, db = _j.db;
5061
5094
  return {
5062
5095
  stack: 'dbcore',
5063
5096
  name: 'MutationTrackingMiddleware',
@@ -5071,14 +5104,14 @@ function createMutationTrackingMiddleware(_e) {
5071
5104
  core.table("$".concat(tbl.name, "_mutations"))
5072
5105
  ]; }));
5073
5106
  }
5074
- catch (_e) {
5107
+ catch (_a) {
5075
5108
  throwVersionIncrementNeeded();
5076
5109
  }
5077
- return __assign(__assign({}, core), { transaction: function (tables, mode) {
5110
+ return Object.assign(Object.assign({}, core), { transaction: function (tables, mode) {
5078
5111
  var tx;
5079
5112
  if (mode === 'readwrite') {
5080
5113
  var mutationTables = tables
5081
- .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; })
5114
+ .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; })
5082
5115
  .map(function (tbl) { return getMutationTable(tbl); });
5083
5116
  tx = core.transaction(__spreadArray$1(__spreadArray$1([], tables, true), mutationTables, true), mode);
5084
5117
  }
@@ -5101,8 +5134,8 @@ function createMutationTrackingMiddleware(_e) {
5101
5134
  outstandingTransactions.next(outstandingTransactions.value);
5102
5135
  };
5103
5136
  var txComplete_1 = function () {
5104
- var _e;
5105
- if (tx.mutationsAdded && ((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl)) {
5137
+ var _a;
5138
+ if (tx.mutationsAdded && ((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
5106
5139
  if (db.cloud.usingServiceWorker) {
5107
5140
  console.debug('registering sync event');
5108
5141
  registerSyncEvent(db, "push");
@@ -5126,7 +5159,7 @@ function createMutationTrackingMiddleware(_e) {
5126
5159
  // make sure to set the mutationsAdded flag on transaction.
5127
5160
  // This is also done in mutateAndLog() as that function talks to a
5128
5161
  // lower level DBCore and wouldn't be catched by this code.
5129
- return __assign(__assign({}, table), { mutate: function (req) {
5162
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
5130
5163
  if (req.type === 'add' || req.type === 'put') {
5131
5164
  req.trans.mutationsAdded = true;
5132
5165
  }
@@ -5134,7 +5167,7 @@ function createMutationTrackingMiddleware(_e) {
5134
5167
  } });
5135
5168
  }
5136
5169
  else if (tableName === '$logins') {
5137
- return __assign(__assign({}, table), { mutate: function (req) {
5170
+ return Object.assign(Object.assign({}, table), { mutate: function (req) {
5138
5171
  //console.debug('Mutating $logins table', req);
5139
5172
  return table
5140
5173
  .mutate(req)
@@ -5156,16 +5189,16 @@ function createMutationTrackingMiddleware(_e) {
5156
5189
  }
5157
5190
  var schema = table.schema;
5158
5191
  var mutsTable = mutTableMap.get(tableName);
5159
- return guardedTable(__assign(__assign({}, table), { mutate: function (req) {
5160
- var _e, _f, _g;
5192
+ return guardedTable(Object.assign(Object.assign({}, table), { mutate: function (req) {
5193
+ var _a, _b, _c;
5161
5194
  var trans = req.trans;
5162
5195
  if (!trans.txid)
5163
5196
  return table.mutate(req); // Upgrade transactions not guarded by us.
5164
5197
  if (trans.disableChangeTracking)
5165
5198
  return table.mutate(req);
5166
- if (!((_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[tableName]) === null || _f === void 0 ? void 0 : _f.markedForSync))
5199
+ if (!((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[tableName]) === null || _b === void 0 ? void 0 : _b.markedForSync))
5167
5200
  return table.mutate(req);
5168
- if (!((_g = trans.currentUser) === null || _g === void 0 ? void 0 : _g.isLoggedIn)) {
5201
+ if (!((_c = trans.currentUser) === null || _c === void 0 ? void 0 : _c.isLoggedIn)) {
5169
5202
  // Unauthorized user should not log mutations.
5170
5203
  // Instead, after login all local data should be logged at once.
5171
5204
  return table.mutate(req);
@@ -5265,7 +5298,7 @@ function createMutationTrackingMiddleware(_e) {
5265
5298
  }
5266
5299
  function overrideParseStoresSpec(origFunc, dexie) {
5267
5300
  return function (stores, dbSchema) {
5268
- var storesClone = __assign(__assign({}, DEXIE_CLOUD_SCHEMA), stores);
5301
+ var storesClone = Object.assign(Object.assign({}, DEXIE_CLOUD_SCHEMA), stores);
5269
5302
  var cloudSchema = dexie.cloud.schema || (dexie.cloud.schema = {});
5270
5303
  var allPrefixes = new Set();
5271
5304
  Object.keys(storesClone).forEach(function (tableName) {
@@ -5298,13 +5331,13 @@ function overrideParseStoresSpec(origFunc, dexie) {
5298
5331
  }
5299
5332
  function performInitialSync(db, cloudOptions, cloudSchema) {
5300
5333
  return __awaiter$1(this, void 0, void 0, function () {
5301
- return __generator$1(this, function (_e) {
5302
- switch (_e.label) {
5334
+ return __generator$1(this, function (_j) {
5335
+ switch (_j.label) {
5303
5336
  case 0:
5304
5337
  console.debug('Performing initial sync');
5305
5338
  return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, { isInitialSync: true })];
5306
5339
  case 1:
5307
- _e.sent();
5340
+ _j.sent();
5308
5341
  console.debug('Done initial sync');
5309
5342
  return [2 /*return*/];
5310
5343
  }
@@ -5430,7 +5463,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5430
5463
  try {
5431
5464
  this.ws.close();
5432
5465
  }
5433
- catch (_e) { }
5466
+ catch (_a) { }
5434
5467
  }
5435
5468
  this.ws = null;
5436
5469
  if (this.messageProducerSubscription) {
@@ -5446,7 +5479,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5446
5479
  try {
5447
5480
  this.disconnect();
5448
5481
  }
5449
- catch (_e) { }
5482
+ catch (_a) { }
5450
5483
  this.connect()
5451
5484
  .catch(function () { })
5452
5485
  .then(function () { return (_this_1.reconnecting = false); }); // finally()
@@ -5455,8 +5488,8 @@ var WSConnection = /** @class */ (function (_super_1) {
5455
5488
  return __awaiter$1(this, void 0, void 0, function () {
5456
5489
  var wsUrl, searchParams, ws, everConnected_1;
5457
5490
  var _this_1 = this;
5458
- return __generator$1(this, function (_e) {
5459
- switch (_e.label) {
5491
+ return __generator$1(this, function (_j) {
5492
+ switch (_j.label) {
5460
5493
  case 0:
5461
5494
  this.lastServerActivity = new Date();
5462
5495
  if (this.pauseUntil && this.pauseUntil > new Date()) {
@@ -5482,7 +5515,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5482
5515
  this.webSocketStatus.next('connecting');
5483
5516
  this.pinger = setInterval(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5484
5517
  var _this_1 = this;
5485
- return __generator$1(this, function (_e) {
5518
+ return __generator$1(this, function (_j) {
5486
5519
  if (this.closed) {
5487
5520
  console.debug('pinger check', this.id, 'CLOSED.');
5488
5521
  this.teardown();
@@ -5512,7 +5545,7 @@ var WSConnection = /** @class */ (function (_super_1) {
5512
5545
  }
5513
5546
  }, SERVER_PING_TIMEOUT);
5514
5547
  }
5515
- catch (_f) {
5548
+ catch (_a) {
5516
5549
  console.debug('pinger catch error', this.id, 'reconnecting');
5517
5550
  this.reconnect();
5518
5551
  }
@@ -5567,9 +5600,9 @@ var WSConnection = /** @class */ (function (_super_1) {
5567
5600
  _this_1.subscriber.error(e);
5568
5601
  }
5569
5602
  };
5570
- _e.label = 1;
5603
+ _j.label = 1;
5571
5604
  case 1:
5572
- _e.trys.push([1, 3, , 4]);
5605
+ _j.trys.push([1, 3, , 4]);
5573
5606
  everConnected_1 = false;
5574
5607
  return [4 /*yield*/, new Promise(function (resolve, reject) {
5575
5608
  ws.onopen = function (event) {
@@ -5590,20 +5623,20 @@ var WSConnection = /** @class */ (function (_super_1) {
5590
5623
  };
5591
5624
  })];
5592
5625
  case 2:
5593
- _e.sent();
5626
+ _j.sent();
5594
5627
  this.messageProducerSubscription = this.messageProducer.subscribe(function (msg) {
5595
- var _e;
5628
+ var _a;
5596
5629
  if (!_this_1.closed) {
5597
5630
  if (msg.type === 'ready' &&
5598
5631
  _this_1.webSocketStatus.value !== 'connected') {
5599
5632
  _this_1.webSocketStatus.next('connected');
5600
5633
  }
5601
- (_e = _this_1.ws) === null || _e === void 0 ? void 0 : _e.send(TSON.stringify(msg));
5634
+ (_a = _this_1.ws) === null || _a === void 0 ? void 0 : _a.send(TSON.stringify(msg));
5602
5635
  }
5603
5636
  });
5604
5637
  return [3 /*break*/, 4];
5605
5638
  case 3:
5606
- _e.sent();
5639
+ _j.sent();
5607
5640
  this.pauseUntil = new Date(Date.now() + FAIL_RETRY_WAIT_TIME);
5608
5641
  return [3 /*break*/, 4];
5609
5642
  case 4: return [2 /*return*/];
@@ -5618,20 +5651,20 @@ function sleep(ms) {
5618
5651
  }
5619
5652
  function waitAndReconnectWhenUserDoesSomething(error) {
5620
5653
  return __awaiter$1(this, void 0, void 0, function () {
5621
- return __generator$1(this, function (_e) {
5622
- switch (_e.label) {
5654
+ return __generator$1(this, function (_j) {
5655
+ switch (_j.label) {
5623
5656
  case 0:
5624
5657
  console.error("WebSocket observable: error but revive when user does some active thing...", error);
5625
5658
  // Sleep some seconds...
5626
5659
  return [4 /*yield*/, sleep(3000)];
5627
5660
  case 1:
5628
5661
  // Sleep some seconds...
5629
- _e.sent();
5662
+ _j.sent();
5630
5663
  // Wait til user does something (move mouse, tap, scroll, click etc)
5631
5664
  console.debug('waiting for someone to do something');
5632
5665
  return [4 /*yield*/, userDoesSomething.pipe(take(1)).toPromise()];
5633
5666
  case 2:
5634
- _e.sent();
5667
+ _j.sent();
5635
5668
  console.debug('someone did something!');
5636
5669
  return [2 /*return*/];
5637
5670
  }
@@ -5639,8 +5672,8 @@ function waitAndReconnectWhenUserDoesSomething(error) {
5639
5672
  });
5640
5673
  }
5641
5674
  function connectWebSocket(db) {
5642
- var _e;
5643
- if (!((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl)) {
5675
+ var _a;
5676
+ if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl)) {
5644
5677
  throw new Error("No database URL to connect WebSocket to");
5645
5678
  }
5646
5679
  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
@@ -5655,21 +5688,21 @@ function connectWebSocket(db) {
5655
5688
  var _this_1 = this;
5656
5689
  return db.cloud.persistedSyncState.pipe(filter(function (syncState) { return syncState === null || syncState === void 0 ? void 0 : syncState.serverRevision; }), // Don't connect before there's no initial sync performed.
5657
5690
  take(1), // Don't continue waking up whenever syncState change
5658
- switchMap(function (syncState) { return db.cloud.currentUser.pipe(map(function (userLogin) { return [userLogin, syncState]; })); }), switchMap(function (_e) {
5659
- var userLogin = _e[0], syncState = _e[1];
5691
+ switchMap(function (syncState) { return db.cloud.currentUser.pipe(map(function (userLogin) { return [userLogin, syncState]; })); }), switchMap(function (_j) {
5692
+ var userLogin = _j[0], syncState = _j[1];
5660
5693
  return userIsReallyActive.pipe(map(function (isActive) { return [isActive ? userLogin : null, syncState]; }));
5661
- }), switchMap(function (_e) {
5662
- var userLogin = _e[0], syncState = _e[1];
5663
- return __awaiter$1(_this_1, void 0, void 0, function () { var _f; return __generator$1(this, function (_g) {
5664
- switch (_g.label) {
5694
+ }), switchMap(function (_j) {
5695
+ var userLogin = _j[0], syncState = _j[1];
5696
+ return __awaiter$1(_this_1, void 0, void 0, function () { var _j; return __generator$1(this, function (_k) {
5697
+ switch (_k.label) {
5665
5698
  case 0:
5666
- _f = [userLogin];
5699
+ _j = [userLogin];
5667
5700
  return [4 /*yield*/, computeRealmSetHash(syncState)];
5668
- case 1: return [2 /*return*/, _f.concat([_g.sent()])];
5701
+ case 1: return [2 /*return*/, _j.concat([_k.sent()])];
5669
5702
  }
5670
5703
  }); });
5671
- }), switchMap(function (_e) {
5672
- var userLogin = _e[0], realmSetHash = _e[1];
5704
+ }), switchMap(function (_j) {
5705
+ var userLogin = _j[0], realmSetHash = _j[1];
5673
5706
  // Let server end query changes from last entry of same client-ID and forward.
5674
5707
  // If no new entries, server won't bother the client. If new entries, server sends only those
5675
5708
  // and the baseRev of the last from same client-ID.
@@ -5681,14 +5714,14 @@ function connectWebSocket(db) {
5681
5714
  console.debug('WebSocket observable: Token expired. Refreshing token...');
5682
5715
  return of(true).pipe(switchMap(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5683
5716
  var user, refreshedLogin;
5684
- return __generator$1(this, function (_e) {
5685
- switch (_e.label) {
5717
+ return __generator$1(this, function (_j) {
5718
+ switch (_j.label) {
5686
5719
  case 0: return [4 /*yield*/, db.getCurrentUser()];
5687
5720
  case 1:
5688
- user = _e.sent();
5721
+ user = _j.sent();
5689
5722
  return [4 /*yield*/, refreshAccessToken(db.cloud.options.databaseUrl, user)];
5690
5723
  case 2:
5691
- refreshedLogin = _e.sent();
5724
+ refreshedLogin = _j.sent();
5692
5725
  // Persist updated access token
5693
5726
  return [4 /*yield*/, db.table('$logins').update(user.userId, {
5694
5727
  accessToken: refreshedLogin.accessToken,
@@ -5696,7 +5729,7 @@ function connectWebSocket(db) {
5696
5729
  })];
5697
5730
  case 3:
5698
5731
  // Persist updated access token
5699
- _e.sent();
5732
+ _j.sent();
5700
5733
  return [2 /*return*/];
5701
5734
  }
5702
5735
  });
@@ -5722,21 +5755,21 @@ function connectWebSocket(db) {
5722
5755
  });
5723
5756
  }
5724
5757
  function isSyncNeeded(db) {
5725
- var _e;
5758
+ var _a;
5726
5759
  return __awaiter$1(this, void 0, void 0, function () {
5727
- var _f;
5728
- return __generator$1(this, function (_g) {
5729
- switch (_g.label) {
5760
+ var _j;
5761
+ return __generator$1(this, function (_k) {
5762
+ switch (_k.label) {
5730
5763
  case 0:
5731
- if (!(((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) && db.cloud.schema)) return [3 /*break*/, 2];
5764
+ if (!(((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.databaseUrl) && db.cloud.schema)) return [3 /*break*/, 2];
5732
5765
  return [4 /*yield*/, sync(db, db.cloud.options, db.cloud.schema, { justCheckIfNeeded: true })];
5733
5766
  case 1:
5734
- _f = _g.sent();
5767
+ _j = _k.sent();
5735
5768
  return [3 /*break*/, 3];
5736
5769
  case 2:
5737
- _f = false;
5738
- _g.label = 3;
5739
- case 3: return [2 /*return*/, _f];
5770
+ _j = false;
5771
+ _k.label = 3;
5772
+ case 3: return [2 /*return*/, _j];
5740
5773
  }
5741
5774
  });
5742
5775
  });
@@ -5746,22 +5779,22 @@ var MINUTES = 60 * SECONDS;
5746
5779
  var myId = randomString(16);
5747
5780
  var GUARDED_JOB_HEARTBEAT = 1 * SECONDS;
5748
5781
  var GUARDED_JOB_TIMEOUT = 1 * MINUTES;
5749
- function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5750
- var _f = _e === void 0 ? {} : _e, awaitRemoteJob = _f.awaitRemoteJob;
5782
+ function performGuardedJob(db, jobName, jobsTableName, job, _j) {
5783
+ var _k = _j === void 0 ? {} : _j, awaitRemoteJob = _k.awaitRemoteJob;
5751
5784
  return __awaiter$1(this, void 0, void 0, function () {
5752
5785
  function aquireLock() {
5753
5786
  return __awaiter$1(this, void 0, void 0, function () {
5754
5787
  var gotTheLock, jobDoneObservable, err_1;
5755
5788
  var _this_1 = this;
5756
- return __generator$1(this, function (_e) {
5757
- switch (_e.label) {
5789
+ return __generator$1(this, function (_j) {
5790
+ switch (_j.label) {
5758
5791
  case 0: return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5759
5792
  var currentWork;
5760
- return __generator$1(this, function (_e) {
5761
- switch (_e.label) {
5793
+ return __generator$1(this, function (_j) {
5794
+ switch (_j.label) {
5762
5795
  case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5763
5796
  case 1:
5764
- currentWork = _e.sent();
5797
+ currentWork = _j.sent();
5765
5798
  if (!!currentWork) return [3 /*break*/, 3];
5766
5799
  // No one else is working. Let's record that we are.
5767
5800
  return [4 /*yield*/, jobsTable.add({
@@ -5771,7 +5804,7 @@ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5771
5804
  }, jobName)];
5772
5805
  case 2:
5773
5806
  // No one else is working. Let's record that we are.
5774
- _e.sent();
5807
+ _j.sent();
5775
5808
  return [2 /*return*/, true];
5776
5809
  case 3:
5777
5810
  if (!(currentWork.heartbeat.getTime() <
@@ -5785,27 +5818,27 @@ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5785
5818
  }, jobName)];
5786
5819
  case 4:
5787
5820
  // Now, take over!
5788
- _e.sent();
5821
+ _j.sent();
5789
5822
  return [2 /*return*/, true];
5790
5823
  case 5: return [2 /*return*/, false];
5791
5824
  }
5792
5825
  });
5793
5826
  }); })];
5794
5827
  case 1:
5795
- gotTheLock = _e.sent();
5828
+ gotTheLock = _j.sent();
5796
5829
  if (gotTheLock)
5797
5830
  return [2 /*return*/, true];
5798
5831
  if (!awaitRemoteJob) return [3 /*break*/, 6];
5799
- _e.label = 2;
5832
+ _j.label = 2;
5800
5833
  case 2:
5801
- _e.trys.push([2, 4, , 6]);
5834
+ _j.trys.push([2, 4, , 6]);
5802
5835
  jobDoneObservable = from$1(liveQuery(function () { return jobsTable.get(jobName); })).pipe(timeout(GUARDED_JOB_TIMEOUT), filter(function (job) { return !job; }));
5803
5836
  return [4 /*yield*/, jobDoneObservable.toPromise()];
5804
5837
  case 3:
5805
- _e.sent();
5838
+ _j.sent();
5806
5839
  return [2 /*return*/, false];
5807
5840
  case 4:
5808
- err_1 = _e.sent();
5841
+ err_1 = _j.sent();
5809
5842
  if (err_1.name !== 'TimeoutError') {
5810
5843
  throw err_1;
5811
5844
  }
@@ -5814,7 +5847,7 @@ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5814
5847
  // Timeout stopped us! Try aquire the lock now.
5815
5848
  // It will likely succeed this time unless
5816
5849
  // another client took it.
5817
- return [2 /*return*/, _e.sent()];
5850
+ return [2 /*return*/, _j.sent()];
5818
5851
  case 6: return [2 /*return*/, false];
5819
5852
  }
5820
5853
  });
@@ -5822,13 +5855,13 @@ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5822
5855
  }
5823
5856
  var jobsTable, heartbeat;
5824
5857
  var _this_1 = this;
5825
- return __generator$1(this, function (_g) {
5826
- switch (_g.label) {
5858
+ return __generator$1(this, function (_j) {
5859
+ switch (_j.label) {
5827
5860
  case 0:
5828
5861
  jobsTable = db.table(jobsTableName);
5829
5862
  return [4 /*yield*/, aquireLock()];
5830
5863
  case 1:
5831
- if (!_g.sent()) return [3 /*break*/, 6];
5864
+ if (!_j.sent()) return [3 /*break*/, 6];
5832
5865
  heartbeat = setInterval(function () {
5833
5866
  jobsTable.update(jobName, function (job) {
5834
5867
  if (job.nodeId === myId) {
@@ -5836,34 +5869,34 @@ function performGuardedJob(db, jobName, jobsTableName, job, _e) {
5836
5869
  }
5837
5870
  });
5838
5871
  }, GUARDED_JOB_HEARTBEAT);
5839
- _g.label = 2;
5872
+ _j.label = 2;
5840
5873
  case 2:
5841
- _g.trys.push([2, , 4, 6]);
5874
+ _j.trys.push([2, , 4, 6]);
5842
5875
  return [4 /*yield*/, job()];
5843
- case 3: return [2 /*return*/, _g.sent()];
5876
+ case 3: return [2 /*return*/, _j.sent()];
5844
5877
  case 4:
5845
5878
  // Stop heartbeat
5846
5879
  clearInterval(heartbeat);
5847
5880
  // Remove the persisted job state:
5848
5881
  return [4 /*yield*/, db.transaction('rw!', jobsTableName, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
5849
5882
  var currentWork;
5850
- return __generator$1(this, function (_e) {
5851
- switch (_e.label) {
5883
+ return __generator$1(this, function (_j) {
5884
+ switch (_j.label) {
5852
5885
  case 0: return [4 /*yield*/, jobsTable.get(jobName)];
5853
5886
  case 1:
5854
- currentWork = _e.sent();
5887
+ currentWork = _j.sent();
5855
5888
  if (!(currentWork && currentWork.nodeId === myId)) return [3 /*break*/, 3];
5856
5889
  return [4 /*yield*/, jobsTable.delete(jobName)];
5857
5890
  case 2:
5858
- _e.sent();
5859
- _e.label = 3;
5891
+ _j.sent();
5892
+ _j.label = 3;
5860
5893
  case 3: return [2 /*return*/];
5861
5894
  }
5862
5895
  });
5863
5896
  }); })];
5864
5897
  case 5:
5865
5898
  // Remove the persisted job state:
5866
- _g.sent();
5899
+ _j.sent();
5867
5900
  return [7 /*endfinally*/];
5868
5901
  case 6: return [2 /*return*/];
5869
5902
  }
@@ -5921,16 +5954,16 @@ function syncIfPossible(db, cloudOptions, cloudSchema, options) {
5921
5954
  function _syncIfPossible() {
5922
5955
  return __awaiter$1(this, void 0, void 0, function () {
5923
5956
  var error_4;
5924
- return __generator$1(this, function (_e) {
5925
- switch (_e.label) {
5957
+ return __generator$1(this, function (_j) {
5958
+ switch (_j.label) {
5926
5959
  case 0:
5927
- _e.trys.push([0, 6, , 7]);
5960
+ _j.trys.push([0, 6, , 7]);
5928
5961
  if (!db.cloud.usingServiceWorker) return [3 /*break*/, 3];
5929
5962
  if (!IS_SERVICE_WORKER) return [3 /*break*/, 2];
5930
5963
  return [4 /*yield*/, sync(db, cloudOptions, cloudSchema, options)];
5931
5964
  case 1:
5932
- _e.sent();
5933
- _e.label = 2;
5965
+ _j.sent();
5966
+ _j.label = 2;
5934
5967
  case 2: return [3 /*break*/, 5];
5935
5968
  case 3:
5936
5969
  // We use a flow that is better suited for the case when multiple workers want to
@@ -5939,14 +5972,14 @@ function syncIfPossible(db, cloudOptions, cloudSchema, options) {
5939
5972
  case 4:
5940
5973
  // We use a flow that is better suited for the case when multiple workers want to
5941
5974
  // do the same thing.
5942
- _e.sent();
5943
- _e.label = 5;
5975
+ _j.sent();
5976
+ _j.label = 5;
5944
5977
  case 5:
5945
5978
  ongoingSyncs.delete(db);
5946
5979
  console.debug('Done sync');
5947
5980
  return [3 /*break*/, 7];
5948
5981
  case 6:
5949
- error_4 = _e.sent();
5982
+ error_4 = _j.sent();
5950
5983
  ongoingSyncs.delete(db);
5951
5984
  console.error("Failed to sync client changes", error_4);
5952
5985
  throw error_4; // Make sure we rethrow error so that sync event is retried.
@@ -5988,8 +6021,8 @@ function LocalSyncWorker(db, cloudOptions, cloudSchema) {
5988
6021
  // Sync eagerly whenever a change has happened (+ initially when there's no syncState yet)
5989
6022
  // This initial subscribe will also trigger an sync also now.
5990
6023
  console.debug('Starting LocalSyncWorker', db.localSyncEvent['id']);
5991
- localSyncEventSubscription = db.localSyncEvent.subscribe(function (_e) {
5992
- var purpose = _e.purpose;
6024
+ localSyncEventSubscription = db.localSyncEvent.subscribe(function (_j) {
6025
+ var purpose = _j.purpose;
5993
6026
  try {
5994
6027
  syncAndRetry(purpose || 'pull');
5995
6028
  }
@@ -6013,8 +6046,8 @@ function LocalSyncWorker(db, cloudOptions, cloudSchema) {
6013
6046
  function updateSchemaFromOptions(schema, options) {
6014
6047
  if (schema && options) {
6015
6048
  if (options.unsyncedTables) {
6016
- for (var _e = 0, _f = options.unsyncedTables; _e < _f.length; _e++) {
6017
- var tableName = _f[_e];
6049
+ for (var _j = 0, _k = options.unsyncedTables; _j < _k.length; _j++) {
6050
+ var tableName = _k[_j];
6018
6051
  if (schema[tableName]) {
6019
6052
  schema[tableName].markedForSync = false;
6020
6053
  }
@@ -6023,10 +6056,10 @@ function updateSchemaFromOptions(schema, options) {
6023
6056
  }
6024
6057
  }
6025
6058
  function verifySchema(db) {
6026
- var _e, _f;
6027
- for (var _g = 0, _h = db.tables; _g < _h.length; _g++) {
6028
- var table = _h[_g];
6029
- if ((_f = (_e = db.cloud.schema) === null || _e === void 0 ? void 0 : _e[table.name]) === null || _f === void 0 ? void 0 : _f.markedForSync) {
6059
+ var _a, _b;
6060
+ for (var _j = 0, _k = db.tables; _j < _k.length; _j++) {
6061
+ var table = _k[_j];
6062
+ if ((_b = (_a = db.cloud.schema) === null || _a === void 0 ? void 0 : _a[table.name]) === null || _b === void 0 ? void 0 : _b.markedForSync) {
6030
6063
  if (table.schema.primKey.auto) {
6031
6064
  throw new Dexie.SchemaError("Table ".concat(table.name, " is both autoIncremented and synced. ") +
6032
6065
  "Use db.cloud.configure({unsyncedTables: [".concat(JSON.stringify(table.name), "]}) to blacklist it from sync"));
@@ -6268,8 +6301,8 @@ var Styles = {
6268
6301
  padding: "8px"
6269
6302
  }
6270
6303
  };
6271
- function Dialog(_e) {
6272
- var children = _e.children;
6304
+ function Dialog(_j) {
6305
+ var children = _j.children;
6273
6306
  return (a$1("div", null, a$1("div", { style: Styles.Darken }), a$1("div", { style: Styles.DialogOuter }, a$1("div", { style: Styles.DialogInner }, children))));
6274
6307
  }
6275
6308
  var t, u, r, o = 0, i = [], c = n.__b, f = n.__r, e = n.diffed, a = n.__c, v = n.unmount;
@@ -6303,24 +6336,24 @@ function g(n) { var t = u; "function" == typeof n.__c && n.__c(), u = t; }
6303
6336
  function j(n) { var t = u; n.__c = n.__(), u = t; }
6304
6337
  function k(n, t) { return !n || n.length !== t.length || t.some(function (t, u) { return t !== n[u]; }); }
6305
6338
  function w(n, t) { return "function" == typeof t ? t(n) : t; }
6306
- function resolveText(_e) {
6307
- var message = _e.message; _e.messageCode; var messageParams = _e.messageParams;
6339
+ function resolveText(_j) {
6340
+ var message = _j.message; _j.messageCode; var messageParams = _j.messageParams;
6308
6341
  return message.replace(/\{\w+\}/ig, function (n) { return messageParams[n.substr(1, n.length - 2)]; });
6309
6342
  }
6310
- function LoginDialog(_e) {
6311
- var title = _e.title, alerts = _e.alerts, fields = _e.fields, onCancel = _e.onCancel, onSubmit = _e.onSubmit;
6312
- var _f = l({}), params = _f[0], setParams = _f[1];
6343
+ function LoginDialog(_j) {
6344
+ var title = _j.title, alerts = _j.alerts, fields = _j.fields, onCancel = _j.onCancel, onSubmit = _j.onSubmit;
6345
+ var _k = l({}), params = _k[0], setParams = _k[1];
6313
6346
  var firstFieldRef = s();
6314
- h(function () { var _e; return (_e = firstFieldRef.current) === null || _e === void 0 ? void 0 : _e.focus(); }, []);
6347
+ h(function () { var _a; return (_a = firstFieldRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []);
6315
6348
  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) {
6316
6349
  ev.preventDefault();
6317
6350
  onSubmit(params);
6318
- } }, Object.entries(fields).map(function (_e, idx) {
6319
- var fieldName = _e[0], _f = _e[1], type = _f.type, label = _f.label, placeholder = _f.placeholder;
6351
+ } }, Object.entries(fields).map(function (_j, idx) {
6352
+ var fieldName = _j[0], _k = _j[1], type = _k.type, label = _k.label, placeholder = _k.placeholder;
6320
6353
  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) {
6321
- var _e;
6322
- var _f;
6323
- return setParams(__assign(__assign({}, params), (_e = {}, _e[fieldName] = valueTransformer(type, (_f = ev.target) === null || _f === void 0 ? void 0 : _f['value']), _e)));
6354
+ var _j;
6355
+ var _a;
6356
+ return setParams(Object.assign(Object.assign({}, params), (_j = {}, _j[fieldName] = valueTransformer(type, (_a = ev.target) === null || _a === void 0 ? void 0 : _a['value']), _j)));
6324
6357
  } })));
6325
6358
  }))), 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"))));
6326
6359
  }
@@ -6348,12 +6381,12 @@ var LoginGui = /** @class */ (function (_super_1) {
6348
6381
  delete this.subscription;
6349
6382
  }
6350
6383
  };
6351
- LoginGui.prototype.render = function (props, _e) {
6352
- var userInteraction = _e.userInteraction;
6384
+ LoginGui.prototype.render = function (props, _j) {
6385
+ var userInteraction = _j.userInteraction;
6353
6386
  if (!userInteraction)
6354
6387
  return null;
6355
6388
  //if (props.db.cloud.userInteraction.observers.length > 1) return null; // Someone else subscribes.
6356
- return a$1(LoginDialog, __assign({}, userInteraction));
6389
+ return a$1(LoginDialog, Object.assign({}, userInteraction));
6357
6390
  };
6358
6391
  return LoginGui;
6359
6392
  }(p$1));
@@ -6404,8 +6437,8 @@ function computeSyncState(db) {
6404
6437
  lazyWebSocketStatus,
6405
6438
  db.syncStateChangedEvent.pipe(startWith({ phase: 'initial' })),
6406
6439
  userIsReallyActive
6407
- ]).pipe(map(function (_e) {
6408
- var status = _e[0], syncState = _e[1], userIsActive = _e[2];
6440
+ ]).pipe(map(function (_j) {
6441
+ var status = _j[0], syncState = _j[1], userIsActive = _j[2];
6409
6442
  var phase = syncState.phase, error = syncState.error, progress = syncState.progress;
6410
6443
  var adjustedStatus = status;
6411
6444
  if (phase === 'error') {
@@ -6484,10 +6517,10 @@ var getGlobalRolesObservable = associate(function (db) {
6484
6517
  .toArray()
6485
6518
  .then(function (roles) {
6486
6519
  var rv = {};
6487
- for (var _e = 0, _f = roles
6520
+ for (var _j = 0, _k = roles
6488
6521
  .slice()
6489
- .sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); _e < _f.length; _e++) {
6490
- var role = _f[_e];
6522
+ .sort(function (a, b) { return (a.sortOrder || 0) - (b.sortOrder || 0); }); _j < _k.length; _j++) {
6523
+ var role = _k[_j];
6491
6524
  rv[role.name] = role;
6492
6525
  }
6493
6526
  return rv;
@@ -6499,8 +6532,8 @@ var getInternalAccessControlObservable = associate(function (db) {
6499
6532
  db.members.where({ userId: currentUser.userId }).toArray(),
6500
6533
  db.realms.toArray(),
6501
6534
  currentUser.userId,
6502
- ]).then(function (_e) {
6503
- var selfMembers = _e[0], realms = _e[1], userId = _e[2];
6535
+ ]).then(function (_j) {
6536
+ var selfMembers = _j[0], realms = _j[1], userId = _j[2];
6504
6537
  //console.debug(`PERMS: Result from liveQUery():`, JSON.stringify({selfMembers, realms, userId}, null, 2))
6505
6538
  return { selfMembers: selfMembers, realms: realms, userId: userId };
6506
6539
  }); }); }); })), {
@@ -6533,15 +6566,15 @@ function mapValueObservable(o, mapper) {
6533
6566
  // TODO: Move to dexie-cloud-common
6534
6567
  function mergePermissions() {
6535
6568
  var permissions = [];
6536
- for (var _e = 0; _e < arguments.length; _e++) {
6537
- permissions[_e] = arguments[_e];
6569
+ for (var _j = 0; _j < arguments.length; _j++) {
6570
+ permissions[_j] = arguments[_j];
6538
6571
  }
6539
6572
  if (permissions.length === 0)
6540
6573
  return {};
6541
6574
  var reduced = permissions.reduce(function (result, next) {
6542
- var ret = __assign({}, result);
6543
- for (var _e = 0, _f = Object.entries(next); _e < _f.length; _e++) {
6544
- var _g = _f[_e], verb = _g[0], rights = _g[1];
6575
+ var ret = Object.assign({}, result);
6576
+ for (var _j = 0, _k = Object.entries(next); _j < _k.length; _j++) {
6577
+ var _l = _k[_j], verb = _l[0], rights = _l[1];
6545
6578
  if (verb in ret && ret[verb]) {
6546
6579
  if (ret[verb] === '*')
6547
6580
  continue;
@@ -6559,8 +6592,8 @@ function mergePermissions() {
6559
6592
  typeof ret[verb] === 'object') {
6560
6593
  // Both are objects (verb is 'update')
6561
6594
  var mergedRights = ret[verb]; // because we've checked that typeof ret[verb] === 'object' and earlier that not ret[verb] === '*'.
6562
- for (var _h = 0, _j = Object.entries(rights); _h < _j.length; _h++) {
6563
- var _k = _j[_h], tableName = _k[0], tableRights = _k[1];
6595
+ for (var _m = 0, _o = Object.entries(rights); _m < _o.length; _m++) {
6596
+ var _p = _o[_m], tableName = _p[0], tableRights = _p[1];
6564
6597
  if (mergedRights[tableName] === '*')
6565
6598
  continue;
6566
6599
  if (tableRights === '*') {
@@ -6598,8 +6631,8 @@ var getPermissionsLookupObservable = associate(function (db) {
6598
6631
  var o = createSharedValueObservable(combineLatest([
6599
6632
  getInternalAccessControlObservable(db._novip),
6600
6633
  getGlobalRolesObservable(db._novip),
6601
- ]).pipe(map(function (_e) {
6602
- var _f = _e[0], selfMembers = _f.selfMembers, realms = _f.realms, userId = _f.userId, globalRoles = _e[1];
6634
+ ]).pipe(map(function (_j) {
6635
+ var _k = _j[0], selfMembers = _k.selfMembers, realms = _k.realms, userId = _k.userId, globalRoles = _j[1];
6603
6636
  return ({
6604
6637
  selfMembers: selfMembers,
6605
6638
  realms: realms,
@@ -6612,9 +6645,9 @@ var getPermissionsLookupObservable = associate(function (db) {
6612
6645
  userId: UNAUTHORIZED_USER.userId,
6613
6646
  globalRoles: {},
6614
6647
  });
6615
- return mapValueObservable(o, function (_e) {
6616
- var _f;
6617
- var selfMembers = _e.selfMembers, realms = _e.realms, userId = _e.userId, globalRoles = _e.globalRoles;
6648
+ return mapValueObservable(o, function (_j) {
6649
+ var _k;
6650
+ var selfMembers = _j.selfMembers, realms = _j.realms, userId = _j.userId, globalRoles = _j.globalRoles;
6618
6651
  var rv = realms
6619
6652
  .map(function (realm) {
6620
6653
  var selfRealmMembers = selfMembers.filter(function (m) { return m.realmId === realm.realmId; });
@@ -6625,21 +6658,21 @@ var getPermissionsLookupObservable = associate(function (db) {
6625
6658
  .map(function (role) { return globalRoles[role]; })
6626
6659
  .filter(function (role) { return role; })
6627
6660
  .map(function (role) { return role.permissions; });
6628
- return __assign(__assign({}, realm), { permissions: realm.owner === userId
6661
+ return Object.assign(Object.assign({}, realm), { permissions: realm.owner === userId
6629
6662
  ? { manage: '*' }
6630
6663
  : mergePermissions.apply(void 0, __spreadArray$1(__spreadArray$1([], directPermissionSets, false), rolePermissionSets, false)) });
6631
6664
  })
6632
6665
  .reduce(function (p, c) {
6633
- var _e;
6634
- return (__assign(__assign({}, p), (_e = {}, _e[c.realmId] = c, _e)));
6635
- }, (_f = {},
6636
- _f[userId] = {
6666
+ var _j;
6667
+ return (Object.assign(Object.assign({}, p), (_j = {}, _j[c.realmId] = c, _j)));
6668
+ }, (_k = {},
6669
+ _k[userId] = {
6637
6670
  realmId: userId,
6638
6671
  owner: userId,
6639
6672
  name: userId,
6640
6673
  permissions: { manage: '*' },
6641
6674
  },
6642
- _f));
6675
+ _k));
6643
6676
  return rv;
6644
6677
  });
6645
6678
  });
@@ -6651,44 +6684,44 @@ var PermissionChecker = /** @class */ (function () {
6651
6684
  }
6652
6685
  PermissionChecker.prototype.add = function () {
6653
6686
  var _this_1 = this;
6654
- var _e;
6655
6687
  var tableNames = [];
6656
- for (var _f = 0; _f < arguments.length; _f++) {
6657
- tableNames[_f] = arguments[_f];
6688
+ for (var _j = 0; _j < arguments.length; _j++) {
6689
+ tableNames[_j] = arguments[_j];
6658
6690
  }
6691
+ var _a;
6659
6692
  // If user can manage the whole realm, return true.
6660
6693
  if (this.permissions.manage === '*')
6661
6694
  return true;
6662
6695
  // If user can manage given table in realm, return true
6663
- if ((_e = this.permissions.manage) === null || _e === void 0 ? void 0 : _e.includes(this.tableName))
6696
+ if ((_a = this.permissions.manage) === null || _a === void 0 ? void 0 : _a.includes(this.tableName))
6664
6697
  return true;
6665
6698
  // If user can add any type, return true
6666
6699
  if (this.permissions.add === '*')
6667
6700
  return true;
6668
6701
  // If user can add objects into given table names in the realm, return true
6669
- if (tableNames.every(function (tableName) { var _e; return (_e = _this_1.permissions.add) === null || _e === void 0 ? void 0 : _e.includes(tableName); })) {
6702
+ if (tableNames.every(function (tableName) { var _a; return (_a = _this_1.permissions.add) === null || _a === void 0 ? void 0 : _a.includes(tableName); })) {
6670
6703
  return true;
6671
6704
  }
6672
6705
  return false;
6673
6706
  };
6674
6707
  PermissionChecker.prototype.update = function () {
6675
- var _e, _f;
6676
6708
  var props = [];
6677
- for (var _g = 0; _g < arguments.length; _g++) {
6678
- props[_g] = arguments[_g];
6709
+ for (var _j = 0; _j < arguments.length; _j++) {
6710
+ props[_j] = arguments[_j];
6679
6711
  }
6712
+ var _a, _b;
6680
6713
  // If user is owner of this object, or if user can manage the whole realm, return true.
6681
6714
  if (this.isOwner || this.permissions.manage === '*')
6682
6715
  return true;
6683
6716
  // If user can manage given table in realm, return true
6684
- if ((_e = this.permissions.manage) === null || _e === void 0 ? void 0 : _e.includes(this.tableName))
6717
+ if ((_a = this.permissions.manage) === null || _a === void 0 ? void 0 : _a.includes(this.tableName))
6685
6718
  return true;
6686
6719
  // If user can update any prop in any table in this realm, return true unless
6687
6720
  // it regards to ownership change:
6688
6721
  if (this.permissions.update === '*') {
6689
6722
  return props.every(function (prop) { return prop !== 'owner'; });
6690
6723
  }
6691
- var tablePermissions = (_f = this.permissions.update) === null || _f === void 0 ? void 0 : _f[this.tableName];
6724
+ var tablePermissions = (_b = this.permissions.update) === null || _b === void 0 ? void 0 : _b[this.tableName];
6692
6725
  // If user can update any prop in table and realm, return true unless
6693
6726
  // accessing special props owner or realmId
6694
6727
  if (tablePermissions === '*')
@@ -6697,12 +6730,12 @@ var PermissionChecker = /** @class */ (function () {
6697
6730
  return props.every(function (prop) { return tablePermissions === null || tablePermissions === void 0 ? void 0 : tablePermissions.some(function (permittedProp) { return permittedProp === prop || (permittedProp === '*' && prop !== 'owner'); }); });
6698
6731
  };
6699
6732
  PermissionChecker.prototype.delete = function () {
6700
- var _e;
6733
+ var _a;
6701
6734
  // If user is owner of this object, or if user can manage the whole realm, return true.
6702
6735
  if (this.isOwner || this.permissions.manage === '*')
6703
6736
  return true;
6704
6737
  // If user can manage given table in realm, return true
6705
- if ((_e = this.permissions.manage) === null || _e === void 0 ? void 0 : _e.includes(this.tableName))
6738
+ if ((_a = this.permissions.manage) === null || _a === void 0 ? void 0 : _a.includes(this.tableName))
6706
6739
  return true;
6707
6740
  return false;
6708
6741
  };
@@ -6736,11 +6769,11 @@ var getInvitesObservable = associate(function (db) {
6736
6769
  var membersByEmail = getCurrentUserEmitter(db._novip).pipe(switchMap$1(function (currentUser) { return liveQuery(function () { return db.members.where({ email: currentUser.email || '' }).toArray(); }); }));
6737
6770
  var permissions = getPermissionsLookupObservable(db._novip);
6738
6771
  var accessControl = getInternalAccessControlObservable(db._novip);
6739
- return createSharedValueObservable(combineLatest([membersByEmail, accessControl, permissions]).pipe(map$1(function (_e) {
6740
- var membersByEmail = _e[0], accessControl = _e[1], realmLookup = _e[2];
6772
+ return createSharedValueObservable(combineLatest([membersByEmail, accessControl, permissions]).pipe(map$1(function (_j) {
6773
+ var membersByEmail = _j[0], accessControl = _j[1], realmLookup = _j[2];
6741
6774
  var reducer = function (result, m) {
6742
- var _e;
6743
- return (__assign(__assign({}, result), (_e = {}, _e[m.id] = __assign(__assign({}, m), { realm: realmLookup[m.realmId] }), _e)));
6775
+ var _j;
6776
+ return (Object.assign(Object.assign({}, result), (_j = {}, _j[m.id] = Object.assign(Object.assign({}, m), { realm: realmLookup[m.realmId] }), _j)));
6744
6777
  };
6745
6778
  var emailMembersById = membersByEmail.reduce(reducer, {});
6746
6779
  var membersById = accessControl.selfMembers.reduce(reducer, emailMembersById);
@@ -6769,16 +6802,16 @@ function dexieCloud(dexie) {
6769
6802
  var localSyncWorker = null;
6770
6803
  dexie.on('ready', function (dexie) { return __awaiter$1(_this_1, void 0, void 0, function () {
6771
6804
  var error_5;
6772
- return __generator$1(this, function (_e) {
6773
- switch (_e.label) {
6805
+ return __generator$1(this, function (_j) {
6806
+ switch (_j.label) {
6774
6807
  case 0:
6775
- _e.trys.push([0, 2, , 3]);
6808
+ _j.trys.push([0, 2, , 3]);
6776
6809
  return [4 /*yield*/, onDbReady(dexie)];
6777
6810
  case 1:
6778
- _e.sent();
6811
+ _j.sent();
6779
6812
  return [3 /*break*/, 3];
6780
6813
  case 2:
6781
- error_5 = _e.sent();
6814
+ error_5 = _j.sent();
6782
6815
  console.error(error_5);
6783
6816
  return [3 /*break*/, 3];
6784
6817
  case 3: return [2 /*return*/];
@@ -6800,8 +6833,8 @@ function dexieCloud(dexie) {
6800
6833
  currentUserEmitter.next(UNAUTHORIZED_USER);
6801
6834
  });
6802
6835
  dexie.cloud = {
6803
- version: '4.0.0-beta.17',
6804
- options: __assign({}, DEFAULT_OPTIONS),
6836
+ version: '4.0.0-beta.18',
6837
+ options: Object.assign({}, DEFAULT_OPTIONS),
6805
6838
  schema: null,
6806
6839
  serverState: null,
6807
6840
  get currentUserId() {
@@ -6818,16 +6851,16 @@ function dexieCloud(dexie) {
6818
6851
  login: function (hint) {
6819
6852
  return __awaiter$1(this, void 0, void 0, function () {
6820
6853
  var db;
6821
- return __generator$1(this, function (_e) {
6822
- switch (_e.label) {
6854
+ return __generator$1(this, function (_j) {
6855
+ switch (_j.label) {
6823
6856
  case 0:
6824
6857
  db = DexieCloudDB(dexie);
6825
6858
  return [4 /*yield*/, db.cloud.sync()];
6826
6859
  case 1:
6827
- _e.sent();
6860
+ _j.sent();
6828
6861
  return [4 /*yield*/, login(db, hint)];
6829
6862
  case 2:
6830
- _e.sent();
6863
+ _j.sent();
6831
6864
  return [2 /*return*/];
6832
6865
  }
6833
6866
  });
@@ -6836,7 +6869,7 @@ function dexieCloud(dexie) {
6836
6869
  invites: getInvitesObservable(dexie),
6837
6870
  roles: getGlobalRolesObservable(dexie),
6838
6871
  configure: function (options) {
6839
- options = dexie.cloud.options = __assign(__assign({}, dexie.cloud.options), options);
6872
+ options = dexie.cloud.options = Object.assign(Object.assign({}, dexie.cloud.options), options);
6840
6873
  configuredProgramatically = true;
6841
6874
  if (options.databaseUrl && options.nameSuffix) {
6842
6875
  // @ts-ignore
@@ -6845,13 +6878,13 @@ function dexieCloud(dexie) {
6845
6878
  }
6846
6879
  updateSchemaFromOptions(dexie.cloud.schema, dexie.cloud.options);
6847
6880
  },
6848
- sync: function (_e) {
6849
- var _f = _e === void 0 ? { wait: true, purpose: 'push' } : _e, wait = _f.wait, purpose = _f.purpose;
6881
+ sync: function (_j) {
6882
+ var _k = _j === void 0 ? { wait: true, purpose: 'push' } : _j, wait = _k.wait, purpose = _k.purpose;
6850
6883
  return __awaiter$1(this, void 0, void 0, function () {
6851
6884
  var db, syncState_1, newSyncState, syncState_2;
6852
6885
  var _this_1 = this;
6853
- return __generator$1(this, function (_g) {
6854
- switch (_g.label) {
6886
+ return __generator$1(this, function (_j) {
6887
+ switch (_j.label) {
6855
6888
  case 0:
6856
6889
  if (wait === undefined)
6857
6890
  wait = true;
@@ -6865,29 +6898,29 @@ function dexieCloud(dexie) {
6865
6898
  (!syncState_1 || newSyncState.timestamp > syncState_1.timestamp); }), take(1))
6866
6899
  .toPromise()];
6867
6900
  case 1:
6868
- newSyncState = _g.sent();
6901
+ newSyncState = _j.sent();
6869
6902
  if (newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.error) {
6870
6903
  throw new Error("Sync error: " + newSyncState.error);
6871
6904
  }
6872
- _g.label = 2;
6905
+ _j.label = 2;
6873
6906
  case 2: return [3 /*break*/, 6];
6874
6907
  case 3: return [4 /*yield*/, isSyncNeeded(db)];
6875
6908
  case 4:
6876
- if (!_g.sent()) return [3 /*break*/, 6];
6909
+ if (!_j.sent()) return [3 /*break*/, 6];
6877
6910
  syncState_2 = db.cloud.persistedSyncState.value;
6878
6911
  triggerSync(db, purpose);
6879
6912
  if (!wait) return [3 /*break*/, 6];
6880
6913
  console.debug('db.cloud.login() is waiting for sync completion...');
6881
6914
  return [4 /*yield*/, from$1(liveQuery(function () { return __awaiter$1(_this_1, void 0, void 0, function () {
6882
6915
  var syncNeeded, newSyncState;
6883
- return __generator$1(this, function (_e) {
6884
- switch (_e.label) {
6916
+ return __generator$1(this, function (_j) {
6917
+ switch (_j.label) {
6885
6918
  case 0: return [4 /*yield*/, isSyncNeeded(db)];
6886
6919
  case 1:
6887
- syncNeeded = _e.sent();
6920
+ syncNeeded = _j.sent();
6888
6921
  return [4 /*yield*/, db.getPersistedSyncState()];
6889
6922
  case 2:
6890
- newSyncState = _e.sent();
6923
+ newSyncState = _j.sent();
6891
6924
  if ((newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.timestamp) !== (syncState_2 === null || syncState_2 === void 0 ? void 0 : syncState_2.timestamp) &&
6892
6925
  (newSyncState === null || newSyncState === void 0 ? void 0 : newSyncState.error))
6893
6926
  throw new Error("Sync error: " + newSyncState.error);
@@ -6898,9 +6931,9 @@ function dexieCloud(dexie) {
6898
6931
  .pipe(filter(function (isNeeded) { return !isNeeded; }), take(1))
6899
6932
  .toPromise()];
6900
6933
  case 5:
6901
- _g.sent();
6934
+ _j.sent();
6902
6935
  console.debug('Done waiting for sync completion because we have nothing to push anymore');
6903
- _g.label = 6;
6936
+ _j.label = 6;
6904
6937
  case 6: return [2 /*return*/];
6905
6938
  }
6906
6939
  });
@@ -6911,14 +6944,14 @@ function dexieCloud(dexie) {
6911
6944
  },
6912
6945
  };
6913
6946
  dexie.Version.prototype['_parseStoresSpec'] = Dexie.override(dexie.Version.prototype['_parseStoresSpec'], function (origFunc) { return overrideParseStoresSpec(origFunc, dexie); });
6914
- dexie.Table.prototype.newId = function (_e) {
6915
- var _f = _e === void 0 ? {} : _e, colocateWith = _f.colocateWith;
6947
+ dexie.Table.prototype.newId = function (_j) {
6948
+ var _k = _j === void 0 ? {} : _j, colocateWith = _k.colocateWith;
6916
6949
  var shardKey = colocateWith && colocateWith.substr(colocateWith.length - 3);
6917
6950
  return generateKey(dexie.cloud.schema[this.name].idPrefix || '', shardKey);
6918
6951
  };
6919
6952
  dexie.Table.prototype.idPrefix = function () {
6920
- var _e, _f;
6921
- return ((_f = (_e = this.db.cloud.schema) === null || _e === void 0 ? void 0 : _e[this.name]) === null || _f === void 0 ? void 0 : _f.idPrefix) || '';
6953
+ var _a, _b;
6954
+ return ((_b = (_a = this.db.cloud.schema) === null || _a === void 0 ? void 0 : _a[this.name]) === null || _b === void 0 ? void 0 : _b.idPrefix) || '';
6922
6955
  };
6923
6956
  dexie.use(createMutationTrackingMiddleware({
6924
6957
  currentUserObservable: dexie.cloud.currentUser,
@@ -6927,18 +6960,18 @@ function dexieCloud(dexie) {
6927
6960
  dexie.use(createImplicitPropSetterMiddleware(DexieCloudDB(dexie)));
6928
6961
  dexie.use(createIdGenerationMiddleware(DexieCloudDB(dexie)));
6929
6962
  function onDbReady(dexie) {
6930
- var _e, _f, _g, _h, _j, _k;
6963
+ var _a, _b, _c, _d, _e, _f;
6931
6964
  return __awaiter$1(this, void 0, void 0, function () {
6932
- var db, swRegistrations, _l, initiallySynced;
6965
+ var db, swRegistrations, _j, initiallySynced;
6933
6966
  var _this_1 = this;
6934
- return __generator$1(this, function (_m) {
6935
- switch (_m.label) {
6967
+ return __generator$1(this, function (_k) {
6968
+ switch (_k.label) {
6936
6969
  case 0:
6937
6970
  closed = false; // As Dexie calls us, we are not closed anymore. Maybe reopened? Remember db.ready event is registered with sticky flag!
6938
6971
  db = DexieCloudDB(dexie);
6939
6972
  // Setup default GUI:
6940
6973
  if (!IS_SERVICE_WORKER) {
6941
- if (!((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.customLoginGui)) {
6974
+ if (!((_a = db.cloud.options) === null || _a === void 0 ? void 0 : _a.customLoginGui)) {
6942
6975
  subscriptions.push(setupDefaultGUI(dexie));
6943
6976
  }
6944
6977
  subscriptions.push(computeSyncState(db).subscribe(dexie.cloud.syncState));
@@ -6951,27 +6984,26 @@ function dexieCloud(dexie) {
6951
6984
  if (!('serviceWorker' in navigator)) return [3 /*break*/, 2];
6952
6985
  return [4 /*yield*/, navigator.serviceWorker.getRegistrations()];
6953
6986
  case 1:
6954
- _l = _m.sent();
6987
+ _j = _k.sent();
6955
6988
  return [3 /*break*/, 3];
6956
6989
  case 2:
6957
- _l = [];
6958
- _m.label = 3;
6990
+ _j = [];
6991
+ _k.label = 3;
6959
6992
  case 3:
6960
- swRegistrations = _l;
6993
+ swRegistrations = _j;
6961
6994
  return [4 /*yield*/, db.transaction('rw', db.$syncState, function () { return __awaiter$1(_this_1, void 0, void 0, function () {
6962
- var _e, options, schema, _f, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _g, _h, _j, table, tblSchema, newTblSchema;
6963
- var _k, _l;
6964
- return __generator$1(this, function (_m) {
6965
- switch (_m.label) {
6995
+ var _g, _h, _j, options, schema, _k, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _l, _m, _o, table, tblSchema, newTblSchema;
6996
+ return __generator$1(this, function (_p) {
6997
+ switch (_p.label) {
6966
6998
  case 0:
6967
- _e = db.cloud, options = _e.options, schema = _e.schema;
6999
+ _j = db.cloud, options = _j.options, schema = _j.schema;
6968
7000
  return [4 /*yield*/, Promise.all([
6969
7001
  db.getOptions(),
6970
7002
  db.getSchema(),
6971
7003
  db.getPersistedSyncState(),
6972
7004
  ])];
6973
7005
  case 1:
6974
- _f = _m.sent(), persistedOptions = _f[0], persistedSchema = _f[1], persistedSyncState = _f[2];
7006
+ _k = _p.sent(), persistedOptions = _k[0], persistedSchema = _k[1], persistedSyncState = _k[2];
6975
7007
  if (!!configuredProgramatically) return [3 /*break*/, 2];
6976
7008
  // Options not specified programatically (use case for SW!)
6977
7009
  // Take persisted options:
@@ -6985,10 +7017,10 @@ function dexieCloud(dexie) {
6985
7017
  throw new Error("Internal error"); // options cannot be null if configuredProgramatically is set.
6986
7018
  return [4 /*yield*/, db.$syncState.put(options, 'options')];
6987
7019
  case 3:
6988
- _m.sent();
6989
- _m.label = 4;
7020
+ _p.sent();
7021
+ _p.label = 4;
6990
7022
  case 4:
6991
- if (((_k = db.cloud.options) === null || _k === void 0 ? void 0 : _k.tryUseServiceWorker) &&
7023
+ if (((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.tryUseServiceWorker) &&
6992
7024
  'serviceWorker' in navigator &&
6993
7025
  swRegistrations.length > 0 &&
6994
7026
  !DISABLE_SERVICEWORKER_STRATEGY) {
@@ -7002,7 +7034,7 @@ function dexieCloud(dexie) {
7002
7034
  // Not configured for using service worker or no service worker
7003
7035
  // registration exists. Don't rely on service worker to do any job.
7004
7036
  // Use LocalSyncWorker instead.
7005
- if (((_l = db.cloud.options) === null || _l === void 0 ? void 0 : _l.tryUseServiceWorker) && !IS_SERVICE_WORKER) {
7037
+ if (((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.tryUseServiceWorker) && !IS_SERVICE_WORKER) {
7006
7038
  console.debug('dexie-cloud-addon: Not using service worker.', swRegistrations.length === 0
7007
7039
  ? 'No SW registrations found.'
7008
7040
  : 'serviceWorker' in navigator && DISABLE_SERVICEWORKER_STRATEGY
@@ -7022,11 +7054,11 @@ function dexieCloud(dexie) {
7022
7054
  if (!(!persistedSchema ||
7023
7055
  JSON.stringify(persistedSchema) !== JSON.stringify(schema))) return [3 /*break*/, 7];
7024
7056
  newPersistedSchema = persistedSchema || {};
7025
- for (_g = 0, _h = Object.entries(schema); _g < _h.length; _g++) {
7026
- _j = _h[_g], table = _j[0], tblSchema = _j[1];
7057
+ for (_l = 0, _m = Object.entries(schema); _l < _m.length; _l++) {
7058
+ _o = _m[_l], table = _o[0], tblSchema = _o[1];
7027
7059
  newTblSchema = newPersistedSchema[table];
7028
7060
  if (!newTblSchema) {
7029
- newPersistedSchema[table] = __assign({}, tblSchema);
7061
+ newPersistedSchema[table] = Object.assign({}, tblSchema);
7030
7062
  }
7031
7063
  else {
7032
7064
  newTblSchema.markedForSync = tblSchema.markedForSync;
@@ -7036,27 +7068,27 @@ function dexieCloud(dexie) {
7036
7068
  }
7037
7069
  return [4 /*yield*/, db.$syncState.put(newPersistedSchema, 'schema')];
7038
7070
  case 6:
7039
- _m.sent();
7071
+ _p.sent();
7040
7072
  // Make sure persisted table prefixes are being used instead of computed ones:
7041
7073
  // Let's assign all props as the newPersistedSchems should be what we should be working with.
7042
7074
  Object.assign(schema, newPersistedSchema);
7043
- _m.label = 7;
7075
+ _p.label = 7;
7044
7076
  case 7: return [2 /*return*/, persistedSyncState === null || persistedSyncState === void 0 ? void 0 : persistedSyncState.initiallySynced];
7045
7077
  }
7046
7078
  });
7047
7079
  }); })];
7048
7080
  case 4:
7049
- initiallySynced = _m.sent();
7081
+ initiallySynced = _k.sent();
7050
7082
  if (initiallySynced) {
7051
7083
  db.setInitiallySynced(true);
7052
7084
  }
7053
7085
  verifySchema(db);
7054
- if (!(((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl) && !initiallySynced)) return [3 /*break*/, 6];
7086
+ if (!(((_b = db.cloud.options) === null || _b === void 0 ? void 0 : _b.databaseUrl) && !initiallySynced)) return [3 /*break*/, 6];
7055
7087
  return [4 /*yield*/, performInitialSync(db, db.cloud.options, db.cloud.schema)];
7056
7088
  case 5:
7057
- _m.sent();
7089
+ _k.sent();
7058
7090
  db.setInitiallySynced(true);
7059
- _m.label = 6;
7091
+ _k.label = 6;
7060
7092
  case 6:
7061
7093
  // Manage CurrentUser observable:
7062
7094
  throwIfClosed();
@@ -7077,24 +7109,24 @@ function dexieCloud(dexie) {
7077
7109
  // with things from the database and not just the default values.
7078
7110
  // This is so that when db.open() completes, user should be safe
7079
7111
  // to subscribe to these observables and get actual data.
7080
- _m.sent();
7081
- _m.label = 8;
7112
+ _k.sent();
7113
+ _k.label = 8;
7082
7114
  case 8:
7083
- if (!((_g = db.cloud.options) === null || _g === void 0 ? void 0 : _g.requireAuth)) return [3 /*break*/, 10];
7115
+ if (!((_c = db.cloud.options) === null || _c === void 0 ? void 0 : _c.requireAuth)) return [3 /*break*/, 10];
7084
7116
  return [4 /*yield*/, login(db)];
7085
7117
  case 9:
7086
- _m.sent();
7087
- _m.label = 10;
7118
+ _k.sent();
7119
+ _k.label = 10;
7088
7120
  case 10:
7089
7121
  if (localSyncWorker)
7090
7122
  localSyncWorker.stop();
7091
7123
  localSyncWorker = null;
7092
7124
  throwIfClosed();
7093
- if (db.cloud.usingServiceWorker && ((_h = db.cloud.options) === null || _h === void 0 ? void 0 : _h.databaseUrl)) {
7125
+ if (db.cloud.usingServiceWorker && ((_d = db.cloud.options) === null || _d === void 0 ? void 0 : _d.databaseUrl)) {
7094
7126
  registerSyncEvent(db, 'push').catch(function () { });
7095
7127
  registerPeriodicSyncEvent(db).catch(function () { });
7096
7128
  }
7097
- else if (((_j = db.cloud.options) === null || _j === void 0 ? void 0 : _j.databaseUrl) &&
7129
+ else if (((_e = db.cloud.options) === null || _e === void 0 ? void 0 : _e.databaseUrl) &&
7098
7130
  db.cloud.schema &&
7099
7131
  !IS_SERVICE_WORKER) {
7100
7132
  // There's no SW. Start SyncWorker instead.
@@ -7121,7 +7153,7 @@ function dexieCloud(dexie) {
7121
7153
  // Connect WebSocket only if we're a browser window
7122
7154
  if (typeof window !== 'undefined' &&
7123
7155
  !IS_SERVICE_WORKER &&
7124
- ((_k = db.cloud.options) === null || _k === void 0 ? void 0 : _k.databaseUrl)) {
7156
+ ((_f = db.cloud.options) === null || _f === void 0 ? void 0 : _f.databaseUrl)) {
7125
7157
  subscriptions.push(connectWebSocket(db));
7126
7158
  }
7127
7159
  return [2 /*return*/];
@@ -7130,7 +7162,7 @@ function dexieCloud(dexie) {
7130
7162
  });
7131
7163
  }
7132
7164
  }
7133
- dexieCloud.version = '4.0.0-beta.17';
7165
+ dexieCloud.version = '4.0.0-beta.18';
7134
7166
  Dexie.Cloud = dexieCloud;
7135
7167
 
7136
7168
  export { dexieCloud as default, dexieCloud, getTiedObjectId, getTiedRealmId };