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.
- package/dist/modern/dexie-cloud-addon.js +38 -26
- package/dist/modern/dexie-cloud-addon.js.map +1 -1
- package/dist/modern/dexie-cloud-addon.min.js +1 -1
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/service-worker.js +37 -25
- package/dist/modern/service-worker.js.map +1 -1
- package/dist/modern/service-worker.min.js +1 -1
- package/dist/modern/service-worker.min.js.map +1 -1
- package/dist/module-es5/dexie-cloud-addon.js +38 -26
- package/dist/module-es5/dexie-cloud-addon.js.map +1 -1
- package/dist/module-es5/dexie-cloud-addon.min.js +1 -1
- package/dist/module-es5/dexie-cloud-addon.min.js.map +1 -1
- package/dist/types/DexieCloudTable.d.ts +18 -2
- package/dist/types/extend-dexie-interface.d.ts +5 -3
- package/dist/types/sync/getTablesToSyncify.d.ts +1 -1
- package/dist/umd/dexie-cloud-addon.js +37 -25
- package/dist/umd/dexie-cloud-addon.js.map +1 -1
- package/dist/umd/dexie-cloud-addon.min.js +1 -1
- package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/service-worker.js +36 -24
- package/dist/umd/service-worker.js.map +1 -1
- package/dist/umd/service-worker.min.js +1 -1
- package/dist/umd/service-worker.min.js.map +1 -1
- package/dist/umd-modern/dexie-cloud-addon.js +34 -22
- package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
- package/package.json +3 -3
- package/dist/types/DexieCloudEntity.d.ts +0 -8
- package/dist/types/DexieCloudServerState.d.ts +0 -5
- package/dist/types/WebSocketStatus.d.ts +0 -1
- package/dist/types/createMyMembersObservable.d.ts +0 -14
- package/dist/types/currentUserObservable.d.ts +0 -3
- package/dist/types/helpers/BroadcastedLocalEvent.d.ts +0 -8
- package/dist/types/helpers/visibleState.d.ts +0 -1
- package/dist/types/permissionsLookup.d.ts +0 -9
- package/dist/types/permissionsLookupObservable.d.ts +0 -14
- package/dist/types/sync/globalizePrivateIds.d.ts +0 -4
- package/dist/types/sync/syncServerToClientOnly.d.ts +0 -3
- package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
- package/dist/types/types/ConnectionStatus.d.ts +0 -0
- package/dist/types/types/LoginState.d.ts +0 -41
- package/dist/types/types/SyncConnectionStatus.d.ts +0 -1
- package/dist/types/types/SyncFlowStatus.d.ts +0 -6
- package/dist/types/types/SyncStatus.d.ts +0 -6
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
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'
|
|
8
|
-
members: Table<DBRealmMember,
|
|
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,
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
:
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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.
|
|
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.
|
|
7255
|
+
dexieCloud.version = '4.0.1-beta.26';
|
|
7244
7256
|
Dexie__default["default"].Cloud = dexieCloud;
|
|
7245
7257
|
|
|
7246
7258
|
exports["default"] = dexieCloud;
|