@verdant-web/store 2.8.5 → 3.0.0
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/bundle/index.js +9 -10
- package/dist/bundle/index.js.map +4 -4
- package/dist/cjs/DocumentManager.d.ts +1 -1
- package/dist/cjs/DocumentManager.js +1 -1
- package/dist/cjs/DocumentManager.js.map +1 -1
- package/dist/cjs/IDBService.d.ts +28 -7
- package/dist/cjs/IDBService.js +50 -13
- package/dist/cjs/IDBService.js.map +1 -1
- package/dist/cjs/UndoHistory.d.ts +1 -1
- package/dist/cjs/UndoHistory.js +6 -2
- package/dist/cjs/UndoHistory.js.map +1 -1
- package/dist/cjs/__tests__/batching.test.js +3 -1
- package/dist/cjs/__tests__/batching.test.js.map +1 -1
- package/dist/cjs/__tests__/documents.test.js +37 -6
- package/dist/cjs/__tests__/documents.test.js.map +1 -1
- package/dist/cjs/__tests__/fixtures/testStorage.d.ts +2 -2
- package/dist/cjs/__tests__/fixtures/testStorage.js +2 -1
- package/dist/cjs/__tests__/fixtures/testStorage.js.map +1 -1
- package/dist/cjs/__tests__/legacyOids.test.js +50 -17
- package/dist/cjs/__tests__/legacyOids.test.js.map +1 -1
- package/dist/cjs/__tests__/mutations.test.js +9 -3
- package/dist/cjs/__tests__/mutations.test.js.map +1 -1
- package/dist/cjs/__tests__/queries.test.js +6 -2
- package/dist/cjs/__tests__/queries.test.js.map +1 -1
- package/dist/cjs/__tests__/setup/indexedDB.d.ts +1 -1
- package/dist/cjs/__tests__/setup/indexedDB.js +8 -1
- package/dist/cjs/__tests__/setup/indexedDB.js.map +1 -1
- package/dist/cjs/__tests__/undo.test.js +16 -9
- package/dist/cjs/__tests__/undo.test.js.map +1 -1
- package/dist/cjs/client/Client.d.ts +1 -1
- package/dist/cjs/client/Client.js +7 -3
- package/dist/cjs/client/Client.js.map +1 -1
- package/dist/cjs/client/ClientDescriptor.js +21 -6
- package/dist/cjs/client/ClientDescriptor.js.map +1 -1
- package/dist/cjs/context.d.ts +10 -1
- package/dist/cjs/entities/Entity.d.ts +106 -178
- package/dist/cjs/entities/Entity.js +558 -376
- package/dist/cjs/entities/Entity.js.map +1 -1
- package/dist/cjs/entities/Entity.test.d.ts +1 -0
- package/dist/cjs/entities/Entity.test.js +194 -0
- package/dist/cjs/entities/Entity.test.js.map +1 -0
- package/dist/cjs/entities/EntityCache.d.ts +15 -0
- package/dist/cjs/entities/EntityCache.js +39 -0
- package/dist/cjs/entities/EntityCache.js.map +1 -0
- package/dist/cjs/entities/EntityMetadata.d.ts +68 -0
- package/dist/cjs/entities/EntityMetadata.js +261 -0
- package/dist/cjs/entities/EntityMetadata.js.map +1 -0
- package/dist/cjs/entities/EntityStore.d.ts +63 -68
- package/dist/cjs/entities/EntityStore.js +294 -438
- package/dist/cjs/entities/EntityStore.js.map +1 -1
- package/dist/cjs/entities/OperationBatcher.d.ts +52 -0
- package/dist/cjs/entities/OperationBatcher.js +165 -0
- package/dist/cjs/entities/OperationBatcher.js.map +1 -0
- package/dist/cjs/entities/types.d.ts +84 -0
- package/dist/cjs/entities/types.js +3 -0
- package/dist/cjs/entities/types.js.map +1 -0
- package/dist/cjs/files/EntityFile.d.ts +5 -2
- package/dist/cjs/files/EntityFile.js +8 -4
- package/dist/cjs/files/EntityFile.js.map +1 -1
- package/dist/cjs/files/FileManager.d.ts +3 -1
- package/dist/cjs/files/FileManager.js +5 -3
- package/dist/cjs/files/FileManager.js.map +1 -1
- package/dist/cjs/files/FileStorage.js +7 -7
- package/dist/cjs/files/FileStorage.js.map +1 -1
- package/dist/cjs/files/utils.d.ts +2 -0
- package/dist/cjs/files/utils.js +5 -2
- package/dist/cjs/files/utils.js.map +1 -1
- package/dist/cjs/idb.d.ts +2 -0
- package/dist/cjs/idb.js +50 -4
- package/dist/cjs/idb.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/metadata/AckInfoStore.js +1 -1
- package/dist/cjs/metadata/AckInfoStore.js.map +1 -1
- package/dist/cjs/metadata/BaselinesStore.d.ts +4 -1
- package/dist/cjs/metadata/BaselinesStore.js +19 -10
- package/dist/cjs/metadata/BaselinesStore.js.map +1 -1
- package/dist/cjs/metadata/LocalReplicaStore.d.ts +1 -1
- package/dist/cjs/metadata/LocalReplicaStore.js +11 -5
- package/dist/cjs/metadata/LocalReplicaStore.js.map +1 -1
- package/dist/cjs/metadata/Metadata.d.ts +26 -5
- package/dist/cjs/metadata/Metadata.js +55 -18
- package/dist/cjs/metadata/Metadata.js.map +1 -1
- package/dist/cjs/metadata/OperationsStore.d.ts +3 -0
- package/dist/cjs/metadata/OperationsStore.js +35 -15
- package/dist/cjs/metadata/OperationsStore.js.map +1 -1
- package/dist/cjs/migration/openDatabase.js +31 -10
- package/dist/cjs/migration/openDatabase.js.map +1 -1
- package/dist/cjs/queries/BaseQuery.js +13 -1
- package/dist/cjs/queries/BaseQuery.js.map +1 -1
- package/dist/cjs/queries/CollectionQueries.js +1 -1
- package/dist/cjs/queries/CollectionQueries.js.map +1 -1
- package/dist/cjs/queries/FindAllQuery.js +1 -0
- package/dist/cjs/queries/FindAllQuery.js.map +1 -1
- package/dist/cjs/queries/QueryCache.d.ts +1 -0
- package/dist/cjs/queries/QueryCache.js +4 -0
- package/dist/cjs/queries/QueryCache.js.map +1 -1
- package/dist/cjs/queries/QueryableStorage.d.ts +20 -0
- package/dist/cjs/queries/QueryableStorage.js +84 -0
- package/dist/cjs/queries/QueryableStorage.js.map +1 -0
- package/dist/cjs/queries/dbQueries.js +13 -3
- package/dist/cjs/queries/dbQueries.js.map +1 -1
- package/dist/cjs/sync/FileSync.d.ts +1 -0
- package/dist/cjs/sync/FileSync.js +1 -0
- package/dist/cjs/sync/FileSync.js.map +1 -1
- package/dist/cjs/sync/PushPullSync.d.ts +2 -1
- package/dist/cjs/sync/PushPullSync.js +7 -1
- package/dist/cjs/sync/PushPullSync.js.map +1 -1
- package/dist/cjs/sync/Sync.d.ts +6 -3
- package/dist/cjs/sync/Sync.js +9 -4
- package/dist/cjs/sync/Sync.js.map +1 -1
- package/dist/cjs/sync/WebSocketSync.d.ts +4 -1
- package/dist/cjs/sync/WebSocketSync.js +41 -11
- package/dist/cjs/sync/WebSocketSync.js.map +1 -1
- package/dist/esm/DocumentManager.d.ts +1 -1
- package/dist/esm/DocumentManager.js +1 -1
- package/dist/esm/DocumentManager.js.map +1 -1
- package/dist/esm/IDBService.d.ts +28 -7
- package/dist/esm/IDBService.js +51 -14
- package/dist/esm/IDBService.js.map +1 -1
- package/dist/esm/UndoHistory.d.ts +1 -1
- package/dist/esm/UndoHistory.js +6 -2
- package/dist/esm/UndoHistory.js.map +1 -1
- package/dist/esm/__tests__/batching.test.js +3 -1
- package/dist/esm/__tests__/batching.test.js.map +1 -1
- package/dist/esm/__tests__/documents.test.js +37 -6
- package/dist/esm/__tests__/documents.test.js.map +1 -1
- package/dist/esm/__tests__/fixtures/testStorage.d.ts +2 -2
- package/dist/esm/__tests__/fixtures/testStorage.js +2 -1
- package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
- package/dist/esm/__tests__/legacyOids.test.js +50 -17
- package/dist/esm/__tests__/legacyOids.test.js.map +1 -1
- package/dist/esm/__tests__/mutations.test.js +9 -3
- package/dist/esm/__tests__/mutations.test.js.map +1 -1
- package/dist/esm/__tests__/queries.test.js +6 -2
- package/dist/esm/__tests__/queries.test.js.map +1 -1
- package/dist/esm/__tests__/setup/indexedDB.d.ts +1 -1
- package/dist/esm/__tests__/setup/indexedDB.js +8 -1
- package/dist/esm/__tests__/setup/indexedDB.js.map +1 -1
- package/dist/esm/__tests__/undo.test.js +16 -9
- package/dist/esm/__tests__/undo.test.js.map +1 -1
- package/dist/esm/client/Client.d.ts +1 -1
- package/dist/esm/client/Client.js +7 -3
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/client/ClientDescriptor.js +21 -6
- package/dist/esm/client/ClientDescriptor.js.map +1 -1
- package/dist/esm/context.d.ts +10 -1
- package/dist/esm/entities/Entity.d.ts +106 -178
- package/dist/esm/entities/Entity.js +559 -376
- package/dist/esm/entities/Entity.js.map +1 -1
- package/dist/esm/entities/Entity.test.d.ts +1 -0
- package/dist/esm/entities/Entity.test.js +192 -0
- package/dist/esm/entities/Entity.test.js.map +1 -0
- package/dist/esm/entities/EntityCache.d.ts +15 -0
- package/dist/esm/entities/EntityCache.js +35 -0
- package/dist/esm/entities/EntityCache.js.map +1 -0
- package/dist/esm/entities/EntityMetadata.d.ts +68 -0
- package/dist/esm/entities/EntityMetadata.js +256 -0
- package/dist/esm/entities/EntityMetadata.js.map +1 -0
- package/dist/esm/entities/EntityStore.d.ts +63 -68
- package/dist/esm/entities/EntityStore.js +295 -439
- package/dist/esm/entities/EntityStore.js.map +1 -1
- package/dist/esm/entities/OperationBatcher.d.ts +52 -0
- package/dist/esm/entities/OperationBatcher.js +161 -0
- package/dist/esm/entities/OperationBatcher.js.map +1 -0
- package/dist/esm/entities/types.d.ts +84 -0
- package/dist/esm/entities/types.js +2 -0
- package/dist/esm/entities/types.js.map +1 -0
- package/dist/esm/files/EntityFile.d.ts +5 -2
- package/dist/esm/files/EntityFile.js +8 -4
- package/dist/esm/files/EntityFile.js.map +1 -1
- package/dist/esm/files/FileManager.d.ts +3 -1
- package/dist/esm/files/FileManager.js +5 -3
- package/dist/esm/files/FileManager.js.map +1 -1
- package/dist/esm/files/FileStorage.js +7 -7
- package/dist/esm/files/FileStorage.js.map +1 -1
- package/dist/esm/files/utils.d.ts +2 -0
- package/dist/esm/files/utils.js +4 -2
- package/dist/esm/files/utils.js.map +1 -1
- package/dist/esm/idb.d.ts +2 -0
- package/dist/esm/idb.js +47 -3
- package/dist/esm/idb.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/metadata/AckInfoStore.js +1 -1
- package/dist/esm/metadata/AckInfoStore.js.map +1 -1
- package/dist/esm/metadata/BaselinesStore.d.ts +4 -1
- package/dist/esm/metadata/BaselinesStore.js +19 -10
- package/dist/esm/metadata/BaselinesStore.js.map +1 -1
- package/dist/esm/metadata/LocalReplicaStore.d.ts +1 -1
- package/dist/esm/metadata/LocalReplicaStore.js +11 -5
- package/dist/esm/metadata/LocalReplicaStore.js.map +1 -1
- package/dist/esm/metadata/Metadata.d.ts +26 -5
- package/dist/esm/metadata/Metadata.js +56 -19
- package/dist/esm/metadata/Metadata.js.map +1 -1
- package/dist/esm/metadata/OperationsStore.d.ts +3 -0
- package/dist/esm/metadata/OperationsStore.js +35 -15
- package/dist/esm/metadata/OperationsStore.js.map +1 -1
- package/dist/esm/migration/openDatabase.js +32 -11
- package/dist/esm/migration/openDatabase.js.map +1 -1
- package/dist/esm/queries/BaseQuery.js +13 -1
- package/dist/esm/queries/BaseQuery.js.map +1 -1
- package/dist/esm/queries/CollectionQueries.js +1 -1
- package/dist/esm/queries/CollectionQueries.js.map +1 -1
- package/dist/esm/queries/FindAllQuery.js +1 -0
- package/dist/esm/queries/FindAllQuery.js.map +1 -1
- package/dist/esm/queries/QueryCache.d.ts +1 -0
- package/dist/esm/queries/QueryCache.js +4 -0
- package/dist/esm/queries/QueryCache.js.map +1 -1
- package/dist/esm/queries/QueryableStorage.d.ts +20 -0
- package/dist/esm/queries/QueryableStorage.js +80 -0
- package/dist/esm/queries/QueryableStorage.js.map +1 -0
- package/dist/esm/queries/dbQueries.js +13 -3
- package/dist/esm/queries/dbQueries.js.map +1 -1
- package/dist/esm/sync/FileSync.d.ts +1 -0
- package/dist/esm/sync/FileSync.js +1 -0
- package/dist/esm/sync/FileSync.js.map +1 -1
- package/dist/esm/sync/PushPullSync.d.ts +2 -1
- package/dist/esm/sync/PushPullSync.js +7 -1
- package/dist/esm/sync/PushPullSync.js.map +1 -1
- package/dist/esm/sync/Sync.d.ts +6 -3
- package/dist/esm/sync/Sync.js +9 -4
- package/dist/esm/sync/Sync.js.map +1 -1
- package/dist/esm/sync/WebSocketSync.d.ts +4 -1
- package/dist/esm/sync/WebSocketSync.js +41 -11
- package/dist/esm/sync/WebSocketSync.js.map +1 -1
- package/dist/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -7
- package/src/DocumentManager.ts +1 -1
- package/src/IDBService.ts +78 -17
- package/src/UndoHistory.ts +5 -3
- package/src/__tests__/batching.test.ts +5 -2
- package/src/__tests__/documents.test.ts +44 -6
- package/src/__tests__/fixtures/testStorage.ts +3 -0
- package/src/__tests__/legacyOids.test.ts +53 -17
- package/src/__tests__/mutations.test.ts +9 -3
- package/src/__tests__/queries.test.ts +6 -2
- package/src/__tests__/setup/indexedDB.ts +8 -1
- package/src/__tests__/undo.test.ts +17 -9
- package/src/client/Client.ts +7 -3
- package/src/client/ClientDescriptor.ts +24 -8
- package/src/context.ts +16 -1
- package/src/entities/Entity.test.ts +218 -0
- package/src/entities/Entity.ts +696 -616
- package/src/entities/EntityCache.ts +41 -0
- package/src/entities/EntityMetadata.ts +364 -0
- package/src/entities/EntityStore.ts +384 -621
- package/src/entities/OperationBatcher.ts +251 -0
- package/src/entities/types.ts +154 -0
- package/src/files/EntityFile.ts +9 -4
- package/src/files/FileManager.ts +5 -3
- package/src/files/FileStorage.ts +7 -13
- package/src/files/utils.ts +6 -2
- package/src/idb.ts +51 -3
- package/src/index.ts +1 -1
- package/src/metadata/AckInfoStore.ts +1 -1
- package/src/metadata/BaselinesStore.ts +16 -24
- package/src/metadata/LocalReplicaStore.ts +13 -6
- package/src/metadata/Metadata.ts +109 -24
- package/src/metadata/OperationsStore.ts +37 -16
- package/src/migration/openDatabase.ts +32 -10
- package/src/queries/BaseQuery.ts +14 -1
- package/src/queries/CollectionQueries.ts +1 -1
- package/src/queries/FindAllQuery.ts +4 -0
- package/src/queries/QueryCache.ts +5 -0
- package/src/queries/QueryableStorage.ts +107 -0
- package/src/queries/dbQueries.ts +10 -3
- package/src/sync/FileSync.ts +2 -0
- package/src/sync/PushPullSync.ts +8 -1
- package/src/sync/Sync.ts +14 -6
- package/src/sync/WebSocketSync.ts +47 -10
- package/dist/cjs/entities/DocumentFamiliyCache.d.ts +0 -96
- package/dist/cjs/entities/DocumentFamiliyCache.js +0 -287
- package/dist/cjs/entities/DocumentFamiliyCache.js.map +0 -1
- package/dist/esm/entities/DocumentFamiliyCache.d.ts +0 -96
- package/dist/esm/entities/DocumentFamiliyCache.js +0 -283
- package/dist/esm/entities/DocumentFamiliyCache.js.map +0 -1
- package/src/entities/DocumentFamiliyCache.ts +0 -426
- package/src/entities/design.tldr +0 -808
package/dist/cjs/files/utils.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.fileToArrayBuffer = exports.processValueFiles = exports.createFileData = void 0;
|
|
6
|
+
exports.fileToArrayBuffer = exports.processValueFiles = exports.isFile = exports.createFileData = void 0;
|
|
7
7
|
const common_1 = require("@verdant-web/common");
|
|
8
8
|
const cuid_1 = __importDefault(require("cuid"));
|
|
9
9
|
function createFileData(file) {
|
|
@@ -18,9 +18,12 @@ function createFileData(file) {
|
|
|
18
18
|
}
|
|
19
19
|
exports.createFileData = createFileData;
|
|
20
20
|
function isFile(value) {
|
|
21
|
-
return value instanceof File
|
|
21
|
+
return (value instanceof File ||
|
|
22
|
+
(typeof Blob !== 'undefined' && value instanceof Blob));
|
|
22
23
|
}
|
|
24
|
+
exports.isFile = isFile;
|
|
23
25
|
/**
|
|
26
|
+
* MUTATES the value.
|
|
24
27
|
* Replaces File values with refs and returns the normalized value.
|
|
25
28
|
* The list of files passed to the second argument will be populated with the files found in the value.
|
|
26
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/files/utils.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA8D;AAC9D,gDAAwB;AAExB,SAAgB,cAAc,CAAC,IAAU;IACxC,OAAO;QACN,EAAE,EAAE,IAAA,cAAI,GAAE;QACV,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC;AACH,CAAC;AATD,wCASC;AAED,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/files/utils.ts"],"names":[],"mappings":";;;;;;AAAA,gDAA8D;AAC9D,gDAAwB;AAExB,SAAgB,cAAc,CAAC,IAAU;IACxC,OAAO;QACN,EAAE,EAAE,IAAA,cAAI,GAAE;QACV,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC;AACH,CAAC;AATD,wCASC;AAED,SAAgB,MAAM,CAAC,KAAU;IAChC,OAAO,CACN,KAAK,YAAY,IAAI;QACrB,CAAC,OAAO,IAAI,KAAK,WAAW,IAAI,KAAK,YAAY,IAAI,CAAC,CACtD,CAAC;AACH,CAAC;AALD,wBAKC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAChC,KAAU,EACV,gBAA8C;IAE9C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;QACnD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAA,sBAAa,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC9B;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,KAAK,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;SACzD;QACD,OAAO,KAAK,CAAC;KACb;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC9B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;SAC7D;QACD,OAAO,KAAK,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAzBD,8CAyBC;AAED,SAAgB,iBAAiB,CAAC,IAAiB;IAClD,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACpB,OAAO,CAAC,MAAM,CAAC,MAAqB,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACJ,CAAC;AATD,8CASC"}
|
package/dist/cjs/idb.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function isAbortError(err: unknown): boolean;
|
|
1
2
|
export declare function storeRequestPromise<T>(request: IDBRequest<T>): Promise<T>;
|
|
2
3
|
export declare function cursorIterator<T>(request: IDBRequest<IDBCursorWithValue | null>, callback: (value: T | null) => boolean): Promise<void>;
|
|
3
4
|
export declare function getSizeOfObjectStore(database: IDBDatabase, storeName: string): Promise<{
|
|
@@ -9,3 +10,4 @@ export declare function closeDatabase(db: IDBDatabase): Promise<void>;
|
|
|
9
10
|
export declare function deleteAllDatabases(namespace: string, indexedDB?: IDBFactory): Promise<void>;
|
|
10
11
|
export declare function deleteDatabase(name: string, indexedDB?: IDBFactory): Promise<IDBDatabase>;
|
|
11
12
|
export declare function getAllDatabaseNamesAndVersions(indexedDB?: IDBFactory): Promise<IDBDatabaseInfo[]>;
|
|
13
|
+
export declare function createAbortableTransaction(db: IDBDatabase, storeNames: string[], mode: 'readonly' | 'readwrite', abortSignal?: AbortSignal, log?: (...args: any[]) => void): IDBTransaction;
|
package/dist/cjs/idb.js
CHANGED
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAllDatabaseNamesAndVersions = exports.deleteDatabase = exports.deleteAllDatabases = exports.closeDatabase = exports.getAllFromObjectStores = exports.getSizeOfObjectStore = exports.cursorIterator = exports.storeRequestPromise = void 0;
|
|
3
|
+
exports.createAbortableTransaction = exports.getAllDatabaseNamesAndVersions = exports.deleteDatabase = exports.deleteAllDatabases = exports.closeDatabase = exports.getAllFromObjectStores = exports.getSizeOfObjectStore = exports.cursorIterator = exports.storeRequestPromise = exports.isAbortError = void 0;
|
|
4
4
|
const common_1 = require("@verdant-web/common");
|
|
5
|
+
function isAbortError(err) {
|
|
6
|
+
return err instanceof Error && err.name === 'AbortError';
|
|
7
|
+
}
|
|
8
|
+
exports.isAbortError = isAbortError;
|
|
5
9
|
function storeRequestPromise(request) {
|
|
6
10
|
return new Promise((resolve, reject) => {
|
|
7
11
|
request.onsuccess = () => {
|
|
8
12
|
resolve(request.result);
|
|
9
13
|
};
|
|
10
14
|
request.onerror = () => {
|
|
11
|
-
|
|
15
|
+
if (request.error && isAbortError(request.error)) {
|
|
16
|
+
// TODO: is this the right thing to do?
|
|
17
|
+
resolve(request.result);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
reject(request.error);
|
|
21
|
+
}
|
|
12
22
|
};
|
|
13
23
|
});
|
|
14
24
|
}
|
|
@@ -30,7 +40,12 @@ function cursorIterator(request, callback) {
|
|
|
30
40
|
}
|
|
31
41
|
};
|
|
32
42
|
request.onerror = () => {
|
|
33
|
-
|
|
43
|
+
if (request.error && isAbortError(request.error)) {
|
|
44
|
+
resolve();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
reject(request.error);
|
|
48
|
+
}
|
|
34
49
|
};
|
|
35
50
|
});
|
|
36
51
|
}
|
|
@@ -51,7 +66,15 @@ function getSizeOfObjectStore(database, storeName) {
|
|
|
51
66
|
}
|
|
52
67
|
};
|
|
53
68
|
cursorReq.onerror = function (e) {
|
|
54
|
-
|
|
69
|
+
if (cursorReq.error && isAbortError(cursorReq.error)) {
|
|
70
|
+
resolve({
|
|
71
|
+
count: count,
|
|
72
|
+
size: size,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
reject(cursorReq.error);
|
|
77
|
+
}
|
|
55
78
|
};
|
|
56
79
|
tx.oncomplete = function (e) {
|
|
57
80
|
resolve({
|
|
@@ -109,4 +132,27 @@ async function getAllDatabaseNamesAndVersions(indexedDB = window.indexedDB) {
|
|
|
109
132
|
return indexedDB.databases();
|
|
110
133
|
}
|
|
111
134
|
exports.getAllDatabaseNamesAndVersions = getAllDatabaseNamesAndVersions;
|
|
135
|
+
function createAbortableTransaction(db, storeNames, mode, abortSignal, log) {
|
|
136
|
+
const tx = db.transaction(storeNames, mode);
|
|
137
|
+
if (abortSignal) {
|
|
138
|
+
const abort = () => {
|
|
139
|
+
log === null || log === void 0 ? void 0 : log('debug', 'aborting transaction');
|
|
140
|
+
try {
|
|
141
|
+
tx.abort();
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
log === null || log === void 0 ? void 0 : log('debug', 'aborting transaction failed', e);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
abortSignal.addEventListener('abort', abort);
|
|
148
|
+
tx.addEventListener('error', () => {
|
|
149
|
+
abortSignal.removeEventListener('abort', abort);
|
|
150
|
+
});
|
|
151
|
+
tx.addEventListener('complete', () => {
|
|
152
|
+
abortSignal.removeEventListener('abort', abort);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return tx;
|
|
156
|
+
}
|
|
157
|
+
exports.createAbortableTransaction = createAbortableTransaction;
|
|
112
158
|
//# sourceMappingURL=idb.js.map
|
package/dist/cjs/idb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../../src/idb.ts"],"names":[],"mappings":";;;AAAA,gDAAwD;AAExD,SAAgB,mBAAmB,CAAI,OAAsB;IAC5D,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;YACxB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;YACtB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"idb.js","sourceRoot":"","sources":["../../src/idb.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export { Client as Storage };
|
|
|
8
8
|
export type { ClientDescriptorOptions };
|
|
9
9
|
export type { ClientDescriptorOptions as StorageInitOptions };
|
|
10
10
|
export { Entity } from './entities/Entity.js';
|
|
11
|
-
export type { ObjectEntity, ListEntity, EntityShape, AccessibleEntityProperty, AnyEntity, EntityDestructured, } from './entities/
|
|
11
|
+
export type { ObjectEntity, ListEntity, EntityShape, AccessibleEntityProperty, AnyEntity, EntityDestructured, } from './entities/types.js';
|
|
12
12
|
export { ServerSync } from './sync/Sync.js';
|
|
13
13
|
export type { SyncTransportMode } from './sync/Sync.js';
|
|
14
14
|
export { EntityFile } from './files/EntityFile.js';
|
|
@@ -18,7 +18,7 @@ class AckInfoStore extends IDBService_js_1.IDBService {
|
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
this.setGlobalAck = async (ack) => {
|
|
21
|
-
await this.run('info', (store) => store.put({ type: 'ack', globalAckTimestamp: ack }), 'readwrite');
|
|
21
|
+
await this.run('info', (store) => store.put({ type: 'ack', globalAckTimestamp: ack }), { mode: 'readwrite' });
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AckInfoStore.js","sourceRoot":"","sources":["../../../src/metadata/AckInfoStore.ts"],"names":[],"mappings":";;;AAAA,oDAA8C;AAS9C,MAAa,YAAa,SAAQ,0BAAU;IAA5C;;QACC,eAAU,GAAG,KAAK,IAAsB,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAU,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5E,IAAI,MAAM,EAAE;gBACX,OAAO,MAAM,CAAC;aACd;iBAAM;gBACN,OAAO;oBACN,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE,KAAK;iBACX,CAAC;aACF;QACF,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YACpC,MAAM,IAAI,CAAC,GAAG,CACb,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,EAC9D,WAAW,
|
|
1
|
+
{"version":3,"file":"AckInfoStore.js","sourceRoot":"","sources":["../../../src/metadata/AckInfoStore.ts"],"names":[],"mappings":";;;AAAA,oDAA8C;AAS9C,MAAa,YAAa,SAAQ,0BAAU;IAA5C;;QACC,eAAU,GAAG,KAAK,IAAsB,EAAE;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAU,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5E,IAAI,MAAM,EAAE;gBACX,OAAO,MAAM,CAAC;aACd;iBAAM;gBACN,OAAO;oBACN,kBAAkB,EAAE,IAAI;oBACxB,IAAI,EAAE,KAAK;iBACX,CAAC;aACF;QACF,CAAC,CAAC;QAEF,iBAAY,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YACpC,MAAM,IAAI,CAAC,GAAG,CACb,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,CAAC,EAC9D,EAAE,IAAI,EAAE,WAAW,EAAE,CACrB,CAAC;QACH,CAAC,CAAC;IACH,CAAC;CAAA;AApBD,oCAoBC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { DocumentBaseline, ObjectIdentifier } from '@verdant-web/common';
|
|
2
2
|
import { IDBService } from '../IDBService.js';
|
|
3
|
+
import { Context } from '../context.js';
|
|
3
4
|
export declare class BaselinesStore extends IDBService {
|
|
4
|
-
constructor(db: IDBDatabase
|
|
5
|
+
constructor(db: IDBDatabase, opts: {
|
|
6
|
+
log?: Context['log'];
|
|
7
|
+
});
|
|
5
8
|
getAllForDocument: (oid: ObjectIdentifier, { mode, transaction, }?: {
|
|
6
9
|
mode?: "readonly" | "readwrite" | undefined;
|
|
7
10
|
transaction?: IDBTransaction | undefined;
|
|
@@ -4,8 +4,8 @@ exports.BaselinesStore = void 0;
|
|
|
4
4
|
const common_1 = require("@verdant-web/common");
|
|
5
5
|
const IDBService_js_1 = require("../IDBService.js");
|
|
6
6
|
class BaselinesStore extends IDBService_js_1.IDBService {
|
|
7
|
-
constructor(db) {
|
|
8
|
-
super(db);
|
|
7
|
+
constructor(db, opts) {
|
|
8
|
+
super(db, opts);
|
|
9
9
|
this.getAllForDocument = async (oid, { mode = 'readonly', transaction, } = {}) => {
|
|
10
10
|
const baselines = [];
|
|
11
11
|
await this.iterateOverAllForDocument(oid, (baseline) => {
|
|
@@ -33,14 +33,14 @@ class BaselinesStore extends IDBService_js_1.IDBService {
|
|
|
33
33
|
// store.openCursor(IDBKeyRange.bound(start, end, false, false)),
|
|
34
34
|
// ];
|
|
35
35
|
// }
|
|
36
|
-
}, iterator, mode, transaction);
|
|
36
|
+
}, iterator, { mode, transaction });
|
|
37
37
|
};
|
|
38
38
|
this.iterateOverAllForCollection = async (collection, iterator, { mode = 'readonly', transaction, } = {}) => {
|
|
39
39
|
return this.iterate('baselines', (store) => {
|
|
40
40
|
return [
|
|
41
41
|
store.openCursor(IDBKeyRange.bound(collection, collection + '\uffff', false, false)),
|
|
42
42
|
];
|
|
43
|
-
}, iterator, mode, transaction);
|
|
43
|
+
}, iterator, { mode, transaction });
|
|
44
44
|
};
|
|
45
45
|
this.getAllForMultipleDocuments = async (docOids, { mode = 'readonly' } = {}) => {
|
|
46
46
|
const result = await this.runAll('baselines', (store) => {
|
|
@@ -62,7 +62,7 @@ class BaselinesStore extends IDBService_js_1.IDBService {
|
|
|
62
62
|
// ];
|
|
63
63
|
// }
|
|
64
64
|
});
|
|
65
|
-
}, mode);
|
|
65
|
+
}, { mode });
|
|
66
66
|
return result.flat();
|
|
67
67
|
};
|
|
68
68
|
this.getAllSince = async (timestamp, { mode = 'readonly' } = {}) => {
|
|
@@ -72,24 +72,33 @@ class BaselinesStore extends IDBService_js_1.IDBService {
|
|
|
72
72
|
: undefined;
|
|
73
73
|
const index = store.index('timestamp');
|
|
74
74
|
return index.getAll(range);
|
|
75
|
-
}, mode);
|
|
75
|
+
}, { mode });
|
|
76
76
|
};
|
|
77
77
|
this.get = async (oid, { transaction, mode = 'readonly', } = {}) => {
|
|
78
|
-
return this.run('baselines', (store) => store.get(oid),
|
|
78
|
+
return this.run('baselines', (store) => store.get(oid), {
|
|
79
|
+
mode,
|
|
80
|
+
transaction,
|
|
81
|
+
});
|
|
79
82
|
};
|
|
80
83
|
this.set = async (baseline, { transaction } = {}) => {
|
|
81
|
-
await this.run('baselines', (store) => store.put(baseline),
|
|
84
|
+
await this.run('baselines', (store) => store.put(baseline), {
|
|
85
|
+
mode: 'readwrite',
|
|
86
|
+
transaction,
|
|
87
|
+
});
|
|
82
88
|
};
|
|
83
89
|
this.setAll = async (baselines, { transaction } = {}) => {
|
|
84
90
|
await this.runAll('baselines', (store) => {
|
|
85
91
|
return baselines.map((baseline) => store.put(baseline));
|
|
86
|
-
}, 'readwrite', transaction);
|
|
92
|
+
}, { mode: 'readwrite', transaction });
|
|
87
93
|
};
|
|
88
94
|
this.reset = () => {
|
|
89
95
|
return this.clear('baselines');
|
|
90
96
|
};
|
|
91
97
|
this.delete = async (oid, { transaction }) => {
|
|
92
|
-
await this.run('baselines', (store) => store.delete(oid),
|
|
98
|
+
await this.run('baselines', (store) => store.delete(oid), {
|
|
99
|
+
mode: 'readwrite',
|
|
100
|
+
transaction,
|
|
101
|
+
});
|
|
93
102
|
};
|
|
94
103
|
}
|
|
95
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaselinesStore.js","sourceRoot":"","sources":["../../../src/metadata/BaselinesStore.ts"],"names":[],"mappings":";;;AAAA,gDAO6B;AAC7B,oDAA8C;
|
|
1
|
+
{"version":3,"file":"BaselinesStore.js","sourceRoot":"","sources":["../../../src/metadata/BaselinesStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export type LocalReplicaInfo = {
|
|
|
8
8
|
export declare class LocalReplicaStore extends IDBService {
|
|
9
9
|
private _creating;
|
|
10
10
|
private cached;
|
|
11
|
-
get: ({ transaction }?: {
|
|
11
|
+
get: ({ transaction, }?: {
|
|
12
12
|
transaction?: IDBTransaction | undefined;
|
|
13
13
|
}) => Promise<LocalReplicaInfo>;
|
|
14
14
|
update: (data: Partial<LocalReplicaInfo>, { transaction }?: {
|
|
@@ -9,11 +9,11 @@ const IDBService_js_1 = require("../IDBService.js");
|
|
|
9
9
|
class LocalReplicaStore extends IDBService_js_1.IDBService {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
12
|
-
this.get = async ({ transaction } = {}) => {
|
|
12
|
+
this.get = async ({ transaction, } = {}) => {
|
|
13
13
|
if (this.cached) {
|
|
14
14
|
return this.cached;
|
|
15
15
|
}
|
|
16
|
-
const lookup = await this.run('info', (store) => store.get('localReplicaInfo'),
|
|
16
|
+
const lookup = await this.run('info', (store) => store.get('localReplicaInfo'), { transaction });
|
|
17
17
|
// not cached, not in db, create it
|
|
18
18
|
if (!lookup) {
|
|
19
19
|
// prevent a race condition if get() is called again while we are
|
|
@@ -28,7 +28,9 @@ class LocalReplicaStore extends IDBService_js_1.IDBService {
|
|
|
28
28
|
ackedLogicalTime: null,
|
|
29
29
|
lastSyncedLogicalTime: null,
|
|
30
30
|
};
|
|
31
|
-
await this.run('info', (store) => store.put(replicaInfo),
|
|
31
|
+
await this.run('info', (store) => store.put(replicaInfo), {
|
|
32
|
+
mode: 'readwrite',
|
|
33
|
+
});
|
|
32
34
|
this.cached = replicaInfo;
|
|
33
35
|
})();
|
|
34
36
|
}
|
|
@@ -41,14 +43,18 @@ class LocalReplicaStore extends IDBService_js_1.IDBService {
|
|
|
41
43
|
this.update = async (data, { transaction } = {}) => {
|
|
42
44
|
const localReplicaInfo = await this.get({ transaction });
|
|
43
45
|
Object.assign(localReplicaInfo, data);
|
|
44
|
-
await this.run('info', (store) => store.put(localReplicaInfo),
|
|
46
|
+
await this.run('info', (store) => store.put(localReplicaInfo), {
|
|
47
|
+
mode: 'readwrite',
|
|
48
|
+
});
|
|
45
49
|
this.cached = localReplicaInfo;
|
|
46
50
|
};
|
|
47
51
|
this.reset = async () => {
|
|
48
52
|
const localInfo = await this.get();
|
|
49
53
|
localInfo.ackedLogicalTime = null;
|
|
50
54
|
localInfo.lastSyncedLogicalTime = null;
|
|
51
|
-
await this.run('info', (store) => store.put(localInfo),
|
|
55
|
+
await this.run('info', (store) => store.put(localInfo), {
|
|
56
|
+
mode: 'readwrite',
|
|
57
|
+
});
|
|
52
58
|
};
|
|
53
59
|
}
|
|
54
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalReplicaStore.js","sourceRoot":"","sources":["../../../src/metadata/LocalReplicaStore.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA8C;AAS9C,MAAa,iBAAkB,SAAQ,0BAAU;IAAjD;;QAIC,QAAG,GAAG,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"LocalReplicaStore.js","sourceRoot":"","sources":["../../../src/metadata/LocalReplicaStore.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA8C;AAS9C,MAAa,iBAAkB,SAAQ,0BAAU;IAAjD;;QAIC,QAAG,GAAG,KAAK,EAAE,EACZ,WAAW,MAC0B,EAAE,EAA6B,EAAE;YACtE,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO,IAAI,CAAC,MAAM,CAAC;aACnB;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC5B,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EACxC,EAAE,WAAW,EAAE,CACf,CAAC;YAEF,mCAAmC;YACnC,IAAI,CAAC,MAAM,EAAE;gBACZ,iEAAiE;gBACjE,4BAA4B;gBAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACpB,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,EAAE;wBAC5B,kCAAkC;wBAClC,MAAM,SAAS,GAAG,IAAA,cAAI,GAAE,CAAC;wBACzB,MAAM,WAAW,GAAqB;4BACrC,IAAI,EAAE,kBAAkB;4BACxB,EAAE,EAAE,SAAS;4BACb,gBAAgB,EAAE,IAAI;4BACtB,qBAAqB,EAAE,IAAI;yBAC3B,CAAC;wBACF,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;4BACzD,IAAI,EAAE,WAAW;yBACjB,CAAC,CAAC;wBACH,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;oBAC3B,CAAC,CAAC,EAAE,CAAC;iBACL;gBACD,MAAM,IAAI,CAAC,SAAS,CAAC;gBAErB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;aACjC;YAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,OAAO,MAAM,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,KAAK,EACb,IAA+B,EAC/B,EAAE,WAAW,KAAuC,EAAE,EACrD,EAAE;YACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;gBAC9D,IAAI,EAAE,WAAW;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC;QAChC,CAAC,CAAC;QAEF,UAAK,GAAG,KAAK,IAAI,EAAE;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAClC,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACvC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACvD,IAAI,EAAE,WAAW;aACjB,CAAC,CAAC;QACJ,CAAC,CAAC;IACH,CAAC;CAAA;AAlED,8CAkEC"}
|
|
@@ -34,7 +34,7 @@ export declare class Metadata extends EventSubscriber<{
|
|
|
34
34
|
private context;
|
|
35
35
|
constructor({ disableRebasing, context, }: {
|
|
36
36
|
disableRebasing?: boolean;
|
|
37
|
-
context: Omit<Context, 'documentDb'>;
|
|
37
|
+
context: Omit<Context, 'documentDb' | 'getNow'>;
|
|
38
38
|
});
|
|
39
39
|
private get db();
|
|
40
40
|
private get log();
|
|
@@ -44,7 +44,9 @@ export declare class Metadata extends EventSubscriber<{
|
|
|
44
44
|
/**
|
|
45
45
|
* Methods for accessing data
|
|
46
46
|
*/
|
|
47
|
-
createTransaction: (stores: ('operations' | 'baselines')[]
|
|
47
|
+
createTransaction: (stores: ('operations' | 'baselines')[], opts?: {
|
|
48
|
+
abort?: AbortSignal;
|
|
49
|
+
}) => IDBTransaction;
|
|
48
50
|
/**
|
|
49
51
|
* Gets the OID and every sub-object OID for a given document.
|
|
50
52
|
* Includes any sub-objects that are not referenced by the root object
|
|
@@ -55,6 +57,12 @@ export declare class Metadata extends EventSubscriber<{
|
|
|
55
57
|
getDocumentSnapshot: (oid: ObjectIdentifier, options?: {
|
|
56
58
|
to?: string;
|
|
57
59
|
}) => Promise<any>;
|
|
60
|
+
getDocumentData: (oid: ObjectIdentifier, opts?: {
|
|
61
|
+
abort?: AbortSignal;
|
|
62
|
+
}) => Promise<{
|
|
63
|
+
baselines: DocumentBaseline<any>[];
|
|
64
|
+
operations: Record<string, Operation[]>;
|
|
65
|
+
}>;
|
|
58
66
|
/**
|
|
59
67
|
* Methods for writing data
|
|
60
68
|
*/
|
|
@@ -68,13 +76,26 @@ export declare class Metadata extends EventSubscriber<{
|
|
|
68
76
|
* Applies a patch to the document and stores it in the database.
|
|
69
77
|
* @returns the oldest local history timestamp
|
|
70
78
|
*/
|
|
71
|
-
|
|
79
|
+
insertLocalOperations: (operations: Operation[], opts?: {
|
|
80
|
+
transaction?: IDBTransaction;
|
|
81
|
+
}) => Promise<void>;
|
|
72
82
|
/**
|
|
73
83
|
* Inserts remote operations. This does not affect local history.
|
|
74
84
|
* @returns a list of affected document OIDs
|
|
75
85
|
*/
|
|
76
|
-
insertRemoteOperations: (operations: Operation[]
|
|
77
|
-
|
|
86
|
+
insertRemoteOperations: (operations: Operation[], opts?: {
|
|
87
|
+
transaction?: IDBTransaction;
|
|
88
|
+
}) => Promise<string[]>;
|
|
89
|
+
insertRemoteBaselines: (baselines: DocumentBaseline[], opts?: {
|
|
90
|
+
transaction?: IDBTransaction;
|
|
91
|
+
}) => Promise<string[]>;
|
|
92
|
+
insertData: (data: {
|
|
93
|
+
baselines?: DocumentBaseline[];
|
|
94
|
+
operations?: Operation[];
|
|
95
|
+
isLocal?: boolean;
|
|
96
|
+
}, opts?: {
|
|
97
|
+
abort: AbortSignal;
|
|
98
|
+
}) => Promise<void>;
|
|
78
99
|
updateLastSynced: (timestamp: string) => Promise<void>;
|
|
79
100
|
lastSyncedTimestamp: () => Promise<string | null>;
|
|
80
101
|
private tryAutonomousRebase;
|
|
@@ -28,8 +28,8 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
28
28
|
/**
|
|
29
29
|
* Methods for accessing data
|
|
30
30
|
*/
|
|
31
|
-
this.createTransaction = (stores) => {
|
|
32
|
-
return this.db
|
|
31
|
+
this.createTransaction = (stores, opts = {}) => {
|
|
32
|
+
return (0, idb_js_1.createAbortableTransaction)(this.db, stores, 'readwrite', opts.abort, this.context.log);
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
35
35
|
* Gets the OID and every sub-object OID for a given document.
|
|
@@ -42,7 +42,7 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
42
42
|
(0, common_1.assert)(documentOid === oid, 'Must be root document OID');
|
|
43
43
|
oids.add(documentOid);
|
|
44
44
|
// readwrite mode to block on other write transactions
|
|
45
|
-
const transaction = this.
|
|
45
|
+
const transaction = this.createTransaction(['baselines', 'operations']);
|
|
46
46
|
await Promise.all([
|
|
47
47
|
this.baselines.iterateOverAllForDocument(documentOid, (baseline) => {
|
|
48
48
|
oids.add(baseline.oid);
|
|
@@ -98,6 +98,28 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
98
98
|
}
|
|
99
99
|
return root;
|
|
100
100
|
};
|
|
101
|
+
this.getDocumentData = async (oid, opts) => {
|
|
102
|
+
const transaction = this.createTransaction(['baselines', 'operations'], opts);
|
|
103
|
+
const baselines = [];
|
|
104
|
+
const operations = {};
|
|
105
|
+
await Promise.all([
|
|
106
|
+
this.baselines.iterateOverAllForDocument(oid, (baseline) => {
|
|
107
|
+
baselines.push(baseline);
|
|
108
|
+
}, {
|
|
109
|
+
transaction,
|
|
110
|
+
}),
|
|
111
|
+
this.operations.iterateOverAllOperationsForDocument(oid, (op) => {
|
|
112
|
+
var _a;
|
|
113
|
+
var _b;
|
|
114
|
+
(_a = operations[_b = op.oid]) !== null && _a !== void 0 ? _a : (operations[_b] = []);
|
|
115
|
+
operations[op.oid].push(op);
|
|
116
|
+
}, { transaction }),
|
|
117
|
+
]);
|
|
118
|
+
return {
|
|
119
|
+
baselines,
|
|
120
|
+
operations,
|
|
121
|
+
};
|
|
122
|
+
};
|
|
101
123
|
/**
|
|
102
124
|
* Methods for writing data
|
|
103
125
|
*/
|
|
@@ -126,16 +148,16 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
126
148
|
* Applies a patch to the document and stores it in the database.
|
|
127
149
|
* @returns the oldest local history timestamp
|
|
128
150
|
*/
|
|
129
|
-
this.
|
|
151
|
+
this.insertLocalOperations = async (operations, opts) => {
|
|
130
152
|
if (operations.length === 0)
|
|
131
153
|
return;
|
|
132
154
|
// await this.rebaseLock;
|
|
133
|
-
this.log(`Inserting ${operations.length} local operations
|
|
155
|
+
this.log('debug', `Inserting ${operations.length} local operations`, operations);
|
|
134
156
|
// add local flag, in place.
|
|
135
157
|
for (const operation of operations) {
|
|
136
158
|
operation.isLocal = true;
|
|
137
159
|
}
|
|
138
|
-
await this.operations.addOperations(operations);
|
|
160
|
+
await this.operations.addOperations(operations, opts);
|
|
139
161
|
const message = await this.messageCreator.createOperation({ operations });
|
|
140
162
|
this.emit('message', message);
|
|
141
163
|
// we can now enqueue and check for rebase opportunities
|
|
@@ -145,20 +167,20 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
145
167
|
* Inserts remote operations. This does not affect local history.
|
|
146
168
|
* @returns a list of affected document OIDs
|
|
147
169
|
*/
|
|
148
|
-
this.insertRemoteOperations = async (operations) => {
|
|
170
|
+
this.insertRemoteOperations = async (operations, opts) => {
|
|
149
171
|
if (operations.length === 0)
|
|
150
172
|
return [];
|
|
151
173
|
// await this.rebaseLock;
|
|
152
|
-
this.log(`Inserting ${operations.length} remote operations
|
|
153
|
-
const affectedDocumentOids = await this.operations.addOperations(operations.map((patch) => (Object.assign(Object.assign({}, patch), { isLocal: false }))));
|
|
174
|
+
this.log('debug', `Inserting ${operations.length} remote operations`, operations);
|
|
175
|
+
const affectedDocumentOids = await this.operations.addOperations(operations.map((patch) => (Object.assign(Object.assign({}, patch), { isLocal: false }))), opts);
|
|
154
176
|
this.ack(operations[operations.length - 1].timestamp);
|
|
155
177
|
return affectedDocumentOids;
|
|
156
178
|
};
|
|
157
|
-
this.insertRemoteBaselines = async (baselines) => {
|
|
179
|
+
this.insertRemoteBaselines = async (baselines, opts) => {
|
|
158
180
|
if (baselines.length === 0)
|
|
159
181
|
return [];
|
|
160
182
|
this.log(`Inserting ${baselines.length} remote baselines`);
|
|
161
|
-
await this.baselines.setAll(baselines);
|
|
183
|
+
await this.baselines.setAll(baselines, opts);
|
|
162
184
|
// this.ack(baselines[baselines.length - 1].timestamp);
|
|
163
185
|
const affectedOidSet = new Set();
|
|
164
186
|
baselines.forEach((baseline) => {
|
|
@@ -166,6 +188,23 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
166
188
|
});
|
|
167
189
|
return Array.from(affectedOidSet);
|
|
168
190
|
};
|
|
191
|
+
this.insertData = async (data, opts) => {
|
|
192
|
+
var _a;
|
|
193
|
+
const transaction = this.createTransaction(['baselines', 'operations'], opts);
|
|
194
|
+
if (data.baselines) {
|
|
195
|
+
await this.insertRemoteBaselines(data.baselines, { transaction });
|
|
196
|
+
}
|
|
197
|
+
if ((_a = opts === null || opts === void 0 ? void 0 : opts.abort) === null || _a === void 0 ? void 0 : _a.aborted)
|
|
198
|
+
return;
|
|
199
|
+
if (data.operations) {
|
|
200
|
+
if (data.isLocal) {
|
|
201
|
+
await this.insertLocalOperations(data.operations, { transaction });
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
await this.insertRemoteOperations(data.operations, { transaction });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
169
208
|
this.updateLastSynced = async (timestamp) => {
|
|
170
209
|
if (this._closing)
|
|
171
210
|
return;
|
|
@@ -198,7 +237,7 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
198
237
|
// find all operations before the global ack
|
|
199
238
|
let lastTimestamp;
|
|
200
239
|
const toRebase = new Set();
|
|
201
|
-
const transaction = this.
|
|
240
|
+
const transaction = this.createTransaction(['baselines', 'operations']);
|
|
202
241
|
let operationCount = 0;
|
|
203
242
|
await this.operations.iterateOverAllOperations((patch) => {
|
|
204
243
|
toRebase.add(patch.oid);
|
|
@@ -209,7 +248,6 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
209
248
|
transaction,
|
|
210
249
|
});
|
|
211
250
|
if (!toRebase.size) {
|
|
212
|
-
this.log('Cannot rebase, no operations prior to', globalAckTimestamp);
|
|
213
251
|
return;
|
|
214
252
|
}
|
|
215
253
|
if (this._closing) {
|
|
@@ -226,8 +264,7 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
226
264
|
// including replica Id for testing I guess
|
|
227
265
|
const replicaId = (await this.localReplica.get()).id;
|
|
228
266
|
this.log('[', replicaId, ']', 'Rebasing', oid, 'up to', upTo);
|
|
229
|
-
const transaction = providedTx ||
|
|
230
|
-
this.db.transaction(['operations', 'baselines'], 'readwrite');
|
|
267
|
+
const transaction = providedTx || this.createTransaction(['operations', 'baselines']);
|
|
231
268
|
const baseline = await this.baselines.get(oid, { transaction });
|
|
232
269
|
let current = (baseline === null || baseline === void 0 ? void 0 : baseline.snapshot) || undefined;
|
|
233
270
|
let operationsApplied = 0;
|
|
@@ -259,7 +296,7 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
259
296
|
else {
|
|
260
297
|
await this.baselines.delete(oid, { transaction });
|
|
261
298
|
}
|
|
262
|
-
this.log('successfully rebased', oid, 'up to', upTo, ':', current, 'and deleted', operationsApplied, 'operations');
|
|
299
|
+
this.log('debug', 'successfully rebased', oid, 'up to', upTo, ':', current, 'and deleted', operationsApplied, 'operations');
|
|
263
300
|
// cleanup deleted refs
|
|
264
301
|
if (deletedRefs.length) {
|
|
265
302
|
const fileRefs = deletedRefs.filter(common_1.isFileRef);
|
|
@@ -345,8 +382,8 @@ class Metadata extends common_1.EventSubscriber {
|
|
|
345
382
|
};
|
|
346
383
|
this.context = context;
|
|
347
384
|
this.schema = new SchemaStore_js_1.SchemaStore(context.metaDb, context.schema.version);
|
|
348
|
-
this.operations = new OperationsStore_js_1.OperationsStore(this.db);
|
|
349
|
-
this.baselines = new BaselinesStore_js_1.BaselinesStore(this.db);
|
|
385
|
+
this.operations = new OperationsStore_js_1.OperationsStore(this.db, { log: context.log });
|
|
386
|
+
this.baselines = new BaselinesStore_js_1.BaselinesStore(this.db, { log: context.log });
|
|
350
387
|
this.localReplica = new LocalReplicaStore_js_1.LocalReplicaStore(this.db);
|
|
351
388
|
this.ackInfo = new AckInfoStore_js_1.AckInfoStore(this.db);
|
|
352
389
|
this.messageCreator = new MessageCreator_js_1.MessageCreator(this);
|