@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,58 +1,58 @@
|
|
|
1
|
-
import { assert, ReplicaType } from '@verdant-web/common';
|
|
2
|
-
import { default as jwtDecode } from 'jwt-decode';
|
|
3
|
-
export class ServerSyncEndpointProvider {
|
|
4
|
-
constructor(config) {
|
|
5
|
-
this.config = config;
|
|
6
|
-
this.cached = null;
|
|
7
|
-
this.type = ReplicaType.Realtime;
|
|
8
|
-
this.getEndpoints = async () => {
|
|
9
|
-
if (this.cached) {
|
|
10
|
-
return this.cached;
|
|
11
|
-
}
|
|
12
|
-
let result;
|
|
13
|
-
if (this.config.fetchAuth) {
|
|
14
|
-
result = await this.config.fetchAuth();
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
result = await fetch(this.config.authEndpoint, {
|
|
18
|
-
credentials: 'include',
|
|
19
|
-
}).then((res) => {
|
|
20
|
-
if (!res.ok) {
|
|
21
|
-
throw new Error(`Auth endpoint returned non-200 response: ${res.status}`);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
return res.json();
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
assert(result.accessToken, 'No access token provided from auth endpoint');
|
|
29
|
-
const decoded = jwtDecode(result.accessToken);
|
|
30
|
-
assert(decoded.url, 'No sync endpoint provided from auth endpoint');
|
|
31
|
-
assert(decoded.type !== undefined, 'No replica type provided from auth endpoint');
|
|
32
|
-
this.type = parseInt(decoded.type + '');
|
|
33
|
-
const url = new URL(decoded.url);
|
|
34
|
-
url.protocol = url.protocol.replace('ws', 'http');
|
|
35
|
-
const httpEndpoint = url.toString();
|
|
36
|
-
url.protocol = url.protocol.replace('http', 'ws');
|
|
37
|
-
const websocketEndpoint = url.toString();
|
|
38
|
-
let fileEndpoint = decoded.file;
|
|
39
|
-
if (!fileEndpoint) {
|
|
40
|
-
// default to http endpoint + '/files';
|
|
41
|
-
const fileUrl = new URL(httpEndpoint);
|
|
42
|
-
fileUrl.pathname = fileUrl.pathname + '/files';
|
|
43
|
-
fileEndpoint = fileUrl.toString();
|
|
44
|
-
}
|
|
45
|
-
this.cached = {
|
|
46
|
-
http: httpEndpoint,
|
|
47
|
-
websocket: websocketEndpoint,
|
|
48
|
-
files: fileEndpoint,
|
|
49
|
-
token: result.accessToken,
|
|
50
|
-
};
|
|
51
|
-
return this.cached;
|
|
52
|
-
};
|
|
53
|
-
if (!config.authEndpoint && !config.fetchAuth) {
|
|
54
|
-
throw new Error('Either authEndpoint or fetchAuth must be provided to ServerSyncEndpointProvider');
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
1
|
+
import { assert, ReplicaType } from '@verdant-web/common';
|
|
2
|
+
import { default as jwtDecode } from 'jwt-decode';
|
|
3
|
+
export class ServerSyncEndpointProvider {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
this.cached = null;
|
|
7
|
+
this.type = ReplicaType.Realtime;
|
|
8
|
+
this.getEndpoints = async () => {
|
|
9
|
+
if (this.cached) {
|
|
10
|
+
return this.cached;
|
|
11
|
+
}
|
|
12
|
+
let result;
|
|
13
|
+
if (this.config.fetchAuth) {
|
|
14
|
+
result = await this.config.fetchAuth();
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
result = await fetch(this.config.authEndpoint, {
|
|
18
|
+
credentials: 'include',
|
|
19
|
+
}).then((res) => {
|
|
20
|
+
if (!res.ok) {
|
|
21
|
+
throw new Error(`Auth endpoint returned non-200 response: ${res.status}`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return res.json();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
assert(result.accessToken, 'No access token provided from auth endpoint');
|
|
29
|
+
const decoded = jwtDecode(result.accessToken);
|
|
30
|
+
assert(decoded.url, 'No sync endpoint provided from auth endpoint');
|
|
31
|
+
assert(decoded.type !== undefined, 'No replica type provided from auth endpoint');
|
|
32
|
+
this.type = parseInt(decoded.type + '');
|
|
33
|
+
const url = new URL(decoded.url);
|
|
34
|
+
url.protocol = url.protocol.replace('ws', 'http');
|
|
35
|
+
const httpEndpoint = url.toString();
|
|
36
|
+
url.protocol = url.protocol.replace('http', 'ws');
|
|
37
|
+
const websocketEndpoint = url.toString();
|
|
38
|
+
let fileEndpoint = decoded.file;
|
|
39
|
+
if (!fileEndpoint) {
|
|
40
|
+
// default to http endpoint + '/files';
|
|
41
|
+
const fileUrl = new URL(httpEndpoint);
|
|
42
|
+
fileUrl.pathname = fileUrl.pathname + '/files';
|
|
43
|
+
fileEndpoint = fileUrl.toString();
|
|
44
|
+
}
|
|
45
|
+
this.cached = {
|
|
46
|
+
http: httpEndpoint,
|
|
47
|
+
websocket: websocketEndpoint,
|
|
48
|
+
files: fileEndpoint,
|
|
49
|
+
token: result.accessToken,
|
|
50
|
+
};
|
|
51
|
+
return this.cached;
|
|
52
|
+
};
|
|
53
|
+
if (!config.authEndpoint && !config.fetchAuth) {
|
|
54
|
+
throw new Error('Either authEndpoint or fetchAuth must be provided to ServerSyncEndpointProvider');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
58
|
//# sourceMappingURL=ServerSyncEndpointProvider.js.map
|
package/dist/esm/sync/Sync.d.ts
CHANGED
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
import { ClientMessage, DocumentBaseline, EventSubscriber, FileData, Operation, ServerMessage } from '@verdant-web/common';
|
|
2
|
-
import { Metadata } from '../metadata/Metadata.js';
|
|
3
|
-
import { PresenceManager } from './PresenceManager.js';
|
|
4
|
-
import { FilePullResult, FileUploadResult } from './FileSync.js';
|
|
5
|
-
import { ServerSyncEndpointProviderConfig } from './ServerSyncEndpointProvider.js';
|
|
6
|
-
type SyncEvents = {
|
|
7
|
-
onlineChange: (isOnline: boolean) => void;
|
|
8
|
-
};
|
|
9
|
-
export type SyncTransportEvents = SyncEvents & {
|
|
10
|
-
message: (message: ServerMessage) => void;
|
|
11
|
-
};
|
|
12
|
-
export interface SyncTransport {
|
|
13
|
-
subscribe(event: 'onlineChange', handler: (online: boolean) => void): () => void;
|
|
14
|
-
readonly presence: PresenceManager;
|
|
15
|
-
readonly mode: SyncTransportMode;
|
|
16
|
-
send(message: ClientMessage): void;
|
|
17
|
-
start(): void;
|
|
18
|
-
stop(): void;
|
|
19
|
-
dispose(): void;
|
|
20
|
-
reconnect(): void;
|
|
21
|
-
readonly isConnected: boolean;
|
|
22
|
-
readonly status: 'active' | 'paused';
|
|
23
|
-
}
|
|
24
|
-
export interface Sync extends SyncTransport {
|
|
25
|
-
setMode(mode: SyncTransportMode): void;
|
|
26
|
-
setPullInterval(interval: number): void;
|
|
27
|
-
readonly pullInterval: number;
|
|
28
|
-
uploadFile(data: FileData): Promise<FileUploadResult>;
|
|
29
|
-
getFile(fileId: string): Promise<FilePullResult>;
|
|
30
|
-
}
|
|
31
|
-
export declare class NoSync extends EventSubscriber<SyncEvents> implements Sync {
|
|
32
|
-
readonly mode = "pull";
|
|
33
|
-
send(): void;
|
|
34
|
-
start(): void;
|
|
35
|
-
stop(): void;
|
|
36
|
-
dispose: () => void;
|
|
37
|
-
reconnect(): void;
|
|
38
|
-
setMode(): void;
|
|
39
|
-
setPullInterval(): void;
|
|
40
|
-
readonly isConnected = false;
|
|
41
|
-
readonly status = "paused";
|
|
42
|
-
readonly pullInterval = 0;
|
|
43
|
-
readonly presence: PresenceManager<{}, {}>;
|
|
44
|
-
uploadFile: () => Promise<{
|
|
45
|
-
success: boolean;
|
|
46
|
-
retry: boolean;
|
|
47
|
-
}>;
|
|
48
|
-
getFile: () => Promise<FilePullResult>;
|
|
49
|
-
}
|
|
50
|
-
export type SyncTransportMode = 'realtime' | 'pull';
|
|
51
|
-
export interface ServerSyncOptions<Profile = any, Presence = any> extends ServerSyncEndpointProviderConfig {
|
|
52
|
-
/**
|
|
53
|
-
* When a client first connects, it will use this presence value.
|
|
54
|
-
*/
|
|
55
|
-
initialPresence: Presence;
|
|
56
|
-
/**
|
|
57
|
-
* Before connecting to the server, the local client will have
|
|
58
|
-
* this value for their profile data. You can either cache and store
|
|
59
|
-
* profile data from a previous connection or provide defaults like
|
|
60
|
-
* empty strings.
|
|
61
|
-
*/
|
|
62
|
-
defaultProfile: Profile;
|
|
63
|
-
/**
|
|
64
|
-
* Provide `false` to disable transport selection. Transport selection
|
|
65
|
-
* automatically switches between HTTP and WebSocket based sync depending
|
|
66
|
-
* on the number of peers connected. If a user is alone, they will use
|
|
67
|
-
* HTTP push/pull to sync changes. If another user joins, both users will
|
|
68
|
-
* be upgraded to websockets.
|
|
69
|
-
*
|
|
70
|
-
* Turning off this feature allows you more control over the transport
|
|
71
|
-
* which can be useful for low-power devices or to save server traffic.
|
|
72
|
-
* To modify transport modes manually, utilize `client.sync.setMode`.
|
|
73
|
-
* The built-in behavior is essentially switching modes based on
|
|
74
|
-
* the number of peers detected by client.sync.presence.
|
|
75
|
-
*/
|
|
76
|
-
automaticTransportSelection?: boolean;
|
|
77
|
-
initialTransport?: SyncTransportMode;
|
|
78
|
-
autoStart?: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Optionally specify an interval, in milliseconds, to poll the server
|
|
81
|
-
* when in pull mode.
|
|
82
|
-
*/
|
|
83
|
-
pullInterval?: number;
|
|
84
|
-
/**
|
|
85
|
-
* Presence updates are batched to reduce number of requests / messages
|
|
86
|
-
* sent to the server. You can specify the batching time slice, in milliseconds,
|
|
87
|
-
*/
|
|
88
|
-
presenceUpdateBatchTimeout?: number;
|
|
89
|
-
}
|
|
90
|
-
export declare class ServerSync<Profile = any, Presence = any> extends EventSubscriber<SyncEvents> implements Sync {
|
|
91
|
-
private webSocketSync;
|
|
92
|
-
private pushPullSync;
|
|
93
|
-
private fileSync;
|
|
94
|
-
private activeSync;
|
|
95
|
-
private endpointProvider;
|
|
96
|
-
private onData;
|
|
97
|
-
private meta;
|
|
98
|
-
readonly presence: PresenceManager<Profile, Presence>;
|
|
99
|
-
private log;
|
|
100
|
-
constructor({ authEndpoint, fetchAuth, initialPresence, automaticTransportSelection, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, }: ServerSyncOptions<Profile, Presence>, { meta, log, onData, }: {
|
|
101
|
-
meta: Metadata;
|
|
102
|
-
log?: (...args: any[]) => void;
|
|
103
|
-
onData: (data: {
|
|
104
|
-
operations: Operation[];
|
|
105
|
-
baselines: DocumentBaseline[];
|
|
106
|
-
reset?: boolean;
|
|
107
|
-
}) => Promise<void>;
|
|
108
|
-
});
|
|
109
|
-
get canDoRealtime(): boolean;
|
|
110
|
-
private handleMessage;
|
|
111
|
-
private handleOnlineChange;
|
|
112
|
-
private handlePresenceUpdate;
|
|
113
|
-
setMode: (transport: SyncTransportMode) => void;
|
|
114
|
-
setPullInterval: (interval: number) => void;
|
|
115
|
-
get pullInterval(): number;
|
|
116
|
-
send: (message: ClientMessage) => void;
|
|
117
|
-
uploadFile: (info: FileData) => Promise<FileUploadResult>;
|
|
118
|
-
getFile: (id: string) => Promise<FilePullResult>;
|
|
119
|
-
start: () => void;
|
|
120
|
-
stop: () => void;
|
|
121
|
-
dispose: () => void;
|
|
122
|
-
reconnect: () => void;
|
|
123
|
-
get isConnected(): boolean;
|
|
124
|
-
get status(): "active" | "paused";
|
|
125
|
-
get mode(): SyncTransportMode;
|
|
126
|
-
}
|
|
127
|
-
export {};
|
|
1
|
+
import { ClientMessage, DocumentBaseline, EventSubscriber, FileData, Operation, ServerMessage } from '@verdant-web/common';
|
|
2
|
+
import { Metadata } from '../metadata/Metadata.js';
|
|
3
|
+
import { PresenceManager } from './PresenceManager.js';
|
|
4
|
+
import { FilePullResult, FileUploadResult } from './FileSync.js';
|
|
5
|
+
import { ServerSyncEndpointProviderConfig } from './ServerSyncEndpointProvider.js';
|
|
6
|
+
type SyncEvents = {
|
|
7
|
+
onlineChange: (isOnline: boolean) => void;
|
|
8
|
+
};
|
|
9
|
+
export type SyncTransportEvents = SyncEvents & {
|
|
10
|
+
message: (message: ServerMessage) => void;
|
|
11
|
+
};
|
|
12
|
+
export interface SyncTransport {
|
|
13
|
+
subscribe(event: 'onlineChange', handler: (online: boolean) => void): () => void;
|
|
14
|
+
readonly presence: PresenceManager;
|
|
15
|
+
readonly mode: SyncTransportMode;
|
|
16
|
+
send(message: ClientMessage): void;
|
|
17
|
+
start(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
reconnect(): void;
|
|
21
|
+
readonly isConnected: boolean;
|
|
22
|
+
readonly status: 'active' | 'paused';
|
|
23
|
+
}
|
|
24
|
+
export interface Sync extends SyncTransport {
|
|
25
|
+
setMode(mode: SyncTransportMode): void;
|
|
26
|
+
setPullInterval(interval: number): void;
|
|
27
|
+
readonly pullInterval: number;
|
|
28
|
+
uploadFile(data: FileData): Promise<FileUploadResult>;
|
|
29
|
+
getFile(fileId: string): Promise<FilePullResult>;
|
|
30
|
+
}
|
|
31
|
+
export declare class NoSync extends EventSubscriber<SyncEvents> implements Sync {
|
|
32
|
+
readonly mode = "pull";
|
|
33
|
+
send(): void;
|
|
34
|
+
start(): void;
|
|
35
|
+
stop(): void;
|
|
36
|
+
dispose: () => void;
|
|
37
|
+
reconnect(): void;
|
|
38
|
+
setMode(): void;
|
|
39
|
+
setPullInterval(): void;
|
|
40
|
+
readonly isConnected = false;
|
|
41
|
+
readonly status = "paused";
|
|
42
|
+
readonly pullInterval = 0;
|
|
43
|
+
readonly presence: PresenceManager<{}, {}>;
|
|
44
|
+
uploadFile: () => Promise<{
|
|
45
|
+
success: boolean;
|
|
46
|
+
retry: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
getFile: () => Promise<FilePullResult>;
|
|
49
|
+
}
|
|
50
|
+
export type SyncTransportMode = 'realtime' | 'pull';
|
|
51
|
+
export interface ServerSyncOptions<Profile = any, Presence = any> extends ServerSyncEndpointProviderConfig {
|
|
52
|
+
/**
|
|
53
|
+
* When a client first connects, it will use this presence value.
|
|
54
|
+
*/
|
|
55
|
+
initialPresence: Presence;
|
|
56
|
+
/**
|
|
57
|
+
* Before connecting to the server, the local client will have
|
|
58
|
+
* this value for their profile data. You can either cache and store
|
|
59
|
+
* profile data from a previous connection or provide defaults like
|
|
60
|
+
* empty strings.
|
|
61
|
+
*/
|
|
62
|
+
defaultProfile: Profile;
|
|
63
|
+
/**
|
|
64
|
+
* Provide `false` to disable transport selection. Transport selection
|
|
65
|
+
* automatically switches between HTTP and WebSocket based sync depending
|
|
66
|
+
* on the number of peers connected. If a user is alone, they will use
|
|
67
|
+
* HTTP push/pull to sync changes. If another user joins, both users will
|
|
68
|
+
* be upgraded to websockets.
|
|
69
|
+
*
|
|
70
|
+
* Turning off this feature allows you more control over the transport
|
|
71
|
+
* which can be useful for low-power devices or to save server traffic.
|
|
72
|
+
* To modify transport modes manually, utilize `client.sync.setMode`.
|
|
73
|
+
* The built-in behavior is essentially switching modes based on
|
|
74
|
+
* the number of peers detected by client.sync.presence.
|
|
75
|
+
*/
|
|
76
|
+
automaticTransportSelection?: boolean;
|
|
77
|
+
initialTransport?: SyncTransportMode;
|
|
78
|
+
autoStart?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Optionally specify an interval, in milliseconds, to poll the server
|
|
81
|
+
* when in pull mode.
|
|
82
|
+
*/
|
|
83
|
+
pullInterval?: number;
|
|
84
|
+
/**
|
|
85
|
+
* Presence updates are batched to reduce number of requests / messages
|
|
86
|
+
* sent to the server. You can specify the batching time slice, in milliseconds,
|
|
87
|
+
*/
|
|
88
|
+
presenceUpdateBatchTimeout?: number;
|
|
89
|
+
}
|
|
90
|
+
export declare class ServerSync<Profile = any, Presence = any> extends EventSubscriber<SyncEvents> implements Sync {
|
|
91
|
+
private webSocketSync;
|
|
92
|
+
private pushPullSync;
|
|
93
|
+
private fileSync;
|
|
94
|
+
private activeSync;
|
|
95
|
+
private endpointProvider;
|
|
96
|
+
private onData;
|
|
97
|
+
private meta;
|
|
98
|
+
readonly presence: PresenceManager<Profile, Presence>;
|
|
99
|
+
private log;
|
|
100
|
+
constructor({ authEndpoint, fetchAuth, initialPresence, automaticTransportSelection, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, }: ServerSyncOptions<Profile, Presence>, { meta, log, onData, }: {
|
|
101
|
+
meta: Metadata;
|
|
102
|
+
log?: (...args: any[]) => void;
|
|
103
|
+
onData: (data: {
|
|
104
|
+
operations: Operation[];
|
|
105
|
+
baselines: DocumentBaseline[];
|
|
106
|
+
reset?: boolean;
|
|
107
|
+
}) => Promise<void>;
|
|
108
|
+
});
|
|
109
|
+
get canDoRealtime(): boolean;
|
|
110
|
+
private handleMessage;
|
|
111
|
+
private handleOnlineChange;
|
|
112
|
+
private handlePresenceUpdate;
|
|
113
|
+
setMode: (transport: SyncTransportMode) => void;
|
|
114
|
+
setPullInterval: (interval: number) => void;
|
|
115
|
+
get pullInterval(): number;
|
|
116
|
+
send: (message: ClientMessage) => void;
|
|
117
|
+
uploadFile: (info: FileData) => Promise<FileUploadResult>;
|
|
118
|
+
getFile: (id: string) => Promise<FilePullResult>;
|
|
119
|
+
start: () => void;
|
|
120
|
+
stop: () => void;
|
|
121
|
+
dispose: () => void;
|
|
122
|
+
reconnect: () => void;
|
|
123
|
+
get isConnected(): boolean;
|
|
124
|
+
get status(): "active" | "paused";
|
|
125
|
+
get mode(): SyncTransportMode;
|
|
126
|
+
}
|
|
127
|
+
export {};
|