@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.
Files changed (569) hide show
  1. package/dist/cjs/BackoffScheduler.d.ts +19 -19
  2. package/dist/cjs/BackoffScheduler.js +44 -44
  3. package/dist/cjs/DocumentManager.d.ts +28 -28
  4. package/dist/cjs/DocumentManager.js +44 -44
  5. package/dist/cjs/IDBService.d.ts +9 -9
  6. package/dist/cjs/IDBService.js +46 -46
  7. package/dist/cjs/UndoHistory.d.ts +16 -16
  8. package/dist/cjs/UndoHistory.js +50 -50
  9. package/dist/cjs/__tests__/batching.test.d.ts +1 -1
  10. package/dist/cjs/__tests__/batching.test.js +44 -44
  11. package/dist/cjs/__tests__/documents.test.d.ts +1 -1
  12. package/dist/cjs/__tests__/documents.test.js +398 -398
  13. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +118 -118
  14. package/dist/cjs/__tests__/fixtures/testStorage.js +115 -115
  15. package/dist/cjs/__tests__/queries.test.d.ts +1 -1
  16. package/dist/cjs/__tests__/queries.test.js +262 -262
  17. package/dist/cjs/__tests__/setup/indexedDB.d.ts +1 -1
  18. package/dist/cjs/__tests__/setup/indexedDB.js +3 -3
  19. package/dist/cjs/__tests__/undo.test.d.ts +1 -1
  20. package/dist/cjs/__tests__/undo.test.js +86 -86
  21. package/dist/cjs/client/Client.d.ts +86 -86
  22. package/dist/cjs/client/Client.js +226 -226
  23. package/dist/cjs/client/ClientDescriptor.d.ts +62 -62
  24. package/dist/cjs/client/ClientDescriptor.js +108 -108
  25. package/dist/cjs/constants.d.ts +1 -1
  26. package/dist/cjs/constants.js +4 -4
  27. package/dist/cjs/context.d.ts +17 -17
  28. package/dist/cjs/context.js +2 -2
  29. package/dist/cjs/files/EntityFile.d.ts +27 -27
  30. package/dist/cjs/files/EntityFile.js +71 -71
  31. package/dist/cjs/files/FileManager.d.ts +42 -42
  32. package/dist/cjs/files/FileManager.js +145 -145
  33. package/dist/cjs/files/FileStorage.d.ts +27 -27
  34. package/dist/cjs/files/FileStorage.js +93 -93
  35. package/dist/cjs/files/utils.d.ts +8 -8
  36. package/dist/cjs/files/utils.js +55 -55
  37. package/dist/cjs/files/utils.test.d.ts +1 -1
  38. package/dist/cjs/files/utils.test.js +80 -80
  39. package/dist/cjs/idb.d.ts +8 -8
  40. package/dist/cjs/idb.js +87 -87
  41. package/dist/cjs/index.d.ts +19 -19
  42. package/dist/cjs/index.js +20 -20
  43. package/dist/cjs/indexes.d.ts +3 -3
  44. package/dist/cjs/indexes.js +19 -19
  45. package/dist/cjs/metadata/AckInfoStore.d.ts +10 -10
  46. package/dist/cjs/metadata/AckInfoStore.js +25 -25
  47. package/dist/cjs/metadata/BaselinesStore.d.ts +33 -33
  48. package/dist/cjs/metadata/BaselinesStore.js +59 -59
  49. package/dist/cjs/metadata/LocalReplicaStore.d.ts +17 -17
  50. package/dist/cjs/metadata/LocalReplicaStore.js +47 -47
  51. package/dist/cjs/metadata/MessageCreator.d.ts +19 -19
  52. package/dist/cjs/metadata/MessageCreator.js +127 -127
  53. package/dist/cjs/metadata/Metadata.d.ts +106 -106
  54. package/dist/cjs/metadata/Metadata.js +336 -336
  55. package/dist/cjs/metadata/OperationsStore.d.ts +50 -50
  56. package/dist/cjs/metadata/OperationsStore.js +145 -145
  57. package/dist/cjs/metadata/SchemaStore.d.ts +9 -9
  58. package/dist/cjs/metadata/SchemaStore.js +38 -38
  59. package/dist/cjs/metadata/openMetadataDatabase.d.ts +8 -8
  60. package/dist/cjs/metadata/openMetadataDatabase.js +105 -105
  61. package/dist/cjs/openDocumentDatabase.d.ts +12 -12
  62. package/dist/cjs/openDocumentDatabase.js +424 -424
  63. package/dist/cjs/queries2/BaseQuery.d.ts +39 -39
  64. package/dist/cjs/queries2/BaseQuery.js +98 -98
  65. package/dist/cjs/queries2/CollectionQueries.d.ts +55 -55
  66. package/dist/cjs/queries2/CollectionQueries.js +82 -82
  67. package/dist/cjs/queries2/FindAllQuery.d.ts +11 -11
  68. package/dist/cjs/queries2/FindAllQuery.js +33 -33
  69. package/dist/cjs/queries2/FindInfiniteQuery.d.ts +18 -18
  70. package/dist/cjs/queries2/FindInfiniteQuery.js +60 -60
  71. package/dist/cjs/queries2/FindOneQuery.d.ts +11 -11
  72. package/dist/cjs/queries2/FindOneQuery.js +33 -33
  73. package/dist/cjs/queries2/FindPageQuery.d.ts +23 -23
  74. package/dist/cjs/queries2/FindPageQuery.js +67 -67
  75. package/dist/cjs/queries2/GetQuery.d.ts +10 -10
  76. package/dist/cjs/queries2/GetQuery.js +29 -29
  77. package/dist/cjs/queries2/QueryCache.d.ts +16 -16
  78. package/dist/cjs/queries2/QueryCache.js +39 -39
  79. package/dist/cjs/queries2/dbQueries.d.ts +22 -22
  80. package/dist/cjs/queries2/dbQueries.js +125 -125
  81. package/dist/cjs/queries2/keys.d.ts +10 -10
  82. package/dist/cjs/queries2/keys.js +33 -33
  83. package/dist/cjs/queries2/ranges.d.ts +2 -2
  84. package/dist/cjs/queries2/ranges.js +69 -69
  85. package/dist/cjs/queries2/types.d.ts +6 -6
  86. package/dist/cjs/queries2/types.js +2 -2
  87. package/dist/cjs/queries2/utils.d.ts +1 -1
  88. package/dist/cjs/queries2/utils.js +19 -19
  89. package/dist/cjs/reactives/DocumentFamiliyCache.d.ts +51 -47
  90. package/dist/cjs/reactives/DocumentFamiliyCache.js +214 -210
  91. package/dist/cjs/reactives/DocumentFamiliyCache.js.map +1 -1
  92. package/dist/cjs/reactives/Entity.d.ts +192 -191
  93. package/dist/cjs/reactives/Entity.js +466 -462
  94. package/dist/cjs/reactives/Entity.js.map +1 -1
  95. package/dist/cjs/reactives/EntityStore.d.ts +84 -84
  96. package/dist/cjs/reactives/EntityStore.js +425 -421
  97. package/dist/cjs/reactives/EntityStore.js.map +1 -1
  98. package/dist/cjs/reactives/FakeWeakRef.d.ts +11 -11
  99. package/dist/cjs/reactives/FakeWeakRef.js +18 -18
  100. package/dist/cjs/sync/FileSync.d.ts +23 -23
  101. package/dist/cjs/sync/FileSync.js +84 -84
  102. package/dist/cjs/sync/Heartbeat.d.ts +24 -24
  103. package/dist/cjs/sync/Heartbeat.js +55 -55
  104. package/dist/cjs/sync/PresenceManager.d.ts +41 -41
  105. package/dist/cjs/sync/PresenceManager.js +107 -107
  106. package/dist/cjs/sync/PushPullSync.d.ts +36 -36
  107. package/dist/cjs/sync/PushPullSync.js +141 -141
  108. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +27 -27
  109. package/dist/cjs/sync/ServerSyncEndpointProvider.js +64 -64
  110. package/dist/cjs/sync/Sync.d.ts +127 -127
  111. package/dist/cjs/sync/Sync.js +244 -244
  112. package/dist/cjs/sync/WebSocketSync.d.ts +41 -41
  113. package/dist/cjs/sync/WebSocketSync.js +183 -183
  114. package/dist/cjs/types.d.ts +5 -5
  115. package/dist/cjs/types.js +2 -2
  116. package/dist/cjs/utils/Disposable.d.ts +6 -6
  117. package/dist/cjs/utils/Disposable.js +18 -18
  118. package/dist/cjs/utils/Resolvable.d.ts +8 -8
  119. package/dist/cjs/utils/Resolvable.js +22 -22
  120. package/dist/esm/BackoffScheduler.d.ts +19 -19
  121. package/dist/esm/BackoffScheduler.js +39 -39
  122. package/dist/esm/DocumentManager.d.ts +28 -28
  123. package/dist/esm/DocumentManager.js +40 -40
  124. package/dist/esm/IDBService.d.ts +9 -9
  125. package/dist/esm/IDBService.js +42 -42
  126. package/dist/esm/UndoHistory.d.ts +16 -16
  127. package/dist/esm/UndoHistory.js +46 -46
  128. package/dist/esm/__tests__/batching.test.d.ts +1 -1
  129. package/dist/esm/__tests__/batching.test.js +42 -42
  130. package/dist/esm/__tests__/documents.test.d.ts +1 -1
  131. package/dist/esm/__tests__/documents.test.js +396 -396
  132. package/dist/esm/__tests__/fixtures/testStorage.d.ts +118 -118
  133. package/dist/esm/__tests__/fixtures/testStorage.js +111 -111
  134. package/dist/esm/__tests__/queries.test.d.ts +1 -1
  135. package/dist/esm/__tests__/queries.test.js +260 -260
  136. package/dist/esm/__tests__/setup/indexedDB.d.ts +1 -1
  137. package/dist/esm/__tests__/setup/indexedDB.js +1 -1
  138. package/dist/esm/__tests__/undo.test.d.ts +1 -1
  139. package/dist/esm/__tests__/undo.test.js +84 -84
  140. package/dist/esm/client/Client.d.ts +86 -86
  141. package/dist/esm/client/Client.js +222 -222
  142. package/dist/esm/client/ClientDescriptor.d.ts +62 -62
  143. package/dist/esm/client/ClientDescriptor.js +104 -104
  144. package/dist/esm/constants.d.ts +1 -1
  145. package/dist/esm/constants.js +1 -1
  146. package/dist/esm/context.d.ts +17 -17
  147. package/dist/esm/context.js +1 -1
  148. package/dist/esm/files/EntityFile.d.ts +27 -27
  149. package/dist/esm/files/EntityFile.js +67 -67
  150. package/dist/esm/files/FileManager.d.ts +42 -42
  151. package/dist/esm/files/FileManager.js +141 -141
  152. package/dist/esm/files/FileStorage.d.ts +27 -27
  153. package/dist/esm/files/FileStorage.js +88 -88
  154. package/dist/esm/files/utils.d.ts +8 -8
  155. package/dist/esm/files/utils.js +46 -46
  156. package/dist/esm/files/utils.test.d.ts +1 -1
  157. package/dist/esm/files/utils.test.js +78 -78
  158. package/dist/esm/idb.d.ts +8 -8
  159. package/dist/esm/idb.js +79 -79
  160. package/dist/esm/index.d.ts +19 -19
  161. package/dist/esm/index.js +11 -11
  162. package/dist/esm/indexes.d.ts +3 -3
  163. package/dist/esm/indexes.js +14 -14
  164. package/dist/esm/metadata/AckInfoStore.d.ts +10 -10
  165. package/dist/esm/metadata/AckInfoStore.js +21 -21
  166. package/dist/esm/metadata/BaselinesStore.d.ts +33 -33
  167. package/dist/esm/metadata/BaselinesStore.js +55 -55
  168. package/dist/esm/metadata/LocalReplicaStore.d.ts +17 -17
  169. package/dist/esm/metadata/LocalReplicaStore.js +40 -40
  170. package/dist/esm/metadata/MessageCreator.d.ts +19 -19
  171. package/dist/esm/metadata/MessageCreator.js +123 -123
  172. package/dist/esm/metadata/Metadata.d.ts +106 -106
  173. package/dist/esm/metadata/Metadata.js +332 -332
  174. package/dist/esm/metadata/OperationsStore.d.ts +50 -50
  175. package/dist/esm/metadata/OperationsStore.js +141 -141
  176. package/dist/esm/metadata/SchemaStore.d.ts +9 -9
  177. package/dist/esm/metadata/SchemaStore.js +34 -34
  178. package/dist/esm/metadata/openMetadataDatabase.d.ts +8 -8
  179. package/dist/esm/metadata/openMetadataDatabase.js +101 -101
  180. package/dist/esm/openDocumentDatabase.d.ts +12 -12
  181. package/dist/esm/openDocumentDatabase.js +420 -420
  182. package/dist/esm/queries2/BaseQuery.d.ts +39 -39
  183. package/dist/esm/queries2/BaseQuery.js +94 -94
  184. package/dist/esm/queries2/CollectionQueries.d.ts +55 -55
  185. package/dist/esm/queries2/CollectionQueries.js +78 -78
  186. package/dist/esm/queries2/FindAllQuery.d.ts +11 -11
  187. package/dist/esm/queries2/FindAllQuery.js +29 -29
  188. package/dist/esm/queries2/FindInfiniteQuery.d.ts +18 -18
  189. package/dist/esm/queries2/FindInfiniteQuery.js +56 -56
  190. package/dist/esm/queries2/FindOneQuery.d.ts +11 -11
  191. package/dist/esm/queries2/FindOneQuery.js +29 -29
  192. package/dist/esm/queries2/FindPageQuery.d.ts +23 -23
  193. package/dist/esm/queries2/FindPageQuery.js +63 -63
  194. package/dist/esm/queries2/GetQuery.d.ts +10 -10
  195. package/dist/esm/queries2/GetQuery.js +25 -25
  196. package/dist/esm/queries2/QueryCache.d.ts +16 -16
  197. package/dist/esm/queries2/QueryCache.js +35 -35
  198. package/dist/esm/queries2/dbQueries.d.ts +22 -22
  199. package/dist/esm/queries2/dbQueries.js +119 -119
  200. package/dist/esm/queries2/keys.d.ts +10 -10
  201. package/dist/esm/queries2/keys.js +29 -29
  202. package/dist/esm/queries2/ranges.d.ts +2 -2
  203. package/dist/esm/queries2/ranges.js +65 -65
  204. package/dist/esm/queries2/types.d.ts +6 -6
  205. package/dist/esm/queries2/types.js +1 -1
  206. package/dist/esm/queries2/utils.d.ts +1 -1
  207. package/dist/esm/queries2/utils.js +15 -15
  208. package/dist/esm/reactives/DocumentFamiliyCache.d.ts +51 -47
  209. package/dist/esm/reactives/DocumentFamiliyCache.js +210 -206
  210. package/dist/esm/reactives/DocumentFamiliyCache.js.map +1 -1
  211. package/dist/esm/reactives/Entity.d.ts +192 -191
  212. package/dist/esm/reactives/Entity.js +461 -457
  213. package/dist/esm/reactives/Entity.js.map +1 -1
  214. package/dist/esm/reactives/EntityStore.d.ts +84 -84
  215. package/dist/esm/reactives/EntityStore.js +421 -417
  216. package/dist/esm/reactives/EntityStore.js.map +1 -1
  217. package/dist/esm/reactives/FakeWeakRef.d.ts +11 -11
  218. package/dist/esm/reactives/FakeWeakRef.js +14 -14
  219. package/dist/esm/sync/FileSync.d.ts +23 -23
  220. package/dist/esm/sync/FileSync.js +80 -80
  221. package/dist/esm/sync/Heartbeat.d.ts +24 -24
  222. package/dist/esm/sync/Heartbeat.js +51 -51
  223. package/dist/esm/sync/PresenceManager.d.ts +41 -41
  224. package/dist/esm/sync/PresenceManager.js +103 -103
  225. package/dist/esm/sync/PushPullSync.d.ts +36 -36
  226. package/dist/esm/sync/PushPullSync.js +137 -137
  227. package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +27 -27
  228. package/dist/esm/sync/ServerSyncEndpointProvider.js +57 -57
  229. package/dist/esm/sync/Sync.d.ts +127 -127
  230. package/dist/esm/sync/Sync.js +239 -239
  231. package/dist/esm/sync/{WebsocketSync.d.ts → WebSocketSync.d.ts} +41 -41
  232. package/dist/esm/sync/{WebsocketSync.js → WebSocketSync.js} +179 -179
  233. package/dist/esm/types.d.ts +5 -5
  234. package/dist/esm/types.js +1 -1
  235. package/dist/esm/utils/Disposable.d.ts +6 -6
  236. package/dist/esm/utils/Disposable.js +14 -14
  237. package/dist/esm/utils/Resolvable.d.ts +8 -8
  238. package/dist/esm/utils/Resolvable.js +18 -18
  239. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  240. package/dist/tsconfig.tsbuildinfo +1 -1
  241. package/package.json +2 -2
  242. package/src/reactives/DocumentFamiliyCache.ts +4 -0
  243. package/src/reactives/Entity.ts +8 -1
  244. package/src/reactives/EntityStore.ts +18 -13
  245. package/dist/cjs/AckInfoStore.d.ts +0 -10
  246. package/dist/cjs/AckInfoStore.js +0 -26
  247. package/dist/cjs/AckInfoStore.js.map +0 -1
  248. package/dist/cjs/BaselinesStore.d.ts +0 -10
  249. package/dist/cjs/BaselinesStore.js +0 -36
  250. package/dist/cjs/BaselinesStore.js.map +0 -1
  251. package/dist/cjs/Entity.d.ts +0 -96
  252. package/dist/cjs/Entity.js +0 -345
  253. package/dist/cjs/Entity.js.map +0 -1
  254. package/dist/cjs/EntityStore.d.ts +0 -36
  255. package/dist/cjs/EntityStore.js +0 -172
  256. package/dist/cjs/EntityStore.js.map +0 -1
  257. package/dist/cjs/LocalHistoryStore.d.ts +0 -15
  258. package/dist/cjs/LocalHistoryStore.js +0 -53
  259. package/dist/cjs/LocalHistoryStore.js.map +0 -1
  260. package/dist/cjs/LocalReplicaStore.d.ts +0 -13
  261. package/dist/cjs/LocalReplicaStore.js +0 -49
  262. package/dist/cjs/LocalReplicaStore.js.map +0 -1
  263. package/dist/cjs/MessageCreator.d.ts +0 -19
  264. package/dist/cjs/MessageCreator.js +0 -104
  265. package/dist/cjs/MessageCreator.js.map +0 -1
  266. package/dist/cjs/Metadata.d.ts +0 -91
  267. package/dist/cjs/Metadata.js +0 -250
  268. package/dist/cjs/Metadata.js.map +0 -1
  269. package/dist/cjs/OperationsStore.d.ts +0 -38
  270. package/dist/cjs/OperationsStore.js +0 -146
  271. package/dist/cjs/OperationsStore.js.map +0 -1
  272. package/dist/cjs/PresenceManager.d.ts +0 -30
  273. package/dist/cjs/PresenceManager.js +0 -89
  274. package/dist/cjs/PresenceManager.js.map +0 -1
  275. package/dist/cjs/Query.d.ts +0 -26
  276. package/dist/cjs/Query.js +0 -86
  277. package/dist/cjs/Query.js.map +0 -1
  278. package/dist/cjs/QueryMaker.d.ts +0 -18
  279. package/dist/cjs/QueryMaker.js +0 -98
  280. package/dist/cjs/QueryMaker.js.map +0 -1
  281. package/dist/cjs/QueryStore.d.ts +0 -38
  282. package/dist/cjs/QueryStore.js +0 -146
  283. package/dist/cjs/QueryStore.js.map +0 -1
  284. package/dist/cjs/SchemaStore.d.ts +0 -9
  285. package/dist/cjs/SchemaStore.js +0 -35
  286. package/dist/cjs/SchemaStore.js.map +0 -1
  287. package/dist/cjs/Storage.d.ts +0 -147
  288. package/dist/cjs/Storage.js +0 -346
  289. package/dist/cjs/Storage.js.map +0 -1
  290. package/dist/cjs/Sync.d.ts +0 -117
  291. package/dist/cjs/Sync.js +0 -561
  292. package/dist/cjs/Sync.js.map +0 -1
  293. package/dist/cjs/SyncHarness.d.ts +0 -45
  294. package/dist/cjs/SyncHarness.js +0 -110
  295. package/dist/cjs/SyncHarness.js.map +0 -1
  296. package/dist/cjs/metadata/LocalHistoryStore.d.ts +0 -15
  297. package/dist/cjs/metadata/LocalHistoryStore.js +0 -53
  298. package/dist/cjs/metadata/LocalHistoryStore.js.map +0 -1
  299. package/dist/cjs/queries/LiveQuery.d.ts +0 -28
  300. package/dist/cjs/queries/LiveQuery.js +0 -96
  301. package/dist/cjs/queries/LiveQuery.js.map +0 -1
  302. package/dist/cjs/queries/LiveQueryMaker.d.ts +0 -15
  303. package/dist/cjs/queries/LiveQueryMaker.js +0 -42
  304. package/dist/cjs/queries/LiveQueryMaker.js.map +0 -1
  305. package/dist/cjs/queries/LiveQueryStore.d.ts +0 -33
  306. package/dist/cjs/queries/LiveQueryStore.js +0 -85
  307. package/dist/cjs/queries/LiveQueryStore.js.map +0 -1
  308. package/dist/cjs/queries/Query.d.ts +0 -18
  309. package/dist/cjs/queries/Query.js +0 -36
  310. package/dist/cjs/queries/Query.js.map +0 -1
  311. package/dist/cjs/queries/QueryMaker.d.ts +0 -14
  312. package/dist/cjs/queries/QueryMaker.js +0 -42
  313. package/dist/cjs/queries/QueryMaker.js.map +0 -1
  314. package/dist/cjs/queries/QueryStore.d.ts +0 -35
  315. package/dist/cjs/queries/QueryStore.js +0 -130
  316. package/dist/cjs/queries/QueryStore.js.map +0 -1
  317. package/dist/cjs/queries/ranges.d.ts +0 -2
  318. package/dist/cjs/queries/ranges.js +0 -70
  319. package/dist/cjs/queries/ranges.js.map +0 -1
  320. package/dist/cjs/v2/AckInfoStore.d.ts +0 -10
  321. package/dist/cjs/v2/AckInfoStore.js +0 -26
  322. package/dist/cjs/v2/AckInfoStore.js.map +0 -1
  323. package/dist/cjs/v2/BaselinesStore.d.ts +0 -10
  324. package/dist/cjs/v2/BaselinesStore.js +0 -36
  325. package/dist/cjs/v2/BaselinesStore.js.map +0 -1
  326. package/dist/cjs/v2/DocumentManager.d.ts +0 -19
  327. package/dist/cjs/v2/DocumentManager.js +0 -47
  328. package/dist/cjs/v2/DocumentManager.js.map +0 -1
  329. package/dist/cjs/v2/Entity.d.ts +0 -87
  330. package/dist/cjs/v2/Entity.js +0 -305
  331. package/dist/cjs/v2/Entity.js.map +0 -1
  332. package/dist/cjs/v2/EntityStore.d.ts +0 -37
  333. package/dist/cjs/v2/EntityStore.js +0 -165
  334. package/dist/cjs/v2/EntityStore.js.map +0 -1
  335. package/dist/cjs/v2/IDBService.d.ts +0 -7
  336. package/dist/cjs/v2/IDBService.js +0 -26
  337. package/dist/cjs/v2/IDBService.js.map +0 -1
  338. package/dist/cjs/v2/LocalHistoryStore.d.ts +0 -15
  339. package/dist/cjs/v2/LocalHistoryStore.js +0 -53
  340. package/dist/cjs/v2/LocalHistoryStore.js.map +0 -1
  341. package/dist/cjs/v2/LocalReplicaStore.d.ts +0 -14
  342. package/dist/cjs/v2/LocalReplicaStore.js +0 -49
  343. package/dist/cjs/v2/LocalReplicaStore.js.map +0 -1
  344. package/dist/cjs/v2/MessageCreator.d.ts +0 -19
  345. package/dist/cjs/v2/MessageCreator.js +0 -99
  346. package/dist/cjs/v2/MessageCreator.js.map +0 -1
  347. package/dist/cjs/v2/Metadata.d.ts +0 -90
  348. package/dist/cjs/v2/Metadata.js +0 -251
  349. package/dist/cjs/v2/Metadata.js.map +0 -1
  350. package/dist/cjs/v2/OperationsStore.d.ts +0 -38
  351. package/dist/cjs/v2/OperationsStore.js +0 -146
  352. package/dist/cjs/v2/OperationsStore.js.map +0 -1
  353. package/dist/cjs/v2/PresenceManager.d.ts +0 -24
  354. package/dist/cjs/v2/PresenceManager.js +0 -73
  355. package/dist/cjs/v2/PresenceManager.js.map +0 -1
  356. package/dist/cjs/v2/Query.d.ts +0 -24
  357. package/dist/cjs/v2/Query.js +0 -79
  358. package/dist/cjs/v2/Query.js.map +0 -1
  359. package/dist/cjs/v2/QueryMaker.d.ts +0 -16
  360. package/dist/cjs/v2/QueryMaker.js +0 -84
  361. package/dist/cjs/v2/QueryMaker.js.map +0 -1
  362. package/dist/cjs/v2/QueryStore.d.ts +0 -26
  363. package/dist/cjs/v2/QueryStore.js +0 -136
  364. package/dist/cjs/v2/QueryStore.js.map +0 -1
  365. package/dist/cjs/v2/SchemaStore.d.ts +0 -9
  366. package/dist/cjs/v2/SchemaStore.js +0 -35
  367. package/dist/cjs/v2/SchemaStore.js.map +0 -1
  368. package/dist/cjs/v2/Storage.d.ts +0 -80
  369. package/dist/cjs/v2/Storage.js +0 -154
  370. package/dist/cjs/v2/Storage.js.map +0 -1
  371. package/dist/cjs/v2/Sync.d.ts +0 -42
  372. package/dist/cjs/v2/Sync.js +0 -98
  373. package/dist/cjs/v2/Sync.js.map +0 -1
  374. package/dist/cjs/v2/SyncHarness.d.ts +0 -45
  375. package/dist/cjs/v2/SyncHarness.js +0 -110
  376. package/dist/cjs/v2/SyncHarness.js.map +0 -1
  377. package/dist/cjs/v2/__tests__/documents.test.d.ts +0 -1
  378. package/dist/cjs/v2/__tests__/documents.test.js +0 -185
  379. package/dist/cjs/v2/__tests__/documents.test.js.map +0 -1
  380. package/dist/cjs/v2/__tests__/fixtures/testStorage.d.ts +0 -189
  381. package/dist/cjs/v2/__tests__/fixtures/testStorage.js +0 -93
  382. package/dist/cjs/v2/__tests__/fixtures/testStorage.js.map +0 -1
  383. package/dist/cjs/v2/__tests__/queries.test.d.ts +0 -1
  384. package/dist/cjs/v2/__tests__/queries.test.js +0 -92
  385. package/dist/cjs/v2/__tests__/queries.test.js.map +0 -1
  386. package/dist/cjs/v2/__tests__/setup/indexedDB.d.ts +0 -1
  387. package/dist/cjs/v2/__tests__/setup/indexedDB.js +0 -4
  388. package/dist/cjs/v2/__tests__/setup/indexedDB.js.map +0 -1
  389. package/dist/cjs/v2/constants.d.ts +0 -1
  390. package/dist/cjs/v2/constants.js +0 -5
  391. package/dist/cjs/v2/constants.js.map +0 -1
  392. package/dist/cjs/v2/idb.d.ts +0 -6
  393. package/dist/cjs/v2/idb.js +0 -71
  394. package/dist/cjs/v2/idb.js.map +0 -1
  395. package/dist/cjs/v2/index.d.ts +0 -6
  396. package/dist/cjs/v2/index.js +0 -14
  397. package/dist/cjs/v2/index.js.map +0 -1
  398. package/dist/cjs/v2/indexes.d.ts +0 -3
  399. package/dist/cjs/v2/indexes.js +0 -20
  400. package/dist/cjs/v2/indexes.js.map +0 -1
  401. package/dist/cjs/v2/openDocumentDatabase.d.ts +0 -9
  402. package/dist/cjs/v2/openDocumentDatabase.js +0 -100
  403. package/dist/cjs/v2/openDocumentDatabase.js.map +0 -1
  404. package/dist/cjs/v2/types.d.ts +0 -3
  405. package/dist/cjs/v2/types.js +0 -3
  406. package/dist/cjs/v2/types.js.map +0 -1
  407. package/dist/esm/AckInfoStore.d.ts +0 -10
  408. package/dist/esm/AckInfoStore.js +0 -22
  409. package/dist/esm/AckInfoStore.js.map +0 -1
  410. package/dist/esm/BaselinesStore.d.ts +0 -10
  411. package/dist/esm/BaselinesStore.js +0 -32
  412. package/dist/esm/BaselinesStore.js.map +0 -1
  413. package/dist/esm/Entity.d.ts +0 -96
  414. package/dist/esm/Entity.js +0 -337
  415. package/dist/esm/Entity.js.map +0 -1
  416. package/dist/esm/EntityStore.d.ts +0 -36
  417. package/dist/esm/EntityStore.js +0 -168
  418. package/dist/esm/EntityStore.js.map +0 -1
  419. package/dist/esm/LocalHistoryStore.d.ts +0 -15
  420. package/dist/esm/LocalHistoryStore.js +0 -49
  421. package/dist/esm/LocalHistoryStore.js.map +0 -1
  422. package/dist/esm/LocalReplicaStore.d.ts +0 -13
  423. package/dist/esm/LocalReplicaStore.js +0 -42
  424. package/dist/esm/LocalReplicaStore.js.map +0 -1
  425. package/dist/esm/MessageCreator.d.ts +0 -19
  426. package/dist/esm/MessageCreator.js +0 -97
  427. package/dist/esm/MessageCreator.js.map +0 -1
  428. package/dist/esm/Metadata.d.ts +0 -91
  429. package/dist/esm/Metadata.js +0 -245
  430. package/dist/esm/Metadata.js.map +0 -1
  431. package/dist/esm/OperationsStore.d.ts +0 -38
  432. package/dist/esm/OperationsStore.js +0 -142
  433. package/dist/esm/OperationsStore.js.map +0 -1
  434. package/dist/esm/PresenceManager.d.ts +0 -30
  435. package/dist/esm/PresenceManager.js +0 -85
  436. package/dist/esm/PresenceManager.js.map +0 -1
  437. package/dist/esm/Query.d.ts +0 -26
  438. package/dist/esm/Query.js +0 -82
  439. package/dist/esm/Query.js.map +0 -1
  440. package/dist/esm/QueryMaker.d.ts +0 -18
  441. package/dist/esm/QueryMaker.js +0 -94
  442. package/dist/esm/QueryMaker.js.map +0 -1
  443. package/dist/esm/QueryStore.d.ts +0 -38
  444. package/dist/esm/QueryStore.js +0 -142
  445. package/dist/esm/QueryStore.js.map +0 -1
  446. package/dist/esm/SchemaStore.d.ts +0 -9
  447. package/dist/esm/SchemaStore.js +0 -31
  448. package/dist/esm/SchemaStore.js.map +0 -1
  449. package/dist/esm/Storage.d.ts +0 -147
  450. package/dist/esm/Storage.js +0 -341
  451. package/dist/esm/Storage.js.map +0 -1
  452. package/dist/esm/Sync.d.ts +0 -117
  453. package/dist/esm/Sync.js +0 -553
  454. package/dist/esm/Sync.js.map +0 -1
  455. package/dist/esm/SyncHarness.d.ts +0 -45
  456. package/dist/esm/SyncHarness.js +0 -105
  457. package/dist/esm/SyncHarness.js.map +0 -1
  458. package/dist/esm/metadata/LocalHistoryStore.d.ts +0 -15
  459. package/dist/esm/metadata/LocalHistoryStore.js +0 -49
  460. package/dist/esm/metadata/LocalHistoryStore.js.map +0 -1
  461. package/dist/esm/queries/LiveQuery.d.ts +0 -28
  462. package/dist/esm/queries/LiveQuery.js +0 -92
  463. package/dist/esm/queries/LiveQuery.js.map +0 -1
  464. package/dist/esm/queries/LiveQueryMaker.d.ts +0 -15
  465. package/dist/esm/queries/LiveQueryMaker.js +0 -38
  466. package/dist/esm/queries/LiveQueryMaker.js.map +0 -1
  467. package/dist/esm/queries/LiveQueryStore.d.ts +0 -33
  468. package/dist/esm/queries/LiveQueryStore.js +0 -81
  469. package/dist/esm/queries/LiveQueryStore.js.map +0 -1
  470. package/dist/esm/queries/Query.d.ts +0 -18
  471. package/dist/esm/queries/Query.js +0 -32
  472. package/dist/esm/queries/Query.js.map +0 -1
  473. package/dist/esm/queries/QueryMaker.d.ts +0 -14
  474. package/dist/esm/queries/QueryMaker.js +0 -38
  475. package/dist/esm/queries/QueryMaker.js.map +0 -1
  476. package/dist/esm/queries/QueryStore.d.ts +0 -35
  477. package/dist/esm/queries/QueryStore.js +0 -126
  478. package/dist/esm/queries/QueryStore.js.map +0 -1
  479. package/dist/esm/queries/ranges.d.ts +0 -2
  480. package/dist/esm/queries/ranges.js +0 -66
  481. package/dist/esm/queries/ranges.js.map +0 -1
  482. package/dist/esm/v2/AckInfoStore.d.ts +0 -10
  483. package/dist/esm/v2/AckInfoStore.js +0 -22
  484. package/dist/esm/v2/AckInfoStore.js.map +0 -1
  485. package/dist/esm/v2/BaselinesStore.d.ts +0 -10
  486. package/dist/esm/v2/BaselinesStore.js +0 -32
  487. package/dist/esm/v2/BaselinesStore.js.map +0 -1
  488. package/dist/esm/v2/DocumentManager.d.ts +0 -19
  489. package/dist/esm/v2/DocumentManager.js +0 -43
  490. package/dist/esm/v2/DocumentManager.js.map +0 -1
  491. package/dist/esm/v2/Entity.d.ts +0 -91
  492. package/dist/esm/v2/Entity.js +0 -305
  493. package/dist/esm/v2/Entity.js.map +0 -1
  494. package/dist/esm/v2/EntityStore.d.ts +0 -37
  495. package/dist/esm/v2/EntityStore.js +0 -166
  496. package/dist/esm/v2/EntityStore.js.map +0 -1
  497. package/dist/esm/v2/IDBService.d.ts +0 -7
  498. package/dist/esm/v2/IDBService.js +0 -22
  499. package/dist/esm/v2/IDBService.js.map +0 -1
  500. package/dist/esm/v2/LocalHistoryStore.d.ts +0 -15
  501. package/dist/esm/v2/LocalHistoryStore.js +0 -49
  502. package/dist/esm/v2/LocalHistoryStore.js.map +0 -1
  503. package/dist/esm/v2/LocalReplicaStore.d.ts +0 -14
  504. package/dist/esm/v2/LocalReplicaStore.js +0 -42
  505. package/dist/esm/v2/LocalReplicaStore.js.map +0 -1
  506. package/dist/esm/v2/MessageCreator.d.ts +0 -19
  507. package/dist/esm/v2/MessageCreator.js +0 -92
  508. package/dist/esm/v2/MessageCreator.js.map +0 -1
  509. package/dist/esm/v2/Metadata.d.ts +0 -90
  510. package/dist/esm/v2/Metadata.js +0 -246
  511. package/dist/esm/v2/Metadata.js.map +0 -1
  512. package/dist/esm/v2/OperationsStore.d.ts +0 -38
  513. package/dist/esm/v2/OperationsStore.js +0 -142
  514. package/dist/esm/v2/OperationsStore.js.map +0 -1
  515. package/dist/esm/v2/PresenceManager.d.ts +0 -24
  516. package/dist/esm/v2/PresenceManager.js +0 -69
  517. package/dist/esm/v2/PresenceManager.js.map +0 -1
  518. package/dist/esm/v2/Query.d.ts +0 -24
  519. package/dist/esm/v2/Query.js +0 -75
  520. package/dist/esm/v2/Query.js.map +0 -1
  521. package/dist/esm/v2/QueryMaker.d.ts +0 -16
  522. package/dist/esm/v2/QueryMaker.js +0 -80
  523. package/dist/esm/v2/QueryMaker.js.map +0 -1
  524. package/dist/esm/v2/QueryStore.d.ts +0 -26
  525. package/dist/esm/v2/QueryStore.js +0 -132
  526. package/dist/esm/v2/QueryStore.js.map +0 -1
  527. package/dist/esm/v2/SchemaStore.d.ts +0 -9
  528. package/dist/esm/v2/SchemaStore.js +0 -31
  529. package/dist/esm/v2/SchemaStore.js.map +0 -1
  530. package/dist/esm/v2/Storage.d.ts +0 -80
  531. package/dist/esm/v2/Storage.js +0 -149
  532. package/dist/esm/v2/Storage.js.map +0 -1
  533. package/dist/esm/v2/Sync.d.ts +0 -42
  534. package/dist/esm/v2/Sync.js +0 -94
  535. package/dist/esm/v2/Sync.js.map +0 -1
  536. package/dist/esm/v2/SyncHarness.d.ts +0 -45
  537. package/dist/esm/v2/SyncHarness.js +0 -105
  538. package/dist/esm/v2/SyncHarness.js.map +0 -1
  539. package/dist/esm/v2/__tests__/documents.test.d.ts +0 -1
  540. package/dist/esm/v2/__tests__/documents.test.js +0 -208
  541. package/dist/esm/v2/__tests__/documents.test.js.map +0 -1
  542. package/dist/esm/v2/__tests__/fixtures/testStorage.d.ts +0 -223
  543. package/dist/esm/v2/__tests__/fixtures/testStorage.js +0 -106
  544. package/dist/esm/v2/__tests__/fixtures/testStorage.js.map +0 -1
  545. package/dist/esm/v2/__tests__/queries.test.d.ts +0 -1
  546. package/dist/esm/v2/__tests__/queries.test.js +0 -90
  547. package/dist/esm/v2/__tests__/queries.test.js.map +0 -1
  548. package/dist/esm/v2/__tests__/setup/indexedDB.d.ts +0 -1
  549. package/dist/esm/v2/__tests__/setup/indexedDB.js +0 -2
  550. package/dist/esm/v2/__tests__/setup/indexedDB.js.map +0 -1
  551. package/dist/esm/v2/constants.d.ts +0 -1
  552. package/dist/esm/v2/constants.js +0 -2
  553. package/dist/esm/v2/constants.js.map +0 -1
  554. package/dist/esm/v2/idb.d.ts +0 -6
  555. package/dist/esm/v2/idb.js +0 -65
  556. package/dist/esm/v2/idb.js.map +0 -1
  557. package/dist/esm/v2/index.d.ts +0 -6
  558. package/dist/esm/v2/index.js +0 -5
  559. package/dist/esm/v2/index.js.map +0 -1
  560. package/dist/esm/v2/indexes.d.ts +0 -3
  561. package/dist/esm/v2/indexes.js +0 -15
  562. package/dist/esm/v2/indexes.js.map +0 -1
  563. package/dist/esm/v2/openDocumentDatabase.d.ts +0 -9
  564. package/dist/esm/v2/openDocumentDatabase.js +0 -96
  565. package/dist/esm/v2/openDocumentDatabase.js.map +0 -1
  566. package/dist/esm/v2/types.d.ts +0 -3
  567. package/dist/esm/v2/types.js +0 -2
  568. package/dist/esm/v2/types.js.map +0 -1
  569. /package/dist/esm/sync/{WebsocketSync.js.map → WebSocketSync.js.map} +0 -0
@@ -1,223 +1,223 @@
1
- import { assert, } from '@verdant-web/common';
2
- import { DocumentManager } from '../DocumentManager.js';
3
- import { FileManager } from '../files/FileManager.js';
4
- import { closeDatabase, getSizeOfObjectStore } from '../idb.js';
5
- import { openDocumentDatabase } from '../openDocumentDatabase.js';
6
- import { EntityStore } from '../reactives/EntityStore.js';
7
- import { NoSync, ServerSync } from '../sync/Sync.js';
8
- import { CollectionQueries } from '../queries2/CollectionQueries.js';
9
- import { QueryCache } from '../queries2/QueryCache.js';
10
- export class Client {
11
- get sync() {
12
- return this._sync;
13
- }
14
- get entities() {
15
- return this._entities;
16
- }
17
- get documentManager() {
18
- return this._documentManager;
19
- }
20
- constructor(config, context, components) {
21
- var _a;
22
- this.config = config;
23
- this.context = context;
24
- this.addData = (data) => {
25
- return this._entities.addData(data);
26
- };
27
- this.stats = async () => {
28
- const collectionNames = Object.keys(this.schema.collections);
29
- let collections = {};
30
- for (const collectionName of collectionNames) {
31
- collections[collectionName] = await getSizeOfObjectStore(this.documentDb, collectionName);
32
- }
33
- const meta = await this.meta.stats();
34
- const storage = typeof navigator !== 'undefined' &&
35
- typeof navigator.storage !== 'undefined' &&
36
- 'estimate' in navigator.storage
37
- ? await navigator.storage.estimate()
38
- : undefined;
39
- // determine data:metadata ratio for total size of all collections vs metadata
40
- const totalCollectionsSize = Object.values(collections).reduce((acc, { size }) => acc + size, 0);
41
- const totalMetaSize = meta.baselinesSize.size + meta.operationsSize.size;
42
- const metaToDataRatio = totalMetaSize / totalCollectionsSize;
43
- return {
44
- collections,
45
- meta,
46
- storage,
47
- totalMetaSize,
48
- totalCollectionsSize,
49
- metaToDataRatio,
50
- quotaUsage: (storage === null || storage === void 0 ? void 0 : storage.usage) && (storage === null || storage === void 0 ? void 0 : storage.quota)
51
- ? storage.usage / storage.quota
52
- : undefined,
53
- };
54
- };
55
- this.close = async () => {
56
- var _a, _b;
57
- await this.entities.flushPatches();
58
- this.sync.stop();
59
- this.sync.dispose();
60
- this.meta.close();
61
- this._entities.destroy();
62
- await closeDatabase(this.documentDb);
63
- await closeDatabase(this.metaDb);
64
- (_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'Client closed');
65
- };
66
- this.__dangerous__resetLocal = async () => {
67
- this.sync.stop();
68
- const req1 = indexedDB.deleteDatabase([this.namespace, 'meta'].join('_'));
69
- const req2 = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
70
- await Promise.all([
71
- new Promise((resolve, reject) => {
72
- req1.onsuccess = resolve;
73
- req1.onerror = reject;
74
- }),
75
- new Promise((resolve, reject) => {
76
- req2.onsuccess = resolve;
77
- req2.onerror = reject;
78
- }),
79
- ]);
80
- window.location.reload();
81
- };
82
- this.export = async () => {
83
- const metaExport = await this.meta.export();
84
- return Buffer.from(JSON.stringify(metaExport));
85
- };
86
- this.import = async (buffer) => {
87
- this.context.log('Importing data...');
88
- // close the document DB
89
- await closeDatabase(this.context.documentDb);
90
- const metaExport = JSON.parse(buffer.toString());
91
- await this.meta.resetFrom(metaExport);
92
- // now reset the document DB to the specified version
93
- // and run migrations to get it to the latest version
94
- const version = metaExport.schema.version;
95
- const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
96
- await new Promise((resolve, reject) => {
97
- deleteReq.onsuccess = resolve;
98
- deleteReq.onerror = reject;
99
- });
100
- // reset our context to the imported schema for now
101
- const currentSchema = this.context.schema;
102
- this.context.schema = metaExport.schema;
103
- // now open the document DB empty at the specified version
104
- // and initialize it from the meta DB
105
- this.context.documentDb = await openDocumentDatabase({
106
- meta: this.meta,
107
- migrations: this.config.migrations,
108
- context: this.context,
109
- version,
110
- });
111
- // re-initialize data
112
- this.context.log('Re-initializing data from imported data...');
113
- await this._entities.addData({
114
- operations: metaExport.operations,
115
- baselines: metaExport.baselines,
116
- reset: true,
117
- });
118
- // close the database and reopen to latest version, applying
119
- // migrations
120
- await closeDatabase(this.context.documentDb);
121
- this.context.log('Migrating up to latest schema...');
122
- // put the schema back
123
- this.context.schema = currentSchema;
124
- this.context.documentDb = await openDocumentDatabase({
125
- meta: this.meta,
126
- migrations: this.config.migrations,
127
- context: this.context,
128
- version: currentSchema.version,
129
- });
130
- };
131
- this.meta = components.meta;
132
- this.collectionNames = Object.keys(context.schema.collections);
133
- this._sync = this.config.syncConfig
134
- ? new ServerSync(this.config.syncConfig, {
135
- meta: this.meta,
136
- onData: this.addData,
137
- log: this.context.log,
138
- })
139
- : new NoSync();
140
- this._fileManager = new FileManager({
141
- db: this.metaDb,
142
- sync: this.sync,
143
- context: this.context,
144
- config: this.config.files,
145
- meta: this.meta,
146
- });
147
- this._entities = new EntityStore({
148
- context: this.context,
149
- meta: this.meta,
150
- files: this._fileManager,
151
- });
152
- this._queryCache = new QueryCache({
153
- context,
154
- });
155
- this._documentManager = new DocumentManager(this.meta, this.schema, this._entities);
156
- this.documentDb.addEventListener('versionchange', () => {
157
- var _a, _b;
158
- (_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
159
- this.documentDb.close();
160
- if (typeof window !== 'undefined') {
161
- window.location.reload();
162
- }
163
- });
164
- this.metaDb.addEventListener('versionchange', () => {
165
- var _a, _b;
166
- (_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
167
- this.metaDb.close();
168
- if (typeof window !== 'undefined') {
169
- window.location.reload();
170
- }
171
- });
172
- // self-assign collection shortcuts. these are not typed
173
- // here but are typed in the generated code...
174
- for (const [name, _collection] of Object.entries(context.schema.collections)) {
175
- const collection = _collection;
176
- const collectionName = (_a = collection.pluralName) !== null && _a !== void 0 ? _a : collection.name + 's';
177
- // TODO: untangle this requirement
178
- assert(collectionName === name, `The key of the collection in the schema must be the plural of the name (expected: "${collectionName}")`);
179
- this[collectionName] = new CollectionQueries({
180
- collection: collectionName,
181
- cache: this._queryCache,
182
- context: this.context,
183
- entities: this.entities,
184
- documentManager: this.documentManager,
185
- });
186
- }
187
- }
188
- get documentDb() {
189
- return this.context.documentDb;
190
- }
191
- get metaDb() {
192
- return this.context.metaDb;
193
- }
194
- get schema() {
195
- return this.context.schema;
196
- }
197
- get namespace() {
198
- return this.context.namespace;
199
- }
200
- get undoHistory() {
201
- return this.context.undoHistory;
202
- }
203
- /**
204
- * @deprecated - use client.sync.presence instead
205
- */
206
- get presence() {
207
- return this.sync.presence;
208
- }
209
- /**
210
- * Batch multiple operations together to be executed in a single transaction.
211
- * The changes made will not be included in the same undo history step as
212
- * any other changes made outside of the batch. You can also disable undo
213
- * for your batch to omit changes from undo history.
214
- *
215
- * Provide a batch name to apply multiple changes to the same batch
216
- * across different invocations. Batches will automatically flush after
217
- * a short delay or if they reach a maximum size.
218
- */
219
- get batch() {
220
- return this.entities.batch;
221
- }
222
- }
1
+ import { assert, } from '@verdant-web/common';
2
+ import { DocumentManager } from '../DocumentManager.js';
3
+ import { FileManager } from '../files/FileManager.js';
4
+ import { closeDatabase, getSizeOfObjectStore } from '../idb.js';
5
+ import { openDocumentDatabase } from '../openDocumentDatabase.js';
6
+ import { EntityStore } from '../reactives/EntityStore.js';
7
+ import { NoSync, ServerSync } from '../sync/Sync.js';
8
+ import { CollectionQueries } from '../queries2/CollectionQueries.js';
9
+ import { QueryCache } from '../queries2/QueryCache.js';
10
+ export class Client {
11
+ get sync() {
12
+ return this._sync;
13
+ }
14
+ get entities() {
15
+ return this._entities;
16
+ }
17
+ get documentManager() {
18
+ return this._documentManager;
19
+ }
20
+ constructor(config, context, components) {
21
+ var _a;
22
+ this.config = config;
23
+ this.context = context;
24
+ this.addData = (data) => {
25
+ return this._entities.addData(data);
26
+ };
27
+ this.stats = async () => {
28
+ const collectionNames = Object.keys(this.schema.collections);
29
+ let collections = {};
30
+ for (const collectionName of collectionNames) {
31
+ collections[collectionName] = await getSizeOfObjectStore(this.documentDb, collectionName);
32
+ }
33
+ const meta = await this.meta.stats();
34
+ const storage = typeof navigator !== 'undefined' &&
35
+ typeof navigator.storage !== 'undefined' &&
36
+ 'estimate' in navigator.storage
37
+ ? await navigator.storage.estimate()
38
+ : undefined;
39
+ // determine data:metadata ratio for total size of all collections vs metadata
40
+ const totalCollectionsSize = Object.values(collections).reduce((acc, { size }) => acc + size, 0);
41
+ const totalMetaSize = meta.baselinesSize.size + meta.operationsSize.size;
42
+ const metaToDataRatio = totalMetaSize / totalCollectionsSize;
43
+ return {
44
+ collections,
45
+ meta,
46
+ storage,
47
+ totalMetaSize,
48
+ totalCollectionsSize,
49
+ metaToDataRatio,
50
+ quotaUsage: (storage === null || storage === void 0 ? void 0 : storage.usage) && (storage === null || storage === void 0 ? void 0 : storage.quota)
51
+ ? storage.usage / storage.quota
52
+ : undefined,
53
+ };
54
+ };
55
+ this.close = async () => {
56
+ var _a, _b;
57
+ await this.entities.flushPatches();
58
+ this.sync.stop();
59
+ this.sync.dispose();
60
+ this.meta.close();
61
+ this._entities.destroy();
62
+ await closeDatabase(this.documentDb);
63
+ await closeDatabase(this.metaDb);
64
+ (_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, 'Client closed');
65
+ };
66
+ this.__dangerous__resetLocal = async () => {
67
+ this.sync.stop();
68
+ const req1 = indexedDB.deleteDatabase([this.namespace, 'meta'].join('_'));
69
+ const req2 = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
70
+ await Promise.all([
71
+ new Promise((resolve, reject) => {
72
+ req1.onsuccess = resolve;
73
+ req1.onerror = reject;
74
+ }),
75
+ new Promise((resolve, reject) => {
76
+ req2.onsuccess = resolve;
77
+ req2.onerror = reject;
78
+ }),
79
+ ]);
80
+ window.location.reload();
81
+ };
82
+ this.export = async () => {
83
+ const metaExport = await this.meta.export();
84
+ return Buffer.from(JSON.stringify(metaExport));
85
+ };
86
+ this.import = async (buffer) => {
87
+ this.context.log('Importing data...');
88
+ // close the document DB
89
+ await closeDatabase(this.context.documentDb);
90
+ const metaExport = JSON.parse(buffer.toString());
91
+ await this.meta.resetFrom(metaExport);
92
+ // now reset the document DB to the specified version
93
+ // and run migrations to get it to the latest version
94
+ const version = metaExport.schema.version;
95
+ const deleteReq = indexedDB.deleteDatabase([this.namespace, 'collections'].join('_'));
96
+ await new Promise((resolve, reject) => {
97
+ deleteReq.onsuccess = resolve;
98
+ deleteReq.onerror = reject;
99
+ });
100
+ // reset our context to the imported schema for now
101
+ const currentSchema = this.context.schema;
102
+ this.context.schema = metaExport.schema;
103
+ // now open the document DB empty at the specified version
104
+ // and initialize it from the meta DB
105
+ this.context.documentDb = await openDocumentDatabase({
106
+ meta: this.meta,
107
+ migrations: this.config.migrations,
108
+ context: this.context,
109
+ version,
110
+ });
111
+ // re-initialize data
112
+ this.context.log('Re-initializing data from imported data...');
113
+ await this._entities.addData({
114
+ operations: metaExport.operations,
115
+ baselines: metaExport.baselines,
116
+ reset: true,
117
+ });
118
+ // close the database and reopen to latest version, applying
119
+ // migrations
120
+ await closeDatabase(this.context.documentDb);
121
+ this.context.log('Migrating up to latest schema...');
122
+ // put the schema back
123
+ this.context.schema = currentSchema;
124
+ this.context.documentDb = await openDocumentDatabase({
125
+ meta: this.meta,
126
+ migrations: this.config.migrations,
127
+ context: this.context,
128
+ version: currentSchema.version,
129
+ });
130
+ };
131
+ this.meta = components.meta;
132
+ this.collectionNames = Object.keys(context.schema.collections);
133
+ this._sync = this.config.syncConfig
134
+ ? new ServerSync(this.config.syncConfig, {
135
+ meta: this.meta,
136
+ onData: this.addData,
137
+ log: this.context.log,
138
+ })
139
+ : new NoSync();
140
+ this._fileManager = new FileManager({
141
+ db: this.metaDb,
142
+ sync: this.sync,
143
+ context: this.context,
144
+ config: this.config.files,
145
+ meta: this.meta,
146
+ });
147
+ this._entities = new EntityStore({
148
+ context: this.context,
149
+ meta: this.meta,
150
+ files: this._fileManager,
151
+ });
152
+ this._queryCache = new QueryCache({
153
+ context,
154
+ });
155
+ this._documentManager = new DocumentManager(this.meta, this.schema, this._entities);
156
+ this.documentDb.addEventListener('versionchange', () => {
157
+ var _a, _b;
158
+ (_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
159
+ this.documentDb.close();
160
+ if (typeof window !== 'undefined') {
161
+ window.location.reload();
162
+ }
163
+ });
164
+ this.metaDb.addEventListener('versionchange', () => {
165
+ var _a, _b;
166
+ (_b = (_a = this.context).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Another tab has requested a version change for ${this.namespace}`);
167
+ this.metaDb.close();
168
+ if (typeof window !== 'undefined') {
169
+ window.location.reload();
170
+ }
171
+ });
172
+ // self-assign collection shortcuts. these are not typed
173
+ // here but are typed in the generated code...
174
+ for (const [name, _collection] of Object.entries(context.schema.collections)) {
175
+ const collection = _collection;
176
+ const collectionName = (_a = collection.pluralName) !== null && _a !== void 0 ? _a : collection.name + 's';
177
+ // TODO: untangle this requirement
178
+ assert(collectionName === name, `The key of the collection in the schema must be the plural of the name (expected: "${collectionName}")`);
179
+ this[collectionName] = new CollectionQueries({
180
+ collection: collectionName,
181
+ cache: this._queryCache,
182
+ context: this.context,
183
+ entities: this.entities,
184
+ documentManager: this.documentManager,
185
+ });
186
+ }
187
+ }
188
+ get documentDb() {
189
+ return this.context.documentDb;
190
+ }
191
+ get metaDb() {
192
+ return this.context.metaDb;
193
+ }
194
+ get schema() {
195
+ return this.context.schema;
196
+ }
197
+ get namespace() {
198
+ return this.context.namespace;
199
+ }
200
+ get undoHistory() {
201
+ return this.context.undoHistory;
202
+ }
203
+ /**
204
+ * @deprecated - use client.sync.presence instead
205
+ */
206
+ get presence() {
207
+ return this.sync.presence;
208
+ }
209
+ /**
210
+ * Batch multiple operations together to be executed in a single transaction.
211
+ * The changes made will not be included in the same undo history step as
212
+ * any other changes made outside of the batch. You can also disable undo
213
+ * for your batch to omit changes from undo history.
214
+ *
215
+ * Provide a batch name to apply multiple changes to the same batch
216
+ * across different invocations. Batches will automatically flush after
217
+ * a short delay or if they reach a maximum size.
218
+ */
219
+ get batch() {
220
+ return this.entities.batch;
221
+ }
222
+ }
223
223
  //# sourceMappingURL=Client.js.map
@@ -1,62 +1,62 @@
1
- import { Migration, StorageSchema } from '@verdant-web/common';
2
- import { FileManagerConfig } from '../files/FileManager.js';
3
- import { ServerSyncOptions } from '../sync/Sync.js';
4
- import { UndoHistory } from '../UndoHistory.js';
5
- import { Client } from './Client.js';
6
- export interface ClientDescriptorOptions<Presence = any, Profile = any> {
7
- /** The schema used to create this client */
8
- schema: StorageSchema<any>;
9
- /** Migrations, in order, to upgrade to each successive version of the schema */
10
- migrations: Migration<any>[];
11
- /** Provide a sync config to turn on synchronization with a server */
12
- sync?: ServerSyncOptions<Profile, Presence>;
13
- /** Optionally override the IndexedDB implementation */
14
- indexedDb?: IDBFactory;
15
- /**
16
- * Namespaces are used to separate data from different clients in IndexedDB.
17
- */
18
- namespace: string;
19
- /**
20
- * Provide your own UndoHistory to have a unified undo system across multiple
21
- * clients if you so desire.
22
- */
23
- undoHistory?: UndoHistory;
24
- /**
25
- * Provide a log function to log internal debug messages
26
- */
27
- log?: (...args: any[]) => void;
28
- disableRebasing?: boolean;
29
- /**
30
- * Provide a specific schema number to override the schema version
31
- * in the database. This is useful for testing migrations or recovering
32
- * from a mistakenly deployed incorrect schema. A specific version is required
33
- * so that you don't leave this on accidentally for all new schemas.
34
- */
35
- overrideSchemaConflict?: number;
36
- /**
37
- * Configuration for file management
38
- */
39
- files?: FileManagerConfig;
40
- }
41
- /**
42
- * Since storage initialization is async, this class wraps the core
43
- * Storage creation promise and exposes some metadata which can
44
- * be useful immediately.
45
- */
46
- export declare class ClientDescriptor<Presence = any, Profile = any> {
47
- private readonly init;
48
- private readonly _readyPromise;
49
- private resolveReady;
50
- private rejectReady;
51
- private _resolvedValue;
52
- private _initializing;
53
- private _namespace;
54
- get namespace(): string;
55
- constructor(init: ClientDescriptorOptions<Presence, Profile>);
56
- private initialize;
57
- get current(): Client | undefined;
58
- get readyPromise(): Promise<Client>;
59
- get schema(): StorageSchema<any>;
60
- open: () => Promise<Client>;
61
- close: () => Promise<void>;
62
- }
1
+ import { Migration, StorageSchema } from '@verdant-web/common';
2
+ import { FileManagerConfig } from '../files/FileManager.js';
3
+ import { ServerSyncOptions } from '../sync/Sync.js';
4
+ import { UndoHistory } from '../UndoHistory.js';
5
+ import { Client } from './Client.js';
6
+ export interface ClientDescriptorOptions<Presence = any, Profile = any> {
7
+ /** The schema used to create this client */
8
+ schema: StorageSchema<any>;
9
+ /** Migrations, in order, to upgrade to each successive version of the schema */
10
+ migrations: Migration<any>[];
11
+ /** Provide a sync config to turn on synchronization with a server */
12
+ sync?: ServerSyncOptions<Profile, Presence>;
13
+ /** Optionally override the IndexedDB implementation */
14
+ indexedDb?: IDBFactory;
15
+ /**
16
+ * Namespaces are used to separate data from different clients in IndexedDB.
17
+ */
18
+ namespace: string;
19
+ /**
20
+ * Provide your own UndoHistory to have a unified undo system across multiple
21
+ * clients if you so desire.
22
+ */
23
+ undoHistory?: UndoHistory;
24
+ /**
25
+ * Provide a log function to log internal debug messages
26
+ */
27
+ log?: (...args: any[]) => void;
28
+ disableRebasing?: boolean;
29
+ /**
30
+ * Provide a specific schema number to override the schema version
31
+ * in the database. This is useful for testing migrations or recovering
32
+ * from a mistakenly deployed incorrect schema. A specific version is required
33
+ * so that you don't leave this on accidentally for all new schemas.
34
+ */
35
+ overrideSchemaConflict?: number;
36
+ /**
37
+ * Configuration for file management
38
+ */
39
+ files?: FileManagerConfig;
40
+ }
41
+ /**
42
+ * Since storage initialization is async, this class wraps the core
43
+ * Storage creation promise and exposes some metadata which can
44
+ * be useful immediately.
45
+ */
46
+ export declare class ClientDescriptor<Presence = any, Profile = any> {
47
+ private readonly init;
48
+ private readonly _readyPromise;
49
+ private resolveReady;
50
+ private rejectReady;
51
+ private _resolvedValue;
52
+ private _initializing;
53
+ private _namespace;
54
+ get namespace(): string;
55
+ constructor(init: ClientDescriptorOptions<Presence, Profile>);
56
+ private initialize;
57
+ get current(): Client | undefined;
58
+ get readyPromise(): Promise<Client>;
59
+ get schema(): StorageSchema<any>;
60
+ open: () => Promise<Client>;
61
+ close: () => Promise<void>;
62
+ }