@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,96 +0,0 @@
1
- import { EventSubscriber, ObjectIdentifier, Operation, StorageFieldSchema, StorageFieldsSchema } from '@lo-fi/common';
2
- import { EntityStore } from './EntityStore.js';
3
- export declare const UPDATE = "@@update";
4
- export declare const DELETE = "@@delete";
5
- interface CacheEvents {
6
- onSubscribed: () => void;
7
- onAllUnsubscribed: () => void;
8
- }
9
- declare type AccessibleEntityProperty<T> = T extends Array<any> ? number : T extends object ? keyof T : never;
10
- declare type DataFromInit<Init> = {
11
- [Key in keyof Init]-?: Init[Key];
12
- };
13
- declare type EntityPropertyValue<Init, K extends keyof Init | number> = Init extends Array<any> ? Init[K] extends Array<any> ? ListEntity<Init[K][number]> : Init[K] extends object ? ObjectEntity<Init[K]> : Init[K] : Init extends object ? K extends keyof Init ? Init[K] extends Array<any> ? ListEntity<Init[K][number]> : Init[K] extends object ? ObjectEntity<Init[K]> : Init[K] : never : never;
14
- export declare function updateEntity(entity: EntityBase<any>, newValue: any): void;
15
- export declare function deleteEntity(entity: EntityBase<any>): void;
16
- export declare abstract class EntityBase<Snapshot> {
17
- readonly oid: ObjectIdentifier;
18
- protected readonly store: EntityStore;
19
- protected readonly cacheEvents: CacheEvents;
20
- protected readonly fieldSchema: StorageFieldSchema | StorageFieldsSchema;
21
- protected _current: any | null;
22
- protected _override: any | null;
23
- protected subObjectCache: Map<ObjectIdentifier, EntityBase<any>>;
24
- private cachedSnapshot;
25
- protected _deleted: boolean;
26
- protected events: EventSubscriber<{
27
- change: () => void;
28
- delete: () => void;
29
- restore: () => void;
30
- }>;
31
- protected get value(): any;
32
- get deleted(): boolean;
33
- constructor(oid: ObjectIdentifier, initial: Snapshot | undefined, store: EntityStore, cacheEvents: CacheEvents, fieldSchema: StorageFieldSchema | StorageFieldsSchema);
34
- protected getChildFieldSchema: (key: any) => any;
35
- protected [DELETE]: () => void;
36
- protected [UPDATE]: (initial: Snapshot | undefined) => void;
37
- protected createSubObject: (oid: ObjectIdentifier, value: any, key: any) => EntityBase<any>;
38
- dispose: () => void;
39
- subscribe: (event: 'change' | 'delete' | 'restore', callback: () => void) => () => void;
40
- protected addPatches: (patches: Operation[]) => void;
41
- protected cloneCurrent: () => any;
42
- /**
43
- * When an entity creates patches, it applies them in-memory for
44
- * immediate feedback. But not all patches will relate to its immediate
45
- * root object. So entities propagate patches downwards to their
46
- * sub-objects for in-memory application.
47
- */
48
- protected propagateImmediateOperations: (operations: Operation[]) => void;
49
- /**
50
- * Creates empty sub-objects for any missing object refs in
51
- * children of this object according to its in-memory immediate
52
- * value. This is used to prep sub-objects when applying immediate
53
- * propagated changes before those sub-objects have been created
54
- * and exist in storage.
55
- */
56
- protected addMissingSubObjectsForMemoryChanges: () => void;
57
- protected getSubObject: (oid: ObjectIdentifier) => EntityBase<any> | undefined;
58
- protected wrapValue: <Key extends AccessibleEntityProperty<Snapshot>>(value: any, key: Key) => EntityPropertyValue<Snapshot, Key>;
59
- get: <Key extends AccessibleEntityProperty<Snapshot>>(key: Key) => EntityPropertyValue<Snapshot, Key>;
60
- /**
61
- * Returns a copy of the entity and all sub-objects as
62
- * a plain object or array.
63
- */
64
- getSnapshot: () => Snapshot | null;
65
- }
66
- export declare class ListEntity<ItemInit> extends EntityBase<DataFromInit<ItemInit>[]> implements Iterable<EntityPropertyValue<DataFromInit<ItemInit>[], number>> {
67
- private getItemOid;
68
- get length(): any;
69
- set: (index: number, value: ItemInit) => void;
70
- push: (value: ItemInit) => void;
71
- insert: (index: number, value: ItemInit) => void;
72
- move: (from: number, to: number) => void;
73
- moveItem: (item: DataFromInit<ItemInit>, to: number) => void;
74
- delete: (index: number) => void;
75
- remove: (item: DataFromInit<ItemInit>) => void;
76
- [Symbol.iterator](): {
77
- next: () => {
78
- readonly value: DataFromInit<ItemInit> extends any[] ? ListEntity<(any[] & DataFromInit<ItemInit>)[number]> : DataFromInit<ItemInit> extends object ? ObjectEntity<DataFromInit<ItemInit>> : DataFromInit<ItemInit>;
79
- readonly done: false;
80
- } | {
81
- readonly value: undefined;
82
- readonly done: true;
83
- };
84
- };
85
- private getAsWrapped;
86
- map: <U>(callback: (value: EntityPropertyValue<DataFromInit<ItemInit>[], number>, index: number) => U) => U[];
87
- filter: (callback: (value: EntityPropertyValue<DataFromInit<ItemInit>[], number>, index: number) => boolean) => (DataFromInit<ItemInit> extends any[] ? ListEntity<(any[] & DataFromInit<ItemInit>)[number]> : DataFromInit<ItemInit> extends object ? ObjectEntity<DataFromInit<ItemInit>> : DataFromInit<ItemInit>)[];
88
- }
89
- export declare class ObjectEntity<Init> extends EntityBase<DataFromInit<Init>> {
90
- set: <Key extends keyof Init>(key: Key, value: Init[Key]) => void;
91
- remove: (key: string) => void;
92
- update: (value: Partial<DataFromInit<Init>>) => void;
93
- }
94
- export declare type Entity = ListEntity<any> | ObjectEntity<any>;
95
- export declare type EntityShape<E extends EntityBase<any>> = E extends ListEntity<infer T> ? T[] : E extends ObjectEntity<infer T> ? T : never;
96
- export {};
@@ -1,345 +0,0 @@
1
- "use strict";
2
- var _a, _b;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ObjectEntity = exports.ListEntity = exports.EntityBase = exports.deleteEntity = exports.updateEntity = exports.DELETE = exports.UPDATE = void 0;
5
- const common_1 = require("@lo-fi/common");
6
- exports.UPDATE = '@@update';
7
- exports.DELETE = '@@delete';
8
- function updateEntity(entity, newValue) {
9
- entity[exports.UPDATE](newValue);
10
- }
11
- exports.updateEntity = updateEntity;
12
- function deleteEntity(entity) {
13
- entity[exports.DELETE]();
14
- }
15
- exports.deleteEntity = deleteEntity;
16
- class EntityBase {
17
- constructor(oid, initial, store, cacheEvents, fieldSchema) {
18
- this.oid = oid;
19
- this.store = store;
20
- this.cacheEvents = cacheEvents;
21
- this.fieldSchema = fieldSchema;
22
- // if current is null, the entity was deleted.
23
- this._current = null;
24
- // while changes are propagating, realtime alterations are set on this
25
- // object, which overshadows _current.
26
- this._override = null;
27
- this.subObjectCache = new Map();
28
- this.cachedSnapshot = null;
29
- this._deleted = false;
30
- this.events = new common_1.EventSubscriber();
31
- this.getChildFieldSchema = (key) => {
32
- if (this.fieldSchema.type === 'object') {
33
- return this.fieldSchema.properties[key];
34
- }
35
- else if (this.fieldSchema.type === 'array') {
36
- return this.fieldSchema.items;
37
- }
38
- else if (this.fieldSchema.type === 'map') {
39
- return this.fieldSchema.values;
40
- }
41
- else if (this.fieldSchema.type === 'any') {
42
- return this.fieldSchema;
43
- }
44
- throw new Error('Invalid field schema');
45
- };
46
- this[_a] = () => {
47
- // entity was deleted
48
- this._current = null;
49
- this._override = null;
50
- this.cachedSnapshot = null;
51
- this.subObjectCache.clear();
52
- this._deleted = true;
53
- this.events.emit('delete');
54
- };
55
- this[_b] = (initial) => {
56
- const { refs, oidKeyPairs } = (0, common_1.normalizeFirstLevel)(initial);
57
- const self = refs.get(this.oid);
58
- this._current = self ? (0, common_1.removeOid)(self) : undefined;
59
- // update any existing sub-object values
60
- const droppedOids = new Set();
61
- const newOids = new Set(refs.keys());
62
- newOids.delete(this.oid); // remove own oid
63
- for (const [oid, entity] of this.subObjectCache) {
64
- const incomingValue = refs.get(oid);
65
- entity[exports.UPDATE](incomingValue);
66
- // update our bookkeeping
67
- if (incomingValue === undefined) {
68
- droppedOids.add(oid);
69
- }
70
- newOids.delete(oid);
71
- }
72
- // any new keys are new sub-objects that must
73
- // be created
74
- for (const oid of newOids) {
75
- const value = refs.get(oid);
76
- const entity = this.createSubObject(oid, value, oidKeyPairs.get(oid));
77
- this.subObjectCache.set(oid, entity);
78
- }
79
- // any dropped keys are sub-objects that must be
80
- // removed
81
- for (const oid of droppedOids) {
82
- this.subObjectCache.delete(oid);
83
- }
84
- // clear overrides
85
- this._override = null;
86
- // reset snapshot dirty state
87
- this.cachedSnapshot = null;
88
- if (this._deleted && this._current) {
89
- this._deleted = false;
90
- this.events.emit('restore');
91
- }
92
- this.events.emit('change');
93
- };
94
- this.createSubObject = (oid, value, key) => {
95
- if (Array.isArray(value)) {
96
- return new ListEntity(oid, value, this.store, this.cacheEvents, this.getChildFieldSchema(key));
97
- }
98
- else {
99
- return new ObjectEntity(oid, value, this.store, this.cacheEvents, this.getChildFieldSchema(key));
100
- }
101
- };
102
- this.dispose = () => {
103
- // TODO: implement
104
- };
105
- this.subscribe = (event, callback) => {
106
- const unsubscribe = this.events.subscribe(event, callback);
107
- if (this.events.subscriberCount('change') === 1) {
108
- this.cacheEvents.onSubscribed();
109
- }
110
- return () => {
111
- unsubscribe();
112
- if (this.events.subscriberCount('change') === 0) {
113
- queueMicrotask(() => {
114
- if (this.events.subscriberCount('change') === 0) {
115
- this.cacheEvents.onAllUnsubscribed();
116
- }
117
- });
118
- }
119
- };
120
- };
121
- this.addPatches = (patches) => {
122
- this.store.enqueueOperations(patches);
123
- // immediately apply patches to _override
124
- this.propagateImmediateOperations(patches);
125
- };
126
- this.cloneCurrent = () => {
127
- if (this._current === undefined) {
128
- return undefined;
129
- }
130
- return (0, common_1.cloneDeep)(this._current);
131
- };
132
- /**
133
- * When an entity creates patches, it applies them in-memory for
134
- * immediate feedback. But not all patches will relate to its immediate
135
- * root object. So entities propagate patches downwards to their
136
- * sub-objects for in-memory application.
137
- */
138
- this.propagateImmediateOperations = (operations) => {
139
- for (const patch of operations) {
140
- if (patch.oid === this.oid) {
141
- // apply it to _override
142
- this._override = (0, common_1.applyPatch)(this._override || this.cloneCurrent(), patch.data);
143
- }
144
- }
145
- this.addMissingSubObjectsForMemoryChanges();
146
- for (const entity of this.subObjectCache.values()) {
147
- entity.propagateImmediateOperations(operations);
148
- }
149
- // invalidate snapshot
150
- this.cachedSnapshot = null;
151
- // inform subscribers of change
152
- this.events.emit('change');
153
- };
154
- /**
155
- * Creates empty sub-objects for any missing object refs in
156
- * children of this object according to its in-memory immediate
157
- * value. This is used to prep sub-objects when applying immediate
158
- * propagated changes before those sub-objects have been created
159
- * and exist in storage.
160
- */
161
- this.addMissingSubObjectsForMemoryChanges = () => {
162
- if (!this._override) {
163
- return;
164
- }
165
- if (Array.isArray(this._override)) {
166
- for (let i = 0; i < this._override.length; i++) {
167
- const value = this._override[i];
168
- if ((0, common_1.isObjectRef)(value) && !this.subObjectCache.has(value.id)) {
169
- const entity = this.createSubObject(value.id, undefined, i);
170
- this.subObjectCache.set(value.id, entity);
171
- }
172
- }
173
- }
174
- else if ((0, common_1.isObject)(this._override)) {
175
- for (const [key, value] of Object.entries(this._override)) {
176
- if ((0, common_1.isObjectRef)(value) && !this.subObjectCache.has(value.id)) {
177
- const entity = this.createSubObject(value.id, undefined, key);
178
- this.subObjectCache.set(value.id, entity);
179
- }
180
- }
181
- }
182
- };
183
- this.getSubObject = (oid) => {
184
- return this.subObjectCache.get(oid);
185
- };
186
- this.wrapValue = (value, key) => {
187
- if ((0, common_1.isObjectRef)(value)) {
188
- const oid = value.id;
189
- const subObject = this.getSubObject(oid);
190
- if (subObject) {
191
- return subObject;
192
- }
193
- throw new Error(`CACHE MISS: Subobject ${oid} does not exist on ${this.oid}`);
194
- }
195
- return value;
196
- };
197
- this.get = (key) => {
198
- if (this._deleted) {
199
- throw new Error('Cannot access deleted entity');
200
- }
201
- const value = this.value[key];
202
- return this.wrapValue(value, key);
203
- };
204
- /**
205
- * Returns a copy of the entity and all sub-objects as
206
- * a plain object or array.
207
- */
208
- this.getSnapshot = () => {
209
- var _c;
210
- if (!this.value) {
211
- return null;
212
- }
213
- if (!this.cachedSnapshot) {
214
- if (Array.isArray(this.value)) {
215
- this.cachedSnapshot = this.value.map((item) => {
216
- var _c;
217
- if ((0, common_1.isObjectRef)(item)) {
218
- return (_c = this.getSubObject(item.id)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
219
- }
220
- return item;
221
- });
222
- }
223
- else {
224
- const snapshot = Object.assign({}, this.value);
225
- for (const [key, value] of Object.entries(snapshot)) {
226
- if ((0, common_1.isObjectRef)(value)) {
227
- snapshot[key] = (_c = this.getSubObject(value.id)) === null || _c === void 0 ? void 0 : _c.getSnapshot();
228
- }
229
- }
230
- this.cachedSnapshot = snapshot;
231
- }
232
- }
233
- return this.cachedSnapshot;
234
- };
235
- this[exports.UPDATE](initial);
236
- }
237
- get value() {
238
- return this._override || this._current;
239
- }
240
- get deleted() {
241
- return this._deleted;
242
- }
243
- }
244
- exports.EntityBase = EntityBase;
245
- _a = exports.DELETE, _b = exports.UPDATE;
246
- class ListEntity extends EntityBase {
247
- constructor() {
248
- super(...arguments);
249
- this.getItemOid = (item) => {
250
- const itemOid = (0, common_1.maybeGetOid)(item);
251
- if (!itemOid || !this.subObjectCache.has(itemOid)) {
252
- throw new Error(`Cannot move object ${JSON.stringify(item)} which does not exist in this list`);
253
- }
254
- return itemOid;
255
- };
256
- this.set = (index, value) => {
257
- const fieldSchema = this.getChildFieldSchema(index);
258
- if (fieldSchema) {
259
- (0, common_1.traverseCollectionFieldsAndApplyDefaults)(value, fieldSchema);
260
- }
261
- this.addPatches(this.store.meta.patchCreator.createSet(this.oid, index, value));
262
- };
263
- this.push = (value) => {
264
- const fieldSchema = this.getChildFieldSchema(this.value.length);
265
- if (fieldSchema) {
266
- (0, common_1.traverseCollectionFieldsAndApplyDefaults)(value, fieldSchema);
267
- }
268
- this.addPatches(this.store.meta.patchCreator.createListPush(this.oid, value));
269
- };
270
- this.insert = (index, value) => {
271
- const fieldSchema = this.getChildFieldSchema(index);
272
- if (fieldSchema) {
273
- (0, common_1.traverseCollectionFieldsAndApplyDefaults)(value, fieldSchema);
274
- }
275
- this.addPatches(this.store.meta.patchCreator.createListInsert(this.oid, index, value));
276
- };
277
- this.move = (from, to) => {
278
- this.addPatches(this.store.meta.patchCreator.createListMoveByIndex(this.oid, from, to));
279
- };
280
- this.moveItem = (item, to) => {
281
- this.addPatches(this.store.meta.patchCreator.createListMoveByRef(this.oid, (0, common_1.createRef)(this.getItemOid(item)), to));
282
- };
283
- this.delete = (index) => {
284
- this.addPatches(this.store.meta.patchCreator.createListDelete(this.oid, index));
285
- };
286
- this.remove = (item) => {
287
- this.addPatches(this.store.meta.patchCreator.createListRemove(this.oid, (0, common_1.createRef)(this.getItemOid(item))));
288
- };
289
- // additional access methods
290
- this.getAsWrapped = () => {
291
- return this.value.map(this.wrapValue);
292
- };
293
- this.map = (callback) => {
294
- return this.getAsWrapped().map(callback);
295
- };
296
- this.filter = (callback) => {
297
- return this.getAsWrapped().filter((val, index) => {
298
- return callback(val, index);
299
- });
300
- };
301
- }
302
- get length() {
303
- return this.value.length;
304
- }
305
- // list implements an iterator which maps items to wrapped
306
- // versions
307
- [Symbol.iterator]() {
308
- let index = 0;
309
- return {
310
- next: () => {
311
- if (index < this.value.length) {
312
- return {
313
- value: this.get(index++),
314
- done: false,
315
- };
316
- }
317
- return {
318
- value: undefined,
319
- done: true,
320
- };
321
- },
322
- };
323
- }
324
- }
325
- exports.ListEntity = ListEntity;
326
- class ObjectEntity extends EntityBase {
327
- constructor() {
328
- super(...arguments);
329
- this.set = (key, value) => {
330
- const fieldSchema = this.getChildFieldSchema(key);
331
- if (fieldSchema) {
332
- (0, common_1.traverseCollectionFieldsAndApplyDefaults)(value, fieldSchema);
333
- }
334
- this.addPatches(this.store.meta.patchCreator.createSet(this.oid, key, value));
335
- };
336
- this.remove = (key) => {
337
- this.addPatches(this.store.meta.patchCreator.createRemove(this.oid, key));
338
- };
339
- this.update = (value) => {
340
- this.addPatches(this.store.meta.patchCreator.createDiff(this.value, (0, common_1.assignOid)(value, this.oid)));
341
- };
342
- }
343
- }
344
- exports.ObjectEntity = ObjectEntity;
345
- //# sourceMappingURL=Entity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/Entity.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { EventSubscriber, ObjectIdentifier, Operation, StorageSchema, ClientMessage } from '@lo-fi/common';
2
- import { EntityBase, ObjectEntity } from './Entity.js';
3
- import { Metadata } from './metadata/Metadata.js';
4
- export declare class EntityStore extends EventSubscriber<{
5
- collectionsChanged: (collections: string[]) => void;
6
- message: (message: ClientMessage) => void;
7
- }> {
8
- private readonly db;
9
- private readonly schema;
10
- readonly meta: Metadata;
11
- private cache;
12
- constructor(db: IDBDatabase, schema: StorageSchema, meta: Metadata);
13
- onSubscribed: (self: EntityBase<any>) => void;
14
- onAllUnsubscribed: (self: EntityBase<any>) => void;
15
- get: (initial: any) => EntityBase<any> | ObjectEntity<any>;
16
- /**
17
- * TODO: disambiguate retrieving documents and live objects.
18
- * Find a place for this.
19
- */
20
- getFromOid: (oid: ObjectIdentifier) => Promise<EntityBase<any> | ObjectEntity<any> | null>;
21
- create: (initial: any, oid: ObjectIdentifier) => Promise<EntityBase<any> | ObjectEntity<any>>;
22
- private pendingOperations;
23
- enqueueOperations: (operations: Operation[]) => void;
24
- private flushPatches;
25
- private submitOperations;
26
- /**
27
- * Internal implementation which doesn't emit events.
28
- */
29
- private doRefresh;
30
- refresh: (oid: ObjectIdentifier) => Promise<void>;
31
- refreshAll: (oids: ObjectIdentifier[]) => Promise<void>;
32
- delete: (oid: ObjectIdentifier) => Promise<void>;
33
- private storeView;
34
- private stripIndexes;
35
- reset: () => Promise<void>;
36
- }
@@ -1,172 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EntityStore = void 0;
4
- const common_1 = require("@lo-fi/common");
5
- const Entity_js_1 = require("./Entity.js");
6
- const idb_js_1 = require("./idb.js");
7
- const indexes_js_1 = require("./indexes.js");
8
- class EntityStore extends common_1.EventSubscriber {
9
- constructor(db, schema, meta) {
10
- super();
11
- this.db = db;
12
- this.schema = schema;
13
- this.meta = meta;
14
- this.cache = new Map();
15
- this.onSubscribed = (self) => {
16
- this.cache.set(self.oid, self);
17
- };
18
- this.onAllUnsubscribed = (self) => {
19
- this.cache.delete(self.oid);
20
- };
21
- this.get = (initial) => {
22
- const oid = (0, common_1.getOid)(initial);
23
- const existing = this.cache.get(oid);
24
- if (existing) {
25
- return existing;
26
- }
27
- const { collection } = (0, common_1.decomposeOid)(oid);
28
- this.stripIndexes(collection, initial);
29
- const entity = new Entity_js_1.ObjectEntity(oid, initial, this, {
30
- onSubscribed: () => this.onSubscribed(entity),
31
- onAllUnsubscribed: () => this.onAllUnsubscribed(entity),
32
- }, {
33
- type: 'object',
34
- properties: this.schema.collections[collection].fields,
35
- });
36
- return entity;
37
- };
38
- /**
39
- * TODO: disambiguate retrieving documents and live objects.
40
- * Find a place for this.
41
- */
42
- this.getFromOid = async (oid) => {
43
- const existing = this.cache.get(oid);
44
- if (existing) {
45
- return existing;
46
- }
47
- const { collection } = (0, common_1.decomposeOid)(oid);
48
- const store = this.db
49
- .transaction(collection, 'readonly')
50
- .objectStore(collection);
51
- const result = await (0, idb_js_1.storeRequestPromise)(store.get(oid));
52
- if (result) {
53
- return this.get(result);
54
- }
55
- else {
56
- return null;
57
- }
58
- };
59
- this.create = async (initial, oid) => {
60
- (0, common_1.assignOid)(initial, oid);
61
- const operations = this.meta.patchCreator.createInitialize(initial, oid);
62
- // don't enqueue these, submit as distinct operation
63
- await this.submitOperations(operations);
64
- return this.get(initial);
65
- };
66
- this.pendingOperations = [];
67
- this.enqueueOperations = (operations) => {
68
- const isFirstSet = this.pendingOperations.length === 0;
69
- this.pendingOperations.push(...operations);
70
- if (isFirstSet) {
71
- queueMicrotask(this.flushPatches);
72
- }
73
- };
74
- this.flushPatches = async () => {
75
- if (!this.pendingOperations.length) {
76
- return;
77
- }
78
- await this.submitOperations(this.pendingOperations);
79
- this.pendingOperations = [];
80
- };
81
- this.submitOperations = async (operations) => {
82
- const oldestHistoryTimestamp = await this.meta.insertLocalOperation(operations);
83
- const operation = await this.meta.messageCreator.createOperation({
84
- operations,
85
- oldestHistoryTimestamp,
86
- });
87
- this.emit('message', operation);
88
- const affectedDocuments = (0, common_1.getRoots)(operations.map((p) => p.oid));
89
- await Promise.all(affectedDocuments.map(this.refresh));
90
- // TODO: find a more efficient and straightforward way to update affected
91
- // queries
92
- const affectedCollections = new Set(affectedDocuments.map((oid) => (0, common_1.decomposeOid)(oid).collection));
93
- this.emit('collectionsChanged', Array.from(affectedCollections));
94
- };
95
- /**
96
- * Internal implementation which doesn't emit events.
97
- */
98
- this.doRefresh = async (oid) => {
99
- const view = await this.meta.getComputedDocument(oid);
100
- await this.storeView(oid, view);
101
- const entity = this.cache.get(oid);
102
- if (entity) {
103
- if (view === undefined) {
104
- (0, Entity_js_1.deleteEntity)(entity);
105
- }
106
- else {
107
- (0, Entity_js_1.updateEntity)(entity, view);
108
- }
109
- }
110
- };
111
- this.refresh = async (oid) => {
112
- console.log('Refreshing', oid);
113
- await this.doRefresh(oid);
114
- this.emit('collectionsChanged', [(0, common_1.decomposeOid)(oid).collection]);
115
- };
116
- this.refreshAll = async (oids) => {
117
- const affectedCollections = new Set();
118
- for (const oid of oids) {
119
- await this.doRefresh(oid);
120
- affectedCollections.add((0, common_1.decomposeOid)(oid).collection);
121
- }
122
- this.emit('collectionsChanged', Array.from(affectedCollections));
123
- };
124
- this.delete = async (oid) => {
125
- (0, common_1.assert)(oid === (0, common_1.getOidRoot)(oid), 'Only root documents may be deleted via Storage methods');
126
- const patches = this.meta.patchCreator.createDelete(oid);
127
- // don't enqueue these, submit as distinct operation
128
- await this.submitOperations(patches);
129
- };
130
- this.storeView = async (oid, view) => {
131
- console.debug('Storing view', oid, view);
132
- const isDeleted = !view;
133
- if (isDeleted) {
134
- // delete from database
135
- const { collection } = (0, common_1.decomposeOid)(oid);
136
- const store = this.db
137
- .transaction(collection, 'readwrite')
138
- .objectStore(collection);
139
- const { id } = (0, common_1.decomposeOid)(oid);
140
- await (0, idb_js_1.storeRequestPromise)(store.delete(id));
141
- }
142
- else {
143
- const { collection, id } = (0, common_1.decomposeOid)(oid);
144
- const stored = Object.assign({}, view);
145
- // apply synthetic and compound index values before storing
146
- Object.assign(stored, (0, indexes_js_1.computeSynthetics)(this.schema.collections[collection], stored));
147
- Object.assign(stored, (0, indexes_js_1.computeCompoundIndices)(this.schema.collections[collection], stored));
148
- const tx = this.db.transaction(collection, 'readwrite');
149
- const store = tx.objectStore(collection);
150
- await (0, idb_js_1.storeRequestPromise)(store.put(stored));
151
- }
152
- };
153
- this.stripIndexes = (collection, view) => {
154
- const { synthetics = {}, compounds = {} } = this.schema.collections[collection];
155
- for (const synthetic of Object.keys(synthetics)) {
156
- delete view[synthetic];
157
- }
158
- for (const compoundIndex of Object.keys(compounds)) {
159
- delete view[compoundIndex];
160
- }
161
- };
162
- this.reset = async () => {
163
- const tx = this.db.transaction(Object.keys(this.schema.collections), 'readwrite');
164
- for (const collection of Object.keys(this.schema.collections)) {
165
- const store = tx.objectStore(collection);
166
- await (0, idb_js_1.storeRequestPromise)(store.clear());
167
- }
168
- };
169
- }
170
- }
171
- exports.EntityStore = EntityStore;
172
- //# sourceMappingURL=EntityStore.js.map