@verdant-web/store 3.12.1 → 4.0.0-next.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 +11 -13
- package/dist/bundle/index.js.map +4 -4
- package/dist/esm/__tests__/batching.test.js +5 -5
- package/dist/esm/__tests__/batching.test.js.map +1 -1
- package/dist/esm/__tests__/entities.test.js +1 -1
- package/dist/esm/__tests__/entities.test.js.map +1 -1
- package/dist/esm/__tests__/fixtures/testStorage.d.ts +1 -3
- package/dist/esm/__tests__/fixtures/testStorage.js +3 -3
- package/dist/esm/__tests__/fixtures/testStorage.js.map +1 -1
- package/dist/esm/__tests__/queries.test.js.map +1 -1
- package/dist/esm/backup.d.ts +3 -4
- package/dist/esm/backup.js.map +1 -1
- package/dist/esm/client/Client.d.ts +28 -33
- package/dist/esm/client/Client.js +50 -161
- package/dist/esm/client/Client.js.map +1 -1
- package/dist/esm/client/ClientDescriptor.d.ts +8 -11
- package/dist/esm/client/ClientDescriptor.js +39 -141
- package/dist/esm/client/ClientDescriptor.js.map +1 -1
- package/dist/esm/context/Time.d.ts +13 -0
- package/dist/esm/context/Time.js +27 -0
- package/dist/esm/context/Time.js.map +1 -0
- package/dist/esm/context/context.d.ts +170 -0
- package/dist/esm/{context.js.map → context/context.js.map} +1 -1
- package/dist/esm/entities/DocumentManager.js.map +1 -1
- package/dist/esm/entities/Entity.d.ts +4 -5
- package/dist/esm/entities/Entity.js +5 -3
- package/dist/esm/entities/Entity.js.map +1 -1
- package/dist/esm/entities/Entity.test.js +4 -3
- package/dist/esm/entities/Entity.test.js.map +1 -1
- package/dist/esm/entities/EntityCache.d.ts +0 -3
- package/dist/esm/entities/EntityCache.js +0 -9
- package/dist/esm/entities/EntityCache.js.map +1 -1
- package/dist/esm/entities/EntityMetadata.d.ts +1 -1
- package/dist/esm/entities/EntityMetadata.js +6 -5
- package/dist/esm/entities/EntityMetadata.js.map +1 -1
- package/dist/esm/entities/EntityStore.d.ts +2 -6
- package/dist/esm/entities/EntityStore.js +22 -16
- package/dist/esm/entities/EntityStore.js.map +1 -1
- package/dist/esm/entities/OperationBatcher.d.ts +2 -5
- package/dist/esm/entities/OperationBatcher.js +9 -7
- package/dist/esm/entities/OperationBatcher.js.map +1 -1
- package/dist/esm/errors.d.ts +8 -0
- package/dist/esm/errors.js +12 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/files/EntityFile.d.ts +6 -3
- package/dist/esm/files/EntityFile.js +22 -19
- package/dist/esm/files/EntityFile.js.map +1 -1
- package/dist/esm/files/FileManager.d.ts +8 -39
- package/dist/esm/files/FileManager.js +15 -170
- package/dist/esm/files/FileManager.js.map +1 -1
- package/dist/esm/files/utils.d.ts +0 -1
- package/dist/esm/files/utils.js +0 -14
- package/dist/esm/files/utils.js.map +1 -1
- package/dist/esm/index.d.ts +1 -2
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{metadata → persistence}/MessageCreator.d.ts +5 -6
- package/dist/esm/{metadata → persistence}/MessageCreator.js +31 -38
- package/dist/esm/persistence/MessageCreator.js.map +1 -0
- package/dist/esm/persistence/PersistenceFiles.d.ts +48 -0
- package/dist/esm/persistence/PersistenceFiles.js +160 -0
- package/dist/esm/persistence/PersistenceFiles.js.map +1 -0
- package/dist/esm/persistence/PersistenceMetadata.d.ts +69 -0
- package/dist/esm/persistence/PersistenceMetadata.js +302 -0
- package/dist/esm/persistence/PersistenceMetadata.js.map +1 -0
- package/dist/esm/persistence/PersistenceQueries.d.ts +34 -0
- package/dist/esm/persistence/PersistenceQueries.js +15 -0
- package/dist/esm/persistence/PersistenceQueries.js.map +1 -0
- package/dist/esm/persistence/PersistenceRebaser.d.ts +32 -0
- package/dist/esm/persistence/PersistenceRebaser.js +120 -0
- package/dist/esm/persistence/PersistenceRebaser.js.map +1 -0
- package/dist/esm/{IDBService.d.ts → persistence/idb/IdbService.d.ts} +9 -7
- package/dist/esm/{IDBService.js → persistence/idb/IdbService.js} +29 -8
- package/dist/esm/persistence/idb/IdbService.js.map +1 -0
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.d.ts +58 -0
- package/dist/esm/{files/FileStorage.js → persistence/idb/files/IdbPersistenceFileDb.js} +85 -50
- package/dist/esm/persistence/idb/files/IdbPersistenceFileDb.js.map +1 -0
- package/dist/esm/persistence/idb/idbPersistence.d.ts +19 -0
- package/dist/esm/persistence/idb/idbPersistence.js +80 -0
- package/dist/esm/persistence/idb/idbPersistence.js.map +1 -0
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.d.ts +72 -0
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js +235 -0
- package/dist/esm/persistence/idb/metadata/IdbMetadataDb.js.map +1 -0
- package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.d.ts +3 -1
- package/dist/esm/{metadata → persistence/idb/metadata}/openMetadataDatabase.js +12 -3
- package/dist/esm/persistence/idb/metadata/openMetadataDatabase.js.map +1 -0
- package/dist/esm/persistence/idb/queries/IdbQueryDb.d.ts +41 -0
- package/dist/esm/persistence/idb/queries/IdbQueryDb.js +174 -0
- package/dist/esm/persistence/idb/queries/IdbQueryDb.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/db.d.ts +1 -1
- package/dist/esm/{migration → persistence/idb/queries/migration}/db.js +10 -48
- package/dist/esm/persistence/idb/queries/migration/db.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/engine.d.ts +12 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/engine.js +29 -46
- package/dist/esm/persistence/idb/queries/migration/engine.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.d.ts +1 -3
- package/dist/esm/{migration → persistence/idb/queries/migration}/migrations.js +11 -10
- package/dist/esm/persistence/idb/queries/migration/migrations.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.d.ts +1 -3
- package/dist/esm/{migration → persistence/idb/queries/migration}/openQueryDatabase.js +4 -7
- package/dist/esm/persistence/idb/queries/migration/openQueryDatabase.js.map +1 -0
- package/dist/esm/{migration → persistence/idb/queries/migration}/paths.js +2 -2
- package/dist/esm/persistence/idb/queries/migration/paths.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/paths.test.js.map +1 -0
- package/dist/esm/persistence/idb/queries/migration/types.d.ts +6 -0
- package/dist/esm/persistence/idb/queries/migration/types.js.map +1 -0
- package/dist/esm/persistence/idb/queries/ranges.d.ts +2 -0
- package/dist/esm/persistence/idb/queries/ranges.js +66 -0
- package/dist/esm/persistence/idb/queries/ranges.js.map +1 -0
- package/dist/esm/{idb.d.ts → persistence/idb/util.d.ts} +11 -0
- package/dist/esm/{idb.js → persistence/idb/util.js} +58 -1
- package/dist/esm/persistence/idb/util.js.map +1 -0
- package/dist/esm/persistence/interfaces.d.ts +181 -0
- package/dist/esm/persistence/interfaces.js +2 -0
- package/dist/esm/persistence/interfaces.js.map +1 -0
- package/dist/esm/persistence/persistence.d.ts +4 -0
- package/dist/esm/persistence/persistence.js +126 -0
- package/dist/esm/persistence/persistence.js.map +1 -0
- package/dist/esm/queries/BaseQuery.d.ts +2 -1
- package/dist/esm/queries/BaseQuery.js +3 -0
- package/dist/esm/queries/BaseQuery.js.map +1 -1
- package/dist/esm/queries/CollectionQueries.d.ts +1 -1
- package/dist/esm/queries/FindAllQuery.js +1 -3
- package/dist/esm/queries/FindAllQuery.js.map +1 -1
- package/dist/esm/queries/FindInfiniteQuery.js +2 -5
- package/dist/esm/queries/FindInfiniteQuery.js.map +1 -1
- package/dist/esm/queries/FindOneQuery.js +1 -3
- package/dist/esm/queries/FindOneQuery.js.map +1 -1
- package/dist/esm/queries/FindPageQuery.js +1 -3
- package/dist/esm/queries/FindPageQuery.js.map +1 -1
- package/dist/esm/queries/QueryCache.d.ts +1 -1
- package/dist/esm/queries/QueryCache.js +4 -0
- package/dist/esm/queries/QueryCache.js.map +1 -1
- package/dist/esm/sync/FileSync.d.ts +23 -8
- package/dist/esm/sync/FileSync.js +76 -28
- package/dist/esm/sync/FileSync.js.map +1 -1
- package/dist/esm/sync/PresenceManager.d.ts +4 -3
- package/dist/esm/sync/PresenceManager.js +2 -2
- package/dist/esm/sync/PresenceManager.js.map +1 -1
- package/dist/esm/sync/PushPullSync.d.ts +4 -6
- package/dist/esm/sync/PushPullSync.js +13 -12
- package/dist/esm/sync/PushPullSync.js.map +1 -1
- package/dist/esm/sync/Sync.d.ts +9 -11
- package/dist/esm/sync/Sync.js +34 -29
- package/dist/esm/sync/Sync.js.map +1 -1
- package/dist/esm/sync/WebSocketSync.d.ts +4 -6
- package/dist/esm/sync/WebSocketSync.js +20 -22
- package/dist/esm/sync/WebSocketSync.js.map +1 -1
- package/dist/esm/utils/Disposable.d.ts +5 -2
- package/dist/esm/utils/Disposable.js +3 -2
- package/dist/esm/utils/Disposable.js.map +1 -1
- package/dist/esm/utils/wip.d.ts +2 -0
- package/dist/esm/utils/wip.js +5 -0
- package/dist/esm/utils/wip.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/batching.test.ts +6 -6
- package/src/__tests__/entities.test.ts +1 -1
- package/src/__tests__/fixtures/testStorage.ts +2 -10
- package/src/__tests__/queries.test.ts +1 -1
- package/src/backup.ts +3 -4
- package/src/client/Client.ts +69 -226
- package/src/client/ClientDescriptor.ts +53 -184
- package/src/context/Time.ts +35 -0
- package/src/context/context.ts +200 -0
- package/src/entities/DocumentManager.ts +0 -3
- package/src/entities/Entity.test.ts +9 -9
- package/src/entities/Entity.ts +6 -12
- package/src/entities/EntityCache.ts +0 -9
- package/src/entities/EntityMetadata.ts +4 -4
- package/src/entities/EntityStore.ts +26 -29
- package/src/entities/OperationBatcher.ts +9 -11
- package/src/errors.ts +13 -0
- package/src/files/EntityFile.ts +16 -5
- package/src/files/FileManager.ts +18 -245
- package/src/files/utils.ts +0 -15
- package/src/index.ts +2 -1
- package/src/{metadata → persistence}/MessageCreator.ts +46 -36
- package/src/persistence/PersistenceFiles.ts +227 -0
- package/src/persistence/PersistenceMetadata.ts +425 -0
- package/src/persistence/PersistenceQueries.ts +22 -0
- package/src/persistence/PersistenceRebaser.ts +171 -0
- package/src/{IDBService.ts → persistence/idb/IdbService.ts} +45 -12
- package/src/{files/FileStorage.ts → persistence/idb/files/IdbPersistenceFileDb.ts} +128 -86
- package/src/persistence/idb/idbPersistence.ts +116 -0
- package/src/persistence/idb/metadata/IdbMetadataDb.ts +460 -0
- package/src/{metadata → persistence/idb/metadata}/openMetadataDatabase.ts +21 -4
- package/src/persistence/idb/queries/IdbQueryDb.ts +251 -0
- package/src/{migration → persistence/idb/queries/migration}/db.ts +18 -72
- package/src/{migration → persistence/idb/queries/migration}/engine.ts +39 -62
- package/src/{migration → persistence/idb/queries/migration}/migrations.ts +13 -18
- package/src/{migration → persistence/idb/queries/migration}/openQueryDatabase.ts +5 -14
- package/src/{migration → persistence/idb/queries/migration}/paths.ts +4 -3
- package/src/persistence/idb/queries/migration/types.ts +8 -0
- package/src/persistence/idb/queries/ranges.ts +107 -0
- package/src/{idb.ts → persistence/idb/util.ts} +75 -0
- package/src/persistence/interfaces.ts +240 -0
- package/src/persistence/persistence.ts +223 -0
- package/src/queries/BaseQuery.ts +5 -1
- package/src/queries/CollectionQueries.ts +2 -2
- package/src/queries/FindAllQuery.ts +1 -3
- package/src/queries/FindInfiniteQuery.ts +2 -5
- package/src/queries/FindOneQuery.ts +1 -3
- package/src/queries/FindPageQuery.ts +1 -3
- package/src/queries/QueryCache.ts +20 -1
- package/src/sync/FileSync.ts +93 -30
- package/src/sync/PresenceManager.ts +5 -7
- package/src/sync/PushPullSync.ts +23 -19
- package/src/sync/Sync.ts +45 -36
- package/src/sync/WebSocketSync.ts +41 -27
- package/src/utils/Disposable.ts +7 -4
- package/src/utils/wip.ts +5 -0
- package/dist/esm/IDBService.js.map +0 -1
- package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
- package/dist/esm/__tests__/legacyOids.test.js +0 -352
- package/dist/esm/__tests__/legacyOids.test.js.map +0 -1
- package/dist/esm/context.d.ts +0 -45
- package/dist/esm/files/FileStorage.d.ts +0 -47
- package/dist/esm/files/FileStorage.js.map +0 -1
- package/dist/esm/idb.js.map +0 -1
- package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
- package/dist/esm/metadata/AckInfoStore.js +0 -22
- package/dist/esm/metadata/AckInfoStore.js.map +0 -1
- package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
- package/dist/esm/metadata/BaselinesStore.js +0 -102
- package/dist/esm/metadata/BaselinesStore.js.map +0 -1
- package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -19
- package/dist/esm/metadata/LocalReplicaStore.js +0 -56
- package/dist/esm/metadata/LocalReplicaStore.js.map +0 -1
- package/dist/esm/metadata/MessageCreator.js.map +0 -1
- package/dist/esm/metadata/Metadata.d.ts +0 -146
- package/dist/esm/metadata/Metadata.js +0 -452
- package/dist/esm/metadata/Metadata.js.map +0 -1
- package/dist/esm/metadata/OperationsStore.d.ts +0 -62
- package/dist/esm/metadata/OperationsStore.js +0 -175
- package/dist/esm/metadata/OperationsStore.js.map +0 -1
- package/dist/esm/metadata/SchemaStore.d.ts +0 -9
- package/dist/esm/metadata/SchemaStore.js +0 -35
- package/dist/esm/metadata/SchemaStore.js.map +0 -1
- package/dist/esm/metadata/openMetadataDatabase.js.map +0 -1
- package/dist/esm/migration/db.js.map +0 -1
- package/dist/esm/migration/engine.d.ts +0 -15
- package/dist/esm/migration/engine.js.map +0 -1
- package/dist/esm/migration/errors.d.ts +0 -5
- package/dist/esm/migration/errors.js +0 -8
- package/dist/esm/migration/errors.js.map +0 -1
- package/dist/esm/migration/migrations.js.map +0 -1
- package/dist/esm/migration/openQueryDatabase.js.map +0 -1
- package/dist/esm/migration/openWIPDatabase.d.ts +0 -11
- package/dist/esm/migration/openWIPDatabase.js +0 -65
- package/dist/esm/migration/openWIPDatabase.js.map +0 -1
- package/dist/esm/migration/paths.js.map +0 -1
- package/dist/esm/migration/paths.test.js.map +0 -1
- package/dist/esm/migration/types.d.ts +0 -3
- package/dist/esm/migration/types.js.map +0 -1
- package/dist/esm/queries/QueryableStorage.d.ts +0 -20
- package/dist/esm/queries/QueryableStorage.js +0 -90
- package/dist/esm/queries/QueryableStorage.js.map +0 -1
- package/dist/esm/queries/dbQueries.d.ts +0 -22
- package/dist/esm/queries/dbQueries.js +0 -130
- package/dist/esm/queries/dbQueries.js.map +0 -1
- package/src/__tests__/legacyOids.test.ts +0 -375
- package/src/context.ts +0 -55
- package/src/metadata/AckInfoStore.ts +0 -30
- package/src/metadata/BaselinesStore.ts +0 -188
- package/src/metadata/LocalReplicaStore.ts +0 -79
- package/src/metadata/Metadata.ts +0 -685
- package/src/metadata/OperationsStore.ts +0 -332
- package/src/metadata/SchemaStore.ts +0 -47
- package/src/migration/errors.ts +0 -7
- package/src/migration/openWIPDatabase.ts +0 -97
- package/src/migration/types.ts +0 -4
- package/src/queries/QueryableStorage.ts +0 -122
- package/src/queries/dbQueries.ts +0 -161
- /package/dist/esm/{context.js → context/context.js} +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.d.ts +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.d.ts +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/paths.test.js +0 -0
- /package/dist/esm/{migration → persistence/idb/queries/migration}/types.js +0 -0
- /package/src/{migration → persistence/idb/queries/migration}/paths.test.ts +0 -0
package/dist/esm/sync/Sync.js
CHANGED
|
@@ -13,7 +13,7 @@ export class NoSync extends EventSubscriber {
|
|
|
13
13
|
reconnect() { }
|
|
14
14
|
setMode() { }
|
|
15
15
|
setPullInterval() { }
|
|
16
|
-
constructor(
|
|
16
|
+
constructor(ctx) {
|
|
17
17
|
super();
|
|
18
18
|
this.mode = 'pull';
|
|
19
19
|
this.destroy = () => { };
|
|
@@ -29,19 +29,19 @@ export class NoSync extends EventSubscriber {
|
|
|
29
29
|
this.getFile = async () => {
|
|
30
30
|
return {
|
|
31
31
|
success: false,
|
|
32
|
-
|
|
32
|
+
error: 'Sync is not active',
|
|
33
33
|
};
|
|
34
34
|
};
|
|
35
35
|
this.syncOnce = async () => { };
|
|
36
36
|
this.presence = new PresenceManager({
|
|
37
37
|
initialPresence: null,
|
|
38
38
|
defaultProfile: null,
|
|
39
|
-
|
|
39
|
+
ctx,
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
export class ServerSync extends EventSubscriber {
|
|
44
|
-
constructor({ authEndpoint, fetchAuth, fetch, initialPresence, automaticTransportSelection = true, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, onOutgoingMessage, EXPERIMENTAL_backgroundSync, }, {
|
|
44
|
+
constructor({ authEndpoint, fetchAuth, fetch, initialPresence, automaticTransportSelection = true, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, onOutgoingMessage, EXPERIMENTAL_backgroundSync, }, { ctx, onData, }) {
|
|
45
45
|
super();
|
|
46
46
|
this.broadcastChannel = null;
|
|
47
47
|
this._activelySyncing = false;
|
|
@@ -50,9 +50,6 @@ export class ServerSync extends EventSubscriber {
|
|
|
50
50
|
this.handleMessage(event.data.message, { source: 'broadcastChannel' });
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
-
this.onTokenExpired = () => {
|
|
54
|
-
this.endpointProvider.clearCache();
|
|
55
|
-
};
|
|
56
53
|
this.handleMessage = async (message, { source } = {
|
|
57
54
|
source: 'network',
|
|
58
55
|
}) => {
|
|
@@ -60,10 +57,10 @@ export class ServerSync extends EventSubscriber {
|
|
|
60
57
|
// TODO: move this into metadata
|
|
61
58
|
if (message.type === 'op-re' || message.type === 'sync-resp') {
|
|
62
59
|
for (const op of message.operations) {
|
|
63
|
-
this.
|
|
60
|
+
this.ctx.time.update(op.timestamp);
|
|
64
61
|
}
|
|
65
62
|
}
|
|
66
|
-
this.log('debug', 'sync message', JSON.stringify(message, null, 2));
|
|
63
|
+
this.ctx.log('debug', 'sync message', JSON.stringify(message, null, 2));
|
|
67
64
|
switch (message.type) {
|
|
68
65
|
case 'op-re':
|
|
69
66
|
await this.onData({
|
|
@@ -71,11 +68,11 @@ export class ServerSync extends EventSubscriber {
|
|
|
71
68
|
baselines: message.baselines,
|
|
72
69
|
});
|
|
73
70
|
if (message.globalAckTimestamp) {
|
|
74
|
-
await this.meta.setGlobalAck(message.globalAckTimestamp);
|
|
71
|
+
await this.ctx.meta.setGlobalAck(message.globalAckTimestamp);
|
|
75
72
|
}
|
|
76
73
|
break;
|
|
77
74
|
case 'global-ack':
|
|
78
|
-
await this.meta.setGlobalAck(message.timestamp);
|
|
75
|
+
await this.ctx.meta.setGlobalAck(message.timestamp);
|
|
79
76
|
break;
|
|
80
77
|
case 'sync-resp':
|
|
81
78
|
this._activelySyncing = true;
|
|
@@ -86,18 +83,19 @@ export class ServerSync extends EventSubscriber {
|
|
|
86
83
|
reset: message.overwriteLocalData,
|
|
87
84
|
});
|
|
88
85
|
if (message.globalAckTimestamp) {
|
|
89
|
-
await this.meta.setGlobalAck(message.globalAckTimestamp);
|
|
86
|
+
await this.ctx.meta.setGlobalAck(message.globalAckTimestamp);
|
|
90
87
|
}
|
|
91
|
-
await this.meta.updateLastSynced(message.ackedTimestamp);
|
|
88
|
+
await this.ctx.meta.updateLastSynced(message.ackedTimestamp);
|
|
92
89
|
this._activelySyncing = false;
|
|
93
90
|
this.emit('syncingChange', false);
|
|
94
91
|
break;
|
|
95
92
|
case 'need-since':
|
|
96
93
|
this.emit('serverReset', message.since);
|
|
97
|
-
this.
|
|
94
|
+
this.ctx.files.onServerReset(message.since);
|
|
95
|
+
this.activeSync.send(await this.ctx.meta.messageCreator.createSyncStep1(message.since));
|
|
98
96
|
break;
|
|
99
97
|
case 'server-ack':
|
|
100
|
-
await this.meta.updateLastSynced(message.timestamp);
|
|
98
|
+
await this.ctx.meta.updateLastSynced(message.timestamp);
|
|
101
99
|
}
|
|
102
100
|
// avoid rebroadcasting messages
|
|
103
101
|
if (source === 'network') {
|
|
@@ -107,13 +105,23 @@ export class ServerSync extends EventSubscriber {
|
|
|
107
105
|
});
|
|
108
106
|
}
|
|
109
107
|
// update presence if necessary
|
|
110
|
-
this.presence[HANDLE_MESSAGE](await this.meta.
|
|
108
|
+
this.presence[HANDLE_MESSAGE](await this.ctx.meta.getLocalReplica(), message);
|
|
111
109
|
};
|
|
112
|
-
this.handleOnlineChange = (online) => {
|
|
110
|
+
this.handleOnlineChange = async (online) => {
|
|
113
111
|
this.emit('onlineChange', online);
|
|
112
|
+
// if online, attempt to upload any unsynced files.
|
|
113
|
+
if (online) {
|
|
114
|
+
const unsyncedFiles = await this.ctx.files.listUnsynced();
|
|
115
|
+
const results = await Promise.allSettled(unsyncedFiles.map((file) => this.fileSync.uploadFile(file)));
|
|
116
|
+
if (results.some((r) => r.status === 'rejected')) {
|
|
117
|
+
this.ctx.log('error', 'Failed to upload unsynced files', results
|
|
118
|
+
.filter((r) => r.status === 'rejected')
|
|
119
|
+
.map((r) => r.reason));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
114
122
|
};
|
|
115
123
|
this.handlePresenceUpdate = async (data) => {
|
|
116
|
-
this.send(await this.meta.messageCreator.createPresenceUpdate(data));
|
|
124
|
+
this.send(await this.ctx.meta.messageCreator.createPresenceUpdate(data));
|
|
117
125
|
};
|
|
118
126
|
this.setMode = (transport) => {
|
|
119
127
|
if (transport === 'realtime' && !this.canDoRealtime) {
|
|
@@ -128,7 +136,7 @@ export class ServerSync extends EventSubscriber {
|
|
|
128
136
|
}
|
|
129
137
|
if (newSync === this.activeSync)
|
|
130
138
|
return;
|
|
131
|
-
this.log('debug', 'switching to', transport, 'mode');
|
|
139
|
+
this.ctx.log('debug', 'switching to', transport, 'mode');
|
|
132
140
|
// transfer state to new sync
|
|
133
141
|
if (this.activeSync.status === 'active') {
|
|
134
142
|
newSync.start();
|
|
@@ -160,7 +168,7 @@ export class ServerSync extends EventSubscriber {
|
|
|
160
168
|
};
|
|
161
169
|
this.uploadFile = async (info) => {
|
|
162
170
|
var _a;
|
|
163
|
-
this.log('info', 'Uploading file', {
|
|
171
|
+
this.ctx.log('info', 'Uploading file', {
|
|
164
172
|
name: info.name,
|
|
165
173
|
type: info.type,
|
|
166
174
|
id: info.id,
|
|
@@ -208,15 +216,14 @@ export class ServerSync extends EventSubscriber {
|
|
|
208
216
|
this.syncOnce = () => {
|
|
209
217
|
return this.pushPullSync.syncOnce();
|
|
210
218
|
};
|
|
211
|
-
this.meta = meta;
|
|
212
219
|
this.onData = onData;
|
|
213
|
-
this.
|
|
220
|
+
this.ctx = ctx;
|
|
214
221
|
this.onOutgoingMessage = onOutgoingMessage;
|
|
215
222
|
this.presence = new PresenceManager({
|
|
216
223
|
initialPresence,
|
|
217
224
|
defaultProfile,
|
|
218
225
|
updateBatchTimeout: presenceUpdateBatchTimeout,
|
|
219
|
-
|
|
226
|
+
ctx,
|
|
220
227
|
});
|
|
221
228
|
this.endpointProvider = new ServerSyncEndpointProvider({
|
|
222
229
|
authEndpoint,
|
|
@@ -225,21 +232,19 @@ export class ServerSync extends EventSubscriber {
|
|
|
225
232
|
});
|
|
226
233
|
this.webSocketSync = new WebSocketSync({
|
|
227
234
|
endpointProvider: this.endpointProvider,
|
|
228
|
-
meta,
|
|
229
235
|
presence: this.presence,
|
|
230
|
-
|
|
236
|
+
ctx,
|
|
231
237
|
});
|
|
232
238
|
this.pushPullSync = new PushPullSync({
|
|
233
239
|
endpointProvider: this.endpointProvider,
|
|
234
|
-
meta,
|
|
235
240
|
presence: this.presence,
|
|
236
|
-
log: ctx.log,
|
|
237
241
|
interval: pullInterval,
|
|
238
242
|
fetch,
|
|
243
|
+
ctx,
|
|
239
244
|
});
|
|
240
245
|
this.fileSync = new FileSync({
|
|
241
246
|
endpointProvider: this.endpointProvider,
|
|
242
|
-
|
|
247
|
+
ctx,
|
|
243
248
|
});
|
|
244
249
|
if (useBroadcastChannel && 'BroadcastChannel' in window) {
|
|
245
250
|
this.broadcastChannel = new BroadcastChannel(`verdant-${ctx.namespace}`);
|
|
@@ -252,7 +257,7 @@ export class ServerSync extends EventSubscriber {
|
|
|
252
257
|
this.activeSync = this.pushPullSync;
|
|
253
258
|
}
|
|
254
259
|
this.presence.subscribe('update', this.handlePresenceUpdate);
|
|
255
|
-
|
|
260
|
+
ctx.meta.events.subscribe('syncMessage', this.send);
|
|
256
261
|
this.webSocketSync.subscribe('message', this.handleMessage);
|
|
257
262
|
this.webSocketSync.subscribe('onlineChange', this.handleOnlineChange);
|
|
258
263
|
this.pushPullSync.subscribe('message', this.handleMessage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../src/sync/Sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Sync.js","sourceRoot":"","sources":["../../../src/sync/Sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ClientMessage, EventSubscriber } from '@verdant-web/common';
|
|
2
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
3
2
|
import { PresenceManager } from './PresenceManager.js';
|
|
4
3
|
import { ServerSyncEndpointProvider } from './ServerSyncEndpointProvider.js';
|
|
5
4
|
import { SyncTransport, SyncTransportEvents } from './Sync.js';
|
|
5
|
+
import { Context } from '../context/context.js';
|
|
6
6
|
export declare class WebSocketSync extends EventSubscriber<SyncTransportEvents> implements SyncTransport {
|
|
7
|
-
private meta;
|
|
8
7
|
readonly presence: PresenceManager;
|
|
9
8
|
private socket;
|
|
10
9
|
private connectQueue;
|
|
@@ -16,14 +15,13 @@ export declare class WebSocketSync extends EventSubscriber<SyncTransportEvents>
|
|
|
16
15
|
private hasStartedSync;
|
|
17
16
|
private _ignoreIncoming;
|
|
18
17
|
readonly mode = "realtime";
|
|
19
|
-
private
|
|
18
|
+
private ctx;
|
|
20
19
|
private heartbeat;
|
|
21
20
|
private reconnectScheduler;
|
|
22
|
-
constructor({ endpointProvider,
|
|
21
|
+
constructor({ endpointProvider, ctx, presence, }: {
|
|
23
22
|
endpointProvider: ServerSyncEndpointProvider;
|
|
24
|
-
|
|
23
|
+
ctx: Context;
|
|
25
24
|
presence: PresenceManager;
|
|
26
|
-
log?: (...args: any[]) => any;
|
|
27
25
|
});
|
|
28
26
|
get hasSynced(): boolean;
|
|
29
27
|
private onOpen;
|
|
@@ -2,7 +2,7 @@ import { EventSubscriber, } from '@verdant-web/common';
|
|
|
2
2
|
import { Backoff, BackoffScheduler } from '../BackoffScheduler.js';
|
|
3
3
|
import { Heartbeat } from './Heartbeat.js';
|
|
4
4
|
export class WebSocketSync extends EventSubscriber {
|
|
5
|
-
constructor({ endpointProvider,
|
|
5
|
+
constructor({ endpointProvider, ctx, presence, }) {
|
|
6
6
|
super();
|
|
7
7
|
this.socket = null;
|
|
8
8
|
// messages awaiting websocket connection to send
|
|
@@ -16,7 +16,6 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
16
16
|
this.hasStartedSync = false;
|
|
17
17
|
this._ignoreIncoming = false;
|
|
18
18
|
this.mode = 'realtime';
|
|
19
|
-
this.log = (...args) => { };
|
|
20
19
|
this.heartbeat = new Heartbeat();
|
|
21
20
|
this.reconnectScheduler = new BackoffScheduler(new Backoff(60 * 1000, 1.5));
|
|
22
21
|
this.onOpen = () => {
|
|
@@ -26,17 +25,17 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
26
25
|
this.synced = false;
|
|
27
26
|
if (this.connectQueue.length) {
|
|
28
27
|
for (const msg of this.connectQueue) {
|
|
29
|
-
this.log('Sending queued message', JSON.stringify(msg, null, 2));
|
|
28
|
+
this.ctx.log('debug', 'Sending queued message', JSON.stringify(msg, null, 2));
|
|
30
29
|
this.socket.send(JSON.stringify(msg));
|
|
31
30
|
}
|
|
32
31
|
this.connectQueue = [];
|
|
33
32
|
}
|
|
34
|
-
this.log('Sync connected');
|
|
33
|
+
this.ctx.log('debug', 'Sync connected');
|
|
35
34
|
this.onOnlineChange(true);
|
|
36
35
|
this.reconnectScheduler.reset();
|
|
37
36
|
};
|
|
38
37
|
this.onOnlineChange = async (online) => {
|
|
39
|
-
this.log('Socket online change', online);
|
|
38
|
+
this.ctx.log('info', 'Socket online change', online);
|
|
40
39
|
if (this.disposed) {
|
|
41
40
|
return;
|
|
42
41
|
}
|
|
@@ -46,18 +45,18 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
46
45
|
this.heartbeat.stop();
|
|
47
46
|
}
|
|
48
47
|
else {
|
|
49
|
-
this.log('Starting sync');
|
|
48
|
+
this.ctx.log('debug', 'Starting sync');
|
|
50
49
|
this.hasStartedSync = true;
|
|
51
50
|
this.synced = false;
|
|
52
|
-
this.send(await this.meta.messageCreator.createPresenceUpdate(this.presence.self));
|
|
53
|
-
this.send(await this.meta.messageCreator.createSyncStep1());
|
|
51
|
+
this.send(await this.ctx.meta.messageCreator.createPresenceUpdate(this.presence.self));
|
|
52
|
+
this.send(await this.ctx.meta.messageCreator.createSyncStep1());
|
|
54
53
|
this.heartbeat.start();
|
|
55
54
|
}
|
|
56
55
|
this.emit('onlineChange', online);
|
|
57
56
|
};
|
|
58
57
|
this.onMessage = async (event) => {
|
|
59
58
|
if (this._ignoreIncoming) {
|
|
60
|
-
this.log('Ignoring incoming message (ignore incoming flag set)', event.data);
|
|
59
|
+
this.ctx.log('warn', 'Ignoring incoming message (ignore incoming flag set)', event.data);
|
|
61
60
|
return;
|
|
62
61
|
}
|
|
63
62
|
const message = JSON.parse(event.data);
|
|
@@ -65,13 +64,13 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
65
64
|
case 'sync-resp':
|
|
66
65
|
if (message.ackThisNonce) {
|
|
67
66
|
// we need to send the ack to confirm we got the response
|
|
68
|
-
this.send(await this.meta.messageCreator.createAck(message.ackThisNonce));
|
|
67
|
+
this.send(await this.ctx.meta.messageCreator.createAck(message.ackThisNonce));
|
|
69
68
|
}
|
|
70
69
|
this.hasStartedSync = true;
|
|
71
70
|
this.synced = true;
|
|
72
71
|
if (this.syncQueue.length) {
|
|
73
72
|
if (message.overwriteLocalData) {
|
|
74
|
-
this.log('warn', 'Overwriting local data - dropping outgoing message queue');
|
|
73
|
+
this.ctx.log('warn', 'Overwriting local data - dropping outgoing message queue');
|
|
75
74
|
this.syncQueue = [];
|
|
76
75
|
}
|
|
77
76
|
else {
|
|
@@ -96,7 +95,7 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
96
95
|
break;
|
|
97
96
|
case 'op-re':
|
|
98
97
|
if (!this.synced) {
|
|
99
|
-
this.log(`Enqueueing op-re message because sync hasn't finished yet`, message);
|
|
98
|
+
this.ctx.log('debug', `Enqueueing op-re message because sync hasn't finished yet`, message);
|
|
100
99
|
this.incomingQueue.push(message);
|
|
101
100
|
break;
|
|
102
101
|
}
|
|
@@ -114,12 +113,12 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
114
113
|
}
|
|
115
114
|
};
|
|
116
115
|
this.onError = (event) => {
|
|
117
|
-
this.log(event);
|
|
116
|
+
this.ctx.log('error', event);
|
|
118
117
|
this.reconnectScheduler.next();
|
|
119
|
-
this.log(`Attempting reconnect to websocket sync`);
|
|
118
|
+
this.ctx.log('info', `Attempting reconnect to websocket sync`);
|
|
120
119
|
};
|
|
121
120
|
this.onClose = (event) => {
|
|
122
|
-
this.log('Sync disconnected');
|
|
121
|
+
this.ctx.log('info', 'Sync disconnected');
|
|
123
122
|
this.onOnlineChange(false);
|
|
124
123
|
this.onError(event);
|
|
125
124
|
};
|
|
@@ -134,7 +133,7 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
134
133
|
return this.socket;
|
|
135
134
|
};
|
|
136
135
|
this.sendHeartbeat = async () => {
|
|
137
|
-
this.send(await this.meta.messageCreator.createHeartbeat());
|
|
136
|
+
this.send(await this.ctx.meta.messageCreator.createHeartbeat());
|
|
138
137
|
};
|
|
139
138
|
this.reconnect = () => {
|
|
140
139
|
this.stop();
|
|
@@ -157,22 +156,22 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
157
156
|
}
|
|
158
157
|
if (this.canSkipSyncWait(message)) {
|
|
159
158
|
if (((_a = this.socket) === null || _a === void 0 ? void 0 : _a.readyState) === WebSocket.OPEN) {
|
|
160
|
-
this.log('Sending message', JSON.stringify(message, null, 2));
|
|
159
|
+
this.ctx.log('debug', 'Sending message', JSON.stringify(message, null, 2));
|
|
161
160
|
this.socket.send(JSON.stringify(message));
|
|
162
161
|
}
|
|
163
162
|
else {
|
|
164
|
-
this.log('Enqueueing message until socket is open', JSON.stringify(message, null, 2));
|
|
163
|
+
this.ctx.log('debug', 'Enqueueing message until socket is open', JSON.stringify(message, null, 2));
|
|
165
164
|
this.connectQueue.push(message);
|
|
166
165
|
}
|
|
167
166
|
}
|
|
168
167
|
else if (this.synced) {
|
|
169
168
|
if (((_b = this.socket) === null || _b === void 0 ? void 0 : _b.readyState) === WebSocket.OPEN) {
|
|
170
|
-
this.log('Sending message', JSON.stringify(message, null, 2));
|
|
169
|
+
this.ctx.log('debug', 'Sending message', JSON.stringify(message, null, 2));
|
|
171
170
|
this.socket.send(JSON.stringify(message));
|
|
172
171
|
}
|
|
173
172
|
}
|
|
174
173
|
else if (this.hasStartedSync) {
|
|
175
|
-
this.log('Enqueueing message until synced', JSON.stringify(message, null, 2));
|
|
174
|
+
this.ctx.log('debug', 'Enqueueing message until synced', JSON.stringify(message, null, 2));
|
|
176
175
|
this.syncQueue.push(message);
|
|
177
176
|
}
|
|
178
177
|
};
|
|
@@ -195,9 +194,8 @@ export class WebSocketSync extends EventSubscriber {
|
|
|
195
194
|
this.socket = null;
|
|
196
195
|
this._status = 'paused';
|
|
197
196
|
};
|
|
198
|
-
this.
|
|
197
|
+
this.ctx = ctx;
|
|
199
198
|
this.endpointProvider = endpointProvider;
|
|
200
|
-
this.meta = meta;
|
|
201
199
|
this.presence = presence;
|
|
202
200
|
this.reconnectScheduler.subscribe('trigger', this.initializeSocket);
|
|
203
201
|
this.heartbeat.subscribe('beat', this.sendHeartbeat);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketSync.js","sourceRoot":"","sources":["../../../src/sync/WebSocketSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,eAAe,GAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"WebSocketSync.js","sourceRoot":"","sources":["../../../src/sync/WebSocketSync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export declare class Disposable {
|
|
2
2
|
private _disposes;
|
|
3
3
|
protected disposed: boolean;
|
|
4
|
-
dispose: () => void
|
|
5
|
-
|
|
4
|
+
dispose: () => Promise<void>;
|
|
5
|
+
compose: (disposable: {
|
|
6
|
+
dispose: () => void | Promise<void>;
|
|
7
|
+
}) => void;
|
|
8
|
+
protected addDispose: (dispose: () => void | Promise<void>) => void;
|
|
6
9
|
}
|
|
@@ -2,11 +2,12 @@ export class Disposable {
|
|
|
2
2
|
constructor() {
|
|
3
3
|
this._disposes = [];
|
|
4
4
|
this.disposed = false;
|
|
5
|
-
this.dispose = () => {
|
|
5
|
+
this.dispose = async () => {
|
|
6
6
|
this.disposed = true;
|
|
7
|
-
this._disposes.
|
|
7
|
+
await Promise.all(this._disposes.map((dispose) => dispose()));
|
|
8
8
|
this._disposes = [];
|
|
9
9
|
};
|
|
10
|
+
this.compose = (disposable) => this.addDispose(disposable.dispose.bind(disposable));
|
|
10
11
|
this.addDispose = (dispose) => {
|
|
11
12
|
this._disposes.push(dispose);
|
|
12
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Disposable.js","sourceRoot":"","sources":["../../../src/utils/Disposable.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IAAvB;QACS,cAAS,
|
|
1
|
+
{"version":3,"file":"Disposable.js","sourceRoot":"","sources":["../../../src/utils/Disposable.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IAAvB;QACS,cAAS,GAAmC,EAAE,CAAC;QAC7C,aAAQ,GAAG,KAAK,CAAC;QAE3B,YAAO,GAAG,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,UAAmD,EAAE,EAAE,CACjE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5C,eAAU,GAAG,CAAC,OAAmC,EAAE,EAAE;YAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC;IACH,CAAC;CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wip.js","sourceRoot":"","sources":["../../../src/utils/wip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAEhE,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,MAAqB;IACvE,OAAO,SAAS,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;AACnD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@verdant-web/store",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-next.0",
|
|
4
4
|
"access": "public",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"jwt-decode": "^3.1.2",
|
|
32
32
|
"kysely": "^0.27.3",
|
|
33
33
|
"weak-event": "^2.0.5",
|
|
34
|
-
"@verdant-web/common": "2.
|
|
34
|
+
"@verdant-web/common": "2.6.0-next.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "20.10.5",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, it, expect, vi
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
2
|
import { createTestStorage } from './fixtures/testStorage.js';
|
|
3
3
|
import { Entity } from '../entities/Entity.js';
|
|
4
4
|
|
|
@@ -59,14 +59,15 @@ describe('batching operations', () => {
|
|
|
59
59
|
it('should overwrite superseded sequential set operations on the same key where applicable', async () => {
|
|
60
60
|
const onOperation = vi.fn();
|
|
61
61
|
const client = await createTestStorage({
|
|
62
|
-
|
|
62
|
+
// log: console.log,
|
|
63
63
|
});
|
|
64
|
+
client.subscribe('operation', onOperation);
|
|
64
65
|
|
|
65
66
|
const item = await client.todos.put({
|
|
66
67
|
content: 'hello world',
|
|
67
68
|
category: 'general',
|
|
68
69
|
});
|
|
69
|
-
onOperation.
|
|
70
|
+
onOperation.mockClear();
|
|
70
71
|
|
|
71
72
|
item.set('content', 'hello world 2');
|
|
72
73
|
item.set('content', 'hello world 3');
|
|
@@ -90,9 +91,8 @@ describe('batching operations', () => {
|
|
|
90
91
|
|
|
91
92
|
it('should not interfere with other fields when superseding', async () => {
|
|
92
93
|
const onOperation = vi.fn();
|
|
93
|
-
const client = await createTestStorage(
|
|
94
|
-
|
|
95
|
-
});
|
|
94
|
+
const client = await createTestStorage();
|
|
95
|
+
client.subscribe('operation', onOperation);
|
|
96
96
|
|
|
97
97
|
const item = await client.todos.put({
|
|
98
98
|
content: 'hello world',
|
|
@@ -686,7 +686,7 @@ describe('entities', () => {
|
|
|
686
686
|
|
|
687
687
|
it('should allow subscribing to one field and not break on deletion', async () => {
|
|
688
688
|
const storage = await createTestStorage({
|
|
689
|
-
log: console.log,
|
|
689
|
+
// log: console.log,
|
|
690
690
|
});
|
|
691
691
|
const item = await storage.todos.put({
|
|
692
692
|
content: 'item',
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ClientMessage,
|
|
3
|
-
createMigration,
|
|
4
|
-
Operation,
|
|
5
|
-
schema,
|
|
6
|
-
} from '@verdant-web/common';
|
|
1
|
+
import { createMigration, schema } from '@verdant-web/common';
|
|
7
2
|
// @ts-ignore
|
|
8
3
|
import { IDBFactory } from 'fake-indexeddb';
|
|
9
4
|
import { ClientWithCollections, ClientDescriptor } from '../../index.js';
|
|
10
5
|
import { METADATA_VERSION_KEY } from '../../client/constants.js';
|
|
11
|
-
import { Sync } from '../../sync/Sync.js';
|
|
12
6
|
|
|
13
7
|
export const todoCollection = schema.collection({
|
|
14
8
|
name: 'todo',
|
|
@@ -102,13 +96,11 @@ export function createTestStorage({
|
|
|
102
96
|
disableRebasing = false,
|
|
103
97
|
metadataVersion,
|
|
104
98
|
log,
|
|
105
|
-
onOperation,
|
|
106
99
|
}: {
|
|
107
100
|
idb?: IDBFactory;
|
|
108
101
|
disableRebasing?: boolean;
|
|
109
102
|
metadataVersion?: number;
|
|
110
103
|
log?: (...args: any[]) => void;
|
|
111
|
-
onOperation?: (op: Operation) => void;
|
|
112
104
|
} = {}) {
|
|
113
105
|
const storage = new ClientDescriptor({
|
|
114
106
|
schema: testSchema,
|
|
@@ -116,9 +108,9 @@ export function createTestStorage({
|
|
|
116
108
|
indexedDb: idb,
|
|
117
109
|
namespace: 'test',
|
|
118
110
|
disableRebasing,
|
|
111
|
+
oldSchemas: [testSchema],
|
|
119
112
|
log,
|
|
120
113
|
[METADATA_VERSION_KEY]: metadataVersion,
|
|
121
|
-
onOperation,
|
|
122
114
|
}).open();
|
|
123
115
|
return storage as Promise<ClientWithCollections>;
|
|
124
116
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, it, expect
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
2
|
import { createTestStorage } from './fixtures/testStorage.js';
|
|
3
3
|
import type { ClientWithCollections } from '../index.js';
|
|
4
4
|
import { assert } from '@verdant-web/common';
|
package/src/backup.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Client } from './client/Client.js';
|
|
2
2
|
import Zip from 'jszip';
|
|
3
|
-
import {
|
|
4
|
-
import { ReturnedFileData } from './files/FileStorage.js';
|
|
3
|
+
import { MetadataExport, PersistedFileData } from './persistence/interfaces.js';
|
|
5
4
|
|
|
6
5
|
// narrow type to just what's needed
|
|
7
6
|
type BackupClient = Pick<Client, 'export' | 'import' | 'namespace'>;
|
|
@@ -28,9 +27,9 @@ export async function readBackupFile(file: Blob) {
|
|
|
28
27
|
if (!data || !fileData) {
|
|
29
28
|
throw new Error('Failed to read data from backup');
|
|
30
29
|
}
|
|
31
|
-
const parsedData = JSON.parse(data) as
|
|
30
|
+
const parsedData = JSON.parse(data) as MetadataExport;
|
|
32
31
|
const parsedFileData = JSON.parse(fileData) as Omit<
|
|
33
|
-
|
|
32
|
+
PersistedFileData,
|
|
34
33
|
'file'
|
|
35
34
|
>[];
|
|
36
35
|
const filesInFilesFolder = Object.entries(zipFile.files).filter(
|