dexie-cloud-addon 4.2.3 → 4.2.5

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 (152) hide show
  1. package/dexie-cloud-import.json +2 -1
  2. package/dist/modern/dexie-cloud-addon.js +146 -168
  3. package/dist/modern/dexie-cloud-addon.js.map +1 -1
  4. package/dist/modern/dexie-cloud-addon.min.js +1 -1
  5. package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
  6. package/dist/modern/service-worker.js +146 -168
  7. package/dist/modern/service-worker.js.map +1 -1
  8. package/dist/modern/service-worker.min.js +1 -1
  9. package/dist/modern/service-worker.min.js.map +1 -1
  10. package/dist/umd/dexie-cloud-addon.js +1623 -2458
  11. package/dist/umd/dexie-cloud-addon.js.map +1 -1
  12. package/dist/umd/dexie-cloud-addon.min.js +1 -1
  13. package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
  14. package/dist/umd/service-worker.js +2003 -2838
  15. package/dist/umd/service-worker.js.map +1 -1
  16. package/dist/umd/service-worker.min.js +1 -1
  17. package/dist/umd/service-worker.min.js.map +1 -1
  18. package/package.json +14 -11
  19. package/dist/umd/DISABLE_SERVICEWORKER_STRATEGY.d.ts +0 -1
  20. package/dist/umd/DXCWebSocketStatus.d.ts +0 -1
  21. package/dist/umd/DexieCloudAPI.d.ts +0 -75
  22. package/dist/umd/DexieCloudOptions.d.ts +0 -27
  23. package/dist/umd/DexieCloudSyncOptions.d.ts +0 -4
  24. package/dist/umd/DexieCloudTable.d.ts +0 -18
  25. package/dist/umd/InvalidLicenseError.d.ts +0 -5
  26. package/dist/umd/Invite.d.ts +0 -8
  27. package/dist/umd/PermissionChecker.d.ts +0 -15
  28. package/dist/umd/TSON.d.ts +0 -17
  29. package/dist/umd/WSObservable.d.ts +0 -72
  30. package/dist/umd/associate.d.ts +0 -1
  31. package/dist/umd/authentication/AuthPersistedContext.d.ts +0 -9
  32. package/dist/umd/authentication/TokenErrorResponseError.d.ts +0 -10
  33. package/dist/umd/authentication/TokenExpiredError.d.ts +0 -3
  34. package/dist/umd/authentication/UNAUTHORIZED_USER.d.ts +0 -2
  35. package/dist/umd/authentication/authenticate.d.ts +0 -13
  36. package/dist/umd/authentication/currentUserObservable.d.ts +0 -1
  37. package/dist/umd/authentication/interactWithUser.d.ts +0 -21
  38. package/dist/umd/authentication/login.d.ts +0 -3
  39. package/dist/umd/authentication/logout.d.ts +0 -5
  40. package/dist/umd/authentication/otpFetchTokenCallback.d.ts +0 -3
  41. package/dist/umd/authentication/setCurrentUser.d.ts +0 -14
  42. package/dist/umd/authentication/waitUntil.d.ts +0 -3
  43. package/dist/umd/computeSyncState.d.ts +0 -4
  44. package/dist/umd/createSharedValueObservable.d.ts +0 -3
  45. package/dist/umd/currentUserEmitter.d.ts +0 -3
  46. package/dist/umd/db/DexieCloudDB.d.ts +0 -61
  47. package/dist/umd/db/entities/BaseRevisionMapEntry.d.ts +0 -5
  48. package/dist/umd/db/entities/EntityCommon.d.ts +0 -5
  49. package/dist/umd/db/entities/GuardedJob.d.ts +0 -5
  50. package/dist/umd/db/entities/Member.d.ts +0 -19
  51. package/dist/umd/db/entities/PersistedSyncState.d.ts +0 -22
  52. package/dist/umd/db/entities/Realm.d.ts +0 -14
  53. package/dist/umd/db/entities/Role.d.ts +0 -11
  54. package/dist/umd/db/entities/UserLogin.d.ts +0 -23
  55. package/dist/umd/default-ui/Dialog.d.ts +0 -5
  56. package/dist/umd/default-ui/LoginDialog.d.ts +0 -3
  57. package/dist/umd/default-ui/Styles.d.ts +0 -3
  58. package/dist/umd/default-ui/index.d.ts +0 -24
  59. package/dist/umd/define-ydoc-trigger.d.ts +0 -3
  60. package/dist/umd/dexie-cloud-addon.d.ts +0 -3
  61. package/dist/umd/dexie-cloud-client.d.ts +0 -23
  62. package/dist/umd/errors/HttpError.d.ts +0 -5
  63. package/dist/umd/extend-dexie-interface.d.ts +0 -23
  64. package/dist/umd/getGlobalRolesObservable.d.ts +0 -5
  65. package/dist/umd/getInternalAccessControlObservable.d.ts +0 -12
  66. package/dist/umd/getInvitesObservable.d.ts +0 -23
  67. package/dist/umd/getPermissionsLookupObservable.d.ts +0 -16
  68. package/dist/umd/getTiedRealmId.d.ts +0 -2
  69. package/dist/umd/helpers/BroadcastedAndLocalEvent.d.ts +0 -8
  70. package/dist/umd/helpers/CancelToken.d.ts +0 -4
  71. package/dist/umd/helpers/IS_SERVICE_WORKER.d.ts +0 -1
  72. package/dist/umd/helpers/SWBroadcastChannel.d.ts +0 -12
  73. package/dist/umd/helpers/allSettled.d.ts +0 -1
  74. package/dist/umd/helpers/bulkUpdate.d.ts +0 -4
  75. package/dist/umd/helpers/computeRealmSetHash.d.ts +0 -2
  76. package/dist/umd/helpers/date-constants.d.ts +0 -5
  77. package/dist/umd/helpers/flatten.d.ts +0 -1
  78. package/dist/umd/helpers/getMutationTable.d.ts +0 -1
  79. package/dist/umd/helpers/getSyncableTables.d.ts +0 -4
  80. package/dist/umd/helpers/getTableFromMutationTable.d.ts +0 -1
  81. package/dist/umd/helpers/makeArray.d.ts +0 -1
  82. package/dist/umd/helpers/randomString.d.ts +0 -1
  83. package/dist/umd/helpers/resolveText.d.ts +0 -16
  84. package/dist/umd/helpers/throwVersionIncrementNeeded.d.ts +0 -1
  85. package/dist/umd/helpers/visibilityState.d.ts +0 -1
  86. package/dist/umd/isEagerSyncDisabled.d.ts +0 -2
  87. package/dist/umd/isFirefox.d.ts +0 -1
  88. package/dist/umd/isSafari.d.ts +0 -2
  89. package/dist/umd/mapValueObservable.d.ts +0 -5
  90. package/dist/umd/mergePermissions.d.ts +0 -2
  91. package/dist/umd/middleware-helpers/guardedTable.d.ts +0 -11
  92. package/dist/umd/middleware-helpers/idGenerationHelpers.d.ts +0 -18
  93. package/dist/umd/middlewares/createIdGenerationMiddleware.d.ts +0 -3
  94. package/dist/umd/middlewares/createImplicitPropSetterMiddleware.d.ts +0 -3
  95. package/dist/umd/middlewares/createMutationTrackingMiddleware.d.ts +0 -17
  96. package/dist/umd/middlewares/outstandingTransaction.d.ts +0 -4
  97. package/dist/umd/overrideParseStoresSpec.d.ts +0 -4
  98. package/dist/umd/performInitialSync.d.ts +0 -4
  99. package/dist/umd/permissions.d.ts +0 -9
  100. package/dist/umd/prodLog.d.ts +0 -9
  101. package/dist/umd/service-worker.d.ts +0 -1
  102. package/dist/umd/sync/DEXIE_CLOUD_SYNCER_ID.d.ts +0 -1
  103. package/dist/umd/sync/LocalSyncWorker.d.ts +0 -7
  104. package/dist/umd/sync/SyncRequiredError.d.ts +0 -3
  105. package/dist/umd/sync/applyServerChanges.d.ts +0 -3
  106. package/dist/umd/sync/connectWebSocket.d.ts +0 -2
  107. package/dist/umd/sync/encodeIdsForServer.d.ts +0 -4
  108. package/dist/umd/sync/extractRealm.d.ts +0 -2
  109. package/dist/umd/sync/getLatestRevisionsPerTable.d.ts +0 -6
  110. package/dist/umd/sync/getTablesToSyncify.d.ts +0 -3
  111. package/dist/umd/sync/isOnline.d.ts +0 -1
  112. package/dist/umd/sync/isSyncNeeded.d.ts +0 -2
  113. package/dist/umd/sync/listClientChanges.d.ts +0 -9
  114. package/dist/umd/sync/listSyncifiedChanges.d.ts +0 -5
  115. package/dist/umd/sync/messageConsumerIsReady.d.ts +0 -2
  116. package/dist/umd/sync/messagesFromServerQueue.d.ts +0 -8
  117. package/dist/umd/sync/modifyLocalObjectsWithNewUserId.d.ts +0 -4
  118. package/dist/umd/sync/myId.d.ts +0 -1
  119. package/dist/umd/sync/numUnsyncedMutations.d.ts +0 -2
  120. package/dist/umd/sync/old_startSyncingClientChanges.d.ts +0 -39
  121. package/dist/umd/sync/performGuardedJob.d.ts +0 -2
  122. package/dist/umd/sync/ratelimit.d.ts +0 -3
  123. package/dist/umd/sync/registerSyncEvent.d.ts +0 -3
  124. package/dist/umd/sync/sync.d.ts +0 -15
  125. package/dist/umd/sync/syncIfPossible.d.ts +0 -5
  126. package/dist/umd/sync/syncWithServer.d.ts +0 -6
  127. package/dist/umd/sync/triggerSync.d.ts +0 -2
  128. package/dist/umd/sync/updateBaseRevs.d.ts +0 -5
  129. package/dist/umd/types/DXCAlert.d.ts +0 -25
  130. package/dist/umd/types/DXCInputField.d.ts +0 -11
  131. package/dist/umd/types/DXCUserInteraction.d.ts +0 -93
  132. package/dist/umd/types/NewIdOptions.d.ts +0 -3
  133. package/dist/umd/types/SWMessageEvent.d.ts +0 -3
  134. package/dist/umd/types/SWSyncEvent.d.ts +0 -4
  135. package/dist/umd/types/SyncState.d.ts +0 -9
  136. package/dist/umd/types/TXExpandos.d.ts +0 -11
  137. package/dist/umd/updateSchemaFromOptions.d.ts +0 -3
  138. package/dist/umd/userIsActive.d.ts +0 -7
  139. package/dist/umd/verifyConfig.d.ts +0 -2
  140. package/dist/umd/verifySchema.d.ts +0 -2
  141. package/dist/umd/yjs/YDexieCloudSyncState.d.ts +0 -3
  142. package/dist/umd/yjs/YTable.d.ts +0 -3
  143. package/dist/umd/yjs/applyYMessages.d.ts +0 -9
  144. package/dist/umd/yjs/awareness.d.ts +0 -3
  145. package/dist/umd/yjs/createYClientUpdateObservable.d.ts +0 -4
  146. package/dist/umd/yjs/createYHandler.d.ts +0 -2
  147. package/dist/umd/yjs/downloadYDocsFromServer.d.ts +0 -3
  148. package/dist/umd/yjs/getUpdatesTable.d.ts +0 -3
  149. package/dist/umd/yjs/listUpdatesSince.d.ts +0 -3
  150. package/dist/umd/yjs/listYClientMessagesAndStateVector.d.ts +0 -26
  151. package/dist/umd/yjs/reopenDocSignal.d.ts +0 -10
  152. package/dist/umd/yjs/updateYSyncStates.d.ts +0 -6
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dexie-cloud-addon",
3
- "version": "4.2.3",
3
+ "version": "4.2.5",
4
4
  "description": "Dexie addon that syncs with to Dexie Cloud",
5
5
  "type": "module",
6
6
  "module": "dist/modern/dexie-cloud-addon.min.js",
@@ -9,17 +9,17 @@
9
9
  ".": {
10
10
  "development": {
11
11
  "import": "./dist/modern/dexie-cloud-addon.js",
12
- "require": false,
12
+ "require": null,
13
13
  "types": "./dist/modern/dexie-cloud-addon.d.ts"
14
14
  },
15
15
  "production": {
16
16
  "import": "./dist/modern/dexie-cloud-addon.min.js",
17
- "require": false,
17
+ "require": null,
18
18
  "types": "./dist/modern/dexie-cloud-addon.d.ts"
19
19
  },
20
20
  "default": {
21
21
  "import": "./dist/modern/dexie-cloud-addon.min.js",
22
- "require": false,
22
+ "require": null,
23
23
  "types": "./dist/modern/dexie-cloud-addon.d.ts"
24
24
  }
25
25
  },
@@ -67,11 +67,11 @@
67
67
  "author": "david.fahlander@gmail.com",
68
68
  "license": "Apache-2.0",
69
69
  "devDependencies": {
70
- "@rollup/plugin-commonjs": "^25.0.7",
71
- "@rollup/plugin-node-resolve": "^15.2.3",
70
+ "@rollup/plugin-commonjs": "^29.0.0",
71
+ "@rollup/plugin-node-resolve": "^16.0.3",
72
72
  "@rollup/plugin-replace": "^5.0.4",
73
73
  "@rollup/plugin-terser": "^0.4.4",
74
- "@rollup/plugin-typescript": "^11.1.5",
74
+ "@rollup/plugin-typescript": "^12.3.0",
75
75
  "@types/node": "^18.11.18",
76
76
  "dreambase-library": "^1.0.26",
77
77
  "just-build": "*",
@@ -79,9 +79,12 @@
79
79
  "karma-chrome-launcher": "*",
80
80
  "karma-firefox-launcher": "*",
81
81
  "karma-qunit": "*",
82
+ "karma-webdriver-launcher": "*",
83
+ "qunit": "2.10.0",
84
+ "qunitjs": "1.23.1",
82
85
  "lib0": "^0.2.97",
83
86
  "preact": "*",
84
- "rollup": "^4.1.4",
87
+ "rollup": "^4.53.3",
85
88
  "terser": "^5.20.0",
86
89
  "tslib": "*",
87
90
  "typescript": "^5.6.3",
@@ -91,11 +94,11 @@
91
94
  "rxjs": "^7.x",
92
95
  "yjs": "^13.6.27",
93
96
  "y-protocols": "^1.0.6",
94
- "dexie-cloud-common": "^1.0.53",
95
- "y-dexie": "^4.2.1"
97
+ "dexie-cloud-common": "^1.0.57",
98
+ "y-dexie": "^4.2.2"
96
99
  },
97
100
  "peerDependencies": {
98
- "dexie": "^4.2.1"
101
+ "dexie": "^4.3.0"
99
102
  },
100
103
  "scripts": {
101
104
  "test": "just-build test && pnpm run test-unit",
@@ -1 +0,0 @@
1
- export declare const DISABLE_SERVICEWORKER_STRATEGY: boolean;
@@ -1 +0,0 @@
1
- export type DXCWebSocketStatus = "not-started" | "connecting" | "connected" | "disconnected" | "error";
@@ -1,75 +0,0 @@
1
- import { DexieCloudOptions } from './DexieCloudOptions';
2
- import { DBRealmRole, DexieCloudSchema } from 'dexie-cloud-common';
3
- import { UserLogin } from './db/entities/UserLogin';
4
- import { PersistedSyncState } from './db/entities/PersistedSyncState';
5
- import { SyncState } from './types/SyncState';
6
- import { DXCUserInteraction } from './types/DXCUserInteraction';
7
- import { DXCWebSocketStatus } from './DXCWebSocketStatus';
8
- import { PermissionChecker } from './PermissionChecker';
9
- import { DexieCloudSyncOptions } from "./DexieCloudSyncOptions";
10
- import { Invite } from './Invite';
11
- import { BehaviorSubject, Observable } from 'rxjs';
12
- /** The API of db.cloud, where `db` is an instance of Dexie with dexie-cloud-addon active.
13
- */
14
- export interface LoginHints {
15
- email?: string;
16
- userId?: string;
17
- grant_type?: 'demo' | 'otp';
18
- otpId?: string;
19
- otp?: string;
20
- }
21
- export interface DexieCloudAPI {
22
- version: string;
23
- options: DexieCloudOptions | null;
24
- schema: DexieCloudSchema | null;
25
- currentUserId: string;
26
- currentUser: BehaviorSubject<UserLogin>;
27
- webSocketStatus: BehaviorSubject<DXCWebSocketStatus>;
28
- syncState: BehaviorSubject<SyncState>;
29
- persistedSyncState: BehaviorSubject<PersistedSyncState | undefined>;
30
- events: {
31
- syncComplete: Observable<void>;
32
- };
33
- userInteraction: BehaviorSubject<DXCUserInteraction | undefined>;
34
- invites: Observable<Invite[]>;
35
- roles: Observable<{
36
- [roleName: string]: DBRealmRole;
37
- }>;
38
- usingServiceWorker?: boolean;
39
- isServiceWorkerDB?: boolean;
40
- /** Login using Dexie Cloud OTP or Demo user.
41
- *
42
- * @param email Email to authenticate
43
- * @param userId Optional userId to authenticate
44
- * @param grant_type requested grant type
45
- */
46
- login(hint?: LoginHints): Promise<void>;
47
- logout(options?: {
48
- force?: boolean;
49
- }): Promise<void>;
50
- /**
51
- * Connect to given URL
52
- */
53
- configure(options: DexieCloudOptions): void;
54
- /** Trigger a sync
55
- *
56
- */
57
- sync(options?: DexieCloudSyncOptions): Promise<void>;
58
- /** Method that returns an observable of the available permissions of given
59
- * entity.
60
- *
61
- * @param entity Entity to check permission for
62
- */
63
- permissions<T extends {
64
- owner: string;
65
- realmId: string;
66
- table: () => string;
67
- }>(entity: T): Observable<PermissionChecker<T>>;
68
- /** Method that returns an observable of the available permissions of given
69
- * object and table name.
70
- *
71
- * @param obj Object retrieved from a dexie query
72
- * @param table Table name that the object was retrieved from
73
- */
74
- permissions<T>(obj: T, table: string): Observable<PermissionChecker<T, string>>;
75
- }
@@ -1,27 +0,0 @@
1
- import type { TokenFinalResponse } from 'dexie-cloud-common';
2
- import type { LoginHints } from './DexieCloudAPI';
3
- export interface PeriodicSyncOptions {
4
- minInterval?: number;
5
- }
6
- export interface DexieCloudOptions {
7
- databaseUrl: string;
8
- requireAuth?: boolean | LoginHints;
9
- tryUseServiceWorker?: boolean;
10
- periodicSync?: PeriodicSyncOptions;
11
- customLoginGui?: boolean;
12
- unsyncedTables?: string[];
13
- unsyncedProperties?: {
14
- [tableName: string]: string[];
15
- };
16
- nameSuffix?: boolean;
17
- disableWebSocket?: boolean;
18
- disableEagerSync?: boolean;
19
- fetchTokens?: (tokenParams: {
20
- public_key: string;
21
- hints?: {
22
- userId?: string;
23
- email?: string;
24
- };
25
- }) => Promise<TokenFinalResponse>;
26
- awarenessProtocol?: typeof import('y-protocols/awareness');
27
- }
@@ -1,4 +0,0 @@
1
- export interface DexieCloudSyncOptions {
2
- wait: boolean;
3
- purpose: 'push' | 'pull';
4
- }
@@ -1,18 +0,0 @@
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
- type WithDexieCloudProps<T> = T extends DexieCloudEntity ? T : T & DexieCloudEntity;
14
- /** Syntactic sugar for declaring a synced table of arbritary entity.
15
- *
16
- */
17
- export type DexieCloudTable<T = any, TKeyPropName extends keyof T = never> = EntityTable<WithDexieCloudProps<T>, TKeyPropName, InsertType<WithDexieCloudProps<T>, TKeyPropName | 'owner' | 'realmId'>>;
18
- export {};
@@ -1,5 +0,0 @@
1
- export declare class InvalidLicenseError extends Error {
2
- name: string;
3
- license?: 'expired' | 'deactivated';
4
- constructor(license?: 'expired' | 'deactivated');
5
- }
@@ -1,8 +0,0 @@
1
- import { DBPermissionSet, DBRealm, DBRealmMember } from 'dexie-cloud-common';
2
- export interface Invite extends DBRealmMember {
3
- realm?: DBRealm & {
4
- permissions: DBPermissionSet;
5
- };
6
- accept(): Promise<void>;
7
- reject(): Promise<void>;
8
- }
@@ -1,15 +0,0 @@
1
- import { KeyPaths } from 'dexie';
2
- import { DBPermissionSet } from 'dexie-cloud-common';
3
- type TableName<T> = T extends {
4
- table: () => infer TABLE;
5
- } ? TABLE extends string ? TABLE : string : string;
6
- export declare class PermissionChecker<T, TableNames extends string = TableName<T>> {
7
- private permissions;
8
- private tableName;
9
- private isOwner;
10
- constructor(permissions: DBPermissionSet, tableName: TableNames, isOwner: boolean);
11
- add(...tableNames: TableNames[]): boolean;
12
- update(...props: KeyPaths<T>[]): boolean;
13
- delete(): boolean;
14
- }
15
- export {};
@@ -1,17 +0,0 @@
1
- export declare const hasBigIntSupport: boolean;
2
- export declare function compareBigInts(a: bigint | FakeBigInt | string, b: bigint | FakeBigInt | string): 1 | 0 | -1;
3
- export declare class FakeBigInt {
4
- v: string;
5
- toString(): string;
6
- constructor(value: string);
7
- }
8
- export declare const TSON: {
9
- stringify(value: any, alternateChannel?: any, space?: number): string;
10
- parse(tson: string, alternateChannel?: any): any;
11
- };
12
- export declare const BISON: {
13
- toBinary(value: any): Blob;
14
- stringify(value: any): [Blob, string];
15
- parse<T = any>(json: string, binData: Blob): Promise<T>;
16
- fromBinary<T_1 = any>(blob: Blob): Promise<T_1>;
17
- };
@@ -1,72 +0,0 @@
1
- import { DBOperationsSet } from 'dexie-cloud-common';
2
- import { BehaviorSubject, Observable, Subscriber, Subscription } from 'rxjs';
3
- import { DXCWebSocketStatus } from './DXCWebSocketStatus';
4
- import type { YClientMessage } from 'dexie-cloud-common';
5
- import { DexieCloudDB } from './db/DexieCloudDB';
6
- import { UserLogin } from './dexie-cloud-client';
7
- export type WSClientToServerMsg = ReadyForChangesMessage | YClientMessage;
8
- export interface ReadyForChangesMessage {
9
- type: 'ready';
10
- realmSetHash: string;
11
- rev: string;
12
- }
13
- export type WSConnectionMsg = RevisionChangedMessage | RealmAddedMessage | RealmAcceptedMessage | RealmRemovedMessage | RealmsChangedMessage | ChangesFromServerMessage | TokenExpiredMessage;
14
- export interface ChangesFromServerMessage {
15
- type: 'changes';
16
- baseRev: string;
17
- realmSetHash: string;
18
- newRev: string;
19
- changes: DBOperationsSet<string>;
20
- }
21
- export interface RevisionChangedMessage {
22
- type: 'rev';
23
- rev: string;
24
- }
25
- export interface RealmAddedMessage {
26
- type: 'realm-added';
27
- realm: string;
28
- }
29
- export interface RealmAcceptedMessage {
30
- type: 'realm-accepted';
31
- realm: string;
32
- }
33
- export interface RealmRemovedMessage {
34
- type: 'realm-removed';
35
- realm: string;
36
- }
37
- export interface RealmsChangedMessage {
38
- type: 'realms-changed';
39
- realmsHash: string;
40
- }
41
- export interface TokenExpiredMessage {
42
- type: 'token-expired';
43
- }
44
- export declare class WSObservable extends Observable<WSConnectionMsg> {
45
- constructor(db: DexieCloudDB, rev: string | undefined, yrev: string | undefined, realmSetHash: string, clientIdentity: string, messageProducer: Observable<WSClientToServerMsg>, webSocketStatus: BehaviorSubject<DXCWebSocketStatus>, user: UserLogin);
46
- }
47
- export declare class WSConnection extends Subscription {
48
- db: DexieCloudDB;
49
- ws: WebSocket | null;
50
- lastServerActivity: Date;
51
- lastUserActivity: Date;
52
- lastPing: Date;
53
- databaseUrl: string;
54
- rev: string | undefined;
55
- yrev: string | undefined;
56
- realmSetHash: string;
57
- clientIdentity: string;
58
- user: UserLogin;
59
- subscriber: Subscriber<WSConnectionMsg>;
60
- pauseUntil?: Date;
61
- messageProducer: Observable<WSClientToServerMsg>;
62
- webSocketStatus: BehaviorSubject<DXCWebSocketStatus>;
63
- id: number;
64
- private pinger;
65
- private subscriptions;
66
- constructor(db: DexieCloudDB, rev: string | undefined, yrev: string | undefined, realmSetHash: string, clientIdentity: string, user: UserLogin, subscriber: Subscriber<WSConnectionMsg>, messageProducer: Observable<WSClientToServerMsg>, webSocketStatus: BehaviorSubject<DXCWebSocketStatus>);
67
- private teardown;
68
- private disconnect;
69
- reconnecting: boolean;
70
- reconnect(): void;
71
- connect(): Promise<void>;
72
- }
@@ -1 +0,0 @@
1
- export declare function associate<T extends object, M>(factory: (x: T) => M): (x: T) => M;
@@ -1,9 +0,0 @@
1
- import { DexieCloudDB } from "../db/DexieCloudDB";
2
- import { UserLogin } from "../db/entities/UserLogin";
3
- export interface AuthPersistedContext extends UserLogin {
4
- save(): Promise<void>;
5
- }
6
- export declare class AuthPersistedContext {
7
- constructor(db: DexieCloudDB, userLogin: UserLogin);
8
- static load(db: DexieCloudDB, userId: string): import("dexie").PromiseExtended<AuthPersistedContext>;
9
- }
@@ -1,10 +0,0 @@
1
- import { TokenErrorResponse } from 'dexie-cloud-common';
2
- export declare class TokenErrorResponseError extends Error {
3
- title: string;
4
- messageCode: 'INVALID_OTP' | 'INVALID_EMAIL' | 'LICENSE_LIMIT_REACHED' | 'GENERIC_ERROR';
5
- message: string;
6
- messageParams?: {
7
- [param: string]: string;
8
- };
9
- constructor({ title, message, messageCode, messageParams, }: TokenErrorResponse);
10
- }
@@ -1,3 +0,0 @@
1
- export declare class TokenExpiredError extends Error {
2
- name: string;
3
- }
@@ -1,2 +0,0 @@
1
- import { UserLogin } from '../db/entities/UserLogin';
2
- export declare const UNAUTHORIZED_USER: UserLogin;
@@ -1,13 +0,0 @@
1
- import type { TokenErrorResponse, TokenFinalResponse } from 'dexie-cloud-common';
2
- import { BehaviorSubject } from 'rxjs';
3
- import { DexieCloudDB } from '../db/DexieCloudDB';
4
- import { UserLogin } from '../db/entities/UserLogin';
5
- import { DXCUserInteraction } from '../types/DXCUserInteraction';
6
- import { LoginHints } from '../DexieCloudAPI';
7
- export type FetchTokenCallback = (tokenParams: {
8
- public_key: string;
9
- hints?: LoginHints;
10
- }) => Promise<TokenFinalResponse | TokenErrorResponse>;
11
- export declare function loadAccessToken(db: DexieCloudDB): Promise<UserLogin | null>;
12
- export declare function authenticate(url: string, context: UserLogin, fetchToken: FetchTokenCallback, userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, hints?: LoginHints): Promise<UserLogin>;
13
- export declare function refreshAccessToken(url: string, login: UserLogin): Promise<UserLogin>;
@@ -1 +0,0 @@
1
- export {};
@@ -1,21 +0,0 @@
1
- import { BehaviorSubject } from 'rxjs';
2
- import { DXCAlert } from '../types/DXCAlert';
3
- import { DXCInputField } from '../types/DXCInputField';
4
- import { DXCUserInteraction } from '../types/DXCUserInteraction';
5
- export interface DXCUserInteractionRequest {
6
- type: DXCUserInteraction['type'];
7
- title: string;
8
- alerts: DXCAlert[];
9
- submitLabel?: string;
10
- cancelLabel?: string | null;
11
- fields: {
12
- [name: string]: DXCInputField;
13
- };
14
- }
15
- export declare function interactWithUser<T extends DXCUserInteractionRequest>(userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, req: T): Promise<{
16
- [P in keyof T['fields']]: string;
17
- }>;
18
- export declare function alertUser(userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, title: string, ...alerts: DXCAlert[]): Promise<{}>;
19
- export declare function promptForEmail(userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, title: string, emailHint?: string): Promise<string>;
20
- export declare function promptForOTP(userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, email: string, alert?: DXCAlert): Promise<string>;
21
- export declare function confirmLogout(userInteraction: BehaviorSubject<DXCUserInteraction | undefined>, currentUserId: string, numUnsyncedChanges: number): Promise<boolean>;
@@ -1,3 +0,0 @@
1
- import { DexieCloudDB } from '../db/DexieCloudDB';
2
- import { LoginHints } from '../DexieCloudAPI';
3
- export declare function login(db: DexieCloudDB, hints?: LoginHints): Promise<boolean>;
@@ -1,5 +0,0 @@
1
- import { DexieCloudDB } from '../db/DexieCloudDB';
2
- export declare function logout(db: DexieCloudDB): Promise<void>;
3
- export declare function _logout(db: DexieCloudDB, { deleteUnsyncedData }?: {
4
- deleteUnsyncedData?: boolean | undefined;
5
- }): Promise<number>;
@@ -1,3 +0,0 @@
1
- import { DexieCloudDB } from '../db/DexieCloudDB';
2
- import { FetchTokenCallback } from './authenticate';
3
- export declare function otpFetchTokenCallback(db: DexieCloudDB): FetchTokenCallback;
@@ -1,14 +0,0 @@
1
- import { DexieCloudDB } from '../db/DexieCloudDB';
2
- import { AuthPersistedContext } from './AuthPersistedContext';
3
- /** This function changes or sets the current user as requested.
4
- *
5
- * Use cases:
6
- * * Initially on db.ready after reading the current user from db.$logins.
7
- * This will make sure that any unsynced operations from the previous user is synced before
8
- * changing the user.
9
- * * Upon user request
10
- *
11
- * @param db
12
- * @param newUser
13
- */
14
- export declare function setCurrentUser(db: DexieCloudDB, user: AuthPersistedContext): Promise<void>;
@@ -1,3 +0,0 @@
1
- import { InteropObservable, Observable } from 'rxjs';
2
- export declare function waitUntil<T>(o: Observable<T> | InteropObservable<T>, // Works with Dexie's liveQuery observables if we'd need that
3
- predicate: (value: T) => boolean): Promise<T>;
@@ -1,4 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { DexieCloudDB } from './db/DexieCloudDB';
3
- import { SyncState } from './types/SyncState';
4
- export declare function computeSyncState(db: DexieCloudDB): Observable<SyncState>;
@@ -1,3 +0,0 @@
1
- import { ObservableInput } from 'rxjs';
2
- import { ObservableWithCurrentValue } from './mapValueObservable';
3
- export declare function createSharedValueObservable<T>(o: ObservableInput<T>, defaultValue: T): ObservableWithCurrentValue<T>;
@@ -1,3 +0,0 @@
1
- import Dexie from "dexie";
2
- import { BehaviorSubject } from "rxjs";
3
- export declare const getCurrentUserEmitter: (x: Dexie) => BehaviorSubject<import("./dexie-cloud-client").UserLogin>;
@@ -1,61 +0,0 @@
1
- import Dexie, { Table } from 'dexie';
2
- import { GuardedJob } from './entities/GuardedJob';
3
- import { UserLogin } from './entities/UserLogin';
4
- import { PersistedSyncState } from './entities/PersistedSyncState';
5
- import { DexieCloudOptions } from '../DexieCloudOptions';
6
- import { Subject } from 'rxjs';
7
- import { BaseRevisionMapEntry } from './entities/BaseRevisionMapEntry';
8
- import { DBRealm, DBRealmMember, DBRealmRole, DexieCloudSchema } from 'dexie-cloud-common';
9
- import { BroadcastedAndLocalEvent } from '../helpers/BroadcastedAndLocalEvent';
10
- import { SyncStatePhase } from '../types/SyncState';
11
- import { MessagesFromServerConsumer } from '../sync/messagesFromServerQueue';
12
- import { YClientMessage } from 'dexie-cloud-common';
13
- export interface SyncStateChangedEventData {
14
- phase: SyncStatePhase;
15
- error?: Error;
16
- progress?: number;
17
- }
18
- type SyncStateTable = Table<PersistedSyncState | DexieCloudSchema | DexieCloudOptions, 'syncState' | 'options' | 'schema'>;
19
- export interface DexieCloudDBBase {
20
- readonly name: Dexie['name'];
21
- readonly close: Dexie['close'];
22
- transaction: Dexie['transaction'];
23
- table: Dexie['table'];
24
- readonly tables: Dexie['tables'];
25
- readonly cloud: Dexie['cloud'];
26
- readonly $jobs: Table<GuardedJob, string>;
27
- readonly $logins: Table<UserLogin, string>;
28
- readonly $syncState: SyncStateTable;
29
- readonly $baseRevs: Table<BaseRevisionMapEntry, [string, number]>;
30
- readonly realms: Table<DBRealm, string>;
31
- readonly members: Table<DBRealmMember, string>;
32
- readonly roles: Table<DBRealmRole, [string, string]>;
33
- readonly localSyncEvent: Subject<{
34
- purpose?: 'pull' | 'push';
35
- }>;
36
- readonly syncStateChangedEvent: BroadcastedAndLocalEvent<SyncStateChangedEventData>;
37
- readonly syncCompleteEvent: BroadcastedAndLocalEvent<void>;
38
- readonly dx: Dexie;
39
- readonly initiallySynced: boolean;
40
- }
41
- export interface DexieCloudDB extends DexieCloudDBBase {
42
- getCurrentUser(): Promise<UserLogin>;
43
- getSchema(): Promise<DexieCloudSchema | undefined>;
44
- getOptions(): Promise<DexieCloudOptions | undefined>;
45
- getPersistedSyncState(): Promise<PersistedSyncState | undefined>;
46
- setInitiallySynced(initiallySynced: boolean): void;
47
- reconfigure(): void;
48
- messageConsumer: MessagesFromServerConsumer;
49
- messageProducer: Subject<YClientMessage>;
50
- }
51
- export declare const DEXIE_CLOUD_SCHEMA: {
52
- members: string;
53
- roles: string;
54
- realms: string;
55
- $jobs: string;
56
- $syncState: string;
57
- $baseRevs: string;
58
- $logins: string;
59
- };
60
- export declare function DexieCloudDB(dx: Dexie): DexieCloudDB;
61
- export {};
@@ -1,5 +0,0 @@
1
- export interface BaseRevisionMapEntry {
2
- tableName: string;
3
- clientRev: number;
4
- serverRev: any;
5
- }
@@ -1,5 +0,0 @@
1
- export interface EntityCommon {
2
- realmId?: string;
3
- owner?: string;
4
- $ts?: string;
5
- }
@@ -1,5 +0,0 @@
1
- export interface GuardedJob {
2
- nodeId: string;
3
- started: Date;
4
- heartbeat: Date;
5
- }
@@ -1,19 +0,0 @@
1
- export interface Member {
2
- id?: string;
3
- realmId: string;
4
- userId?: string;
5
- email?: string;
6
- name?: string;
7
- invite?: boolean;
8
- invited?: Date;
9
- accepted?: Date;
10
- rejected?: Date;
11
- roles?: string[];
12
- permissions?: {
13
- add?: string[] | "*";
14
- update?: {
15
- [tableName: string]: string[] | "*";
16
- };
17
- manage?: string[] | "*";
18
- };
19
- }
@@ -1,22 +0,0 @@
1
- export interface PersistedSyncState {
2
- serverRevision?: any;
3
- yServerRevision?: string;
4
- latestRevisions: {
5
- [tableName: string]: number;
6
- };
7
- realms: string[];
8
- inviteRealms: string[];
9
- clientIdentity: string;
10
- initiallySynced?: boolean;
11
- remoteDbId?: string;
12
- syncedTables: string[];
13
- timestamp?: Date;
14
- error?: string;
15
- yDownloadedRealms?: {
16
- [realmId: string]: "*" | {
17
- tbl: string;
18
- prop: string;
19
- key: any;
20
- };
21
- };
22
- }
@@ -1,14 +0,0 @@
1
- export interface Realm {
2
- /** Primary key of the realm.
3
- */
4
- realmId: string;
5
- /** The name of the realm.
6
- *
7
- * This property is optional but it can be a good practice to name a realm for what it represents.
8
- */
9
- name?: string;
10
- /** Contains the user-ID of the owner. An owner has implicit full write-access to the realm
11
- * and all obejcts connected to it.
12
- */
13
- owner?: string;
14
- }
@@ -1,11 +0,0 @@
1
- export interface Role {
2
- realmId: string;
3
- name: string;
4
- permissions: {
5
- add?: string[] | "*";
6
- update?: {
7
- [tableName: string]: string[] | "*";
8
- };
9
- manage?: string[] | "*";
10
- };
11
- }
@@ -1,23 +0,0 @@
1
- export interface UserLogin {
2
- userId?: string;
3
- name?: string;
4
- email?: string;
5
- claims: {
6
- [claimName: string]: any;
7
- };
8
- license?: {
9
- type: 'demo' | 'eval' | 'prod' | 'client';
10
- status: 'ok' | 'expired' | 'deactivated';
11
- validUntil?: Date;
12
- evalDaysLeft?: number;
13
- };
14
- lastLogin: Date;
15
- accessToken?: string;
16
- accessTokenExpiration?: Date;
17
- refreshToken?: string;
18
- refreshTokenExpiration?: Date;
19
- nonExportablePrivateKey?: CryptoKey;
20
- publicKey?: CryptoKey;
21
- isLoggedIn?: boolean;
22
- data?: any;
23
- }
@@ -1,5 +0,0 @@
1
- import { ComponentChildren, h } from 'preact';
2
- export declare function Dialog({ children, className }: {
3
- children?: ComponentChildren;
4
- className?: string;
5
- }): h.JSX.Element;