@rocicorp/zero 0.25.0-canary.7 → 0.25.0-canary.9

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 (1403) hide show
  1. package/out/analyze-query/src/bin-analyze.js +258 -236
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +79 -73
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +146 -180
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +51 -54
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +15 -14
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +223 -0
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  19. package/out/otel/src/enabled.js +15 -15
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +36 -31
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +14 -11
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +30 -27
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +10 -7
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +5 -2
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +11 -0
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  33. package/out/replicache/src/bg-interval.js +38 -0
  34. package/out/replicache/src/bg-interval.js.map +1 -0
  35. package/out/replicache/src/btree/diff.js +8 -0
  36. package/out/replicache/src/btree/diff.js.map +1 -0
  37. package/out/replicache/src/btree/node.js +400 -0
  38. package/out/replicache/src/btree/node.js.map +1 -0
  39. package/out/replicache/src/btree/read.d.ts +3 -2
  40. package/out/replicache/src/btree/read.d.ts.map +1 -1
  41. package/out/replicache/src/btree/read.js +266 -0
  42. package/out/replicache/src/btree/read.js.map +1 -0
  43. package/out/replicache/src/btree/splice.js +83 -0
  44. package/out/replicache/src/btree/splice.js.map +1 -0
  45. package/out/replicache/src/btree/write.d.ts +1 -1
  46. package/out/replicache/src/btree/write.d.ts.map +1 -1
  47. package/out/replicache/src/btree/write.js +163 -0
  48. package/out/replicache/src/btree/write.js.map +1 -0
  49. package/out/replicache/src/call-default-fetch.js +34 -0
  50. package/out/replicache/src/call-default-fetch.js.map +1 -0
  51. package/out/replicache/src/connection-loop-delegates.js +34 -0
  52. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  53. package/out/replicache/src/connection-loop.js +251 -0
  54. package/out/replicache/src/connection-loop.js.map +1 -0
  55. package/out/replicache/src/cookies.js +40 -0
  56. package/out/replicache/src/cookies.js.map +1 -0
  57. package/out/replicache/src/dag/chunk.js +59 -0
  58. package/out/replicache/src/dag/chunk.js.map +1 -0
  59. package/out/replicache/src/dag/gc.js +117 -0
  60. package/out/replicache/src/dag/gc.js.map +1 -0
  61. package/out/replicache/src/dag/key.js +20 -0
  62. package/out/replicache/src/dag/key.js.map +1 -0
  63. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  64. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  65. package/out/replicache/src/dag/lazy-store.js +515 -0
  66. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  67. package/out/replicache/src/dag/store-impl.js +183 -0
  68. package/out/replicache/src/dag/store-impl.js.map +1 -0
  69. package/out/replicache/src/dag/store.js +27 -0
  70. package/out/replicache/src/dag/store.js.map +1 -0
  71. package/out/replicache/src/dag/visitor.js +22 -0
  72. package/out/replicache/src/dag/visitor.js.map +1 -0
  73. package/out/replicache/src/db/commit.js +358 -0
  74. package/out/replicache/src/db/commit.js.map +1 -0
  75. package/out/replicache/src/db/index-operation-enum.js +7 -0
  76. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  77. package/out/replicache/src/db/index.js +134 -0
  78. package/out/replicache/src/db/index.js.map +1 -0
  79. package/out/replicache/src/db/meta-type-enum.js +7 -0
  80. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  81. package/out/replicache/src/db/read.d.ts +3 -2
  82. package/out/replicache/src/db/read.d.ts.map +1 -1
  83. package/out/replicache/src/db/read.js +72 -0
  84. package/out/replicache/src/db/read.js.map +1 -0
  85. package/out/replicache/src/db/rebase.d.ts +2 -2
  86. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  87. package/out/replicache/src/db/rebase.js +85 -0
  88. package/out/replicache/src/db/rebase.js.map +1 -0
  89. package/out/replicache/src/db/write.d.ts +2 -1
  90. package/out/replicache/src/db/write.d.ts.map +1 -1
  91. package/out/replicache/src/db/write.js +296 -0
  92. package/out/replicache/src/db/write.js.map +1 -0
  93. package/out/replicache/src/deleted-clients.js +104 -0
  94. package/out/replicache/src/deleted-clients.js.map +1 -0
  95. package/out/replicache/src/error-responses.js +34 -0
  96. package/out/replicache/src/error-responses.js.map +1 -0
  97. package/out/replicache/src/format-version-enum.js +11 -0
  98. package/out/replicache/src/format-version-enum.js.map +1 -0
  99. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  100. package/out/replicache/src/frozen-json.js.map +1 -0
  101. package/out/replicache/src/get-default-puller.js +61 -0
  102. package/out/replicache/src/get-default-puller.js.map +1 -0
  103. package/out/replicache/src/get-default-pusher.js +39 -0
  104. package/out/replicache/src/get-default-pusher.js.map +1 -0
  105. package/out/replicache/src/get-kv-store-provider.js +23 -0
  106. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  107. package/out/replicache/src/hash.js +38 -0
  108. package/out/replicache/src/hash.js.map +1 -0
  109. package/out/replicache/src/http-request-info.js +10 -0
  110. package/out/replicache/src/http-request-info.js.map +1 -0
  111. package/out/replicache/src/http-status-unauthorized.js +5 -0
  112. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  113. package/out/replicache/src/index-defs.js +32 -0
  114. package/out/replicache/src/index-defs.js.map +1 -0
  115. package/out/replicache/src/invoke-kind-enum.js +7 -0
  116. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  117. package/out/{chunk-HCZQVP5R.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  118. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  119. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  120. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store.js +183 -0
  122. package/out/replicache/src/kv/idb-store.js.map +1 -0
  123. package/out/replicache/src/kv/mem-store.js +51 -0
  124. package/out/replicache/src/kv/mem-store.js.map +1 -0
  125. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  126. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  127. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  128. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  129. package/out/replicache/src/kv/read-impl.js +27 -0
  130. package/out/replicache/src/kv/read-impl.js.map +1 -0
  131. package/out/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
  132. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  133. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  134. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  135. package/out/replicache/src/kv/write-impl-base.js +57 -0
  136. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  137. package/out/replicache/src/kv/write-impl.js +30 -0
  138. package/out/replicache/src/kv/write-impl.js.map +1 -0
  139. package/out/replicache/src/lazy.js +13 -0
  140. package/out/replicache/src/lazy.js.map +1 -0
  141. package/out/replicache/src/log-options.js +9 -0
  142. package/out/replicache/src/log-options.js.map +1 -0
  143. package/out/replicache/src/make-idb-name.js +13 -0
  144. package/out/replicache/src/make-idb-name.js.map +1 -0
  145. package/out/replicache/src/new-client-channel.js +51 -0
  146. package/out/replicache/src/new-client-channel.js.map +1 -0
  147. package/out/replicache/src/on-persist-channel.js +36 -0
  148. package/out/replicache/src/on-persist-channel.js.map +1 -0
  149. package/out/replicache/src/patch-operation.js +42 -0
  150. package/out/replicache/src/patch-operation.js.map +1 -0
  151. package/out/replicache/src/pending-mutations.js +16 -0
  152. package/out/replicache/src/pending-mutations.js.map +1 -0
  153. package/out/replicache/src/persist/client-gc.js +58 -0
  154. package/out/replicache/src/persist/client-gc.js.map +1 -0
  155. package/out/replicache/src/persist/client-group-gc.js +43 -0
  156. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  157. package/out/replicache/src/persist/client-groups.js +184 -0
  158. package/out/replicache/src/persist/client-groups.js.map +1 -0
  159. package/out/replicache/src/persist/clients.d.ts +3 -2
  160. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  161. package/out/replicache/src/persist/clients.js +353 -0
  162. package/out/replicache/src/persist/clients.js.map +1 -0
  163. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  165. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  167. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  169. package/out/replicache/src/persist/heartbeat.js +48 -0
  170. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  171. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  173. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  174. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  175. package/out/replicache/src/persist/make-client-id.js +12 -0
  176. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  177. package/out/replicache/src/persist/persist.d.ts +2 -2
  178. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  179. package/out/replicache/src/persist/persist.js +183 -0
  180. package/out/replicache/src/persist/persist.js.map +1 -0
  181. package/out/replicache/src/persist/refresh.d.ts +4 -3
  182. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  183. package/out/replicache/src/persist/refresh.js +198 -0
  184. package/out/replicache/src/persist/refresh.js.map +1 -0
  185. package/out/replicache/src/process-scheduler.js +96 -0
  186. package/out/replicache/src/process-scheduler.js.map +1 -0
  187. package/out/replicache/src/pusher.js +33 -0
  188. package/out/replicache/src/pusher.js.map +1 -0
  189. package/out/replicache/src/replicache-impl.d.ts +1 -1
  190. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  191. package/out/replicache/src/replicache-impl.js +1200 -0
  192. package/out/replicache/src/replicache-impl.js.map +1 -0
  193. package/out/replicache/src/report-error.js +6 -0
  194. package/out/replicache/src/report-error.js.map +1 -0
  195. package/out/replicache/src/request-idle.js +13 -0
  196. package/out/replicache/src/request-idle.js.map +1 -0
  197. package/out/replicache/src/scan-iterator.js +146 -0
  198. package/out/replicache/src/scan-iterator.js.map +1 -0
  199. package/out/replicache/src/scan-options.js +45 -0
  200. package/out/replicache/src/scan-options.js.map +1 -0
  201. package/out/replicache/src/set-interval-with-signal.js +12 -0
  202. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  203. package/out/replicache/src/subscriptions.js +355 -0
  204. package/out/replicache/src/subscriptions.js.map +1 -0
  205. package/out/replicache/src/sync/diff.d.ts +3 -2
  206. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  207. package/out/replicache/src/sync/diff.js +72 -0
  208. package/out/replicache/src/sync/diff.js.map +1 -0
  209. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  210. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  211. package/out/replicache/src/sync/ids.js +9 -0
  212. package/out/replicache/src/sync/ids.js.map +1 -0
  213. package/out/replicache/src/sync/patch.js +49 -0
  214. package/out/replicache/src/sync/patch.js.map +1 -0
  215. package/out/replicache/src/sync/pull-error.js +16 -0
  216. package/out/replicache/src/sync/pull-error.js.map +1 -0
  217. package/out/replicache/src/sync/pull.d.ts +3 -2
  218. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  219. package/out/replicache/src/sync/pull.js +301 -0
  220. package/out/replicache/src/sync/pull.js.map +1 -0
  221. package/out/replicache/src/sync/push.js +88 -0
  222. package/out/replicache/src/sync/push.js.map +1 -0
  223. package/out/replicache/src/sync/request-id.js +20 -0
  224. package/out/replicache/src/sync/request-id.js.map +1 -0
  225. package/out/replicache/src/sync/sync-head-name.js +5 -0
  226. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  227. package/out/replicache/src/to-error.js +10 -0
  228. package/out/replicache/src/to-error.js.map +1 -0
  229. package/out/replicache/src/transaction-closed-error.js +19 -0
  230. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  231. package/out/replicache/src/transactions.js +152 -0
  232. package/out/replicache/src/transactions.js.map +1 -0
  233. package/out/replicache/src/version.js +5 -0
  234. package/out/replicache/src/version.js.map +1 -0
  235. package/out/replicache/src/with-transactions.js +28 -0
  236. package/out/replicache/src/with-transactions.js.map +1 -0
  237. package/out/shared/src/abort-error.js +6 -3
  238. package/out/shared/src/abort-error.js.map +1 -1
  239. package/out/shared/src/arrays.js +45 -43
  240. package/out/shared/src/arrays.js.map +1 -1
  241. package/out/shared/src/asserts.js +64 -68
  242. package/out/shared/src/asserts.js.map +1 -1
  243. package/out/shared/src/bigint-json.js +38 -42
  244. package/out/shared/src/bigint-json.js.map +1 -1
  245. package/out/shared/src/binary-search.js +18 -29
  246. package/out/shared/src/binary-search.js.map +1 -1
  247. package/out/shared/src/broadcast-channel.js +24 -0
  248. package/out/shared/src/broadcast-channel.js.map +1 -0
  249. package/out/shared/src/browser-env.js +25 -0
  250. package/out/shared/src/browser-env.js.map +1 -0
  251. package/out/shared/src/btree-set.js +464 -507
  252. package/out/shared/src/btree-set.js.map +1 -1
  253. package/out/shared/src/cache.js +34 -38
  254. package/out/shared/src/cache.js.map +1 -1
  255. package/out/shared/src/centroid.js +24 -24
  256. package/out/shared/src/centroid.js.map +1 -1
  257. package/out/shared/src/config.js +6 -3
  258. package/out/shared/src/config.js.map +1 -1
  259. package/out/shared/src/custom-key-map.js +58 -64
  260. package/out/shared/src/custom-key-map.js.map +1 -1
  261. package/out/shared/src/custom-key-set.js +51 -57
  262. package/out/shared/src/custom-key-set.js.map +1 -1
  263. package/out/shared/src/deep-clone.js +46 -0
  264. package/out/shared/src/deep-clone.js.map +1 -0
  265. package/out/shared/src/deep-merge.d.ts +20 -3
  266. package/out/shared/src/deep-merge.d.ts.map +1 -1
  267. package/out/shared/src/deep-merge.js +27 -0
  268. package/out/shared/src/deep-merge.js.map +1 -0
  269. package/out/shared/src/document-visible.js +74 -0
  270. package/out/shared/src/document-visible.js.map +1 -0
  271. package/out/shared/src/dotenv.js +5 -7
  272. package/out/shared/src/dotenv.js.map +1 -1
  273. package/out/shared/src/error.js +57 -56
  274. package/out/shared/src/error.js.map +1 -1
  275. package/out/shared/src/has-own.js +5 -3
  276. package/out/shared/src/has-own.js.map +1 -1
  277. package/out/shared/src/hash.js +15 -14
  278. package/out/shared/src/hash.js.map +1 -1
  279. package/out/shared/src/iterables.js +71 -73
  280. package/out/shared/src/iterables.js.map +1 -1
  281. package/out/shared/src/json-schema.js +30 -33
  282. package/out/shared/src/json-schema.js.map +1 -1
  283. package/out/shared/src/json.js +128 -143
  284. package/out/shared/src/json.js.map +1 -1
  285. package/out/shared/src/logging-test-utils.js +12 -19
  286. package/out/shared/src/logging-test-utils.js.map +1 -1
  287. package/out/shared/src/logging.d.ts.map +1 -1
  288. package/out/shared/src/logging.js +99 -83
  289. package/out/shared/src/logging.js.map +1 -1
  290. package/out/shared/src/must.js +9 -7
  291. package/out/shared/src/must.js.map +1 -1
  292. package/out/shared/src/navigator.js +5 -0
  293. package/out/shared/src/navigator.js.map +1 -0
  294. package/out/shared/src/object-traversal.d.ts +19 -0
  295. package/out/shared/src/object-traversal.d.ts.map +1 -0
  296. package/out/shared/src/object-traversal.js +27 -0
  297. package/out/shared/src/object-traversal.js.map +1 -0
  298. package/out/shared/src/objects.js +21 -22
  299. package/out/shared/src/objects.js.map +1 -1
  300. package/out/shared/src/options.js +289 -322
  301. package/out/shared/src/options.js.map +1 -1
  302. package/out/shared/src/parse-big-int.js +12 -10
  303. package/out/shared/src/parse-big-int.js.map +1 -1
  304. package/out/shared/src/promise-race.js +20 -0
  305. package/out/shared/src/promise-race.js.map +1 -0
  306. package/out/shared/src/queue.js +119 -122
  307. package/out/shared/src/queue.js.map +1 -1
  308. package/out/shared/src/rand.js +8 -10
  309. package/out/shared/src/rand.js.map +1 -1
  310. package/out/shared/src/random-uint64.js +9 -0
  311. package/out/shared/src/random-uint64.js.map +1 -0
  312. package/out/shared/src/random-values.js +13 -0
  313. package/out/shared/src/random-values.js.map +1 -0
  314. package/out/shared/src/resolved-promises.js +12 -9
  315. package/out/shared/src/resolved-promises.js.map +1 -1
  316. package/out/shared/src/sentinels.js +13 -6
  317. package/out/shared/src/sentinels.js.map +1 -1
  318. package/out/shared/src/set-utils.js +63 -62
  319. package/out/shared/src/set-utils.js.map +1 -1
  320. package/out/shared/src/size-of-value.js +58 -0
  321. package/out/shared/src/size-of-value.js.map +1 -0
  322. package/out/shared/src/sleep.js +45 -53
  323. package/out/shared/src/sleep.js.map +1 -1
  324. package/out/shared/src/string-compare.js +12 -9
  325. package/out/shared/src/string-compare.js.map +1 -1
  326. package/out/shared/src/subscribable.js +34 -0
  327. package/out/shared/src/subscribable.js.map +1 -0
  328. package/out/shared/src/tdigest-schema.js +7 -7
  329. package/out/shared/src/tdigest-schema.js.map +1 -1
  330. package/out/shared/src/tdigest.js +247 -271
  331. package/out/shared/src/tdigest.js.map +1 -1
  332. package/out/shared/src/valita.js +195 -207
  333. package/out/shared/src/valita.js.map +1 -1
  334. package/out/z2s/src/compiler.d.ts.map +1 -1
  335. package/out/z2s/src/compiler.js +437 -310
  336. package/out/z2s/src/compiler.js.map +1 -1
  337. package/out/z2s/src/sql.js +186 -218
  338. package/out/z2s/src/sql.js.map +1 -1
  339. package/out/zero/package.json.js +9 -0
  340. package/out/zero/package.json.js.map +1 -0
  341. package/out/zero/src/adapters/drizzle.js +5 -2
  342. package/out/zero/src/adapters/drizzle.js.map +1 -1
  343. package/out/zero/src/adapters/pg.js +7 -2
  344. package/out/zero/src/adapters/pg.js.map +1 -1
  345. package/out/zero/src/adapters/postgresjs.js +7 -2
  346. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  347. package/out/zero/src/analyze-query.js +1 -1
  348. package/out/zero/src/analyze-query.js.map +1 -1
  349. package/out/zero/src/ast-to-zql.js +1 -1
  350. package/out/zero/src/ast-to-zql.js.map +1 -1
  351. package/out/zero/src/build-schema.js +3 -5
  352. package/out/zero/src/build-schema.js.map +1 -1
  353. package/out/zero/src/change-protocol/v0.js +5 -3
  354. package/out/zero/src/change-protocol/v0.js.map +1 -1
  355. package/out/zero/src/cli.js +2 -2
  356. package/out/zero/src/cli.js.map +1 -1
  357. package/out/zero/src/deploy-permissions.js +1 -1
  358. package/out/zero/src/deploy-permissions.js.map +1 -1
  359. package/out/zero/src/expo-sqlite.js +5 -0
  360. package/out/zero/src/expo-sqlite.js.map +1 -0
  361. package/out/zero/src/op-sqlite.js +5 -0
  362. package/out/zero/src/op-sqlite.js.map +1 -0
  363. package/out/zero/src/pg.js +29 -3
  364. package/out/zero/src/pg.js.map +1 -1
  365. package/out/zero/src/react-native.js +13 -0
  366. package/out/zero/src/react-native.js.map +1 -0
  367. package/out/zero/src/react.js +17 -0
  368. package/out/zero/src/react.js.map +1 -0
  369. package/out/zero/src/server.js +25 -3
  370. package/out/zero/src/server.js.map +1 -1
  371. package/out/zero/src/solid.js +15 -0
  372. package/out/zero/src/solid.js.map +1 -0
  373. package/out/zero/src/sqlite.js +7 -0
  374. package/out/zero/src/sqlite.js.map +1 -0
  375. package/out/zero/src/transform-query.js +1 -1
  376. package/out/zero/src/transform-query.js.map +1 -1
  377. package/out/zero/src/zero-cache-dev.js +135 -126
  378. package/out/zero/src/zero-cache-dev.js.map +1 -1
  379. package/out/zero/src/zero-out.js +6 -6
  380. package/out/zero/src/zero-out.js.map +1 -1
  381. package/out/zero/src/zero.js +71 -0
  382. package/out/zero/src/zero.js.map +1 -0
  383. package/out/zero/src/zqlite.js +11 -3
  384. package/out/zero/src/zqlite.js.map +1 -1
  385. package/out/zero-cache/src/auth/jwt.d.ts +3 -0
  386. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  387. package/out/zero-cache/src/auth/jwt.js +33 -38
  388. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  389. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  390. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  391. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  392. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  393. package/out/zero-cache/src/auth/write-authorizer.d.ts +4 -3
  394. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  395. package/out/zero-cache/src/auth/write-authorizer.js +385 -350
  396. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  397. package/out/zero-cache/src/config/network.js +42 -45
  398. package/out/zero-cache/src/config/network.js.map +1 -1
  399. package/out/zero-cache/src/config/normalize.js +86 -83
  400. package/out/zero-cache/src/config/normalize.js.map +1 -1
  401. package/out/zero-cache/src/config/zero-config.d.ts +27 -0
  402. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  403. package/out/zero-cache/src/config/zero-config.js +704 -682
  404. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  405. package/out/zero-cache/src/custom/fetch.d.ts +5 -5
  406. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  407. package/out/zero-cache/src/custom/fetch.js +170 -163
  408. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  409. package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
  410. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  411. package/out/zero-cache/src/custom-queries/transform-query.js +99 -106
  412. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  413. package/out/zero-cache/src/db/create.js +32 -36
  414. package/out/zero-cache/src/db/create.js.map +1 -1
  415. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  416. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  417. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  418. package/out/zero-cache/src/db/lite-tables.js +150 -174
  419. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  420. package/out/zero-cache/src/db/migration-lite.js +170 -165
  421. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  422. package/out/zero-cache/src/db/migration.js +157 -137
  423. package/out/zero-cache/src/db/migration.js.map +1 -1
  424. package/out/zero-cache/src/db/mode-enum.js +9 -4
  425. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  426. package/out/zero-cache/src/db/pg-copy.js +51 -90
  427. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  428. package/out/zero-cache/src/db/pg-to-lite.js +114 -109
  429. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  430. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  431. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  432. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  433. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  434. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  435. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  436. package/out/zero-cache/src/db/specs.d.ts +1 -7
  437. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  438. package/out/zero-cache/src/db/specs.js +66 -40
  439. package/out/zero-cache/src/db/specs.js.map +1 -1
  440. package/out/zero-cache/src/db/statements.d.ts +1 -1
  441. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  442. package/out/zero-cache/src/db/statements.js +59 -52
  443. package/out/zero-cache/src/db/statements.js.map +1 -1
  444. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  445. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  446. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  447. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  448. package/out/zero-cache/src/db/warmup.js +25 -12
  449. package/out/zero-cache/src/db/warmup.js.map +1 -1
  450. package/out/zero-cache/src/observability/events.js +71 -82
  451. package/out/zero-cache/src/observability/events.js.map +1 -1
  452. package/out/zero-cache/src/observability/metrics.js +54 -32
  453. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  454. package/out/zero-cache/src/scripts/decommission.js +47 -43
  455. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  456. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  457. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  458. package/out/zero-cache/src/scripts/permissions.js +107 -99
  459. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  460. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  461. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  462. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  463. package/out/zero-cache/src/server/change-streamer.js +104 -60
  464. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  465. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  466. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  467. package/out/zero-cache/src/server/logging.d.ts +1 -1
  468. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  469. package/out/zero-cache/src/server/logging.js +26 -19
  470. package/out/zero-cache/src/server/logging.js.map +1 -1
  471. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  472. package/out/zero-cache/src/server/main.js +137 -120
  473. package/out/zero-cache/src/server/main.js.map +1 -1
  474. package/out/zero-cache/src/server/mutator.js +19 -0
  475. package/out/zero-cache/src/server/mutator.js.map +1 -0
  476. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  477. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  478. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  479. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  480. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  481. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  482. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  483. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  484. package/out/zero-cache/src/server/otel-start.js +57 -68
  485. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  486. package/out/zero-cache/src/server/reaper.js +34 -26
  487. package/out/zero-cache/src/server/reaper.js.map +1 -1
  488. package/out/zero-cache/src/server/replicator.js +53 -31
  489. package/out/zero-cache/src/server/replicator.js.map +1 -1
  490. package/out/zero-cache/src/server/runner/main.js +6 -4
  491. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  492. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  493. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  494. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  495. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  496. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  497. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  498. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  499. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  500. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  501. package/out/zero-cache/src/server/syncer.js +124 -63
  502. package/out/zero-cache/src/server/syncer.js.map +1 -1
  503. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  504. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  505. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  506. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  507. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  508. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  509. package/out/zero-cache/src/server/worker-urls.js +21 -0
  510. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  511. package/out/zero-cache/src/services/analyze.d.ts +3 -4
  512. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  513. package/out/zero-cache/src/services/analyze.js +104 -121
  514. package/out/zero-cache/src/services/analyze.js.map +1 -1
  515. package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
  516. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  517. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  518. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  519. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  520. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  521. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  522. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  523. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  524. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  525. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  526. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  527. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  528. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  529. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  530. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  531. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  532. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  533. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  534. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  535. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  536. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  537. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  538. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  539. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  540. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  541. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
  542. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  543. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  544. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  545. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  546. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
  547. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  548. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  549. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  550. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  551. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  552. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  553. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  554. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  555. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  556. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  557. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  558. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  559. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  560. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  561. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  562. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  563. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  564. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  565. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  566. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  567. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  568. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  569. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  570. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  571. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  572. package/out/zero-cache/src/services/change-source/replica-schema.js +64 -47
  573. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  574. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -161
  575. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  576. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +13 -4
  577. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  578. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +213 -157
  579. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  580. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  581. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  582. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +234 -355
  583. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  584. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -26
  585. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  586. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  587. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  588. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  589. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  590. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  591. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  592. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +40 -44
  593. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  594. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  595. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  596. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  597. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  598. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  599. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  600. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -37
  601. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  602. package/out/zero-cache/src/services/change-streamer/storer.d.ts +2 -2
  603. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  604. package/out/zero-cache/src/services/change-streamer/storer.js +309 -372
  605. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  606. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
  607. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  608. package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
  609. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  610. package/out/zero-cache/src/services/heapz.js +21 -25
  611. package/out/zero-cache/src/services/heapz.js.map +1 -1
  612. package/out/zero-cache/src/services/http-service.d.ts +6 -5
  613. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  614. package/out/zero-cache/src/services/http-service.js +61 -59
  615. package/out/zero-cache/src/services/http-service.js.map +1 -1
  616. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  617. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  618. package/out/zero-cache/src/services/life-cycle.js +216 -255
  619. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  620. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  621. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  622. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  623. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  624. package/out/zero-cache/src/services/litestream/commands.js +193 -178
  625. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  626. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  627. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  628. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
  629. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  630. package/out/zero-cache/src/services/mutagen/mutagen.js +271 -267
  631. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  632. package/out/zero-cache/src/services/mutagen/pusher.d.ts +198 -0
  633. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  634. package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
  635. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  636. package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
  637. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  638. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  639. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  640. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  641. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  642. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  643. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  644. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  645. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  646. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  647. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  648. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  649. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  650. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  651. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  652. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  653. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  654. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  655. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  656. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  657. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  658. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  659. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  660. package/out/zero-cache/src/services/run-ast.d.ts +9 -3
  661. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  662. package/out/zero-cache/src/services/run-ast.js +87 -79
  663. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  664. package/out/zero-cache/src/services/runner.d.ts +1 -1
  665. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/runner.js +40 -40
  667. package/out/zero-cache/src/services/runner.js.map +1 -1
  668. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  669. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  670. package/out/zero-cache/src/services/running-state.js +122 -119
  671. package/out/zero-cache/src/services/running-state.js.map +1 -1
  672. package/out/zero-cache/src/services/statz.js +184 -162
  673. package/out/zero-cache/src/services/statz.js.map +1 -1
  674. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  675. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  676. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  677. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  678. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  679. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  680. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  681. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +83 -92
  682. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  683. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  684. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  685. package/out/zero-cache/src/services/view-syncer/cvr-store.js +628 -616
  686. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  687. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  688. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  689. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -694
  690. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  691. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  692. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  693. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  694. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  695. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +169 -158
  696. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  697. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  698. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  699. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +534 -480
  700. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  701. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -280
  702. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  703. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +53 -120
  704. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  705. package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
  706. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  707. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
  708. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  709. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  710. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  711. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  712. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  713. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  714. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  715. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  716. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -3
  717. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  718. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1508 -1307
  719. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  720. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  721. package/out/zero-cache/src/types/error-with-level.js +29 -25
  722. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  723. package/out/zero-cache/src/types/http.js +27 -14
  724. package/out/zero-cache/src/types/http.js.map +1 -1
  725. package/out/zero-cache/src/types/lexi-version.js +46 -31
  726. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  727. package/out/zero-cache/src/types/lite.js +118 -125
  728. package/out/zero-cache/src/types/lite.js.map +1 -1
  729. package/out/zero-cache/src/types/names.js +6 -3
  730. package/out/zero-cache/src/types/names.js.map +1 -1
  731. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  732. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  733. package/out/zero-cache/src/types/pg-types.js +17 -72
  734. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  735. package/out/zero-cache/src/types/pg.d.ts +1 -1
  736. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  737. package/out/zero-cache/src/types/pg.js +213 -233
  738. package/out/zero-cache/src/types/pg.js.map +1 -1
  739. package/out/zero-cache/src/types/processes.d.ts +2 -2
  740. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  741. package/out/zero-cache/src/types/processes.js +95 -143
  742. package/out/zero-cache/src/types/processes.js.map +1 -1
  743. package/out/zero-cache/src/types/profiler.js +29 -30
  744. package/out/zero-cache/src/types/profiler.js.map +1 -1
  745. package/out/zero-cache/src/types/row-key.js +30 -68
  746. package/out/zero-cache/src/types/row-key.js.map +1 -1
  747. package/out/zero-cache/src/types/schema-versions.js +25 -19
  748. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  749. package/out/zero-cache/src/types/shards.js +50 -36
  750. package/out/zero-cache/src/types/shards.js.map +1 -1
  751. package/out/zero-cache/src/types/sql.js +9 -13
  752. package/out/zero-cache/src/types/sql.js.map +1 -1
  753. package/out/zero-cache/src/types/streams.js +245 -254
  754. package/out/zero-cache/src/types/streams.js.map +1 -1
  755. package/out/zero-cache/src/types/strings.js +14 -11
  756. package/out/zero-cache/src/types/strings.js.map +1 -1
  757. package/out/zero-cache/src/types/subscription.js +200 -259
  758. package/out/zero-cache/src/types/subscription.js.map +1 -1
  759. package/out/zero-cache/src/types/url-params.js +35 -30
  760. package/out/zero-cache/src/types/url-params.js.map +1 -1
  761. package/out/zero-cache/src/types/websocket-handoff.d.ts +3 -2
  762. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  763. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  764. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  765. package/out/zero-cache/src/types/ws.js +56 -59
  766. package/out/zero-cache/src/types/ws.js.map +1 -1
  767. package/out/zero-cache/src/workers/connect-params.js +44 -40
  768. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  769. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  770. package/out/zero-cache/src/workers/connection.js +282 -243
  771. package/out/zero-cache/src/workers/connection.js.map +1 -1
  772. package/out/zero-cache/src/workers/mutator.js +24 -0
  773. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  774. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  775. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  776. package/out/zero-cache/src/workers/replicator.js +103 -106
  777. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  778. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  779. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  780. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  781. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  782. package/out/zero-cache/src/workers/syncer.js +192 -169
  783. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  784. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  785. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  786. package/out/zero-client/src/client/bindings.d.ts +9 -8
  787. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  788. package/out/zero-client/src/client/bindings.js +33 -0
  789. package/out/zero-client/src/client/bindings.js.map +1 -0
  790. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  791. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  792. package/out/zero-client/src/client/connection-manager.d.ts +12 -31
  793. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  794. package/out/zero-client/src/client/connection-manager.js +310 -0
  795. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  796. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  797. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  798. package/out/zero-client/src/client/connection.d.ts +45 -2
  799. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  800. package/out/zero-client/src/client/connection.js +103 -0
  801. package/out/zero-client/src/client/connection.js.map +1 -0
  802. package/out/zero-client/src/client/context.d.ts +3 -6
  803. package/out/zero-client/src/client/context.d.ts.map +1 -1
  804. package/out/zero-client/src/client/context.js +104 -0
  805. package/out/zero-client/src/client/context.js.map +1 -0
  806. package/out/zero-client/src/client/crud.d.ts +7 -5
  807. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  808. package/out/zero-client/src/client/crud.js +225 -0
  809. package/out/zero-client/src/client/crud.js.map +1 -0
  810. package/out/zero-client/src/client/custom.d.ts +14 -15
  811. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  812. package/out/zero-client/src/client/custom.js +128 -0
  813. package/out/zero-client/src/client/custom.js.map +1 -0
  814. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  815. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  816. package/out/zero-client/src/client/enable-analytics.js +18 -0
  817. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  818. package/out/zero-client/src/client/error.d.ts +2 -1
  819. package/out/zero-client/src/client/error.d.ts.map +1 -1
  820. package/out/zero-client/src/client/error.js +148 -0
  821. package/out/zero-client/src/client/error.js.map +1 -0
  822. package/out/zero-client/src/client/http-string.js +11 -0
  823. package/out/zero-client/src/client/http-string.js.map +1 -0
  824. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  825. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  826. package/out/zero-client/src/client/inspector/client.js +28 -0
  827. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  828. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  829. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  830. package/out/zero-client/src/client/inspector/inspector.d.ts +6 -2
  831. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  832. package/out/zero-client/src/client/inspector/inspector.js +54 -0
  833. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  834. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -1
  835. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  836. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  837. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  838. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  839. package/out/zero-client/src/client/inspector/query.js +82 -0
  840. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  841. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  842. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  843. package/out/zero-client/src/client/ivm-branch.js +149 -0
  844. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  845. package/out/zero-client/src/client/keys.js +45 -0
  846. package/out/zero-client/src/client/keys.js.map +1 -0
  847. package/out/zero-client/src/client/log-options.js +60 -0
  848. package/out/zero-client/src/client/log-options.js.map +1 -0
  849. package/out/zero-client/src/client/make-mutate-property.d.ts +43 -0
  850. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
  851. package/out/zero-client/src/client/make-mutate-property.js +38 -0
  852. package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
  853. package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
  854. package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
  855. package/out/zero-client/src/client/make-replicache-mutators.js +103 -0
  856. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  857. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  858. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  859. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  860. package/out/zero-client/src/client/metrics.js +249 -0
  861. package/out/zero-client/src/client/metrics.js.map +1 -0
  862. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  863. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  864. package/out/zero-client/src/client/mutator-proxy.d.ts +1 -2
  865. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  866. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  867. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  868. package/out/zero-client/src/client/options.d.ts +49 -20
  869. package/out/zero-client/src/client/options.d.ts.map +1 -1
  870. package/out/zero-client/src/client/options.js +11 -0
  871. package/out/zero-client/src/client/options.js.map +1 -0
  872. package/out/zero-client/src/client/query-manager.d.ts +4 -4
  873. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  874. package/out/zero-client/src/client/query-manager.js +377 -0
  875. package/out/zero-client/src/client/query-manager.js.map +1 -0
  876. package/out/zero-client/src/client/reload-error-handler.d.ts +1 -1
  877. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  878. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  879. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  880. package/out/zero-client/src/client/server-option.js +64 -0
  881. package/out/zero-client/src/client/server-option.js.map +1 -0
  882. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  883. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  884. package/out/zero-client/src/client/version.js +5 -0
  885. package/out/zero-client/src/client/version.js.map +1 -0
  886. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  887. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  888. package/out/zero-client/src/client/zero-rep.d.ts +2 -2
  889. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  890. package/out/zero-client/src/client/zero-rep.js +72 -0
  891. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  892. package/out/zero-client/src/client/zero.d.ts +25 -18
  893. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  894. package/out/zero-client/src/client/zero.js +1759 -0
  895. package/out/zero-client/src/client/zero.js.map +1 -0
  896. package/out/zero-client/src/mod.d.ts +13 -16
  897. package/out/zero-client/src/mod.d.ts.map +1 -1
  898. package/out/zero-client/src/util/nanoid.js +21 -0
  899. package/out/zero-client/src/util/nanoid.js.map +1 -0
  900. package/out/zero-client/src/util/socket.js +7 -0
  901. package/out/zero-client/src/util/socket.js.map +1 -0
  902. package/out/zero-protocol/src/analyze-query-result.d.ts +236 -0
  903. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  904. package/out/zero-protocol/src/analyze-query-result.js +159 -25
  905. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  906. package/out/zero-protocol/src/application-error.js +35 -37
  907. package/out/zero-protocol/src/application-error.js.map +1 -1
  908. package/out/zero-protocol/src/ast.d.ts +2 -2
  909. package/out/zero-protocol/src/ast.js +296 -277
  910. package/out/zero-protocol/src/ast.js.map +1 -1
  911. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  912. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  913. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  914. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  915. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  916. package/out/zero-protocol/src/client-schema.js +40 -26
  917. package/out/zero-protocol/src/client-schema.js.map +1 -1
  918. package/out/zero-protocol/src/close-connection.js +11 -18
  919. package/out/zero-protocol/src/close-connection.js.map +1 -1
  920. package/out/zero-protocol/src/connect.d.ts +4 -4
  921. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  922. package/out/zero-protocol/src/connect.js +50 -51
  923. package/out/zero-protocol/src/connect.js.map +1 -1
  924. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  925. package/out/zero-protocol/src/custom-queries.js +61 -39
  926. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  927. package/out/zero-protocol/src/data.js +9 -4
  928. package/out/zero-protocol/src/data.js.map +1 -1
  929. package/out/zero-protocol/src/delete-clients.js +16 -9
  930. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  931. package/out/zero-protocol/src/down.d.ts +105 -6
  932. package/out/zero-protocol/src/down.d.ts.map +1 -1
  933. package/out/zero-protocol/src/down.js +20 -4
  934. package/out/zero-protocol/src/down.js.map +1 -1
  935. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  936. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  937. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  938. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  939. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  940. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  941. package/out/zero-protocol/src/error.d.ts +17 -17
  942. package/out/zero-protocol/src/error.js +151 -89
  943. package/out/zero-protocol/src/error.js.map +1 -1
  944. package/out/zero-protocol/src/inspect-down.d.ts +315 -18
  945. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  946. package/out/zero-protocol/src/inspect-down.js +72 -54
  947. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  948. package/out/zero-protocol/src/inspect-up.d.ts +10 -6
  949. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  950. package/out/zero-protocol/src/inspect-up.js +39 -26
  951. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  952. package/out/zero-protocol/src/mutation-id.js +9 -5
  953. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  954. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  955. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  956. package/out/zero-protocol/src/mutations-patch.js +16 -17
  957. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  958. package/out/zero-protocol/src/ping.js +9 -4
  959. package/out/zero-protocol/src/ping.js.map +1 -1
  960. package/out/zero-protocol/src/poke.js +55 -72
  961. package/out/zero-protocol/src/poke.js.map +1 -1
  962. package/out/zero-protocol/src/pong.js +9 -4
  963. package/out/zero-protocol/src/pong.js.map +1 -1
  964. package/out/zero-protocol/src/primary-key.js +19 -5
  965. package/out/zero-protocol/src/primary-key.js.map +1 -1
  966. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  967. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  968. package/out/zero-protocol/src/protocol-version.js +7 -59
  969. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  970. package/out/zero-protocol/src/pull.js +26 -19
  971. package/out/zero-protocol/src/pull.js.map +1 -1
  972. package/out/zero-protocol/src/push.d.ts +4 -4
  973. package/out/zero-protocol/src/push.js +179 -176
  974. package/out/zero-protocol/src/push.js.map +1 -1
  975. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  976. package/out/zero-protocol/src/queries-patch.js +29 -22
  977. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  978. package/out/zero-protocol/src/query-hash.js +18 -14
  979. package/out/zero-protocol/src/query-hash.js.map +1 -1
  980. package/out/zero-protocol/src/row-patch.js +29 -20
  981. package/out/zero-protocol/src/row-patch.js.map +1 -1
  982. package/out/zero-protocol/src/up.d.ts +6 -5
  983. package/out/zero-protocol/src/up.d.ts.map +1 -1
  984. package/out/zero-protocol/src/up.js +18 -4
  985. package/out/zero-protocol/src/up.js.map +1 -1
  986. package/out/zero-protocol/src/version.js +9 -4
  987. package/out/zero-protocol/src/version.js.map +1 -1
  988. package/out/zero-react/src/components/inspector.d.ts +3 -2
  989. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  990. package/out/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
  991. package/out/zero-react/src/components/inspector.js.map +1 -0
  992. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  993. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  994. package/out/zero-react/src/components/zero-inspector.d.ts +3 -2
  995. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  996. package/out/zero-react/src/components/zero-inspector.js +44 -0
  997. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  998. package/out/zero-react/src/mod.d.ts +1 -3
  999. package/out/zero-react/src/mod.d.ts.map +1 -1
  1000. package/out/zero-react/src/use-query.d.ts +6 -5
  1001. package/out/zero-react/src/use-query.d.ts.map +1 -1
  1002. package/out/{react.js → zero-react/src/use-query.js} +29 -220
  1003. package/out/zero-react/src/use-query.js.map +1 -0
  1004. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  1005. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  1006. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  1007. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  1008. package/out/zero-react/src/use-zero-online.js +14 -0
  1009. package/out/zero-react/src/use-zero-online.js.map +1 -0
  1010. package/out/zero-react/src/zero-provider.d.ts +5 -4
  1011. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  1012. package/out/zero-react/src/zero-provider.js +59 -0
  1013. package/out/zero-react/src/zero-provider.js.map +1 -0
  1014. package/out/zero-schema/src/builder/relationship-builder.js +27 -0
  1015. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  1016. package/out/zero-schema/src/builder/schema-builder.js +88 -0
  1017. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  1018. package/out/zero-schema/src/builder/table-builder.js +129 -0
  1019. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  1020. package/out/zero-schema/src/compiled-permissions.js +23 -19
  1021. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  1022. package/out/zero-schema/src/name-mapper.js +43 -38
  1023. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1024. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1025. package/out/zero-schema/src/permissions.js +199 -0
  1026. package/out/zero-schema/src/permissions.js.map +1 -0
  1027. package/out/zero-schema/src/schema-config.js +35 -51
  1028. package/out/zero-schema/src/schema-config.js.map +1 -1
  1029. package/out/zero-server/src/adapters/drizzle.d.ts +1 -1
  1030. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1031. package/out/zero-server/src/adapters/drizzle.js +83 -100
  1032. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1033. package/out/zero-server/src/adapters/pg.d.ts +3 -2
  1034. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1035. package/out/zero-server/src/adapters/pg.js +53 -77
  1036. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1037. package/out/zero-server/src/adapters/postgresjs.d.ts +1 -1
  1038. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1039. package/out/zero-server/src/adapters/postgresjs.js +39 -57
  1040. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1041. package/out/zero-server/src/custom.d.ts +10 -11
  1042. package/out/zero-server/src/custom.d.ts.map +1 -1
  1043. package/out/zero-server/src/custom.js +185 -117
  1044. package/out/zero-server/src/custom.js.map +1 -1
  1045. package/out/zero-server/src/logging.js +7 -4
  1046. package/out/zero-server/src/logging.js.map +1 -1
  1047. package/out/zero-server/src/mod.d.ts +1 -0
  1048. package/out/zero-server/src/mod.d.ts.map +1 -1
  1049. package/out/zero-server/src/pg-query-executor.js +17 -14
  1050. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  1051. package/out/zero-server/src/process-mutations.d.ts +9 -14
  1052. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  1053. package/out/zero-server/src/process-mutations.js +337 -272
  1054. package/out/zero-server/src/process-mutations.js.map +1 -1
  1055. package/out/zero-server/src/push-processor.d.ts +5 -3
  1056. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  1057. package/out/zero-server/src/push-processor.js +48 -32
  1058. package/out/zero-server/src/push-processor.js.map +1 -1
  1059. package/out/zero-server/src/queries/process-queries.d.ts +63 -2
  1060. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1061. package/out/zero-server/src/queries/process-queries.js +101 -95
  1062. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1063. package/out/zero-server/src/schema.js +136 -124
  1064. package/out/zero-server/src/schema.js.map +1 -1
  1065. package/out/zero-server/src/zql-database.d.ts +4 -4
  1066. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1067. package/out/zero-server/src/zql-database.js +67 -48
  1068. package/out/zero-server/src/zql-database.js.map +1 -1
  1069. package/out/zero-solid/src/mod.d.ts +1 -2
  1070. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1071. package/out/zero-solid/src/solid-view.d.ts +1 -1
  1072. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1073. package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
  1074. package/out/zero-solid/src/solid-view.js.map +1 -0
  1075. package/out/zero-solid/src/use-query.d.ts +3 -3
  1076. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1077. package/out/zero-solid/src/use-query.js +59 -0
  1078. package/out/zero-solid/src/use-query.js.map +1 -0
  1079. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1080. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1081. package/out/zero-solid/src/use-zero-connection-state.js +17 -0
  1082. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1083. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  1084. package/out/zero-solid/src/use-zero-online.js +15 -0
  1085. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1086. package/out/zero-solid/src/use-zero.d.ts +6 -5
  1087. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1088. package/out/zero-solid/src/use-zero.js +70 -0
  1089. package/out/zero-solid/src/use-zero.js.map +1 -0
  1090. package/out/zero-types/src/format.js +7 -4
  1091. package/out/zero-types/src/format.js.map +1 -1
  1092. package/out/zero-types/src/name-mapper.js +43 -40
  1093. package/out/zero-types/src/name-mapper.js.map +1 -1
  1094. package/out/zql/src/builder/builder.d.ts +3 -1
  1095. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1096. package/out/zql/src/builder/builder.js +487 -428
  1097. package/out/zql/src/builder/builder.js.map +1 -1
  1098. package/out/zql/src/builder/debug-delegate.js +68 -64
  1099. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1100. package/out/zql/src/builder/filter.js +132 -138
  1101. package/out/zql/src/builder/filter.js.map +1 -1
  1102. package/out/zql/src/builder/like.js +44 -51
  1103. package/out/zql/src/builder/like.js.map +1 -1
  1104. package/out/zql/src/error.d.ts +5 -0
  1105. package/out/zql/src/error.d.ts.map +1 -1
  1106. package/out/zql/src/error.js +18 -6
  1107. package/out/zql/src/error.js.map +1 -1
  1108. package/out/zql/src/ivm/array-view.js +86 -92
  1109. package/out/zql/src/ivm/array-view.js.map +1 -1
  1110. package/out/zql/src/ivm/constraint.js +74 -127
  1111. package/out/zql/src/ivm/constraint.js.map +1 -1
  1112. package/out/zql/src/ivm/data.js +59 -85
  1113. package/out/zql/src/ivm/data.js.map +1 -1
  1114. package/out/zql/src/ivm/exists.js +236 -243
  1115. package/out/zql/src/ivm/exists.js.map +1 -1
  1116. package/out/zql/src/ivm/fan-in.js +50 -51
  1117. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1118. package/out/zql/src/ivm/fan-out.js +48 -50
  1119. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1120. package/out/zql/src/ivm/filter-operators.js +87 -87
  1121. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1122. package/out/zql/src/ivm/filter-push.js +26 -23
  1123. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1124. package/out/zql/src/ivm/filter.js +30 -32
  1125. package/out/zql/src/ivm/filter.js.map +1 -1
  1126. package/out/zql/src/ivm/flipped-join.js +343 -326
  1127. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1128. package/out/zql/src/ivm/join-utils.js +85 -79
  1129. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1130. package/out/zql/src/ivm/join.js +287 -207
  1131. package/out/zql/src/ivm/join.js.map +1 -1
  1132. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1133. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1134. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1135. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1136. package/out/zql/src/ivm/memory-source.js +471 -489
  1137. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1138. package/out/zql/src/ivm/memory-storage.js +32 -31
  1139. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1140. package/out/zql/src/ivm/operator.js +8 -9
  1141. package/out/zql/src/ivm/operator.js.map +1 -1
  1142. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1143. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1144. package/out/zql/src/ivm/skip.js +92 -106
  1145. package/out/zql/src/ivm/skip.js.map +1 -1
  1146. package/out/zql/src/ivm/source.d.ts +3 -1
  1147. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1148. package/out/zql/src/ivm/stream.js +20 -16
  1149. package/out/zql/src/ivm/stream.js.map +1 -1
  1150. package/out/zql/src/ivm/take.js +502 -456
  1151. package/out/zql/src/ivm/take.js.map +1 -1
  1152. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1153. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1154. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1155. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1156. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1157. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1158. package/out/zql/src/ivm/view.d.ts +2 -2
  1159. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1160. package/out/zql/src/mutate/custom.d.ts +21 -12
  1161. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1162. package/out/zql/src/mutate/custom.js +15 -7
  1163. package/out/zql/src/mutate/custom.js.map +1 -1
  1164. package/out/zql/src/mutate/mutator-registry.d.ts +142 -0
  1165. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
  1166. package/out/zql/src/mutate/mutator-registry.js +97 -0
  1167. package/out/zql/src/mutate/mutator-registry.js.map +1 -0
  1168. package/out/zql/src/mutate/mutator.d.ts +98 -0
  1169. package/out/zql/src/mutate/mutator.d.ts.map +1 -0
  1170. package/out/zql/src/mutate/mutator.js +35 -0
  1171. package/out/zql/src/mutate/mutator.js.map +1 -0
  1172. package/out/zql/src/planner/planner-builder.js +238 -172
  1173. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1174. package/out/zql/src/planner/planner-connection.d.ts +7 -15
  1175. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1176. package/out/zql/src/planner/planner-connection.js +205 -248
  1177. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1178. package/out/zql/src/planner/planner-constraint.js +8 -11
  1179. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1180. package/out/zql/src/planner/planner-debug.d.ts +37 -43
  1181. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1182. package/out/zql/src/planner/planner-debug.js +227 -161
  1183. package/out/zql/src/planner/planner-debug.js.map +1 -1
  1184. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1185. package/out/zql/src/planner/planner-fan-in.js +157 -164
  1186. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1187. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  1188. package/out/zql/src/planner/planner-fan-out.js +73 -59
  1189. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1190. package/out/zql/src/planner/planner-graph.d.ts +6 -6
  1191. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1192. package/out/zql/src/planner/planner-graph.js +322 -337
  1193. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1194. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1195. package/out/zql/src/planner/planner-join.js +237 -342
  1196. package/out/zql/src/planner/planner-join.js.map +1 -1
  1197. package/out/zql/src/planner/planner-node.d.ts +4 -0
  1198. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1199. package/out/zql/src/planner/planner-node.js +8 -2
  1200. package/out/zql/src/planner/planner-node.js.map +1 -1
  1201. package/out/zql/src/planner/planner-source.js +23 -12
  1202. package/out/zql/src/planner/planner-source.js.map +1 -1
  1203. package/out/zql/src/planner/planner-terminus.js +28 -27
  1204. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1205. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1206. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1207. package/out/zql/src/query/complete-ordering.js +71 -0
  1208. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1209. package/out/zql/src/query/create-builder.d.ts +7 -0
  1210. package/out/zql/src/query/create-builder.d.ts.map +1 -0
  1211. package/out/zql/src/query/create-builder.js +44 -0
  1212. package/out/zql/src/query/create-builder.js.map +1 -0
  1213. package/out/zql/src/query/error.js +12 -8
  1214. package/out/zql/src/query/error.js.map +1 -1
  1215. package/out/zql/src/query/escape-like.js +7 -0
  1216. package/out/zql/src/query/escape-like.js.map +1 -0
  1217. package/out/zql/src/query/expression.js +153 -151
  1218. package/out/zql/src/query/expression.js.map +1 -1
  1219. package/out/zql/src/query/measure-push-operator.js +42 -35
  1220. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1221. package/out/zql/src/query/metrics-delegate.js +9 -5
  1222. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1223. package/out/zql/src/query/named.d.ts +8 -10
  1224. package/out/zql/src/query/named.d.ts.map +1 -1
  1225. package/out/zql/src/query/named.js +52 -88
  1226. package/out/zql/src/query/named.js.map +1 -1
  1227. package/out/zql/src/query/query-delegate-base.d.ts +6 -14
  1228. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1229. package/out/zql/src/query/query-delegate-base.js +118 -134
  1230. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1231. package/out/zql/src/query/query-delegate.d.ts +6 -8
  1232. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1233. package/out/zql/src/query/query-impl.d.ts +19 -19
  1234. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1235. package/out/zql/src/query/query-impl.js +514 -433
  1236. package/out/zql/src/query/query-impl.js.map +1 -1
  1237. package/out/zql/src/query/query-internals.d.ts +11 -13
  1238. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1239. package/out/zql/src/query/query-internals.js +9 -19
  1240. package/out/zql/src/query/query-internals.js.map +1 -1
  1241. package/out/zql/src/query/query-registry.d.ts +253 -0
  1242. package/out/zql/src/query/query-registry.d.ts.map +1 -0
  1243. package/out/zql/src/query/query-registry.js +131 -0
  1244. package/out/zql/src/query/query-registry.js.map +1 -0
  1245. package/out/zql/src/query/query.d.ts +30 -16
  1246. package/out/zql/src/query/query.d.ts.map +1 -1
  1247. package/out/zql/src/query/schema-query.d.ts +6 -0
  1248. package/out/zql/src/query/schema-query.d.ts.map +1 -0
  1249. package/out/zql/src/query/static-query.d.ts +3 -3
  1250. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1251. package/out/zql/src/query/static-query.js +41 -18
  1252. package/out/zql/src/query/static-query.js.map +1 -1
  1253. package/out/zql/src/query/ttl.js +69 -62
  1254. package/out/zql/src/query/ttl.js.map +1 -1
  1255. package/out/zql/src/query/validate-input.d.ts +15 -0
  1256. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1257. package/out/zql/src/query/validate-input.js +24 -0
  1258. package/out/zql/src/query/validate-input.js.map +1 -0
  1259. package/out/zqlite/src/database-storage.d.ts +1 -1
  1260. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1261. package/out/zqlite/src/database-storage.js +99 -102
  1262. package/out/zqlite/src/database-storage.js.map +1 -1
  1263. package/out/zqlite/src/db.js +241 -194
  1264. package/out/zqlite/src/db.js.map +1 -1
  1265. package/out/zqlite/src/explain-queries.js +13 -16
  1266. package/out/zqlite/src/explain-queries.js.map +1 -1
  1267. package/out/zqlite/src/internal/sql.js +15 -10
  1268. package/out/zqlite/src/internal/sql.js.map +1 -1
  1269. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1270. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1271. package/out/zqlite/src/query-builder.js +172 -143
  1272. package/out/zqlite/src/query-builder.js.map +1 -1
  1273. package/out/zqlite/src/query-delegate.d.ts +2 -2
  1274. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1275. package/out/zqlite/src/query-delegate.js +53 -43
  1276. package/out/zqlite/src/query-delegate.js.map +1 -1
  1277. package/out/zqlite/src/sqlite-cost-model.js +94 -125
  1278. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1279. package/out/zqlite/src/sqlite-stat-fanout.js +277 -353
  1280. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
  1281. package/out/zqlite/src/table-source.d.ts +9 -4
  1282. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1283. package/out/zqlite/src/table-source.js +424 -327
  1284. package/out/zqlite/src/table-source.js.map +1 -1
  1285. package/package.json +23 -25
  1286. package/out/chunk-424PT5DM.js +0 -23
  1287. package/out/chunk-424PT5DM.js.map +0 -7
  1288. package/out/chunk-AFADJQ2O.js +0 -1
  1289. package/out/chunk-AFADJQ2O.js.map +0 -7
  1290. package/out/chunk-ASRS2LFV.js.map +0 -7
  1291. package/out/chunk-EZM3XBAB.js.map +0 -7
  1292. package/out/chunk-FODUNUAD.js +0 -18850
  1293. package/out/chunk-FODUNUAD.js.map +0 -7
  1294. package/out/chunk-HCZQVP5R.js.map +0 -7
  1295. package/out/chunk-S633A55A.js +0 -495
  1296. package/out/chunk-S633A55A.js.map +0 -7
  1297. package/out/chunk-TAUDS4QP.js +0 -4129
  1298. package/out/chunk-TAUDS4QP.js.map +0 -7
  1299. package/out/chunk-VZOYWIRW.js.map +0 -7
  1300. package/out/chunk-WPAQ4EPM.js.map +0 -7
  1301. package/out/expo-sqlite.js +0 -11
  1302. package/out/expo-sqlite.js.map +0 -7
  1303. package/out/inspector-GP3CBZRU.js.map +0 -7
  1304. package/out/lazy-inspector-XLKVABX2.js +0 -575
  1305. package/out/lazy-inspector-XLKVABX2.js.map +0 -7
  1306. package/out/op-sqlite.js.map +0 -7
  1307. package/out/react-native.js +0 -25
  1308. package/out/react-native.js.map +0 -7
  1309. package/out/react.js.map +0 -7
  1310. package/out/shared/src/enum.js +0 -2
  1311. package/out/shared/src/enum.js.map +0 -1
  1312. package/out/shared/src/expand.js +0 -2
  1313. package/out/shared/src/expand.js.map +0 -1
  1314. package/out/shared/src/immutable.js +0 -2
  1315. package/out/shared/src/immutable.js.map +0 -1
  1316. package/out/shared/src/types.js +0 -2
  1317. package/out/shared/src/types.js.map +0 -1
  1318. package/out/shared/src/writable.js +0 -2
  1319. package/out/shared/src/writable.js.map +0 -1
  1320. package/out/solid.js.map +0 -7
  1321. package/out/sqlite.js +0 -15
  1322. package/out/sqlite.js.map +0 -7
  1323. package/out/zero/package.json +0 -195
  1324. package/out/zero/src/server/change-streamer.js +0 -2
  1325. package/out/zero/src/server/change-streamer.js.map +0 -1
  1326. package/out/zero/src/server/main.js +0 -2
  1327. package/out/zero/src/server/main.js.map +0 -1
  1328. package/out/zero/src/server/reaper.js +0 -2
  1329. package/out/zero/src/server/reaper.js.map +0 -1
  1330. package/out/zero/src/server/replicator.js +0 -2
  1331. package/out/zero/src/server/replicator.js.map +0 -1
  1332. package/out/zero/src/server/runner/main.js +0 -2
  1333. package/out/zero/src/server/runner/main.js.map +0 -1
  1334. package/out/zero/src/server/syncer.js +0 -2
  1335. package/out/zero/src/server/syncer.js.map +0 -1
  1336. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1337. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1338. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1339. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1340. package/out/zero-cache/src/services/service.js +0 -2
  1341. package/out/zero-cache/src/services/service.js.map +0 -1
  1342. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1343. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1344. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1345. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1346. package/out/zero-cache/src/types/satisfies.js +0 -2
  1347. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1348. package/out/zero-events/src/index.js +0 -2
  1349. package/out/zero-events/src/index.js.map +0 -1
  1350. package/out/zero-events/src/json.js +0 -2
  1351. package/out/zero-events/src/json.js.map +0 -1
  1352. package/out/zero-events/src/status.js +0 -3
  1353. package/out/zero-events/src/status.js.map +0 -1
  1354. package/out/zero-pg/src/mod.js +0 -6
  1355. package/out/zero-pg/src/mod.js.map +0 -1
  1356. package/out/zero-protocol/src/error-kind.js +0 -3
  1357. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1358. package/out/zero-protocol/src/error-origin.js +0 -3
  1359. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1360. package/out/zero-protocol/src/error-reason.js +0 -3
  1361. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1362. package/out/zero-schema/src/table-schema.js +0 -7
  1363. package/out/zero-schema/src/table-schema.js.map +0 -1
  1364. package/out/zero-server/src/mod.js +0 -8
  1365. package/out/zero-server/src/mod.js.map +0 -1
  1366. package/out/zero-types/src/schema-value.js +0 -2
  1367. package/out/zero-types/src/schema-value.js.map +0 -1
  1368. package/out/zero-types/src/schema.js +0 -2
  1369. package/out/zero-types/src/schema.js.map +0 -1
  1370. package/out/zero-types/src/server-schema.js +0 -2
  1371. package/out/zero-types/src/server-schema.js.map +0 -1
  1372. package/out/zero.js +0 -95
  1373. package/out/zero.js.map +0 -7
  1374. package/out/zql/src/ivm/change.js +0 -2
  1375. package/out/zql/src/ivm/change.js.map +0 -1
  1376. package/out/zql/src/ivm/default-format.js +0 -2
  1377. package/out/zql/src/ivm/default-format.js.map +0 -1
  1378. package/out/zql/src/ivm/schema.js +0 -2
  1379. package/out/zql/src/ivm/schema.js.map +0 -1
  1380. package/out/zql/src/ivm/source.js +0 -2
  1381. package/out/zql/src/ivm/source.js.map +0 -1
  1382. package/out/zql/src/ivm/view.js +0 -2
  1383. package/out/zql/src/ivm/view.js.map +0 -1
  1384. package/out/zql/src/query/chained-query.d.ts +0 -35
  1385. package/out/zql/src/query/chained-query.d.ts.map +0 -1
  1386. package/out/zql/src/query/chained-query.js +0 -66
  1387. package/out/zql/src/query/chained-query.js.map +0 -1
  1388. package/out/zql/src/query/define-query.d.ts +0 -51
  1389. package/out/zql/src/query/define-query.d.ts.map +0 -1
  1390. package/out/zql/src/query/define-query.js +0 -53
  1391. package/out/zql/src/query/define-query.js.map +0 -1
  1392. package/out/zql/src/query/query-delegate.js +0 -2
  1393. package/out/zql/src/query/query-delegate.js.map +0 -1
  1394. package/out/zql/src/query/query.js +0 -8
  1395. package/out/zql/src/query/query.js.map +0 -1
  1396. package/out/zql/src/query/root-named-query.d.ts +0 -33
  1397. package/out/zql/src/query/root-named-query.d.ts.map +0 -1
  1398. package/out/zql/src/query/root-named-query.js +0 -95
  1399. package/out/zql/src/query/root-named-query.js.map +0 -1
  1400. package/out/zql/src/query/typed-view.js +0 -2
  1401. package/out/zql/src/query/typed-view.js.map +0 -1
  1402. package/out/zqlite/src/mod.js +0 -5
  1403. package/out/zqlite/src/mod.js.map +0 -1
@@ -0,0 +1,353 @@
1
+ import { assert, assertObject } from "../../../shared/src/asserts.js";
2
+ import { hasOwn } from "../../../shared/src/has-own.js";
3
+ import { readonlyObject, readonlyArray, assert as assert$1 } from "../../../shared/src/valita.js";
4
+ import { emptyDataNode } from "../btree/node.js";
5
+ import { BTreeRead } from "../btree/read.js";
6
+ import { compareCookies } from "../cookies.js";
7
+ import { toRefs } from "../dag/chunk.js";
8
+ import { toChunkIndexDefinition, newSnapshotCommitDataDD31, getRefs, chunkIndexDefinitionEqualIgnoreName, baseSnapshotFromHash, assertSnapshotCommitDD31 } from "../db/commit.js";
9
+ import { createIndexBTree } from "../db/write.js";
10
+ import { deepFreeze } from "../frozen-json.js";
11
+ import { hashSchema } from "../hash.js";
12
+ import { indexDefinitionsEqual } from "../index-defs.js";
13
+ import { clientGroupIDSchema } from "../sync/ids.js";
14
+ import { withWrite } from "../with-transactions.js";
15
+ import { setClientGroup, getClientGroups, mutatorNamesEqual, getClientGroup } from "./client-groups.js";
16
+ import { makeClientID } from "./make-client-id.js";
17
+ import { number, union } from "@badrap/valita";
18
+ const clientV5Schema = readonlyObject({
19
+ heartbeatTimestampMs: number(),
20
+ headHash: hashSchema,
21
+ /**
22
+ * The hash of a commit we are in the middle of refreshing into this client's
23
+ * memdag.
24
+ */
25
+ tempRefreshHash: hashSchema.nullable(),
26
+ /**
27
+ * ID of this client's perdag client group. This needs to be sent in pull
28
+ * request (to enable syncing all last mutation ids in the client group).
29
+ */
30
+ clientGroupID: clientGroupIDSchema
31
+ });
32
+ const clientV6Schema = readonlyObject({
33
+ heartbeatTimestampMs: number(),
34
+ /**
35
+ * A set of hashes, which contains:
36
+ * 1. The hash of the last commit this client refreshed from its client group
37
+ * (this is the commit it bootstrapped from until it completes its first
38
+ * refresh).
39
+ * 2. One or more hashes that were added to retain chunks of a commit while it
40
+ * was being refreshed into this client's memdag. (This can be one or more
41
+ * because refresh's cleanup step is a separate transaction and can fail).
42
+ * Upon refresh completing and successfully running its clean up step, this
43
+ * set will contain a single hash: the hash of the last commit this client
44
+ * refreshed.
45
+ */
46
+ refreshHashes: readonlyArray(hashSchema),
47
+ /**
48
+ * The hash of the last snapshot commit persisted by this client to this
49
+ * client's client group, or null if has never persisted a snapshot.
50
+ */
51
+ persistHash: hashSchema.nullable(),
52
+ /**
53
+ * ID of this client's perdag client group. This needs to be sent in pull
54
+ * request (to enable syncing all last mutation ids in the client group).
55
+ */
56
+ clientGroupID: clientGroupIDSchema
57
+ });
58
+ function isClientV6(client) {
59
+ return client.refreshHashes !== void 0;
60
+ }
61
+ const CLIENTS_HEAD_NAME = "clients";
62
+ const clientSchema = union(clientV5Schema, clientV6Schema);
63
+ function assertClient(value) {
64
+ assert$1(value, clientSchema);
65
+ }
66
+ function assertClientV6(value) {
67
+ assert$1(value, clientV6Schema);
68
+ }
69
+ function chunkDataToClientMap(chunkData) {
70
+ assertObject(chunkData);
71
+ const clients = /* @__PURE__ */ new Map();
72
+ for (const key in chunkData) {
73
+ if (hasOwn(chunkData, key)) {
74
+ const value = chunkData[key];
75
+ if (value !== void 0) {
76
+ assertClient(value);
77
+ clients.set(key, value);
78
+ }
79
+ }
80
+ }
81
+ return clients;
82
+ }
83
+ function clientMapToChunkData(clients, dagWrite) {
84
+ for (const client of clients.values()) {
85
+ if (isClientV6(client)) {
86
+ client.refreshHashes.forEach(dagWrite.assertValidHash);
87
+ if (client.persistHash) {
88
+ dagWrite.assertValidHash(client.persistHash);
89
+ }
90
+ } else {
91
+ dagWrite.assertValidHash(client.headHash);
92
+ if (client.tempRefreshHash) {
93
+ dagWrite.assertValidHash(client.tempRefreshHash);
94
+ }
95
+ }
96
+ }
97
+ return deepFreeze(Object.fromEntries(clients));
98
+ }
99
+ async function getClients(dagRead) {
100
+ const hash = await dagRead.getHead(CLIENTS_HEAD_NAME);
101
+ return getClientsAtHash(hash, dagRead);
102
+ }
103
+ async function getClientsAtHash(hash, dagRead) {
104
+ if (!hash) {
105
+ return /* @__PURE__ */ new Map();
106
+ }
107
+ const chunk = await dagRead.getChunk(hash);
108
+ return chunkDataToClientMap(chunk?.data);
109
+ }
110
+ class ClientStateNotFoundError extends Error {
111
+ name = "ClientStateNotFoundError";
112
+ id;
113
+ constructor(id) {
114
+ super(`Client state not found, id: ${id}`);
115
+ this.id = id;
116
+ }
117
+ }
118
+ async function assertHasClientState(id, dagRead) {
119
+ if (!await hasClientState(id, dagRead)) {
120
+ throw new ClientStateNotFoundError(id);
121
+ }
122
+ }
123
+ async function hasClientState(id, dagRead) {
124
+ return !!await getClient(id, dagRead);
125
+ }
126
+ async function getClient(id, dagRead) {
127
+ const clients = await getClients(dagRead);
128
+ return clients.get(id);
129
+ }
130
+ async function mustGetClient(id, dagRead) {
131
+ const client = await getClient(id, dagRead);
132
+ if (!client) {
133
+ throw new ClientStateNotFoundError(id);
134
+ }
135
+ return client;
136
+ }
137
+ function initClientV6(newClientID, lc, perdag, mutatorNames, indexes, formatVersion, enableClientGroupForking) {
138
+ return withWrite(perdag, async (dagWrite) => {
139
+ async function setClientsAndClientGroupAndCommit(basisHash, cookieJSON, valueHash2, indexRecords2) {
140
+ const newSnapshotData = newSnapshotCommitDataDD31(
141
+ basisHash,
142
+ {},
143
+ cookieJSON,
144
+ valueHash2,
145
+ indexRecords2
146
+ );
147
+ const chunk = dagWrite.createChunk(
148
+ newSnapshotData,
149
+ getRefs(newSnapshotData)
150
+ );
151
+ const newClientGroupID = makeClientID();
152
+ const newClient = {
153
+ heartbeatTimestampMs: Date.now(),
154
+ refreshHashes: [chunk.hash],
155
+ persistHash: null,
156
+ clientGroupID: newClientGroupID
157
+ };
158
+ const newClients = new Map(clients).set(newClientID, newClient);
159
+ const clientGroup = {
160
+ headHash: chunk.hash,
161
+ mutatorNames,
162
+ indexes,
163
+ mutationIDs: {},
164
+ lastServerAckdMutationIDs: {},
165
+ disabled: false
166
+ };
167
+ await Promise.all([
168
+ dagWrite.putChunk(chunk),
169
+ setClients(newClients, dagWrite),
170
+ setClientGroup(newClientGroupID, clientGroup, dagWrite)
171
+ ]);
172
+ return [newClient, chunk.hash, newClients, true];
173
+ }
174
+ const clients = await getClients(dagWrite);
175
+ const res = await findMatchingClient(dagWrite, mutatorNames, indexes);
176
+ if (res.type === FIND_MATCHING_CLIENT_TYPE_HEAD) {
177
+ const { clientGroupID, headHash } = res;
178
+ const newClient = {
179
+ clientGroupID,
180
+ refreshHashes: [headHash],
181
+ heartbeatTimestampMs: Date.now(),
182
+ persistHash: null
183
+ };
184
+ const newClients = new Map(clients).set(newClientID, newClient);
185
+ await setClients(newClients, dagWrite);
186
+ return [newClient, headHash, newClients, false];
187
+ }
188
+ if (!enableClientGroupForking || res.type === FIND_MATCHING_CLIENT_TYPE_NEW) {
189
+ const emptyBTreeChunk = dagWrite.createChunk(emptyDataNode, []);
190
+ await dagWrite.putChunk(emptyBTreeChunk);
191
+ const indexRecords2 = [];
192
+ for (const [name, indexDefinition] of Object.entries(indexes)) {
193
+ const chunkIndexDefinition = toChunkIndexDefinition(
194
+ name,
195
+ indexDefinition
196
+ );
197
+ indexRecords2.push({
198
+ definition: chunkIndexDefinition,
199
+ valueHash: emptyBTreeChunk.hash
200
+ });
201
+ }
202
+ return setClientsAndClientGroupAndCommit(
203
+ null,
204
+ null,
205
+ emptyBTreeChunk.hash,
206
+ indexRecords2
207
+ );
208
+ }
209
+ assert(res.type === FIND_MATCHING_CLIENT_TYPE_FORK);
210
+ const { snapshot } = res;
211
+ const indexRecords = [];
212
+ const { valueHash, indexes: oldIndexes } = snapshot;
213
+ const map = new BTreeRead(dagWrite, formatVersion, valueHash);
214
+ for (const [name, indexDefinition] of Object.entries(indexes)) {
215
+ const { prefix = "", jsonPointer, allowEmpty = false } = indexDefinition;
216
+ const chunkIndexDefinition = {
217
+ name,
218
+ keyPrefix: prefix,
219
+ jsonPointer,
220
+ allowEmpty
221
+ };
222
+ const oldIndex = findMatchingOldIndex(oldIndexes, chunkIndexDefinition);
223
+ if (oldIndex) {
224
+ indexRecords.push({
225
+ definition: chunkIndexDefinition,
226
+ valueHash: oldIndex.valueHash
227
+ });
228
+ } else {
229
+ const indexBTree = await createIndexBTree(
230
+ lc,
231
+ dagWrite,
232
+ map,
233
+ prefix,
234
+ jsonPointer,
235
+ allowEmpty,
236
+ formatVersion
237
+ );
238
+ indexRecords.push({
239
+ definition: chunkIndexDefinition,
240
+ valueHash: await indexBTree.flush()
241
+ });
242
+ }
243
+ }
244
+ return setClientsAndClientGroupAndCommit(
245
+ snapshot.meta.basisHash,
246
+ snapshot.meta.cookieJSON,
247
+ snapshot.valueHash,
248
+ indexRecords
249
+ );
250
+ });
251
+ }
252
+ function findMatchingOldIndex(oldIndexes, chunkIndexDefinition) {
253
+ return oldIndexes.find(
254
+ (index) => chunkIndexDefinitionEqualIgnoreName(index.definition, chunkIndexDefinition)
255
+ );
256
+ }
257
+ const FIND_MATCHING_CLIENT_TYPE_NEW = 0;
258
+ const FIND_MATCHING_CLIENT_TYPE_FORK = 1;
259
+ const FIND_MATCHING_CLIENT_TYPE_HEAD = 2;
260
+ async function findMatchingClient(dagRead, mutatorNames, indexes) {
261
+ let newestCookie;
262
+ let bestSnapshot;
263
+ const mutatorNamesSet = new Set(mutatorNames);
264
+ const clientGroups = await getClientGroups(dagRead);
265
+ for (const [clientGroupID, clientGroup] of clientGroups) {
266
+ if (!clientGroup.disabled && mutatorNamesEqual(mutatorNamesSet, clientGroup.mutatorNames) && indexDefinitionsEqual(indexes, clientGroup.indexes)) {
267
+ return {
268
+ type: FIND_MATCHING_CLIENT_TYPE_HEAD,
269
+ clientGroupID,
270
+ headHash: clientGroup.headHash
271
+ };
272
+ }
273
+ const clientGroupSnapshotCommit = await baseSnapshotFromHash(
274
+ clientGroup.headHash,
275
+ dagRead
276
+ );
277
+ assertSnapshotCommitDD31(clientGroupSnapshotCommit);
278
+ const { cookieJSON } = clientGroupSnapshotCommit.meta;
279
+ if (newestCookie === void 0 || compareCookies(cookieJSON, newestCookie) > 0) {
280
+ newestCookie = cookieJSON;
281
+ bestSnapshot = clientGroupSnapshotCommit;
282
+ }
283
+ }
284
+ if (bestSnapshot) {
285
+ return {
286
+ type: FIND_MATCHING_CLIENT_TYPE_FORK,
287
+ snapshot: bestSnapshot
288
+ };
289
+ }
290
+ return { type: FIND_MATCHING_CLIENT_TYPE_NEW };
291
+ }
292
+ function getRefsForClients(clients) {
293
+ const refs = /* @__PURE__ */ new Set();
294
+ for (const client of clients.values()) {
295
+ if (isClientV6(client)) {
296
+ for (const hash of client.refreshHashes) {
297
+ refs.add(hash);
298
+ }
299
+ if (client.persistHash) {
300
+ refs.add(client.persistHash);
301
+ }
302
+ } else {
303
+ refs.add(client.headHash);
304
+ if (client.tempRefreshHash) {
305
+ refs.add(client.tempRefreshHash);
306
+ }
307
+ }
308
+ }
309
+ return toRefs(refs);
310
+ }
311
+ async function getClientGroupForClient(clientID, read) {
312
+ const clientGroupID = await getClientGroupIDForClient(clientID, read);
313
+ if (!clientGroupID) {
314
+ return void 0;
315
+ }
316
+ return getClientGroup(clientGroupID, read);
317
+ }
318
+ async function getClientGroupIDForClient(clientID, read) {
319
+ const client = await getClient(clientID, read);
320
+ return client?.clientGroupID;
321
+ }
322
+ async function setClient(clientID, client, dagWrite) {
323
+ const clients = await getClients(dagWrite);
324
+ const newClients = new Map(clients).set(clientID, client);
325
+ return setClients(newClients, dagWrite);
326
+ }
327
+ async function setClients(clients, dagWrite) {
328
+ const chunkData = clientMapToChunkData(clients, dagWrite);
329
+ const chunk = dagWrite.createChunk(chunkData, getRefsForClients(clients));
330
+ await dagWrite.putChunk(chunk);
331
+ await dagWrite.setHead(CLIENTS_HEAD_NAME, chunk.hash);
332
+ return chunk.hash;
333
+ }
334
+ export {
335
+ CLIENTS_HEAD_NAME,
336
+ ClientStateNotFoundError,
337
+ FIND_MATCHING_CLIENT_TYPE_FORK,
338
+ FIND_MATCHING_CLIENT_TYPE_HEAD,
339
+ FIND_MATCHING_CLIENT_TYPE_NEW,
340
+ assertClientV6,
341
+ assertHasClientState,
342
+ findMatchingClient,
343
+ getClient,
344
+ getClientGroupForClient,
345
+ getClientGroupIDForClient,
346
+ getClients,
347
+ hasClientState,
348
+ initClientV6,
349
+ mustGetClient,
350
+ setClient,
351
+ setClients
352
+ };
353
+ //# sourceMappingURL=clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.js","sources":["../../../../../replicache/src/persist/clients.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert, assertObject} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport {hasOwn} from '../../../shared/src/has-own.ts';\nimport * as valita from '../../../shared/src/valita.ts';\nimport {emptyDataNode} from '../btree/node.ts';\nimport {BTreeRead} from '../btree/read.ts';\nimport {type FrozenCookie, compareCookies} from '../cookies.ts';\nimport {type Refs, toRefs} from '../dag/chunk.ts';\nimport type {Read, Store, Write} from '../dag/store.ts';\nimport type {Commit} from '../db/commit.ts';\nimport {\n type ChunkIndexDefinition,\n type IndexRecord,\n type SnapshotMetaDD31,\n assertSnapshotCommitDD31,\n baseSnapshotFromHash,\n chunkIndexDefinitionEqualIgnoreName,\n getRefs,\n newSnapshotCommitDataDD31,\n toChunkIndexDefinition,\n} from '../db/commit.ts';\nimport {createIndexBTree} from '../db/write.ts';\nimport type {DeletedClients} from '../deleted-clients.ts';\nimport type * as FormatVersion from '../format-version-enum.ts';\nimport {type FrozenJSONValue, deepFreeze} from '../frozen-json.ts';\nimport {type Hash, hashSchema} from '../hash.ts';\nimport {type IndexDefinitions, indexDefinitionsEqual} from '../index-defs.ts';\nimport {\n type ClientGroupID,\n type ClientID,\n clientGroupIDSchema,\n} from '../sync/ids.ts';\nimport {withWrite} from '../with-transactions.ts';\nimport {\n type ClientGroup,\n getClientGroup,\n getClientGroups,\n mutatorNamesEqual,\n setClientGroup,\n} from './client-groups.ts';\nimport {makeClientID} from './make-client-id.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nexport type ClientMap = ReadonlyMap<ClientID, ClientV5 | ClientV6>;\n\nconst clientV5Schema = valita.readonlyObject({\n heartbeatTimestampMs: valita.number(),\n\n headHash: hashSchema,\n\n /**\n * The hash of a commit we are in the middle of refreshing into this client's\n * memdag.\n */\n tempRefreshHash: hashSchema.nullable(),\n\n /**\n * ID of this client's perdag client group. This needs to be sent in pull\n * request (to enable syncing all last mutation ids in the client group).\n */\n clientGroupID: clientGroupIDSchema,\n});\n\nexport type ClientV5 = valita.Infer<typeof clientV5Schema>;\n\nconst clientV6Schema = valita.readonlyObject({\n heartbeatTimestampMs: valita.number(),\n\n /**\n * A set of hashes, which contains:\n * 1. The hash of the last commit this client refreshed from its client group\n * (this is the commit it bootstrapped from until it completes its first\n * refresh).\n * 2. One or more hashes that were added to retain chunks of a commit while it\n * was being refreshed into this client's memdag. (This can be one or more\n * because refresh's cleanup step is a separate transaction and can fail).\n * Upon refresh completing and successfully running its clean up step, this\n * set will contain a single hash: the hash of the last commit this client\n * refreshed.\n */\n refreshHashes: valita.readonlyArray(hashSchema),\n\n /**\n * The hash of the last snapshot commit persisted by this client to this\n * client's client group, or null if has never persisted a snapshot.\n */\n persistHash: hashSchema.nullable(),\n\n /**\n * ID of this client's perdag client group. This needs to be sent in pull\n * request (to enable syncing all last mutation ids in the client group).\n */\n clientGroupID: clientGroupIDSchema,\n});\n\nexport type ClientV6 = valita.Infer<typeof clientV6Schema>;\n\nexport type Client = ClientV5 | ClientV6;\n\nfunction isClientV6(client: Client): client is ClientV6 {\n return (client as ClientV6).refreshHashes !== undefined;\n}\n\nexport const CLIENTS_HEAD_NAME = 'clients';\n\nconst clientSchema = valita.union(clientV5Schema, clientV6Schema);\n\nfunction assertClient(value: unknown): asserts value is Client {\n valita.assert(value, clientSchema);\n}\n\nexport function assertClientV6(value: unknown): asserts value is ClientV6 {\n valita.assert(value, clientV6Schema);\n}\n\nfunction chunkDataToClientMap(chunkData: unknown): ClientMap {\n assertObject(chunkData);\n const clients = new Map();\n for (const key in chunkData) {\n if (hasOwn(chunkData, key)) {\n const value = chunkData[key];\n if (value !== undefined) {\n assertClient(value);\n clients.set(key, value);\n }\n }\n }\n return clients;\n}\n\nfunction clientMapToChunkData(\n clients: ClientMap,\n dagWrite: Write,\n): FrozenJSONValue {\n for (const client of clients.values()) {\n if (isClientV6(client)) {\n client.refreshHashes.forEach(dagWrite.assertValidHash);\n if (client.persistHash) {\n dagWrite.assertValidHash(client.persistHash);\n }\n } else {\n dagWrite.assertValidHash(client.headHash);\n if (client.tempRefreshHash) {\n dagWrite.assertValidHash(client.tempRefreshHash);\n }\n }\n }\n return deepFreeze(Object.fromEntries(clients));\n}\n\nexport async function getClients(dagRead: Read): Promise<ClientMap> {\n const hash = await dagRead.getHead(CLIENTS_HEAD_NAME);\n return getClientsAtHash(hash, dagRead);\n}\n\nasync function getClientsAtHash(\n hash: Hash | undefined,\n dagRead: Read,\n): Promise<ClientMap> {\n if (!hash) {\n return new Map();\n }\n const chunk = await dagRead.getChunk(hash);\n return chunkDataToClientMap(chunk?.data);\n}\n\n/**\n * Used to signal that a client does not exist. Maybe it was garbage collected?\n */\nexport class ClientStateNotFoundError extends Error {\n name = 'ClientStateNotFoundError';\n readonly id: string;\n constructor(id: ClientID) {\n super(`Client state not found, id: ${id}`);\n this.id = id;\n }\n}\n\n/**\n * Throws a `ClientStateNotFoundError` if the client does not exist.\n */\nexport async function assertHasClientState(\n id: ClientID,\n dagRead: Read,\n): Promise<void> {\n if (!(await hasClientState(id, dagRead))) {\n throw new ClientStateNotFoundError(id);\n }\n}\n\nexport async function hasClientState(\n id: ClientID,\n dagRead: Read,\n): Promise<boolean> {\n return !!(await getClient(id, dagRead));\n}\n\nexport async function getClient(\n id: ClientID,\n dagRead: Read,\n): Promise<Client | undefined> {\n const clients = await getClients(dagRead);\n return clients.get(id);\n}\n\nexport async function mustGetClient(\n id: ClientID,\n dagRead: Read,\n): Promise<Client> {\n const client = await getClient(id, dagRead);\n if (!client) {\n throw new ClientStateNotFoundError(id);\n }\n return client;\n}\n\ntype InitClientV6Result = [\n client: ClientV6,\n hash: Hash,\n clientMap: ClientMap,\n newClientGroup: boolean,\n];\n\nexport function initClientV6(\n newClientID: ClientID,\n lc: LogContext,\n perdag: Store,\n mutatorNames: string[],\n indexes: IndexDefinitions,\n formatVersion: FormatVersion,\n enableClientGroupForking: boolean,\n): Promise<InitClientV6Result> {\n return withWrite(perdag, async dagWrite => {\n async function setClientsAndClientGroupAndCommit(\n basisHash: Hash | null,\n cookieJSON: FrozenCookie,\n valueHash: Hash,\n indexRecords: readonly IndexRecord[],\n ): Promise<InitClientV6Result> {\n const newSnapshotData = newSnapshotCommitDataDD31(\n basisHash,\n {},\n cookieJSON,\n valueHash,\n indexRecords,\n );\n const chunk = dagWrite.createChunk(\n newSnapshotData,\n getRefs(newSnapshotData),\n );\n\n const newClientGroupID = makeClientID();\n\n const newClient: ClientV6 = {\n heartbeatTimestampMs: Date.now(),\n refreshHashes: [chunk.hash],\n persistHash: null,\n clientGroupID: newClientGroupID,\n };\n\n const newClients = new Map(clients).set(newClientID, newClient);\n\n const clientGroup: ClientGroup = {\n headHash: chunk.hash,\n mutatorNames,\n indexes,\n mutationIDs: {},\n lastServerAckdMutationIDs: {},\n disabled: false,\n };\n\n await Promise.all([\n dagWrite.putChunk(chunk),\n setClients(newClients, dagWrite),\n setClientGroup(newClientGroupID, clientGroup, dagWrite),\n ]);\n\n return [newClient, chunk.hash, newClients, true];\n }\n\n const clients = await getClients(dagWrite);\n\n const res = await findMatchingClient(dagWrite, mutatorNames, indexes);\n if (res.type === FIND_MATCHING_CLIENT_TYPE_HEAD) {\n // We found a client group with matching mutators and indexes. We can\n // reuse it.\n const {clientGroupID, headHash} = res;\n\n const newClient: ClientV6 = {\n clientGroupID,\n refreshHashes: [headHash],\n heartbeatTimestampMs: Date.now(),\n persistHash: null,\n };\n const newClients = new Map(clients).set(newClientID, newClient);\n await setClients(newClients, dagWrite);\n\n return [newClient, headHash, newClients, false];\n }\n\n if (\n !enableClientGroupForking ||\n res.type === FIND_MATCHING_CLIENT_TYPE_NEW\n ) {\n // No client group to fork from. Create empty snapshot.\n const emptyBTreeChunk = dagWrite.createChunk(emptyDataNode, []);\n await dagWrite.putChunk(emptyBTreeChunk);\n\n // Create indexes\n const indexRecords: IndexRecord[] = [];\n\n // At this point the value of replicache is the empty tree so all index\n // maps will also be the empty tree.\n for (const [name, indexDefinition] of Object.entries(indexes)) {\n const chunkIndexDefinition = toChunkIndexDefinition(\n name,\n indexDefinition,\n );\n indexRecords.push({\n definition: chunkIndexDefinition,\n valueHash: emptyBTreeChunk.hash,\n });\n }\n\n return setClientsAndClientGroupAndCommit(\n null,\n null,\n emptyBTreeChunk.hash,\n indexRecords,\n );\n }\n\n // Now we create a new client and client group that we fork from the found\n // snapshot.\n assert(res.type === FIND_MATCHING_CLIENT_TYPE_FORK);\n\n const {snapshot} = res;\n\n // Create indexes\n const indexRecords: IndexRecord[] = [];\n const {valueHash, indexes: oldIndexes} = snapshot;\n const map = new BTreeRead(dagWrite, formatVersion, valueHash);\n\n for (const [name, indexDefinition] of Object.entries(indexes)) {\n const {prefix = '', jsonPointer, allowEmpty = false} = indexDefinition;\n const chunkIndexDefinition: ChunkIndexDefinition = {\n name,\n keyPrefix: prefix,\n jsonPointer,\n allowEmpty,\n };\n\n const oldIndex = findMatchingOldIndex(oldIndexes, chunkIndexDefinition);\n if (oldIndex) {\n indexRecords.push({\n definition: chunkIndexDefinition,\n valueHash: oldIndex.valueHash,\n });\n } else {\n const indexBTree = await createIndexBTree(\n lc,\n dagWrite,\n map,\n prefix,\n jsonPointer,\n allowEmpty,\n formatVersion,\n );\n indexRecords.push({\n definition: chunkIndexDefinition,\n valueHash: await indexBTree.flush(),\n });\n }\n }\n\n return setClientsAndClientGroupAndCommit(\n snapshot.meta.basisHash,\n snapshot.meta.cookieJSON,\n snapshot.valueHash,\n indexRecords,\n );\n });\n}\n\nfunction findMatchingOldIndex(\n oldIndexes: readonly IndexRecord[],\n chunkIndexDefinition: ChunkIndexDefinition,\n) {\n return oldIndexes.find(index =>\n chunkIndexDefinitionEqualIgnoreName(index.definition, chunkIndexDefinition),\n );\n}\n\nexport const FIND_MATCHING_CLIENT_TYPE_NEW = 0;\nexport const FIND_MATCHING_CLIENT_TYPE_FORK = 1;\nexport const FIND_MATCHING_CLIENT_TYPE_HEAD = 2;\n\nexport type FindMatchingClientResult =\n | {\n type: typeof FIND_MATCHING_CLIENT_TYPE_NEW;\n }\n | {\n type: typeof FIND_MATCHING_CLIENT_TYPE_FORK;\n snapshot: Commit<SnapshotMetaDD31>;\n }\n | {\n type: typeof FIND_MATCHING_CLIENT_TYPE_HEAD;\n clientGroupID: ClientGroupID;\n headHash: Hash;\n };\n\nexport async function findMatchingClient(\n dagRead: Read,\n mutatorNames: string[],\n indexes: IndexDefinitions,\n): Promise<FindMatchingClientResult> {\n let newestCookie: FrozenCookie | undefined;\n let bestSnapshot: Commit<SnapshotMetaDD31> | undefined;\n const mutatorNamesSet = new Set(mutatorNames);\n\n const clientGroups = await getClientGroups(dagRead);\n for (const [clientGroupID, clientGroup] of clientGroups) {\n if (\n !clientGroup.disabled &&\n mutatorNamesEqual(mutatorNamesSet, clientGroup.mutatorNames) &&\n indexDefinitionsEqual(indexes, clientGroup.indexes)\n ) {\n // exact match\n return {\n type: FIND_MATCHING_CLIENT_TYPE_HEAD,\n clientGroupID,\n headHash: clientGroup.headHash,\n };\n }\n\n const clientGroupSnapshotCommit = await baseSnapshotFromHash(\n clientGroup.headHash,\n dagRead,\n );\n assertSnapshotCommitDD31(clientGroupSnapshotCommit);\n\n const {cookieJSON} = clientGroupSnapshotCommit.meta;\n if (\n newestCookie === undefined ||\n compareCookies(cookieJSON, newestCookie) > 0\n ) {\n newestCookie = cookieJSON;\n bestSnapshot = clientGroupSnapshotCommit;\n }\n }\n\n if (bestSnapshot) {\n return {\n type: FIND_MATCHING_CLIENT_TYPE_FORK,\n snapshot: bestSnapshot,\n };\n }\n\n return {type: FIND_MATCHING_CLIENT_TYPE_NEW};\n}\n\nfunction getRefsForClients(clients: ClientMap): Refs {\n const refs: Set<Hash> = new Set();\n for (const client of clients.values()) {\n if (isClientV6(client)) {\n for (const hash of client.refreshHashes) {\n refs.add(hash);\n }\n if (client.persistHash) {\n refs.add(client.persistHash);\n }\n } else {\n refs.add(client.headHash);\n if (client.tempRefreshHash) {\n refs.add(client.tempRefreshHash);\n }\n }\n }\n return toRefs(refs);\n}\n\nexport async function getClientGroupForClient(\n clientID: ClientID,\n read: Read,\n): Promise<ClientGroup | undefined> {\n const clientGroupID = await getClientGroupIDForClient(clientID, read);\n if (!clientGroupID) {\n return undefined;\n }\n return getClientGroup(clientGroupID, read);\n}\n\nexport async function getClientGroupIDForClient(\n clientID: ClientID,\n read: Read,\n): Promise<ClientGroupID | undefined> {\n const client = await getClient(clientID, read);\n return client?.clientGroupID;\n}\n\n/**\n * Adds a Client to the ClientMap and updates the 'clients' head to point at\n * the updated clients.\n */\nexport async function setClient(\n clientID: ClientID,\n client: Client,\n dagWrite: Write,\n): Promise<Hash> {\n const clients = await getClients(dagWrite);\n const newClients = new Map(clients).set(clientID, client);\n return setClients(newClients, dagWrite);\n}\n\n/**\n * Sets the ClientMap and updates the 'clients' head top point at the new\n * clients.\n */\nexport async function setClients(\n clients: ClientMap,\n dagWrite: Write,\n): Promise<Hash> {\n const chunkData = clientMapToChunkData(clients, dagWrite);\n const chunk = dagWrite.createChunk(chunkData, getRefsForClients(clients));\n await dagWrite.putChunk(chunk);\n await dagWrite.setHead(CLIENTS_HEAD_NAME, chunk.hash);\n return chunk.hash;\n}\n\n/**\n * Callback function for when Replicache has deleted one or more clients.\n */\nexport type OnClientsDeleted = (\n deletedClients: DeletedClients,\n) => Promise<void>;\n"],"names":["valita.readonlyObject","valita.number","valita.readonlyArray","valita.union","valita.assert","valueHash","indexRecords"],"mappings":";;;;;;;;;;;;;;;;;AA+CA,MAAM,iBAAiBA,eAAsB;AAAA,EAC3C,sBAAsBC,OAAO;AAAA,EAE7B,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAMV,iBAAiB,WAAW,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM5B,eAAe;AACjB,CAAC;AAID,MAAM,iBAAiBD,eAAsB;AAAA,EAC3C,sBAAsBC,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc7B,eAAeC,cAAqB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9C,aAAa,WAAW,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxB,eAAe;AACjB,CAAC;AAMD,SAAS,WAAW,QAAoC;AACtD,SAAQ,OAAoB,kBAAkB;AAChD;AAEO,MAAM,oBAAoB;AAEjC,MAAM,eAAeC,MAAa,gBAAgB,cAAc;AAEhE,SAAS,aAAa,OAAyC;AAC7DC,WAAc,OAAO,YAAY;AACnC;AAEO,SAAS,eAAe,OAA2C;AACxEA,WAAc,OAAO,cAAc;AACrC;AAEA,SAAS,qBAAqB,WAA+B;AAC3D,eAAa,SAAS;AACtB,QAAM,8BAAc,IAAA;AACpB,aAAW,OAAO,WAAW;AAC3B,QAAI,OAAO,WAAW,GAAG,GAAG;AAC1B,YAAM,QAAQ,UAAU,GAAG;AAC3B,UAAI,UAAU,QAAW;AACvB,qBAAa,KAAK;AAClB,gBAAQ,IAAI,KAAK,KAAK;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,qBACP,SACA,UACiB;AACjB,aAAW,UAAU,QAAQ,UAAU;AACrC,QAAI,WAAW,MAAM,GAAG;AACtB,aAAO,cAAc,QAAQ,SAAS,eAAe;AACrD,UAAI,OAAO,aAAa;AACtB,iBAAS,gBAAgB,OAAO,WAAW;AAAA,MAC7C;AAAA,IACF,OAAO;AACL,eAAS,gBAAgB,OAAO,QAAQ;AACxC,UAAI,OAAO,iBAAiB;AAC1B,iBAAS,gBAAgB,OAAO,eAAe;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACA,SAAO,WAAW,OAAO,YAAY,OAAO,CAAC;AAC/C;AAEA,eAAsB,WAAW,SAAmC;AAClE,QAAM,OAAO,MAAM,QAAQ,QAAQ,iBAAiB;AACpD,SAAO,iBAAiB,MAAM,OAAO;AACvC;AAEA,eAAe,iBACb,MACA,SACoB;AACpB,MAAI,CAAC,MAAM;AACT,+BAAW,IAAA;AAAA,EACb;AACA,QAAM,QAAQ,MAAM,QAAQ,SAAS,IAAI;AACzC,SAAO,qBAAqB,OAAO,IAAI;AACzC;AAKO,MAAM,iCAAiC,MAAM;AAAA,EAClD,OAAO;AAAA,EACE;AAAA,EACT,YAAY,IAAc;AACxB,UAAM,+BAA+B,EAAE,EAAE;AACzC,SAAK,KAAK;AAAA,EACZ;AACF;AAKA,eAAsB,qBACpB,IACA,SACe;AACf,MAAI,CAAE,MAAM,eAAe,IAAI,OAAO,GAAI;AACxC,UAAM,IAAI,yBAAyB,EAAE;AAAA,EACvC;AACF;AAEA,eAAsB,eACpB,IACA,SACkB;AAClB,SAAO,CAAC,CAAE,MAAM,UAAU,IAAI,OAAO;AACvC;AAEA,eAAsB,UACpB,IACA,SAC6B;AAC7B,QAAM,UAAU,MAAM,WAAW,OAAO;AACxC,SAAO,QAAQ,IAAI,EAAE;AACvB;AAEA,eAAsB,cACpB,IACA,SACiB;AACjB,QAAM,SAAS,MAAM,UAAU,IAAI,OAAO;AAC1C,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,yBAAyB,EAAE;AAAA,EACvC;AACA,SAAO;AACT;AASO,SAAS,aACd,aACA,IACA,QACA,cACA,SACA,eACA,0BAC6B;AAC7B,SAAO,UAAU,QAAQ,OAAM,aAAY;AACzC,mBAAe,kCACb,WACA,YACAC,YACAC,eAC6B;AAC7B,YAAM,kBAAkB;AAAA,QACtB;AAAA,QACA,CAAA;AAAA,QACA;AAAA,QACAD;AAAAA,QACAC;AAAAA,MAAA;AAEF,YAAM,QAAQ,SAAS;AAAA,QACrB;AAAA,QACA,QAAQ,eAAe;AAAA,MAAA;AAGzB,YAAM,mBAAmB,aAAA;AAEzB,YAAM,YAAsB;AAAA,QAC1B,sBAAsB,KAAK,IAAA;AAAA,QAC3B,eAAe,CAAC,MAAM,IAAI;AAAA,QAC1B,aAAa;AAAA,QACb,eAAe;AAAA,MAAA;AAGjB,YAAM,aAAa,IAAI,IAAI,OAAO,EAAE,IAAI,aAAa,SAAS;AAE9D,YAAM,cAA2B;AAAA,QAC/B,UAAU,MAAM;AAAA,QAChB;AAAA,QACA;AAAA,QACA,aAAa,CAAA;AAAA,QACb,2BAA2B,CAAA;AAAA,QAC3B,UAAU;AAAA,MAAA;AAGZ,YAAM,QAAQ,IAAI;AAAA,QAChB,SAAS,SAAS,KAAK;AAAA,QACvB,WAAW,YAAY,QAAQ;AAAA,QAC/B,eAAe,kBAAkB,aAAa,QAAQ;AAAA,MAAA,CACvD;AAED,aAAO,CAAC,WAAW,MAAM,MAAM,YAAY,IAAI;AAAA,IACjD;AAEA,UAAM,UAAU,MAAM,WAAW,QAAQ;AAEzC,UAAM,MAAM,MAAM,mBAAmB,UAAU,cAAc,OAAO;AACpE,QAAI,IAAI,SAAS,gCAAgC;AAG/C,YAAM,EAAC,eAAe,SAAA,IAAY;AAElC,YAAM,YAAsB;AAAA,QAC1B;AAAA,QACA,eAAe,CAAC,QAAQ;AAAA,QACxB,sBAAsB,KAAK,IAAA;AAAA,QAC3B,aAAa;AAAA,MAAA;AAEf,YAAM,aAAa,IAAI,IAAI,OAAO,EAAE,IAAI,aAAa,SAAS;AAC9D,YAAM,WAAW,YAAY,QAAQ;AAErC,aAAO,CAAC,WAAW,UAAU,YAAY,KAAK;AAAA,IAChD;AAEA,QACE,CAAC,4BACD,IAAI,SAAS,+BACb;AAEA,YAAM,kBAAkB,SAAS,YAAY,eAAe,CAAA,CAAE;AAC9D,YAAM,SAAS,SAAS,eAAe;AAGvC,YAAMA,gBAA8B,CAAA;AAIpC,iBAAW,CAAC,MAAM,eAAe,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC7D,cAAM,uBAAuB;AAAA,UAC3B;AAAA,UACA;AAAA,QAAA;AAEFA,sBAAa,KAAK;AAAA,UAChB,YAAY;AAAA,UACZ,WAAW,gBAAgB;AAAA,QAAA,CAC5B;AAAA,MACH;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChBA;AAAAA,MAAA;AAAA,IAEJ;AAIA,WAAO,IAAI,SAAS,8BAA8B;AAElD,UAAM,EAAC,aAAY;AAGnB,UAAM,eAA8B,CAAA;AACpC,UAAM,EAAC,WAAW,SAAS,WAAA,IAAc;AACzC,UAAM,MAAM,IAAI,UAAU,UAAU,eAAe,SAAS;AAE5D,eAAW,CAAC,MAAM,eAAe,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC7D,YAAM,EAAC,SAAS,IAAI,aAAa,aAAa,UAAS;AACvD,YAAM,uBAA6C;AAAA,QACjD;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA;AAAA,MAAA;AAGF,YAAM,WAAW,qBAAqB,YAAY,oBAAoB;AACtE,UAAI,UAAU;AACZ,qBAAa,KAAK;AAAA,UAChB,YAAY;AAAA,UACZ,WAAW,SAAS;AAAA,QAAA,CACrB;AAAA,MACH,OAAO;AACL,cAAM,aAAa,MAAM;AAAA,UACvB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAEF,qBAAa,KAAK;AAAA,UAChB,YAAY;AAAA,UACZ,WAAW,MAAM,WAAW,MAAA;AAAA,QAAM,CACnC;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA,MACL,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,SAAS;AAAA,MACT;AAAA,IAAA;AAAA,EAEJ,CAAC;AACH;AAEA,SAAS,qBACP,YACA,sBACA;AACA,SAAO,WAAW;AAAA,IAAK,CAAA,UACrB,oCAAoC,MAAM,YAAY,oBAAoB;AAAA,EAAA;AAE9E;AAEO,MAAM,gCAAgC;AACtC,MAAM,iCAAiC;AACvC,MAAM,iCAAiC;AAgB9C,eAAsB,mBACpB,SACA,cACA,SACmC;AACnC,MAAI;AACJ,MAAI;AACJ,QAAM,kBAAkB,IAAI,IAAI,YAAY;AAE5C,QAAM,eAAe,MAAM,gBAAgB,OAAO;AAClD,aAAW,CAAC,eAAe,WAAW,KAAK,cAAc;AACvD,QACE,CAAC,YAAY,YACb,kBAAkB,iBAAiB,YAAY,YAAY,KAC3D,sBAAsB,SAAS,YAAY,OAAO,GAClD;AAEA,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,UAAU,YAAY;AAAA,MAAA;AAAA,IAE1B;AAEA,UAAM,4BAA4B,MAAM;AAAA,MACtC,YAAY;AAAA,MACZ;AAAA,IAAA;AAEF,6BAAyB,yBAAyB;AAElD,UAAM,EAAC,eAAc,0BAA0B;AAC/C,QACE,iBAAiB,UACjB,eAAe,YAAY,YAAY,IAAI,GAC3C;AACA,qBAAe;AACf,qBAAe;AAAA,IACjB;AAAA,EACF;AAEA,MAAI,cAAc;AAChB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,IAAA;AAAA,EAEd;AAEA,SAAO,EAAC,MAAM,8BAAA;AAChB;AAEA,SAAS,kBAAkB,SAA0B;AACnD,QAAM,2BAAsB,IAAA;AAC5B,aAAW,UAAU,QAAQ,UAAU;AACrC,QAAI,WAAW,MAAM,GAAG;AACtB,iBAAW,QAAQ,OAAO,eAAe;AACvC,aAAK,IAAI,IAAI;AAAA,MACf;AACA,UAAI,OAAO,aAAa;AACtB,aAAK,IAAI,OAAO,WAAW;AAAA,MAC7B;AAAA,IACF,OAAO;AACL,WAAK,IAAI,OAAO,QAAQ;AACxB,UAAI,OAAO,iBAAiB;AAC1B,aAAK,IAAI,OAAO,eAAe;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AACA,SAAO,OAAO,IAAI;AACpB;AAEA,eAAsB,wBACpB,UACA,MACkC;AAClC,QAAM,gBAAgB,MAAM,0BAA0B,UAAU,IAAI;AACpE,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AACA,SAAO,eAAe,eAAe,IAAI;AAC3C;AAEA,eAAsB,0BACpB,UACA,MACoC;AACpC,QAAM,SAAS,MAAM,UAAU,UAAU,IAAI;AAC7C,SAAO,QAAQ;AACjB;AAMA,eAAsB,UACpB,UACA,QACA,UACe;AACf,QAAM,UAAU,MAAM,WAAW,QAAQ;AACzC,QAAM,aAAa,IAAI,IAAI,OAAO,EAAE,IAAI,UAAU,MAAM;AACxD,SAAO,WAAW,YAAY,QAAQ;AACxC;AAMA,eAAsB,WACpB,SACA,UACe;AACf,QAAM,YAAY,qBAAqB,SAAS,QAAQ;AACxD,QAAM,QAAQ,SAAS,YAAY,WAAW,kBAAkB,OAAO,CAAC;AACxE,QAAM,SAAS,SAAS,KAAK;AAC7B,QAAM,SAAS,QAAQ,mBAAmB,MAAM,IAAI;AACpD,SAAO,MAAM;AACf;"}
@@ -0,0 +1,188 @@
1
+ import { assert } from "../../../shared/src/asserts.js";
2
+ import { initBgIntervalProcess } from "../bg-interval.js";
3
+ import { StoreImpl } from "../dag/store-impl.js";
4
+ import { addDeletedClients, mergeDeletedClients, normalizeDeletedClients, getDeletedClients } from "../deleted-clients.js";
5
+ import { Latest, DD31, V6, V7 } from "../format-version-enum.js";
6
+ import { getKVStoreProvider } from "../get-kv-store-provider.js";
7
+ import { newRandomHash, assertHash } from "../hash.js";
8
+ import { IDBStore } from "../kv/idb-store.js";
9
+ import { createLogContext } from "../log-options.js";
10
+ import { withWrite, withRead } from "../with-transactions.js";
11
+ import { getClientGroups, clientGroupHasPendingMutations } from "./client-groups.js";
12
+ import { getClients } from "./clients.js";
13
+ import { IDBDatabasesStore } from "./idb-databases-store.js";
14
+ const COLLECT_IDB_INTERVAL = 12 * 60 * 60 * 1e3;
15
+ const INITIAL_COLLECT_IDB_DELAY = 5 * 60 * 1e3;
16
+ function initCollectIDBDatabases(idbDatabasesStore, kvDropStore, collectInterval, initialCollectDelay, maxAge, enableMutationRecovery, onClientsDeleted, lc, signal) {
17
+ let initial = true;
18
+ initBgIntervalProcess(
19
+ "CollectIDBDatabases",
20
+ async () => {
21
+ await collectIDBDatabases(
22
+ idbDatabasesStore,
23
+ Date.now(),
24
+ maxAge,
25
+ kvDropStore,
26
+ enableMutationRecovery,
27
+ onClientsDeleted
28
+ );
29
+ },
30
+ () => {
31
+ if (initial) {
32
+ initial = false;
33
+ return initialCollectDelay;
34
+ }
35
+ return collectInterval;
36
+ },
37
+ lc,
38
+ signal
39
+ );
40
+ }
41
+ async function collectIDBDatabases(idbDatabasesStore, now, maxAge, kvDropStore, enableMutationRecovery, onClientsDeleted, newDagStore = defaultNewDagStore) {
42
+ const databases = await idbDatabasesStore.getDatabases();
43
+ const dbs = Object.values(databases);
44
+ const collectResults = await Promise.all(
45
+ dbs.map(
46
+ async (db) => [
47
+ db.name,
48
+ await gatherDatabaseInfoForCollect(
49
+ db,
50
+ now,
51
+ maxAge,
52
+ enableMutationRecovery,
53
+ newDagStore
54
+ )
55
+ ]
56
+ )
57
+ );
58
+ const dbNamesToRemove = [];
59
+ const dbNamesToKeep = [];
60
+ const deletedClientsToRemove = [];
61
+ for (const [dbName, [canCollect, deletedClients]] of collectResults) {
62
+ if (canCollect) {
63
+ dbNamesToRemove.push(dbName);
64
+ deletedClientsToRemove.push(...deletedClients);
65
+ } else {
66
+ dbNamesToKeep.push(dbName);
67
+ }
68
+ }
69
+ const { errors } = await dropDatabases(
70
+ idbDatabasesStore,
71
+ dbNamesToRemove,
72
+ kvDropStore
73
+ );
74
+ if (errors.length) {
75
+ throw errors[0];
76
+ }
77
+ if (deletedClientsToRemove.length > 0) {
78
+ let allDeletedClients = deletedClientsToRemove;
79
+ for (const name of dbNamesToKeep) {
80
+ await withWrite(newDagStore(name), async (dagWrite) => {
81
+ const newDeletedClients = await addDeletedClients(
82
+ dagWrite,
83
+ deletedClientsToRemove
84
+ );
85
+ allDeletedClients = mergeDeletedClients(
86
+ allDeletedClients,
87
+ newDeletedClients
88
+ );
89
+ });
90
+ }
91
+ const normalizedDeletedClients = normalizeDeletedClients(allDeletedClients);
92
+ await onClientsDeleted(normalizedDeletedClients);
93
+ }
94
+ }
95
+ async function dropDatabaseInternal(name, idbDatabasesStore, kvDropStore) {
96
+ await kvDropStore(name);
97
+ await idbDatabasesStore.deleteDatabases([name]);
98
+ }
99
+ async function dropDatabases(idbDatabasesStore, namesToRemove, kvDropStore) {
100
+ const dropStoreResults = await Promise.allSettled(
101
+ namesToRemove.map(async (name) => {
102
+ await dropDatabaseInternal(name, idbDatabasesStore, kvDropStore);
103
+ return name;
104
+ })
105
+ );
106
+ const dropped = [];
107
+ const errors = [];
108
+ for (const result of dropStoreResults) {
109
+ if (result.status === "fulfilled") {
110
+ dropped.push(result.value);
111
+ } else {
112
+ errors.push(result.reason);
113
+ }
114
+ }
115
+ return { dropped, errors };
116
+ }
117
+ function defaultNewDagStore(name) {
118
+ const perKvStore = new IDBStore(name);
119
+ return new StoreImpl(perKvStore, newRandomHash, assertHash);
120
+ }
121
+ function gatherDatabaseInfoForCollect(db, now, maxAge, enableMutationRecovery, newDagStore) {
122
+ if (db.replicacheFormatVersion > Latest) {
123
+ return [false];
124
+ }
125
+ assert(db.lastOpenedTimestampMS !== void 0);
126
+ if (now - db.lastOpenedTimestampMS < maxAge) {
127
+ return [false];
128
+ }
129
+ assert(
130
+ db.replicacheFormatVersion === DD31 || db.replicacheFormatVersion === V6 || db.replicacheFormatVersion === V7
131
+ );
132
+ return canDatabaseBeCollectedAndGetDeletedClientIDs(
133
+ enableMutationRecovery,
134
+ newDagStore(db.name)
135
+ );
136
+ }
137
+ async function dropDatabase(dbName, opts) {
138
+ const logContext = createLogContext(opts?.logLevel, opts?.logSinks, {
139
+ dropDatabase: void 0
140
+ });
141
+ const kvStoreProvider = getKVStoreProvider(logContext, opts?.kvStore);
142
+ await dropDatabaseInternal(
143
+ dbName,
144
+ new IDBDatabasesStore(kvStoreProvider.create),
145
+ kvStoreProvider.drop
146
+ );
147
+ }
148
+ async function dropAllDatabases(opts) {
149
+ const logContext = createLogContext(opts?.logLevel, opts?.logSinks, {
150
+ dropAllDatabases: void 0
151
+ });
152
+ const kvStoreProvider = getKVStoreProvider(logContext, opts?.kvStore);
153
+ const store = new IDBDatabasesStore(kvStoreProvider.create);
154
+ const databases = await store.getDatabases();
155
+ const dbNames = Object.values(databases).map((db) => db.name);
156
+ return dropDatabases(store, dbNames, kvStoreProvider.drop);
157
+ }
158
+ function canDatabaseBeCollectedAndGetDeletedClientIDs(enableMutationRecovery, perdag) {
159
+ return withRead(perdag, async (read) => {
160
+ if (enableMutationRecovery) {
161
+ const clientGroups = await getClientGroups(read);
162
+ for (const clientGroup of clientGroups.values()) {
163
+ if (clientGroupHasPendingMutations(clientGroup)) {
164
+ return [false];
165
+ }
166
+ }
167
+ }
168
+ const clients = await getClients(read);
169
+ const existingDeletedClients = await getDeletedClients(read);
170
+ const deletedClients = [...existingDeletedClients];
171
+ for (const [clientID, client] of clients) {
172
+ deletedClients.push({
173
+ clientID,
174
+ clientGroupID: client.clientGroupID
175
+ });
176
+ }
177
+ return [true, deletedClients];
178
+ });
179
+ }
180
+ export {
181
+ COLLECT_IDB_INTERVAL,
182
+ INITIAL_COLLECT_IDB_DELAY,
183
+ collectIDBDatabases,
184
+ dropAllDatabases,
185
+ dropDatabase,
186
+ initCollectIDBDatabases
187
+ };
188
+ //# sourceMappingURL=collect-idb-databases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-idb-databases.js","sources":["../../../../../replicache/src/persist/collect-idb-databases.ts"],"sourcesContent":["import type {LogContext, LogLevel, LogSink} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\nimport {initBgIntervalProcess} from '../bg-interval.ts';\nimport {StoreImpl} from '../dag/store-impl.ts';\nimport type {Store} from '../dag/store.ts';\nimport {\n addDeletedClients,\n getDeletedClients,\n mergeDeletedClients,\n normalizeDeletedClients,\n type DeletedClients,\n type WritableDeletedClients,\n} from '../deleted-clients.ts';\nimport * as FormatVersion from '../format-version-enum.ts';\nimport {getKVStoreProvider} from '../get-kv-store-provider.ts';\nimport {assertHash, newRandomHash} from '../hash.ts';\nimport {IDBStore} from '../kv/idb-store.ts';\nimport type {DropStore, StoreProvider} from '../kv/store.ts';\nimport {createLogContext} from '../log-options.ts';\nimport {withRead, withWrite} from '../with-transactions.ts';\nimport {\n clientGroupHasPendingMutations,\n getClientGroups,\n} from './client-groups.ts';\nimport type {OnClientsDeleted} from './clients.ts';\nimport {getClients} from './clients.ts';\nimport type {IndexedDBDatabase} from './idb-databases-store.ts';\nimport {IDBDatabasesStore} from './idb-databases-store.ts';\n\n/**\n * How frequently to try to collect\n */\nexport const COLLECT_IDB_INTERVAL = 12 * 60 * 60 * 1000; // 12 hours\n\n/**\n * We delay the initial collection to prevent doing it at startup.\n */\nexport const INITIAL_COLLECT_IDB_DELAY = 5 * 60 * 1000; // 5 minutes\n\nexport function initCollectIDBDatabases(\n idbDatabasesStore: IDBDatabasesStore,\n kvDropStore: DropStore,\n collectInterval: number,\n initialCollectDelay: number,\n maxAge: number,\n enableMutationRecovery: boolean,\n onClientsDeleted: OnClientsDeleted,\n lc: LogContext,\n signal: AbortSignal,\n): void {\n let initial = true;\n initBgIntervalProcess(\n 'CollectIDBDatabases',\n async () => {\n await collectIDBDatabases(\n idbDatabasesStore,\n Date.now(),\n maxAge,\n kvDropStore,\n enableMutationRecovery,\n onClientsDeleted,\n );\n },\n () => {\n if (initial) {\n initial = false;\n return initialCollectDelay;\n }\n return collectInterval;\n },\n lc,\n signal,\n );\n}\n\n/**\n * Collects IDB databases that are no longer needed.\n */\nexport async function collectIDBDatabases(\n idbDatabasesStore: IDBDatabasesStore,\n now: number,\n maxAge: number,\n kvDropStore: DropStore,\n enableMutationRecovery: boolean,\n onClientsDeleted: OnClientsDeleted,\n newDagStore = defaultNewDagStore,\n): Promise<void> {\n const databases = await idbDatabasesStore.getDatabases();\n\n const dbs = Object.values(databases);\n const collectResults = await Promise.all(\n dbs.map(\n async db =>\n [\n db.name,\n await gatherDatabaseInfoForCollect(\n db,\n now,\n maxAge,\n enableMutationRecovery,\n newDagStore,\n ),\n ] as const,\n ),\n );\n\n const dbNamesToRemove: string[] = [];\n const dbNamesToKeep: string[] = [];\n const deletedClientsToRemove: WritableDeletedClients = [];\n for (const [dbName, [canCollect, deletedClients]] of collectResults) {\n if (canCollect) {\n dbNamesToRemove.push(dbName);\n deletedClientsToRemove.push(...deletedClients);\n } else {\n dbNamesToKeep.push(dbName);\n }\n }\n\n const {errors} = await dropDatabases(\n idbDatabasesStore,\n dbNamesToRemove,\n kvDropStore,\n );\n if (errors.length) {\n throw errors[0];\n }\n\n if (deletedClientsToRemove.length > 0) {\n // Add the deleted clients to all the dbs that survived the collection.\n let allDeletedClients: DeletedClients = deletedClientsToRemove;\n for (const name of dbNamesToKeep) {\n await withWrite(newDagStore(name), async dagWrite => {\n const newDeletedClients = await addDeletedClients(\n dagWrite,\n deletedClientsToRemove,\n );\n\n allDeletedClients = mergeDeletedClients(\n allDeletedClients,\n newDeletedClients,\n );\n });\n }\n // normalize and dedupe\n const normalizedDeletedClients = normalizeDeletedClients(allDeletedClients);\n\n // Call the callback with the normalized deleted clients\n await onClientsDeleted(normalizedDeletedClients);\n }\n}\n\nasync function dropDatabaseInternal(\n name: string,\n idbDatabasesStore: IDBDatabasesStore,\n kvDropStore: DropStore,\n) {\n await kvDropStore(name);\n await idbDatabasesStore.deleteDatabases([name]);\n}\n\nasync function dropDatabases(\n idbDatabasesStore: IDBDatabasesStore,\n namesToRemove: string[],\n kvDropStore: DropStore,\n): Promise<{dropped: string[]; errors: unknown[]}> {\n // Try to remove the databases in parallel. Don't let a single reject fail the\n // other ones. We will check for failures afterwards.\n const dropStoreResults = await Promise.allSettled(\n namesToRemove.map(async name => {\n await dropDatabaseInternal(name, idbDatabasesStore, kvDropStore);\n return name;\n }),\n );\n\n const dropped: string[] = [];\n const errors: unknown[] = [];\n for (const result of dropStoreResults) {\n if (result.status === 'fulfilled') {\n dropped.push(result.value);\n } else {\n errors.push(result.reason);\n }\n }\n\n return {dropped, errors};\n}\n\nfunction defaultNewDagStore(name: string): Store {\n const perKvStore = new IDBStore(name);\n return new StoreImpl(perKvStore, newRandomHash, assertHash);\n}\n\n/**\n * If the database is older than maxAge and there are no pending mutations we\n * return `true` and an array of the deleted clients in that db. If the database is\n * too new or there are pending mutations we return `[false]`.\n */\nfunction gatherDatabaseInfoForCollect(\n db: IndexedDBDatabase,\n now: number,\n maxAge: number,\n enableMutationRecovery: boolean,\n newDagStore: typeof defaultNewDagStore,\n): MaybePromise<\n [canCollect: false] | [canCollect: true, deletedClients: DeletedClients]\n> {\n if (db.replicacheFormatVersion > FormatVersion.Latest) {\n return [false];\n }\n\n // 0 is used in testing\n assert(db.lastOpenedTimestampMS !== undefined);\n\n // - For DD31 we can delete the database if it is older than maxAge and\n // there are no pending mutations.\n if (now - db.lastOpenedTimestampMS < maxAge) {\n return [false];\n }\n // If increase the format version we need to decide how to deal with this\n // logic.\n assert(\n db.replicacheFormatVersion === FormatVersion.DD31 ||\n db.replicacheFormatVersion === FormatVersion.V6 ||\n db.replicacheFormatVersion === FormatVersion.V7,\n );\n return canDatabaseBeCollectedAndGetDeletedClientIDs(\n enableMutationRecovery,\n newDagStore(db.name),\n );\n}\n\n/**\n * Options for `dropDatabase` and `dropAllDatabases`.\n */\nexport type DropDatabaseOptions = {\n /**\n * Allows providing a custom implementation of the underlying storage layer.\n * Default is `'idb'`.\n */\n kvStore?: 'idb' | 'mem' | StoreProvider | undefined;\n /**\n * Determines how much logging to do. When this is set to `'debug'`,\n * Replicache will also log `'info'` and `'error'` messages. When set to\n * `'info'` we log `'info'` and `'error'` but not `'debug'`. When set to\n * `'error'` we only log `'error'` messages.\n * Default is `'info'`.\n */\n logLevel?: LogLevel | undefined;\n /**\n * Enables custom handling of logs.\n *\n * By default logs are logged to the console. If you would like logs to be\n * sent elsewhere (e.g. to a cloud logging service like DataDog) you can\n * provide an array of {@link LogSink}s. Logs at or above\n * {@link DropDatabaseOptions.logLevel} are sent to each of these {@link LogSink}s.\n * If you would still like logs to go to the console, include\n * `consoleLogSink` in the array.\n *\n * ```ts\n * logSinks: [consoleLogSink, myCloudLogSink],\n * ```\n * Default is `[consoleLogSink]`.\n */\n logSinks?: LogSink[] | undefined;\n};\n\n/**\n * Drops the specified database.\n * @param dbName The name of the database to drop.\n * @param opts Options for dropping the database.\n */\nexport async function dropDatabase(dbName: string, opts?: DropDatabaseOptions) {\n const logContext = createLogContext(opts?.logLevel, opts?.logSinks, {\n dropDatabase: undefined,\n });\n const kvStoreProvider = getKVStoreProvider(logContext, opts?.kvStore);\n await dropDatabaseInternal(\n dbName,\n new IDBDatabasesStore(kvStoreProvider.create),\n kvStoreProvider.drop,\n );\n}\n\n/**\n * Deletes all IndexedDB data associated with Replicache.\n *\n * Returns an object with the names of the successfully dropped databases\n * and any errors encountered while dropping.\n */\nexport async function dropAllDatabases(opts?: DropDatabaseOptions): Promise<{\n dropped: string[];\n errors: unknown[];\n}> {\n const logContext = createLogContext(opts?.logLevel, opts?.logSinks, {\n dropAllDatabases: undefined,\n });\n const kvStoreProvider = getKVStoreProvider(logContext, opts?.kvStore);\n const store = new IDBDatabasesStore(kvStoreProvider.create);\n const databases = await store.getDatabases();\n const dbNames = Object.values(databases).map(db => db.name);\n return dropDatabases(store, dbNames, kvStoreProvider.drop);\n}\n\n/**\n * Deletes all IndexedDB data associated with Replicache.\n *\n * Returns an object with the names of the successfully dropped databases\n * and any errors encountered while dropping.\n *\n * @deprecated Use `dropAllDatabases` instead.\n */\nexport function deleteAllReplicacheData(opts?: DropDatabaseOptions) {\n return dropAllDatabases(opts);\n}\n\n/**\n * If there are pending mutations in any of the clients in this db we return\n * `[false]`. Otherwise we return `true` and an array of the deleted clients to\n * remove.\n */\nfunction canDatabaseBeCollectedAndGetDeletedClientIDs(\n enableMutationRecovery: boolean,\n perdag: Store,\n): Promise<\n [canCollect: false] | [canCollect: true, deletedClients: DeletedClients]\n> {\n return withRead(perdag, async read => {\n // If mutation recovery is disabled we do not care if there are pending\n // mutations when we decide if we can collect the database.\n if (enableMutationRecovery) {\n const clientGroups = await getClientGroups(read);\n for (const clientGroup of clientGroups.values()) {\n if (clientGroupHasPendingMutations(clientGroup)) {\n return [false];\n }\n }\n }\n\n const clients = await getClients(read);\n const existingDeletedClients = await getDeletedClients(read);\n const deletedClients: WritableDeletedClients = [...existingDeletedClients];\n\n // Add all current clients to the deleted clients list\n for (const [clientID, client] of clients) {\n deletedClients.push({\n clientID,\n clientGroupID: client.clientGroupID,\n });\n }\n\n // The normalization (deduping and sorting) will be done when storing\n return [true, deletedClients];\n });\n}\n"],"names":["FormatVersion.Latest","FormatVersion.DD31","FormatVersion.V6","FormatVersion.V7"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { promiseVoid } from "../../../shared/src/resolved-promises.js";
2
+ import { Visitor } from "../dag/visitor.js";
3
+ class GatherMemoryOnlyVisitor extends Visitor {
4
+ #gatheredChunks = /* @__PURE__ */ new Map();
5
+ #lazyRead;
6
+ constructor(dagRead) {
7
+ super(dagRead);
8
+ this.#lazyRead = dagRead;
9
+ }
10
+ get gatheredChunks() {
11
+ return this.#gatheredChunks;
12
+ }
13
+ visit(h) {
14
+ if (!this.#lazyRead.isMemOnlyChunkHash(h)) {
15
+ return promiseVoid;
16
+ }
17
+ return super.visit(h);
18
+ }
19
+ visitChunk(chunk) {
20
+ this.#gatheredChunks.set(chunk.hash, chunk);
21
+ return super.visitChunk(chunk);
22
+ }
23
+ }
24
+ export {
25
+ GatherMemoryOnlyVisitor
26
+ };
27
+ //# sourceMappingURL=gather-mem-only-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gather-mem-only-visitor.js","sources":["../../../../../replicache/src/persist/gather-mem-only-visitor.ts"],"sourcesContent":["import {promiseVoid} from '../../../shared/src/resolved-promises.ts';\nimport type {Chunk} from '../dag/chunk.ts';\nimport type {LazyRead} from '../dag/lazy-store.ts';\nimport {Visitor} from '../dag/visitor.ts';\nimport type {Hash} from '../hash.ts';\n\nexport class GatherMemoryOnlyVisitor extends Visitor {\n readonly #gatheredChunks: Map<Hash, Chunk> = new Map();\n readonly #lazyRead: LazyRead;\n\n constructor(dagRead: LazyRead) {\n super(dagRead);\n this.#lazyRead = dagRead;\n }\n\n get gatheredChunks(): ReadonlyMap<Hash, Chunk> {\n return this.#gatheredChunks;\n }\n\n override visit(h: Hash): Promise<void> {\n if (!this.#lazyRead.isMemOnlyChunkHash(h)) {\n // Not a memory-only hash, no need to visit anything else.\n return promiseVoid;\n }\n return super.visit(h);\n }\n\n override visitChunk(chunk: Chunk): Promise<void> {\n this.#gatheredChunks.set(chunk.hash, chunk);\n return super.visitChunk(chunk);\n }\n}\n"],"names":[],"mappings":";;AAMO,MAAM,gCAAgC,QAAQ;AAAA,EAC1C,sCAAwC,IAAA;AAAA,EACxC;AAAA,EAET,YAAY,SAAmB;AAC7B,UAAM,OAAO;AACb,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAI,iBAA2C;AAC7C,WAAO,KAAK;AAAA,EACd;AAAA,EAES,MAAM,GAAwB;AACrC,QAAI,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAG;AAEzC,aAAO;AAAA,IACT;AACA,WAAO,MAAM,MAAM,CAAC;AAAA,EACtB;AAAA,EAES,WAAW,OAA6B;AAC/C,SAAK,gBAAgB,IAAI,MAAM,MAAM,KAAK;AAC1C,WAAO,MAAM,WAAW,KAAK;AAAA,EAC/B;AACF;"}