@rocicorp/zero 0.2.2024101101 → 0.3.2024102500

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 (632) hide show
  1. package/out/react.js +91 -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 -161
  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 +60 -20
  267. package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
  268. package/out/zero-cache/src/db/migration-lite.js +89 -69
  269. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  270. package/out/zero-cache/src/db/migration.d.ts +61 -20
  271. package/out/zero-cache/src/db/migration.d.ts.map +1 -1
  272. package/out/zero-cache/src/db/migration.js +92 -75
  273. package/out/zero-cache/src/db/migration.js.map +1 -1
  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 +3 -3
  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 +313 -88
  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 +13 -54
  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 +291 -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/init.d.ts +5 -0
  311. package/out/zero-cache/src/services/change-streamer/pg/schema/init.d.ts.map +1 -0
  312. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js +18 -0
  313. package/out/zero-cache/src/services/change-streamer/pg/schema/init.js.map +1 -0
  314. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +4 -4
  315. package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
  316. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +14 -19
  317. package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
  318. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts +17 -0
  319. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.d.ts.map +1 -0
  320. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js +150 -0
  321. package/out/zero-cache/src/services/change-streamer/pg/schema/shard.js.map +1 -0
  322. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +1 -1
  323. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +11 -5
  324. package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
  325. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +325 -26
  326. package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
  327. package/out/zero-cache/src/services/change-streamer/schema/change.js +84 -1
  328. package/out/zero-cache/src/services/change-streamer/schema/change.js.map +1 -1
  329. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +2 -2
  330. package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +1 -1
  331. package/out/zero-cache/src/services/change-streamer/schema/init.js +13 -5
  332. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  333. package/out/zero-cache/src/services/change-streamer/schema/tables.js +6 -6
  334. package/out/zero-cache/src/services/change-streamer/storer.js +4 -4
  335. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -0
  336. package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
  337. package/out/zero-cache/src/services/dispatcher/connect-params.js +5 -2
  338. package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
  339. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  340. package/out/zero-cache/src/services/mutagen/mutagen.js +21 -22
  341. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  342. package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
  343. package/out/zero-cache/src/services/mutagen/write-authorizer.js +18 -9
  344. package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
  345. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  346. package/out/zero-cache/src/services/replicator/incremental-sync.js +131 -16
  347. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  348. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +20 -3
  349. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  350. package/out/zero-cache/src/services/replicator/schema/change-log.js +46 -14
  351. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  352. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +1 -1
  353. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  354. package/out/zero-cache/src/services/replicator/schema/replication-state.js +9 -9
  355. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  356. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +4 -3
  357. package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
  358. package/out/zero-cache/src/services/view-syncer/client-handler.js +27 -21
  359. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  360. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -4
  361. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  362. package/out/zero-cache/src/services/view-syncer/cvr-store.js +63 -18
  363. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  364. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +11 -8
  365. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  366. package/out/zero-cache/src/services/view-syncer/cvr.js +22 -13
  367. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  368. package/out/zero-cache/src/services/view-syncer/database-storage.js +1 -1
  369. package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
  370. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +31 -0
  371. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -0
  372. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +53 -0
  373. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -0
  374. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +13 -5
  375. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  376. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +27 -0
  377. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  378. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +2 -1
  379. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  380. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +5 -4
  381. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  382. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts +4 -0
  383. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -0
  384. package/out/zero-cache/src/services/view-syncer/schema/init.js +16 -0
  385. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -0
  386. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +8 -216
  387. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
  388. package/out/zero-cache/src/services/view-syncer/schema/types.js +2 -4
  389. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  390. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +12 -4
  391. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  392. package/out/zero-cache/src/services/view-syncer/snapshotter.js +59 -49
  393. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  394. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -4
  395. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  396. package/out/zero-cache/src/services/view-syncer/view-syncer.js +105 -44
  397. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  398. package/out/zero-cache/src/types/lite.d.ts.map +1 -1
  399. package/out/zero-cache/src/types/lite.js +8 -9
  400. package/out/zero-cache/src/types/lite.js.map +1 -1
  401. package/out/zero-cache/src/types/pg.d.ts +10 -4
  402. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  403. package/out/zero-cache/src/types/pg.js +37 -15
  404. package/out/zero-cache/src/types/pg.js.map +1 -1
  405. package/out/zero-cache/src/workers/connection.d.ts +4 -2
  406. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  407. package/out/zero-cache/src/workers/connection.js +21 -2
  408. package/out/zero-cache/src/workers/connection.js.map +1 -1
  409. package/out/zero-cache/src/workers/syncer.d.ts +2 -1
  410. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  411. package/out/zero-cache/src/workers/syncer.js +20 -9
  412. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  413. package/out/zero-client/src/client/context.d.ts +1 -1
  414. package/out/zero-client/src/client/context.d.ts.map +1 -1
  415. package/out/zero-client/src/client/context.js +99 -0
  416. package/out/zero-client/src/client/context.js.map +1 -0
  417. package/out/zero-client/src/client/crud.d.ts +8 -10
  418. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  419. package/out/zero-client/src/client/crud.js +181 -0
  420. package/out/zero-client/src/client/crud.js.map +1 -0
  421. package/out/zero-client/src/client/enable-analytics.js +21 -0
  422. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  423. package/out/zero-client/src/client/http-string.js +14 -0
  424. package/out/zero-client/src/client/http-string.js.map +1 -0
  425. package/out/zero-client/src/client/keys.d.ts +3 -2
  426. package/out/zero-client/src/client/keys.d.ts.map +1 -1
  427. package/out/zero-client/src/client/keys.js +32 -0
  428. package/out/zero-client/src/client/keys.js.map +1 -0
  429. package/out/zero-client/src/client/log-options.js +57 -0
  430. package/out/zero-client/src/client/log-options.js.map +1 -0
  431. package/out/zero-client/src/client/metrics.js +268 -0
  432. package/out/zero-client/src/client/metrics.js.map +1 -0
  433. package/out/zero-client/src/client/normalized-schema.d.ts +17 -0
  434. package/out/zero-client/src/client/normalized-schema.d.ts.map +1 -0
  435. package/out/zero-client/src/client/normalized-schema.js +31 -0
  436. package/out/zero-client/src/client/normalized-schema.js.map +1 -0
  437. package/out/zero-client/src/client/options.js +2 -0
  438. package/out/zero-client/src/client/options.js.map +1 -0
  439. package/out/zero-client/src/client/query-manager.d.ts +18 -3
  440. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  441. package/out/zero-client/src/client/query-manager.js +149 -0
  442. package/out/zero-client/src/client/query-manager.js.map +1 -0
  443. package/out/zero-client/src/client/reload-error-handler.js +23 -0
  444. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  445. package/out/zero-client/src/client/replicache-types.js +2 -0
  446. package/out/zero-client/src/client/replicache-types.js.map +1 -0
  447. package/out/zero-client/src/client/server-error.js +22 -0
  448. package/out/zero-client/src/client/server-error.js.map +1 -0
  449. package/out/zero-client/src/client/server-option.js +37 -0
  450. package/out/zero-client/src/client/server-option.js.map +1 -0
  451. package/out/zero-client/src/client/version.js +5 -0
  452. package/out/zero-client/src/client/version.js.map +1 -0
  453. package/out/zero-client/src/client/zero-poke-handler.d.ts +3 -3
  454. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  455. package/out/zero-client/src/client/zero-poke-handler.js +240 -0
  456. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  457. package/out/zero-client/src/client/zero.d.ts +3 -2
  458. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  459. package/out/zero-client/src/client/zero.js +1212 -0
  460. package/out/zero-client/src/client/zero.js.map +1 -0
  461. package/out/zero-client/src/mod.d.ts +1 -0
  462. package/out/zero-client/src/mod.d.ts.map +1 -1
  463. package/out/zero-client/src/mod.js +5 -0
  464. package/out/zero-client/src/mod.js.map +1 -0
  465. package/out/zero-client/src/util/nanoid.js +34 -0
  466. package/out/zero-client/src/util/nanoid.js.map +1 -0
  467. package/out/zero-client/src/util/socket.js +4 -0
  468. package/out/zero-client/src/util/socket.js.map +1 -0
  469. package/out/zero-protocol/src/ast.d.ts +87 -1
  470. package/out/zero-protocol/src/ast.d.ts.map +1 -1
  471. package/out/zero-protocol/src/ast.js +53 -0
  472. package/out/zero-protocol/src/ast.js.map +1 -1
  473. package/out/zero-protocol/src/change-desired-queries.d.ts +6 -6
  474. package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
  475. package/out/zero-protocol/src/clients-patch.d.ts +1 -1
  476. package/out/zero-protocol/src/connect.d.ts +15 -8
  477. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  478. package/out/zero-protocol/src/connect.js +21 -0
  479. package/out/zero-protocol/src/connect.js.map +1 -1
  480. package/out/zero-protocol/src/data.d.ts +36 -0
  481. package/out/zero-protocol/src/data.d.ts.map +1 -0
  482. package/out/zero-protocol/src/data.js +4 -0
  483. package/out/zero-protocol/src/data.js.map +1 -0
  484. package/out/zero-protocol/src/delete-clients.d.ts +4 -4
  485. package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
  486. package/out/zero-protocol/src/down.d.ts +18 -16
  487. package/out/zero-protocol/src/down.d.ts.map +1 -1
  488. package/out/zero-protocol/src/down.js +2 -1
  489. package/out/zero-protocol/src/down.js.map +1 -1
  490. package/out/zero-protocol/src/mod.d.ts +1 -2
  491. package/out/zero-protocol/src/mod.d.ts.map +1 -1
  492. package/out/zero-protocol/src/mod.js +2 -2
  493. package/out/zero-protocol/src/mod.js.map +1 -1
  494. package/out/zero-protocol/src/ping.d.ts +1 -1
  495. package/out/zero-protocol/src/ping.d.ts.map +1 -1
  496. package/out/zero-protocol/src/poke.d.ts +26 -26
  497. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  498. package/out/zero-protocol/src/poke.js +8 -5
  499. package/out/zero-protocol/src/poke.js.map +1 -1
  500. package/out/zero-protocol/src/pong.d.ts +1 -1
  501. package/out/zero-protocol/src/pong.d.ts.map +1 -1
  502. package/out/zero-protocol/src/primary-key.d.ts +2 -3
  503. package/out/zero-protocol/src/primary-key.d.ts.map +1 -1
  504. package/out/zero-protocol/src/primary-key.js +1 -3
  505. package/out/zero-protocol/src/primary-key.js.map +1 -1
  506. package/out/zero-protocol/src/pull.d.ts +4 -4
  507. package/out/zero-protocol/src/pull.d.ts.map +1 -1
  508. package/out/zero-protocol/src/push.d.ts +105 -98
  509. package/out/zero-protocol/src/push.d.ts.map +1 -1
  510. package/out/zero-protocol/src/push.js +17 -13
  511. package/out/zero-protocol/src/push.js.map +1 -1
  512. package/out/zero-protocol/src/queries-patch.d.ts +4 -4
  513. package/out/zero-protocol/src/row-patch.d.ts +38 -0
  514. package/out/zero-protocol/src/row-patch.d.ts.map +1 -0
  515. package/out/zero-protocol/src/{entities-patch.js → row-patch.js} +10 -11
  516. package/out/zero-protocol/src/row-patch.js.map +1 -0
  517. package/out/zero-protocol/src/up.d.ts +28 -27
  518. package/out/zero-protocol/src/up.d.ts.map +1 -1
  519. package/out/zero-protocol/src/warm.d.ts +10 -0
  520. package/out/zero-protocol/src/warm.d.ts.map +1 -0
  521. package/out/zero-protocol/src/warm.js +6 -0
  522. package/out/zero-protocol/src/warm.js.map +1 -0
  523. package/out/zero-react/src/use-query.d.ts.map +1 -1
  524. package/out/zero.js +522 -217
  525. package/out/zero.js.map +4 -4
  526. package/out/zql/src/zql/builder/builder.d.ts +3 -4
  527. package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
  528. package/out/zql/src/zql/builder/builder.js +1 -2
  529. package/out/zql/src/zql/builder/builder.js.map +1 -1
  530. package/out/zql/src/zql/builder/filter.d.ts +2 -2
  531. package/out/zql/src/zql/builder/filter.d.ts.map +1 -1
  532. package/out/zql/src/zql/builder/filter.js.map +1 -1
  533. package/out/zql/src/zql/ivm/array-view.d.ts +5 -12
  534. package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
  535. package/out/zql/src/zql/ivm/array-view.js +226 -0
  536. package/out/zql/src/zql/ivm/array-view.js.map +1 -0
  537. package/out/zql/src/zql/ivm/change.d.ts +2 -1
  538. package/out/zql/src/zql/ivm/change.d.ts.map +1 -1
  539. package/out/zql/src/zql/ivm/data.d.ts +2 -33
  540. package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
  541. package/out/zql/src/zql/ivm/data.js.map +1 -1
  542. package/out/zql/src/zql/ivm/filter.d.ts +2 -1
  543. package/out/zql/src/zql/ivm/filter.d.ts.map +1 -1
  544. package/out/zql/src/zql/ivm/filter.js.map +1 -1
  545. package/out/zql/src/zql/ivm/join.d.ts +1 -1
  546. package/out/zql/src/zql/ivm/join.d.ts.map +1 -1
  547. package/out/zql/src/zql/ivm/join.js +68 -24
  548. package/out/zql/src/zql/ivm/join.js.map +1 -1
  549. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
  550. package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
  551. package/out/zql/src/zql/ivm/memory-source.d.ts +8 -6
  552. package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
  553. package/out/zql/src/zql/ivm/memory-source.js +2 -0
  554. package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
  555. package/out/zql/src/zql/ivm/memory-storage.js +33 -0
  556. package/out/zql/src/zql/ivm/memory-storage.js.map +1 -0
  557. package/out/zql/src/zql/ivm/operator.d.ts +2 -1
  558. package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
  559. package/out/zql/src/zql/ivm/schema.d.ts +3 -3
  560. package/out/zql/src/zql/ivm/schema.d.ts.map +1 -1
  561. package/out/zql/src/zql/ivm/schema.js.map +1 -1
  562. package/out/zql/src/zql/ivm/skip.d.ts +2 -1
  563. package/out/zql/src/zql/ivm/skip.d.ts.map +1 -1
  564. package/out/zql/src/zql/ivm/skip.js.map +1 -1
  565. package/out/zql/src/zql/ivm/source.d.ts +2 -2
  566. package/out/zql/src/zql/ivm/source.d.ts.map +1 -1
  567. package/out/zql/src/zql/ivm/take.d.ts.map +1 -1
  568. package/out/zql/src/zql/ivm/take.js.map +1 -1
  569. package/out/zql/src/zql/query/like.d.ts +2 -0
  570. package/out/zql/src/zql/query/like.d.ts.map +1 -0
  571. package/out/zql/src/zql/query/like.js +18 -0
  572. package/out/zql/src/zql/query/like.js.map +1 -0
  573. package/out/zql/src/zql/query/normalize-table-schema.d.ts +48 -0
  574. package/out/zql/src/zql/query/normalize-table-schema.d.ts.map +1 -0
  575. package/out/zql/src/zql/query/normalize-table-schema.js +116 -0
  576. package/out/zql/src/zql/query/normalize-table-schema.js.map +1 -0
  577. package/out/zql/src/zql/query/query-impl.d.ts +6 -5
  578. package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
  579. package/out/zql/src/zql/query/query-impl.js +263 -0
  580. package/out/zql/src/zql/query/query-impl.js.map +1 -0
  581. package/out/zql/src/zql/query/query.d.ts +1 -1
  582. package/out/zql/src/zql/query/query.d.ts.map +1 -1
  583. package/out/zql/src/zql/query/query.js +3 -0
  584. package/out/zql/src/zql/query/query.js.map +1 -0
  585. package/out/zql/src/zql/query/schema.d.ts +13 -4
  586. package/out/zql/src/zql/query/schema.d.ts.map +1 -1
  587. package/out/zql/src/zql/query/schema.js +7 -0
  588. package/out/zql/src/zql/query/schema.js.map +1 -0
  589. package/out/zql/src/zql/query/typed-view.d.ts +5 -2
  590. package/out/zql/src/zql/query/typed-view.d.ts.map +1 -1
  591. package/out/zql/src/zql/query/typed-view.js +2 -0
  592. package/out/zql/src/zql/query/typed-view.js.map +1 -0
  593. package/out/zqlite/src/db.d.ts +1 -1
  594. package/out/zqlite/src/db.d.ts.map +1 -1
  595. package/out/zqlite/src/db.js +1 -1
  596. package/out/zqlite/src/db.js.map +1 -1
  597. package/out/zqlite/src/table-source.d.ts +2 -2
  598. package/out/zqlite/src/table-source.d.ts.map +1 -1
  599. package/out/zqlite/src/table-source.js.map +1 -1
  600. package/package.json +10 -8
  601. package/deps/sqlite3/sqlite3.c +0 -260574
  602. package/deps/sqlite3/sqlite3.h +0 -13572
  603. package/deps/sqlite3/sqlite3ext.h +0 -719
  604. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
  605. package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
  606. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
  607. package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
  608. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -6
  609. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
  610. package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
  611. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +0 -11
  612. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +0 -1
  613. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +0 -86
  614. package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +0 -1
  615. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts +0 -4
  616. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts.map +0 -1
  617. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +0 -12
  618. package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +0 -1
  619. package/out/zero-cache/src/types/specs.d.ts +0 -29
  620. package/out/zero-cache/src/types/specs.d.ts.map +0 -1
  621. package/out/zero-cache/src/types/specs.js +0 -2
  622. package/out/zero-cache/src/types/specs.js.map +0 -1
  623. package/out/zero-client/src/client/make-id-from-primary-key.d.ts +0 -5
  624. package/out/zero-client/src/client/make-id-from-primary-key.d.ts.map +0 -1
  625. package/out/zero-protocol/src/entities-patch.d.ts +0 -66
  626. package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
  627. package/out/zero-protocol/src/entities-patch.js.map +0 -1
  628. package/out/zql/src/zql/ast/ast.d.ts +0 -84
  629. package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
  630. package/out/zql/src/zql/ast/ast.js +0 -54
  631. package/out/zql/src/zql/ast/ast.js.map +0 -1
  632. 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