@verdant-web/store 2.0.1 → 2.0.3
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/cjs/BackoffScheduler.d.ts +19 -19
- package/dist/cjs/BackoffScheduler.js +44 -44
- package/dist/cjs/DocumentManager.d.ts +28 -28
- package/dist/cjs/DocumentManager.js +44 -44
- package/dist/cjs/IDBService.d.ts +9 -9
- package/dist/cjs/IDBService.js +46 -46
- package/dist/cjs/UndoHistory.d.ts +16 -16
- package/dist/cjs/UndoHistory.js +50 -50
- package/dist/cjs/__tests__/batching.test.d.ts +1 -1
- package/dist/cjs/__tests__/batching.test.js +44 -44
- package/dist/cjs/__tests__/documents.test.d.ts +1 -1
- package/dist/cjs/__tests__/documents.test.js +398 -398
- package/dist/cjs/__tests__/fixtures/testStorage.d.ts +118 -118
- package/dist/cjs/__tests__/fixtures/testStorage.js +115 -115
- package/dist/cjs/__tests__/queries.test.d.ts +1 -1
- package/dist/cjs/__tests__/queries.test.js +262 -262
- package/dist/cjs/__tests__/setup/indexedDB.d.ts +1 -1
- package/dist/cjs/__tests__/setup/indexedDB.js +3 -3
- package/dist/cjs/__tests__/undo.test.d.ts +1 -1
- package/dist/cjs/__tests__/undo.test.js +86 -86
- package/dist/cjs/client/Client.d.ts +86 -86
- package/dist/cjs/client/Client.js +226 -226
- package/dist/cjs/client/ClientDescriptor.d.ts +62 -62
- package/dist/cjs/client/ClientDescriptor.js +108 -108
- package/dist/cjs/constants.d.ts +1 -1
- package/dist/cjs/constants.js +4 -4
- package/dist/cjs/context.d.ts +17 -17
- package/dist/cjs/context.js +2 -2
- package/dist/cjs/files/EntityFile.d.ts +27 -27
- package/dist/cjs/files/EntityFile.js +71 -71
- package/dist/cjs/files/FileManager.d.ts +42 -42
- package/dist/cjs/files/FileManager.js +145 -145
- package/dist/cjs/files/FileStorage.d.ts +27 -27
- package/dist/cjs/files/FileStorage.js +93 -93
- package/dist/cjs/files/utils.d.ts +8 -8
- package/dist/cjs/files/utils.js +55 -55
- package/dist/cjs/files/utils.test.d.ts +1 -1
- package/dist/cjs/files/utils.test.js +80 -80
- package/dist/cjs/idb.d.ts +8 -8
- package/dist/cjs/idb.js +87 -87
- package/dist/cjs/index.d.ts +19 -19
- package/dist/cjs/index.js +20 -20
- package/dist/cjs/indexes.d.ts +3 -3
- package/dist/cjs/indexes.js +19 -19
- package/dist/cjs/metadata/AckInfoStore.d.ts +10 -10
- package/dist/cjs/metadata/AckInfoStore.js +25 -25
- package/dist/cjs/metadata/BaselinesStore.d.ts +33 -33
- package/dist/cjs/metadata/BaselinesStore.js +59 -59
- package/dist/cjs/metadata/LocalReplicaStore.d.ts +17 -17
- package/dist/cjs/metadata/LocalReplicaStore.js +47 -47
- package/dist/cjs/metadata/MessageCreator.d.ts +19 -19
- package/dist/cjs/metadata/MessageCreator.js +127 -127
- package/dist/cjs/metadata/Metadata.d.ts +106 -106
- package/dist/cjs/metadata/Metadata.js +336 -336
- package/dist/cjs/metadata/OperationsStore.d.ts +50 -50
- package/dist/cjs/metadata/OperationsStore.js +145 -145
- package/dist/cjs/metadata/SchemaStore.d.ts +9 -9
- package/dist/cjs/metadata/SchemaStore.js +38 -38
- package/dist/cjs/metadata/openMetadataDatabase.d.ts +8 -8
- package/dist/cjs/metadata/openMetadataDatabase.js +105 -105
- package/dist/cjs/openDocumentDatabase.d.ts +12 -12
- package/dist/cjs/openDocumentDatabase.js +424 -424
- package/dist/cjs/queries2/BaseQuery.d.ts +39 -39
- package/dist/cjs/queries2/BaseQuery.js +98 -98
- package/dist/cjs/queries2/CollectionQueries.d.ts +55 -55
- package/dist/cjs/queries2/CollectionQueries.js +82 -82
- package/dist/cjs/queries2/FindAllQuery.d.ts +11 -11
- package/dist/cjs/queries2/FindAllQuery.js +33 -33
- package/dist/cjs/queries2/FindInfiniteQuery.d.ts +18 -18
- package/dist/cjs/queries2/FindInfiniteQuery.js +60 -60
- package/dist/cjs/queries2/FindOneQuery.d.ts +11 -11
- package/dist/cjs/queries2/FindOneQuery.js +33 -33
- package/dist/cjs/queries2/FindPageQuery.d.ts +23 -23
- package/dist/cjs/queries2/FindPageQuery.js +67 -67
- package/dist/cjs/queries2/GetQuery.d.ts +10 -10
- package/dist/cjs/queries2/GetQuery.js +29 -29
- package/dist/cjs/queries2/QueryCache.d.ts +16 -16
- package/dist/cjs/queries2/QueryCache.js +39 -39
- package/dist/cjs/queries2/dbQueries.d.ts +22 -22
- package/dist/cjs/queries2/dbQueries.js +125 -125
- package/dist/cjs/queries2/keys.d.ts +10 -10
- package/dist/cjs/queries2/keys.js +33 -33
- package/dist/cjs/queries2/ranges.d.ts +2 -2
- package/dist/cjs/queries2/ranges.js +69 -69
- package/dist/cjs/queries2/types.d.ts +6 -6
- package/dist/cjs/queries2/types.js +2 -2
- package/dist/cjs/queries2/utils.d.ts +1 -1
- package/dist/cjs/queries2/utils.js +19 -19
- package/dist/cjs/reactives/DocumentFamiliyCache.d.ts +51 -47
- package/dist/cjs/reactives/DocumentFamiliyCache.js +214 -210
- package/dist/cjs/reactives/DocumentFamiliyCache.js.map +1 -1
- package/dist/cjs/reactives/Entity.d.ts +192 -191
- package/dist/cjs/reactives/Entity.js +466 -462
- package/dist/cjs/reactives/Entity.js.map +1 -1
- package/dist/cjs/reactives/EntityStore.d.ts +84 -84
- package/dist/cjs/reactives/EntityStore.js +425 -421
- package/dist/cjs/reactives/EntityStore.js.map +1 -1
- package/dist/cjs/reactives/FakeWeakRef.d.ts +11 -11
- package/dist/cjs/reactives/FakeWeakRef.js +18 -18
- package/dist/cjs/sync/FileSync.d.ts +23 -23
- package/dist/cjs/sync/FileSync.js +84 -84
- package/dist/cjs/sync/Heartbeat.d.ts +24 -24
- package/dist/cjs/sync/Heartbeat.js +55 -55
- package/dist/cjs/sync/PresenceManager.d.ts +41 -41
- package/dist/cjs/sync/PresenceManager.js +107 -107
- package/dist/cjs/sync/PushPullSync.d.ts +36 -36
- package/dist/cjs/sync/PushPullSync.js +141 -141
- package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +27 -27
- package/dist/cjs/sync/ServerSyncEndpointProvider.js +64 -64
- package/dist/cjs/sync/Sync.d.ts +127 -127
- package/dist/cjs/sync/Sync.js +244 -244
- package/dist/cjs/sync/WebSocketSync.d.ts +41 -41
- package/dist/cjs/sync/WebSocketSync.js +183 -183
- package/dist/cjs/types.d.ts +5 -5
- package/dist/cjs/types.js +2 -2
- package/dist/cjs/utils/Disposable.d.ts +6 -6
- package/dist/cjs/utils/Disposable.js +18 -18
- package/dist/cjs/utils/Resolvable.d.ts +8 -8
- package/dist/cjs/utils/Resolvable.js +22 -22
- package/dist/esm/BackoffScheduler.d.ts +19 -19
- package/dist/esm/BackoffScheduler.js +39 -39
- package/dist/esm/DocumentManager.d.ts +28 -28
- package/dist/esm/DocumentManager.js +40 -40
- package/dist/esm/IDBService.d.ts +9 -9
- package/dist/esm/IDBService.js +42 -42
- package/dist/esm/UndoHistory.d.ts +16 -16
- package/dist/esm/UndoHistory.js +46 -46
- package/dist/esm/__tests__/batching.test.d.ts +1 -1
- package/dist/esm/__tests__/batching.test.js +42 -42
- package/dist/esm/__tests__/documents.test.d.ts +1 -1
- package/dist/esm/__tests__/documents.test.js +396 -396
- package/dist/esm/__tests__/fixtures/testStorage.d.ts +118 -118
- package/dist/esm/__tests__/fixtures/testStorage.js +111 -111
- package/dist/esm/__tests__/queries.test.d.ts +1 -1
- package/dist/esm/__tests__/queries.test.js +260 -260
- package/dist/esm/__tests__/setup/indexedDB.d.ts +1 -1
- package/dist/esm/__tests__/setup/indexedDB.js +1 -1
- package/dist/esm/__tests__/undo.test.d.ts +1 -1
- package/dist/esm/__tests__/undo.test.js +84 -84
- package/dist/esm/client/Client.d.ts +86 -86
- package/dist/esm/client/Client.js +222 -222
- package/dist/esm/client/ClientDescriptor.d.ts +62 -62
- package/dist/esm/client/ClientDescriptor.js +104 -104
- package/dist/esm/constants.d.ts +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/context.d.ts +17 -17
- package/dist/esm/context.js +1 -1
- package/dist/esm/files/EntityFile.d.ts +27 -27
- package/dist/esm/files/EntityFile.js +67 -67
- package/dist/esm/files/FileManager.d.ts +42 -42
- package/dist/esm/files/FileManager.js +141 -141
- package/dist/esm/files/FileStorage.d.ts +27 -27
- package/dist/esm/files/FileStorage.js +88 -88
- package/dist/esm/files/utils.d.ts +8 -8
- package/dist/esm/files/utils.js +46 -46
- package/dist/esm/files/utils.test.d.ts +1 -1
- package/dist/esm/files/utils.test.js +78 -78
- package/dist/esm/idb.d.ts +8 -8
- package/dist/esm/idb.js +79 -79
- package/dist/esm/index.d.ts +19 -19
- package/dist/esm/index.js +11 -11
- package/dist/esm/indexes.d.ts +3 -3
- package/dist/esm/indexes.js +14 -14
- package/dist/esm/metadata/AckInfoStore.d.ts +10 -10
- package/dist/esm/metadata/AckInfoStore.js +21 -21
- package/dist/esm/metadata/BaselinesStore.d.ts +33 -33
- package/dist/esm/metadata/BaselinesStore.js +55 -55
- package/dist/esm/metadata/LocalReplicaStore.d.ts +17 -17
- package/dist/esm/metadata/LocalReplicaStore.js +40 -40
- package/dist/esm/metadata/MessageCreator.d.ts +19 -19
- package/dist/esm/metadata/MessageCreator.js +123 -123
- package/dist/esm/metadata/Metadata.d.ts +106 -106
- package/dist/esm/metadata/Metadata.js +332 -332
- package/dist/esm/metadata/OperationsStore.d.ts +50 -50
- package/dist/esm/metadata/OperationsStore.js +141 -141
- package/dist/esm/metadata/SchemaStore.d.ts +9 -9
- package/dist/esm/metadata/SchemaStore.js +34 -34
- package/dist/esm/metadata/openMetadataDatabase.d.ts +8 -8
- package/dist/esm/metadata/openMetadataDatabase.js +101 -101
- package/dist/esm/openDocumentDatabase.d.ts +12 -12
- package/dist/esm/openDocumentDatabase.js +420 -420
- package/dist/esm/queries2/BaseQuery.d.ts +39 -39
- package/dist/esm/queries2/BaseQuery.js +94 -94
- package/dist/esm/queries2/CollectionQueries.d.ts +55 -55
- package/dist/esm/queries2/CollectionQueries.js +78 -78
- package/dist/esm/queries2/FindAllQuery.d.ts +11 -11
- package/dist/esm/queries2/FindAllQuery.js +29 -29
- package/dist/esm/queries2/FindInfiniteQuery.d.ts +18 -18
- package/dist/esm/queries2/FindInfiniteQuery.js +56 -56
- package/dist/esm/queries2/FindOneQuery.d.ts +11 -11
- package/dist/esm/queries2/FindOneQuery.js +29 -29
- package/dist/esm/queries2/FindPageQuery.d.ts +23 -23
- package/dist/esm/queries2/FindPageQuery.js +63 -63
- package/dist/esm/queries2/GetQuery.d.ts +10 -10
- package/dist/esm/queries2/GetQuery.js +25 -25
- package/dist/esm/queries2/QueryCache.d.ts +16 -16
- package/dist/esm/queries2/QueryCache.js +35 -35
- package/dist/esm/queries2/dbQueries.d.ts +22 -22
- package/dist/esm/queries2/dbQueries.js +119 -119
- package/dist/esm/queries2/keys.d.ts +10 -10
- package/dist/esm/queries2/keys.js +29 -29
- package/dist/esm/queries2/ranges.d.ts +2 -2
- package/dist/esm/queries2/ranges.js +65 -65
- package/dist/esm/queries2/types.d.ts +6 -6
- package/dist/esm/queries2/types.js +1 -1
- package/dist/esm/queries2/utils.d.ts +1 -1
- package/dist/esm/queries2/utils.js +15 -15
- package/dist/esm/reactives/DocumentFamiliyCache.d.ts +51 -47
- package/dist/esm/reactives/DocumentFamiliyCache.js +210 -206
- package/dist/esm/reactives/DocumentFamiliyCache.js.map +1 -1
- package/dist/esm/reactives/Entity.d.ts +192 -191
- package/dist/esm/reactives/Entity.js +461 -457
- package/dist/esm/reactives/Entity.js.map +1 -1
- package/dist/esm/reactives/EntityStore.d.ts +84 -84
- package/dist/esm/reactives/EntityStore.js +421 -417
- package/dist/esm/reactives/EntityStore.js.map +1 -1
- package/dist/esm/reactives/FakeWeakRef.d.ts +11 -11
- package/dist/esm/reactives/FakeWeakRef.js +14 -14
- package/dist/esm/sync/FileSync.d.ts +23 -23
- package/dist/esm/sync/FileSync.js +80 -80
- package/dist/esm/sync/Heartbeat.d.ts +24 -24
- package/dist/esm/sync/Heartbeat.js +51 -51
- package/dist/esm/sync/PresenceManager.d.ts +41 -41
- package/dist/esm/sync/PresenceManager.js +103 -103
- package/dist/esm/sync/PushPullSync.d.ts +36 -36
- package/dist/esm/sync/PushPullSync.js +137 -137
- package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +27 -27
- package/dist/esm/sync/ServerSyncEndpointProvider.js +57 -57
- package/dist/esm/sync/Sync.d.ts +127 -127
- package/dist/esm/sync/Sync.js +239 -239
- package/dist/esm/sync/{WebsocketSync.d.ts → WebSocketSync.d.ts} +41 -41
- package/dist/esm/sync/{WebsocketSync.js → WebSocketSync.js} +179 -179
- package/dist/esm/types.d.ts +5 -5
- package/dist/esm/types.js +1 -1
- package/dist/esm/utils/Disposable.d.ts +6 -6
- package/dist/esm/utils/Disposable.js +14 -14
- package/dist/esm/utils/Resolvable.d.ts +8 -8
- package/dist/esm/utils/Resolvable.js +18 -18
- package/dist/tsconfig-cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/reactives/DocumentFamiliyCache.ts +4 -0
- package/src/reactives/Entity.ts +8 -1
- package/src/reactives/EntityStore.ts +18 -13
- package/dist/cjs/AckInfoStore.d.ts +0 -10
- package/dist/cjs/AckInfoStore.js +0 -26
- package/dist/cjs/AckInfoStore.js.map +0 -1
- package/dist/cjs/BaselinesStore.d.ts +0 -10
- package/dist/cjs/BaselinesStore.js +0 -36
- package/dist/cjs/BaselinesStore.js.map +0 -1
- package/dist/cjs/Entity.d.ts +0 -96
- package/dist/cjs/Entity.js +0 -345
- package/dist/cjs/Entity.js.map +0 -1
- package/dist/cjs/EntityStore.d.ts +0 -36
- package/dist/cjs/EntityStore.js +0 -172
- package/dist/cjs/EntityStore.js.map +0 -1
- package/dist/cjs/LocalHistoryStore.d.ts +0 -15
- package/dist/cjs/LocalHistoryStore.js +0 -53
- package/dist/cjs/LocalHistoryStore.js.map +0 -1
- package/dist/cjs/LocalReplicaStore.d.ts +0 -13
- package/dist/cjs/LocalReplicaStore.js +0 -49
- package/dist/cjs/LocalReplicaStore.js.map +0 -1
- package/dist/cjs/MessageCreator.d.ts +0 -19
- package/dist/cjs/MessageCreator.js +0 -104
- package/dist/cjs/MessageCreator.js.map +0 -1
- package/dist/cjs/Metadata.d.ts +0 -91
- package/dist/cjs/Metadata.js +0 -250
- package/dist/cjs/Metadata.js.map +0 -1
- package/dist/cjs/OperationsStore.d.ts +0 -38
- package/dist/cjs/OperationsStore.js +0 -146
- package/dist/cjs/OperationsStore.js.map +0 -1
- package/dist/cjs/PresenceManager.d.ts +0 -30
- package/dist/cjs/PresenceManager.js +0 -89
- package/dist/cjs/PresenceManager.js.map +0 -1
- package/dist/cjs/Query.d.ts +0 -26
- package/dist/cjs/Query.js +0 -86
- package/dist/cjs/Query.js.map +0 -1
- package/dist/cjs/QueryMaker.d.ts +0 -18
- package/dist/cjs/QueryMaker.js +0 -98
- package/dist/cjs/QueryMaker.js.map +0 -1
- package/dist/cjs/QueryStore.d.ts +0 -38
- package/dist/cjs/QueryStore.js +0 -146
- package/dist/cjs/QueryStore.js.map +0 -1
- package/dist/cjs/SchemaStore.d.ts +0 -9
- package/dist/cjs/SchemaStore.js +0 -35
- package/dist/cjs/SchemaStore.js.map +0 -1
- package/dist/cjs/Storage.d.ts +0 -147
- package/dist/cjs/Storage.js +0 -346
- package/dist/cjs/Storage.js.map +0 -1
- package/dist/cjs/Sync.d.ts +0 -117
- package/dist/cjs/Sync.js +0 -561
- package/dist/cjs/Sync.js.map +0 -1
- package/dist/cjs/SyncHarness.d.ts +0 -45
- package/dist/cjs/SyncHarness.js +0 -110
- package/dist/cjs/SyncHarness.js.map +0 -1
- package/dist/cjs/metadata/LocalHistoryStore.d.ts +0 -15
- package/dist/cjs/metadata/LocalHistoryStore.js +0 -53
- package/dist/cjs/metadata/LocalHistoryStore.js.map +0 -1
- package/dist/cjs/queries/LiveQuery.d.ts +0 -28
- package/dist/cjs/queries/LiveQuery.js +0 -96
- package/dist/cjs/queries/LiveQuery.js.map +0 -1
- package/dist/cjs/queries/LiveQueryMaker.d.ts +0 -15
- package/dist/cjs/queries/LiveQueryMaker.js +0 -42
- package/dist/cjs/queries/LiveQueryMaker.js.map +0 -1
- package/dist/cjs/queries/LiveQueryStore.d.ts +0 -33
- package/dist/cjs/queries/LiveQueryStore.js +0 -85
- package/dist/cjs/queries/LiveQueryStore.js.map +0 -1
- package/dist/cjs/queries/Query.d.ts +0 -18
- package/dist/cjs/queries/Query.js +0 -36
- package/dist/cjs/queries/Query.js.map +0 -1
- package/dist/cjs/queries/QueryMaker.d.ts +0 -14
- package/dist/cjs/queries/QueryMaker.js +0 -42
- package/dist/cjs/queries/QueryMaker.js.map +0 -1
- package/dist/cjs/queries/QueryStore.d.ts +0 -35
- package/dist/cjs/queries/QueryStore.js +0 -130
- package/dist/cjs/queries/QueryStore.js.map +0 -1
- package/dist/cjs/queries/ranges.d.ts +0 -2
- package/dist/cjs/queries/ranges.js +0 -70
- package/dist/cjs/queries/ranges.js.map +0 -1
- package/dist/cjs/v2/AckInfoStore.d.ts +0 -10
- package/dist/cjs/v2/AckInfoStore.js +0 -26
- package/dist/cjs/v2/AckInfoStore.js.map +0 -1
- package/dist/cjs/v2/BaselinesStore.d.ts +0 -10
- package/dist/cjs/v2/BaselinesStore.js +0 -36
- package/dist/cjs/v2/BaselinesStore.js.map +0 -1
- package/dist/cjs/v2/DocumentManager.d.ts +0 -19
- package/dist/cjs/v2/DocumentManager.js +0 -47
- package/dist/cjs/v2/DocumentManager.js.map +0 -1
- package/dist/cjs/v2/Entity.d.ts +0 -87
- package/dist/cjs/v2/Entity.js +0 -305
- package/dist/cjs/v2/Entity.js.map +0 -1
- package/dist/cjs/v2/EntityStore.d.ts +0 -37
- package/dist/cjs/v2/EntityStore.js +0 -165
- package/dist/cjs/v2/EntityStore.js.map +0 -1
- package/dist/cjs/v2/IDBService.d.ts +0 -7
- package/dist/cjs/v2/IDBService.js +0 -26
- package/dist/cjs/v2/IDBService.js.map +0 -1
- package/dist/cjs/v2/LocalHistoryStore.d.ts +0 -15
- package/dist/cjs/v2/LocalHistoryStore.js +0 -53
- package/dist/cjs/v2/LocalHistoryStore.js.map +0 -1
- package/dist/cjs/v2/LocalReplicaStore.d.ts +0 -14
- package/dist/cjs/v2/LocalReplicaStore.js +0 -49
- package/dist/cjs/v2/LocalReplicaStore.js.map +0 -1
- package/dist/cjs/v2/MessageCreator.d.ts +0 -19
- package/dist/cjs/v2/MessageCreator.js +0 -99
- package/dist/cjs/v2/MessageCreator.js.map +0 -1
- package/dist/cjs/v2/Metadata.d.ts +0 -90
- package/dist/cjs/v2/Metadata.js +0 -251
- package/dist/cjs/v2/Metadata.js.map +0 -1
- package/dist/cjs/v2/OperationsStore.d.ts +0 -38
- package/dist/cjs/v2/OperationsStore.js +0 -146
- package/dist/cjs/v2/OperationsStore.js.map +0 -1
- package/dist/cjs/v2/PresenceManager.d.ts +0 -24
- package/dist/cjs/v2/PresenceManager.js +0 -73
- package/dist/cjs/v2/PresenceManager.js.map +0 -1
- package/dist/cjs/v2/Query.d.ts +0 -24
- package/dist/cjs/v2/Query.js +0 -79
- package/dist/cjs/v2/Query.js.map +0 -1
- package/dist/cjs/v2/QueryMaker.d.ts +0 -16
- package/dist/cjs/v2/QueryMaker.js +0 -84
- package/dist/cjs/v2/QueryMaker.js.map +0 -1
- package/dist/cjs/v2/QueryStore.d.ts +0 -26
- package/dist/cjs/v2/QueryStore.js +0 -136
- package/dist/cjs/v2/QueryStore.js.map +0 -1
- package/dist/cjs/v2/SchemaStore.d.ts +0 -9
- package/dist/cjs/v2/SchemaStore.js +0 -35
- package/dist/cjs/v2/SchemaStore.js.map +0 -1
- package/dist/cjs/v2/Storage.d.ts +0 -80
- package/dist/cjs/v2/Storage.js +0 -154
- package/dist/cjs/v2/Storage.js.map +0 -1
- package/dist/cjs/v2/Sync.d.ts +0 -42
- package/dist/cjs/v2/Sync.js +0 -98
- package/dist/cjs/v2/Sync.js.map +0 -1
- package/dist/cjs/v2/SyncHarness.d.ts +0 -45
- package/dist/cjs/v2/SyncHarness.js +0 -110
- package/dist/cjs/v2/SyncHarness.js.map +0 -1
- package/dist/cjs/v2/__tests__/documents.test.d.ts +0 -1
- package/dist/cjs/v2/__tests__/documents.test.js +0 -185
- package/dist/cjs/v2/__tests__/documents.test.js.map +0 -1
- package/dist/cjs/v2/__tests__/fixtures/testStorage.d.ts +0 -189
- package/dist/cjs/v2/__tests__/fixtures/testStorage.js +0 -93
- package/dist/cjs/v2/__tests__/fixtures/testStorage.js.map +0 -1
- package/dist/cjs/v2/__tests__/queries.test.d.ts +0 -1
- package/dist/cjs/v2/__tests__/queries.test.js +0 -92
- package/dist/cjs/v2/__tests__/queries.test.js.map +0 -1
- package/dist/cjs/v2/__tests__/setup/indexedDB.d.ts +0 -1
- package/dist/cjs/v2/__tests__/setup/indexedDB.js +0 -4
- package/dist/cjs/v2/__tests__/setup/indexedDB.js.map +0 -1
- package/dist/cjs/v2/constants.d.ts +0 -1
- package/dist/cjs/v2/constants.js +0 -5
- package/dist/cjs/v2/constants.js.map +0 -1
- package/dist/cjs/v2/idb.d.ts +0 -6
- package/dist/cjs/v2/idb.js +0 -71
- package/dist/cjs/v2/idb.js.map +0 -1
- package/dist/cjs/v2/index.d.ts +0 -6
- package/dist/cjs/v2/index.js +0 -14
- package/dist/cjs/v2/index.js.map +0 -1
- package/dist/cjs/v2/indexes.d.ts +0 -3
- package/dist/cjs/v2/indexes.js +0 -20
- package/dist/cjs/v2/indexes.js.map +0 -1
- package/dist/cjs/v2/openDocumentDatabase.d.ts +0 -9
- package/dist/cjs/v2/openDocumentDatabase.js +0 -100
- package/dist/cjs/v2/openDocumentDatabase.js.map +0 -1
- package/dist/cjs/v2/types.d.ts +0 -3
- package/dist/cjs/v2/types.js +0 -3
- package/dist/cjs/v2/types.js.map +0 -1
- package/dist/esm/AckInfoStore.d.ts +0 -10
- package/dist/esm/AckInfoStore.js +0 -22
- package/dist/esm/AckInfoStore.js.map +0 -1
- package/dist/esm/BaselinesStore.d.ts +0 -10
- package/dist/esm/BaselinesStore.js +0 -32
- package/dist/esm/BaselinesStore.js.map +0 -1
- package/dist/esm/Entity.d.ts +0 -96
- package/dist/esm/Entity.js +0 -337
- package/dist/esm/Entity.js.map +0 -1
- package/dist/esm/EntityStore.d.ts +0 -36
- package/dist/esm/EntityStore.js +0 -168
- package/dist/esm/EntityStore.js.map +0 -1
- package/dist/esm/LocalHistoryStore.d.ts +0 -15
- package/dist/esm/LocalHistoryStore.js +0 -49
- package/dist/esm/LocalHistoryStore.js.map +0 -1
- package/dist/esm/LocalReplicaStore.d.ts +0 -13
- package/dist/esm/LocalReplicaStore.js +0 -42
- package/dist/esm/LocalReplicaStore.js.map +0 -1
- package/dist/esm/MessageCreator.d.ts +0 -19
- package/dist/esm/MessageCreator.js +0 -97
- package/dist/esm/MessageCreator.js.map +0 -1
- package/dist/esm/Metadata.d.ts +0 -91
- package/dist/esm/Metadata.js +0 -245
- package/dist/esm/Metadata.js.map +0 -1
- package/dist/esm/OperationsStore.d.ts +0 -38
- package/dist/esm/OperationsStore.js +0 -142
- package/dist/esm/OperationsStore.js.map +0 -1
- package/dist/esm/PresenceManager.d.ts +0 -30
- package/dist/esm/PresenceManager.js +0 -85
- package/dist/esm/PresenceManager.js.map +0 -1
- package/dist/esm/Query.d.ts +0 -26
- package/dist/esm/Query.js +0 -82
- package/dist/esm/Query.js.map +0 -1
- package/dist/esm/QueryMaker.d.ts +0 -18
- package/dist/esm/QueryMaker.js +0 -94
- package/dist/esm/QueryMaker.js.map +0 -1
- package/dist/esm/QueryStore.d.ts +0 -38
- package/dist/esm/QueryStore.js +0 -142
- package/dist/esm/QueryStore.js.map +0 -1
- package/dist/esm/SchemaStore.d.ts +0 -9
- package/dist/esm/SchemaStore.js +0 -31
- package/dist/esm/SchemaStore.js.map +0 -1
- package/dist/esm/Storage.d.ts +0 -147
- package/dist/esm/Storage.js +0 -341
- package/dist/esm/Storage.js.map +0 -1
- package/dist/esm/Sync.d.ts +0 -117
- package/dist/esm/Sync.js +0 -553
- package/dist/esm/Sync.js.map +0 -1
- package/dist/esm/SyncHarness.d.ts +0 -45
- package/dist/esm/SyncHarness.js +0 -105
- package/dist/esm/SyncHarness.js.map +0 -1
- package/dist/esm/metadata/LocalHistoryStore.d.ts +0 -15
- package/dist/esm/metadata/LocalHistoryStore.js +0 -49
- package/dist/esm/metadata/LocalHistoryStore.js.map +0 -1
- package/dist/esm/queries/LiveQuery.d.ts +0 -28
- package/dist/esm/queries/LiveQuery.js +0 -92
- package/dist/esm/queries/LiveQuery.js.map +0 -1
- package/dist/esm/queries/LiveQueryMaker.d.ts +0 -15
- package/dist/esm/queries/LiveQueryMaker.js +0 -38
- package/dist/esm/queries/LiveQueryMaker.js.map +0 -1
- package/dist/esm/queries/LiveQueryStore.d.ts +0 -33
- package/dist/esm/queries/LiveQueryStore.js +0 -81
- package/dist/esm/queries/LiveQueryStore.js.map +0 -1
- package/dist/esm/queries/Query.d.ts +0 -18
- package/dist/esm/queries/Query.js +0 -32
- package/dist/esm/queries/Query.js.map +0 -1
- package/dist/esm/queries/QueryMaker.d.ts +0 -14
- package/dist/esm/queries/QueryMaker.js +0 -38
- package/dist/esm/queries/QueryMaker.js.map +0 -1
- package/dist/esm/queries/QueryStore.d.ts +0 -35
- package/dist/esm/queries/QueryStore.js +0 -126
- package/dist/esm/queries/QueryStore.js.map +0 -1
- package/dist/esm/queries/ranges.d.ts +0 -2
- package/dist/esm/queries/ranges.js +0 -66
- package/dist/esm/queries/ranges.js.map +0 -1
- package/dist/esm/v2/AckInfoStore.d.ts +0 -10
- package/dist/esm/v2/AckInfoStore.js +0 -22
- package/dist/esm/v2/AckInfoStore.js.map +0 -1
- package/dist/esm/v2/BaselinesStore.d.ts +0 -10
- package/dist/esm/v2/BaselinesStore.js +0 -32
- package/dist/esm/v2/BaselinesStore.js.map +0 -1
- package/dist/esm/v2/DocumentManager.d.ts +0 -19
- package/dist/esm/v2/DocumentManager.js +0 -43
- package/dist/esm/v2/DocumentManager.js.map +0 -1
- package/dist/esm/v2/Entity.d.ts +0 -91
- package/dist/esm/v2/Entity.js +0 -305
- package/dist/esm/v2/Entity.js.map +0 -1
- package/dist/esm/v2/EntityStore.d.ts +0 -37
- package/dist/esm/v2/EntityStore.js +0 -166
- package/dist/esm/v2/EntityStore.js.map +0 -1
- package/dist/esm/v2/IDBService.d.ts +0 -7
- package/dist/esm/v2/IDBService.js +0 -22
- package/dist/esm/v2/IDBService.js.map +0 -1
- package/dist/esm/v2/LocalHistoryStore.d.ts +0 -15
- package/dist/esm/v2/LocalHistoryStore.js +0 -49
- package/dist/esm/v2/LocalHistoryStore.js.map +0 -1
- package/dist/esm/v2/LocalReplicaStore.d.ts +0 -14
- package/dist/esm/v2/LocalReplicaStore.js +0 -42
- package/dist/esm/v2/LocalReplicaStore.js.map +0 -1
- package/dist/esm/v2/MessageCreator.d.ts +0 -19
- package/dist/esm/v2/MessageCreator.js +0 -92
- package/dist/esm/v2/MessageCreator.js.map +0 -1
- package/dist/esm/v2/Metadata.d.ts +0 -90
- package/dist/esm/v2/Metadata.js +0 -246
- package/dist/esm/v2/Metadata.js.map +0 -1
- package/dist/esm/v2/OperationsStore.d.ts +0 -38
- package/dist/esm/v2/OperationsStore.js +0 -142
- package/dist/esm/v2/OperationsStore.js.map +0 -1
- package/dist/esm/v2/PresenceManager.d.ts +0 -24
- package/dist/esm/v2/PresenceManager.js +0 -69
- package/dist/esm/v2/PresenceManager.js.map +0 -1
- package/dist/esm/v2/Query.d.ts +0 -24
- package/dist/esm/v2/Query.js +0 -75
- package/dist/esm/v2/Query.js.map +0 -1
- package/dist/esm/v2/QueryMaker.d.ts +0 -16
- package/dist/esm/v2/QueryMaker.js +0 -80
- package/dist/esm/v2/QueryMaker.js.map +0 -1
- package/dist/esm/v2/QueryStore.d.ts +0 -26
- package/dist/esm/v2/QueryStore.js +0 -132
- package/dist/esm/v2/QueryStore.js.map +0 -1
- package/dist/esm/v2/SchemaStore.d.ts +0 -9
- package/dist/esm/v2/SchemaStore.js +0 -31
- package/dist/esm/v2/SchemaStore.js.map +0 -1
- package/dist/esm/v2/Storage.d.ts +0 -80
- package/dist/esm/v2/Storage.js +0 -149
- package/dist/esm/v2/Storage.js.map +0 -1
- package/dist/esm/v2/Sync.d.ts +0 -42
- package/dist/esm/v2/Sync.js +0 -94
- package/dist/esm/v2/Sync.js.map +0 -1
- package/dist/esm/v2/SyncHarness.d.ts +0 -45
- package/dist/esm/v2/SyncHarness.js +0 -105
- package/dist/esm/v2/SyncHarness.js.map +0 -1
- package/dist/esm/v2/__tests__/documents.test.d.ts +0 -1
- package/dist/esm/v2/__tests__/documents.test.js +0 -208
- package/dist/esm/v2/__tests__/documents.test.js.map +0 -1
- package/dist/esm/v2/__tests__/fixtures/testStorage.d.ts +0 -223
- package/dist/esm/v2/__tests__/fixtures/testStorage.js +0 -106
- package/dist/esm/v2/__tests__/fixtures/testStorage.js.map +0 -1
- package/dist/esm/v2/__tests__/queries.test.d.ts +0 -1
- package/dist/esm/v2/__tests__/queries.test.js +0 -90
- package/dist/esm/v2/__tests__/queries.test.js.map +0 -1
- package/dist/esm/v2/__tests__/setup/indexedDB.d.ts +0 -1
- package/dist/esm/v2/__tests__/setup/indexedDB.js +0 -2
- package/dist/esm/v2/__tests__/setup/indexedDB.js.map +0 -1
- package/dist/esm/v2/constants.d.ts +0 -1
- package/dist/esm/v2/constants.js +0 -2
- package/dist/esm/v2/constants.js.map +0 -1
- package/dist/esm/v2/idb.d.ts +0 -6
- package/dist/esm/v2/idb.js +0 -65
- package/dist/esm/v2/idb.js.map +0 -1
- package/dist/esm/v2/index.d.ts +0 -6
- package/dist/esm/v2/index.js +0 -5
- package/dist/esm/v2/index.js.map +0 -1
- package/dist/esm/v2/indexes.d.ts +0 -3
- package/dist/esm/v2/indexes.js +0 -15
- package/dist/esm/v2/indexes.js.map +0 -1
- package/dist/esm/v2/openDocumentDatabase.d.ts +0 -9
- package/dist/esm/v2/openDocumentDatabase.js +0 -96
- package/dist/esm/v2/openDocumentDatabase.js.map +0 -1
- package/dist/esm/v2/types.d.ts +0 -3
- package/dist/esm/v2/types.js +0 -2
- package/dist/esm/v2/types.js.map +0 -1
- /package/dist/esm/sync/{WebsocketSync.js.map → WebSocketSync.js.map} +0 -0
|
@@ -1,223 +1,223 @@
|
|
|
1
|
-
import { assert, } from '@verdant-web/common';
|
|
2
|
-
import { DocumentManager } from '../DocumentManager.js';
|
|
3
|
-
import { FileManager } from '../files/FileManager.js';
|
|
4
|
-
import { closeDatabase, getSizeOfObjectStore } from '../idb.js';
|
|
5
|
-
import { openDocumentDatabase } from '../openDocumentDatabase.js';
|
|
6
|
-
import { EntityStore } from '../reactives/EntityStore.js';
|
|
7
|
-
import { NoSync, ServerSync } from '../sync/Sync.js';
|
|
8
|
-
import { CollectionQueries } from '../queries2/CollectionQueries.js';
|
|
9
|
-
import { QueryCache } from '../queries2/QueryCache.js';
|
|
10
|
-
export class Client {
|
|
11
|
-
get sync() {
|
|
12
|
-
return this._sync;
|
|
13
|
-
}
|
|
14
|
-
get entities() {
|
|
15
|
-
return this._entities;
|
|
16
|
-
}
|
|
17
|
-
get documentManager() {
|
|
18
|
-
return this._documentManager;
|
|
19
|
-
}
|
|
20
|
-
constructor(config, context, components) {
|
|
21
|
-
var _a;
|
|
22
|
-
this.config = config;
|
|
23
|
-
this.context = context;
|
|
24
|
-
this.addData = (data) => {
|
|
25
|
-
return this._entities.addData(data);
|
|
26
|
-
};
|
|
27
|
-
this.stats = async () => {
|
|
28
|
-
const collectionNames = Object.keys(this.schema.collections);
|
|
29
|
-
let collections = {};
|
|
30
|
-
for (const collectionName of collectionNames) {
|
|
31
|
-
collections[collectionName] = await getSizeOfObjectStore(this.documentDb, collectionName);
|
|
32
|
-
}
|
|
33
|
-
const meta = await this.meta.stats();
|
|
34
|
-
const storage = typeof navigator !== 'undefined' &&
|
|
35
|
-
typeof navigator.storage !== 'undefined' &&
|
|
36
|
-
'estimate' in navigator.storage
|
|
37
|
-
? await navigator.storage.estimate()
|
|
38
|
-
: undefined;
|
|
39
|
-
// determine data:metadata ratio for total size of all collections vs metadata
|
|
40
|
-
const totalCollectionsSize = Object.values(collections).reduce((acc, { size }) => acc + size, 0);
|
|
41
|
-
const totalMetaSize = meta.baselinesSize.size + meta.operationsSize.size;
|
|
42
|
-
const metaToDataRatio = totalMetaSize / totalCollectionsSize;
|
|
43
|
-
return {
|
|
44
|
-
collections,
|
|
45
|
-
meta,
|
|
46
|
-
storage,
|
|
47
|
-
totalMetaSize,
|
|
48
|
-
totalCollectionsSize,
|
|
49
|
-
metaToDataRatio,
|
|
50
|
-
quotaUsage: (storage === null || storage === void 0 ? void 0 : storage.usage) && (storage === null || storage === void 0 ? void 0 : storage.quota)
|
|
51
|
-
? storage.usage / storage.quota
|
|
52
|
-
: undefined,
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
this.close = async () => {
|
|
56
|
-
var _a, _b;
|
|
57
|
-
await this.entities.flushPatches();
|
|
58
|
-
this.sync.stop();
|
|
59
|
-
this.sync.dispose();
|
|
60
|
-
this.meta.close();
|
|
61
|
-
this._entities.destroy();
|
|
62
|
-
await closeDatabase(this.documentDb);
|
|
63
|
-
await closeDatabase(this.metaDb);
|
|
64
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'Client closed');
|
|
65
|
-
};
|
|
66
|
-
this.__dangerous__resetLocal = async () => {
|
|
67
|
-
this.sync.stop();
|
|
68
|
-
const req1 = indexedDB.deleteDatabase([this.namespace, 'meta'].join('_'));
|
|
69
|
-
const req2 = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
70
|
-
await Promise.all([
|
|
71
|
-
new Promise((resolve, reject) => {
|
|
72
|
-
req1.onsuccess = resolve;
|
|
73
|
-
req1.onerror = reject;
|
|
74
|
-
}),
|
|
75
|
-
new Promise((resolve, reject) => {
|
|
76
|
-
req2.onsuccess = resolve;
|
|
77
|
-
req2.onerror = reject;
|
|
78
|
-
}),
|
|
79
|
-
]);
|
|
80
|
-
window.location.reload();
|
|
81
|
-
};
|
|
82
|
-
this.export = async () => {
|
|
83
|
-
const metaExport = await this.meta.export();
|
|
84
|
-
return Buffer.from(JSON.stringify(metaExport));
|
|
85
|
-
};
|
|
86
|
-
this.import = async (buffer) => {
|
|
87
|
-
this.context.log('Importing data...');
|
|
88
|
-
// close the document DB
|
|
89
|
-
await closeDatabase(this.context.documentDb);
|
|
90
|
-
const metaExport = JSON.parse(buffer.toString());
|
|
91
|
-
await this.meta.resetFrom(metaExport);
|
|
92
|
-
// now reset the document DB to the specified version
|
|
93
|
-
// and run migrations to get it to the latest version
|
|
94
|
-
const version = metaExport.schema.version;
|
|
95
|
-
const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
96
|
-
await new Promise((resolve, reject) => {
|
|
97
|
-
deleteReq.onsuccess = resolve;
|
|
98
|
-
deleteReq.onerror = reject;
|
|
99
|
-
});
|
|
100
|
-
// reset our context to the imported schema for now
|
|
101
|
-
const currentSchema = this.context.schema;
|
|
102
|
-
this.context.schema = metaExport.schema;
|
|
103
|
-
// now open the document DB empty at the specified version
|
|
104
|
-
// and initialize it from the meta DB
|
|
105
|
-
this.context.documentDb = await openDocumentDatabase({
|
|
106
|
-
meta: this.meta,
|
|
107
|
-
migrations: this.config.migrations,
|
|
108
|
-
context: this.context,
|
|
109
|
-
version,
|
|
110
|
-
});
|
|
111
|
-
// re-initialize data
|
|
112
|
-
this.context.log('Re-initializing data from imported data...');
|
|
113
|
-
await this._entities.addData({
|
|
114
|
-
operations: metaExport.operations,
|
|
115
|
-
baselines: metaExport.baselines,
|
|
116
|
-
reset: true,
|
|
117
|
-
});
|
|
118
|
-
// close the database and reopen to latest version, applying
|
|
119
|
-
// migrations
|
|
120
|
-
await closeDatabase(this.context.documentDb);
|
|
121
|
-
this.context.log('Migrating up to latest schema...');
|
|
122
|
-
// put the schema back
|
|
123
|
-
this.context.schema = currentSchema;
|
|
124
|
-
this.context.documentDb = await openDocumentDatabase({
|
|
125
|
-
meta: this.meta,
|
|
126
|
-
migrations: this.config.migrations,
|
|
127
|
-
context: this.context,
|
|
128
|
-
version: currentSchema.version,
|
|
129
|
-
});
|
|
130
|
-
};
|
|
131
|
-
this.meta = components.meta;
|
|
132
|
-
this.collectionNames = Object.keys(context.schema.collections);
|
|
133
|
-
this._sync = this.config.syncConfig
|
|
134
|
-
? new ServerSync(this.config.syncConfig, {
|
|
135
|
-
meta: this.meta,
|
|
136
|
-
onData: this.addData,
|
|
137
|
-
log: this.context.log,
|
|
138
|
-
})
|
|
139
|
-
: new NoSync();
|
|
140
|
-
this._fileManager = new FileManager({
|
|
141
|
-
db: this.metaDb,
|
|
142
|
-
sync: this.sync,
|
|
143
|
-
context: this.context,
|
|
144
|
-
config: this.config.files,
|
|
145
|
-
meta: this.meta,
|
|
146
|
-
});
|
|
147
|
-
this._entities = new EntityStore({
|
|
148
|
-
context: this.context,
|
|
149
|
-
meta: this.meta,
|
|
150
|
-
files: this._fileManager,
|
|
151
|
-
});
|
|
152
|
-
this._queryCache = new QueryCache({
|
|
153
|
-
context,
|
|
154
|
-
});
|
|
155
|
-
this._documentManager = new DocumentManager(this.meta, this.schema, this._entities);
|
|
156
|
-
this.documentDb.addEventListener('versionchange', () => {
|
|
157
|
-
var _a, _b;
|
|
158
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
|
|
159
|
-
this.documentDb.close();
|
|
160
|
-
if (typeof window !== 'undefined') {
|
|
161
|
-
window.location.reload();
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
this.metaDb.addEventListener('versionchange', () => {
|
|
165
|
-
var _a, _b;
|
|
166
|
-
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
|
|
167
|
-
this.metaDb.close();
|
|
168
|
-
if (typeof window !== 'undefined') {
|
|
169
|
-
window.location.reload();
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
// self-assign collection shortcuts. these are not typed
|
|
173
|
-
// here but are typed in the generated code...
|
|
174
|
-
for (const [name, _collection] of Object.entries(context.schema.collections)) {
|
|
175
|
-
const collection = _collection;
|
|
176
|
-
const collectionName = (_a = collection.pluralName) !== null && _a !== void 0 ? _a : collection.name + 's';
|
|
177
|
-
// TODO: untangle this requirement
|
|
178
|
-
assert(collectionName === name, `The key of the collection in the schema must be the plural of the name (expected: "${collectionName}")`);
|
|
179
|
-
this[collectionName] = new CollectionQueries({
|
|
180
|
-
collection: collectionName,
|
|
181
|
-
cache: this._queryCache,
|
|
182
|
-
context: this.context,
|
|
183
|
-
entities: this.entities,
|
|
184
|
-
documentManager: this.documentManager,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
get documentDb() {
|
|
189
|
-
return this.context.documentDb;
|
|
190
|
-
}
|
|
191
|
-
get metaDb() {
|
|
192
|
-
return this.context.metaDb;
|
|
193
|
-
}
|
|
194
|
-
get schema() {
|
|
195
|
-
return this.context.schema;
|
|
196
|
-
}
|
|
197
|
-
get namespace() {
|
|
198
|
-
return this.context.namespace;
|
|
199
|
-
}
|
|
200
|
-
get undoHistory() {
|
|
201
|
-
return this.context.undoHistory;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* @deprecated - use client.sync.presence instead
|
|
205
|
-
*/
|
|
206
|
-
get presence() {
|
|
207
|
-
return this.sync.presence;
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Batch multiple operations together to be executed in a single transaction.
|
|
211
|
-
* The changes made will not be included in the same undo history step as
|
|
212
|
-
* any other changes made outside of the batch. You can also disable undo
|
|
213
|
-
* for your batch to omit changes from undo history.
|
|
214
|
-
*
|
|
215
|
-
* Provide a batch name to apply multiple changes to the same batch
|
|
216
|
-
* across different invocations. Batches will automatically flush after
|
|
217
|
-
* a short delay or if they reach a maximum size.
|
|
218
|
-
*/
|
|
219
|
-
get batch() {
|
|
220
|
-
return this.entities.batch;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
1
|
+
import { assert, } from '@verdant-web/common';
|
|
2
|
+
import { DocumentManager } from '../DocumentManager.js';
|
|
3
|
+
import { FileManager } from '../files/FileManager.js';
|
|
4
|
+
import { closeDatabase, getSizeOfObjectStore } from '../idb.js';
|
|
5
|
+
import { openDocumentDatabase } from '../openDocumentDatabase.js';
|
|
6
|
+
import { EntityStore } from '../reactives/EntityStore.js';
|
|
7
|
+
import { NoSync, ServerSync } from '../sync/Sync.js';
|
|
8
|
+
import { CollectionQueries } from '../queries2/CollectionQueries.js';
|
|
9
|
+
import { QueryCache } from '../queries2/QueryCache.js';
|
|
10
|
+
export class Client {
|
|
11
|
+
get sync() {
|
|
12
|
+
return this._sync;
|
|
13
|
+
}
|
|
14
|
+
get entities() {
|
|
15
|
+
return this._entities;
|
|
16
|
+
}
|
|
17
|
+
get documentManager() {
|
|
18
|
+
return this._documentManager;
|
|
19
|
+
}
|
|
20
|
+
constructor(config, context, components) {
|
|
21
|
+
var _a;
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.context = context;
|
|
24
|
+
this.addData = (data) => {
|
|
25
|
+
return this._entities.addData(data);
|
|
26
|
+
};
|
|
27
|
+
this.stats = async () => {
|
|
28
|
+
const collectionNames = Object.keys(this.schema.collections);
|
|
29
|
+
let collections = {};
|
|
30
|
+
for (const collectionName of collectionNames) {
|
|
31
|
+
collections[collectionName] = await getSizeOfObjectStore(this.documentDb, collectionName);
|
|
32
|
+
}
|
|
33
|
+
const meta = await this.meta.stats();
|
|
34
|
+
const storage = typeof navigator !== 'undefined' &&
|
|
35
|
+
typeof navigator.storage !== 'undefined' &&
|
|
36
|
+
'estimate' in navigator.storage
|
|
37
|
+
? await navigator.storage.estimate()
|
|
38
|
+
: undefined;
|
|
39
|
+
// determine data:metadata ratio for total size of all collections vs metadata
|
|
40
|
+
const totalCollectionsSize = Object.values(collections).reduce((acc, { size }) => acc + size, 0);
|
|
41
|
+
const totalMetaSize = meta.baselinesSize.size + meta.operationsSize.size;
|
|
42
|
+
const metaToDataRatio = totalMetaSize / totalCollectionsSize;
|
|
43
|
+
return {
|
|
44
|
+
collections,
|
|
45
|
+
meta,
|
|
46
|
+
storage,
|
|
47
|
+
totalMetaSize,
|
|
48
|
+
totalCollectionsSize,
|
|
49
|
+
metaToDataRatio,
|
|
50
|
+
quotaUsage: (storage === null || storage === void 0 ? void 0 : storage.usage) && (storage === null || storage === void 0 ? void 0 : storage.quota)
|
|
51
|
+
? storage.usage / storage.quota
|
|
52
|
+
: undefined,
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
this.close = async () => {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
await this.entities.flushPatches();
|
|
58
|
+
this.sync.stop();
|
|
59
|
+
this.sync.dispose();
|
|
60
|
+
this.meta.close();
|
|
61
|
+
this._entities.destroy();
|
|
62
|
+
await closeDatabase(this.documentDb);
|
|
63
|
+
await closeDatabase(this.metaDb);
|
|
64
|
+
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'Client closed');
|
|
65
|
+
};
|
|
66
|
+
this.__dangerous__resetLocal = async () => {
|
|
67
|
+
this.sync.stop();
|
|
68
|
+
const req1 = indexedDB.deleteDatabase([this.namespace, 'meta'].join('_'));
|
|
69
|
+
const req2 = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
70
|
+
await Promise.all([
|
|
71
|
+
new Promise((resolve, reject) => {
|
|
72
|
+
req1.onsuccess = resolve;
|
|
73
|
+
req1.onerror = reject;
|
|
74
|
+
}),
|
|
75
|
+
new Promise((resolve, reject) => {
|
|
76
|
+
req2.onsuccess = resolve;
|
|
77
|
+
req2.onerror = reject;
|
|
78
|
+
}),
|
|
79
|
+
]);
|
|
80
|
+
window.location.reload();
|
|
81
|
+
};
|
|
82
|
+
this.export = async () => {
|
|
83
|
+
const metaExport = await this.meta.export();
|
|
84
|
+
return Buffer.from(JSON.stringify(metaExport));
|
|
85
|
+
};
|
|
86
|
+
this.import = async (buffer) => {
|
|
87
|
+
this.context.log('Importing data...');
|
|
88
|
+
// close the document DB
|
|
89
|
+
await closeDatabase(this.context.documentDb);
|
|
90
|
+
const metaExport = JSON.parse(buffer.toString());
|
|
91
|
+
await this.meta.resetFrom(metaExport);
|
|
92
|
+
// now reset the document DB to the specified version
|
|
93
|
+
// and run migrations to get it to the latest version
|
|
94
|
+
const version = metaExport.schema.version;
|
|
95
|
+
const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
|
|
96
|
+
await new Promise((resolve, reject) => {
|
|
97
|
+
deleteReq.onsuccess = resolve;
|
|
98
|
+
deleteReq.onerror = reject;
|
|
99
|
+
});
|
|
100
|
+
// reset our context to the imported schema for now
|
|
101
|
+
const currentSchema = this.context.schema;
|
|
102
|
+
this.context.schema = metaExport.schema;
|
|
103
|
+
// now open the document DB empty at the specified version
|
|
104
|
+
// and initialize it from the meta DB
|
|
105
|
+
this.context.documentDb = await openDocumentDatabase({
|
|
106
|
+
meta: this.meta,
|
|
107
|
+
migrations: this.config.migrations,
|
|
108
|
+
context: this.context,
|
|
109
|
+
version,
|
|
110
|
+
});
|
|
111
|
+
// re-initialize data
|
|
112
|
+
this.context.log('Re-initializing data from imported data...');
|
|
113
|
+
await this._entities.addData({
|
|
114
|
+
operations: metaExport.operations,
|
|
115
|
+
baselines: metaExport.baselines,
|
|
116
|
+
reset: true,
|
|
117
|
+
});
|
|
118
|
+
// close the database and reopen to latest version, applying
|
|
119
|
+
// migrations
|
|
120
|
+
await closeDatabase(this.context.documentDb);
|
|
121
|
+
this.context.log('Migrating up to latest schema...');
|
|
122
|
+
// put the schema back
|
|
123
|
+
this.context.schema = currentSchema;
|
|
124
|
+
this.context.documentDb = await openDocumentDatabase({
|
|
125
|
+
meta: this.meta,
|
|
126
|
+
migrations: this.config.migrations,
|
|
127
|
+
context: this.context,
|
|
128
|
+
version: currentSchema.version,
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
this.meta = components.meta;
|
|
132
|
+
this.collectionNames = Object.keys(context.schema.collections);
|
|
133
|
+
this._sync = this.config.syncConfig
|
|
134
|
+
? new ServerSync(this.config.syncConfig, {
|
|
135
|
+
meta: this.meta,
|
|
136
|
+
onData: this.addData,
|
|
137
|
+
log: this.context.log,
|
|
138
|
+
})
|
|
139
|
+
: new NoSync();
|
|
140
|
+
this._fileManager = new FileManager({
|
|
141
|
+
db: this.metaDb,
|
|
142
|
+
sync: this.sync,
|
|
143
|
+
context: this.context,
|
|
144
|
+
config: this.config.files,
|
|
145
|
+
meta: this.meta,
|
|
146
|
+
});
|
|
147
|
+
this._entities = new EntityStore({
|
|
148
|
+
context: this.context,
|
|
149
|
+
meta: this.meta,
|
|
150
|
+
files: this._fileManager,
|
|
151
|
+
});
|
|
152
|
+
this._queryCache = new QueryCache({
|
|
153
|
+
context,
|
|
154
|
+
});
|
|
155
|
+
this._documentManager = new DocumentManager(this.meta, this.schema, this._entities);
|
|
156
|
+
this.documentDb.addEventListener('versionchange', () => {
|
|
157
|
+
var _a, _b;
|
|
158
|
+
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
|
|
159
|
+
this.documentDb.close();
|
|
160
|
+
if (typeof window !== 'undefined') {
|
|
161
|
+
window.location.reload();
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
this.metaDb.addEventListener('versionchange', () => {
|
|
165
|
+
var _a, _b;
|
|
166
|
+
(_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
|
|
167
|
+
this.metaDb.close();
|
|
168
|
+
if (typeof window !== 'undefined') {
|
|
169
|
+
window.location.reload();
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
// self-assign collection shortcuts. these are not typed
|
|
173
|
+
// here but are typed in the generated code...
|
|
174
|
+
for (const [name, _collection] of Object.entries(context.schema.collections)) {
|
|
175
|
+
const collection = _collection;
|
|
176
|
+
const collectionName = (_a = collection.pluralName) !== null && _a !== void 0 ? _a : collection.name + 's';
|
|
177
|
+
// TODO: untangle this requirement
|
|
178
|
+
assert(collectionName === name, `The key of the collection in the schema must be the plural of the name (expected: "${collectionName}")`);
|
|
179
|
+
this[collectionName] = new CollectionQueries({
|
|
180
|
+
collection: collectionName,
|
|
181
|
+
cache: this._queryCache,
|
|
182
|
+
context: this.context,
|
|
183
|
+
entities: this.entities,
|
|
184
|
+
documentManager: this.documentManager,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
get documentDb() {
|
|
189
|
+
return this.context.documentDb;
|
|
190
|
+
}
|
|
191
|
+
get metaDb() {
|
|
192
|
+
return this.context.metaDb;
|
|
193
|
+
}
|
|
194
|
+
get schema() {
|
|
195
|
+
return this.context.schema;
|
|
196
|
+
}
|
|
197
|
+
get namespace() {
|
|
198
|
+
return this.context.namespace;
|
|
199
|
+
}
|
|
200
|
+
get undoHistory() {
|
|
201
|
+
return this.context.undoHistory;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @deprecated - use client.sync.presence instead
|
|
205
|
+
*/
|
|
206
|
+
get presence() {
|
|
207
|
+
return this.sync.presence;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Batch multiple operations together to be executed in a single transaction.
|
|
211
|
+
* The changes made will not be included in the same undo history step as
|
|
212
|
+
* any other changes made outside of the batch. You can also disable undo
|
|
213
|
+
* for your batch to omit changes from undo history.
|
|
214
|
+
*
|
|
215
|
+
* Provide a batch name to apply multiple changes to the same batch
|
|
216
|
+
* across different invocations. Batches will automatically flush after
|
|
217
|
+
* a short delay or if they reach a maximum size.
|
|
218
|
+
*/
|
|
219
|
+
get batch() {
|
|
220
|
+
return this.entities.batch;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
223
|
//# sourceMappingURL=Client.js.map
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import { Migration, StorageSchema } from '@verdant-web/common';
|
|
2
|
-
import { FileManagerConfig } from '../files/FileManager.js';
|
|
3
|
-
import { ServerSyncOptions } from '../sync/Sync.js';
|
|
4
|
-
import { UndoHistory } from '../UndoHistory.js';
|
|
5
|
-
import { Client } from './Client.js';
|
|
6
|
-
export interface ClientDescriptorOptions<Presence = any, Profile = any> {
|
|
7
|
-
/** The schema used to create this client */
|
|
8
|
-
schema: StorageSchema<any>;
|
|
9
|
-
/** Migrations, in order, to upgrade to each successive version of the schema */
|
|
10
|
-
migrations: Migration<any>[];
|
|
11
|
-
/** Provide a sync config to turn on synchronization with a server */
|
|
12
|
-
sync?: ServerSyncOptions<Profile, Presence>;
|
|
13
|
-
/** Optionally override the IndexedDB implementation */
|
|
14
|
-
indexedDb?: IDBFactory;
|
|
15
|
-
/**
|
|
16
|
-
* Namespaces are used to separate data from different clients in IndexedDB.
|
|
17
|
-
*/
|
|
18
|
-
namespace: string;
|
|
19
|
-
/**
|
|
20
|
-
* Provide your own UndoHistory to have a unified undo system across multiple
|
|
21
|
-
* clients if you so desire.
|
|
22
|
-
*/
|
|
23
|
-
undoHistory?: UndoHistory;
|
|
24
|
-
/**
|
|
25
|
-
* Provide a log function to log internal debug messages
|
|
26
|
-
*/
|
|
27
|
-
log?: (...args: any[]) => void;
|
|
28
|
-
disableRebasing?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Provide a specific schema number to override the schema version
|
|
31
|
-
* in the database. This is useful for testing migrations or recovering
|
|
32
|
-
* from a mistakenly deployed incorrect schema. A specific version is required
|
|
33
|
-
* so that you don't leave this on accidentally for all new schemas.
|
|
34
|
-
*/
|
|
35
|
-
overrideSchemaConflict?: number;
|
|
36
|
-
/**
|
|
37
|
-
* Configuration for file management
|
|
38
|
-
*/
|
|
39
|
-
files?: FileManagerConfig;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Since storage initialization is async, this class wraps the core
|
|
43
|
-
* Storage creation promise and exposes some metadata which can
|
|
44
|
-
* be useful immediately.
|
|
45
|
-
*/
|
|
46
|
-
export declare class ClientDescriptor<Presence = any, Profile = any> {
|
|
47
|
-
private readonly init;
|
|
48
|
-
private readonly _readyPromise;
|
|
49
|
-
private resolveReady;
|
|
50
|
-
private rejectReady;
|
|
51
|
-
private _resolvedValue;
|
|
52
|
-
private _initializing;
|
|
53
|
-
private _namespace;
|
|
54
|
-
get namespace(): string;
|
|
55
|
-
constructor(init: ClientDescriptorOptions<Presence, Profile>);
|
|
56
|
-
private initialize;
|
|
57
|
-
get current(): Client | undefined;
|
|
58
|
-
get readyPromise(): Promise<Client>;
|
|
59
|
-
get schema(): StorageSchema<any>;
|
|
60
|
-
open: () => Promise<Client>;
|
|
61
|
-
close: () => Promise<void>;
|
|
62
|
-
}
|
|
1
|
+
import { Migration, StorageSchema } from '@verdant-web/common';
|
|
2
|
+
import { FileManagerConfig } from '../files/FileManager.js';
|
|
3
|
+
import { ServerSyncOptions } from '../sync/Sync.js';
|
|
4
|
+
import { UndoHistory } from '../UndoHistory.js';
|
|
5
|
+
import { Client } from './Client.js';
|
|
6
|
+
export interface ClientDescriptorOptions<Presence = any, Profile = any> {
|
|
7
|
+
/** The schema used to create this client */
|
|
8
|
+
schema: StorageSchema<any>;
|
|
9
|
+
/** Migrations, in order, to upgrade to each successive version of the schema */
|
|
10
|
+
migrations: Migration<any>[];
|
|
11
|
+
/** Provide a sync config to turn on synchronization with a server */
|
|
12
|
+
sync?: ServerSyncOptions<Profile, Presence>;
|
|
13
|
+
/** Optionally override the IndexedDB implementation */
|
|
14
|
+
indexedDb?: IDBFactory;
|
|
15
|
+
/**
|
|
16
|
+
* Namespaces are used to separate data from different clients in IndexedDB.
|
|
17
|
+
*/
|
|
18
|
+
namespace: string;
|
|
19
|
+
/**
|
|
20
|
+
* Provide your own UndoHistory to have a unified undo system across multiple
|
|
21
|
+
* clients if you so desire.
|
|
22
|
+
*/
|
|
23
|
+
undoHistory?: UndoHistory;
|
|
24
|
+
/**
|
|
25
|
+
* Provide a log function to log internal debug messages
|
|
26
|
+
*/
|
|
27
|
+
log?: (...args: any[]) => void;
|
|
28
|
+
disableRebasing?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Provide a specific schema number to override the schema version
|
|
31
|
+
* in the database. This is useful for testing migrations or recovering
|
|
32
|
+
* from a mistakenly deployed incorrect schema. A specific version is required
|
|
33
|
+
* so that you don't leave this on accidentally for all new schemas.
|
|
34
|
+
*/
|
|
35
|
+
overrideSchemaConflict?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Configuration for file management
|
|
38
|
+
*/
|
|
39
|
+
files?: FileManagerConfig;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Since storage initialization is async, this class wraps the core
|
|
43
|
+
* Storage creation promise and exposes some metadata which can
|
|
44
|
+
* be useful immediately.
|
|
45
|
+
*/
|
|
46
|
+
export declare class ClientDescriptor<Presence = any, Profile = any> {
|
|
47
|
+
private readonly init;
|
|
48
|
+
private readonly _readyPromise;
|
|
49
|
+
private resolveReady;
|
|
50
|
+
private rejectReady;
|
|
51
|
+
private _resolvedValue;
|
|
52
|
+
private _initializing;
|
|
53
|
+
private _namespace;
|
|
54
|
+
get namespace(): string;
|
|
55
|
+
constructor(init: ClientDescriptorOptions<Presence, Profile>);
|
|
56
|
+
private initialize;
|
|
57
|
+
get current(): Client | undefined;
|
|
58
|
+
get readyPromise(): Promise<Client>;
|
|
59
|
+
get schema(): StorageSchema<any>;
|
|
60
|
+
open: () => Promise<Client>;
|
|
61
|
+
close: () => Promise<void>;
|
|
62
|
+
}
|