dexie-cloud-addon 4.4.4 → 4.4.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.
- package/dist/modern/default-ui/AuthProviderButton.d.ts +21 -0
- package/dist/modern/default-ui/ProviderSelectionDialog.d.ts +7 -0
- package/dist/modern/default-ui/SelectDialog.d.ts +10 -0
- package/dist/modern/dexie-cloud-addon.js +18 -14
- 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.gz +0 -0
- package/dist/modern/dexie-cloud-addon.min.js.map +1 -1
- package/dist/modern/service-worker.js +18 -14
- 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/umd/DISABLE_SERVICEWORKER_STRATEGY.d.ts +1 -0
- package/dist/umd/DXCWebSocketStatus.d.ts +1 -0
- package/dist/umd/DexieCloudAPI.d.ts +75 -0
- package/dist/umd/DexieCloudOptions.d.ts +27 -0
- package/dist/umd/DexieCloudSyncOptions.d.ts +4 -0
- package/dist/umd/DexieCloudTable.d.ts +18 -0
- package/dist/umd/InvalidLicenseError.d.ts +5 -0
- package/dist/umd/Invite.d.ts +8 -0
- package/dist/umd/PermissionChecker.d.ts +15 -0
- package/dist/umd/TSON.d.ts +17 -0
- package/dist/umd/WSObservable.d.ts +72 -0
- package/dist/umd/associate.d.ts +1 -0
- package/dist/umd/authentication/AuthPersistedContext.d.ts +9 -0
- package/dist/umd/authentication/TokenErrorResponseError.d.ts +10 -0
- package/dist/umd/authentication/TokenExpiredError.d.ts +3 -0
- package/dist/umd/authentication/UNAUTHORIZED_USER.d.ts +2 -0
- package/dist/umd/authentication/authenticate.d.ts +13 -0
- package/dist/umd/authentication/currentUserObservable.d.ts +1 -0
- package/dist/umd/authentication/interactWithUser.d.ts +21 -0
- package/dist/umd/authentication/login.d.ts +3 -0
- package/dist/umd/authentication/logout.d.ts +5 -0
- package/dist/umd/authentication/otpFetchTokenCallback.d.ts +3 -0
- package/dist/umd/authentication/setCurrentUser.d.ts +14 -0
- package/dist/umd/authentication/waitUntil.d.ts +3 -0
- package/dist/umd/computeSyncState.d.ts +4 -0
- package/dist/umd/createSharedValueObservable.d.ts +3 -0
- package/dist/umd/currentUserEmitter.d.ts +3 -0
- package/dist/umd/db/DexieCloudDB.d.ts +61 -0
- package/dist/umd/db/entities/BaseRevisionMapEntry.d.ts +5 -0
- package/dist/umd/db/entities/EntityCommon.d.ts +5 -0
- package/dist/umd/db/entities/GuardedJob.d.ts +5 -0
- package/dist/umd/db/entities/Member.d.ts +19 -0
- package/dist/umd/db/entities/PersistedSyncState.d.ts +22 -0
- package/dist/umd/db/entities/Realm.d.ts +14 -0
- package/dist/umd/db/entities/Role.d.ts +11 -0
- package/dist/umd/db/entities/UserLogin.d.ts +23 -0
- package/dist/umd/default-ui/Dialog.d.ts +5 -0
- package/dist/umd/default-ui/LoginDialog.d.ts +3 -0
- package/dist/umd/default-ui/Styles.d.ts +3 -0
- package/dist/umd/default-ui/index.d.ts +24 -0
- package/dist/umd/define-ydoc-trigger.d.ts +3 -0
- package/dist/umd/dexie-cloud-addon.d.ts +3 -0
- package/dist/umd/dexie-cloud-addon.js +18 -14
- package/dist/umd/dexie-cloud-addon.js.gz +0 -0
- 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.gz +0 -0
- package/dist/umd/dexie-cloud-addon.min.js.map +1 -1
- package/dist/umd/dexie-cloud-client.d.ts +23 -0
- package/dist/umd/errors/HttpError.d.ts +5 -0
- package/dist/umd/extend-dexie-interface.d.ts +23 -0
- package/dist/umd/getGlobalRolesObservable.d.ts +5 -0
- package/dist/umd/getInternalAccessControlObservable.d.ts +12 -0
- package/dist/umd/getInvitesObservable.d.ts +23 -0
- package/dist/umd/getPermissionsLookupObservable.d.ts +16 -0
- package/dist/umd/getTiedRealmId.d.ts +2 -0
- package/dist/umd/helpers/BroadcastedAndLocalEvent.d.ts +8 -0
- package/dist/umd/helpers/CancelToken.d.ts +4 -0
- package/dist/umd/helpers/IS_SERVICE_WORKER.d.ts +1 -0
- package/dist/umd/helpers/SWBroadcastChannel.d.ts +12 -0
- package/dist/umd/helpers/allSettled.d.ts +1 -0
- package/dist/umd/helpers/bulkUpdate.d.ts +4 -0
- package/dist/umd/helpers/computeRealmSetHash.d.ts +2 -0
- package/dist/umd/helpers/date-constants.d.ts +5 -0
- package/dist/umd/helpers/flatten.d.ts +1 -0
- package/dist/umd/helpers/getMutationTable.d.ts +1 -0
- package/dist/umd/helpers/getSyncableTables.d.ts +4 -0
- package/dist/umd/helpers/getTableFromMutationTable.d.ts +1 -0
- package/dist/umd/helpers/makeArray.d.ts +1 -0
- package/dist/umd/helpers/randomString.d.ts +1 -0
- package/dist/umd/helpers/resolveText.d.ts +16 -0
- package/dist/umd/helpers/throwVersionIncrementNeeded.d.ts +1 -0
- package/dist/umd/helpers/visibilityState.d.ts +1 -0
- package/dist/umd/isEagerSyncDisabled.d.ts +2 -0
- package/dist/umd/isFirefox.d.ts +1 -0
- package/dist/umd/isSafari.d.ts +2 -0
- package/dist/umd/mapValueObservable.d.ts +5 -0
- package/dist/umd/mergePermissions.d.ts +2 -0
- package/dist/umd/middleware-helpers/guardedTable.d.ts +11 -0
- package/dist/umd/middleware-helpers/idGenerationHelpers.d.ts +18 -0
- package/dist/umd/middlewares/createIdGenerationMiddleware.d.ts +3 -0
- package/dist/umd/middlewares/createImplicitPropSetterMiddleware.d.ts +3 -0
- package/dist/umd/middlewares/createMutationTrackingMiddleware.d.ts +17 -0
- package/dist/umd/middlewares/outstandingTransaction.d.ts +4 -0
- package/dist/umd/overrideParseStoresSpec.d.ts +4 -0
- package/dist/umd/performInitialSync.d.ts +4 -0
- package/dist/umd/permissions.d.ts +9 -0
- package/dist/umd/prodLog.d.ts +9 -0
- package/dist/umd/service-worker.d.ts +1 -0
- package/dist/umd/service-worker.js +18 -14
- 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/sync/DEXIE_CLOUD_SYNCER_ID.d.ts +1 -0
- package/dist/umd/sync/LocalSyncWorker.d.ts +7 -0
- package/dist/umd/sync/SyncRequiredError.d.ts +3 -0
- package/dist/umd/sync/applyServerChanges.d.ts +3 -0
- package/dist/umd/sync/connectWebSocket.d.ts +2 -0
- package/dist/umd/sync/encodeIdsForServer.d.ts +4 -0
- package/dist/umd/sync/extractRealm.d.ts +2 -0
- package/dist/umd/sync/getLatestRevisionsPerTable.d.ts +6 -0
- package/dist/umd/sync/getTablesToSyncify.d.ts +3 -0
- package/dist/umd/sync/isOnline.d.ts +1 -0
- package/dist/umd/sync/isSyncNeeded.d.ts +2 -0
- package/dist/umd/sync/listClientChanges.d.ts +9 -0
- package/dist/umd/sync/listSyncifiedChanges.d.ts +5 -0
- package/dist/umd/sync/messageConsumerIsReady.d.ts +2 -0
- package/dist/umd/sync/messagesFromServerQueue.d.ts +8 -0
- package/dist/umd/sync/modifyLocalObjectsWithNewUserId.d.ts +4 -0
- package/dist/umd/sync/myId.d.ts +1 -0
- package/dist/umd/sync/numUnsyncedMutations.d.ts +2 -0
- package/dist/umd/sync/old_startSyncingClientChanges.d.ts +39 -0
- package/dist/umd/sync/performGuardedJob.d.ts +2 -0
- package/dist/umd/sync/ratelimit.d.ts +3 -0
- package/dist/umd/sync/registerSyncEvent.d.ts +3 -0
- package/dist/umd/sync/sync.d.ts +15 -0
- package/dist/umd/sync/syncIfPossible.d.ts +5 -0
- package/dist/umd/sync/syncWithServer.d.ts +6 -0
- package/dist/umd/sync/triggerSync.d.ts +2 -0
- package/dist/umd/sync/updateBaseRevs.d.ts +5 -0
- package/dist/umd/types/DXCAlert.d.ts +25 -0
- package/dist/umd/types/DXCInputField.d.ts +11 -0
- package/dist/umd/types/DXCUserInteraction.d.ts +93 -0
- package/dist/umd/types/NewIdOptions.d.ts +3 -0
- package/dist/umd/types/SWMessageEvent.d.ts +3 -0
- package/dist/umd/types/SWSyncEvent.d.ts +4 -0
- package/dist/umd/types/SyncState.d.ts +9 -0
- package/dist/umd/types/TXExpandos.d.ts +11 -0
- package/dist/umd/updateSchemaFromOptions.d.ts +3 -0
- package/dist/umd/userIsActive.d.ts +7 -0
- package/dist/umd/verifyConfig.d.ts +2 -0
- package/dist/umd/verifySchema.d.ts +2 -0
- package/dist/umd/yjs/YDexieCloudSyncState.d.ts +3 -0
- package/dist/umd/yjs/YTable.d.ts +3 -0
- package/dist/umd/yjs/applyYMessages.d.ts +9 -0
- package/dist/umd/yjs/awareness.d.ts +3 -0
- package/dist/umd/yjs/createYClientUpdateObservable.d.ts +4 -0
- package/dist/umd/yjs/createYHandler.d.ts +2 -0
- package/dist/umd/yjs/downloadYDocsFromServer.d.ts +3 -0
- package/dist/umd/yjs/getUpdatesTable.d.ts +3 -0
- package/dist/umd/yjs/listUpdatesSince.d.ts +3 -0
- package/dist/umd/yjs/listYClientMessagesAndStateVector.d.ts +26 -0
- package/dist/umd/yjs/reopenDocSignal.d.ts +10 -0
- package/dist/umd/yjs/updateYSyncStates.d.ts +6 -0
- package/package.json +3 -3
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import './extend-dexie-interface';
|
|
3
|
+
import { DexieCloudSyncOptions } from './DexieCloudSyncOptions';
|
|
4
|
+
import { SyncState } from './types/SyncState';
|
|
5
|
+
import { DXCWebSocketStatus } from './DXCWebSocketStatus';
|
|
6
|
+
import { UserLogin } from './db/entities/UserLogin';
|
|
7
|
+
export { DexieCloudTable } from './DexieCloudTable';
|
|
8
|
+
export * from './getTiedRealmId';
|
|
9
|
+
export { DBRealm, DBRealmMember, DBRealmRole, DBSyncedObject, DBPermissionSet, } from 'dexie-cloud-common';
|
|
10
|
+
export { resolveText } from './helpers/resolveText';
|
|
11
|
+
export { Invite } from './Invite';
|
|
12
|
+
export type { UserLogin, DXCWebSocketStatus, SyncState };
|
|
13
|
+
export type { DexieCloudSyncOptions };
|
|
14
|
+
export type { DexieCloudOptions, PeriodicSyncOptions } from './DexieCloudOptions';
|
|
15
|
+
export * from './types/DXCAlert';
|
|
16
|
+
export * from './types/DXCInputField';
|
|
17
|
+
export * from './types/DXCUserInteraction';
|
|
18
|
+
export { defineYDocTrigger } from './define-ydoc-trigger';
|
|
19
|
+
export declare function dexieCloud(dexie: Dexie): void;
|
|
20
|
+
export declare namespace dexieCloud {
|
|
21
|
+
var version: any;
|
|
22
|
+
}
|
|
23
|
+
export default dexieCloud;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DBRealm, DBRealmMember, DBRealmRole } from 'dexie-cloud-common';
|
|
2
|
+
import { DexieCloudAPI } from './DexieCloudAPI';
|
|
3
|
+
import { NewIdOptions } from './types/NewIdOptions';
|
|
4
|
+
type Optional<T, Props extends keyof T> = Omit<T, Props> & Partial<T>;
|
|
5
|
+
declare module 'dexie' {
|
|
6
|
+
interface Dexie {
|
|
7
|
+
cloud: DexieCloudAPI;
|
|
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'>>;
|
|
11
|
+
}
|
|
12
|
+
interface Table {
|
|
13
|
+
newId(options: NewIdOptions): string;
|
|
14
|
+
idPrefix(): string;
|
|
15
|
+
}
|
|
16
|
+
interface DexieConstructor {
|
|
17
|
+
Cloud: {
|
|
18
|
+
(db: Dexie): void;
|
|
19
|
+
version: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import { DBRealm, DBRealmMember } from 'dexie-cloud-common';
|
|
3
|
+
export type InternalAccessControlData = {
|
|
4
|
+
readonly selfMembers: DBRealmMember[];
|
|
5
|
+
readonly realms: DBRealm[];
|
|
6
|
+
readonly userId: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const getInternalAccessControlObservable: (x: Dexie) => import("./mapValueObservable").ObservableWithCurrentValue<{
|
|
9
|
+
selfMembers: DBRealmMember[];
|
|
10
|
+
realms: DBRealm[];
|
|
11
|
+
userId: string;
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Dexie } from 'dexie';
|
|
2
|
+
export declare const getInvitesObservable: (x: Dexie) => import("./mapValueObservable").ObservableWithCurrentValue<{
|
|
3
|
+
accept(): Promise<void>;
|
|
4
|
+
reject(): Promise<void>;
|
|
5
|
+
id: string;
|
|
6
|
+
userId?: string;
|
|
7
|
+
email?: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
invite?: boolean;
|
|
10
|
+
invitedDate?: Date;
|
|
11
|
+
invitedBy?: {
|
|
12
|
+
name: string;
|
|
13
|
+
email: string;
|
|
14
|
+
userId: string;
|
|
15
|
+
};
|
|
16
|
+
accepted?: Date;
|
|
17
|
+
rejected?: Date;
|
|
18
|
+
roles?: string[];
|
|
19
|
+
permissions?: import("dexie-cloud-common").DBPermissionSet;
|
|
20
|
+
realmId: string;
|
|
21
|
+
owner: string;
|
|
22
|
+
$ts?: number;
|
|
23
|
+
}[]>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import { DBPermissionSet, DBRealm } from 'dexie-cloud-common';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
export type PermissionsLookup = {
|
|
5
|
+
[realmId: string]: DBRealm & {
|
|
6
|
+
permissions: DBPermissionSet;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export type PermissionsLookupObservable = Observable<PermissionsLookup> & {
|
|
10
|
+
getValue(): PermissionsLookup;
|
|
11
|
+
};
|
|
12
|
+
export declare const getPermissionsLookupObservable: (x: Dexie) => import("./mapValueObservable").ObservableWithCurrentValue<{
|
|
13
|
+
[x: string]: DBRealm & {
|
|
14
|
+
permissions: DBPermissionSet;
|
|
15
|
+
};
|
|
16
|
+
}>;
|
|
@@ -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 const IS_SERVICE_WORKER: false;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** This class is a fallback for browsers that lacks BroadcastChannel but have
|
|
2
|
+
* service workers (which is Safari versions 11.1 through 15.3).
|
|
3
|
+
* Safari 15.4 with BroadcastChannel was released on 2022-03-14.
|
|
4
|
+
* We might be able to remove this class in a near future as Safari < 15.4 is
|
|
5
|
+
* already very low in market share as of 2023-03-10.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SWBroadcastChannel {
|
|
8
|
+
name: string;
|
|
9
|
+
constructor(name: string);
|
|
10
|
+
subscribe(listener: (message: any) => void): () => void;
|
|
11
|
+
postMessage(message: any): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function allSettled(possiblePromises: any[]): Promise<unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function flatten<T>(a: (T | T[])[]): T[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getMutationTable(tableName: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getTableFromMutationTable(mutationTable: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function makeArray<T>(iterable: Iterable<T>): T[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function randomString(bytes: number): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DXCAlert } from "../types/DXCAlert";
|
|
2
|
+
/** Resolve a message template with parameters.
|
|
3
|
+
*
|
|
4
|
+
* Example:
|
|
5
|
+
* resolveText({
|
|
6
|
+
* message: "Hello {name}!",
|
|
7
|
+
* messageCode: "HELLO",
|
|
8
|
+
* messageParams: {name: "David"}
|
|
9
|
+
* }) => "Hello David!"
|
|
10
|
+
*
|
|
11
|
+
* @param message Template message with {vars} in it.
|
|
12
|
+
* @param messageCode Unique code for the message. Can be used for translation.
|
|
13
|
+
* @param messageParams Parameters to be used in the message.
|
|
14
|
+
* @returns A final message where parameters have been replaced with values.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveText({ message, messageCode, messageParams }: DXCAlert): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function throwVersionIncrementNeeded(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createVisibilityStateObservable(): import("rxjs").Observable<DocumentVisibilityState>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isFirefox: boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DBCoreTable } from "dexie";
|
|
2
|
+
export declare function guardedTable(table: DBCoreTable): {
|
|
3
|
+
count: (req: import("dexie").DBCoreCountRequest) => Promise<number>;
|
|
4
|
+
get: (req: import("dexie").DBCoreGetRequest) => Promise<any>;
|
|
5
|
+
getMany: (req: import("dexie").DBCoreGetManyRequest) => Promise<any[]>;
|
|
6
|
+
openCursor: (req: import("dexie").DBCoreOpenCursorRequest) => Promise<import("dexie").DBCoreCursor | null>;
|
|
7
|
+
query: (req: import("dexie").DBCoreQueryRequest) => Promise<import("dexie").DBCoreQueryResponse>;
|
|
8
|
+
mutate: (req: import("dexie").DBCoreMutateRequest) => Promise<import("dexie").DBCoreMutateResponse>;
|
|
9
|
+
name: string;
|
|
10
|
+
schema: import("dexie").DBCoreTableSchema;
|
|
11
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DBCoreAddRequest, DBCoreDeleteRequest, DBCoreIndex, DBCorePutRequest } from 'dexie';
|
|
2
|
+
export declare function toStringTag(o: Object): any;
|
|
3
|
+
export declare function getEffectiveKeys(primaryKey: DBCoreIndex, req: (Pick<DBCoreAddRequest | DBCorePutRequest, 'type' | 'values'> & {
|
|
4
|
+
keys?: any[];
|
|
5
|
+
}) | Pick<DBCoreDeleteRequest, 'keys' | 'type'>): any[];
|
|
6
|
+
export declare function generateTablePrefix(tableName: string, allPrefixes: Set<string>): string;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param prefix A unique 3-letter short-name of the table.
|
|
10
|
+
* @param shardKey 3 last letters from another ID if colocation is requested. Verified on server on inserts - guarantees unique IDs across shards.
|
|
11
|
+
* The shardKey part of the key represent the shardId where it was first created. An object with this
|
|
12
|
+
* primary key can later on be moved to another shard without being altered. The reason for having
|
|
13
|
+
* the origin shardKey as part of the key, is that the server will not need to check uniqueness constraint
|
|
14
|
+
* across all shards on every insert. Updates / moves across shards are already controlled by the server
|
|
15
|
+
* in the sense that the objects needs to be there already - we only need this part for inserts.
|
|
16
|
+
* @returns
|
|
17
|
+
*/
|
|
18
|
+
export declare function generateKey(prefix: string, shardKey?: string): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DBCore, Middleware } from 'dexie';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { DexieCloudDB } from '../db/DexieCloudDB';
|
|
4
|
+
import { UserLogin } from '../db/entities/UserLogin';
|
|
5
|
+
export interface MutationTrackingMiddlewareArgs {
|
|
6
|
+
currentUserObservable: BehaviorSubject<UserLogin>;
|
|
7
|
+
db: DexieCloudDB;
|
|
8
|
+
}
|
|
9
|
+
/** Tracks all mutations in the same transaction as the mutations -
|
|
10
|
+
* so it is guaranteed that no mutation goes untracked - and if transaction
|
|
11
|
+
* aborts, the mutations won't be tracked.
|
|
12
|
+
*
|
|
13
|
+
* The sync job will use the tracked mutations as the source of truth when pushing
|
|
14
|
+
* changes to server and cleanup the tracked mutations once the server has
|
|
15
|
+
* ackowledged that it got them.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createMutationTrackingMiddleware({ currentUserObservable, db, }: MutationTrackingMiddlewareArgs): Middleware<DBCore>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DexieCloudSchema } from 'dexie-cloud-common';
|
|
2
|
+
import { DexieCloudDB } from './db/DexieCloudDB';
|
|
3
|
+
import { DexieCloudOptions } from './DexieCloudOptions';
|
|
4
|
+
export declare function performInitialSync(db: DexieCloudDB, cloudOptions: DexieCloudOptions, cloudSchema: DexieCloudSchema): Promise<void>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Dexie from 'dexie';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { PermissionChecker } from './PermissionChecker';
|
|
4
|
+
import './extend-dexie-interface';
|
|
5
|
+
export declare function permissions(dexie: Dexie, obj: {
|
|
6
|
+
owner?: string;
|
|
7
|
+
realmId?: string;
|
|
8
|
+
table?: () => string;
|
|
9
|
+
}, tableName?: string): Observable<PermissionChecker<any>>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** A way to log to console in production without terser stripping out
|
|
2
|
+
* it from the release bundle.
|
|
3
|
+
* This should be used very rarely and only in places where it's
|
|
4
|
+
* absolutely necessary to log something in production.
|
|
5
|
+
*
|
|
6
|
+
* @param level
|
|
7
|
+
* @param args
|
|
8
|
+
*/
|
|
9
|
+
export declare function prodLog(level: 'log' | 'warn' | 'error' | 'debug', ...args: any[]): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* ==========================================================================
|
|
10
10
|
*
|
|
11
|
-
* Version 4.4.
|
|
11
|
+
* Version 4.4.5, Wed Mar 25 2026
|
|
12
12
|
*
|
|
13
13
|
* https://dexie.org
|
|
14
14
|
*
|
|
@@ -18003,14 +18003,13 @@
|
|
|
18003
18003
|
throw new Error(`No database URL to connect WebSocket to`);
|
|
18004
18004
|
}
|
|
18005
18005
|
const readyForChangesMessage = db.messageConsumer.readyToServe.pipe(operators.filter((isReady) => isReady), // When consumer is ready for new messages, produce such a message to inform server about it
|
|
18006
|
-
operators.switchMap(() => db.
|
|
18007
|
-
operators.filter((syncState) => syncState && syncState.serverRevision), // We wont send anything to server before inital sync has taken place
|
|
18006
|
+
operators.switchMap(() => db.cloud.persistedSyncState.pipe(operators.filter((syncState) => !!(syncState && syncState.serverRevision)), operators.take(1))), // Wait reactively for syncState with serverRevision (avoids race with logout/re-sync)
|
|
18008
18007
|
operators.switchMap((syncState) => __awaiter(this, void 0, void 0, function* () {
|
|
18009
18008
|
return ({
|
|
18010
18009
|
// Produce the message to trigger server to send us new messages to consume:
|
|
18011
18010
|
type: 'ready',
|
|
18012
18011
|
rev: syncState.serverRevision,
|
|
18013
|
-
realmSetHash: yield computeRealmSetHash(syncState)
|
|
18012
|
+
realmSetHash: yield computeRealmSetHash(syncState),
|
|
18014
18013
|
});
|
|
18015
18014
|
})));
|
|
18016
18015
|
const messageProducer = rxjs.merge(readyForChangesMessage, db.messageProducer);
|
|
@@ -18023,7 +18022,8 @@
|
|
|
18023
18022
|
}*/
|
|
18024
18023
|
return userIsReallyActive.pipe(operators.map((isActive) => [isActive ? userLogin : null, syncState]));
|
|
18025
18024
|
}), operators.switchMap(([userLogin, syncState]) => {
|
|
18026
|
-
if ((userLogin === null || userLogin === void 0 ? void 0 : userLogin.isLoggedIn) &&
|
|
18025
|
+
if ((userLogin === null || userLogin === void 0 ? void 0 : userLogin.isLoggedIn) &&
|
|
18026
|
+
!(syncState === null || syncState === void 0 ? void 0 : syncState.realms.includes(userLogin.userId))) {
|
|
18027
18027
|
// We're in an in-between state when user is logged in but the user's realms are not yet synced.
|
|
18028
18028
|
// Don't make this change reconnect the websocket just yet. Wait till syncState is updated
|
|
18029
18029
|
// to iclude the user's realm.
|
|
@@ -18058,7 +18058,7 @@
|
|
|
18058
18058
|
accessTokenExpiration: refreshedLogin.accessTokenExpiration,
|
|
18059
18059
|
claims: refreshedLogin.claims,
|
|
18060
18060
|
license: refreshedLogin.license,
|
|
18061
|
-
data: refreshedLogin.data
|
|
18061
|
+
data: refreshedLogin.data,
|
|
18062
18062
|
});
|
|
18063
18063
|
})), operators.switchMap(() => createObservable()));
|
|
18064
18064
|
}
|
|
@@ -18066,7 +18066,7 @@
|
|
|
18066
18066
|
return rxjs.throwError(() => error);
|
|
18067
18067
|
}
|
|
18068
18068
|
}), operators.catchError((error) => {
|
|
18069
|
-
db.cloud.webSocketStatus.next(
|
|
18069
|
+
db.cloud.webSocketStatus.next('error');
|
|
18070
18070
|
if (error instanceof InvalidLicenseError) {
|
|
18071
18071
|
// Don't retry. Just throw and don't try connect again.
|
|
18072
18072
|
return rxjs.throwError(() => error);
|
|
@@ -18178,27 +18178,30 @@
|
|
|
18178
18178
|
// break free from possible active transaction:
|
|
18179
18179
|
setTimeout(() => {
|
|
18180
18180
|
const purpose = pullSignalled ? 'pull' : 'push';
|
|
18181
|
+
pullSignalled = false;
|
|
18182
|
+
pushSignalled = false;
|
|
18181
18183
|
syncStartTime = Date.now();
|
|
18182
18184
|
syncIfPossible(db, cloudOptions, cloudSchema, {
|
|
18183
18185
|
cancelToken,
|
|
18184
18186
|
retryImmediatelyOnFetchError: true, // workaround for "net::ERR_NETWORK_CHANGED" in chrome.
|
|
18185
18187
|
purpose,
|
|
18186
|
-
})
|
|
18188
|
+
})
|
|
18189
|
+
.then(() => {
|
|
18187
18190
|
if (cancelToken.cancelled) {
|
|
18188
18191
|
stop();
|
|
18189
18192
|
}
|
|
18190
18193
|
else {
|
|
18191
18194
|
if (pullSignalled || pushSignalled) {
|
|
18192
18195
|
// If we have signalled for more sync, do it now.
|
|
18193
|
-
|
|
18194
|
-
pushSignalled = false;
|
|
18196
|
+
// Note: don't reset flags here - syncAndRetry reads them in setTimeout
|
|
18195
18197
|
return syncAndRetry();
|
|
18196
18198
|
}
|
|
18197
18199
|
}
|
|
18198
18200
|
ongoingSync = false;
|
|
18199
18201
|
nextRetryTime = 0;
|
|
18200
18202
|
syncStartTime = 0;
|
|
18201
|
-
})
|
|
18203
|
+
})
|
|
18204
|
+
.catch((error) => {
|
|
18202
18205
|
console.error('error in syncIfPossible()', error);
|
|
18203
18206
|
if (cancelToken.cancelled) {
|
|
18204
18207
|
stop();
|
|
@@ -18241,7 +18244,8 @@
|
|
|
18241
18244
|
if (nextRetryTime) {
|
|
18242
18245
|
console.debug(`Sync is paused until ${new Date(nextRetryTime).toISOString()} due to error in last sync attempt`);
|
|
18243
18246
|
}
|
|
18244
|
-
else if (syncStartTime > 0 &&
|
|
18247
|
+
else if (syncStartTime > 0 &&
|
|
18248
|
+
Date.now() - syncStartTime > 20 * SECONDS) {
|
|
18245
18249
|
console.debug(`An existing sync operation is taking more than 20 seconds. Will resync when done.`);
|
|
18246
18250
|
}
|
|
18247
18251
|
return;
|
|
@@ -19432,7 +19436,7 @@
|
|
|
19432
19436
|
const downloading$ = createDownloadingState();
|
|
19433
19437
|
dexie.cloud = {
|
|
19434
19438
|
// @ts-ignore
|
|
19435
|
-
version: "4.4.
|
|
19439
|
+
version: "4.4.5",
|
|
19436
19440
|
options: Object.assign({}, DEFAULT_OPTIONS),
|
|
19437
19441
|
schema: null,
|
|
19438
19442
|
get currentUserId() {
|
|
@@ -19859,7 +19863,7 @@
|
|
|
19859
19863
|
}
|
|
19860
19864
|
}
|
|
19861
19865
|
// @ts-ignore
|
|
19862
|
-
dexieCloud.version = "4.4.
|
|
19866
|
+
dexieCloud.version = "4.4.5";
|
|
19863
19867
|
Dexie.Cloud = dexieCloud;
|
|
19864
19868
|
|
|
19865
19869
|
// In case the SW lives for a while, let it reuse already opened connections:
|