dexie-cloud-addon 4.0.1-beta.26 → 4.0.1-beta.28
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 +24 -8
- package/dist/modern/dexie-cloud-addon.js.map +1 -1
- package/dist/modern/dexie-cloud-addon.min.js +2 -1
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/service-worker.js +23 -7
- package/dist/modern/service-worker.js.map +1 -1
- package/dist/modern/service-worker.min.js +2 -1
- package/dist/modern/service-worker.min.js.map +1 -1
- package/dist/module-es5/dexie-cloud-addon.js +23 -6
- package/dist/module-es5/dexie-cloud-addon.js.map +1 -1
- package/dist/module-es5/dexie-cloud-addon.min.js +2 -1
- package/dist/module-es5/dexie-cloud-addon.min.js.map +1 -1
- package/dist/types/DXCWebSocketStatus.d.ts +1 -1
- package/dist/types/DexieCloudEntity.d.ts +8 -0
- package/dist/types/DexieCloudServerState.d.ts +5 -0
- package/dist/types/DexieCloudTable.d.ts +2 -2
- package/dist/types/PermissionChecker.d.ts +1 -1
- package/dist/types/TSON.d.ts +1 -1
- package/dist/types/WSObservable.d.ts +2 -2
- package/dist/types/WebSocketStatus.d.ts +1 -0
- package/dist/types/authentication/authenticate.d.ts +1 -1
- package/dist/types/createMyMembersObservable.d.ts +14 -0
- package/dist/types/currentUserObservable.d.ts +3 -0
- package/dist/types/db/DexieCloudDB.d.ts +1 -1
- package/dist/types/extend-dexie-interface.d.ts +1 -1
- package/dist/types/getInternalAccessControlObservable.d.ts +1 -1
- package/dist/types/getPermissionsLookupObservable.d.ts +2 -2
- package/dist/types/helpers/BroadcastedLocalEvent.d.ts +8 -0
- package/dist/types/helpers/visibleState.d.ts +1 -0
- package/dist/types/permissionsLookup.d.ts +9 -0
- package/dist/types/permissionsLookupObservable.d.ts +14 -0
- package/dist/types/sync/globalizePrivateIds.d.ts +4 -0
- package/dist/types/sync/messagesFromServerQueue.d.ts +1 -1
- package/dist/types/sync/syncServerToClientOnly.d.ts +3 -0
- package/dist/types/types/CloudConnectionStatus.d.ts +0 -0
- package/dist/types/types/ConnectionStatus.d.ts +0 -0
- package/dist/types/types/DXCAlert.d.ts +1 -1
- package/dist/types/types/DXCInputField.d.ts +1 -1
- package/dist/types/types/DXCUserInteraction.d.ts +1 -1
- package/dist/types/types/LoginState.d.ts +41 -0
- package/dist/types/types/SWSyncEvent.d.ts +1 -1
- package/dist/types/types/SyncConnectionStatus.d.ts +1 -0
- package/dist/types/types/SyncFlowStatus.d.ts +6 -0
- package/dist/types/types/SyncState.d.ts +2 -2
- package/dist/types/types/SyncStatus.d.ts +6 -0
- package/dist/umd/dexie-cloud-addon.js +23 -6
- 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 +23 -7
- package/dist/umd/service-worker.js.map +1 -1
- package/dist/umd/service-worker.min.js +2 -1
- package/dist/umd/service-worker.min.js.map +1 -1
- package/dist/umd-modern/dexie-cloud-addon.js +21 -5
- package/dist/umd-modern/dexie-cloud-addon.js.map +1 -1
- package/dist/umd-modern/dexie-cloud-addon.min.js +2 -0
- package/dist/umd-modern/dexie-cloud-addon.min.js.map +1 -0
- package/package.json +41 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type DXCWebSocketStatus = "not-started" | "connecting" | "connected" | "disconnected" | "error";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import Dexie, { Entity, IndexableType, OwnClonableProperties, TableProp } from 'dexie';
|
|
2
|
+
export declare class DexieCloudEntity<DexieSubClass extends Dexie = Dexie> extends Entity<DexieSubClass> {
|
|
3
|
+
realmId: string;
|
|
4
|
+
owner: string;
|
|
5
|
+
can(...args: [verb: 'add', table: TableProp<DexieSubClass> | string] | [verb: 'update', ...fields: (keyof OwnClonableProperties<this>)[]] | [verb: 'delete']): boolean;
|
|
6
|
+
$id(): IndexableType;
|
|
7
|
+
isRealm(): boolean;
|
|
8
|
+
}
|
|
@@ -10,9 +10,9 @@ export interface DexieCloudEntity {
|
|
|
10
10
|
* User may also explicitely declare these props in order to manually set them when
|
|
11
11
|
* they are interested of taking control over access.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
type WithDexieCloudProps<T> = T extends DexieCloudEntity ? T : T & DexieCloudEntity;
|
|
14
14
|
/** Syntactic sugar for declaring a synced table of arbritary entity.
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
|
-
export
|
|
17
|
+
export type DexieCloudTable<T = any, TKeyPropName extends keyof T = never> = EntityTable<WithDexieCloudProps<T>, TKeyPropName, InsertType<WithDexieCloudProps<T>, TKeyPropName | 'owner' | 'realmId'>>;
|
|
18
18
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { KeyPaths } from 'dexie';
|
|
2
2
|
import { DBPermissionSet } from 'dexie-cloud-common';
|
|
3
|
-
|
|
3
|
+
type TableName<T> = T extends {
|
|
4
4
|
table: () => infer TABLE;
|
|
5
5
|
} ? TABLE extends string ? TABLE : string : string;
|
|
6
6
|
export declare class PermissionChecker<T, TableNames extends string = TableName<T>> {
|
package/dist/types/TSON.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const hasBigIntSupport: boolean;
|
|
2
|
-
export declare function compareBigInts(a: bigint | FakeBigInt | string, b: bigint | FakeBigInt | string):
|
|
2
|
+
export declare function compareBigInts(a: bigint | FakeBigInt | string, b: bigint | FakeBigInt | string): 0 | 1 | -1;
|
|
3
3
|
export declare class FakeBigInt {
|
|
4
4
|
v: string;
|
|
5
5
|
toString(): string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { DBOperationsSet } from 'dexie-cloud-common';
|
|
2
2
|
import { BehaviorSubject, Observable, Subscriber, Subscription } from 'rxjs';
|
|
3
3
|
import { DXCWebSocketStatus } from './DXCWebSocketStatus';
|
|
4
|
-
export
|
|
4
|
+
export type WSClientToServerMsg = ReadyForChangesMessage;
|
|
5
5
|
export interface ReadyForChangesMessage {
|
|
6
6
|
type: 'ready';
|
|
7
7
|
rev: string;
|
|
8
8
|
}
|
|
9
|
-
export
|
|
9
|
+
export type WSConnectionMsg = RevisionChangedMessage | RealmAddedMessage | RealmAcceptedMessage | RealmRemovedMessage | RealmsChangedMessage | ChangesFromServerMessage | TokenExpiredMessage;
|
|
10
10
|
export interface ChangesFromServerMessage {
|
|
11
11
|
type: 'changes';
|
|
12
12
|
baseRev: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type WebSocketStatus = "not-started" | "connecting" | "connected" | "error" | "asleep";
|
|
@@ -3,7 +3,7 @@ import { BehaviorSubject } from 'rxjs';
|
|
|
3
3
|
import { DexieCloudDB } from '../db/DexieCloudDB';
|
|
4
4
|
import { UserLogin } from '../db/entities/UserLogin';
|
|
5
5
|
import { DXCUserInteraction } from '../types/DXCUserInteraction';
|
|
6
|
-
export
|
|
6
|
+
export type FetchTokenCallback = (tokenParams: {
|
|
7
7
|
public_key: string;
|
|
8
8
|
hints?: {
|
|
9
9
|
userId?: string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import { DBPermissionSet, DBRealm, DBRealmMember } from 'dexie-cloud-common';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { UserLogin } from './db/entities/UserLogin';
|
|
5
|
+
export declare function createMyMembersObservable(db: Dexie, currentUserObservable: Observable<UserLogin>): Observable<{
|
|
6
|
+
invites: Array<DBRealmMember & {
|
|
7
|
+
realm: DBRealm;
|
|
8
|
+
}>;
|
|
9
|
+
permissions: {
|
|
10
|
+
[realmId: string]: DBRealm & {
|
|
11
|
+
permissions: DBPermissionSet;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
@@ -14,7 +14,7 @@ export interface SyncStateChangedEventData {
|
|
|
14
14
|
error?: Error;
|
|
15
15
|
progress?: number;
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
type SyncStateTable = Table<PersistedSyncState | DexieCloudSchema | DexieCloudOptions, 'syncState' | 'options' | 'schema'>;
|
|
18
18
|
export interface DexieCloudDBBase {
|
|
19
19
|
readonly name: Dexie['name'];
|
|
20
20
|
readonly close: Dexie['close'];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DBRealm, DBRealmMember, DBRealmRole } from 'dexie-cloud-common';
|
|
2
2
|
import { DexieCloudAPI } from './DexieCloudAPI';
|
|
3
3
|
import { NewIdOptions } from './types/NewIdOptions';
|
|
4
|
-
|
|
4
|
+
type Optional<T, Props extends keyof T> = Omit<T, Props> & Partial<T>;
|
|
5
5
|
declare module 'dexie' {
|
|
6
6
|
interface Dexie {
|
|
7
7
|
cloud: DexieCloudAPI;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Dexie from 'dexie';
|
|
2
2
|
import { DBRealm, DBRealmMember } from 'dexie-cloud-common';
|
|
3
|
-
export
|
|
3
|
+
export type InternalAccessControlData = {
|
|
4
4
|
readonly selfMembers: DBRealmMember[];
|
|
5
5
|
readonly realms: DBRealm[];
|
|
6
6
|
readonly userId: string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import Dexie from 'dexie';
|
|
2
2
|
import { DBPermissionSet, DBRealm } from 'dexie-cloud-common';
|
|
3
3
|
import { Observable } from 'rxjs';
|
|
4
|
-
export
|
|
4
|
+
export type PermissionsLookup = {
|
|
5
5
|
[realmId: string]: DBRealm & {
|
|
6
6
|
permissions: DBPermissionSet;
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
|
-
export
|
|
9
|
+
export type PermissionsLookupObservable = Observable<PermissionsLookup> & {
|
|
10
10
|
getValue(): PermissionsLookup;
|
|
11
11
|
};
|
|
12
12
|
export declare const getPermissionsLookupObservable: (x: Dexie) => import("./mapValueObservable").ObservableWithCurrentValue<{
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Observable } from "rxjs";
|
|
2
|
+
import { SWBroadcastChannel } from "./SWBroadcastChannel";
|
|
3
|
+
export declare class BroadcastedAndLocalEvent<T> extends Observable<T> {
|
|
4
|
+
name: string;
|
|
5
|
+
bc: BroadcastChannel | SWBroadcastChannel;
|
|
6
|
+
constructor(name: string);
|
|
7
|
+
next(message: T): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getVisibilityStateObservable(): import("rxjs").Observable<VisibilityState>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import { DBPermissionSet, DBRealm } from 'dexie-cloud-common';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
export declare type PermissionsLookupObservable = Observable<{
|
|
5
|
+
[realmId: string]: DBRealm & {
|
|
6
|
+
permissions: DBPermissionSet;
|
|
7
|
+
};
|
|
8
|
+
}>;
|
|
9
|
+
export declare const getPermissionsLookupObservable: (x: Dexie) => PermissionsLookupObservable;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import { DBPermissionSet, DBRealm, DBRealmMember } from 'dexie-cloud-common';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { UserLogin } from './db/entities/UserLogin';
|
|
5
|
+
export declare function createMyMembersObservable(db: Dexie, currentUserObservable: Observable<UserLogin>): Observable<{
|
|
6
|
+
invites: Array<DBRealmMember & {
|
|
7
|
+
realm: DBRealm;
|
|
8
|
+
}>;
|
|
9
|
+
permissions: {
|
|
10
|
+
[realmId: string]: DBRealm & {
|
|
11
|
+
permissions: DBPermissionSet;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DBCoreSchema } from 'dexie';
|
|
2
|
+
import { DBOperationsSet } from 'dexie-cloud-common';
|
|
3
|
+
import { UserLogin } from '../db/entities/UserLogin';
|
|
4
|
+
export declare function encodePrimaryKeys(schema: DBCoreSchema, currentUser: UserLogin, changes: DBOperationsSet): DBOperationsSet;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BehaviorSubject } from 'rxjs';
|
|
2
2
|
import { DexieCloudDB } from '../db/DexieCloudDB';
|
|
3
3
|
import { WSConnectionMsg } from '../WSObservable';
|
|
4
|
-
export
|
|
4
|
+
export type MessagesFromServerConsumer = ReturnType<typeof MessagesFromServerConsumer>;
|
|
5
5
|
export declare function MessagesFromServerConsumer(db: DexieCloudDB): {
|
|
6
6
|
enqueue: (msg: WSConnectionMsg) => void;
|
|
7
7
|
readyToServe: BehaviorSubject<boolean>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DexieCloudDB } from '../db/DexieCloudDB';
|
|
2
|
+
import { ChangesFromServerMessage } from '../WSObservable';
|
|
3
|
+
export declare function syncServerToClientOnly(db: DexieCloudDB, { baseRev, newRev, changes, realmSetHash }: ChangesFromServerMessage): import("rxjs").Observable<void>;
|
|
File without changes
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type DXCAlert = DXCErrorAlert | DXCWarningAlert | DXCInfoAlert;
|
|
2
2
|
export interface DXCErrorAlert {
|
|
3
3
|
type: 'error';
|
|
4
4
|
messageCode: 'INVALID_OTP' | 'INVALID_EMAIL' | 'LICENSE_LIMIT_REACHED' | 'GENERIC_ERROR';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DXCAlert } from './DXCAlert';
|
|
2
2
|
import { DXCInputField } from './DXCInputField';
|
|
3
|
-
export
|
|
3
|
+
export type DXCUserInteraction = DXCGenericUserInteraction | DXCEmailPrompt | DXCOTPPrompt | DXCMessageAlert;
|
|
4
4
|
export interface DXCGenericUserInteraction<Type extends string = "generic", TFields extends {
|
|
5
5
|
[name: string]: DXCInputField;
|
|
6
6
|
} = any> {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare type LoginState = LoginStateSilent | LoginStateInteraction | LoginStateError;
|
|
2
|
+
export interface LoginStateSilent {
|
|
3
|
+
type: 'silent';
|
|
4
|
+
}
|
|
5
|
+
export declare type LoginStateInteraction = (Alert | EmailRequested | OTPRequested) & {
|
|
6
|
+
type: 'interaction';
|
|
7
|
+
alerts?: {
|
|
8
|
+
type: 'error' | 'warning' | 'info';
|
|
9
|
+
message: string;
|
|
10
|
+
}[];
|
|
11
|
+
isWorking?: boolean;
|
|
12
|
+
onSubmit: (params: LoginPromptReply) => void;
|
|
13
|
+
onCancel: () => void;
|
|
14
|
+
};
|
|
15
|
+
export declare type LoginPromptReply = {
|
|
16
|
+
email?: string;
|
|
17
|
+
otp?: string;
|
|
18
|
+
name?: string;
|
|
19
|
+
};
|
|
20
|
+
export interface LoginStateError {
|
|
21
|
+
type: 'error';
|
|
22
|
+
message: string;
|
|
23
|
+
}
|
|
24
|
+
interface Alert {
|
|
25
|
+
interactionType: 'alert';
|
|
26
|
+
alerts: {
|
|
27
|
+
type: 'error' | 'warning' | 'info';
|
|
28
|
+
message: string;
|
|
29
|
+
}[];
|
|
30
|
+
submitText: 'OK';
|
|
31
|
+
}
|
|
32
|
+
interface EmailRequested {
|
|
33
|
+
interactionType: 'emailRequested';
|
|
34
|
+
submitText: 'Send OTP';
|
|
35
|
+
}
|
|
36
|
+
interface OTPRequested {
|
|
37
|
+
interactionType: 'otpRequested';
|
|
38
|
+
isWorking: boolean;
|
|
39
|
+
submitText: 'Login';
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type SyncConnectionStatus = "not-started" | "connecting" | "connected" | "disconnected" | "error" | "offline";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export type SyncStatePhase = "initial" | "not-in-sync" | "pushing" | "pulling" | "in-sync" | 'error' | 'offline';
|
|
2
|
+
export type SyncStatus = "not-started" | "connecting" | "connected" | "disconnected" | "error" | "offline";
|
|
3
3
|
export interface SyncState {
|
|
4
4
|
status: SyncStatus;
|
|
5
5
|
phase: SyncStatePhase;
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
*
|
|
109
109
|
* ==========================================================================
|
|
110
110
|
*
|
|
111
|
-
* Version 4.0.1-beta.
|
|
111
|
+
* Version 4.0.1-beta.28, Mon Mar 06 2023
|
|
112
112
|
*
|
|
113
113
|
* https://dexie.org
|
|
114
114
|
*
|
|
@@ -4787,7 +4787,17 @@
|
|
|
4787
4787
|
return db.$syncState.get('syncState');
|
|
4788
4788
|
},
|
|
4789
4789
|
getSchema: function () {
|
|
4790
|
-
return db.$syncState.get('schema')
|
|
4790
|
+
return db.$syncState.get('schema').then(function (schema) {
|
|
4791
|
+
if (schema) {
|
|
4792
|
+
for (var _k = 0, _l = db.tables; _k < _l.length; _k++) {
|
|
4793
|
+
var table = _l[_k];
|
|
4794
|
+
if (table.schema.primKey && table.schema.primKey.keyPath && schema[table.name]) {
|
|
4795
|
+
schema[table.name].primaryKey = nameFromKeyPath(table.schema.primKey.keyPath);
|
|
4796
|
+
}
|
|
4797
|
+
}
|
|
4798
|
+
}
|
|
4799
|
+
return schema;
|
|
4800
|
+
});
|
|
4791
4801
|
},
|
|
4792
4802
|
getOptions: function () {
|
|
4793
4803
|
return db.$syncState.get('options');
|
|
@@ -4805,6 +4815,11 @@
|
|
|
4805
4815
|
}
|
|
4806
4816
|
return db;
|
|
4807
4817
|
}
|
|
4818
|
+
function nameFromKeyPath(keyPath) {
|
|
4819
|
+
return typeof keyPath === 'string' ?
|
|
4820
|
+
keyPath :
|
|
4821
|
+
keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : "";
|
|
4822
|
+
}
|
|
4808
4823
|
// @ts-ignore
|
|
4809
4824
|
var isFirefox = typeof InstallTrigger !== 'undefined';
|
|
4810
4825
|
var isSafari = typeof navigator !== 'undefined' &&
|
|
@@ -6921,7 +6936,7 @@
|
|
|
6921
6936
|
currentUserEmitter.next(UNAUTHORIZED_USER);
|
|
6922
6937
|
});
|
|
6923
6938
|
dexie.cloud = {
|
|
6924
|
-
version: '4.0.1-beta.
|
|
6939
|
+
version: '4.0.1-beta.28',
|
|
6925
6940
|
options: Object.assign({}, DEFAULT_OPTIONS),
|
|
6926
6941
|
schema: null,
|
|
6927
6942
|
get currentUserId() {
|
|
@@ -7081,7 +7096,7 @@
|
|
|
7081
7096
|
case 3:
|
|
7082
7097
|
swRegistrations = _k;
|
|
7083
7098
|
return [4 /*yield*/, db.transaction('rw', db.$syncState, function () { return __awaiter(_this_1, void 0, void 0, function () {
|
|
7084
|
-
var _h, _j, _k, options, schema, _l, persistedOptions, persistedSchema, persistedSyncState, newPersistedSchema, _m, _o, _p, table, tblSchema, newTblSchema;
|
|
7099
|
+
var _h, _j, _k, options, schema, _l, persistedOptions, persistedSchema, persistedSyncState, newPersistedOptions, newPersistedSchema, _m, _o, _p, table, tblSchema, newTblSchema;
|
|
7085
7100
|
return __generator$1(this, function (_q) {
|
|
7086
7101
|
switch (_q.label) {
|
|
7087
7102
|
case 0:
|
|
@@ -7104,7 +7119,9 @@
|
|
|
7104
7119
|
// Update persisted options:
|
|
7105
7120
|
if (!options)
|
|
7106
7121
|
throw new Error("Internal error"); // options cannot be null if configuredProgramatically is set.
|
|
7107
|
-
|
|
7122
|
+
newPersistedOptions = Object.assign({}, options);
|
|
7123
|
+
delete newPersistedOptions.fetchTokens;
|
|
7124
|
+
return [4 /*yield*/, db.$syncState.put(newPersistedOptions, 'options')];
|
|
7108
7125
|
case 3:
|
|
7109
7126
|
_q.sent();
|
|
7110
7127
|
_q.label = 4;
|
|
@@ -7252,7 +7269,7 @@
|
|
|
7252
7269
|
});
|
|
7253
7270
|
}
|
|
7254
7271
|
}
|
|
7255
|
-
dexieCloud.version = '4.0.1-beta.
|
|
7272
|
+
dexieCloud.version = '4.0.1-beta.28';
|
|
7256
7273
|
Dexie__default["default"].Cloud = dexieCloud;
|
|
7257
7274
|
|
|
7258
7275
|
exports["default"] = dexieCloud;
|