dexie-cloud-addon 4.0.0-beta.23 → 4.0.1-beta.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/modern/dexie-cloud-addon.js +38 -26
  2. package/dist/modern/dexie-cloud-addon.js.map +1 -1
  3. package/dist/modern/dexie-cloud-addon.min.js +1 -1
  4. package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
  5. package/dist/modern/service-worker.js +37 -25
  6. package/dist/modern/service-worker.js.map +1 -1
  7. package/dist/modern/service-worker.min.js +1 -1
  8. package/dist/modern/service-worker.min.js.map +1 -1
  9. package/dist/module-es5/dexie-cloud-addon.js +38 -26
  10. package/dist/module-es5/dexie-cloud-addon.js.map +1 -1
  11. package/dist/module-es5/dexie-cloud-addon.min.js +1 -1
  12. package/dist/module-es5/dexie-cloud-addon.min.js.map +1 -1
  13. package/dist/types/DexieCloudTable.d.ts +18 -2
  14. package/dist/types/extend-dexie-interface.d.ts +5 -3
  15. package/dist/types/sync/getTablesToSyncify.d.ts +1 -1
  16. package/dist/umd/dexie-cloud-addon.js +37 -25
  17. package/dist/umd/dexie-cloud-addon.js.map +1 -1
  18. package/dist/umd/dexie-cloud-addon.min.js +1 -1
  19. package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
  20. package/dist/umd/service-worker.js +36 -24
  21. package/dist/umd/service-worker.js.map +1 -1
  22. package/dist/umd/service-worker.min.js +1 -1
  23. package/dist/umd/service-worker.min.js.map +1 -1
  24. package/dist/umd-modern/dexie-cloud-addon.js +34 -22
  25. package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
  26. package/package.json +3 -3
  27. package/dist/types/DexieCloudEntity.d.ts +0 -8
  28. package/dist/types/DexieCloudServerState.d.ts +0 -5
  29. package/dist/types/WebSocketStatus.d.ts +0 -1
  30. package/dist/types/createMyMembersObservable.d.ts +0 -14
  31. package/dist/types/currentUserObservable.d.ts +0 -3
  32. package/dist/types/helpers/BroadcastedLocalEvent.d.ts +0 -8
  33. package/dist/types/helpers/visibleState.d.ts +0 -1
  34. package/dist/types/permissionsLookup.d.ts +0 -9
  35. package/dist/types/permissionsLookupObservable.d.ts +0 -14
  36. package/dist/types/sync/globalizePrivateIds.d.ts +0 -4
  37. package/dist/types/sync/syncServerToClientOnly.d.ts +0 -3
  38. package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
  39. package/dist/types/types/ConnectionStatus.d.ts +0 -0
  40. package/dist/types/types/LoginState.d.ts +0 -41
  41. package/dist/types/types/SyncConnectionStatus.d.ts +0 -1
  42. package/dist/types/types/SyncFlowStatus.d.ts +0 -6
  43. package/dist/types/types/SyncStatus.d.ts +0 -6
@@ -1,2 +1,18 @@
1
- import { Table } from 'dexie';
2
- export declare type DexieCloudTable<T = any, TKey = string> = Table<T, TKey, 'realmId' | 'owner'>;
1
+ import { EntityTable, InsertType } from 'dexie';
2
+ export interface DexieCloudEntity {
3
+ owner: string;
4
+ realmId: string;
5
+ }
6
+ /** Don't force the declaration of owner and realmId on every entity (some
7
+ * types may not be interested of these props if they are never going to be shared)
8
+ * Let the type system behave the same as the runtime and merge these props in automatically
9
+ * when declaring the table where the props aren't explicitely declared.
10
+ * User may also explicitely declare these props in order to manually set them when
11
+ * they are interested of taking control over access.
12
+ */
13
+ declare type WithDexieCloudProps<T> = T extends DexieCloudEntity ? T : T & DexieCloudEntity;
14
+ /** Syntactic sugar for declaring a synced table of arbritary entity.
15
+ *
16
+ */
17
+ export declare type DexieCloudTable<T = any, TKeyPropName extends keyof T = never> = EntityTable<WithDexieCloudProps<T>, TKeyPropName, InsertType<WithDexieCloudProps<T>, TKeyPropName | 'owner' | 'realmId'>>;
18
+ export {};
@@ -1,12 +1,13 @@
1
1
  import { DBRealm, DBRealmMember, DBRealmRole } from 'dexie-cloud-common';
2
2
  import { DexieCloudAPI } from './DexieCloudAPI';
3
3
  import { NewIdOptions } from './types/NewIdOptions';
4
+ declare type Optional<T, Props extends keyof T> = Omit<T, Props> & Partial<T>;
4
5
  declare module 'dexie' {
5
6
  interface Dexie {
6
7
  cloud: DexieCloudAPI;
7
- realms: Table<DBRealm, 'realmId', 'owner'>;
8
- members: Table<DBRealmMember, 'id', 'realmId' | 'owner'>;
9
- roles: Table<DBRealmRole, [string, string], 'owner'>;
8
+ realms: Table<DBRealm, string, Optional<DBRealm, 'realmId' | 'owner'>>;
9
+ members: Table<DBRealmMember, string, Optional<DBRealmMember, 'id' | 'owner'>>;
10
+ roles: Table<DBRealmRole, [string, string], Optional<DBRealmRole, 'owner'>>;
10
11
  }
11
12
  interface Table {
12
13
  newId(options: NewIdOptions): string;
@@ -19,3 +20,4 @@ declare module 'dexie' {
19
20
  };
20
21
  }
21
22
  }
23
+ export {};
@@ -1,3 +1,3 @@
1
1
  import { DexieCloudDB } from "../db/DexieCloudDB";
2
2
  import { PersistedSyncState } from "../db/entities/PersistedSyncState";
3
- export declare function getTablesToSyncify(db: DexieCloudDB, syncState: PersistedSyncState | undefined): import("dexie").Table<import("../db/entities/EntityCommon").EntityCommon, import("dexie").IndexableType, void>[];
3
+ export declare function getTablesToSyncify(db: DexieCloudDB, syncState: PersistedSyncState | undefined): import("dexie").Table<import("../db/entities/EntityCommon").EntityCommon, import("dexie").IndexableType, import("../db/entities/EntityCommon").EntityCommon>[];
@@ -108,7 +108,7 @@
108
108
  *
109
109
  * ==========================================================================
110
110
  *
111
- * Version 4.0.0-beta.23, Mon Oct 17 2022
111
+ * Version 4.0.1-beta.26, Tue Jan 17 2023
112
112
  *
113
113
  * https://dexie.org
114
114
  *
@@ -313,7 +313,7 @@
313
313
  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
314
314
  }
315
315
  //@ts-check
316
- var randomFillSync = crypto.getRandomValues;
316
+ var randomFillSync = crypto.getRandomValues.bind(crypto);
317
317
  function assert(b) {
318
318
  if (!b)
319
319
  throw new Error('Assertion Failed');
@@ -374,17 +374,17 @@
374
374
  }
375
375
  }
376
376
  }
377
- var randomString$1 = typeof Buffer !== 'undefined' ? function (bytes) {
378
- // Node
379
- var buf = Buffer.alloc(bytes);
380
- randomFillSync(buf);
381
- return buf.toString("base64");
382
- } : function (bytes) {
377
+ var randomString$1 = typeof self !== 'undefined' && typeof crypto !== 'undefined' ? function (bytes) {
383
378
  // Web
384
379
  var buf = new Uint8Array(bytes);
385
380
  crypto.getRandomValues(buf);
386
381
  return btoa(String.fromCharCode.apply(null, buf));
387
- };
382
+ } : typeof Buffer !== 'undefined' ? function (bytes) {
383
+ // Node
384
+ var buf = Buffer.alloc(bytes);
385
+ randomFillSync(buf);
386
+ return buf.toString("base64");
387
+ } : function () { throw new Error("No implementation of randomString was found"); };
388
388
  /** Verifies that given primary key is valid.
389
389
  * The reason we narrow validity for valid keys are twofold:
390
390
  * 1: Make sure to only support types that can be used as an object index in DBKeyMutationSet.
@@ -3591,7 +3591,7 @@
3591
3591
  // serverRev.rev = bigIntDef.bigint.revive(server.rev)
3592
3592
  // else
3593
3593
  // serverRev.rev = new FakeBigInt(server.rev)
3594
- var hasBigIntSupport = typeof BigInt(0) === 'bigint';
3594
+ var hasBigIntSupport = typeof BigInt === 'function' && typeof BigInt(0) === 'bigint';
3595
3595
  var FakeBigInt = /** @class */ (function () {
3596
3596
  function FakeBigInt(value) {
3597
3597
  this.v = value;
@@ -5052,7 +5052,7 @@
5052
5052
  // modify operations. Reason: Server may not have
5053
5053
  // the object. Object should be created on server only
5054
5054
  // if is being updated. An update operation won't create it
5055
- // so we must delete req.changeSpec to decrate operation to
5055
+ // so we must delete req.changeSpec to degrade operation to
5056
5056
  // an upsert operation with timestamp so that it will be created.
5057
5057
  // We must also degrade from consistent modify operations for the
5058
5058
  // same reason - object might be there on server. Must but put up instead.
@@ -5064,7 +5064,7 @@
5064
5064
  if (req.type === 'put') {
5065
5065
  delete req.criteria;
5066
5066
  delete req.changeSpec;
5067
- delete req.changeSpecs;
5067
+ delete req.updates;
5068
5068
  obj.$ts = Date.now();
5069
5069
  }
5070
5070
  }
@@ -5266,11 +5266,10 @@
5266
5266
  var hasFailures = res.numFailures, failures = res.failures;
5267
5267
  var keys = type === 'delete' ? req.keys : res.results;
5268
5268
  var values = 'values' in req ? req.values : [];
5269
- var changeSpecs = 'changeSpecs' in req ? req.changeSpecs : [];
5269
+ var updates = 'updates' in req && req.updates;
5270
5270
  if (hasFailures) {
5271
5271
  keys = keys.filter(function (_, idx) { return !failures[idx]; });
5272
5272
  values = values.filter(function (_, idx) { return !failures[idx]; });
5273
- changeSpecs = changeSpecs.filter(function (_, idx) { return !failures[idx]; });
5274
5273
  }
5275
5274
  var ts = Date.now();
5276
5275
  var mut = req.type === 'delete'
@@ -5302,13 +5301,13 @@
5302
5301
  txid: txid,
5303
5302
  userId: userId
5304
5303
  }
5305
- : req.changeSpecs
5304
+ : updates
5306
5305
  ? {
5307
5306
  // One changeSpec per key
5308
5307
  type: 'update',
5309
5308
  ts: ts,
5310
- keys: keys,
5311
- changeSpecs: changeSpecs,
5309
+ keys: updates.keys,
5310
+ changeSpecs: updates.changeSpecs,
5312
5311
  txid: txid,
5313
5312
  userId: userId
5314
5313
  }
@@ -6443,13 +6442,26 @@
6443
6442
  return LoginGui;
6444
6443
  }(d$1));
6445
6444
  function setupDefaultGUI(db) {
6446
- var el = document.createElement('div');
6447
- document.body.appendChild(el);
6448
- P(h(LoginGui, { db: db.vip }), el);
6449
6445
  var closed = false;
6446
+ var el = document.createElement('div');
6447
+ if (document.body) {
6448
+ document.body.appendChild(el);
6449
+ P(h(LoginGui, { db: db.vip }), el);
6450
+ }
6451
+ else {
6452
+ addEventListener('DOMContentLoaded', function () {
6453
+ if (!closed) {
6454
+ document.body.appendChild(el);
6455
+ P(h(LoginGui, { db: db.vip }), el);
6456
+ }
6457
+ });
6458
+ }
6450
6459
  return {
6451
6460
  unsubscribe: function () {
6452
- el.remove();
6461
+ try {
6462
+ el.remove();
6463
+ }
6464
+ catch (_a) { }
6453
6465
  closed = true;
6454
6466
  },
6455
6467
  get closed() {
@@ -6818,10 +6830,10 @@
6818
6830
  return o;
6819
6831
  }
6820
6832
  var getInvitesObservable = associate(function (db) {
6821
- var membersByEmail = getCurrentUserEmitter(db._novip).pipe(rxjs.switchMap(function (currentUser) { return Dexie.liveQuery(function () { return db.members.where({ email: currentUser.email || '' }).toArray(); }); }));
6833
+ var membersByEmail = getCurrentUserEmitter(db._novip).pipe(switchMap(function (currentUser) { return Dexie.liveQuery(function () { return db.members.where({ email: currentUser.email || '' }).toArray(); }); }));
6822
6834
  var permissions = getPermissionsLookupObservable(db._novip);
6823
6835
  var accessControl = getInternalAccessControlObservable(db._novip);
6824
- return createSharedValueObservable(rxjs.combineLatest([membersByEmail, accessControl, permissions]).pipe(rxjs.map(function (_k) {
6836
+ return createSharedValueObservable(rxjs.combineLatest([membersByEmail, accessControl, permissions]).pipe(map(function (_k) {
6825
6837
  var membersByEmail = _k[0], accessControl = _k[1], realmLookup = _k[2];
6826
6838
  var reducer = function (result, m) {
6827
6839
  var _k;
@@ -6909,7 +6921,7 @@
6909
6921
  currentUserEmitter.next(UNAUTHORIZED_USER);
6910
6922
  });
6911
6923
  dexie.cloud = {
6912
- version: '4.0.0-beta.23',
6924
+ version: '4.0.1-beta.26',
6913
6925
  options: Object.assign({}, DEFAULT_OPTIONS),
6914
6926
  schema: null,
6915
6927
  get currentUserId() {
@@ -7240,7 +7252,7 @@
7240
7252
  });
7241
7253
  }
7242
7254
  }
7243
- dexieCloud.version = '4.0.0-beta.23';
7255
+ dexieCloud.version = '4.0.1-beta.26';
7244
7256
  Dexie__default["default"].Cloud = dexieCloud;
7245
7257
 
7246
7258
  exports["default"] = dexieCloud;