@rocicorp/zero 0.2.2024101100 → 0.3.2024102300

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 (600) hide show
  1. package/out/react.js +92 -39
  2. package/out/react.js.map +2 -2
  3. package/out/replicache/src/async-iterable-to-array.js +8 -0
  4. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  5. package/out/replicache/src/bg-interval.js +38 -0
  6. package/out/replicache/src/bg-interval.js.map +1 -0
  7. package/out/replicache/src/binary-search.js +31 -0
  8. package/out/replicache/src/binary-search.js.map +1 -0
  9. package/out/replicache/src/broadcast-channel.js +29 -0
  10. package/out/replicache/src/broadcast-channel.js.map +1 -0
  11. package/out/replicache/src/btree/diff.js +6 -0
  12. package/out/replicache/src/btree/diff.js.map +1 -0
  13. package/out/replicache/src/btree/node.js +392 -0
  14. package/out/replicache/src/btree/node.js.map +1 -0
  15. package/out/replicache/src/btree/read.js +227 -0
  16. package/out/replicache/src/btree/read.js.map +1 -0
  17. package/out/replicache/src/btree/splice.js +79 -0
  18. package/out/replicache/src/btree/splice.js.map +1 -0
  19. package/out/replicache/src/btree/write.js +154 -0
  20. package/out/replicache/src/btree/write.js.map +1 -0
  21. package/out/replicache/src/call-default-fetch.js +37 -0
  22. package/out/replicache/src/call-default-fetch.js.map +1 -0
  23. package/out/replicache/src/config.js +13 -0
  24. package/out/replicache/src/config.js.map +1 -0
  25. package/out/replicache/src/connection-loop-delegates.js +30 -0
  26. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  27. package/out/replicache/src/connection-loop.js +268 -0
  28. package/out/replicache/src/connection-loop.js.map +1 -0
  29. package/out/replicache/src/cookies.js +41 -0
  30. package/out/replicache/src/cookies.js.map +1 -0
  31. package/out/replicache/src/dag/chunk.js +60 -0
  32. package/out/replicache/src/dag/chunk.js.map +1 -0
  33. package/out/replicache/src/dag/gc.js +126 -0
  34. package/out/replicache/src/dag/gc.js.map +1 -0
  35. package/out/replicache/src/dag/key-type-enum.js +6 -0
  36. package/out/replicache/src/dag/key-type-enum.js.map +1 -0
  37. package/out/replicache/src/dag/key.js +54 -0
  38. package/out/replicache/src/dag/key.js.map +1 -0
  39. package/out/replicache/src/dag/lazy-store.js +532 -0
  40. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  41. package/out/replicache/src/dag/store-impl.js +175 -0
  42. package/out/replicache/src/dag/store-impl.js.map +1 -0
  43. package/out/replicache/src/dag/store.js +22 -0
  44. package/out/replicache/src/dag/store.js.map +1 -0
  45. package/out/replicache/src/dag/visitor.js +22 -0
  46. package/out/replicache/src/dag/visitor.js.map +1 -0
  47. package/out/replicache/src/db/commit.js +443 -0
  48. package/out/replicache/src/db/commit.js.map +1 -0
  49. package/out/replicache/src/db/index-operation-enum.js +4 -0
  50. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  51. package/out/replicache/src/db/index.js +170 -0
  52. package/out/replicache/src/db/index.js.map +1 -0
  53. package/out/replicache/src/db/meta-type-enum.js +7 -0
  54. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  55. package/out/replicache/src/db/read.js +59 -0
  56. package/out/replicache/src/db/read.js.map +1 -0
  57. package/out/replicache/src/db/rebase.js +56 -0
  58. package/out/replicache/src/db/rebase.js.map +1 -0
  59. package/out/replicache/src/db/scan.js +2 -0
  60. package/out/replicache/src/db/scan.js.map +1 -0
  61. package/out/replicache/src/db/write.js +260 -0
  62. package/out/replicache/src/db/write.js.map +1 -0
  63. package/out/replicache/src/error-responses.js +30 -0
  64. package/out/replicache/src/error-responses.js.map +1 -0
  65. package/out/replicache/src/filter-async-iterable.js +15 -0
  66. package/out/replicache/src/filter-async-iterable.js.map +1 -0
  67. package/out/replicache/src/format-version-enum.js +9 -0
  68. package/out/replicache/src/format-version-enum.js.map +1 -0
  69. package/out/replicache/src/format-version.js +8 -0
  70. package/out/replicache/src/format-version.js.map +1 -0
  71. package/out/replicache/src/frozen-json.js +151 -0
  72. package/out/replicache/src/frozen-json.js.map +1 -0
  73. package/out/replicache/src/get-default-puller.js +74 -0
  74. package/out/replicache/src/get-default-puller.js.map +1 -0
  75. package/out/replicache/src/get-default-pusher.js +36 -0
  76. package/out/replicache/src/get-default-pusher.js.map +1 -0
  77. package/out/replicache/src/hash.js +73 -0
  78. package/out/replicache/src/hash.js.map +1 -0
  79. package/out/replicache/src/http-request-info.js +7 -0
  80. package/out/replicache/src/http-request-info.js.map +1 -0
  81. package/out/replicache/src/impl.js +2 -0
  82. package/out/replicache/src/impl.js.map +1 -0
  83. package/out/replicache/src/index-defs.js +28 -0
  84. package/out/replicache/src/index-defs.js.map +1 -0
  85. package/out/replicache/src/invoke-kind-enum.js +4 -0
  86. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  87. package/out/replicache/src/iterable-union.js +5 -0
  88. package/out/replicache/src/iterable-union.js.map +1 -0
  89. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +93 -0
  90. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  91. package/out/replicache/src/kv/idb-store.js +179 -0
  92. package/out/replicache/src/kv/idb-store.js.map +1 -0
  93. package/out/replicache/src/kv/mem-store.js +61 -0
  94. package/out/replicache/src/kv/mem-store.js.map +1 -0
  95. package/out/replicache/src/kv/read-impl.js +23 -0
  96. package/out/replicache/src/kv/read-impl.js.map +1 -0
  97. package/out/replicache/src/kv/store.js +2 -0
  98. package/out/replicache/src/kv/store.js.map +1 -0
  99. package/out/replicache/src/kv/write-impl-base.js +48 -0
  100. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  101. package/out/replicache/src/kv/write-impl.js +25 -0
  102. package/out/replicache/src/kv/write-impl.js.map +1 -0
  103. package/out/replicache/src/lazy.js +10 -0
  104. package/out/replicache/src/lazy.js.map +1 -0
  105. package/out/replicache/src/log-options.js +13 -0
  106. package/out/replicache/src/log-options.js.map +1 -0
  107. package/out/replicache/src/merge-async-iterables.js +61 -0
  108. package/out/replicache/src/merge-async-iterables.js.map +1 -0
  109. package/out/replicache/src/mod.js +14 -0
  110. package/out/replicache/src/mod.js.map +1 -0
  111. package/out/replicache/src/mutation-recovery.js +439 -0
  112. package/out/replicache/src/mutation-recovery.js.map +1 -0
  113. package/out/replicache/src/new-client-channel.js +77 -0
  114. package/out/replicache/src/new-client-channel.js.map +1 -0
  115. package/out/replicache/src/on-persist-channel.js +33 -0
  116. package/out/replicache/src/on-persist-channel.js.map +1 -0
  117. package/out/replicache/src/patch-operation.js +37 -0
  118. package/out/replicache/src/patch-operation.js.map +1 -0
  119. package/out/replicache/src/pending-mutations.js +18 -0
  120. package/out/replicache/src/pending-mutations.js.map +1 -0
  121. package/out/replicache/src/persist/client-gc.js +38 -0
  122. package/out/replicache/src/persist/client-gc.js.map +1 -0
  123. package/out/replicache/src/persist/client-group-gc.js +38 -0
  124. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  125. package/out/replicache/src/persist/client-groups.js +180 -0
  126. package/out/replicache/src/persist/client-groups.js.map +1 -0
  127. package/out/replicache/src/persist/clients.js +390 -0
  128. package/out/replicache/src/persist/clients.js.map +1 -0
  129. package/out/replicache/src/persist/collect-idb-databases.js +174 -0
  130. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  131. package/out/replicache/src/persist/gather-mem-only-visitor.js +25 -0
  132. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  133. package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -0
  134. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  135. package/out/replicache/src/persist/heartbeat.js +37 -0
  136. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  137. package/out/replicache/src/persist/idb-databases-store-db-name.js +18 -0
  138. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  139. package/out/replicache/src/persist/idb-databases-store.js +90 -0
  140. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  141. package/out/replicache/src/persist/make-client-id.js +13 -0
  142. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  143. package/out/replicache/src/persist/persist.js +132 -0
  144. package/out/replicache/src/persist/persist.js.map +1 -0
  145. package/out/replicache/src/persist/refresh.js +147 -0
  146. package/out/replicache/src/persist/refresh.js.map +1 -0
  147. package/out/replicache/src/process-scheduler.js +93 -0
  148. package/out/replicache/src/process-scheduler.js.map +1 -0
  149. package/out/replicache/src/puller.js +2 -0
  150. package/out/replicache/src/puller.js.map +1 -0
  151. package/out/replicache/src/pusher.js +32 -0
  152. package/out/replicache/src/pusher.js.map +1 -0
  153. package/out/replicache/src/replicache-impl.js +1007 -0
  154. package/out/replicache/src/replicache-impl.js.map +1 -0
  155. package/out/replicache/src/replicache-options.js +2 -0
  156. package/out/replicache/src/replicache-options.js.map +1 -0
  157. package/out/replicache/src/replicache.js +387 -0
  158. package/out/replicache/src/replicache.js.map +1 -0
  159. package/out/replicache/src/request-idle.js +15 -0
  160. package/out/replicache/src/request-idle.js.map +1 -0
  161. package/out/replicache/src/scan-iterator.js +202 -0
  162. package/out/replicache/src/scan-iterator.js.map +1 -0
  163. package/out/replicache/src/scan-options.js +45 -0
  164. package/out/replicache/src/scan-options.js.map +1 -0
  165. package/out/replicache/src/set-interval-with-signal.js +7 -0
  166. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  167. package/out/replicache/src/size-of-value.js +77 -0
  168. package/out/replicache/src/size-of-value.js.map +1 -0
  169. package/out/replicache/src/subscriptions.js +357 -0
  170. package/out/replicache/src/subscriptions.js.map +1 -0
  171. package/out/replicache/src/sync/diff.js +75 -0
  172. package/out/replicache/src/sync/diff.js.map +1 -0
  173. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +5 -0
  174. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  175. package/out/replicache/src/sync/ids.js +4 -0
  176. package/out/replicache/src/sync/ids.js.map +1 -0
  177. package/out/replicache/src/sync/patch.js +41 -0
  178. package/out/replicache/src/sync/patch.js.map +1 -0
  179. package/out/replicache/src/sync/pull-error.js +16 -0
  180. package/out/replicache/src/sync/pull-error.js.map +1 -0
  181. package/out/replicache/src/sync/pull.js +375 -0
  182. package/out/replicache/src/sync/pull.js.map +1 -0
  183. package/out/replicache/src/sync/push.js +141 -0
  184. package/out/replicache/src/sync/push.js.map +1 -0
  185. package/out/replicache/src/sync/request-id.js +31 -0
  186. package/out/replicache/src/sync/request-id.js.map +1 -0
  187. package/out/replicache/src/sync/sync-head-name.js +2 -0
  188. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  189. package/out/replicache/src/test-license-key.js +3 -0
  190. package/out/replicache/src/test-license-key.js.map +1 -0
  191. package/out/replicache/src/to-error.js +7 -0
  192. package/out/replicache/src/to-error.js.map +1 -0
  193. package/out/replicache/src/transaction-closed-error.js +17 -0
  194. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  195. package/out/replicache/src/transactions.js +144 -0
  196. package/out/replicache/src/transactions.js.map +1 -0
  197. package/out/replicache/src/types.js +2 -0
  198. package/out/replicache/src/types.js.map +1 -0
  199. package/out/replicache/src/version.js +5 -0
  200. package/out/replicache/src/version.js.map +1 -0
  201. package/out/replicache/src/with-transactions.js +28 -0
  202. package/out/replicache/src/with-transactions.js.map +1 -0
  203. package/out/shared/src/browser-env.js +14 -0
  204. package/out/shared/src/browser-env.js.map +1 -0
  205. package/out/shared/src/document-visible.js +76 -0
  206. package/out/shared/src/document-visible.js.map +1 -0
  207. package/out/shared/src/immutable.js +2 -0
  208. package/out/shared/src/immutable.js.map +1 -0
  209. package/out/shared/src/iterables.d.ts +2 -2
  210. package/out/shared/src/iterables.d.ts.map +1 -1
  211. package/out/shared/src/iterables.js +40 -0
  212. package/out/shared/src/iterables.js.map +1 -0
  213. package/out/shared/src/navigator.js +3 -0
  214. package/out/shared/src/navigator.js.map +1 -0
  215. package/out/shared/src/random-uint64.js +8 -0
  216. package/out/shared/src/random-uint64.js.map +1 -0
  217. package/out/shared/src/random-values.d.ts +1 -0
  218. package/out/shared/src/random-values.d.ts.map +1 -1
  219. package/out/shared/src/random-values.js +22 -0
  220. package/out/shared/src/random-values.js.map +1 -0
  221. package/out/shared/src/set-utils.d.ts +1 -1
  222. package/out/shared/src/set-utils.d.ts.map +1 -1
  223. package/out/shared/src/set-utils.js +6 -4
  224. package/out/shared/src/set-utils.js.map +1 -1
  225. package/out/shared/src/sorted-entries.d.ts +2 -0
  226. package/out/shared/src/sorted-entries.d.ts.map +1 -0
  227. package/out/shared/src/sorted-entries.js +6 -0
  228. package/out/shared/src/sorted-entries.js.map +1 -0
  229. package/out/shared/src/types.js +2 -0
  230. package/out/shared/src/types.js.map +1 -0
  231. package/out/shared/src/valita.d.ts +1 -1
  232. package/out/shared/src/valita.d.ts.map +1 -1
  233. package/out/shared/src/valita.js.map +1 -1
  234. package/out/shared/src/writable.d.ts +4 -0
  235. package/out/shared/src/writable.d.ts.map +1 -0
  236. package/out/shared/src/writable.js +2 -0
  237. package/out/shared/src/writable.js.map +1 -0
  238. package/out/zero/src/config.d.ts +2 -0
  239. package/out/zero/src/config.d.ts.map +1 -0
  240. package/out/zero/src/config.js +2 -0
  241. package/out/zero/src/config.js.map +1 -0
  242. package/out/zero-cache/src/config/config-query.d.ts +18 -0
  243. package/out/zero-cache/src/config/config-query.d.ts.map +1 -0
  244. package/out/zero-cache/src/config/config-query.js +19 -0
  245. package/out/zero-cache/src/config/config-query.js.map +1 -0
  246. package/out/zero-cache/src/config/define-config.d.ts +43 -0
  247. package/out/zero-cache/src/config/define-config.d.ts.map +1 -0
  248. package/out/zero-cache/src/config/define-config.js +120 -0
  249. package/out/zero-cache/src/config/define-config.js.map +1 -0
  250. package/out/zero-cache/src/config/refs.d.ts +3 -0
  251. package/out/zero-cache/src/config/refs.d.ts.map +1 -0
  252. package/out/zero-cache/src/config/refs.js +14 -0
  253. package/out/zero-cache/src/config/refs.js.map +1 -0
  254. package/out/zero-cache/src/config/zero-config.d.ts +126 -686
  255. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  256. package/out/zero-cache/src/config/zero-config.js +43 -159
  257. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  258. package/out/zero-cache/src/db/create.d.ts +8 -0
  259. package/out/zero-cache/src/db/create.d.ts.map +1 -0
  260. package/out/zero-cache/src/db/create.js +39 -0
  261. package/out/zero-cache/src/db/create.js.map +1 -0
  262. package/out/zero-cache/src/db/lite-tables.d.ts +3 -3
  263. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  264. package/out/zero-cache/src/db/lite-tables.js +29 -20
  265. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  266. package/out/zero-cache/src/db/{migration-lite.d.ts → old-migration-lite.d.ts} +1 -1
  267. package/out/zero-cache/src/db/old-migration-lite.d.ts.map +1 -0
  268. package/out/zero-cache/src/db/{migration-lite.js → old-migration-lite.js} +1 -1
  269. package/out/zero-cache/src/db/old-migration-lite.js.map +1 -0
  270. package/out/zero-cache/src/db/{migration.d.ts → old-migration.d.ts} +1 -1
  271. package/out/zero-cache/src/db/old-migration.d.ts.map +1 -0
  272. package/out/zero-cache/src/db/{migration.js → old-migration.js} +1 -1
  273. package/out/zero-cache/src/db/old-migration.js.map +1 -0
  274. package/out/zero-cache/src/db/pg-to-lite.d.ts +11 -0
  275. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -0
  276. package/out/zero-cache/src/{services/change-streamer/pg/schema/lite.js → db/pg-to-lite.js} +27 -15
  277. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -0
  278. package/out/zero-cache/src/db/specs.d.ts +73 -0
  279. package/out/zero-cache/src/db/specs.d.ts.map +1 -0
  280. package/out/zero-cache/src/db/specs.js +30 -0
  281. package/out/zero-cache/src/db/specs.js.map +1 -0
  282. package/out/zero-cache/src/db/statements.d.ts +1 -1
  283. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  284. package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -1
  285. package/out/zero-cache/src/server/life-cycle.js +9 -5
  286. package/out/zero-cache/src/server/life-cycle.js.map +1 -1
  287. package/out/zero-cache/src/server/main.js +2 -2
  288. package/out/zero-cache/src/server/main.js.map +1 -1
  289. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  290. package/out/zero-cache/src/server/syncer.js +2 -1
  291. package/out/zero-cache/src/server/syncer.js.map +1 -1
  292. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +1 -1
  293. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  294. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +1 -4
  295. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  296. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +455 -13
  297. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  298. package/out/zero-cache/src/services/change-streamer/change-streamer.js +16 -0
  299. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  300. package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
  301. package/out/zero-cache/src/services/change-streamer/pg/change-source.js +311 -86
  302. package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
  303. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
  304. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +7 -51
  305. package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
  306. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +239 -59
  307. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
  308. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +263 -183
  309. package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
  310. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +4 -4
  311. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
  312. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +14 -19
  313. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
  314. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +2 -1
  315. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +1 -1
  316. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +51 -6
  317. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +1 -1
  318. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +1 -1
  319. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
  320. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +325 -26
  321. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
  322. package/out/zero-cache/src/services/change-streamer/schema/change.js +84 -1
  323. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -1
  324. package/out/zero-cache/src/services/change-streamer/schema/init.js +1 -1
  325. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  326. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -0
  327. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  328. package/out/zero-cache/src/services/dispatcher/connect-params.js +5 -2
  329. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  330. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  331. package/out/zero-cache/src/services/mutagen/mutagen.js +17 -19
  332. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  333. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
  334. package/out/zero-cache/src/services/mutagen/write-authorizer.js +18 -9
  335. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
  336. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  337. package/out/zero-cache/src/services/replicator/incremental-sync.js +120 -16
  338. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  339. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +20 -3
  340. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  341. package/out/zero-cache/src/services/replicator/schema/change-log.js +44 -12
  342. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  343. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +3 -2
  344. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  345. package/out/zero-cache/src/services/view-syncer/client-handler.js +21 -18
  346. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  347. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +5 -1
  348. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  349. package/out/zero-cache/src/services/view-syncer/cvr-store.js +49 -8
  350. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  351. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  352. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  353. package/out/zero-cache/src/services/view-syncer/cvr.js +1 -1
  354. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  355. package/out/zero-cache/src/services/view-syncer/database-storage.js +1 -1
  356. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
  357. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +31 -0
  358. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -0
  359. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +53 -0
  360. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
  361. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +11 -5
  362. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  363. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +17 -0
  364. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  365. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  366. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +2 -2
  367. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  368. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +1 -1
  369. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +1 -1
  370. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +11 -11
  371. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -2
  372. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  373. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +12 -4
  374. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  375. package/out/zero-cache/src/services/view-syncer/snapshotter.js +59 -49
  376. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  377. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +2 -3
  378. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  379. package/out/zero-cache/src/services/view-syncer/view-syncer.js +50 -10
  380. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  381. package/out/zero-cache/src/types/pg.d.ts +7 -1
  382. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  383. package/out/zero-cache/src/types/pg.js +14 -1
  384. package/out/zero-cache/src/types/pg.js.map +1 -1
  385. package/out/zero-cache/src/workers/connection.d.ts +3 -1
  386. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  387. package/out/zero-cache/src/workers/connection.js +19 -1
  388. package/out/zero-cache/src/workers/connection.js.map +1 -1
  389. package/out/zero-cache/src/workers/syncer.d.ts +2 -1
  390. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  391. package/out/zero-cache/src/workers/syncer.js +20 -9
  392. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  393. package/out/zero-client/src/client/context.d.ts +1 -1
  394. package/out/zero-client/src/client/context.d.ts.map +1 -1
  395. package/out/zero-client/src/client/context.js +99 -0
  396. package/out/zero-client/src/client/context.js.map +1 -0
  397. package/out/zero-client/src/client/crud.d.ts +8 -10
  398. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  399. package/out/zero-client/src/client/crud.js +181 -0
  400. package/out/zero-client/src/client/crud.js.map +1 -0
  401. package/out/zero-client/src/client/enable-analytics.js +21 -0
  402. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  403. package/out/zero-client/src/client/http-string.js +14 -0
  404. package/out/zero-client/src/client/http-string.js.map +1 -0
  405. package/out/zero-client/src/client/keys.d.ts +3 -2
  406. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  407. package/out/zero-client/src/client/keys.js +32 -0
  408. package/out/zero-client/src/client/keys.js.map +1 -0
  409. package/out/zero-client/src/client/log-options.js +57 -0
  410. package/out/zero-client/src/client/log-options.js.map +1 -0
  411. package/out/zero-client/src/client/metrics.js +268 -0
  412. package/out/zero-client/src/client/metrics.js.map +1 -0
  413. package/out/zero-client/src/client/normalized-schema.d.ts +17 -0
  414. package/out/zero-client/src/client/normalized-schema.d.ts.map +1 -0
  415. package/out/zero-client/src/client/normalized-schema.js +31 -0
  416. package/out/zero-client/src/client/normalized-schema.js.map +1 -0
  417. package/out/zero-client/src/client/options.js +2 -0
  418. package/out/zero-client/src/client/options.js.map +1 -0
  419. package/out/zero-client/src/client/query-manager.d.ts +18 -3
  420. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  421. package/out/zero-client/src/client/query-manager.js +149 -0
  422. package/out/zero-client/src/client/query-manager.js.map +1 -0
  423. package/out/zero-client/src/client/reload-error-handler.js +23 -0
  424. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  425. package/out/zero-client/src/client/replicache-types.js +2 -0
  426. package/out/zero-client/src/client/replicache-types.js.map +1 -0
  427. package/out/zero-client/src/client/server-error.js +22 -0
  428. package/out/zero-client/src/client/server-error.js.map +1 -0
  429. package/out/zero-client/src/client/server-option.js +37 -0
  430. package/out/zero-client/src/client/server-option.js.map +1 -0
  431. package/out/zero-client/src/client/version.js +5 -0
  432. package/out/zero-client/src/client/version.js.map +1 -0
  433. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  434. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  435. package/out/zero-client/src/client/zero-poke-handler.js +240 -0
  436. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  437. package/out/zero-client/src/client/zero.d.ts +3 -2
  438. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  439. package/out/zero-client/src/client/zero.js +1212 -0
  440. package/out/zero-client/src/client/zero.js.map +1 -0
  441. package/out/zero-client/src/mod.js +4 -0
  442. package/out/zero-client/src/mod.js.map +1 -0
  443. package/out/zero-client/src/util/nanoid.js +34 -0
  444. package/out/zero-client/src/util/nanoid.js.map +1 -0
  445. package/out/zero-client/src/util/socket.js +4 -0
  446. package/out/zero-client/src/util/socket.js.map +1 -0
  447. package/out/zero-protocol/src/ast.d.ts +87 -1
  448. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  449. package/out/zero-protocol/src/ast.js +53 -0
  450. package/out/zero-protocol/src/ast.js.map +1 -1
  451. package/out/zero-protocol/src/change-desired-queries.d.ts +6 -6
  452. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  453. package/out/zero-protocol/src/clients-patch.d.ts +1 -1
  454. package/out/zero-protocol/src/connect.d.ts +15 -8
  455. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  456. package/out/zero-protocol/src/connect.js +21 -0
  457. package/out/zero-protocol/src/connect.js.map +1 -1
  458. package/out/zero-protocol/src/data.d.ts +36 -0
  459. package/out/zero-protocol/src/data.d.ts.map +1 -0
  460. package/out/zero-protocol/src/data.js +4 -0
  461. package/out/zero-protocol/src/data.js.map +1 -0
  462. package/out/zero-protocol/src/delete-clients.d.ts +4 -4
  463. package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
  464. package/out/zero-protocol/src/down.d.ts +18 -16
  465. package/out/zero-protocol/src/down.d.ts.map +1 -1
  466. package/out/zero-protocol/src/down.js +2 -1
  467. package/out/zero-protocol/src/down.js.map +1 -1
  468. package/out/zero-protocol/src/mod.d.ts +1 -2
  469. package/out/zero-protocol/src/mod.d.ts.map +1 -1
  470. package/out/zero-protocol/src/mod.js +2 -2
  471. package/out/zero-protocol/src/mod.js.map +1 -1
  472. package/out/zero-protocol/src/ping.d.ts +1 -1
  473. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  474. package/out/zero-protocol/src/poke.d.ts +26 -26
  475. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  476. package/out/zero-protocol/src/poke.js +8 -5
  477. package/out/zero-protocol/src/poke.js.map +1 -1
  478. package/out/zero-protocol/src/pong.d.ts +1 -1
  479. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  480. package/out/zero-protocol/src/primary-key.d.ts +2 -3
  481. package/out/zero-protocol/src/primary-key.d.ts.map +1 -1
  482. package/out/zero-protocol/src/primary-key.js +1 -3
  483. package/out/zero-protocol/src/primary-key.js.map +1 -1
  484. package/out/zero-protocol/src/pull.d.ts +4 -4
  485. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  486. package/out/zero-protocol/src/push.d.ts +105 -98
  487. package/out/zero-protocol/src/push.d.ts.map +1 -1
  488. package/out/zero-protocol/src/push.js +17 -13
  489. package/out/zero-protocol/src/push.js.map +1 -1
  490. package/out/zero-protocol/src/queries-patch.d.ts +4 -4
  491. package/out/zero-protocol/src/row-patch.d.ts +38 -0
  492. package/out/zero-protocol/src/row-patch.d.ts.map +1 -0
  493. package/out/zero-protocol/src/{entities-patch.js → row-patch.js} +10 -11
  494. package/out/zero-protocol/src/row-patch.js.map +1 -0
  495. package/out/zero-protocol/src/up.d.ts +28 -27
  496. package/out/zero-protocol/src/up.d.ts.map +1 -1
  497. package/out/zero-protocol/src/warm.d.ts +10 -0
  498. package/out/zero-protocol/src/warm.d.ts.map +1 -0
  499. package/out/zero-protocol/src/warm.js +6 -0
  500. package/out/zero-protocol/src/warm.js.map +1 -0
  501. package/out/zero-react/src/use-query.d.ts.map +1 -1
  502. package/out/zero.js +499 -208
  503. package/out/zero.js.map +4 -4
  504. package/out/zql/src/zql/builder/builder.d.ts +3 -3
  505. package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
  506. package/out/zql/src/zql/builder/builder.js +1 -1
  507. package/out/zql/src/zql/builder/builder.js.map +1 -1
  508. package/out/zql/src/zql/builder/filter.d.ts +2 -2
  509. package/out/zql/src/zql/builder/filter.d.ts.map +1 -1
  510. package/out/zql/src/zql/builder/filter.js.map +1 -1
  511. package/out/zql/src/zql/ivm/array-view.d.ts +1 -1
  512. package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
  513. package/out/zql/src/zql/ivm/array-view.js +232 -0
  514. package/out/zql/src/zql/ivm/array-view.js.map +1 -0
  515. package/out/zql/src/zql/ivm/change.d.ts +2 -1
  516. package/out/zql/src/zql/ivm/change.d.ts.map +1 -1
  517. package/out/zql/src/zql/ivm/data.d.ts +2 -33
  518. package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
  519. package/out/zql/src/zql/ivm/data.js.map +1 -1
  520. package/out/zql/src/zql/ivm/filter.d.ts +2 -1
  521. package/out/zql/src/zql/ivm/filter.d.ts.map +1 -1
  522. package/out/zql/src/zql/ivm/filter.js.map +1 -1
  523. package/out/zql/src/zql/ivm/join.d.ts +1 -1
  524. package/out/zql/src/zql/ivm/join.d.ts.map +1 -1
  525. package/out/zql/src/zql/ivm/join.js +68 -24
  526. package/out/zql/src/zql/ivm/join.js.map +1 -1
  527. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
  528. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  529. package/out/zql/src/zql/ivm/memory-source.d.ts +8 -6
  530. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
  531. package/out/zql/src/zql/ivm/memory-source.js +2 -0
  532. package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
  533. package/out/zql/src/zql/ivm/memory-storage.js +33 -0
  534. package/out/zql/src/zql/ivm/memory-storage.js.map +1 -0
  535. package/out/zql/src/zql/ivm/operator.d.ts +2 -1
  536. package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
  537. package/out/zql/src/zql/ivm/schema.d.ts +3 -3
  538. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
  539. package/out/zql/src/zql/ivm/schema.js.map +1 -1
  540. package/out/zql/src/zql/ivm/skip.d.ts +2 -1
  541. package/out/zql/src/zql/ivm/skip.d.ts.map +1 -1
  542. package/out/zql/src/zql/ivm/skip.js.map +1 -1
  543. package/out/zql/src/zql/ivm/source.d.ts +2 -2
  544. package/out/zql/src/zql/ivm/source.d.ts.map +1 -1
  545. package/out/zql/src/zql/ivm/take.d.ts.map +1 -1
  546. package/out/zql/src/zql/ivm/take.js.map +1 -1
  547. package/out/zql/src/zql/query/normalize-table-schema.d.ts +48 -0
  548. package/out/zql/src/zql/query/normalize-table-schema.d.ts.map +1 -0
  549. package/out/zql/src/zql/query/normalize-table-schema.js +116 -0
  550. package/out/zql/src/zql/query/normalize-table-schema.js.map +1 -0
  551. package/out/zql/src/zql/query/query-impl.d.ts +6 -5
  552. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
  553. package/out/zql/src/zql/query/query-impl.js +263 -0
  554. package/out/zql/src/zql/query/query-impl.js.map +1 -0
  555. package/out/zql/src/zql/query/query.d.ts +1 -1
  556. package/out/zql/src/zql/query/query.d.ts.map +1 -1
  557. package/out/zql/src/zql/query/query.js +3 -0
  558. package/out/zql/src/zql/query/query.js.map +1 -0
  559. package/out/zql/src/zql/query/schema.d.ts +13 -4
  560. package/out/zql/src/zql/query/schema.d.ts.map +1 -1
  561. package/out/zql/src/zql/query/schema.js +7 -0
  562. package/out/zql/src/zql/query/schema.js.map +1 -0
  563. package/out/zql/src/zql/query/typed-view.js +2 -0
  564. package/out/zql/src/zql/query/typed-view.js.map +1 -0
  565. package/out/zqlite/src/db.d.ts +1 -1
  566. package/out/zqlite/src/db.d.ts.map +1 -1
  567. package/out/zqlite/src/db.js +1 -1
  568. package/out/zqlite/src/db.js.map +1 -1
  569. package/out/zqlite/src/table-source.d.ts +2 -2
  570. package/out/zqlite/src/table-source.d.ts.map +1 -1
  571. package/out/zqlite/src/table-source.js.map +1 -1
  572. package/package.json +10 -8
  573. package/deps/sqlite3/sqlite3.c +0 -260574
  574. package/deps/sqlite3/sqlite3.h +0 -13572
  575. package/deps/sqlite3/sqlite3ext.h +0 -719
  576. package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
  577. package/out/zero-cache/src/db/migration-lite.js.map +0 -1
  578. package/out/zero-cache/src/db/migration.d.ts.map +0 -1
  579. package/out/zero-cache/src/db/migration.js.map +0 -1
  580. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
  581. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
  582. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
  583. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
  584. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -6
  585. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
  586. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
  587. package/out/zero-cache/src/types/specs.d.ts +0 -29
  588. package/out/zero-cache/src/types/specs.d.ts.map +0 -1
  589. package/out/zero-cache/src/types/specs.js +0 -2
  590. package/out/zero-cache/src/types/specs.js.map +0 -1
  591. package/out/zero-client/src/client/make-id-from-primary-key.d.ts +0 -5
  592. package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +0 -1
  593. package/out/zero-protocol/src/entities-patch.d.ts +0 -66
  594. package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
  595. package/out/zero-protocol/src/entities-patch.js.map +0 -1
  596. package/out/zql/src/zql/ast/ast.d.ts +0 -84
  597. package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
  598. package/out/zql/src/zql/ast/ast.js +0 -54
  599. package/out/zql/src/zql/ast/ast.js.map +0 -1
  600. package/tool/install-sqlite3.js +0 -37
@@ -0,0 +1,175 @@
1
+ import { assertNumber } from '../../../shared/src/asserts.js';
2
+ import { assertHash } from '../hash.js';
3
+ import { Chunk, assertRefs, createChunk, } from './chunk.js';
4
+ import { computeRefCountUpdates } from './gc.js';
5
+ import { chunkDataKey, chunkMetaKey, chunkRefCountKey, headKey } from './key.js';
6
+ import { mustGetChunk } from './store.js';
7
+ export class StoreImpl {
8
+ #kv;
9
+ #chunkHasher;
10
+ #assertValidHash;
11
+ constructor(kv, chunkHasher, assertValidHash) {
12
+ this.#kv = kv;
13
+ this.#chunkHasher = chunkHasher;
14
+ this.#assertValidHash = assertValidHash;
15
+ }
16
+ async read() {
17
+ return new ReadImpl(await this.#kv.read(), this.#assertValidHash);
18
+ }
19
+ async write() {
20
+ return new WriteImpl(await this.#kv.write(), this.#chunkHasher, this.#assertValidHash);
21
+ }
22
+ close() {
23
+ return this.#kv.close();
24
+ }
25
+ }
26
+ export class ReadImpl {
27
+ _tx;
28
+ assertValidHash;
29
+ constructor(kv, assertValidHash) {
30
+ this._tx = kv;
31
+ this.assertValidHash = assertValidHash;
32
+ }
33
+ hasChunk(hash) {
34
+ return this._tx.has(chunkDataKey(hash));
35
+ }
36
+ async getChunk(hash) {
37
+ const data = await this._tx.get(chunkDataKey(hash));
38
+ if (data === undefined) {
39
+ return undefined;
40
+ }
41
+ const refsVal = await this._tx.get(chunkMetaKey(hash));
42
+ let refs;
43
+ if (refsVal !== undefined) {
44
+ assertRefs(refsVal);
45
+ refs = refsVal;
46
+ }
47
+ else {
48
+ refs = [];
49
+ }
50
+ return new Chunk(hash, data, refs);
51
+ }
52
+ mustGetChunk(hash) {
53
+ return mustGetChunk(this, hash);
54
+ }
55
+ async getHead(name) {
56
+ const data = await this._tx.get(headKey(name));
57
+ if (data === undefined) {
58
+ return undefined;
59
+ }
60
+ assertHash(data);
61
+ return data;
62
+ }
63
+ release() {
64
+ this._tx.release();
65
+ }
66
+ get closed() {
67
+ return this._tx.closed;
68
+ }
69
+ }
70
+ export class WriteImpl extends ReadImpl {
71
+ #chunkHasher;
72
+ #putChunks = new Set();
73
+ #changedHeads = new Map();
74
+ constructor(kvw, chunkHasher, assertValidHash) {
75
+ super(kvw, assertValidHash);
76
+ this.#chunkHasher = chunkHasher;
77
+ }
78
+ createChunk = (data, refs) => createChunk(data, refs, this.#chunkHasher);
79
+ get kvWrite() {
80
+ return this._tx;
81
+ }
82
+ async putChunk(c) {
83
+ const { hash, data, meta } = c;
84
+ // We never want to write temp hashes to the underlying store.
85
+ this.assertValidHash(hash);
86
+ const key = chunkDataKey(hash);
87
+ // Commit contains InternalValue and Hash which are opaque types.
88
+ const p1 = this._tx.put(key, data);
89
+ let p2;
90
+ if (meta.length > 0) {
91
+ for (const h of meta) {
92
+ this.assertValidHash(h);
93
+ }
94
+ p2 = this._tx.put(chunkMetaKey(hash), meta);
95
+ }
96
+ this.#putChunks.add(hash);
97
+ await p1;
98
+ await p2;
99
+ }
100
+ setHead(name, hash) {
101
+ return this.#setHead(name, hash);
102
+ }
103
+ removeHead(name) {
104
+ return this.#setHead(name, undefined);
105
+ }
106
+ async #setHead(name, hash) {
107
+ const oldHash = await this.getHead(name);
108
+ const hk = headKey(name);
109
+ let p1;
110
+ if (hash === undefined) {
111
+ p1 = this._tx.del(hk);
112
+ }
113
+ else {
114
+ p1 = this._tx.put(hk, hash);
115
+ }
116
+ const v = this.#changedHeads.get(name);
117
+ if (v === undefined) {
118
+ this.#changedHeads.set(name, { new: hash, old: oldHash });
119
+ }
120
+ else {
121
+ // Keep old if existing
122
+ v.new = hash;
123
+ }
124
+ await p1;
125
+ }
126
+ async commit() {
127
+ const refCountUpdates = await computeRefCountUpdates(this.#changedHeads.values(), this.#putChunks, this);
128
+ await this.#applyRefCountUpdates(refCountUpdates);
129
+ await this._tx.commit();
130
+ }
131
+ async getRefCount(hash) {
132
+ const value = await this._tx.get(chunkRefCountKey(hash));
133
+ if (value === undefined) {
134
+ return undefined;
135
+ }
136
+ assertNumber(value);
137
+ if (value < 0 || value > 0xffff || value !== (value | 0)) {
138
+ throw new Error(`Invalid ref count ${value}. We expect the value to be a Uint16`);
139
+ }
140
+ return value;
141
+ }
142
+ async getRefs(hash) {
143
+ const meta = await this._tx.get(chunkMetaKey(hash));
144
+ if (meta === undefined) {
145
+ return [];
146
+ }
147
+ assertRefs(meta);
148
+ return meta;
149
+ }
150
+ async #applyRefCountUpdates(refCountCache) {
151
+ const ps = [];
152
+ for (const [hash, count] of refCountCache) {
153
+ if (count === 0) {
154
+ ps.push(this.#removeAllRelatedKeys(hash));
155
+ }
156
+ else {
157
+ const refCountKey = chunkRefCountKey(hash);
158
+ ps.push(this._tx.put(refCountKey, count));
159
+ }
160
+ }
161
+ await Promise.all(ps);
162
+ }
163
+ async #removeAllRelatedKeys(hash) {
164
+ await Promise.all([
165
+ this._tx.del(chunkDataKey(hash)),
166
+ this._tx.del(chunkMetaKey(hash)),
167
+ this._tx.del(chunkRefCountKey(hash)),
168
+ ]);
169
+ this.#putChunks.delete(hash);
170
+ }
171
+ release() {
172
+ this._tx.release();
173
+ }
174
+ }
175
+ //# sourceMappingURL=store-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-impl.js","sourceRoot":"","sources":["../../../../../replicache/src/dag/store-impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAY,UAAU,EAAC,MAAM,YAAY,CAAC;AAMjD,OAAO,EACL,KAAK,EAGL,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAA+B,sBAAsB,EAAC,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAC/E,OAAO,EAAoC,YAAY,EAAC,MAAM,YAAY,CAAC;AAE3E,MAAM,OAAO,SAAS;IACX,GAAG,CAAU;IACb,YAAY,CAAc;IAC1B,gBAAgB,CAAuB;IAEhD,YACE,EAAW,EACX,WAAwB,EACxB,eAAqC;QAErC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,SAAS,CAClB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,EACtB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACJ,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,QAAQ;IACA,GAAG,CAAS;IACtB,eAAe,CAAuB;IAE/C,YAAY,EAAU,EAAE,eAAqC;QAC3D,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,IAAU;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAU;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,IAAU,CAAC;QACf,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,GAAG,OAAO,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,YAAY,CAAC,IAAU;QACrB,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;IACzB,CAAC;CACF;AAOD,MAAM,OAAO,SACX,SAAQ,QAAQ;IAIP,YAAY,CAAc;IAE1B,UAAU,GAAG,IAAI,GAAG,EAAQ,CAAC;IAC7B,aAAa,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEvD,YACE,GAAY,EACZ,WAAwB,EACxB,eAAqC;QAErC,KAAK,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED,WAAW,GAAG,CAAI,IAAO,EAAE,IAAU,EAAY,EAAE,CACjD,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAE7C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,CAAQ;QACrB,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,GAAG,CAAC,CAAC;QAC7B,8DAA8D;QAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,iEAAiE;QACjE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAyB,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC;QACP,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;IACX,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAU;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAsB;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,EAAiB,CAAC;QACtB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,EAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QACf,CAAC;QAED,MAAM,EAAE,CAAC;IACX,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAClD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAC3B,IAAI,CAAC,UAAU,EACf,IAAI,CACL,CAAC;QACF,MAAM,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAU;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,IAAI,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,sCAAsC,CACjE,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAU;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,aAAgC;QAC1D,MAAM,EAAE,GAAoB,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,aAAa,EAAE,CAAC;YAC1C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC3C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAU;QACpC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import { assert } from '../../../shared/src/asserts.js';
2
+ export class ChunkNotFoundError extends Error {
3
+ name = 'ChunkNotFoundError';
4
+ hash;
5
+ constructor(hash) {
6
+ super(`Chunk not found ${hash}`);
7
+ this.hash = hash;
8
+ }
9
+ }
10
+ export async function mustGetChunk(store, hash) {
11
+ const chunk = await store.getChunk(hash);
12
+ if (chunk) {
13
+ return chunk;
14
+ }
15
+ throw new ChunkNotFoundError(hash);
16
+ }
17
+ export async function mustGetHeadHash(name, store) {
18
+ const hash = await store.getHead(name);
19
+ assert(hash, `Missing head ${name}`);
20
+ return hash;
21
+ }
22
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../../replicache/src/dag/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gCAAgC,CAAC;AAkCtD,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,IAAI,GAAG,oBAAoB,CAAC;IACnB,IAAI,CAAO;IACpB,YAAY,IAAU;QACpB,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAe,EACf,IAAU;IAEV,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,KAAW;IAEX,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A visitor walks the DAG starting at a given root and visits each chunk.
3
+ */
4
+ export class Visitor {
5
+ #seen = new Set();
6
+ #dagRead;
7
+ constructor(dagRead) {
8
+ this.#dagRead = dagRead;
9
+ }
10
+ async visit(h) {
11
+ if (this.#seen.has(h)) {
12
+ return;
13
+ }
14
+ this.#seen.add(h);
15
+ const chunk = await this.#dagRead.mustGetChunk(h);
16
+ await this.visitChunk(chunk);
17
+ }
18
+ async visitChunk(chunk) {
19
+ await Promise.all(chunk.meta.map(ref => this.visit(ref)));
20
+ }
21
+ }
22
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../../../../replicache/src/dag/visitor.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,OAAO;IAClB,KAAK,GAAc,IAAI,GAAG,EAAE,CAAC;IAC7B,QAAQ,CAAe;IAEvB,YAAY,OAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,CAAO;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAqB;QACpC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,443 @@
1
+ import { assert, assertArray, assertBoolean, assertNumber, assertObject, assertString, unreachable, } from '../../../shared/src/asserts.js';
2
+ import { assertJSONValue } from '../../../shared/src/json.js';
3
+ import { skipCommitDataAsserts } from '../config.js';
4
+ import { compareCookies } from '../cookies.js';
5
+ import { toRefs } from '../dag/chunk.js';
6
+ import { mustGetHeadHash } from '../dag/store.js';
7
+ import { assertDeepFrozen, deepFreeze, } from '../frozen-json.js';
8
+ import { assertHash } from '../hash.js';
9
+ import * as MetaType from './meta-type-enum.js';
10
+ export const DEFAULT_HEAD_NAME = 'main';
11
+ export function commitIsLocalSDD(commit) {
12
+ return isLocalMetaSDD(commit.meta);
13
+ }
14
+ export function commitIsLocalDD31(commit) {
15
+ return isLocalMetaDD31(commit.meta);
16
+ }
17
+ export function commitIsLocal(commit) {
18
+ return commitIsLocalDD31(commit) || commitIsLocalSDD(commit);
19
+ }
20
+ function commitIsSnapshotDD31(commit) {
21
+ return isSnapshotMetaDD31(commit.meta);
22
+ }
23
+ function commitIsSnapshotSDD(commit) {
24
+ return isSnapshotMetaSDD(commit.meta);
25
+ }
26
+ export function commitIsSnapshot(commit) {
27
+ return commitIsSnapshotDD31(commit) || commitIsSnapshotSDD(commit);
28
+ }
29
+ export class Commit {
30
+ chunk;
31
+ constructor(chunk) {
32
+ this.chunk = chunk;
33
+ }
34
+ get meta() {
35
+ return this.chunk.data.meta;
36
+ }
37
+ get valueHash() {
38
+ // Already validated!
39
+ return this.chunk.data.valueHash;
40
+ }
41
+ getMutationID(clientID, dagRead) {
42
+ return getMutationID(clientID, dagRead, this.meta);
43
+ }
44
+ async getNextMutationID(clientID, dagRead) {
45
+ return (await this.getMutationID(clientID, dagRead)) + 1;
46
+ }
47
+ get indexes() {
48
+ // Already validated!
49
+ return this.chunk.data.indexes;
50
+ }
51
+ }
52
+ export async function getMutationID(clientID, dagRead, meta) {
53
+ switch (meta.type) {
54
+ case MetaType.IndexChangeSDD:
55
+ return meta.lastMutationID;
56
+ case MetaType.SnapshotSDD:
57
+ return meta.lastMutationID;
58
+ case MetaType.SnapshotDD31:
59
+ return meta.lastMutationIDs[clientID] ?? 0;
60
+ case MetaType.LocalSDD:
61
+ return meta.mutationID;
62
+ case MetaType.LocalDD31: {
63
+ if (meta.clientID === clientID) {
64
+ return meta.mutationID;
65
+ }
66
+ const { basisHash } = meta;
67
+ const basisCommit = await commitFromHash(basisHash, dagRead);
68
+ return getMutationID(clientID, dagRead, basisCommit.meta);
69
+ }
70
+ default:
71
+ unreachable(meta);
72
+ }
73
+ }
74
+ /**
75
+ * Returns the set of local commits from the given `fromCommitHash` back to but not
76
+ * including its base snapshot. If `fromCommitHash` is a snapshot, the returned vector
77
+ * will be empty. When, as typical, `fromCommitHash` is the head of the default chain
78
+ * then the returned commits are the set of pending commits, ie the set of local commits
79
+ * that have not yet been pushed to the data layer.
80
+ *
81
+ * The vector of commits is returned in reverse chain order, that is, starting
82
+ * with the commit with hash `fromCommitHash` and walking backwards.
83
+ */
84
+ export async function localMutations(fromCommitHash, dagRead) {
85
+ const commits = await commitChain(fromCommitHash, dagRead);
86
+ // Filter does not deal with type narrowing.
87
+ return commits.filter(c => commitIsLocal(c));
88
+ }
89
+ export async function localMutationsDD31(fromCommitHash, dagRead) {
90
+ const commits = await commitChain(fromCommitHash, dagRead);
91
+ // Filter does not deal with type narrowing.
92
+ return commits.filter(c => commitIsLocalDD31(c));
93
+ }
94
+ export async function localMutationsGreaterThan(commit, mutationIDLimits, dagRead) {
95
+ const commits = [];
96
+ const remainingMutationIDLimits = new Map(Object.entries(mutationIDLimits));
97
+ while (!commitIsSnapshot(commit) && remainingMutationIDLimits.size > 0) {
98
+ if (commitIsLocalDD31(commit)) {
99
+ const { meta } = commit;
100
+ const mutationIDLowerLimit = remainingMutationIDLimits.get(meta.clientID);
101
+ if (mutationIDLowerLimit !== undefined) {
102
+ if (meta.mutationID <= mutationIDLowerLimit) {
103
+ remainingMutationIDLimits.delete(meta.clientID);
104
+ }
105
+ else {
106
+ commits.push(commit);
107
+ }
108
+ }
109
+ }
110
+ const { basisHash } = commit.meta;
111
+ if (basisHash === null) {
112
+ throw new Error(`Commit ${commit.chunk.hash} has no basis`);
113
+ }
114
+ commit = await commitFromHash(basisHash, dagRead);
115
+ }
116
+ return commits;
117
+ }
118
+ export async function baseSnapshotFromHead(name, dagRead) {
119
+ const hash = await dagRead.getHead(name);
120
+ assert(hash, `Missing head ${name}`);
121
+ return baseSnapshotFromHash(hash, dagRead);
122
+ }
123
+ export async function baseSnapshotHashFromHash(hash, dagRead) {
124
+ return (await baseSnapshotFromHash(hash, dagRead)).chunk.hash;
125
+ }
126
+ export async function baseSnapshotFromHash(hash, dagRead) {
127
+ const commit = await commitFromHash(hash, dagRead);
128
+ return baseSnapshotFromCommit(commit, dagRead);
129
+ }
130
+ export async function baseSnapshotFromCommit(commit, dagRead) {
131
+ while (!commitIsSnapshot(commit)) {
132
+ const { meta } = commit;
133
+ if (isLocalMetaDD31(meta)) {
134
+ commit = await commitFromHash(meta.baseSnapshotHash, dagRead);
135
+ }
136
+ else {
137
+ const { basisHash } = meta;
138
+ if (basisHash === null) {
139
+ throw new Error(`Commit ${commit.chunk.hash} has no basis`);
140
+ }
141
+ commit = await commitFromHash(basisHash, dagRead);
142
+ }
143
+ }
144
+ return commit;
145
+ }
146
+ export function snapshotMetaParts(c, clientID) {
147
+ const m = c.meta;
148
+ if (isSnapshotMetaDD31(m)) {
149
+ const lmid = m.lastMutationIDs[clientID] ?? 0;
150
+ return [lmid, m.cookieJSON];
151
+ }
152
+ return [m.lastMutationID, m.cookieJSON];
153
+ }
154
+ export function compareCookiesForSnapshots(a, b) {
155
+ return compareCookies(a.meta.cookieJSON, b.meta.cookieJSON);
156
+ }
157
+ /**
158
+ * Returns all commits from the commit with fromCommitHash to its base snapshot,
159
+ * inclusive of both. Resulting vector is in chain-head-first order (so snapshot
160
+ * comes last).
161
+ */
162
+ export async function commitChain(fromCommitHash, dagRead) {
163
+ let commit = await commitFromHash(fromCommitHash, dagRead);
164
+ const commits = [];
165
+ while (!commitIsSnapshot(commit)) {
166
+ const { meta } = commit;
167
+ const { basisHash } = meta;
168
+ if (basisHash === null) {
169
+ throw new Error(`Commit ${commit.chunk.hash} has no basis`);
170
+ }
171
+ commits.push(commit);
172
+ commit = await commitFromHash(basisHash, dagRead);
173
+ }
174
+ commits.push(commit);
175
+ return commits;
176
+ }
177
+ export async function commitFromHash(hash, dagRead) {
178
+ const chunk = await dagRead.mustGetChunk(hash);
179
+ return fromChunk(chunk);
180
+ }
181
+ export async function commitFromHead(name, dagRead) {
182
+ const hash = await mustGetHeadHash(name, dagRead);
183
+ return commitFromHash(hash, dagRead);
184
+ }
185
+ function assertIndexChangeMeta(v) {
186
+ // type already asserted
187
+ assertNumber(v.lastMutationID);
188
+ // Note: indexes are already validated for all commit types. Only additional
189
+ // things to validate are:
190
+ // - lastMutationID is equal to the basis
191
+ // - valueHash has not been changed
192
+ // However we don't have a write transaction this deep, so these validated at
193
+ // commit time.
194
+ }
195
+ export function assertIndexChangeCommit(c) {
196
+ assertIndexChangeMeta(c.meta);
197
+ }
198
+ function assertLocalMetaSDD(v) {
199
+ // type already asserted
200
+ assertNumber(v.mutationID);
201
+ assertString(v.mutatorName);
202
+ if (!v.mutatorName) {
203
+ throw new Error('Missing mutator name');
204
+ }
205
+ assertJSONValue(v.mutatorArgsJSON);
206
+ if (v.originalHash !== null) {
207
+ assertHash(v.originalHash);
208
+ }
209
+ assertNumber(v.timestamp);
210
+ }
211
+ export function assertLocalMetaDD31(v) {
212
+ // type already asserted
213
+ assertString(v.clientID);
214
+ assertLocalMetaSDD(v);
215
+ }
216
+ export function isLocalMetaDD31(meta) {
217
+ return meta.type === MetaType.LocalDD31;
218
+ }
219
+ function isLocalMetaSDD(meta) {
220
+ return meta.type === MetaType.LocalSDD;
221
+ }
222
+ export function assertLocalCommitDD31(c) {
223
+ assertLocalMetaDD31(c.meta);
224
+ }
225
+ export function assertLocalCommitSDD(c) {
226
+ assertLocalMetaSDD(c.meta);
227
+ }
228
+ function assertSnapshotMetaBase(v) {
229
+ // type already asserted
230
+ if (v.basisHash !== null) {
231
+ assertHash(v.basisHash);
232
+ }
233
+ assertJSONValue(v.cookieJSON);
234
+ }
235
+ export function assertSnapshotMetaSDD(v) {
236
+ assertSnapshotMetaBase(v);
237
+ assertNumber(v.lastMutationID);
238
+ }
239
+ export function assertSnapshotMetaDD31(v) {
240
+ assertSnapshotMetaBase(v);
241
+ assertLastMutationIDs(v.lastMutationIDs);
242
+ }
243
+ function assertLastMutationIDs(v) {
244
+ assertObject(v);
245
+ for (const e of Object.values(v)) {
246
+ assertNumber(e);
247
+ }
248
+ }
249
+ export function assertSnapshotCommitSDD(c) {
250
+ assertSnapshotMetaSDD(c.meta);
251
+ }
252
+ export function assertSnapshotCommitDD31(c) {
253
+ assertSnapshotMetaDD31(c.meta);
254
+ }
255
+ function isSnapshotMetaDD31(meta) {
256
+ return meta.type === MetaType.SnapshotDD31;
257
+ }
258
+ function isSnapshotMetaSDD(meta) {
259
+ return meta.type === MetaType.SnapshotSDD;
260
+ }
261
+ function assertMeta(v) {
262
+ assertObject(v);
263
+ assertDeepFrozen(v);
264
+ if (v.basisHash !== null) {
265
+ assertString(v.basisHash);
266
+ }
267
+ assertNumber(v.type);
268
+ switch (v.type) {
269
+ case MetaType.IndexChangeSDD:
270
+ assertIndexChangeMeta(v);
271
+ break;
272
+ case MetaType.LocalSDD:
273
+ assertLocalMetaSDD(v);
274
+ break;
275
+ case MetaType.LocalDD31:
276
+ assertLocalMetaDD31(v);
277
+ break;
278
+ case MetaType.SnapshotSDD:
279
+ assertSnapshotMetaSDD(v);
280
+ break;
281
+ case MetaType.SnapshotDD31:
282
+ assertSnapshotMetaDD31(v);
283
+ break;
284
+ default:
285
+ throw new Error(`Invalid enum value ${v.type}`);
286
+ }
287
+ }
288
+ export function chunkIndexDefinitionEqualIgnoreName(a, b) {
289
+ return (a.jsonPointer === b.jsonPointer &&
290
+ (a.allowEmpty ?? false) === (b.allowEmpty ?? false) &&
291
+ a.keyPrefix === b.keyPrefix);
292
+ }
293
+ function assertChunkIndexDefinition(v) {
294
+ assertObject(v);
295
+ assertDeepFrozen(v);
296
+ assertString(v.name);
297
+ assertString(v.keyPrefix);
298
+ assertString(v.jsonPointer);
299
+ if (v.allowEmpty !== undefined) {
300
+ assertBoolean(v.allowEmpty);
301
+ }
302
+ }
303
+ export function toChunkIndexDefinition(name, indexDefinition) {
304
+ return {
305
+ name,
306
+ keyPrefix: indexDefinition.prefix ?? '',
307
+ jsonPointer: indexDefinition.jsonPointer,
308
+ allowEmpty: indexDefinition.allowEmpty ?? false,
309
+ };
310
+ }
311
+ function assertIndexRecord(v) {
312
+ assertObject(v);
313
+ assertDeepFrozen(v);
314
+ assertChunkIndexDefinition(v.definition);
315
+ assertString(v.valueHash);
316
+ }
317
+ function assertIndexRecords(v) {
318
+ assertArray(v);
319
+ assertDeepFrozen(v);
320
+ for (const ir of v) {
321
+ assertIndexRecord(ir);
322
+ }
323
+ }
324
+ export function newLocalSDD(createChunk, basisHash, mutationID, mutatorName, mutatorArgsJSON, originalHash, valueHash, indexes, timestamp) {
325
+ const meta = {
326
+ type: MetaType.LocalSDD,
327
+ basisHash,
328
+ mutationID,
329
+ mutatorName,
330
+ mutatorArgsJSON,
331
+ originalHash,
332
+ timestamp,
333
+ };
334
+ return commitFromCommitData(createChunk, makeCommitData(meta, valueHash, indexes));
335
+ }
336
+ export function newLocalDD31(createChunk, basisHash, baseSnapshotHash, mutationID, mutatorName, mutatorArgsJSON, originalHash, valueHash, indexes, timestamp, clientID) {
337
+ const meta = {
338
+ type: MetaType.LocalDD31,
339
+ basisHash,
340
+ baseSnapshotHash,
341
+ mutationID,
342
+ mutatorName,
343
+ mutatorArgsJSON,
344
+ originalHash,
345
+ timestamp,
346
+ clientID,
347
+ };
348
+ return commitFromCommitData(createChunk, makeCommitData(meta, valueHash, indexes));
349
+ }
350
+ export function newSnapshotSDD(createChunk, basisHash, lastMutationID, cookieJSON, valueHash, indexes) {
351
+ return commitFromCommitData(createChunk, newSnapshotCommitDataSDD(basisHash, lastMutationID, cookieJSON, valueHash, indexes));
352
+ }
353
+ export function newSnapshotDD31(createChunk, basisHash, lastMutationIDs, cookieJSON, valueHash, indexes) {
354
+ return commitFromCommitData(createChunk, newSnapshotCommitDataDD31(basisHash, lastMutationIDs, cookieJSON, valueHash, indexes));
355
+ }
356
+ export function newSnapshotCommitDataSDD(basisHash, lastMutationID, cookieJSON, valueHash, indexes) {
357
+ const meta = {
358
+ type: MetaType.SnapshotSDD,
359
+ basisHash,
360
+ lastMutationID,
361
+ cookieJSON,
362
+ };
363
+ return makeCommitData(meta, valueHash, indexes);
364
+ }
365
+ export function newSnapshotCommitDataDD31(basisHash, lastMutationIDs, cookieJSON, valueHash, indexes) {
366
+ const meta = {
367
+ type: MetaType.SnapshotDD31,
368
+ basisHash,
369
+ lastMutationIDs,
370
+ cookieJSON,
371
+ };
372
+ return makeCommitData(meta, valueHash, indexes);
373
+ }
374
+ export function newIndexChange(createChunk, basisHash, lastMutationID, valueHash, indexes) {
375
+ const meta = {
376
+ type: MetaType.IndexChangeSDD,
377
+ basisHash,
378
+ lastMutationID,
379
+ };
380
+ return commitFromCommitData(createChunk, makeCommitData(meta, valueHash, indexes));
381
+ }
382
+ export function fromChunk(chunk) {
383
+ validateChunk(chunk);
384
+ return new Commit(chunk);
385
+ }
386
+ function commitFromCommitData(createChunk, data) {
387
+ return new Commit(createChunk(data, getRefs(data)));
388
+ }
389
+ export function getRefs(data) {
390
+ const refs = new Set();
391
+ refs.add(data.valueHash);
392
+ const { meta } = data;
393
+ switch (meta.type) {
394
+ case MetaType.IndexChangeSDD:
395
+ meta.basisHash && refs.add(meta.basisHash);
396
+ break;
397
+ case MetaType.LocalSDD:
398
+ case MetaType.LocalDD31:
399
+ meta.basisHash && refs.add(meta.basisHash);
400
+ // Local has weak originalHash
401
+ break;
402
+ case MetaType.SnapshotSDD:
403
+ case MetaType.SnapshotDD31:
404
+ // Snapshot has weak basisHash
405
+ break;
406
+ default:
407
+ unreachable(meta);
408
+ }
409
+ for (const index of data.indexes) {
410
+ refs.add(index.valueHash);
411
+ }
412
+ return toRefs(refs);
413
+ }
414
+ export function makeCommitData(meta, valueHash, indexes) {
415
+ return deepFreeze({
416
+ meta,
417
+ valueHash,
418
+ indexes,
419
+ });
420
+ }
421
+ export function assertCommitData(v) {
422
+ if (skipCommitDataAsserts) {
423
+ return;
424
+ }
425
+ assertObject(v);
426
+ assertDeepFrozen(v);
427
+ assertMeta(v.meta);
428
+ assertString(v.valueHash);
429
+ assertIndexRecords(v.indexes);
430
+ }
431
+ function validateChunk(chunk) {
432
+ const { data } = chunk;
433
+ assertCommitData(data);
434
+ const seen = new Set();
435
+ for (const index of data.indexes) {
436
+ const { name } = index.definition;
437
+ if (seen.has(name)) {
438
+ throw new Error(`Duplicate index ${name}`);
439
+ }
440
+ seen.add(name);
441
+ }
442
+ }
443
+ //# sourceMappingURL=commit.js.map