@verdant-web/store 3.3.2 → 3.4.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) 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.js +7 -0
  10. package/dist/esm/client/Client.js.map +1 -1
  11. package/dist/esm/client/ClientDescriptor.js.map +1 -1
  12. package/dist/esm/entities/Entity.js.map +1 -1
  13. package/dist/esm/entities/EntityCache.js.map +1 -1
  14. package/dist/esm/entities/EntityMetadata.js.map +1 -1
  15. package/dist/esm/entities/EntityStore.js.map +1 -1
  16. package/dist/esm/entities/OperationBatcher.js.map +1 -1
  17. package/dist/esm/files/EntityFile.js.map +1 -1
  18. package/dist/esm/files/FileManager.js +3 -0
  19. package/dist/esm/files/FileManager.js.map +1 -1
  20. package/dist/esm/files/FileStorage.js.map +1 -1
  21. package/dist/esm/files/utils.js.map +1 -1
  22. package/dist/esm/idb.js.map +1 -1
  23. package/dist/esm/metadata/AckInfoStore.js.map +1 -1
  24. package/dist/esm/metadata/LocalReplicaStore.js.map +1 -1
  25. package/dist/esm/metadata/MessageCreator.js.map +1 -1
  26. package/dist/esm/metadata/Metadata.js.map +1 -1
  27. package/dist/esm/metadata/OperationsStore.js.map +1 -1
  28. package/dist/esm/metadata/SchemaStore.js.map +1 -1
  29. package/dist/esm/metadata/openMetadataDatabase.js.map +1 -1
  30. package/dist/esm/migration/db.js.map +1 -1
  31. package/dist/esm/migration/openDatabase.js.map +1 -1
  32. package/dist/esm/migration/paths.js.map +1 -1
  33. package/dist/esm/queries/BaseQuery.js.map +1 -1
  34. package/dist/esm/queries/QueryCache.js.map +1 -1
  35. package/dist/esm/queries/QueryableStorage.js.map +1 -1
  36. package/dist/esm/queries/dbQueries.js.map +1 -1
  37. package/dist/esm/queries/keys.js.map +1 -1
  38. package/dist/esm/queries/ranges.js.map +1 -1
  39. package/dist/esm/queries/utils.js.map +1 -1
  40. package/dist/esm/sync/FileSync.js.map +1 -1
  41. package/dist/esm/sync/Heartbeat.js.map +1 -1
  42. package/dist/esm/sync/PresenceManager.js.map +1 -1
  43. package/dist/esm/sync/PushPullSync.js.map +1 -1
  44. package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
  45. package/dist/esm/sync/Sync.js.map +1 -1
  46. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  47. package/package.json +9 -10
  48. package/src/client/Client.ts +8 -1
  49. package/src/files/FileManager.ts +4 -0
  50. package/src/sync/Sync.ts +2 -2
  51. package/dist/cjs/BackoffScheduler.d.ts +0 -19
  52. package/dist/cjs/BackoffScheduler.js +0 -45
  53. package/dist/cjs/BackoffScheduler.js.map +0 -1
  54. package/dist/cjs/DocumentManager.d.ts +0 -28
  55. package/dist/cjs/DocumentManager.js +0 -45
  56. package/dist/cjs/DocumentManager.js.map +0 -1
  57. package/dist/cjs/FakeWeakRef.d.ts +0 -11
  58. package/dist/cjs/FakeWeakRef.js +0 -19
  59. package/dist/cjs/FakeWeakRef.js.map +0 -1
  60. package/dist/cjs/IDBService.d.ts +0 -30
  61. package/dist/cjs/IDBService.js +0 -101
  62. package/dist/cjs/IDBService.js.map +0 -1
  63. package/dist/cjs/UndoHistory.d.ts +0 -16
  64. package/dist/cjs/UndoHistory.js +0 -55
  65. package/dist/cjs/UndoHistory.js.map +0 -1
  66. package/dist/cjs/__tests__/batching.test.d.ts +0 -1
  67. package/dist/cjs/__tests__/batching.test.js +0 -47
  68. package/dist/cjs/__tests__/batching.test.js.map +0 -1
  69. package/dist/cjs/__tests__/documents.test.d.ts +0 -1
  70. package/dist/cjs/__tests__/documents.test.js +0 -468
  71. package/dist/cjs/__tests__/documents.test.js.map +0 -1
  72. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +0 -76
  73. package/dist/cjs/__tests__/fixtures/testStorage.js +0 -96
  74. package/dist/cjs/__tests__/fixtures/testStorage.js.map +0 -1
  75. package/dist/cjs/__tests__/legacyOids.test.d.ts +0 -1
  76. package/dist/cjs/__tests__/legacyOids.test.js +0 -354
  77. package/dist/cjs/__tests__/legacyOids.test.js.map +0 -1
  78. package/dist/cjs/__tests__/mutations.test.d.ts +0 -1
  79. package/dist/cjs/__tests__/mutations.test.js +0 -48
  80. package/dist/cjs/__tests__/mutations.test.js.map +0 -1
  81. package/dist/cjs/__tests__/queries.test.d.ts +0 -1
  82. package/dist/cjs/__tests__/queries.test.js +0 -323
  83. package/dist/cjs/__tests__/queries.test.js.map +0 -1
  84. package/dist/cjs/__tests__/setup/indexedDB.d.ts +0 -1
  85. package/dist/cjs/__tests__/setup/indexedDB.js +0 -16
  86. package/dist/cjs/__tests__/setup/indexedDB.js.map +0 -1
  87. package/dist/cjs/__tests__/undo.test.d.ts +0 -1
  88. package/dist/cjs/__tests__/undo.test.js +0 -94
  89. package/dist/cjs/__tests__/undo.test.js.map +0 -1
  90. package/dist/cjs/backup.d.ts +0 -10
  91. package/dist/cjs/backup.js +0 -58
  92. package/dist/cjs/backup.js.map +0 -1
  93. package/dist/cjs/client/Client.d.ts +0 -120
  94. package/dist/cjs/client/Client.js +0 -300
  95. package/dist/cjs/client/Client.js.map +0 -1
  96. package/dist/cjs/client/ClientDescriptor.d.ts +0 -76
  97. package/dist/cjs/client/ClientDescriptor.js +0 -213
  98. package/dist/cjs/client/ClientDescriptor.js.map +0 -1
  99. package/dist/cjs/client/constants.d.ts +0 -1
  100. package/dist/cjs/client/constants.js +0 -5
  101. package/dist/cjs/client/constants.js.map +0 -1
  102. package/dist/cjs/constants.d.ts +0 -1
  103. package/dist/cjs/constants.js +0 -5
  104. package/dist/cjs/constants.js.map +0 -1
  105. package/dist/cjs/context.d.ts +0 -38
  106. package/dist/cjs/context.js +0 -3
  107. package/dist/cjs/context.js.map +0 -1
  108. package/dist/cjs/entities/Entity.d.ts +0 -148
  109. package/dist/cjs/entities/Entity.js +0 -711
  110. package/dist/cjs/entities/Entity.js.map +0 -1
  111. package/dist/cjs/entities/Entity.test.d.ts +0 -1
  112. package/dist/cjs/entities/Entity.test.js +0 -194
  113. package/dist/cjs/entities/Entity.test.js.map +0 -1
  114. package/dist/cjs/entities/EntityCache.d.ts +0 -15
  115. package/dist/cjs/entities/EntityCache.js +0 -39
  116. package/dist/cjs/entities/EntityCache.js.map +0 -1
  117. package/dist/cjs/entities/EntityMetadata.d.ts +0 -68
  118. package/dist/cjs/entities/EntityMetadata.js +0 -261
  119. package/dist/cjs/entities/EntityMetadata.js.map +0 -1
  120. package/dist/cjs/entities/EntityStore.d.ts +0 -80
  121. package/dist/cjs/entities/EntityStore.js +0 -352
  122. package/dist/cjs/entities/EntityStore.js.map +0 -1
  123. package/dist/cjs/entities/OperationBatcher.d.ts +0 -52
  124. package/dist/cjs/entities/OperationBatcher.js +0 -165
  125. package/dist/cjs/entities/OperationBatcher.js.map +0 -1
  126. package/dist/cjs/entities/types.d.ts +0 -103
  127. package/dist/cjs/entities/types.js +0 -3
  128. package/dist/cjs/entities/types.js.map +0 -1
  129. package/dist/cjs/files/EntityFile.d.ts +0 -35
  130. package/dist/cjs/files/EntityFile.js +0 -81
  131. package/dist/cjs/files/EntityFile.js.map +0 -1
  132. package/dist/cjs/files/FileManager.d.ts +0 -46
  133. package/dist/cjs/files/FileManager.js +0 -174
  134. package/dist/cjs/files/FileManager.js.map +0 -1
  135. package/dist/cjs/files/FileStorage.d.ts +0 -39
  136. package/dist/cjs/files/FileStorage.js +0 -110
  137. package/dist/cjs/files/FileStorage.js.map +0 -1
  138. package/dist/cjs/files/utils.d.ts +0 -10
  139. package/dist/cjs/files/utils.js +0 -62
  140. package/dist/cjs/files/utils.js.map +0 -1
  141. package/dist/cjs/files/utils.test.d.ts +0 -1
  142. package/dist/cjs/files/utils.test.js +0 -81
  143. package/dist/cjs/files/utils.test.js.map +0 -1
  144. package/dist/cjs/idb.d.ts +0 -13
  145. package/dist/cjs/idb.js +0 -158
  146. package/dist/cjs/idb.js.map +0 -1
  147. package/dist/cjs/index.d.ts +0 -23
  148. package/dist/cjs/index.js +0 -25
  149. package/dist/cjs/index.js.map +0 -1
  150. package/dist/cjs/metadata/AckInfoStore.d.ts +0 -10
  151. package/dist/cjs/metadata/AckInfoStore.js +0 -26
  152. package/dist/cjs/metadata/AckInfoStore.js.map +0 -1
  153. package/dist/cjs/metadata/BaselinesStore.d.ts +0 -40
  154. package/dist/cjs/metadata/BaselinesStore.js +0 -106
  155. package/dist/cjs/metadata/BaselinesStore.js.map +0 -1
  156. package/dist/cjs/metadata/LocalReplicaStore.d.ts +0 -18
  157. package/dist/cjs/metadata/LocalReplicaStore.js +0 -62
  158. package/dist/cjs/metadata/LocalReplicaStore.js.map +0 -1
  159. package/dist/cjs/metadata/MessageCreator.d.ts +0 -19
  160. package/dist/cjs/metadata/MessageCreator.js +0 -128
  161. package/dist/cjs/metadata/MessageCreator.js.map +0 -1
  162. package/dist/cjs/metadata/Metadata.d.ts +0 -135
  163. package/dist/cjs/metadata/Metadata.js +0 -408
  164. package/dist/cjs/metadata/Metadata.js.map +0 -1
  165. package/dist/cjs/metadata/OperationsStore.d.ts +0 -62
  166. package/dist/cjs/metadata/OperationsStore.js +0 -179
  167. package/dist/cjs/metadata/OperationsStore.js.map +0 -1
  168. package/dist/cjs/metadata/SchemaStore.d.ts +0 -9
  169. package/dist/cjs/metadata/SchemaStore.js +0 -39
  170. package/dist/cjs/metadata/SchemaStore.js.map +0 -1
  171. package/dist/cjs/metadata/openMetadataDatabase.d.ts +0 -19
  172. package/dist/cjs/metadata/openMetadataDatabase.js +0 -220
  173. package/dist/cjs/metadata/openMetadataDatabase.js.map +0 -1
  174. package/dist/cjs/migration/db.d.ts +0 -8
  175. package/dist/cjs/migration/db.js +0 -112
  176. package/dist/cjs/migration/db.js.map +0 -1
  177. package/dist/cjs/migration/errors.d.ts +0 -5
  178. package/dist/cjs/migration/errors.js +0 -12
  179. package/dist/cjs/migration/errors.js.map +0 -1
  180. package/dist/cjs/migration/openDatabase.d.ts +0 -20
  181. package/dist/cjs/migration/openDatabase.js +0 -468
  182. package/dist/cjs/migration/openDatabase.js.map +0 -1
  183. package/dist/cjs/migration/paths.d.ts +0 -6
  184. package/dist/cjs/migration/paths.js +0 -53
  185. package/dist/cjs/migration/paths.js.map +0 -1
  186. package/dist/cjs/migration/paths.test.d.ts +0 -1
  187. package/dist/cjs/migration/paths.test.js +0 -91
  188. package/dist/cjs/migration/paths.test.js.map +0 -1
  189. package/dist/cjs/queries/BaseQuery.d.ts +0 -53
  190. package/dist/cjs/queries/BaseQuery.js +0 -148
  191. package/dist/cjs/queries/BaseQuery.js.map +0 -1
  192. package/dist/cjs/queries/CollectionQueries.d.ts +0 -55
  193. package/dist/cjs/queries/CollectionQueries.js +0 -92
  194. package/dist/cjs/queries/CollectionQueries.js.map +0 -1
  195. package/dist/cjs/queries/FindAllQuery.d.ts +0 -12
  196. package/dist/cjs/queries/FindAllQuery.js +0 -44
  197. package/dist/cjs/queries/FindAllQuery.js.map +0 -1
  198. package/dist/cjs/queries/FindInfiniteQuery.d.ts +0 -19
  199. package/dist/cjs/queries/FindInfiniteQuery.js +0 -70
  200. package/dist/cjs/queries/FindInfiniteQuery.js.map +0 -1
  201. package/dist/cjs/queries/FindOneQuery.d.ts +0 -12
  202. package/dist/cjs/queries/FindOneQuery.js +0 -43
  203. package/dist/cjs/queries/FindOneQuery.js.map +0 -1
  204. package/dist/cjs/queries/FindPageQuery.d.ts +0 -24
  205. package/dist/cjs/queries/FindPageQuery.js +0 -77
  206. package/dist/cjs/queries/FindPageQuery.js.map +0 -1
  207. package/dist/cjs/queries/GetQuery.d.ts +0 -10
  208. package/dist/cjs/queries/GetQuery.js +0 -30
  209. package/dist/cjs/queries/GetQuery.js.map +0 -1
  210. package/dist/cjs/queries/QueryCache.d.ts +0 -17
  211. package/dist/cjs/queries/QueryCache.js +0 -46
  212. package/dist/cjs/queries/QueryCache.js.map +0 -1
  213. package/dist/cjs/queries/QueryableStorage.d.ts +0 -20
  214. package/dist/cjs/queries/QueryableStorage.js +0 -94
  215. package/dist/cjs/queries/QueryableStorage.js.map +0 -1
  216. package/dist/cjs/queries/dbQueries.d.ts +0 -22
  217. package/dist/cjs/queries/dbQueries.js +0 -136
  218. package/dist/cjs/queries/dbQueries.js.map +0 -1
  219. package/dist/cjs/queries/keys.d.ts +0 -10
  220. package/dist/cjs/queries/keys.js +0 -34
  221. package/dist/cjs/queries/keys.js.map +0 -1
  222. package/dist/cjs/queries/ranges.d.ts +0 -2
  223. package/dist/cjs/queries/ranges.js +0 -70
  224. package/dist/cjs/queries/ranges.js.map +0 -1
  225. package/dist/cjs/queries/types.d.ts +0 -6
  226. package/dist/cjs/queries/types.js +0 -3
  227. package/dist/cjs/queries/types.js.map +0 -1
  228. package/dist/cjs/queries/utils.d.ts +0 -3
  229. package/dist/cjs/queries/utils.js +0 -25
  230. package/dist/cjs/queries/utils.js.map +0 -1
  231. package/dist/cjs/sync/FileSync.d.ts +0 -24
  232. package/dist/cjs/sync/FileSync.js +0 -87
  233. package/dist/cjs/sync/FileSync.js.map +0 -1
  234. package/dist/cjs/sync/Heartbeat.d.ts +0 -25
  235. package/dist/cjs/sync/Heartbeat.js +0 -64
  236. package/dist/cjs/sync/Heartbeat.js.map +0 -1
  237. package/dist/cjs/sync/PresenceManager.d.ts +0 -55
  238. package/dist/cjs/sync/PresenceManager.js +0 -126
  239. package/dist/cjs/sync/PresenceManager.js.map +0 -1
  240. package/dist/cjs/sync/PushPullSync.d.ts +0 -39
  241. package/dist/cjs/sync/PushPullSync.js +0 -159
  242. package/dist/cjs/sync/PushPullSync.js.map +0 -1
  243. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +0 -34
  244. package/dist/cjs/sync/ServerSyncEndpointProvider.js +0 -69
  245. package/dist/cjs/sync/ServerSyncEndpointProvider.js.map +0 -1
  246. package/dist/cjs/sync/Sync.d.ts +0 -160
  247. package/dist/cjs/sync/Sync.js +0 -293
  248. package/dist/cjs/sync/Sync.js.map +0 -1
  249. package/dist/cjs/sync/WebSocketSync.d.ts +0 -44
  250. package/dist/cjs/sync/WebSocketSync.js +0 -221
  251. package/dist/cjs/sync/WebSocketSync.js.map +0 -1
  252. package/dist/cjs/types.d.ts +0 -12
  253. package/dist/cjs/types.js +0 -3
  254. package/dist/cjs/types.js.map +0 -1
  255. package/dist/cjs/utils/Disposable.d.ts +0 -6
  256. package/dist/cjs/utils/Disposable.js +0 -19
  257. package/dist/cjs/utils/Disposable.js.map +0 -1
  258. package/dist/cjs/utils/Resolvable.d.ts +0 -8
  259. package/dist/cjs/utils/Resolvable.js +0 -23
  260. package/dist/cjs/utils/Resolvable.js.map +0 -1
  261. package/dist/cjs/vanilla.d.ts +0 -1
  262. package/dist/cjs/vanilla.js +0 -28
  263. package/dist/cjs/vanilla.js.map +0 -1
  264. package/dist/esm/BackoffScheduler.d.ts +0 -19
  265. package/dist/esm/DocumentManager.d.ts +0 -28
  266. package/dist/esm/FakeWeakRef.d.ts +0 -11
  267. package/dist/esm/IDBService.d.ts +0 -30
  268. package/dist/esm/UndoHistory.d.ts +0 -16
  269. package/dist/esm/__tests__/batching.test.d.ts +0 -1
  270. package/dist/esm/__tests__/documents.test.d.ts +0 -1
  271. package/dist/esm/__tests__/fixtures/testStorage.d.ts +0 -76
  272. package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
  273. package/dist/esm/__tests__/mutations.test.d.ts +0 -1
  274. package/dist/esm/__tests__/queries.test.d.ts +0 -1
  275. package/dist/esm/__tests__/setup/indexedDB.d.ts +0 -1
  276. package/dist/esm/__tests__/undo.test.d.ts +0 -1
  277. package/dist/esm/backup.d.ts +0 -10
  278. package/dist/esm/client/Client.d.ts +0 -120
  279. package/dist/esm/client/ClientDescriptor.d.ts +0 -76
  280. package/dist/esm/client/constants.d.ts +0 -1
  281. package/dist/esm/constants.d.ts +0 -1
  282. package/dist/esm/context.d.ts +0 -38
  283. package/dist/esm/entities/Entity.d.ts +0 -148
  284. package/dist/esm/entities/Entity.test.d.ts +0 -1
  285. package/dist/esm/entities/EntityCache.d.ts +0 -15
  286. package/dist/esm/entities/EntityMetadata.d.ts +0 -68
  287. package/dist/esm/entities/EntityStore.d.ts +0 -80
  288. package/dist/esm/entities/OperationBatcher.d.ts +0 -52
  289. package/dist/esm/entities/types.d.ts +0 -103
  290. package/dist/esm/files/EntityFile.d.ts +0 -35
  291. package/dist/esm/files/FileManager.d.ts +0 -46
  292. package/dist/esm/files/FileStorage.d.ts +0 -39
  293. package/dist/esm/files/utils.d.ts +0 -10
  294. package/dist/esm/files/utils.test.d.ts +0 -1
  295. package/dist/esm/idb.d.ts +0 -13
  296. package/dist/esm/index.d.ts +0 -23
  297. package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
  298. package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
  299. package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -18
  300. package/dist/esm/metadata/MessageCreator.d.ts +0 -19
  301. package/dist/esm/metadata/Metadata.d.ts +0 -135
  302. package/dist/esm/metadata/OperationsStore.d.ts +0 -62
  303. package/dist/esm/metadata/SchemaStore.d.ts +0 -9
  304. package/dist/esm/metadata/openMetadataDatabase.d.ts +0 -19
  305. package/dist/esm/migration/db.d.ts +0 -8
  306. package/dist/esm/migration/errors.d.ts +0 -5
  307. package/dist/esm/migration/openDatabase.d.ts +0 -20
  308. package/dist/esm/migration/paths.d.ts +0 -6
  309. package/dist/esm/migration/paths.test.d.ts +0 -1
  310. package/dist/esm/queries/BaseQuery.d.ts +0 -53
  311. package/dist/esm/queries/CollectionQueries.d.ts +0 -55
  312. package/dist/esm/queries/FindAllQuery.d.ts +0 -12
  313. package/dist/esm/queries/FindInfiniteQuery.d.ts +0 -19
  314. package/dist/esm/queries/FindOneQuery.d.ts +0 -12
  315. package/dist/esm/queries/FindPageQuery.d.ts +0 -24
  316. package/dist/esm/queries/GetQuery.d.ts +0 -10
  317. package/dist/esm/queries/QueryCache.d.ts +0 -17
  318. package/dist/esm/queries/QueryableStorage.d.ts +0 -20
  319. package/dist/esm/queries/dbQueries.d.ts +0 -22
  320. package/dist/esm/queries/keys.d.ts +0 -10
  321. package/dist/esm/queries/ranges.d.ts +0 -2
  322. package/dist/esm/queries/types.d.ts +0 -6
  323. package/dist/esm/queries/utils.d.ts +0 -3
  324. package/dist/esm/sync/FileSync.d.ts +0 -24
  325. package/dist/esm/sync/Heartbeat.d.ts +0 -25
  326. package/dist/esm/sync/PresenceManager.d.ts +0 -55
  327. package/dist/esm/sync/PushPullSync.d.ts +0 -39
  328. package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +0 -34
  329. package/dist/esm/sync/Sync.d.ts +0 -160
  330. package/dist/esm/sync/WebSocketSync.d.ts +0 -44
  331. package/dist/esm/types.d.ts +0 -12
  332. package/dist/esm/utils/Disposable.d.ts +0 -6
  333. package/dist/esm/utils/Resolvable.d.ts +0 -8
  334. package/dist/esm/vanilla.d.ts +0 -1
  335. package/dist/tsconfig-cjs.tsbuildinfo +0 -1
  336. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRange = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- const matchIndexToIdbKeyRange = (filter) => {
6
- return IDBKeyRange.only((0, common_1.sanitizeIndexValue)(filter.equals));
7
- };
8
- const sortIndexToIdbKeyRange = (filter) => {
9
- return undefined;
10
- };
11
- const rangeIndexToIdbKeyRange = (filter) => {
12
- const lower = filter.gte || filter.gt;
13
- const upper = filter.lte || filter.lt;
14
- if (lower === upper) {
15
- return IDBKeyRange.only((0, common_1.sanitizeIndexValue)(lower));
16
- }
17
- if (!lower) {
18
- return IDBKeyRange.upperBound((0, common_1.sanitizeIndexValue)(upper), !!filter.lt);
19
- }
20
- else if (!upper) {
21
- return IDBKeyRange.lowerBound((0, common_1.sanitizeIndexValue)(lower), !!filter.gt);
22
- }
23
- else {
24
- return IDBKeyRange.bound((0, common_1.sanitizeIndexValue)(lower), (0, common_1.sanitizeIndexValue)(upper), !!filter.gt, !!filter.lt);
25
- }
26
- };
27
- const compoundIndexToIdbKeyRange = (
28
- // FIXME:
29
- schema, collection, filter) => {
30
- // validate the usage of the compound index:
31
- // - all match fields must be contiguous at the start of the compound order
32
- const indexDefinition = schema.collections[collection].compounds[filter.where];
33
- (0, common_1.assert)(indexDefinition, `Index ${filter.where} does not exist on collection ${collection}`);
34
- const matchedKeys = Object.keys(filter.match).sort((a, b) => indexDefinition.of.indexOf(a) - indexDefinition.of.indexOf(b));
35
- for (const key of matchedKeys) {
36
- if (indexDefinition.of.indexOf(key) !== matchedKeys.indexOf(key)) {
37
- throw new Error(`Compound index ${filter.where} does not have ${key} at the start of its order`);
38
- }
39
- }
40
- const matchedValues = matchedKeys.map((key) => filter.match[key]);
41
- // special case: all match fields are specified - we don't need a range
42
- // query, just a single key query
43
- if (matchedKeys.length === indexDefinition.of.length) {
44
- return IDBKeyRange.only((0, common_1.createCompoundIndexValue)(...matchedValues));
45
- }
46
- // create our bounds for the matched values
47
- const lower = (0, common_1.createLowerBoundIndexValue)(...matchedValues);
48
- const upper = (0, common_1.createUpperBoundIndexValue)(...matchedValues);
49
- return IDBKeyRange.bound(lower, upper);
50
- };
51
- function startsWithIndexToIdbKeyRange(filter) {
52
- const lower = filter.startsWith;
53
- const upper = filter.startsWith + '\uffff';
54
- return IDBKeyRange.bound(lower, upper);
55
- }
56
- function getRange(schema, collection, index) {
57
- if (!index)
58
- return undefined;
59
- if ((0, common_1.isRangeIndexFilter)(index))
60
- return rangeIndexToIdbKeyRange(index);
61
- if ((0, common_1.isMatchIndexFilter)(index))
62
- return matchIndexToIdbKeyRange(index);
63
- if ((0, common_1.isSortIndexFilter)(index))
64
- return sortIndexToIdbKeyRange(index);
65
- if ((0, common_1.isStartsWithIndexFilter)(index))
66
- return startsWithIndexToIdbKeyRange(index);
67
- return compoundIndexToIdbKeyRange(schema, collection, index);
68
- }
69
- exports.getRange = getRange;
70
- //# sourceMappingURL=ranges.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../src/queries/ranges.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { FindAllQuery } from './FindAllQuery.js';
2
- import type { FindPageQuery } from './FindPageQuery.js';
3
- import type { FindOneQuery } from './FindOneQuery.js';
4
- import type { FindInfiniteQuery } from './FindInfiniteQuery.js';
5
- import type { GetQuery } from './GetQuery.js';
6
- export type Query<T> = FindAllQuery<T> | FindPageQuery<T> | FindOneQuery<T> | FindInfiniteQuery<T> | GetQuery<T>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/queries/types.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- import { CollectionIndexFilter } from '@verdant-web/common';
2
- export declare function filterResultSet(results: any): any;
3
- export declare function areIndexesEqual(a?: CollectionIndexFilter, b?: CollectionIndexFilter): boolean | undefined;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.areIndexesEqual = exports.filterResultSet = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- const Entity_js_1 = require("../entities/Entity.js");
6
- function existsFilter(x) {
7
- return x !== null;
8
- }
9
- function filterResultSet(results) {
10
- if (Array.isArray(results)) {
11
- return results.map(filterResultSet).filter(existsFilter);
12
- }
13
- else if (results instanceof Entity_js_1.Entity) {
14
- return results.deleted ? null : results;
15
- }
16
- else {
17
- return results;
18
- }
19
- }
20
- exports.filterResultSet = filterResultSet;
21
- function areIndexesEqual(a, b) {
22
- return (!a && !b) || (a && b && (0, common_1.hashObject)(a) === (0, common_1.hashObject)(b));
23
- }
24
- exports.areIndexesEqual = areIndexesEqual;
25
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/queries/utils.ts"],"names":[],"mappings":";;;AAAA,gDAAwE;AACxE,qDAA+C;AAE/C,SAAS,YAAY,CAAI,CAAW;IACnC,OAAO,CAAC,KAAK,IAAI,CAAC;AACnB,CAAC;AAED,SAAgB,eAAe,CAAC,OAAY;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACzD;SAAM,IAAI,OAAO,YAAY,kBAAM,EAAE;QACrC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;KACxC;SAAM;QACN,OAAO,OAAO,CAAC;KACf;AACF,CAAC;AARD,0CAQC;AAED,SAAgB,eAAe,CAC9B,CAAyB,EACzB,CAAyB;IAEzB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAA,mBAAU,EAAC,CAAC,CAAC,KAAK,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AALD,0CAKC"}
@@ -1,24 +0,0 @@
1
- import { FileData } from '@verdant-web/common';
2
- import { ServerSyncEndpointProvider } from './ServerSyncEndpointProvider.js';
3
- export interface FileUploadResult {
4
- success: boolean;
5
- retry: boolean;
6
- }
7
- export type FilePullResult = {
8
- success: true;
9
- data: FileData;
10
- } | {
11
- success: false;
12
- retry: boolean;
13
- error?: any;
14
- };
15
- export declare class FileSync {
16
- private endpointProvider;
17
- private log;
18
- constructor({ endpointProvider, log, }: {
19
- endpointProvider: ServerSyncEndpointProvider;
20
- log: (...args: any[]) => any;
21
- });
22
- uploadFile: (data: FileData) => Promise<FileUploadResult>;
23
- getFile: (id: string) => Promise<FilePullResult>;
24
- }
@@ -1,87 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FileSync = void 0;
4
- class FileSync {
5
- constructor({ endpointProvider, log, }) {
6
- this.uploadFile = async (data) => {
7
- const file = data.file;
8
- if (!file) {
9
- throw new Error('Cannot upload a non-local file');
10
- }
11
- // multipart upload
12
- const { files: fileEndpoint, token } = await this.endpointProvider.getEndpoints();
13
- const formData = new window.FormData();
14
- formData.append('file', file);
15
- try {
16
- const response = await fetch(fileEndpoint + `/${data.id}`, {
17
- method: 'POST',
18
- body: formData,
19
- credentials: 'include',
20
- headers: {
21
- Authorization: `Bearer ${token}`,
22
- },
23
- });
24
- if (response.ok) {
25
- this.log('info', 'File upload successful');
26
- return {
27
- success: true,
28
- retry: false,
29
- };
30
- }
31
- else {
32
- this.log('error', 'File upload failed', response.status, await response.text());
33
- return {
34
- success: false,
35
- retry: response.status >= 500,
36
- };
37
- }
38
- }
39
- catch (e) {
40
- this.log('error', 'File upload failed', e);
41
- return {
42
- success: false,
43
- retry: true,
44
- };
45
- }
46
- };
47
- this.getFile = async (id) => {
48
- const { files: fileEndpoint, token } = await this.endpointProvider.getEndpoints();
49
- try {
50
- const response = await fetch(fileEndpoint + `/${id}`, {
51
- method: 'GET',
52
- credentials: 'include',
53
- headers: {
54
- 'Content-Type': 'application/json',
55
- Authorization: `Bearer ${token}`,
56
- },
57
- });
58
- if (response.ok) {
59
- const data = await response.json();
60
- return {
61
- success: true,
62
- data,
63
- };
64
- }
65
- else {
66
- this.log('error', 'File information fetch failed', response.status, await response.text());
67
- return {
68
- success: false,
69
- retry: response.status >= 500 || response.status === 404,
70
- };
71
- }
72
- }
73
- catch (e) {
74
- this.log('error', 'File information fetch failed', e);
75
- return {
76
- success: false,
77
- error: e,
78
- retry: true,
79
- };
80
- }
81
- };
82
- this.endpointProvider = endpointProvider;
83
- this.log = log;
84
- }
85
- }
86
- exports.FileSync = FileSync;
87
- //# sourceMappingURL=FileSync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileSync.js","sourceRoot":"","sources":["../../../src/sync/FileSync.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import { EventSubscriber } from '@verdant-web/common';
2
- export declare class Heartbeat extends EventSubscriber<{
3
- missed: () => void;
4
- beat: () => void;
5
- }> {
6
- private _interval;
7
- private deadlineLength;
8
- private nextBeat;
9
- private deadline;
10
- get interval(): number;
11
- constructor({ interval, deadlineLength, restartOnTabFocus, }?: {
12
- interval?: number;
13
- deadlineLength?: number;
14
- restartOnTabFocus?: boolean;
15
- });
16
- keepAlive: () => void;
17
- start: (immediate?: boolean) => void;
18
- stop: () => void;
19
- private beat;
20
- private onDeadline;
21
- /**
22
- * Only takes affect after the next beat
23
- */
24
- setInterval: (interval: number) => void;
25
- }
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Heartbeat = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- class Heartbeat extends common_1.EventSubscriber {
6
- get interval() {
7
- return this._interval;
8
- }
9
- constructor({ interval = 15 * 1000, deadlineLength = 3 * 1000, restartOnTabFocus = true, } = {}) {
10
- super();
11
- this.nextBeat = null;
12
- this.deadline = null;
13
- this.keepAlive = () => {
14
- if (this.deadline) {
15
- clearTimeout(this.deadline);
16
- this.deadline = null;
17
- this.start();
18
- }
19
- };
20
- this.start = (immediate = false) => {
21
- this.stop();
22
- if (immediate) {
23
- this.beat();
24
- }
25
- else {
26
- this.nextBeat = setTimeout(this.beat, this._interval);
27
- }
28
- };
29
- this.stop = () => {
30
- if (this.nextBeat) {
31
- clearTimeout(this.nextBeat);
32
- }
33
- if (this.deadline) {
34
- clearTimeout(this.deadline);
35
- }
36
- };
37
- this.beat = async () => {
38
- this.emit('beat');
39
- this.deadline = setTimeout(this.onDeadline, this.deadlineLength);
40
- };
41
- this.onDeadline = () => {
42
- this.deadline = null;
43
- this.emit('missed');
44
- };
45
- /**
46
- * Only takes affect after the next beat
47
- */
48
- this.setInterval = (interval) => {
49
- this._interval = interval;
50
- };
51
- this._interval = interval;
52
- this.deadlineLength = deadlineLength;
53
- if (typeof window !== 'undefined' && restartOnTabFocus) {
54
- window.addEventListener('pageshow', () => this.start(true));
55
- document.addEventListener('visibilitychange', () => {
56
- if (document.visibilityState === 'visible') {
57
- this.start(true);
58
- }
59
- });
60
- }
61
- }
62
- }
63
- exports.Heartbeat = Heartbeat;
64
- //# sourceMappingURL=Heartbeat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Heartbeat.js","sourceRoot":"","sources":["../../../src/sync/Heartbeat.ts"],"names":[],"mappings":";;;AAAA,gDAAsD;AAEtD,MAAa,SAAU,SAAQ,wBAG7B;IAMD,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,YAAY,EACX,QAAQ,GAAG,EAAE,GAAG,IAAI,EACpB,cAAc,GAAG,CAAC,GAAG,IAAI,EACzB,iBAAiB,GAAG,IAAI,MAKrB,EAAE;QACL,KAAK,EAAE,CAAC;QAhBD,aAAQ,GAA0B,IAAI,CAAC;QACvC,aAAQ,GAA0B,IAAI,CAAC;QA4B/C,cAAS,GAAG,GAAG,EAAE;YAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,KAAK,EAAE,CAAC;aACb;QACF,CAAC,CAAC;QAEF,UAAK,GAAG,CAAC,SAAS,GAAG,KAAK,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,SAAS,EAAE;gBACd,IAAI,CAAC,IAAI,EAAE,CAAC;aACZ;iBAAM;gBACN,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aACtD;QACF,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACX,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5B;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5B;QACF,CAAC,CAAC;QAEM,SAAI,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClE,CAAC,CAAC;QAEM,eAAU,GAAG,GAAG,EAAE;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF;;WAEG;QACH,gBAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,CAAC,CAAC;QArDD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,iBAAiB,EAAE;YACvD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAClD,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE;oBAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBACjB;YACF,CAAC,CAAC,CAAC;SACH;IACF,CAAC;CA4CD;AA7ED,8BA6EC"}
@@ -1,55 +0,0 @@
1
- import { ServerMessage, EventSubscriber } from '@verdant-web/common';
2
- import type { UserInfo } from '../index.js';
3
- import { LocalReplicaInfo, LocalReplicaStore } from '../metadata/LocalReplicaStore.js';
4
- export declare const HANDLE_MESSAGE: unique symbol;
5
- export declare class PresenceManager<Profile = any, Presence = any> extends EventSubscriber<{
6
- /**
7
- * Fired when a particular peer's presence changes
8
- */
9
- peerChanged: (userId: string, presence: UserInfo<Profile, Presence>) => void;
10
- /**
11
- * Fired immediately when a change to local presence is made. This change may not
12
- * yet have been sent to the server (see: "update" event)
13
- */
14
- selfChanged: (presence: UserInfo<Profile, Presence>) => void;
15
- /** Fired when any number of peer presences have changed */
16
- peersChanged: (peers: Record<string, UserInfo<Profile, Presence>>) => void;
17
- /** Fired when a peer presence goes offline */
18
- peerLeft: (userId: string, lastPresence: UserInfo<Profile, Presence>) => void;
19
- /** Fired after local presence changes are flushed to the server. */
20
- update: (presence: Partial<Presence>) => void;
21
- load: () => void;
22
- }> {
23
- private _peers;
24
- private _self;
25
- private _selfReplicaIds;
26
- private _peerIds;
27
- private _updateBatcher;
28
- private _updateBatch;
29
- get self(): UserInfo<Profile, Presence>;
30
- get peers(): Record<string, UserInfo<Profile, Presence>>;
31
- get peerIds(): string[];
32
- get everyone(): {
33
- [x: string]: UserInfo<Profile, Presence>;
34
- };
35
- get selfReplicaIds(): Set<string>;
36
- constructor({ initialPresence, updateBatchTimeout, defaultProfile, replicaStore, }: {
37
- initialPresence: Presence;
38
- defaultProfile: Profile;
39
- updateBatchTimeout?: number;
40
- replicaStore: LocalReplicaStore;
41
- });
42
- /**
43
- * Decides if an update is for the local user or not. Even if it's a different replica
44
- * than the local one.
45
- *
46
- * If the replicaId matches, we use that first - we may not know the local replica's User ID yet,
47
- * e.g. on the first presence update.
48
- *
49
- * Otherwise, match the user ID to our local copy.
50
- */
51
- private isSelf;
52
- [HANDLE_MESSAGE]: (localReplicaInfo: LocalReplicaInfo, message: ServerMessage) => Promise<void>;
53
- update: (presence: Partial<Presence>) => Promise<void>;
54
- flushPresenceUpdates: (presenceUpdates: Partial<Presence>[]) => void;
55
- }
@@ -1,126 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.PresenceManager = exports.HANDLE_MESSAGE = void 0;
5
- const common_1 = require("@verdant-web/common");
6
- exports.HANDLE_MESSAGE = Symbol('handleMessage');
7
- class PresenceManager extends common_1.EventSubscriber {
8
- get self() {
9
- return this._self;
10
- }
11
- get peers() {
12
- return this._peers;
13
- }
14
- get peerIds() {
15
- return this._peerIds;
16
- }
17
- get everyone() {
18
- const everyone = Object.assign({}, this._peers);
19
- everyone[this.self.id] = this.self;
20
- return everyone;
21
- }
22
- get selfReplicaIds() {
23
- return this._selfReplicaIds;
24
- }
25
- constructor({ initialPresence, updateBatchTimeout = 200, defaultProfile, replicaStore, }) {
26
- super();
27
- this._peers = {};
28
- this._self = { profile: {} };
29
- // keep track of own replica IDs - applications may care if we're "alone" but with multiple devices.
30
- this._selfReplicaIds = new Set();
31
- this._peerIds = new Array();
32
- /**
33
- * Decides if an update is for the local user or not. Even if it's a different replica
34
- * than the local one.
35
- *
36
- * If the replicaId matches, we use that first - we may not know the local replica's User ID yet,
37
- * e.g. on the first presence update.
38
- *
39
- * Otherwise, match the user ID to our local copy.
40
- */
41
- this.isSelf = (localReplicaInfo, userInfo) => {
42
- return (localReplicaInfo.id === userInfo.replicaId ||
43
- this._selfReplicaIds.has(userInfo.replicaId) ||
44
- this._self.id === userInfo.id);
45
- };
46
- this[_a] = async (localReplicaInfo, message) => {
47
- let peersChanged = false;
48
- const peerIdsSet = new Set(this.peerIds);
49
- if (message.type === 'presence-changed') {
50
- if (this.isSelf(localReplicaInfo, message.userInfo)) {
51
- this._self = message.userInfo;
52
- this._selfReplicaIds.add(message.userInfo.replicaId);
53
- this.emit('selfChanged', message.userInfo);
54
- }
55
- else {
56
- peerIdsSet.add(message.userInfo.id);
57
- this._peers[message.userInfo.id] = message.userInfo;
58
- peersChanged = true;
59
- this.emit('peerChanged', message.userInfo.id, message.userInfo);
60
- }
61
- }
62
- else if (message.type === 'sync-resp') {
63
- // reset to provided presence data, which includes all peers.
64
- this._peers = {};
65
- peerIdsSet.clear();
66
- for (const [id, userInfo] of Object.entries(message.peerPresence)) {
67
- if (this.isSelf(localReplicaInfo, userInfo)) {
68
- this._self = userInfo;
69
- this._selfReplicaIds.add(userInfo.replicaId);
70
- this.emit('selfChanged', userInfo);
71
- }
72
- else {
73
- peersChanged = true;
74
- peerIdsSet.add(id);
75
- this._peers[id] = userInfo;
76
- this.emit('peerChanged', id, userInfo);
77
- }
78
- }
79
- }
80
- else if (message.type === 'presence-offline') {
81
- peerIdsSet.delete(message.userId);
82
- this._selfReplicaIds.delete(message.replicaId);
83
- const lastPresence = this._peers[message.userId];
84
- delete this._peers[message.userId];
85
- peersChanged = true;
86
- this.emit('peerLeft', message.userId, lastPresence);
87
- }
88
- if (peersChanged) {
89
- this._peerIds = Array.from(peerIdsSet);
90
- this.emit('peersChanged', this._peers);
91
- }
92
- };
93
- this.update = async (presence) => {
94
- this._updateBatch.update({
95
- items: [presence],
96
- });
97
- // proactively update the local presence
98
- this.self.presence = Object.assign(Object.assign({}, this.self.presence), presence);
99
- this.emit('selfChanged', this.self);
100
- };
101
- this.flushPresenceUpdates = (presenceUpdates) => {
102
- const presence = presenceUpdates.reduce((acc, update) => {
103
- return Object.assign(Object.assign({}, acc), update);
104
- }, this.self.presence);
105
- this.emit('update', presence);
106
- };
107
- this.self.presence = initialPresence;
108
- this.self.profile = defaultProfile;
109
- this.self.id = '';
110
- this.self.replicaId = '';
111
- // set the local replica ID as soon as it's loaded
112
- replicaStore.get().then((info) => {
113
- this.self.replicaId = info.id;
114
- });
115
- this._updateBatcher = new common_1.Batcher(this.flushPresenceUpdates);
116
- this._updateBatch = this._updateBatcher.add({
117
- max: 25,
118
- timeout: updateBatchTimeout,
119
- items: [],
120
- key: 'default',
121
- });
122
- }
123
- }
124
- exports.PresenceManager = PresenceManager;
125
- _a = exports.HANDLE_MESSAGE;
126
- //# sourceMappingURL=PresenceManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PresenceManager.js","sourceRoot":"","sources":["../../../src/sync/PresenceManager.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { ClientMessage, EventSubscriber } from '@verdant-web/common';
2
- import { Metadata } from '../metadata/Metadata.js';
3
- import { PresenceManager } from './PresenceManager.js';
4
- import { ServerSyncEndpointProvider } from './ServerSyncEndpointProvider.js';
5
- import { SyncTransport, SyncTransportEvents } from './Sync.js';
6
- export declare class PushPullSync extends EventSubscriber<SyncTransportEvents> implements SyncTransport {
7
- readonly meta: Metadata;
8
- readonly presence: PresenceManager;
9
- private endpointProvider;
10
- private heartbeat;
11
- private fetch;
12
- readonly mode = "pull";
13
- private log;
14
- private _isConnected;
15
- private _status;
16
- private _hasSynced;
17
- constructor({ endpointProvider, meta, presence, interval, log, fetch, }: {
18
- endpointProvider: ServerSyncEndpointProvider;
19
- meta: Metadata;
20
- presence: PresenceManager;
21
- interval?: number;
22
- log?: (...args: any[]) => any;
23
- fetch?: typeof window.fetch;
24
- });
25
- setInterval: (interval: number) => void;
26
- get interval(): number;
27
- private sendRequest;
28
- private handleServerMessage;
29
- send: (message: ClientMessage) => Promise<void> | undefined;
30
- start(): void;
31
- stop(): void;
32
- destroy: () => void;
33
- reconnect(): void;
34
- ignoreIncoming(): void;
35
- private onHeartbeat;
36
- private onHeartbeatMissed;
37
- get isConnected(): boolean;
38
- get status(): "active" | "paused";
39
- }