@verdant-web/store 3.3.1 → 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 (338) 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 +7 -4
  27. package/dist/esm/metadata/Metadata.js.map +1 -1
  28. package/dist/esm/metadata/OperationsStore.js.map +1 -1
  29. package/dist/esm/metadata/SchemaStore.js.map +1 -1
  30. package/dist/esm/metadata/openMetadataDatabase.js.map +1 -1
  31. package/dist/esm/migration/db.js.map +1 -1
  32. package/dist/esm/migration/openDatabase.js.map +1 -1
  33. package/dist/esm/migration/paths.js.map +1 -1
  34. package/dist/esm/queries/BaseQuery.js.map +1 -1
  35. package/dist/esm/queries/QueryCache.js.map +1 -1
  36. package/dist/esm/queries/QueryableStorage.js.map +1 -1
  37. package/dist/esm/queries/dbQueries.js.map +1 -1
  38. package/dist/esm/queries/keys.js.map +1 -1
  39. package/dist/esm/queries/ranges.js.map +1 -1
  40. package/dist/esm/queries/utils.js.map +1 -1
  41. package/dist/esm/sync/FileSync.js.map +1 -1
  42. package/dist/esm/sync/Heartbeat.js.map +1 -1
  43. package/dist/esm/sync/PresenceManager.js.map +1 -1
  44. package/dist/esm/sync/PushPullSync.js.map +1 -1
  45. package/dist/esm/sync/ServerSyncEndpointProvider.js.map +1 -1
  46. package/dist/esm/sync/Sync.js.map +1 -1
  47. package/dist/esm/sync/WebSocketSync.js.map +1 -1
  48. package/package.json +9 -10
  49. package/src/client/Client.ts +8 -1
  50. package/src/files/FileManager.ts +4 -0
  51. package/src/metadata/Metadata.ts +11 -7
  52. package/src/sync/Sync.ts +2 -2
  53. package/dist/cjs/BackoffScheduler.d.ts +0 -19
  54. package/dist/cjs/BackoffScheduler.js +0 -45
  55. package/dist/cjs/BackoffScheduler.js.map +0 -1
  56. package/dist/cjs/DocumentManager.d.ts +0 -28
  57. package/dist/cjs/DocumentManager.js +0 -45
  58. package/dist/cjs/DocumentManager.js.map +0 -1
  59. package/dist/cjs/FakeWeakRef.d.ts +0 -11
  60. package/dist/cjs/FakeWeakRef.js +0 -19
  61. package/dist/cjs/FakeWeakRef.js.map +0 -1
  62. package/dist/cjs/IDBService.d.ts +0 -30
  63. package/dist/cjs/IDBService.js +0 -101
  64. package/dist/cjs/IDBService.js.map +0 -1
  65. package/dist/cjs/UndoHistory.d.ts +0 -16
  66. package/dist/cjs/UndoHistory.js +0 -55
  67. package/dist/cjs/UndoHistory.js.map +0 -1
  68. package/dist/cjs/__tests__/batching.test.d.ts +0 -1
  69. package/dist/cjs/__tests__/batching.test.js +0 -47
  70. package/dist/cjs/__tests__/batching.test.js.map +0 -1
  71. package/dist/cjs/__tests__/documents.test.d.ts +0 -1
  72. package/dist/cjs/__tests__/documents.test.js +0 -468
  73. package/dist/cjs/__tests__/documents.test.js.map +0 -1
  74. package/dist/cjs/__tests__/fixtures/testStorage.d.ts +0 -76
  75. package/dist/cjs/__tests__/fixtures/testStorage.js +0 -96
  76. package/dist/cjs/__tests__/fixtures/testStorage.js.map +0 -1
  77. package/dist/cjs/__tests__/legacyOids.test.d.ts +0 -1
  78. package/dist/cjs/__tests__/legacyOids.test.js +0 -354
  79. package/dist/cjs/__tests__/legacyOids.test.js.map +0 -1
  80. package/dist/cjs/__tests__/mutations.test.d.ts +0 -1
  81. package/dist/cjs/__tests__/mutations.test.js +0 -48
  82. package/dist/cjs/__tests__/mutations.test.js.map +0 -1
  83. package/dist/cjs/__tests__/queries.test.d.ts +0 -1
  84. package/dist/cjs/__tests__/queries.test.js +0 -323
  85. package/dist/cjs/__tests__/queries.test.js.map +0 -1
  86. package/dist/cjs/__tests__/setup/indexedDB.d.ts +0 -1
  87. package/dist/cjs/__tests__/setup/indexedDB.js +0 -16
  88. package/dist/cjs/__tests__/setup/indexedDB.js.map +0 -1
  89. package/dist/cjs/__tests__/undo.test.d.ts +0 -1
  90. package/dist/cjs/__tests__/undo.test.js +0 -94
  91. package/dist/cjs/__tests__/undo.test.js.map +0 -1
  92. package/dist/cjs/backup.d.ts +0 -10
  93. package/dist/cjs/backup.js +0 -58
  94. package/dist/cjs/backup.js.map +0 -1
  95. package/dist/cjs/client/Client.d.ts +0 -120
  96. package/dist/cjs/client/Client.js +0 -300
  97. package/dist/cjs/client/Client.js.map +0 -1
  98. package/dist/cjs/client/ClientDescriptor.d.ts +0 -76
  99. package/dist/cjs/client/ClientDescriptor.js +0 -213
  100. package/dist/cjs/client/ClientDescriptor.js.map +0 -1
  101. package/dist/cjs/client/constants.d.ts +0 -1
  102. package/dist/cjs/client/constants.js +0 -5
  103. package/dist/cjs/client/constants.js.map +0 -1
  104. package/dist/cjs/constants.d.ts +0 -1
  105. package/dist/cjs/constants.js +0 -5
  106. package/dist/cjs/constants.js.map +0 -1
  107. package/dist/cjs/context.d.ts +0 -38
  108. package/dist/cjs/context.js +0 -3
  109. package/dist/cjs/context.js.map +0 -1
  110. package/dist/cjs/entities/Entity.d.ts +0 -148
  111. package/dist/cjs/entities/Entity.js +0 -711
  112. package/dist/cjs/entities/Entity.js.map +0 -1
  113. package/dist/cjs/entities/Entity.test.d.ts +0 -1
  114. package/dist/cjs/entities/Entity.test.js +0 -194
  115. package/dist/cjs/entities/Entity.test.js.map +0 -1
  116. package/dist/cjs/entities/EntityCache.d.ts +0 -15
  117. package/dist/cjs/entities/EntityCache.js +0 -39
  118. package/dist/cjs/entities/EntityCache.js.map +0 -1
  119. package/dist/cjs/entities/EntityMetadata.d.ts +0 -68
  120. package/dist/cjs/entities/EntityMetadata.js +0 -261
  121. package/dist/cjs/entities/EntityMetadata.js.map +0 -1
  122. package/dist/cjs/entities/EntityStore.d.ts +0 -80
  123. package/dist/cjs/entities/EntityStore.js +0 -352
  124. package/dist/cjs/entities/EntityStore.js.map +0 -1
  125. package/dist/cjs/entities/OperationBatcher.d.ts +0 -52
  126. package/dist/cjs/entities/OperationBatcher.js +0 -165
  127. package/dist/cjs/entities/OperationBatcher.js.map +0 -1
  128. package/dist/cjs/entities/types.d.ts +0 -103
  129. package/dist/cjs/entities/types.js +0 -3
  130. package/dist/cjs/entities/types.js.map +0 -1
  131. package/dist/cjs/files/EntityFile.d.ts +0 -35
  132. package/dist/cjs/files/EntityFile.js +0 -81
  133. package/dist/cjs/files/EntityFile.js.map +0 -1
  134. package/dist/cjs/files/FileManager.d.ts +0 -46
  135. package/dist/cjs/files/FileManager.js +0 -174
  136. package/dist/cjs/files/FileManager.js.map +0 -1
  137. package/dist/cjs/files/FileStorage.d.ts +0 -39
  138. package/dist/cjs/files/FileStorage.js +0 -110
  139. package/dist/cjs/files/FileStorage.js.map +0 -1
  140. package/dist/cjs/files/utils.d.ts +0 -10
  141. package/dist/cjs/files/utils.js +0 -62
  142. package/dist/cjs/files/utils.js.map +0 -1
  143. package/dist/cjs/files/utils.test.d.ts +0 -1
  144. package/dist/cjs/files/utils.test.js +0 -81
  145. package/dist/cjs/files/utils.test.js.map +0 -1
  146. package/dist/cjs/idb.d.ts +0 -13
  147. package/dist/cjs/idb.js +0 -158
  148. package/dist/cjs/idb.js.map +0 -1
  149. package/dist/cjs/index.d.ts +0 -23
  150. package/dist/cjs/index.js +0 -25
  151. package/dist/cjs/index.js.map +0 -1
  152. package/dist/cjs/metadata/AckInfoStore.d.ts +0 -10
  153. package/dist/cjs/metadata/AckInfoStore.js +0 -26
  154. package/dist/cjs/metadata/AckInfoStore.js.map +0 -1
  155. package/dist/cjs/metadata/BaselinesStore.d.ts +0 -40
  156. package/dist/cjs/metadata/BaselinesStore.js +0 -106
  157. package/dist/cjs/metadata/BaselinesStore.js.map +0 -1
  158. package/dist/cjs/metadata/LocalReplicaStore.d.ts +0 -18
  159. package/dist/cjs/metadata/LocalReplicaStore.js +0 -62
  160. package/dist/cjs/metadata/LocalReplicaStore.js.map +0 -1
  161. package/dist/cjs/metadata/MessageCreator.d.ts +0 -19
  162. package/dist/cjs/metadata/MessageCreator.js +0 -128
  163. package/dist/cjs/metadata/MessageCreator.js.map +0 -1
  164. package/dist/cjs/metadata/Metadata.d.ts +0 -134
  165. package/dist/cjs/metadata/Metadata.js +0 -405
  166. package/dist/cjs/metadata/Metadata.js.map +0 -1
  167. package/dist/cjs/metadata/OperationsStore.d.ts +0 -62
  168. package/dist/cjs/metadata/OperationsStore.js +0 -179
  169. package/dist/cjs/metadata/OperationsStore.js.map +0 -1
  170. package/dist/cjs/metadata/SchemaStore.d.ts +0 -9
  171. package/dist/cjs/metadata/SchemaStore.js +0 -39
  172. package/dist/cjs/metadata/SchemaStore.js.map +0 -1
  173. package/dist/cjs/metadata/openMetadataDatabase.d.ts +0 -19
  174. package/dist/cjs/metadata/openMetadataDatabase.js +0 -220
  175. package/dist/cjs/metadata/openMetadataDatabase.js.map +0 -1
  176. package/dist/cjs/migration/db.d.ts +0 -8
  177. package/dist/cjs/migration/db.js +0 -112
  178. package/dist/cjs/migration/db.js.map +0 -1
  179. package/dist/cjs/migration/errors.d.ts +0 -5
  180. package/dist/cjs/migration/errors.js +0 -12
  181. package/dist/cjs/migration/errors.js.map +0 -1
  182. package/dist/cjs/migration/openDatabase.d.ts +0 -20
  183. package/dist/cjs/migration/openDatabase.js +0 -468
  184. package/dist/cjs/migration/openDatabase.js.map +0 -1
  185. package/dist/cjs/migration/paths.d.ts +0 -6
  186. package/dist/cjs/migration/paths.js +0 -53
  187. package/dist/cjs/migration/paths.js.map +0 -1
  188. package/dist/cjs/migration/paths.test.d.ts +0 -1
  189. package/dist/cjs/migration/paths.test.js +0 -91
  190. package/dist/cjs/migration/paths.test.js.map +0 -1
  191. package/dist/cjs/queries/BaseQuery.d.ts +0 -53
  192. package/dist/cjs/queries/BaseQuery.js +0 -148
  193. package/dist/cjs/queries/BaseQuery.js.map +0 -1
  194. package/dist/cjs/queries/CollectionQueries.d.ts +0 -55
  195. package/dist/cjs/queries/CollectionQueries.js +0 -92
  196. package/dist/cjs/queries/CollectionQueries.js.map +0 -1
  197. package/dist/cjs/queries/FindAllQuery.d.ts +0 -12
  198. package/dist/cjs/queries/FindAllQuery.js +0 -44
  199. package/dist/cjs/queries/FindAllQuery.js.map +0 -1
  200. package/dist/cjs/queries/FindInfiniteQuery.d.ts +0 -19
  201. package/dist/cjs/queries/FindInfiniteQuery.js +0 -70
  202. package/dist/cjs/queries/FindInfiniteQuery.js.map +0 -1
  203. package/dist/cjs/queries/FindOneQuery.d.ts +0 -12
  204. package/dist/cjs/queries/FindOneQuery.js +0 -43
  205. package/dist/cjs/queries/FindOneQuery.js.map +0 -1
  206. package/dist/cjs/queries/FindPageQuery.d.ts +0 -24
  207. package/dist/cjs/queries/FindPageQuery.js +0 -77
  208. package/dist/cjs/queries/FindPageQuery.js.map +0 -1
  209. package/dist/cjs/queries/GetQuery.d.ts +0 -10
  210. package/dist/cjs/queries/GetQuery.js +0 -30
  211. package/dist/cjs/queries/GetQuery.js.map +0 -1
  212. package/dist/cjs/queries/QueryCache.d.ts +0 -17
  213. package/dist/cjs/queries/QueryCache.js +0 -46
  214. package/dist/cjs/queries/QueryCache.js.map +0 -1
  215. package/dist/cjs/queries/QueryableStorage.d.ts +0 -20
  216. package/dist/cjs/queries/QueryableStorage.js +0 -94
  217. package/dist/cjs/queries/QueryableStorage.js.map +0 -1
  218. package/dist/cjs/queries/dbQueries.d.ts +0 -22
  219. package/dist/cjs/queries/dbQueries.js +0 -136
  220. package/dist/cjs/queries/dbQueries.js.map +0 -1
  221. package/dist/cjs/queries/keys.d.ts +0 -10
  222. package/dist/cjs/queries/keys.js +0 -34
  223. package/dist/cjs/queries/keys.js.map +0 -1
  224. package/dist/cjs/queries/ranges.d.ts +0 -2
  225. package/dist/cjs/queries/ranges.js +0 -70
  226. package/dist/cjs/queries/ranges.js.map +0 -1
  227. package/dist/cjs/queries/types.d.ts +0 -6
  228. package/dist/cjs/queries/types.js +0 -3
  229. package/dist/cjs/queries/types.js.map +0 -1
  230. package/dist/cjs/queries/utils.d.ts +0 -3
  231. package/dist/cjs/queries/utils.js +0 -25
  232. package/dist/cjs/queries/utils.js.map +0 -1
  233. package/dist/cjs/sync/FileSync.d.ts +0 -24
  234. package/dist/cjs/sync/FileSync.js +0 -87
  235. package/dist/cjs/sync/FileSync.js.map +0 -1
  236. package/dist/cjs/sync/Heartbeat.d.ts +0 -25
  237. package/dist/cjs/sync/Heartbeat.js +0 -64
  238. package/dist/cjs/sync/Heartbeat.js.map +0 -1
  239. package/dist/cjs/sync/PresenceManager.d.ts +0 -55
  240. package/dist/cjs/sync/PresenceManager.js +0 -126
  241. package/dist/cjs/sync/PresenceManager.js.map +0 -1
  242. package/dist/cjs/sync/PushPullSync.d.ts +0 -39
  243. package/dist/cjs/sync/PushPullSync.js +0 -159
  244. package/dist/cjs/sync/PushPullSync.js.map +0 -1
  245. package/dist/cjs/sync/ServerSyncEndpointProvider.d.ts +0 -34
  246. package/dist/cjs/sync/ServerSyncEndpointProvider.js +0 -69
  247. package/dist/cjs/sync/ServerSyncEndpointProvider.js.map +0 -1
  248. package/dist/cjs/sync/Sync.d.ts +0 -160
  249. package/dist/cjs/sync/Sync.js +0 -293
  250. package/dist/cjs/sync/Sync.js.map +0 -1
  251. package/dist/cjs/sync/WebSocketSync.d.ts +0 -44
  252. package/dist/cjs/sync/WebSocketSync.js +0 -221
  253. package/dist/cjs/sync/WebSocketSync.js.map +0 -1
  254. package/dist/cjs/types.d.ts +0 -12
  255. package/dist/cjs/types.js +0 -3
  256. package/dist/cjs/types.js.map +0 -1
  257. package/dist/cjs/utils/Disposable.d.ts +0 -6
  258. package/dist/cjs/utils/Disposable.js +0 -19
  259. package/dist/cjs/utils/Disposable.js.map +0 -1
  260. package/dist/cjs/utils/Resolvable.d.ts +0 -8
  261. package/dist/cjs/utils/Resolvable.js +0 -23
  262. package/dist/cjs/utils/Resolvable.js.map +0 -1
  263. package/dist/cjs/vanilla.d.ts +0 -1
  264. package/dist/cjs/vanilla.js +0 -28
  265. package/dist/cjs/vanilla.js.map +0 -1
  266. package/dist/esm/BackoffScheduler.d.ts +0 -19
  267. package/dist/esm/DocumentManager.d.ts +0 -28
  268. package/dist/esm/FakeWeakRef.d.ts +0 -11
  269. package/dist/esm/IDBService.d.ts +0 -30
  270. package/dist/esm/UndoHistory.d.ts +0 -16
  271. package/dist/esm/__tests__/batching.test.d.ts +0 -1
  272. package/dist/esm/__tests__/documents.test.d.ts +0 -1
  273. package/dist/esm/__tests__/fixtures/testStorage.d.ts +0 -76
  274. package/dist/esm/__tests__/legacyOids.test.d.ts +0 -1
  275. package/dist/esm/__tests__/mutations.test.d.ts +0 -1
  276. package/dist/esm/__tests__/queries.test.d.ts +0 -1
  277. package/dist/esm/__tests__/setup/indexedDB.d.ts +0 -1
  278. package/dist/esm/__tests__/undo.test.d.ts +0 -1
  279. package/dist/esm/backup.d.ts +0 -10
  280. package/dist/esm/client/Client.d.ts +0 -120
  281. package/dist/esm/client/ClientDescriptor.d.ts +0 -76
  282. package/dist/esm/client/constants.d.ts +0 -1
  283. package/dist/esm/constants.d.ts +0 -1
  284. package/dist/esm/context.d.ts +0 -38
  285. package/dist/esm/entities/Entity.d.ts +0 -148
  286. package/dist/esm/entities/Entity.test.d.ts +0 -1
  287. package/dist/esm/entities/EntityCache.d.ts +0 -15
  288. package/dist/esm/entities/EntityMetadata.d.ts +0 -68
  289. package/dist/esm/entities/EntityStore.d.ts +0 -80
  290. package/dist/esm/entities/OperationBatcher.d.ts +0 -52
  291. package/dist/esm/entities/types.d.ts +0 -103
  292. package/dist/esm/files/EntityFile.d.ts +0 -35
  293. package/dist/esm/files/FileManager.d.ts +0 -46
  294. package/dist/esm/files/FileStorage.d.ts +0 -39
  295. package/dist/esm/files/utils.d.ts +0 -10
  296. package/dist/esm/files/utils.test.d.ts +0 -1
  297. package/dist/esm/idb.d.ts +0 -13
  298. package/dist/esm/index.d.ts +0 -23
  299. package/dist/esm/metadata/AckInfoStore.d.ts +0 -10
  300. package/dist/esm/metadata/BaselinesStore.d.ts +0 -40
  301. package/dist/esm/metadata/LocalReplicaStore.d.ts +0 -18
  302. package/dist/esm/metadata/MessageCreator.d.ts +0 -19
  303. package/dist/esm/metadata/Metadata.d.ts +0 -134
  304. package/dist/esm/metadata/OperationsStore.d.ts +0 -62
  305. package/dist/esm/metadata/SchemaStore.d.ts +0 -9
  306. package/dist/esm/metadata/openMetadataDatabase.d.ts +0 -19
  307. package/dist/esm/migration/db.d.ts +0 -8
  308. package/dist/esm/migration/errors.d.ts +0 -5
  309. package/dist/esm/migration/openDatabase.d.ts +0 -20
  310. package/dist/esm/migration/paths.d.ts +0 -6
  311. package/dist/esm/migration/paths.test.d.ts +0 -1
  312. package/dist/esm/queries/BaseQuery.d.ts +0 -53
  313. package/dist/esm/queries/CollectionQueries.d.ts +0 -55
  314. package/dist/esm/queries/FindAllQuery.d.ts +0 -12
  315. package/dist/esm/queries/FindInfiniteQuery.d.ts +0 -19
  316. package/dist/esm/queries/FindOneQuery.d.ts +0 -12
  317. package/dist/esm/queries/FindPageQuery.d.ts +0 -24
  318. package/dist/esm/queries/GetQuery.d.ts +0 -10
  319. package/dist/esm/queries/QueryCache.d.ts +0 -17
  320. package/dist/esm/queries/QueryableStorage.d.ts +0 -20
  321. package/dist/esm/queries/dbQueries.d.ts +0 -22
  322. package/dist/esm/queries/keys.d.ts +0 -10
  323. package/dist/esm/queries/ranges.d.ts +0 -2
  324. package/dist/esm/queries/types.d.ts +0 -6
  325. package/dist/esm/queries/utils.d.ts +0 -3
  326. package/dist/esm/sync/FileSync.d.ts +0 -24
  327. package/dist/esm/sync/Heartbeat.d.ts +0 -25
  328. package/dist/esm/sync/PresenceManager.d.ts +0 -55
  329. package/dist/esm/sync/PushPullSync.d.ts +0 -39
  330. package/dist/esm/sync/ServerSyncEndpointProvider.d.ts +0 -34
  331. package/dist/esm/sync/Sync.d.ts +0 -160
  332. package/dist/esm/sync/WebSocketSync.d.ts +0 -44
  333. package/dist/esm/types.d.ts +0 -12
  334. package/dist/esm/utils/Disposable.d.ts +0 -6
  335. package/dist/esm/utils/Resolvable.d.ts +0 -8
  336. package/dist/esm/vanilla.d.ts +0 -1
  337. package/dist/tsconfig-cjs.tsbuildinfo +0 -1
  338. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,405 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Metadata = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- const AckInfoStore_js_1 = require("./AckInfoStore.js");
6
- const BaselinesStore_js_1 = require("./BaselinesStore.js");
7
- const idb_js_1 = require("../idb.js");
8
- const LocalReplicaStore_js_1 = require("./LocalReplicaStore.js");
9
- const MessageCreator_js_1 = require("./MessageCreator.js");
10
- const OperationsStore_js_1 = require("./OperationsStore.js");
11
- const SchemaStore_js_1 = require("./SchemaStore.js");
12
- class Metadata extends common_1.EventSubscriber {
13
- constructor({ disableRebasing, context, }) {
14
- super();
15
- this.time = new common_1.HybridLogicalClockTimestampProvider();
16
- this.disableRebasing = false;
17
- /**
18
- * indicates the client is shutting down and we should stop
19
- * accessing the database.
20
- */
21
- this._closing = false;
22
- this.setContext = (context) => {
23
- this.context = context;
24
- };
25
- this.close = () => {
26
- this._closing = true;
27
- };
28
- /**
29
- * Methods for accessing data
30
- */
31
- this.createTransaction = (stores, opts = {}) => {
32
- return (0, idb_js_1.createAbortableTransaction)(this.db, stores, 'readwrite', opts.abort, this.context.log);
33
- };
34
- /**
35
- * Gets the OID and every sub-object OID for a given document.
36
- * Includes any sub-objects that are not referenced by the root object
37
- * but still happen to be in storage.
38
- */
39
- this.getAllDocumentRelatedOids = async (oid) => {
40
- const oids = new Set();
41
- const documentOid = (0, common_1.getOidRoot)(oid);
42
- (0, common_1.assert)(documentOid === oid, 'Must be root document OID');
43
- oids.add(documentOid);
44
- // readwrite mode to block on other write transactions
45
- const transaction = this.createTransaction(['baselines', 'operations']);
46
- await Promise.all([
47
- this.baselines.iterateOverAllForDocument(documentOid, (baseline) => {
48
- oids.add(baseline.oid);
49
- }, { transaction }),
50
- this.operations.iterateOverAllOperationsForDocument(documentOid, (patch) => {
51
- oids.add(patch.oid);
52
- }, { transaction }),
53
- ]);
54
- return Array.from(oids);
55
- };
56
- this.getAllCollectionRelatedOids = async (oid) => {
57
- const oids = new Set();
58
- const transaction = this.db.transaction(['baselines', 'operations'], 'readwrite');
59
- await Promise.all([
60
- this.baselines.iterateOverAllForCollection(oid, (baseline) => {
61
- oids.add(baseline.oid);
62
- }, { transaction }),
63
- this.operations.iterateOverAllOperationsForCollection(oid, (patch) => {
64
- oids.add(patch.oid);
65
- }, { transaction }),
66
- ]);
67
- return Array.from(oids);
68
- };
69
- this.getDocumentSnapshot = async (oid, options = {}) => {
70
- const documentOid = (0, common_1.getOidRoot)(oid);
71
- (0, common_1.assert)(documentOid === oid, 'Must be root document OID');
72
- const transaction = this.db.transaction(['baselines', 'operations'], 'readwrite');
73
- const baselines = await this.baselines.getAllForDocument(documentOid, {
74
- transaction,
75
- });
76
- const objectMap = new Map();
77
- for (const baseline of baselines) {
78
- if (baseline.snapshot) {
79
- (0, common_1.assignOid)(baseline.snapshot, baseline.oid);
80
- }
81
- objectMap.set(baseline.oid, baseline.snapshot);
82
- }
83
- await this.operations.iterateOverAllOperationsForDocument(documentOid, (op) => {
84
- const obj = objectMap.get(op.oid) || undefined;
85
- const newObj = (0, common_1.applyPatch)(obj, op.data);
86
- if (newObj) {
87
- (0, common_1.assignOid)(newObj, op.oid);
88
- }
89
- objectMap.set(op.oid, newObj);
90
- }, {
91
- transaction,
92
- // only apply operations up to the current time
93
- to: options.to || this.now,
94
- });
95
- const root = objectMap.get(documentOid);
96
- if (root) {
97
- (0, common_1.substituteRefsWithObjects)(root, objectMap);
98
- }
99
- return root;
100
- };
101
- this.getDocumentData = async (oid, opts) => {
102
- const transaction = this.createTransaction(['baselines', 'operations'], opts);
103
- const baselines = [];
104
- const operations = {};
105
- await Promise.all([
106
- this.baselines.iterateOverAllForDocument(oid, (baseline) => {
107
- baselines.push(baseline);
108
- }, {
109
- transaction,
110
- }),
111
- this.operations.iterateOverAllOperationsForDocument(oid, (op) => {
112
- var _a;
113
- var _b;
114
- (_a = operations[_b = op.oid]) !== null && _a !== void 0 ? _a : (operations[_b] = []);
115
- operations[op.oid].push(op);
116
- }, { transaction }),
117
- ]);
118
- return {
119
- baselines,
120
- operations,
121
- };
122
- };
123
- /**
124
- * Methods for writing data
125
- */
126
- /**
127
- * Acks that we have seen a timestamp to the server
128
- * and stores it as our local ackedLogicalTime if it's
129
- * greater than our current ackedLogicalTime.
130
- */
131
- this.ack = async (timestamp) => {
132
- const localReplicaInfo = await this.localReplica.get();
133
- // can't ack timestamps from the future.
134
- if (timestamp > this.now)
135
- return;
136
- this.emit('message', {
137
- type: 'ack',
138
- replicaId: localReplicaInfo.id,
139
- timestamp,
140
- });
141
- if (!this._closing &&
142
- (!localReplicaInfo.ackedLogicalTime ||
143
- timestamp > localReplicaInfo.ackedLogicalTime)) {
144
- this.localReplica.update({ ackedLogicalTime: timestamp });
145
- }
146
- };
147
- /**
148
- * Applies a patch to the document and stores it in the database.
149
- * @returns the oldest local history timestamp
150
- */
151
- this.insertLocalOperations = async (operations, opts) => {
152
- if (operations.length === 0)
153
- return;
154
- // await this.rebaseLock;
155
- this.log('debug', `Inserting ${operations.length} local operations`, operations);
156
- // add local flag, in place.
157
- for (const operation of operations) {
158
- operation.isLocal = true;
159
- }
160
- await this.operations.addOperations(operations, opts);
161
- const message = await this.messageCreator.createOperation({ operations });
162
- this.emit('message', message);
163
- // we can now enqueue and check for rebase opportunities
164
- this.tryAutonomousRebase();
165
- };
166
- /**
167
- * Inserts remote operations. This does not affect local history.
168
- * @returns a list of affected document OIDs
169
- */
170
- this.insertRemoteOperations = async (operations, opts) => {
171
- if (operations.length === 0)
172
- return [];
173
- // await this.rebaseLock;
174
- this.log('debug', `Inserting ${operations.length} remote operations`, operations);
175
- const affectedDocumentOids = await this.operations.addOperations(operations.map((patch) => (Object.assign(Object.assign({}, patch), { isLocal: false }))), opts);
176
- this.ack(operations[operations.length - 1].timestamp);
177
- return affectedDocumentOids;
178
- };
179
- this.insertRemoteBaselines = async (baselines, opts) => {
180
- if (baselines.length === 0)
181
- return [];
182
- this.log(`Inserting ${baselines.length} remote baselines`);
183
- await this.baselines.setAll(baselines, opts);
184
- // this.ack(baselines[baselines.length - 1].timestamp);
185
- const affectedOidSet = new Set();
186
- baselines.forEach((baseline) => {
187
- affectedOidSet.add((0, common_1.getOidRoot)(baseline.oid));
188
- });
189
- return Array.from(affectedOidSet);
190
- };
191
- this.insertData = async (data, opts) => {
192
- var _a;
193
- const transaction = this.createTransaction(['baselines', 'operations'], opts);
194
- if (data.baselines) {
195
- await this.insertRemoteBaselines(data.baselines, { transaction });
196
- }
197
- if ((_a = opts === null || opts === void 0 ? void 0 : opts.abort) === null || _a === void 0 ? void 0 : _a.aborted)
198
- return;
199
- if (data.operations) {
200
- if (data.isLocal) {
201
- await this.insertLocalOperations(data.operations, { transaction });
202
- }
203
- else {
204
- await this.insertRemoteOperations(data.operations, { transaction });
205
- }
206
- }
207
- };
208
- this.updateLastSynced = async (timestamp) => {
209
- if (this._closing)
210
- return;
211
- return this.localReplica.update({
212
- lastSyncedLogicalTime: timestamp,
213
- });
214
- };
215
- this.lastSyncedTimestamp = async () => {
216
- const localReplicaInfo = await this.localReplica.get();
217
- return localReplicaInfo.lastSyncedLogicalTime;
218
- };
219
- this.tryAutonomousRebase = async () => {
220
- if (this.disableRebasing)
221
- return;
222
- const localReplicaInfo = await this.localReplica.get();
223
- if (localReplicaInfo.lastSyncedLogicalTime)
224
- return; // cannot autonomously rebase if we've synced
225
- // but if we have never synced... we can rebase everything!
226
- await this.runRebase(this.now);
227
- };
228
- /**
229
- * Attempt to autonomously rebase local documents without server intervention.
230
- * This can currently only happen for a client who has never synced before.
231
- * The goal is to allow local-only clients to compress their history to exactly
232
- * their undo stack.
233
- */
234
- this.runRebase = async (globalAckTimestamp) => {
235
- if (this._closing)
236
- return;
237
- // find all operations before the global ack
238
- let lastTimestamp;
239
- const toRebase = new Set();
240
- const transaction = this.createTransaction(['baselines', 'operations']);
241
- let operationCount = 0;
242
- await this.operations.iterateOverAllOperations((patch) => {
243
- toRebase.add(patch.oid);
244
- lastTimestamp = patch.timestamp;
245
- operationCount++;
246
- }, {
247
- before: globalAckTimestamp,
248
- transaction,
249
- });
250
- if (!toRebase.size) {
251
- return;
252
- }
253
- if (this._closing) {
254
- return;
255
- }
256
- // rebase each affected document
257
- let newBaselines = [];
258
- for (const oid of toRebase) {
259
- newBaselines.push(await this.rebase(oid, lastTimestamp || globalAckTimestamp, transaction));
260
- }
261
- this.emit('rebase', newBaselines);
262
- };
263
- this.rebase = async (oid, upTo, providedTx) => {
264
- // including replica Id for testing I guess
265
- const replicaId = (await this.localReplica.get()).id;
266
- this.log('[', replicaId, ']', 'Rebasing', oid, 'up to', upTo);
267
- const transaction = providedTx || this.createTransaction(['operations', 'baselines']);
268
- const baseline = await this.baselines.get(oid, { transaction });
269
- let current = (baseline === null || baseline === void 0 ? void 0 : baseline.snapshot) || undefined;
270
- let operationsApplied = 0;
271
- const deletedRefs = [];
272
- await this.operations.iterateOverAllOperationsForEntity(oid, (patch, store) => {
273
- // FIXME: this seems like the wrong place to do this
274
- // but it's here as a safety measure...
275
- if (!baseline || patch.timestamp > baseline.timestamp) {
276
- current = (0, common_1.applyPatch)(current, patch.data, deletedRefs);
277
- }
278
- // delete all prior operations to the baseline
279
- operationsApplied++;
280
- store.delete(patch.oid_timestamp);
281
- }, {
282
- to: upTo,
283
- transaction,
284
- });
285
- if (current) {
286
- (0, common_1.assignOid)(current, oid);
287
- }
288
- const newBaseline = {
289
- oid,
290
- snapshot: current,
291
- timestamp: upTo,
292
- };
293
- if (newBaseline.snapshot) {
294
- await this.baselines.set(newBaseline, { transaction });
295
- }
296
- else {
297
- await this.baselines.delete(oid, { transaction });
298
- }
299
- this.log('debug', 'successfully rebased', oid, 'up to', upTo, ':', current, 'and deleted', operationsApplied, 'operations');
300
- // cleanup deleted refs
301
- if (deletedRefs.length) {
302
- const fileRefs = deletedRefs.filter(common_1.isFileRef);
303
- if (fileRefs.length) {
304
- this.emit('filesDeleted', fileRefs);
305
- }
306
- }
307
- return newBaseline;
308
- };
309
- this.reset = async () => {
310
- await this.operations.reset();
311
- await this.baselines.reset();
312
- await this.localReplica.reset();
313
- };
314
- this.updateSchema = async (schema, overrideConflict) => {
315
- const storedSchema = await this.schema.get();
316
- if (storedSchema) {
317
- // version changes will be handled by migration routines in
318
- // the actual idb database loading code (see: initializeDatabases)
319
- // but this check determines if the schema has been changed without
320
- // a version change. if so, it will error.
321
- if (overrideConflict === storedSchema.version &&
322
- storedSchema.version === schema.version &&
323
- JSON.stringify(storedSchema) !== JSON.stringify(schema)) {
324
- console.error(`Schema mismatch for version ${schema.version}
325
- ${JSON.stringify(storedSchema)}
326
- ${JSON.stringify(schema)}`);
327
- throw new Error('Schema has changed without a version change! Any changes to your schema must be accompanied by a change in schema version and a migration routine.');
328
- }
329
- }
330
- await this.schema.set(schema);
331
- };
332
- this.setGlobalAck = async (timestamp) => {
333
- if (this._closing)
334
- return;
335
- await this.ackInfo.setGlobalAck(timestamp);
336
- if (!this.disableRebasing) {
337
- await this.runRebase(timestamp);
338
- }
339
- };
340
- this.export = async () => {
341
- const db = this.db;
342
- const [baselines, operations] = await (0, idb_js_1.getAllFromObjectStores)(db, [
343
- 'baselines',
344
- 'operations',
345
- ]);
346
- const localReplica = await this.localReplica.get();
347
- const schema = await this.schema.get();
348
- if (!schema) {
349
- throw new Error('Cannot export Client data before initializing');
350
- }
351
- return {
352
- operations,
353
- baselines,
354
- localReplica,
355
- schema,
356
- };
357
- };
358
- /**
359
- * Resets local metadata and clears operation/baseline stores.
360
- * DOES NOT add operations/baselines - this should be done
361
- * through the normal higher level systems.
362
- */
363
- this.resetFrom = async (data) => {
364
- const db = this.db;
365
- const transaction = db.transaction(['baselines', 'operations', 'info'], 'readwrite');
366
- await (0, idb_js_1.storeRequestPromise)(transaction.objectStore('baselines').clear());
367
- await (0, idb_js_1.storeRequestPromise)(transaction.objectStore('operations').clear());
368
- await (0, idb_js_1.storeRequestPromise)(transaction.objectStore('info').clear());
369
- await this.localReplica.update({
370
- ackedLogicalTime: data.localReplica.ackedLogicalTime,
371
- lastSyncedLogicalTime: data.localReplica.lastSyncedLogicalTime,
372
- }, { transaction });
373
- };
374
- this.stats = async () => {
375
- const db = this.db;
376
- const operationsSize = await (0, idb_js_1.getSizeOfObjectStore)(db, 'operations');
377
- const baselinesSize = await (0, idb_js_1.getSizeOfObjectStore)(db, 'baselines');
378
- return {
379
- operationsSize,
380
- baselinesSize,
381
- };
382
- };
383
- this.context = context;
384
- this.schema = new SchemaStore_js_1.SchemaStore(context.metaDb, context.schema.version);
385
- this.operations = new OperationsStore_js_1.OperationsStore(this.db, { log: context.log });
386
- this.baselines = new BaselinesStore_js_1.BaselinesStore(this.db, { log: context.log });
387
- this.localReplica = new LocalReplicaStore_js_1.LocalReplicaStore(this.db);
388
- this.ackInfo = new AckInfoStore_js_1.AckInfoStore(this.db);
389
- this.messageCreator = new MessageCreator_js_1.MessageCreator(this);
390
- this.patchCreator = new common_1.PatchCreator(() => this.now);
391
- if (disableRebasing)
392
- this.disableRebasing = disableRebasing;
393
- }
394
- get db() {
395
- return this.context.metaDb;
396
- }
397
- get log() {
398
- return this.context.log;
399
- }
400
- get now() {
401
- return this.time.now(this.schema.currentVersion);
402
- }
403
- }
404
- exports.Metadata = Metadata;
405
- //# sourceMappingURL=Metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/metadata/Metadata.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import { ObjectIdentifier, Operation } from '@verdant-web/common';
2
- import { IDBService } from '../IDBService.js';
3
- export type ClientOperation = Operation & {
4
- isLocal: boolean;
5
- };
6
- export type StoredClientOperation = ClientOperation & {
7
- oid_timestamp: string;
8
- l_t: string;
9
- d_t: string;
10
- };
11
- export declare class OperationsStore extends IDBService {
12
- constructor(db: IDBDatabase, opts: {
13
- log?: (...args: any[]) => void;
14
- });
15
- /**
16
- * Iterates over every patch for the root and every sub-object
17
- * of a given document. Optionally limit by timestamp.
18
- */
19
- iterateOverAllOperationsForDocument: (oid: ObjectIdentifier, iterator: (patch: StoredClientOperation, store: IDBObjectStore) => void, { to, from, after, mode, transaction: providedTx, }?: {
20
- to?: string | undefined;
21
- from?: string | undefined;
22
- after?: string | undefined;
23
- mode?: "readonly" | "readwrite" | undefined;
24
- transaction?: IDBTransaction | undefined;
25
- }) => Promise<void>;
26
- iterateOverAllOperationsForEntity: (oid: ObjectIdentifier, iterator: (patch: StoredClientOperation, store: IDBObjectStore) => void, { after, to, mode, transaction: providedTx, }: {
27
- after?: string | undefined;
28
- to?: string | undefined;
29
- mode?: "readonly" | "readwrite" | undefined;
30
- transaction?: IDBTransaction | undefined;
31
- }) => Promise<void>;
32
- iterateOverAllOperationsForCollection: (collection: string, iterator: (patch: StoredClientOperation, store: IDBObjectStore) => void, { after, to, mode, transaction: providedTx, }: {
33
- after?: string | undefined;
34
- to?: string | undefined;
35
- mode?: "readonly" | "readwrite" | undefined;
36
- transaction?: IDBTransaction | undefined;
37
- }) => Promise<void>;
38
- iterateOverAllLocalOperations: (iterator: (patch: ClientOperation, store: IDBObjectStore) => void, { before, after, mode, transaction: providedTx, }: {
39
- before?: string | null | undefined;
40
- after?: string | null | undefined;
41
- mode?: "readonly" | "readwrite" | undefined;
42
- transaction?: IDBTransaction | undefined;
43
- }) => Promise<void>;
44
- iterateOverAllOperations: (iterator: (patch: ClientOperation, store: IDBObjectStore) => void, { before, transaction, mode, from, }: {
45
- /** Ending timestamp, exclusive */
46
- before?: string | null | undefined;
47
- /** Starting timestamp, inclusive */
48
- from?: string | null | undefined;
49
- transaction?: IDBTransaction | undefined;
50
- mode?: "readonly" | "readwrite" | undefined;
51
- }) => Promise<void>;
52
- /**
53
- * Adds a set of patches to the database.
54
- * @returns a list of affected root document OIDs.
55
- */
56
- addOperations: (patches: ClientOperation[], { transaction }?: {
57
- transaction?: IDBTransaction | undefined;
58
- }) => Promise<ObjectIdentifier[]>;
59
- private addCompoundIndexes;
60
- private insert;
61
- reset: () => Promise<undefined>;
62
- }
@@ -1,179 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperationsStore = void 0;
4
- const common_1 = require("@verdant-web/common");
5
- const IDBService_js_1 = require("../IDBService.js");
6
- const idb_js_1 = require("../idb.js");
7
- class OperationsStore extends IDBService_js_1.IDBService {
8
- constructor(db, opts) {
9
- super(db, opts);
10
- /**
11
- * Iterates over every patch for the root and every sub-object
12
- * of a given document. Optionally limit by timestamp.
13
- */
14
- this.iterateOverAllOperationsForDocument = async (oid, iterator, { to, from, after, mode = 'readonly', transaction: providedTx, } = {}) => {
15
- const transaction = providedTx ||
16
- this.createTransaction(['operations'], {
17
- mode,
18
- });
19
- const store = transaction.objectStore('operations');
20
- const index = store.index('d_t');
21
- const startTimestamp = from || after;
22
- const start = startTimestamp
23
- ? (0, common_1.createCompoundIndexValue)(oid, startTimestamp)
24
- : (0, common_1.createLowerBoundIndexValue)(oid);
25
- const end = to
26
- ? (0, common_1.createCompoundIndexValue)(oid, to)
27
- : (0, common_1.createUpperBoundIndexValue)(oid);
28
- const range = IDBKeyRange.bound(start, end, !!after, false);
29
- const request = index.openCursor(range, 'next');
30
- return new Promise((resolve, reject) => {
31
- let previousTimestamp;
32
- request.onsuccess = (event) => {
33
- const cursor = request.result;
34
- if (cursor) {
35
- const value = cursor.value;
36
- (0, common_1.assert)(value.oid.startsWith(oid));
37
- (0, common_1.assert)(previousTimestamp === undefined ||
38
- previousTimestamp <= value.timestamp, `expected ${previousTimestamp} <= ${value.timestamp}`);
39
- iterator(value, store);
40
- previousTimestamp = value.timestamp;
41
- cursor.continue();
42
- }
43
- else {
44
- resolve();
45
- }
46
- };
47
- request.onerror = (event) => {
48
- if ((0, idb_js_1.isAbortError)(request.error)) {
49
- resolve();
50
- return;
51
- }
52
- else {
53
- reject(request.error);
54
- }
55
- };
56
- });
57
- };
58
- this.iterateOverAllOperationsForEntity = async (oid, iterator, { after, to, mode, transaction: providedTx, }) => {
59
- const transaction = providedTx || this.createTransaction(['operations'], { mode });
60
- const store = transaction.objectStore('operations');
61
- const start = after
62
- ? (0, common_1.createCompoundIndexValue)(oid, after)
63
- : (0, common_1.createLowerBoundIndexValue)(oid);
64
- const end = to
65
- ? (0, common_1.createCompoundIndexValue)(oid, to)
66
- : (0, common_1.createUpperBoundIndexValue)(oid);
67
- const range = IDBKeyRange.bound(start, end, !!after, false);
68
- const request = store.openCursor(range, 'next');
69
- return new Promise((resolve, reject) => {
70
- let previousTimestamp;
71
- request.onsuccess = (event) => {
72
- const cursor = request.result;
73
- if (cursor) {
74
- const value = cursor.value;
75
- (0, common_1.assert)(value.oid.startsWith(oid));
76
- (0, common_1.assert)(previousTimestamp === undefined ||
77
- previousTimestamp <= value.timestamp, `expected ${previousTimestamp} <= ${value.timestamp}`);
78
- iterator(value, store);
79
- previousTimestamp = value.timestamp;
80
- cursor.continue();
81
- }
82
- else {
83
- resolve();
84
- }
85
- };
86
- request.onerror = (event) => {
87
- if ((0, idb_js_1.isAbortError)(request.error)) {
88
- resolve();
89
- }
90
- else {
91
- reject(request.error);
92
- }
93
- };
94
- });
95
- };
96
- this.iterateOverAllOperationsForCollection = async (collection, iterator, { after, to, mode, transaction: providedTx, }) => {
97
- const transaction = providedTx || this.createTransaction(['operations'], { mode });
98
- return this.iterate('operations', (store) => {
99
- return store.openCursor(IDBKeyRange.bound(collection, collection + '\uffff', false, false), 'next');
100
- }, iterator, { mode, transaction });
101
- };
102
- this.iterateOverAllLocalOperations = async (iterator, { before, after, mode = 'readonly', transaction: providedTx, }) => {
103
- const transaction = providedTx || this.createTransaction(['operations'], { mode });
104
- const store = transaction.objectStore('operations');
105
- const index = store.index('l_t');
106
- const start = after
107
- ? (0, common_1.createCompoundIndexValue)(true, after)
108
- : (0, common_1.createLowerBoundIndexValue)(true);
109
- const end = before
110
- ? (0, common_1.createCompoundIndexValue)(true, before)
111
- : (0, common_1.createUpperBoundIndexValue)(true);
112
- const range = IDBKeyRange.bound(start, end, !!after, true);
113
- const request = index.openCursor(range, 'next');
114
- return new Promise((resolve, reject) => {
115
- let previousTimestamp;
116
- request.onsuccess = (event) => {
117
- const cursor = request.result;
118
- if (cursor) {
119
- const value = cursor.value;
120
- (0, common_1.assert)(previousTimestamp === undefined ||
121
- previousTimestamp <= value.timestamp, `expected ${previousTimestamp} <= ${value.timestamp}`);
122
- iterator(value, store);
123
- previousTimestamp = value.timestamp;
124
- cursor.continue();
125
- }
126
- else {
127
- resolve();
128
- }
129
- };
130
- request.onerror = (event) => {
131
- if ((0, idb_js_1.isAbortError)(request.error)) {
132
- resolve();
133
- }
134
- else {
135
- reject(request.error);
136
- }
137
- };
138
- });
139
- };
140
- this.iterateOverAllOperations = async (iterator, { before, transaction, mode, from, }) => {
141
- await this.iterate('operations', (store) => {
142
- const start = from ? (0, common_1.createLowerBoundIndexValue)(from) : undefined;
143
- const end = before ? (0, common_1.createUpperBoundIndexValue)(before) : undefined;
144
- const range = start && end
145
- ? window.IDBKeyRange.bound(start, end, false, true)
146
- : start
147
- ? window.IDBKeyRange.lowerBound(start, false)
148
- : end
149
- ? window.IDBKeyRange.upperBound(end, true)
150
- : undefined;
151
- const index = store.index('timestamp');
152
- return index.openCursor(range, 'next');
153
- }, iterator, { mode, transaction });
154
- };
155
- /**
156
- * Adds a set of patches to the database.
157
- * @returns a list of affected root document OIDs.
158
- */
159
- this.addOperations = async (patches, { transaction } = {}) => {
160
- return this.insert(patches.map(this.addCompoundIndexes), { transaction });
161
- };
162
- this.addCompoundIndexes = (patch) => {
163
- return Object.assign(Object.assign({}, patch), { oid_timestamp: (0, common_1.createCompoundIndexValue)(patch.oid, patch.timestamp), l_t: (0, common_1.createCompoundIndexValue)(patch.isLocal, patch.timestamp), d_t: (0, common_1.createCompoundIndexValue)((0, common_1.getOidRoot)(patch.oid), patch.timestamp) });
164
- };
165
- this.insert = async (operations, { transaction }) => {
166
- const affected = new Set();
167
- await this.runAll('operations', (store) => operations.map((op) => {
168
- affected.add((0, common_1.getOidRoot)(op.oid));
169
- return store.put(op);
170
- }), { mode: 'readwrite', transaction });
171
- return Array.from(affected);
172
- };
173
- this.reset = () => {
174
- return this.clear('operations');
175
- };
176
- }
177
- }
178
- exports.OperationsStore = OperationsStore;
179
- //# sourceMappingURL=OperationsStore.js.map