@verdant-web/store 3.3.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/bundle/index.js +8 -8
  2. package/dist/bundle/index.js.map +4 -4
  3. package/dist/esm/BackoffScheduler.js.map +1 -1
  4. package/dist/esm/IDBService.js.map +1 -1
  5. package/dist/esm/UndoHistory.js.map +1 -1
  6. package/dist/esm/__tests__/documents.test.js.map +1 -1
  7. package/dist/esm/__tests__/queries.test.js.map +1 -1
  8. package/dist/esm/backup.js.map +1 -1
  9. package/dist/esm/client/Client.d.ts +2 -24
  10. package/dist/esm/client/Client.js +7 -0
  11. package/dist/esm/client/Client.js.map +1 -1
  12. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  13. package/dist/esm/entities/Entity.js.map +1 -1
  14. package/dist/esm/entities/EntityCache.js.map +1 -1
  15. package/dist/esm/entities/EntityMetadata.d.ts +2 -2
  16. package/dist/esm/entities/EntityMetadata.js.map +1 -1
  17. package/dist/esm/entities/EntityStore.d.ts +1 -0
  18. package/dist/esm/entities/EntityStore.js.map +1 -1
  19. package/dist/esm/entities/OperationBatcher.js.map +1 -1
  20. package/dist/esm/files/EntityFile.js.map +1 -1
  21. package/dist/esm/files/FileManager.d.ts +1 -0
  22. package/dist/esm/files/FileManager.js +3 -0
  23. package/dist/esm/files/FileManager.js.map +1 -1
  24. package/dist/esm/files/FileStorage.js.map +1 -1
  25. package/dist/esm/files/utils.js.map +1 -1
  26. package/dist/esm/idb.js.map +1 -1
  27. package/dist/esm/metadata/AckInfoStore.js.map +1 -1
  28. package/dist/esm/metadata/BaselinesStore.d.ts +4 -4
  29. package/dist/esm/metadata/LocalReplicaStore.js.map +1 -1
  30. package/dist/esm/metadata/MessageCreator.js.map +1 -1
  31. package/dist/esm/metadata/Metadata.d.ts +1 -1
  32. package/dist/esm/metadata/Metadata.js.map +1 -1
  33. package/dist/esm/metadata/OperationsStore.js.map +1 -1
  34. package/dist/esm/metadata/SchemaStore.js.map +1 -1
  35. package/dist/esm/metadata/openMetadataDatabase.js.map +1 -1
  36. package/dist/esm/migration/db.js.map +1 -1
  37. package/dist/esm/migration/openDatabase.js.map +1 -1
  38. package/dist/esm/migration/paths.js.map +1 -1
  39. package/dist/esm/queries/BaseQuery.js.map +1 -1
  40. package/dist/esm/queries/QueryCache.js.map +1 -1
  41. package/dist/esm/queries/QueryableStorage.js.map +1 -1
  42. package/dist/esm/queries/dbQueries.js.map +1 -1
  43. package/dist/esm/queries/keys.js.map +1 -1
  44. package/dist/esm/queries/ranges.js.map +1 -1
  45. package/dist/esm/queries/utils.js.map +1 -1
  46. package/dist/esm/sync/FileSync.js.map +1 -1
  47. package/dist/esm/sync/Heartbeat.js.map +1 -1
  48. package/dist/esm/sync/PresenceManager.js.map +1 -1
  49. package/dist/esm/sync/PushPullSync.js.map +1 -1
  50. package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
  51. package/dist/esm/sync/Sync.d.ts +1 -1
  52. package/dist/esm/sync/Sync.js.map +1 -1
  53. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  54. package/package.json +9 -10
  55. package/src/client/Client.ts +8 -1
  56. package/src/files/FileManager.ts +4 -0
  57. package/src/sync/Sync.ts +2 -2
  58. package/dist/cjs/BackoffScheduler.d.ts +0 -19
  59. package/dist/cjs/BackoffScheduler.js +0 -45
  60. package/dist/cjs/BackoffScheduler.js.map +0 -1
  61. package/dist/cjs/DocumentManager.d.ts +0 -28
  62. package/dist/cjs/DocumentManager.js +0 -45
  63. package/dist/cjs/DocumentManager.js.map +0 -1
  64. package/dist/cjs/FakeWeakRef.d.ts +0 -11
  65. package/dist/cjs/FakeWeakRef.js +0 -19
  66. package/dist/cjs/FakeWeakRef.js.map +0 -1
  67. package/dist/cjs/IDBService.d.ts +0 -30
  68. package/dist/cjs/IDBService.js +0 -101
  69. package/dist/cjs/IDBService.js.map +0 -1
  70. package/dist/cjs/UndoHistory.d.ts +0 -16
  71. package/dist/cjs/UndoHistory.js +0 -55
  72. package/dist/cjs/UndoHistory.js.map +0 -1
  73. package/dist/cjs/__tests__/batching.test.d.ts +0 -1
  74. package/dist/cjs/__tests__/batching.test.js +0 -47
  75. package/dist/cjs/__tests__/batching.test.js.map +0 -1
  76. package/dist/cjs/__tests__/documents.test.d.ts +0 -1
  77. package/dist/cjs/__tests__/documents.test.js +0 -468
  78. package/dist/cjs/__tests__/documents.test.js.map +0 -1
  79. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +0 -76
  80. package/dist/cjs/__tests__/fixtures/testStorage.js +0 -96
  81. package/dist/cjs/__tests__/fixtures/testStorage.js.map +0 -1
  82. package/dist/cjs/__tests__/legacyOids.test.d.ts +0 -1
  83. package/dist/cjs/__tests__/legacyOids.test.js +0 -354
  84. package/dist/cjs/__tests__/legacyOids.test.js.map +0 -1
  85. package/dist/cjs/__tests__/mutations.test.d.ts +0 -1
  86. package/dist/cjs/__tests__/mutations.test.js +0 -48
  87. package/dist/cjs/__tests__/mutations.test.js.map +0 -1
  88. package/dist/cjs/__tests__/queries.test.d.ts +0 -1
  89. package/dist/cjs/__tests__/queries.test.js +0 -323
  90. package/dist/cjs/__tests__/queries.test.js.map +0 -1
  91. package/dist/cjs/__tests__/setup/indexedDB.d.ts +0 -1
  92. package/dist/cjs/__tests__/setup/indexedDB.js +0 -16
  93. package/dist/cjs/__tests__/setup/indexedDB.js.map +0 -1
  94. package/dist/cjs/__tests__/undo.test.d.ts +0 -1
  95. package/dist/cjs/__tests__/undo.test.js +0 -94
  96. package/dist/cjs/__tests__/undo.test.js.map +0 -1
  97. package/dist/cjs/backup.d.ts +0 -10
  98. package/dist/cjs/backup.js +0 -58
  99. package/dist/cjs/backup.js.map +0 -1
  100. package/dist/cjs/client/Client.d.ts +0 -120
  101. package/dist/cjs/client/Client.js +0 -300
  102. package/dist/cjs/client/Client.js.map +0 -1
  103. package/dist/cjs/client/ClientDescriptor.d.ts +0 -76
  104. package/dist/cjs/client/ClientDescriptor.js +0 -213
  105. package/dist/cjs/client/ClientDescriptor.js.map +0 -1
  106. package/dist/cjs/client/constants.d.ts +0 -1
  107. package/dist/cjs/client/constants.js +0 -5
  108. package/dist/cjs/client/constants.js.map +0 -1
  109. package/dist/cjs/constants.d.ts +0 -1
  110. package/dist/cjs/constants.js +0 -5
  111. package/dist/cjs/constants.js.map +0 -1
  112. package/dist/cjs/context.d.ts +0 -38
  113. package/dist/cjs/context.js +0 -3
  114. package/dist/cjs/context.js.map +0 -1
  115. package/dist/cjs/entities/Entity.d.ts +0 -148
  116. package/dist/cjs/entities/Entity.js +0 -711
  117. package/dist/cjs/entities/Entity.js.map +0 -1
  118. package/dist/cjs/entities/Entity.test.d.ts +0 -1
  119. package/dist/cjs/entities/Entity.test.js +0 -194
  120. package/dist/cjs/entities/Entity.test.js.map +0 -1
  121. package/dist/cjs/entities/EntityCache.d.ts +0 -15
  122. package/dist/cjs/entities/EntityCache.js +0 -39
  123. package/dist/cjs/entities/EntityCache.js.map +0 -1
  124. package/dist/cjs/entities/EntityMetadata.d.ts +0 -68
  125. package/dist/cjs/entities/EntityMetadata.js +0 -261
  126. package/dist/cjs/entities/EntityMetadata.js.map +0 -1
  127. package/dist/cjs/entities/EntityStore.d.ts +0 -80
  128. package/dist/cjs/entities/EntityStore.js +0 -352
  129. package/dist/cjs/entities/EntityStore.js.map +0 -1
  130. package/dist/cjs/entities/OperationBatcher.d.ts +0 -52
  131. package/dist/cjs/entities/OperationBatcher.js +0 -165
  132. package/dist/cjs/entities/OperationBatcher.js.map +0 -1
  133. package/dist/cjs/entities/types.d.ts +0 -103
  134. package/dist/cjs/entities/types.js +0 -3
  135. package/dist/cjs/entities/types.js.map +0 -1
  136. package/dist/cjs/files/EntityFile.d.ts +0 -35
  137. package/dist/cjs/files/EntityFile.js +0 -81
  138. package/dist/cjs/files/EntityFile.js.map +0 -1
  139. package/dist/cjs/files/FileManager.d.ts +0 -46
  140. package/dist/cjs/files/FileManager.js +0 -174
  141. package/dist/cjs/files/FileManager.js.map +0 -1
  142. package/dist/cjs/files/FileStorage.d.ts +0 -39
  143. package/dist/cjs/files/FileStorage.js +0 -110
  144. package/dist/cjs/files/FileStorage.js.map +0 -1
  145. package/dist/cjs/files/utils.d.ts +0 -10
  146. package/dist/cjs/files/utils.js +0 -62
  147. package/dist/cjs/files/utils.js.map +0 -1
  148. package/dist/cjs/files/utils.test.d.ts +0 -1
  149. package/dist/cjs/files/utils.test.js +0 -81
  150. package/dist/cjs/files/utils.test.js.map +0 -1
  151. package/dist/cjs/idb.d.ts +0 -13
  152. package/dist/cjs/idb.js +0 -158
  153. package/dist/cjs/idb.js.map +0 -1
  154. package/dist/cjs/index.d.ts +0 -23
  155. package/dist/cjs/index.js +0 -25
  156. package/dist/cjs/index.js.map +0 -1
  157. package/dist/cjs/metadata/AckInfoStore.d.ts +0 -10
  158. package/dist/cjs/metadata/AckInfoStore.js +0 -26
  159. package/dist/cjs/metadata/AckInfoStore.js.map +0 -1
  160. package/dist/cjs/metadata/BaselinesStore.d.ts +0 -40
  161. package/dist/cjs/metadata/BaselinesStore.js +0 -106
  162. package/dist/cjs/metadata/BaselinesStore.js.map +0 -1
  163. package/dist/cjs/metadata/LocalReplicaStore.d.ts +0 -18
  164. package/dist/cjs/metadata/LocalReplicaStore.js +0 -62
  165. package/dist/cjs/metadata/LocalReplicaStore.js.map +0 -1
  166. package/dist/cjs/metadata/MessageCreator.d.ts +0 -19
  167. package/dist/cjs/metadata/MessageCreator.js +0 -128
  168. package/dist/cjs/metadata/MessageCreator.js.map +0 -1
  169. package/dist/cjs/metadata/Metadata.d.ts +0 -135
  170. package/dist/cjs/metadata/Metadata.js +0 -408
  171. package/dist/cjs/metadata/Metadata.js.map +0 -1
  172. package/dist/cjs/metadata/OperationsStore.d.ts +0 -62
  173. package/dist/cjs/metadata/OperationsStore.js +0 -179
  174. package/dist/cjs/metadata/OperationsStore.js.map +0 -1
  175. package/dist/cjs/metadata/SchemaStore.d.ts +0 -9
  176. package/dist/cjs/metadata/SchemaStore.js +0 -39
  177. package/dist/cjs/metadata/SchemaStore.js.map +0 -1
  178. package/dist/cjs/metadata/openMetadataDatabase.d.ts +0 -19
  179. package/dist/cjs/metadata/openMetadataDatabase.js +0 -220
  180. package/dist/cjs/metadata/openMetadataDatabase.js.map +0 -1
  181. package/dist/cjs/migration/db.d.ts +0 -8
  182. package/dist/cjs/migration/db.js +0 -112
  183. package/dist/cjs/migration/db.js.map +0 -1
  184. package/dist/cjs/migration/errors.d.ts +0 -5
  185. package/dist/cjs/migration/errors.js +0 -12
  186. package/dist/cjs/migration/errors.js.map +0 -1
  187. package/dist/cjs/migration/openDatabase.d.ts +0 -20
  188. package/dist/cjs/migration/openDatabase.js +0 -468
  189. package/dist/cjs/migration/openDatabase.js.map +0 -1
  190. package/dist/cjs/migration/paths.d.ts +0 -6
  191. package/dist/cjs/migration/paths.js +0 -53
  192. package/dist/cjs/migration/paths.js.map +0 -1
  193. package/dist/cjs/migration/paths.test.d.ts +0 -1
  194. package/dist/cjs/migration/paths.test.js +0 -91
  195. package/dist/cjs/migration/paths.test.js.map +0 -1
  196. package/dist/cjs/queries/BaseQuery.d.ts +0 -53
  197. package/dist/cjs/queries/BaseQuery.js +0 -148
  198. package/dist/cjs/queries/BaseQuery.js.map +0 -1
  199. package/dist/cjs/queries/CollectionQueries.d.ts +0 -55
  200. package/dist/cjs/queries/CollectionQueries.js +0 -92
  201. package/dist/cjs/queries/CollectionQueries.js.map +0 -1
  202. package/dist/cjs/queries/FindAllQuery.d.ts +0 -12
  203. package/dist/cjs/queries/FindAllQuery.js +0 -44
  204. package/dist/cjs/queries/FindAllQuery.js.map +0 -1
  205. package/dist/cjs/queries/FindInfiniteQuery.d.ts +0 -19
  206. package/dist/cjs/queries/FindInfiniteQuery.js +0 -70
  207. package/dist/cjs/queries/FindInfiniteQuery.js.map +0 -1
  208. package/dist/cjs/queries/FindOneQuery.d.ts +0 -12
  209. package/dist/cjs/queries/FindOneQuery.js +0 -43
  210. package/dist/cjs/queries/FindOneQuery.js.map +0 -1
  211. package/dist/cjs/queries/FindPageQuery.d.ts +0 -24
  212. package/dist/cjs/queries/FindPageQuery.js +0 -77
  213. package/dist/cjs/queries/FindPageQuery.js.map +0 -1
  214. package/dist/cjs/queries/GetQuery.d.ts +0 -10
  215. package/dist/cjs/queries/GetQuery.js +0 -30
  216. package/dist/cjs/queries/GetQuery.js.map +0 -1
  217. package/dist/cjs/queries/QueryCache.d.ts +0 -17
  218. package/dist/cjs/queries/QueryCache.js +0 -46
  219. package/dist/cjs/queries/QueryCache.js.map +0 -1
  220. package/dist/cjs/queries/QueryableStorage.d.ts +0 -20
  221. package/dist/cjs/queries/QueryableStorage.js +0 -94
  222. package/dist/cjs/queries/QueryableStorage.js.map +0 -1
  223. package/dist/cjs/queries/dbQueries.d.ts +0 -22
  224. package/dist/cjs/queries/dbQueries.js +0 -136
  225. package/dist/cjs/queries/dbQueries.js.map +0 -1
  226. package/dist/cjs/queries/keys.d.ts +0 -10
  227. package/dist/cjs/queries/keys.js +0 -34
  228. package/dist/cjs/queries/keys.js.map +0 -1
  229. package/dist/cjs/queries/ranges.d.ts +0 -2
  230. package/dist/cjs/queries/ranges.js +0 -70
  231. package/dist/cjs/queries/ranges.js.map +0 -1
  232. package/dist/cjs/queries/types.d.ts +0 -6
  233. package/dist/cjs/queries/types.js +0 -3
  234. package/dist/cjs/queries/types.js.map +0 -1
  235. package/dist/cjs/queries/utils.d.ts +0 -3
  236. package/dist/cjs/queries/utils.js +0 -25
  237. package/dist/cjs/queries/utils.js.map +0 -1
  238. package/dist/cjs/sync/FileSync.d.ts +0 -24
  239. package/dist/cjs/sync/FileSync.js +0 -87
  240. package/dist/cjs/sync/FileSync.js.map +0 -1
  241. package/dist/cjs/sync/Heartbeat.d.ts +0 -25
  242. package/dist/cjs/sync/Heartbeat.js +0 -64
  243. package/dist/cjs/sync/Heartbeat.js.map +0 -1
  244. package/dist/cjs/sync/PresenceManager.d.ts +0 -55
  245. package/dist/cjs/sync/PresenceManager.js +0 -126
  246. package/dist/cjs/sync/PresenceManager.js.map +0 -1
  247. package/dist/cjs/sync/PushPullSync.d.ts +0 -39
  248. package/dist/cjs/sync/PushPullSync.js +0 -159
  249. package/dist/cjs/sync/PushPullSync.js.map +0 -1
  250. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +0 -34
  251. package/dist/cjs/sync/ServerSyncEndpointProvider.js +0 -69
  252. package/dist/cjs/sync/ServerSyncEndpointProvider.js.map +0 -1
  253. package/dist/cjs/sync/Sync.d.ts +0 -160
  254. package/dist/cjs/sync/Sync.js +0 -293
  255. package/dist/cjs/sync/Sync.js.map +0 -1
  256. package/dist/cjs/sync/WebSocketSync.d.ts +0 -44
  257. package/dist/cjs/sync/WebSocketSync.js +0 -221
  258. package/dist/cjs/sync/WebSocketSync.js.map +0 -1
  259. package/dist/cjs/types.d.ts +0 -12
  260. package/dist/cjs/types.js +0 -3
  261. package/dist/cjs/types.js.map +0 -1
  262. package/dist/cjs/utils/Disposable.d.ts +0 -6
  263. package/dist/cjs/utils/Disposable.js +0 -19
  264. package/dist/cjs/utils/Disposable.js.map +0 -1
  265. package/dist/cjs/utils/Resolvable.d.ts +0 -8
  266. package/dist/cjs/utils/Resolvable.js +0 -23
  267. package/dist/cjs/utils/Resolvable.js.map +0 -1
  268. package/dist/cjs/vanilla.d.ts +0 -1
  269. package/dist/cjs/vanilla.js +0 -28
  270. package/dist/cjs/vanilla.js.map +0 -1
  271. package/dist/tsconfig-cjs.tsbuildinfo +0 -1
  272. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,159 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PushPullSync = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- const Heartbeat_js_1 = require("./Heartbeat.js");
6
- class PushPullSync extends common_1.EventSubscriber {
7
- constructor({ endpointProvider, meta, presence, interval = 15 * 1000, log = () => { }, fetch = window.fetch.bind(window), }) {
8
- super();
9
- this.mode = 'pull';
10
- this._isConnected = false;
11
- this._status = 'paused';
12
- this._hasSynced = false;
13
- this.setInterval = (interval) => {
14
- this.heartbeat.setInterval(interval);
15
- };
16
- this.sendRequest = async (messages) => {
17
- this.log('Sending sync request', messages);
18
- try {
19
- const { http: host, token } = await this.endpointProvider.getEndpoints();
20
- const response = await this.fetch(host, {
21
- method: 'POST',
22
- headers: {
23
- 'Content-Type': 'application/json',
24
- Authorization: `Bearer ${token}`,
25
- },
26
- body: JSON.stringify({
27
- messages,
28
- }),
29
- credentials: 'include',
30
- });
31
- if (response.ok) {
32
- this.heartbeat.keepAlive();
33
- const json = (await response.json());
34
- for (const message of json.messages) {
35
- this.handleServerMessage(message);
36
- }
37
- if (!this._isConnected) {
38
- this._isConnected = true;
39
- this.emit('onlineChange', true);
40
- }
41
- }
42
- else {
43
- this.log('Sync request failed', response.status, await response.text());
44
- if (this._isConnected) {
45
- this._isConnected = false;
46
- this.emit('onlineChange', false);
47
- }
48
- const json = await response.json();
49
- if ((0, common_1.isVerdantErrorResponse)(json)) {
50
- // token expired... retry again later after clearing it
51
- if (json.code === common_1.VerdantErrorCode.TokenExpired) {
52
- this.endpointProvider.clearCache();
53
- this.heartbeat.keepAlive();
54
- }
55
- }
56
- // only keep trying if the error was not 4xx
57
- if (response.status >= 500) {
58
- this.heartbeat.keepAlive();
59
- }
60
- }
61
- }
62
- catch (error) {
63
- if (this._isConnected) {
64
- this._isConnected = false;
65
- this.emit('onlineChange', false);
66
- }
67
- this.log(error);
68
- this.heartbeat.keepAlive();
69
- }
70
- };
71
- this.handleServerMessage = async (message) => {
72
- if (message.type === 'sync-resp') {
73
- if (message.ackThisNonce) {
74
- // we need to ack the nonce to confirm that we received the sync-resp
75
- this.log('Sending sync ack', message.ackThisNonce);
76
- this.sendRequest([
77
- await this.meta.messageCreator.createAck(message.ackThisNonce),
78
- ]);
79
- }
80
- // but we can go ahead and preemptively allow ops to be sent
81
- this._hasSynced = true;
82
- }
83
- this.emit('message', message);
84
- };
85
- this.send = (message) => {
86
- // only certain messages are sent for pull-based sync.
87
- switch (message.type) {
88
- case 'presence-update':
89
- case 'sync':
90
- case 'heartbeat':
91
- return this.sendRequest([message]);
92
- case 'op':
93
- if (this._hasSynced) {
94
- return this.sendRequest([message]);
95
- }
96
- break;
97
- }
98
- };
99
- this.destroy = () => {
100
- this.dispose();
101
- this.stop();
102
- };
103
- // on a heartbeat, do a sync
104
- this.onHeartbeat = async () => {
105
- // for HTTP sync we send presence first, so that the sync-resp message
106
- // will include the client's own presence info and fill in missing profile
107
- // data on the first request. otherwise it would have to wait for the second.
108
- this.sendRequest([
109
- await this.meta.messageCreator.createPresenceUpdate(this.presence.self.presence),
110
- await this.meta.messageCreator.createSyncStep1(),
111
- ]);
112
- };
113
- // if the server fails to respond in a certain amount of time, we assume
114
- // the connection is lost and go offline.
115
- this.onHeartbeatMissed = async () => {
116
- this.emit('onlineChange', false);
117
- this.log('Missed heartbeat');
118
- this._isConnected = false;
119
- };
120
- this.log = log;
121
- this.meta = meta;
122
- this.presence = presence;
123
- this.endpointProvider = endpointProvider;
124
- this.fetch = fetch;
125
- this.heartbeat = new Heartbeat_js_1.Heartbeat({
126
- interval,
127
- });
128
- this.heartbeat.subscribe('beat', this.onHeartbeat);
129
- this.heartbeat.subscribe('missed', this.onHeartbeatMissed);
130
- }
131
- get interval() {
132
- return this.heartbeat.interval;
133
- }
134
- start() {
135
- if (this.status === 'active') {
136
- return;
137
- }
138
- this.heartbeat.start(true);
139
- this._status = 'active';
140
- }
141
- stop() {
142
- this.heartbeat.stop();
143
- this._status = 'paused';
144
- }
145
- reconnect() {
146
- this.heartbeat.start(true);
147
- }
148
- ignoreIncoming() {
149
- this.stop();
150
- }
151
- get isConnected() {
152
- return this._isConnected;
153
- }
154
- get status() {
155
- return this._status;
156
- }
157
- }
158
- exports.PushPullSync = PushPullSync;
159
- //# sourceMappingURL=PushPullSync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PushPullSync.js","sourceRoot":"","sources":["../../../src/sync/PushPullSync.ts"],"names":[],"mappings":";;;AAAA,gDAM6B;AAG7B,iDAA2C;AAI3C,MAAa,YACZ,SAAQ,wBAAoC;IAgB5C,YAAY,EACX,gBAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,QAAQ,GAAG,EAAE,GAAG,IAAI,EACpB,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,EACd,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAQjC;QACA,KAAK,EAAE,CAAC;QAtBA,SAAI,GAAG,MAAM,CAAC;QAGf,iBAAY,GAAG,KAAK,CAAC;QACrB,YAAO,GAAwB,QAAQ,CAAC;QACxC,eAAU,GAAG,KAAK,CAAC;QA+B3B,gBAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC;QAMM,gBAAW,GAAG,KAAK,EAAE,QAAyB,EAAE,EAAE;YACzD,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI;gBACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;gBACzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBACvC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACR,cAAc,EAAE,kBAAkB;wBAClC,aAAa,EAAE,UAAU,KAAK,EAAE;qBAChC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACpB,QAAQ;qBACR,CAAC;oBACF,WAAW,EAAE,SAAS;iBACtB,CAAC,CAAC;gBACH,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAChB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;oBACF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACpC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;qBAClC;oBACD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;wBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;qBAChC;iBACD;qBAAM;oBACN,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;oBAExE,IAAI,IAAI,CAAC,YAAY,EAAE;wBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;qBACjC;oBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACnC,IAAI,IAAA,+BAAsB,EAAC,IAAI,CAAC,EAAE;wBACjC,uDAAuD;wBACvD,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAgB,CAAC,YAAY,EAAE;4BAChD,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;4BACnC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;yBAC3B;qBACD;oBAED,4CAA4C;oBAC5C,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;wBAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;qBAC3B;iBACD;aACD;YAAC,OAAO,KAAK,EAAE;gBACf,IAAI,IAAI,CAAC,YAAY,EAAE;oBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;iBACjC;gBACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAEhB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;aAC3B;QACF,CAAC,CAAC;QAEM,wBAAmB,GAAG,KAAK,EAAE,OAAsB,EAAE,EAAE;YAC9D,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE;gBACjC,IAAI,OAAO,CAAC,YAAY,EAAE;oBACzB,qEAAqE;oBACrE,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;oBACnD,IAAI,CAAC,WAAW,CAAC;wBAChB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;qBAC9D,CAAC,CAAC;iBACH;gBACD,4DAA4D;gBAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACvB;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,SAAI,GAAG,CAAC,OAAsB,EAAE,EAAE;YACjC,sDAAsD;YACtD,QAAQ,OAAO,CAAC,IAAI,EAAE;gBACrB,KAAK,iBAAiB,CAAC;gBACvB,KAAK,MAAM,CAAC;gBACZ,KAAK,WAAW;oBACf,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpC,KAAK,IAAI;oBACR,IAAI,IAAI,CAAC,UAAU,EAAE;wBACpB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;qBACnC;oBACD,MAAM;aACP;QACF,CAAC,CAAC;QAcF,YAAO,GAAG,GAAG,EAAE;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC;QASF,4BAA4B;QACpB,gBAAW,GAAG,KAAK,IAAI,EAAE;YAChC,sEAAsE;YACtE,0EAA0E;YAC1E,6EAA6E;YAC7E,IAAI,CAAC,WAAW,CAAC;gBAChB,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAC3B;gBACD,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;aAChD,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,wEAAwE;QACxE,yCAAyC;QACjC,sBAAiB,GAAG,KAAK,IAAI,EAAE;YACtC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC;QA1JD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,SAAS,GAAG,IAAI,wBAAS,CAAC;YAC9B,QAAQ;SACR,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAMD,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAChC,CAAC;IA4FD,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC7B,OAAO;SACP;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IACzB,CAAC;IACD,IAAI;QACH,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IACzB,CAAC;IAMD,SAAS;QACR,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,cAAc;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAuBD,IAAI,WAAW;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;CACD;AAnMD,oCAmMC"}
@@ -1,34 +0,0 @@
1
- import { ReplicaType } from '@verdant-web/common';
2
- export interface ServerSyncEndpointProviderConfig {
3
- /**
4
- * The location of the endpoint used to retrieve an
5
- * authorization token for the client.
6
- */
7
- authEndpoint?: string;
8
- /**
9
- * A custom function to retrieve authorization
10
- * data. Use whatever fetching mechanism you want.
11
- */
12
- fetchAuth?: () => Promise<{
13
- accessToken: string;
14
- }>;
15
- /**
16
- * A spec-compliant fetch implementation. If not provided,
17
- * the global fetch will be used. authEndpoint will
18
- * be used to fetch the token.
19
- */
20
- fetch?: typeof fetch;
21
- }
22
- export declare class ServerSyncEndpointProvider {
23
- private config;
24
- private cached;
25
- type: ReplicaType;
26
- constructor(config: ServerSyncEndpointProviderConfig);
27
- getEndpoints: () => Promise<{
28
- http: string;
29
- websocket: string;
30
- files: string;
31
- token: string;
32
- }>;
33
- clearCache: () => void;
34
- }
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ServerSyncEndpointProvider = void 0;
7
- const common_1 = require("@verdant-web/common");
8
- const jwt_decode_1 = __importDefault(require("jwt-decode"));
9
- class ServerSyncEndpointProvider {
10
- constructor(config) {
11
- this.config = config;
12
- this.cached = null;
13
- this.type = common_1.ReplicaType.Realtime;
14
- this.getEndpoints = async () => {
15
- if (this.cached) {
16
- return this.cached;
17
- }
18
- let result;
19
- if (this.config.fetchAuth) {
20
- result = await this.config.fetchAuth();
21
- }
22
- else {
23
- const fetchImpl = this.config.fetch || fetch.bind(window);
24
- result = await fetchImpl(this.config.authEndpoint, {
25
- credentials: 'include',
26
- }).then((res) => {
27
- if (!res.ok) {
28
- throw new Error(`Auth endpoint returned non-200 response: ${res.status}`);
29
- }
30
- else {
31
- return res.json();
32
- }
33
- });
34
- }
35
- (0, common_1.assert)(result.accessToken, 'No access token provided from auth endpoint');
36
- const decoded = jwt_decode_1.default(result.accessToken);
37
- (0, common_1.assert)(decoded.url, 'No sync endpoint provided from auth endpoint');
38
- (0, common_1.assert)(decoded.type !== undefined, 'No replica type provided from auth endpoint');
39
- this.type = parseInt(decoded.type + '');
40
- const url = new URL(decoded.url);
41
- url.protocol = url.protocol.replace('ws', 'http');
42
- const httpEndpoint = url.toString();
43
- url.protocol = url.protocol.replace('http', 'ws');
44
- const websocketEndpoint = url.toString();
45
- let fileEndpoint = decoded.file;
46
- if (!fileEndpoint) {
47
- // default to http endpoint + '/files';
48
- const fileUrl = new URL(httpEndpoint);
49
- fileUrl.pathname = fileUrl.pathname + '/files';
50
- fileEndpoint = fileUrl.toString();
51
- }
52
- this.cached = {
53
- http: httpEndpoint,
54
- websocket: websocketEndpoint,
55
- files: fileEndpoint,
56
- token: result.accessToken,
57
- };
58
- return this.cached;
59
- };
60
- this.clearCache = () => {
61
- this.cached = null;
62
- };
63
- if (!config.authEndpoint && !config.fetchAuth) {
64
- throw new Error('Either authEndpoint or fetchAuth must be provided to ServerSyncEndpointProvider');
65
- }
66
- }
67
- }
68
- exports.ServerSyncEndpointProvider = ServerSyncEndpointProvider;
69
- //# sourceMappingURL=ServerSyncEndpointProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerSyncEndpointProvider.js","sourceRoot":"","sources":["../../../src/sync/ServerSyncEndpointProvider.ts"],"names":[],"mappings":"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"}
@@ -1,160 +0,0 @@
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
- syncingChange: (syncing: boolean) => void;
9
- };
10
- export type SyncTransportEvents = SyncEvents & {
11
- message: (message: ServerMessage) => void;
12
- };
13
- export interface SyncTransport extends EventSubscriber<SyncTransportEvents> {
14
- readonly presence: PresenceManager;
15
- readonly mode: SyncTransportMode;
16
- send(message: ClientMessage): void;
17
- start(): void;
18
- ignoreIncoming(): void;
19
- stop(): void;
20
- destroy(): void;
21
- reconnect(): void;
22
- readonly isConnected: boolean;
23
- readonly status: 'active' | 'paused';
24
- }
25
- export interface Sync<Presence = any, Profile = any> extends EventSubscriber<SyncEvents> {
26
- setMode(mode: SyncTransportMode): void;
27
- setPullInterval(interval: number): void;
28
- readonly pullInterval: number;
29
- uploadFile(data: FileData): Promise<FileUploadResult>;
30
- getFile(fileId: string): Promise<FilePullResult>;
31
- readonly presence: PresenceManager<Profile, Presence>;
32
- send(message: ClientMessage): void;
33
- start(): void;
34
- stop(): void;
35
- ignoreIncoming(): void;
36
- destroy(): void;
37
- reconnect(): void;
38
- readonly isConnected: boolean;
39
- readonly status: 'active' | 'paused';
40
- readonly mode: SyncTransportMode;
41
- }
42
- export declare class NoSync<Presence = any, Profile = any> extends EventSubscriber<SyncEvents> implements Sync<Presence, Profile> {
43
- readonly mode = "pull";
44
- send(): void;
45
- start(): void;
46
- stop(): void;
47
- ignoreIncoming(): void;
48
- destroy: () => void;
49
- reconnect(): void;
50
- setMode(): void;
51
- setPullInterval(): void;
52
- readonly isConnected = false;
53
- readonly status = "paused";
54
- readonly pullInterval = 0;
55
- readonly presence: PresenceManager<any, any>;
56
- constructor({ meta }: {
57
- meta: Metadata;
58
- });
59
- uploadFile: () => Promise<{
60
- success: boolean;
61
- retry: boolean;
62
- }>;
63
- getFile: () => Promise<FilePullResult>;
64
- }
65
- export type SyncTransportMode = 'realtime' | 'pull';
66
- export interface ServerSyncOptions<Profile = any, Presence = any> extends ServerSyncEndpointProviderConfig {
67
- /**
68
- * When a client first connects, it will use this presence value.
69
- */
70
- initialPresence: Presence;
71
- /**
72
- * Before connecting to the server, the local client will have
73
- * this value for their profile data. You can either cache and store
74
- * profile data from a previous connection or provide defaults like
75
- * empty strings.
76
- */
77
- defaultProfile: Profile;
78
- /**
79
- * Provide `false` to disable transport selection. Transport selection
80
- * automatically switches between HTTP and WebSocket based sync depending
81
- * on the number of peers connected. If a user is alone, they will use
82
- * HTTP push/pull to sync changes. If another user joins, both users will
83
- * be upgraded to websockets.
84
- *
85
- * Provide `peers-only` to only automatically use websockets if other
86
- * users connect, but not if another device for the current user connects.
87
- * By default, automatic transport selection will upgrade to websockets if
88
- * another device from the current user connects, but if realtime sync is
89
- * not necessary for such cases, you can save bandwidth by disabling this.
90
- *
91
- * Turning off this feature allows you more control over the transport
92
- * which can be useful for low-power devices or to save server traffic.
93
- * To modify transport modes manually, utilize `client.sync.setMode`.
94
- * The built-in behavior is essentially switching modes based on
95
- * the number of peers detected by client.sync.presence.
96
- */
97
- automaticTransportSelection?: boolean | 'peers-only';
98
- initialTransport?: SyncTransportMode;
99
- autoStart?: boolean;
100
- /**
101
- * Optionally specify an interval, in milliseconds, to poll the server
102
- * when in pull mode.
103
- */
104
- pullInterval?: number;
105
- /**
106
- * Presence updates are batched to reduce number of requests / messages
107
- * sent to the server. You can specify the batching time slice, in milliseconds,
108
- */
109
- presenceUpdateBatchTimeout?: number;
110
- /**
111
- * Experimental: sync messages over a broadcast channel between tabs.
112
- * Fixes tabs not reactively updating to changes when other tabs are open,
113
- * but is not yet thoroughly vetted.
114
- */
115
- useBroadcastChannel?: boolean;
116
- }
117
- export declare class ServerSync<Presence = any, Profile = any> extends EventSubscriber<SyncEvents> implements Sync<Presence, Profile> {
118
- private webSocketSync;
119
- private pushPullSync;
120
- private fileSync;
121
- private activeSync;
122
- private endpointProvider;
123
- private onData;
124
- private broadcastChannel;
125
- private _activelySyncing;
126
- private meta;
127
- readonly presence: PresenceManager<Profile, Presence>;
128
- private log;
129
- constructor({ authEndpoint, fetchAuth, fetch, initialPresence, automaticTransportSelection, autoStart, initialTransport, pullInterval, presenceUpdateBatchTimeout, defaultProfile, useBroadcastChannel, }: ServerSyncOptions<Profile, Presence>, { meta, log, onData, }: {
130
- meta: Metadata;
131
- log?: (...args: any[]) => void;
132
- onData: (data: {
133
- operations: Operation[];
134
- baselines: DocumentBaseline[];
135
- reset?: boolean;
136
- }) => Promise<void>;
137
- });
138
- get canDoRealtime(): boolean;
139
- get syncing(): boolean;
140
- private handleBroadcastChannelMessage;
141
- private onTokenExpired;
142
- private handleMessage;
143
- private handleOnlineChange;
144
- private handlePresenceUpdate;
145
- setMode: (transport: SyncTransportMode) => void;
146
- setPullInterval: (interval: number) => void;
147
- get pullInterval(): number;
148
- send: (message: ClientMessage) => void;
149
- uploadFile: (info: FileData) => Promise<FileUploadResult>;
150
- getFile: (id: string) => Promise<FilePullResult>;
151
- start: () => void;
152
- stop: () => void;
153
- ignoreIncoming(): void;
154
- destroy: () => void;
155
- reconnect: () => void;
156
- get isConnected(): boolean;
157
- get status(): "active" | "paused";
158
- get mode(): SyncTransportMode;
159
- }
160
- export {};