@rocicorp/zero 0.25.0-canary.1 → 0.25.0-canary.10

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 (1504) hide show
  1. package/out/analyze-query/src/bin-analyze.js +268 -257
  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-ZZXMKAAG.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/replicache/src/kv/sqlite-store.d.ts.map +1 -1
  132. package/out/{chunk-ECUMGQGC.js → replicache/src/kv/sqlite-store.js} +27 -21
  133. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  134. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  135. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  136. package/out/replicache/src/kv/write-impl-base.js +57 -0
  137. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  138. package/out/replicache/src/kv/write-impl.js +30 -0
  139. package/out/replicache/src/kv/write-impl.js.map +1 -0
  140. package/out/replicache/src/lazy.js +13 -0
  141. package/out/replicache/src/lazy.js.map +1 -0
  142. package/out/replicache/src/log-options.js +9 -0
  143. package/out/replicache/src/log-options.js.map +1 -0
  144. package/out/replicache/src/make-idb-name.js +13 -0
  145. package/out/replicache/src/make-idb-name.js.map +1 -0
  146. package/out/replicache/src/new-client-channel.js +51 -0
  147. package/out/replicache/src/new-client-channel.js.map +1 -0
  148. package/out/replicache/src/on-persist-channel.js +36 -0
  149. package/out/replicache/src/on-persist-channel.js.map +1 -0
  150. package/out/replicache/src/patch-operation.js +42 -0
  151. package/out/replicache/src/patch-operation.js.map +1 -0
  152. package/out/replicache/src/pending-mutations.js +16 -0
  153. package/out/replicache/src/pending-mutations.js.map +1 -0
  154. package/out/replicache/src/persist/client-gc.js +58 -0
  155. package/out/replicache/src/persist/client-gc.js.map +1 -0
  156. package/out/replicache/src/persist/client-group-gc.js +43 -0
  157. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  158. package/out/replicache/src/persist/client-groups.js +184 -0
  159. package/out/replicache/src/persist/client-groups.js.map +1 -0
  160. package/out/replicache/src/persist/clients.d.ts +3 -2
  161. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  162. package/out/replicache/src/persist/clients.js +353 -0
  163. package/out/replicache/src/persist/clients.js.map +1 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  165. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  167. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  169. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  170. package/out/replicache/src/persist/heartbeat.js +48 -0
  171. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  173. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  174. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  175. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  176. package/out/replicache/src/persist/make-client-id.js +12 -0
  177. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  178. package/out/replicache/src/persist/persist.d.ts +2 -2
  179. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  180. package/out/replicache/src/persist/persist.js +183 -0
  181. package/out/replicache/src/persist/persist.js.map +1 -0
  182. package/out/replicache/src/persist/refresh.d.ts +4 -3
  183. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  184. package/out/replicache/src/persist/refresh.js +198 -0
  185. package/out/replicache/src/persist/refresh.js.map +1 -0
  186. package/out/replicache/src/process-scheduler.js +96 -0
  187. package/out/replicache/src/process-scheduler.js.map +1 -0
  188. package/out/replicache/src/pusher.js +33 -0
  189. package/out/replicache/src/pusher.js.map +1 -0
  190. package/out/replicache/src/replicache-impl.d.ts +1 -1
  191. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  192. package/out/replicache/src/replicache-impl.js +1200 -0
  193. package/out/replicache/src/replicache-impl.js.map +1 -0
  194. package/out/replicache/src/replicache-options.d.ts +3 -2
  195. package/out/replicache/src/replicache-options.d.ts.map +1 -1
  196. package/out/replicache/src/report-error.js +6 -0
  197. package/out/replicache/src/report-error.js.map +1 -0
  198. package/out/replicache/src/request-idle.js +13 -0
  199. package/out/replicache/src/request-idle.js.map +1 -0
  200. package/out/replicache/src/scan-iterator.js +146 -0
  201. package/out/replicache/src/scan-iterator.js.map +1 -0
  202. package/out/replicache/src/scan-options.js +45 -0
  203. package/out/replicache/src/scan-options.js.map +1 -0
  204. package/out/replicache/src/set-interval-with-signal.js +12 -0
  205. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  206. package/out/replicache/src/subscriptions.js +355 -0
  207. package/out/replicache/src/subscriptions.js.map +1 -0
  208. package/out/replicache/src/sync/diff.d.ts +3 -2
  209. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  210. package/out/replicache/src/sync/diff.js +72 -0
  211. package/out/replicache/src/sync/diff.js.map +1 -0
  212. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  213. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  214. package/out/replicache/src/sync/ids.js +9 -0
  215. package/out/replicache/src/sync/ids.js.map +1 -0
  216. package/out/replicache/src/sync/patch.js +49 -0
  217. package/out/replicache/src/sync/patch.js.map +1 -0
  218. package/out/replicache/src/sync/pull-error.js +16 -0
  219. package/out/replicache/src/sync/pull-error.js.map +1 -0
  220. package/out/replicache/src/sync/pull.d.ts +3 -2
  221. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  222. package/out/replicache/src/sync/pull.js +301 -0
  223. package/out/replicache/src/sync/pull.js.map +1 -0
  224. package/out/replicache/src/sync/push.js +88 -0
  225. package/out/replicache/src/sync/push.js.map +1 -0
  226. package/out/replicache/src/sync/request-id.js +20 -0
  227. package/out/replicache/src/sync/request-id.js.map +1 -0
  228. package/out/replicache/src/sync/sync-head-name.js +5 -0
  229. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  230. package/out/replicache/src/to-error.js +10 -0
  231. package/out/replicache/src/to-error.js.map +1 -0
  232. package/out/replicache/src/transaction-closed-error.js +19 -0
  233. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  234. package/out/replicache/src/transactions.js +152 -0
  235. package/out/replicache/src/transactions.js.map +1 -0
  236. package/out/replicache/src/version.js +5 -0
  237. package/out/replicache/src/version.js.map +1 -0
  238. package/out/replicache/src/with-transactions.js +28 -0
  239. package/out/replicache/src/with-transactions.js.map +1 -0
  240. package/out/shared/src/abort-error.js +6 -3
  241. package/out/shared/src/abort-error.js.map +1 -1
  242. package/out/shared/src/arrays.js +45 -43
  243. package/out/shared/src/arrays.js.map +1 -1
  244. package/out/shared/src/asserts.js +64 -68
  245. package/out/shared/src/asserts.js.map +1 -1
  246. package/out/shared/src/bigint-json.js +38 -42
  247. package/out/shared/src/bigint-json.js.map +1 -1
  248. package/out/shared/src/binary-search.js +18 -29
  249. package/out/shared/src/binary-search.js.map +1 -1
  250. package/out/shared/src/broadcast-channel.js +24 -0
  251. package/out/shared/src/broadcast-channel.js.map +1 -0
  252. package/out/shared/src/browser-env.js +25 -0
  253. package/out/shared/src/browser-env.js.map +1 -0
  254. package/out/shared/src/btree-set.js +464 -507
  255. package/out/shared/src/btree-set.js.map +1 -1
  256. package/out/shared/src/cache.js +34 -38
  257. package/out/shared/src/cache.js.map +1 -1
  258. package/out/shared/src/centroid.js +24 -24
  259. package/out/shared/src/centroid.js.map +1 -1
  260. package/out/shared/src/config.js +6 -3
  261. package/out/shared/src/config.js.map +1 -1
  262. package/out/shared/src/custom-key-map.js +58 -64
  263. package/out/shared/src/custom-key-map.js.map +1 -1
  264. package/out/shared/src/custom-key-set.js +51 -57
  265. package/out/shared/src/custom-key-set.js.map +1 -1
  266. package/out/shared/src/deep-clone.js +46 -0
  267. package/out/shared/src/deep-clone.js.map +1 -0
  268. package/out/shared/src/deep-merge.d.ts +24 -4
  269. package/out/shared/src/deep-merge.d.ts.map +1 -1
  270. package/out/shared/src/deep-merge.js +27 -0
  271. package/out/shared/src/deep-merge.js.map +1 -0
  272. package/out/shared/src/document-visible.js +74 -0
  273. package/out/shared/src/document-visible.js.map +1 -0
  274. package/out/shared/src/dotenv.js +5 -7
  275. package/out/shared/src/dotenv.js.map +1 -1
  276. package/out/shared/src/error.d.ts +4 -0
  277. package/out/shared/src/error.d.ts.map +1 -0
  278. package/out/shared/src/error.js +71 -0
  279. package/out/shared/src/error.js.map +1 -0
  280. package/out/shared/src/has-own.js +5 -3
  281. package/out/shared/src/has-own.js.map +1 -1
  282. package/out/shared/src/hash.js +15 -14
  283. package/out/shared/src/hash.js.map +1 -1
  284. package/out/shared/src/iterables.js +71 -73
  285. package/out/shared/src/iterables.js.map +1 -1
  286. package/out/shared/src/json-schema.js +30 -33
  287. package/out/shared/src/json-schema.js.map +1 -1
  288. package/out/shared/src/json.js +128 -143
  289. package/out/shared/src/json.js.map +1 -1
  290. package/out/shared/src/logging-test-utils.js +12 -19
  291. package/out/shared/src/logging-test-utils.js.map +1 -1
  292. package/out/shared/src/logging.d.ts.map +1 -1
  293. package/out/shared/src/logging.js +99 -83
  294. package/out/shared/src/logging.js.map +1 -1
  295. package/out/shared/src/must.js +9 -7
  296. package/out/shared/src/must.js.map +1 -1
  297. package/out/shared/src/navigator.js +5 -0
  298. package/out/shared/src/navigator.js.map +1 -0
  299. package/out/shared/src/object-traversal.d.ts +19 -0
  300. package/out/shared/src/object-traversal.d.ts.map +1 -0
  301. package/out/shared/src/object-traversal.js +27 -0
  302. package/out/shared/src/object-traversal.js.map +1 -0
  303. package/out/shared/src/objects.js +21 -22
  304. package/out/shared/src/objects.js.map +1 -1
  305. package/out/shared/src/options.d.ts +2 -0
  306. package/out/shared/src/options.d.ts.map +1 -1
  307. package/out/shared/src/options.js +289 -318
  308. package/out/shared/src/options.js.map +1 -1
  309. package/out/shared/src/parse-big-int.js +12 -10
  310. package/out/shared/src/parse-big-int.js.map +1 -1
  311. package/out/shared/src/promise-race.js +20 -0
  312. package/out/shared/src/promise-race.js.map +1 -0
  313. package/out/shared/src/queue.js +119 -122
  314. package/out/shared/src/queue.js.map +1 -1
  315. package/out/shared/src/rand.js +8 -10
  316. package/out/shared/src/rand.js.map +1 -1
  317. package/out/shared/src/random-uint64.js +9 -0
  318. package/out/shared/src/random-uint64.js.map +1 -0
  319. package/out/shared/src/random-values.js +13 -0
  320. package/out/shared/src/random-values.js.map +1 -0
  321. package/out/shared/src/resolved-promises.js +12 -9
  322. package/out/shared/src/resolved-promises.js.map +1 -1
  323. package/out/shared/src/sentinels.js +13 -6
  324. package/out/shared/src/sentinels.js.map +1 -1
  325. package/out/shared/src/set-utils.js +63 -62
  326. package/out/shared/src/set-utils.js.map +1 -1
  327. package/out/shared/src/size-of-value.js +58 -0
  328. package/out/shared/src/size-of-value.js.map +1 -0
  329. package/out/shared/src/sleep.js +45 -53
  330. package/out/shared/src/sleep.js.map +1 -1
  331. package/out/shared/src/string-compare.js +12 -9
  332. package/out/shared/src/string-compare.js.map +1 -1
  333. package/out/shared/src/subscribable.js +34 -0
  334. package/out/shared/src/subscribable.js.map +1 -0
  335. package/out/shared/src/tdigest-schema.js +7 -7
  336. package/out/shared/src/tdigest-schema.js.map +1 -1
  337. package/out/shared/src/tdigest.js +247 -271
  338. package/out/shared/src/tdigest.js.map +1 -1
  339. package/out/shared/src/valita.js +195 -207
  340. package/out/shared/src/valita.js.map +1 -1
  341. package/out/z2s/src/compiler.d.ts +2 -2
  342. package/out/z2s/src/compiler.d.ts.map +1 -1
  343. package/out/z2s/src/compiler.js +437 -310
  344. package/out/z2s/src/compiler.js.map +1 -1
  345. package/out/z2s/src/sql.d.ts +1 -1
  346. package/out/z2s/src/sql.d.ts.map +1 -1
  347. package/out/z2s/src/sql.js +186 -218
  348. package/out/z2s/src/sql.js.map +1 -1
  349. package/out/zero/package.json.js +9 -0
  350. package/out/zero/package.json.js.map +1 -0
  351. package/out/zero/src/adapters/drizzle.js +5 -2
  352. package/out/zero/src/adapters/drizzle.js.map +1 -1
  353. package/out/zero/src/adapters/pg.js +7 -2
  354. package/out/zero/src/adapters/pg.js.map +1 -1
  355. package/out/zero/src/adapters/postgresjs.js +7 -2
  356. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  357. package/out/zero/src/analyze-query.js +1 -1
  358. package/out/zero/src/analyze-query.js.map +1 -1
  359. package/out/zero/src/ast-to-zql.js +1 -1
  360. package/out/zero/src/ast-to-zql.js.map +1 -1
  361. package/out/zero/src/build-schema.js +3 -5
  362. package/out/zero/src/build-schema.js.map +1 -1
  363. package/out/zero/src/change-protocol/v0.js +5 -3
  364. package/out/zero/src/change-protocol/v0.js.map +1 -1
  365. package/out/zero/src/cli.js +2 -2
  366. package/out/zero/src/cli.js.map +1 -1
  367. package/out/zero/src/deploy-permissions.js +1 -1
  368. package/out/zero/src/deploy-permissions.js.map +1 -1
  369. package/out/zero/src/expo-sqlite.js +5 -0
  370. package/out/zero/src/expo-sqlite.js.map +1 -0
  371. package/out/zero/src/op-sqlite.js +5 -0
  372. package/out/zero/src/op-sqlite.js.map +1 -0
  373. package/out/zero/src/pg.js +29 -3
  374. package/out/zero/src/pg.js.map +1 -1
  375. package/out/zero/src/react-native.js +13 -0
  376. package/out/zero/src/react-native.js.map +1 -0
  377. package/out/zero/src/react.js +17 -0
  378. package/out/zero/src/react.js.map +1 -0
  379. package/out/zero/src/server.js +25 -3
  380. package/out/zero/src/server.js.map +1 -1
  381. package/out/zero/src/solid.js +15 -0
  382. package/out/zero/src/solid.js.map +1 -0
  383. package/out/zero/src/sqlite.js +7 -0
  384. package/out/zero/src/sqlite.js.map +1 -0
  385. package/out/zero/src/transform-query.js +1 -1
  386. package/out/zero/src/transform-query.js.map +1 -1
  387. package/out/zero/src/zero-cache-dev.js +133 -105
  388. package/out/zero/src/zero-cache-dev.js.map +1 -1
  389. package/out/zero/src/zero-out.d.ts +3 -0
  390. package/out/zero/src/zero-out.d.ts.map +1 -0
  391. package/out/zero/src/zero-out.js +13 -0
  392. package/out/zero/src/zero-out.js.map +1 -0
  393. package/out/zero/src/zero.js +67 -0
  394. package/out/zero/src/zero.js.map +1 -0
  395. package/out/zero/src/zqlite.js +11 -3
  396. package/out/zero/src/zqlite.js.map +1 -1
  397. package/out/zero-cache/src/auth/jwt.d.ts +3 -0
  398. package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
  399. package/out/zero-cache/src/auth/jwt.js +33 -38
  400. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  401. package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
  402. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  403. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  404. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  405. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  406. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  407. package/out/zero-cache/src/auth/write-authorizer.d.ts +4 -3
  408. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  409. package/out/zero-cache/src/auth/write-authorizer.js +387 -328
  410. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  411. package/out/zero-cache/src/config/network.js +42 -45
  412. package/out/zero-cache/src/config/network.js.map +1 -1
  413. package/out/zero-cache/src/config/normalize.js +86 -83
  414. package/out/zero-cache/src/config/normalize.js.map +1 -1
  415. package/out/zero-cache/src/config/zero-config.d.ts +27 -0
  416. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  417. package/out/zero-cache/src/config/zero-config.js +704 -682
  418. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  419. package/out/zero-cache/src/custom/fetch.d.ts +5 -5
  420. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  421. package/out/zero-cache/src/custom/fetch.js +170 -162
  422. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  423. package/out/zero-cache/src/custom-queries/transform-query.d.ts +10 -3
  424. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  425. package/out/zero-cache/src/custom-queries/transform-query.js +101 -109
  426. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  427. package/out/zero-cache/src/db/create.js +32 -36
  428. package/out/zero-cache/src/db/create.js.map +1 -1
  429. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  430. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  431. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  432. package/out/zero-cache/src/db/lite-tables.js +150 -174
  433. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  434. package/out/zero-cache/src/db/migration-lite.js +170 -165
  435. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  436. package/out/zero-cache/src/db/migration.js +157 -137
  437. package/out/zero-cache/src/db/migration.js.map +1 -1
  438. package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
  439. package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
  440. package/out/zero-cache/src/db/mode-enum.js +9 -3
  441. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  442. package/out/zero-cache/src/db/pg-copy.js +51 -90
  443. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  444. package/out/zero-cache/src/db/pg-to-lite.d.ts +10 -0
  445. package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
  446. package/out/zero-cache/src/db/pg-to-lite.js +116 -97
  447. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  448. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  449. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  450. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  451. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  452. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  453. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  454. package/out/zero-cache/src/db/specs.d.ts +1 -7
  455. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  456. package/out/zero-cache/src/db/specs.js +66 -40
  457. package/out/zero-cache/src/db/specs.js.map +1 -1
  458. package/out/zero-cache/src/db/statements.d.ts +1 -1
  459. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  460. package/out/zero-cache/src/db/statements.js +59 -52
  461. package/out/zero-cache/src/db/statements.js.map +1 -1
  462. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  463. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  464. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  465. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  466. package/out/zero-cache/src/db/warmup.js +25 -12
  467. package/out/zero-cache/src/db/warmup.js.map +1 -1
  468. package/out/zero-cache/src/observability/events.js +71 -82
  469. package/out/zero-cache/src/observability/events.js.map +1 -1
  470. package/out/zero-cache/src/observability/metrics.js +54 -32
  471. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  472. package/out/zero-cache/src/scripts/decommission.d.ts +50 -0
  473. package/out/zero-cache/src/scripts/decommission.d.ts.map +1 -0
  474. package/out/zero-cache/src/scripts/decommission.js +55 -0
  475. package/out/zero-cache/src/scripts/decommission.js.map +1 -0
  476. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  477. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  478. package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
  479. package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
  480. package/out/zero-cache/src/scripts/permissions.js +108 -100
  481. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  482. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  483. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  484. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  485. package/out/zero-cache/src/server/change-streamer.js +105 -64
  486. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  487. package/out/zero-cache/src/server/inspector-delegate.d.ts.map +1 -1
  488. package/out/zero-cache/src/server/inspector-delegate.js +112 -108
  489. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  490. package/out/zero-cache/src/server/logging.d.ts +1 -1
  491. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  492. package/out/zero-cache/src/server/logging.js +26 -19
  493. package/out/zero-cache/src/server/logging.js.map +1 -1
  494. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  495. package/out/zero-cache/src/server/main.js +137 -120
  496. package/out/zero-cache/src/server/main.js.map +1 -1
  497. package/out/zero-cache/src/server/mutator.js +19 -0
  498. package/out/zero-cache/src/server/mutator.js.map +1 -0
  499. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  500. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  501. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  502. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  503. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  504. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  505. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  506. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  507. package/out/zero-cache/src/server/otel-start.js +57 -68
  508. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  509. package/out/zero-cache/src/server/reaper.js +34 -26
  510. package/out/zero-cache/src/server/reaper.js.map +1 -1
  511. package/out/zero-cache/src/server/replicator.js +53 -31
  512. package/out/zero-cache/src/server/replicator.js.map +1 -1
  513. package/out/zero-cache/src/server/runner/main.js +6 -4
  514. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  515. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  516. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  517. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  518. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  519. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  520. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  521. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  522. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  523. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  524. package/out/zero-cache/src/server/syncer.js +124 -63
  525. package/out/zero-cache/src/server/syncer.js.map +1 -1
  526. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  527. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  528. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  529. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  530. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  531. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  532. package/out/zero-cache/src/server/worker-urls.js +21 -0
  533. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  534. package/out/zero-cache/src/services/analyze.d.ts +4 -9
  535. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  536. package/out/zero-cache/src/services/analyze.js +104 -120
  537. package/out/zero-cache/src/services/analyze.js.map +1 -1
  538. package/out/zero-cache/src/services/change-source/column-metadata.d.ts +10 -3
  539. package/out/zero-cache/src/services/change-source/column-metadata.d.ts.map +1 -1
  540. package/out/zero-cache/src/services/change-source/column-metadata.js +154 -144
  541. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  542. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  543. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  544. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  545. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  546. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  547. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  548. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  549. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  550. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  551. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  552. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  553. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  554. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  555. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  556. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  557. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  558. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
  559. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
  560. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  561. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  562. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  563. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  564. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  565. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  566. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  567. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  568. package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
  569. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  570. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  571. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  572. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  573. package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
  574. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  575. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  576. package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
  577. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  578. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  579. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  580. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  581. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  582. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  583. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  584. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  585. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  586. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  587. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  588. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  589. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  590. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  591. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  592. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  593. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  594. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  595. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  596. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  597. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  598. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  599. package/out/zero-cache/src/services/change-source/replica-schema.d.ts.map +1 -1
  600. package/out/zero-cache/src/services/change-source/replica-schema.js +67 -37
  601. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  602. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  603. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  604. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -157
  605. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  606. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +13 -4
  607. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  608. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +213 -157
  609. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  610. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  611. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  612. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +235 -349
  613. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  614. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
  615. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  616. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -22
  617. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  618. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  619. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  620. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  621. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  622. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  623. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  624. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
  625. package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
  626. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +48 -0
  627. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
  628. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  629. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  630. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  631. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  632. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  633. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  634. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
  635. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
  636. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -18
  637. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  638. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
  639. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  640. package/out/zero-cache/src/services/change-streamer/storer.js +309 -353
  641. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  642. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +3 -2
  643. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  644. package/out/zero-cache/src/services/change-streamer/subscriber.js +85 -87
  645. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  646. package/out/zero-cache/src/services/heapz.js +21 -25
  647. package/out/zero-cache/src/services/heapz.js.map +1 -1
  648. package/out/zero-cache/src/services/http-service.d.ts +6 -5
  649. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  650. package/out/zero-cache/src/services/http-service.js +61 -59
  651. package/out/zero-cache/src/services/http-service.js.map +1 -1
  652. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  653. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  654. package/out/zero-cache/src/services/life-cycle.js +216 -255
  655. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  656. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  657. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  658. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  659. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  660. package/out/zero-cache/src/services/litestream/commands.js +201 -154
  661. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  662. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  663. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  664. package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
  665. package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
  666. package/out/zero-cache/src/services/mutagen/mutagen.js +271 -267
  667. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  668. package/out/zero-cache/src/services/mutagen/pusher.d.ts +217 -21
  669. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  670. package/out/zero-cache/src/services/mutagen/pusher.js +354 -348
  671. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  672. package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
  673. package/out/zero-cache/src/services/replicator/change-processor.js +483 -497
  674. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  675. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  676. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  677. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  678. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  679. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  680. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  681. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  682. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  683. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  684. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  685. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  686. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  687. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  688. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  689. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  690. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  691. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  692. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  693. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  694. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  695. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  696. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  697. package/out/zero-cache/src/services/run-ast.d.ts +9 -3
  698. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  699. package/out/zero-cache/src/services/run-ast.js +87 -78
  700. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  701. package/out/zero-cache/src/services/runner.d.ts +1 -1
  702. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  703. package/out/zero-cache/src/services/runner.js +40 -40
  704. package/out/zero-cache/src/services/runner.js.map +1 -1
  705. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  706. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  707. package/out/zero-cache/src/services/running-state.js +122 -119
  708. package/out/zero-cache/src/services/running-state.js.map +1 -1
  709. package/out/zero-cache/src/services/statz.js +184 -162
  710. package/out/zero-cache/src/services/statz.js.map +1 -1
  711. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  712. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  713. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  714. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  715. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  716. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  717. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  718. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  719. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +84 -94
  720. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  721. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  722. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  723. package/out/zero-cache/src/services/view-syncer/cvr-store.js +654 -611
  724. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  725. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  726. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  727. package/out/zero-cache/src/services/view-syncer/cvr.js +633 -695
  728. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  729. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts +1 -0
  730. package/out/zero-cache/src/services/view-syncer/drain-coordinator.d.ts.map +1 -1
  731. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -55
  732. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  733. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  734. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  735. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +175 -85
  736. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  737. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  738. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  739. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +534 -465
  740. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  741. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
  742. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  743. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -277
  744. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  745. package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
  746. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +57 -122
  747. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  748. package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
  749. package/out/zero-cache/src/services/view-syncer/schema/init.js +177 -131
  750. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  751. package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
  752. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  753. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  754. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  755. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  756. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  757. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  758. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  759. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  760. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +10 -3
  761. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  762. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1508 -1284
  763. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  764. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  765. package/out/zero-cache/src/types/error-with-level.js +30 -21
  766. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  767. package/out/zero-cache/src/types/http.js +27 -14
  768. package/out/zero-cache/src/types/http.js.map +1 -1
  769. package/out/zero-cache/src/types/lexi-version.js +46 -31
  770. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  771. package/out/zero-cache/src/types/lite.js +118 -125
  772. package/out/zero-cache/src/types/lite.js.map +1 -1
  773. package/out/zero-cache/src/types/names.js +6 -3
  774. package/out/zero-cache/src/types/names.js.map +1 -1
  775. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  776. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  777. package/out/zero-cache/src/types/pg-types.js +17 -72
  778. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  779. package/out/zero-cache/src/types/pg.d.ts +1 -1
  780. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  781. package/out/zero-cache/src/types/pg.js +213 -233
  782. package/out/zero-cache/src/types/pg.js.map +1 -1
  783. package/out/zero-cache/src/types/processes.d.ts +2 -2
  784. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  785. package/out/zero-cache/src/types/processes.js +95 -143
  786. package/out/zero-cache/src/types/processes.js.map +1 -1
  787. package/out/zero-cache/src/types/profiler.js +29 -30
  788. package/out/zero-cache/src/types/profiler.js.map +1 -1
  789. package/out/zero-cache/src/types/row-key.js +30 -68
  790. package/out/zero-cache/src/types/row-key.js.map +1 -1
  791. package/out/zero-cache/src/types/schema-versions.js +25 -19
  792. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  793. package/out/zero-cache/src/types/shards.js +50 -36
  794. package/out/zero-cache/src/types/shards.js.map +1 -1
  795. package/out/zero-cache/src/types/sql.js +9 -13
  796. package/out/zero-cache/src/types/sql.js.map +1 -1
  797. package/out/zero-cache/src/types/streams.d.ts +1 -1
  798. package/out/zero-cache/src/types/streams.d.ts.map +1 -1
  799. package/out/zero-cache/src/types/streams.js +246 -245
  800. package/out/zero-cache/src/types/streams.js.map +1 -1
  801. package/out/zero-cache/src/types/strings.js +14 -11
  802. package/out/zero-cache/src/types/strings.js.map +1 -1
  803. package/out/zero-cache/src/types/subscription.d.ts +16 -1
  804. package/out/zero-cache/src/types/subscription.d.ts.map +1 -1
  805. package/out/zero-cache/src/types/subscription.js +202 -225
  806. package/out/zero-cache/src/types/subscription.js.map +1 -1
  807. package/out/zero-cache/src/types/url-params.js +35 -30
  808. package/out/zero-cache/src/types/url-params.js.map +1 -1
  809. package/out/zero-cache/src/types/websocket-handoff.d.ts +5 -4
  810. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  811. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  812. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  813. package/out/zero-cache/src/types/ws.js +56 -59
  814. package/out/zero-cache/src/types/ws.js.map +1 -1
  815. package/out/zero-cache/src/workers/connect-params.js +44 -40
  816. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  817. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  818. package/out/zero-cache/src/workers/connection.js +282 -243
  819. package/out/zero-cache/src/workers/connection.js.map +1 -1
  820. package/out/zero-cache/src/workers/mutator.js +24 -0
  821. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  822. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  823. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  824. package/out/zero-cache/src/workers/replicator.js +103 -106
  825. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  826. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  827. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  828. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  829. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  830. package/out/zero-cache/src/workers/syncer.js +192 -171
  831. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  832. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  833. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  834. package/out/zero-client/src/client/bindings.d.ts +43 -0
  835. package/out/zero-client/src/client/bindings.d.ts.map +1 -0
  836. package/out/zero-client/src/client/bindings.js +33 -0
  837. package/out/zero-client/src/client/bindings.js.map +1 -0
  838. package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
  839. package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
  840. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  841. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  842. package/out/zero-client/src/client/connection-manager.d.ts +36 -40
  843. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  844. package/out/zero-client/src/client/connection-manager.js +310 -0
  845. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  846. package/out/zero-client/src/client/connection-status-enum.d.ts +2 -0
  847. package/out/zero-client/src/client/connection-status-enum.d.ts.map +1 -1
  848. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  849. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  850. package/out/zero-client/src/client/connection.d.ts +57 -6
  851. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  852. package/out/zero-client/src/client/connection.js +103 -0
  853. package/out/zero-client/src/client/connection.js.map +1 -0
  854. package/out/zero-client/src/client/context.d.ts +9 -10
  855. package/out/zero-client/src/client/context.d.ts.map +1 -1
  856. package/out/zero-client/src/client/context.js +104 -0
  857. package/out/zero-client/src/client/context.js.map +1 -0
  858. package/out/zero-client/src/client/crud.d.ts +8 -6
  859. package/out/zero-client/src/client/crud.d.ts.map +1 -1
  860. package/out/zero-client/src/client/crud.js +225 -0
  861. package/out/zero-client/src/client/crud.js.map +1 -0
  862. package/out/zero-client/src/client/custom.d.ts +48 -25
  863. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  864. package/out/zero-client/src/client/custom.js +128 -0
  865. package/out/zero-client/src/client/custom.js.map +1 -0
  866. package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
  867. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  868. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  869. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  870. package/out/zero-client/src/client/enable-analytics.js +18 -0
  871. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  872. package/out/zero-client/src/client/error.d.ts +51 -166
  873. package/out/zero-client/src/client/error.d.ts.map +1 -1
  874. package/out/zero-client/src/client/error.js +148 -0
  875. package/out/zero-client/src/client/error.js.map +1 -0
  876. package/out/zero-client/src/client/http-string.js +11 -0
  877. package/out/zero-client/src/client/http-string.js.map +1 -0
  878. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  879. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  880. package/out/zero-client/src/client/inspector/client.js +28 -0
  881. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  882. package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
  883. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  884. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  885. package/out/zero-client/src/client/inspector/inspector.d.ts +8 -3
  886. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  887. package/out/zero-client/src/client/inspector/inspector.js +54 -0
  888. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  889. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
  890. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  891. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  892. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  893. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  894. package/out/zero-client/src/client/inspector/query.js +82 -0
  895. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  896. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  897. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  898. package/out/zero-client/src/client/ivm-branch.js +149 -0
  899. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  900. package/out/zero-client/src/client/keys.js +45 -0
  901. package/out/zero-client/src/client/keys.js.map +1 -0
  902. package/out/zero-client/src/client/log-options.js +60 -0
  903. package/out/zero-client/src/client/log-options.js.map +1 -0
  904. package/out/zero-client/src/client/make-mutate-property.d.ts +43 -0
  905. package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
  906. package/out/zero-client/src/client/make-mutate-property.js +38 -0
  907. package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
  908. package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
  909. package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
  910. package/out/zero-client/src/client/make-replicache-mutators.js +103 -0
  911. package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
  912. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  913. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  914. package/out/zero-client/src/client/metrics.d.ts +2 -2
  915. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  916. package/out/zero-client/src/client/metrics.js +249 -0
  917. package/out/zero-client/src/client/metrics.js.map +1 -0
  918. package/out/zero-client/src/client/mutation-tracker.d.ts +12 -4
  919. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  920. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  921. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  922. package/out/zero-client/src/client/mutator-proxy.d.ts +15 -0
  923. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
  924. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  925. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  926. package/out/zero-client/src/client/options.d.ts +77 -24
  927. package/out/zero-client/src/client/options.d.ts.map +1 -1
  928. package/out/zero-client/src/client/options.js +11 -0
  929. package/out/zero-client/src/client/options.js.map +1 -0
  930. package/out/zero-client/src/client/query-manager.d.ts +9 -2
  931. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  932. package/out/zero-client/src/client/query-manager.js +377 -0
  933. package/out/zero-client/src/client/query-manager.js.map +1 -0
  934. package/out/zero-client/src/client/reload-error-handler.d.ts +4 -4
  935. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  936. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  937. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  938. package/out/zero-client/src/client/server-option.js +64 -0
  939. package/out/zero-client/src/client/server-option.js.map +1 -0
  940. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  941. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  942. package/out/zero-client/src/client/version.js +5 -0
  943. package/out/zero-client/src/client/version.js.map +1 -0
  944. package/out/zero-client/src/client/zero-poke-handler.d.ts +4 -4
  945. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  946. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  947. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  948. package/out/zero-client/src/client/zero-rep.d.ts +5 -2
  949. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  950. package/out/zero-client/src/client/zero-rep.js +72 -0
  951. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  952. package/out/zero-client/src/client/zero.d.ts +104 -26
  953. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  954. package/out/zero-client/src/client/zero.js +1759 -0
  955. package/out/zero-client/src/client/zero.js.map +1 -0
  956. package/out/zero-client/src/mod.d.ts +24 -18
  957. package/out/zero-client/src/mod.d.ts.map +1 -1
  958. package/out/zero-client/src/types/query-result.d.ts +24 -0
  959. package/out/zero-client/src/types/query-result.d.ts.map +1 -0
  960. package/out/zero-client/src/util/nanoid.js +21 -0
  961. package/out/zero-client/src/util/nanoid.js.map +1 -0
  962. package/out/zero-client/src/util/socket.js +7 -0
  963. package/out/zero-client/src/util/socket.js.map +1 -0
  964. package/out/zero-protocol/src/analyze-query-result.d.ts +237 -0
  965. package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
  966. package/out/zero-protocol/src/analyze-query-result.js +159 -24
  967. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  968. package/out/zero-protocol/src/application-error.d.ts +27 -0
  969. package/out/zero-protocol/src/application-error.d.ts.map +1 -0
  970. package/out/zero-protocol/src/application-error.js +38 -0
  971. package/out/zero-protocol/src/application-error.js.map +1 -0
  972. package/out/zero-protocol/src/ast.d.ts +2 -2
  973. package/out/zero-protocol/src/ast.js +296 -277
  974. package/out/zero-protocol/src/ast.js.map +1 -1
  975. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  976. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  977. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  978. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  979. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  980. package/out/zero-protocol/src/client-schema.js +40 -26
  981. package/out/zero-protocol/src/client-schema.js.map +1 -1
  982. package/out/zero-protocol/src/close-connection.js +11 -18
  983. package/out/zero-protocol/src/close-connection.js.map +1 -1
  984. package/out/zero-protocol/src/connect.d.ts +4 -4
  985. package/out/zero-protocol/src/connect.d.ts.map +1 -1
  986. package/out/zero-protocol/src/connect.js +50 -51
  987. package/out/zero-protocol/src/connect.js.map +1 -1
  988. package/out/zero-protocol/src/custom-queries.d.ts +31 -99
  989. package/out/zero-protocol/src/custom-queries.d.ts.map +1 -1
  990. package/out/zero-protocol/src/custom-queries.js +61 -54
  991. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  992. package/out/zero-protocol/src/data.js +9 -4
  993. package/out/zero-protocol/src/data.js.map +1 -1
  994. package/out/zero-protocol/src/delete-clients.js +16 -9
  995. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  996. package/out/zero-protocol/src/down.d.ts +113 -15
  997. package/out/zero-protocol/src/down.d.ts.map +1 -1
  998. package/out/zero-protocol/src/down.js +20 -4
  999. package/out/zero-protocol/src/down.js.map +1 -1
  1000. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  1001. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  1002. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  1003. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  1004. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  1005. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  1006. package/out/zero-protocol/src/error.d.ts +59 -17
  1007. package/out/zero-protocol/src/error.d.ts.map +1 -1
  1008. package/out/zero-protocol/src/error.js +151 -82
  1009. package/out/zero-protocol/src/error.js.map +1 -1
  1010. package/out/zero-protocol/src/inspect-down.d.ts +318 -18
  1011. package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
  1012. package/out/zero-protocol/src/inspect-down.js +72 -54
  1013. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  1014. package/out/zero-protocol/src/inspect-up.d.ts +10 -6
  1015. package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
  1016. package/out/zero-protocol/src/inspect-up.js +39 -26
  1017. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  1018. package/out/zero-protocol/src/mutation-id.js +9 -5
  1019. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  1020. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  1021. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  1022. package/out/zero-protocol/src/mutations-patch.d.ts +3 -0
  1023. package/out/zero-protocol/src/mutations-patch.d.ts.map +1 -1
  1024. package/out/zero-protocol/src/mutations-patch.js +16 -17
  1025. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  1026. package/out/zero-protocol/src/ping.js +9 -4
  1027. package/out/zero-protocol/src/ping.js.map +1 -1
  1028. package/out/zero-protocol/src/poke.d.ts +2 -0
  1029. package/out/zero-protocol/src/poke.d.ts.map +1 -1
  1030. package/out/zero-protocol/src/poke.js +55 -72
  1031. package/out/zero-protocol/src/poke.js.map +1 -1
  1032. package/out/zero-protocol/src/pong.js +9 -4
  1033. package/out/zero-protocol/src/pong.js.map +1 -1
  1034. package/out/zero-protocol/src/primary-key.js +19 -5
  1035. package/out/zero-protocol/src/primary-key.js.map +1 -1
  1036. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  1037. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  1038. package/out/zero-protocol/src/protocol-version.js +7 -57
  1039. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  1040. package/out/zero-protocol/src/pull.js +26 -19
  1041. package/out/zero-protocol/src/pull.js.map +1 -1
  1042. package/out/zero-protocol/src/push.d.ts +11 -4
  1043. package/out/zero-protocol/src/push.d.ts.map +1 -1
  1044. package/out/zero-protocol/src/push.js +179 -175
  1045. package/out/zero-protocol/src/push.js.map +1 -1
  1046. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  1047. package/out/zero-protocol/src/queries-patch.js +29 -22
  1048. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  1049. package/out/zero-protocol/src/query-hash.js +18 -14
  1050. package/out/zero-protocol/src/query-hash.js.map +1 -1
  1051. package/out/zero-protocol/src/row-patch.js +29 -20
  1052. package/out/zero-protocol/src/row-patch.js.map +1 -1
  1053. package/out/zero-protocol/src/up.d.ts +6 -5
  1054. package/out/zero-protocol/src/up.d.ts.map +1 -1
  1055. package/out/zero-protocol/src/up.js +18 -4
  1056. package/out/zero-protocol/src/up.js.map +1 -1
  1057. package/out/zero-protocol/src/version.js +9 -4
  1058. package/out/zero-protocol/src/version.js.map +1 -1
  1059. package/out/zero-react/src/components/inspector.d.ts +5 -3
  1060. package/out/zero-react/src/components/inspector.d.ts.map +1 -1
  1061. package/out/{inspector-IU2HG74I.js → zero-react/src/components/inspector.js} +4 -9
  1062. package/out/zero-react/src/components/inspector.js.map +1 -0
  1063. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  1064. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  1065. package/out/zero-react/src/components/zero-inspector.d.ts +5 -3
  1066. package/out/zero-react/src/components/zero-inspector.d.ts.map +1 -1
  1067. package/out/zero-react/src/components/zero-inspector.js +44 -0
  1068. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  1069. package/out/zero-react/src/mod.d.ts +5 -3
  1070. package/out/zero-react/src/mod.d.ts.map +1 -1
  1071. package/out/zero-react/src/use-query.d.ts +11 -28
  1072. package/out/zero-react/src/use-query.d.ts.map +1 -1
  1073. package/out/zero-react/src/use-query.js +286 -0
  1074. package/out/zero-react/src/use-query.js.map +1 -0
  1075. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  1076. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  1077. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  1078. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  1079. package/out/zero-react/src/use-zero-online.js +14 -0
  1080. package/out/zero-react/src/use-zero-online.js.map +1 -0
  1081. package/out/zero-react/src/zero-provider.d.ts +21 -7
  1082. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  1083. package/out/zero-react/src/zero-provider.js +61 -0
  1084. package/out/zero-react/src/zero-provider.js.map +1 -0
  1085. package/out/zero-schema/src/builder/relationship-builder.js +22 -19
  1086. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
  1087. package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
  1088. package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
  1089. package/out/zero-schema/src/builder/schema-builder.js +81 -71
  1090. package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
  1091. package/out/zero-schema/src/builder/table-builder.js +117 -116
  1092. package/out/zero-schema/src/builder/table-builder.js.map +1 -1
  1093. package/out/zero-schema/src/compiled-permissions.js +23 -19
  1094. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  1095. package/out/zero-schema/src/name-mapper.js +43 -38
  1096. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1097. package/out/zero-schema/src/permissions.d.ts +9 -9
  1098. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1099. package/out/{chunk-55BOUNXO.js → zero-schema/src/permissions.js} +16 -173
  1100. package/out/zero-schema/src/permissions.js.map +1 -0
  1101. package/out/zero-schema/src/schema-config.d.ts +1 -1
  1102. package/out/zero-schema/src/schema-config.d.ts.map +1 -1
  1103. package/out/zero-schema/src/schema-config.js +35 -51
  1104. package/out/zero-schema/src/schema-config.js.map +1 -1
  1105. package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
  1106. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1107. package/out/zero-server/src/adapters/drizzle.js +84 -97
  1108. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1109. package/out/zero-server/src/adapters/pg.d.ts +8 -2
  1110. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1111. package/out/zero-server/src/adapters/pg.js +54 -74
  1112. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1113. package/out/zero-server/src/adapters/postgresjs.d.ts +7 -2
  1114. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1115. package/out/zero-server/src/adapters/postgresjs.js +40 -54
  1116. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1117. package/out/zero-server/src/custom.d.ts +14 -18
  1118. package/out/zero-server/src/custom.d.ts.map +1 -1
  1119. package/out/zero-server/src/custom.js +185 -105
  1120. package/out/zero-server/src/custom.js.map +1 -1
  1121. package/out/zero-server/src/logging.js +7 -4
  1122. package/out/zero-server/src/logging.js.map +1 -1
  1123. package/out/zero-server/src/mod.d.ts +5 -4
  1124. package/out/zero-server/src/mod.d.ts.map +1 -1
  1125. package/out/zero-server/src/pg-query-executor.d.ts +11 -0
  1126. package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
  1127. package/out/zero-server/src/pg-query-executor.js +20 -0
  1128. package/out/zero-server/src/pg-query-executor.js.map +1 -0
  1129. package/out/zero-server/src/process-mutations.d.ts +11 -15
  1130. package/out/zero-server/src/process-mutations.d.ts.map +1 -1
  1131. package/out/zero-server/src/process-mutations.js +341 -163
  1132. package/out/zero-server/src/process-mutations.js.map +1 -1
  1133. package/out/zero-server/src/push-processor.d.ts +5 -3
  1134. package/out/zero-server/src/push-processor.d.ts.map +1 -1
  1135. package/out/zero-server/src/push-processor.js +48 -32
  1136. package/out/zero-server/src/push-processor.js.map +1 -1
  1137. package/out/zero-server/src/queries/process-queries.d.ts +66 -4
  1138. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1139. package/out/zero-server/src/queries/process-queries.js +101 -27
  1140. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1141. package/out/zero-server/src/schema.d.ts +2 -2
  1142. package/out/zero-server/src/schema.d.ts.map +1 -1
  1143. package/out/zero-server/src/schema.js +136 -124
  1144. package/out/zero-server/src/schema.js.map +1 -1
  1145. package/out/zero-server/src/zql-database.d.ts +9 -6
  1146. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1147. package/out/zero-server/src/zql-database.js +68 -51
  1148. package/out/zero-server/src/zql-database.js.map +1 -1
  1149. package/out/zero-solid/src/mod.d.ts +7 -0
  1150. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1151. package/out/zero-solid/src/solid-view.d.ts +3 -23
  1152. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1153. package/out/{solid.js → zero-solid/src/solid-view.js} +54 -180
  1154. package/out/zero-solid/src/solid-view.js.map +1 -0
  1155. package/out/zero-solid/src/use-query.d.ts +7 -6
  1156. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1157. package/out/zero-solid/src/use-query.js +57 -0
  1158. package/out/zero-solid/src/use-query.js.map +1 -0
  1159. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1160. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1161. package/out/zero-solid/src/use-zero-connection-state.js +17 -0
  1162. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1163. package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
  1164. package/out/zero-solid/src/use-zero-online.js +15 -0
  1165. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1166. package/out/zero-solid/src/use-zero.d.ts +24 -7
  1167. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1168. package/out/zero-solid/src/use-zero.js +70 -0
  1169. package/out/zero-solid/src/use-zero.js.map +1 -0
  1170. package/out/zero-types/src/default-types.d.ts +38 -0
  1171. package/out/zero-types/src/default-types.d.ts.map +1 -0
  1172. package/out/zero-types/src/format.js +7 -4
  1173. package/out/zero-types/src/format.js.map +1 -1
  1174. package/out/zero-types/src/name-mapper.js +43 -40
  1175. package/out/zero-types/src/name-mapper.js.map +1 -1
  1176. package/out/zero-types/src/server-schema.d.ts.map +1 -0
  1177. package/out/zql/src/builder/builder.d.ts +10 -2
  1178. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1179. package/out/zql/src/builder/builder.js +486 -427
  1180. package/out/zql/src/builder/builder.js.map +1 -1
  1181. package/out/zql/src/builder/debug-delegate.d.ts +4 -0
  1182. package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
  1183. package/out/zql/src/builder/debug-delegate.js +68 -47
  1184. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1185. package/out/zql/src/builder/filter.js +132 -138
  1186. package/out/zql/src/builder/filter.js.map +1 -1
  1187. package/out/zql/src/builder/like.js +44 -51
  1188. package/out/zql/src/builder/like.js.map +1 -1
  1189. package/out/zql/src/error.d.ts +5 -0
  1190. package/out/zql/src/error.d.ts.map +1 -1
  1191. package/out/zql/src/error.js +18 -6
  1192. package/out/zql/src/error.js.map +1 -1
  1193. package/out/zql/src/ivm/array-view.js +86 -92
  1194. package/out/zql/src/ivm/array-view.js.map +1 -1
  1195. package/out/zql/src/ivm/constraint.js +74 -127
  1196. package/out/zql/src/ivm/constraint.js.map +1 -1
  1197. package/out/zql/src/ivm/data.js +59 -85
  1198. package/out/zql/src/ivm/data.js.map +1 -1
  1199. package/out/zql/src/ivm/exists.js +236 -243
  1200. package/out/zql/src/ivm/exists.js.map +1 -1
  1201. package/out/zql/src/ivm/fan-in.js +50 -51
  1202. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1203. package/out/zql/src/ivm/fan-out.js +48 -50
  1204. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1205. package/out/zql/src/ivm/filter-operators.js +87 -87
  1206. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1207. package/out/zql/src/ivm/filter-push.js +26 -23
  1208. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1209. package/out/zql/src/ivm/filter.js +30 -32
  1210. package/out/zql/src/ivm/filter.js.map +1 -1
  1211. package/out/zql/src/ivm/flipped-join.js +343 -326
  1212. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1213. package/out/zql/src/ivm/join-utils.js +85 -79
  1214. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1215. package/out/zql/src/ivm/join.js +287 -207
  1216. package/out/zql/src/ivm/join.js.map +1 -1
  1217. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1218. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1219. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1220. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1221. package/out/zql/src/ivm/memory-source.js +471 -489
  1222. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1223. package/out/zql/src/ivm/memory-storage.js +32 -31
  1224. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1225. package/out/zql/src/ivm/operator.js +8 -9
  1226. package/out/zql/src/ivm/operator.js.map +1 -1
  1227. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1228. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1229. package/out/zql/src/ivm/skip.js +92 -106
  1230. package/out/zql/src/ivm/skip.js.map +1 -1
  1231. package/out/zql/src/ivm/source.d.ts +3 -1
  1232. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1233. package/out/zql/src/ivm/stream.js +20 -16
  1234. package/out/zql/src/ivm/stream.js.map +1 -1
  1235. package/out/zql/src/ivm/take.js +502 -456
  1236. package/out/zql/src/ivm/take.js.map +1 -1
  1237. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1238. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1239. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1240. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1241. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1242. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1243. package/out/zql/src/ivm/view.d.ts +3 -2
  1244. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1245. package/out/zql/src/mutate/custom.d.ts +26 -11
  1246. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1247. package/out/zql/src/mutate/custom.js +15 -7
  1248. package/out/zql/src/mutate/custom.js.map +1 -1
  1249. package/out/zql/src/mutate/mutator-registry.d.ts +93 -0
  1250. package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
  1251. package/out/zql/src/mutate/mutator-registry.js +93 -0
  1252. package/out/zql/src/mutate/mutator-registry.js.map +1 -0
  1253. package/out/zql/src/mutate/mutator.d.ts +79 -0
  1254. package/out/zql/src/mutate/mutator.d.ts.map +1 -0
  1255. package/out/zql/src/mutate/mutator.js +31 -0
  1256. package/out/zql/src/mutate/mutator.js.map +1 -0
  1257. package/out/zql/src/planner/planner-builder.d.ts +2 -1
  1258. package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
  1259. package/out/zql/src/planner/planner-builder.js +237 -146
  1260. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1261. package/out/zql/src/planner/planner-connection.d.ts +19 -14
  1262. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1263. package/out/zql/src/planner/planner-connection.js +205 -291
  1264. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1265. package/out/zql/src/planner/planner-constraint.js +8 -11
  1266. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1267. package/out/zql/src/planner/planner-debug.d.ts +62 -37
  1268. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1269. package/out/zql/src/planner/planner-debug.js +234 -117
  1270. package/out/zql/src/planner/planner-debug.js.map +1 -1
  1271. package/out/zql/src/planner/planner-fan-in.d.ts +5 -3
  1272. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1273. package/out/zql/src/planner/planner-fan-in.js +157 -141
  1274. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1275. package/out/zql/src/planner/planner-fan-out.d.ts +5 -3
  1276. package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
  1277. package/out/zql/src/planner/planner-fan-out.js +73 -42
  1278. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1279. package/out/zql/src/planner/planner-graph.d.ts +9 -10
  1280. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1281. package/out/zql/src/planner/planner-graph.js +323 -388
  1282. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1283. package/out/zql/src/planner/planner-join.d.ts +67 -8
  1284. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1285. package/out/zql/src/planner/planner-join.js +239 -241
  1286. package/out/zql/src/planner/planner-join.js.map +1 -1
  1287. package/out/zql/src/planner/planner-node.d.ts +35 -3
  1288. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1289. package/out/zql/src/planner/planner-node.js +8 -2
  1290. package/out/zql/src/planner/planner-node.js.map +1 -1
  1291. package/out/zql/src/planner/planner-source.d.ts +1 -1
  1292. package/out/zql/src/planner/planner-source.d.ts.map +1 -1
  1293. package/out/zql/src/planner/planner-source.js +23 -12
  1294. package/out/zql/src/planner/planner-source.js.map +1 -1
  1295. package/out/zql/src/planner/planner-terminus.d.ts +4 -3
  1296. package/out/zql/src/planner/planner-terminus.d.ts.map +1 -1
  1297. package/out/zql/src/planner/planner-terminus.js +28 -27
  1298. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1299. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1300. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1301. package/out/zql/src/query/complete-ordering.js +71 -0
  1302. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1303. package/out/zql/src/query/create-builder.d.ts +7 -0
  1304. package/out/zql/src/query/create-builder.d.ts.map +1 -0
  1305. package/out/zql/src/query/create-builder.js +44 -0
  1306. package/out/zql/src/query/create-builder.js.map +1 -0
  1307. package/out/zql/src/query/error.d.ts +4 -0
  1308. package/out/zql/src/query/error.d.ts.map +1 -0
  1309. package/out/zql/src/query/error.js +13 -0
  1310. package/out/zql/src/query/error.js.map +1 -0
  1311. package/out/zql/src/query/escape-like.js +7 -0
  1312. package/out/zql/src/query/escape-like.js.map +1 -0
  1313. package/out/zql/src/query/expression.d.ts +5 -5
  1314. package/out/zql/src/query/expression.d.ts.map +1 -1
  1315. package/out/zql/src/query/expression.js +153 -151
  1316. package/out/zql/src/query/expression.js.map +1 -1
  1317. package/out/zql/src/query/measure-push-operator.js +42 -35
  1318. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1319. package/out/zql/src/query/metrics-delegate.js +9 -5
  1320. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1321. package/out/zql/src/query/named.d.ts +21 -12
  1322. package/out/zql/src/query/named.d.ts.map +1 -1
  1323. package/out/zql/src/query/named.js +47 -57
  1324. package/out/zql/src/query/named.js.map +1 -1
  1325. package/out/zql/src/query/query-delegate-base.d.ts +114 -0
  1326. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
  1327. package/out/zql/src/query/query-delegate-base.js +120 -0
  1328. package/out/zql/src/query/query-delegate-base.js.map +1 -0
  1329. package/out/zql/src/query/query-delegate.d.ts +27 -4
  1330. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1331. package/out/zql/src/query/query-impl.d.ts +28 -49
  1332. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1333. package/out/zql/src/query/query-impl.js +514 -453
  1334. package/out/zql/src/query/query-impl.js.map +1 -1
  1335. package/out/zql/src/query/query-internals.d.ts +68 -0
  1336. package/out/zql/src/query/query-internals.d.ts.map +1 -0
  1337. package/out/zql/src/query/query-internals.js +11 -0
  1338. package/out/zql/src/query/query-internals.js.map +1 -0
  1339. package/out/zql/src/query/query-registry.d.ts +163 -0
  1340. package/out/zql/src/query/query-registry.d.ts.map +1 -0
  1341. package/out/zql/src/query/query-registry.js +123 -0
  1342. package/out/zql/src/query/query-registry.js.map +1 -0
  1343. package/out/zql/src/query/query.d.ts +54 -250
  1344. package/out/zql/src/query/query.d.ts.map +1 -1
  1345. package/out/zql/src/query/schema-query.d.ts +6 -0
  1346. package/out/zql/src/query/schema-query.d.ts.map +1 -0
  1347. package/out/zql/src/query/static-query.d.ts +6 -15
  1348. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1349. package/out/zql/src/query/static-query.js +44 -31
  1350. package/out/zql/src/query/static-query.js.map +1 -1
  1351. package/out/zql/src/query/ttl.js +69 -62
  1352. package/out/zql/src/query/ttl.js.map +1 -1
  1353. package/out/zql/src/query/validate-input.d.ts +15 -0
  1354. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1355. package/out/zql/src/query/validate-input.js +24 -0
  1356. package/out/zql/src/query/validate-input.js.map +1 -0
  1357. package/out/zqlite/src/database-storage.d.ts +1 -1
  1358. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1359. package/out/zqlite/src/database-storage.js +99 -102
  1360. package/out/zqlite/src/database-storage.js.map +1 -1
  1361. package/out/zqlite/src/db.d.ts +2 -1
  1362. package/out/zqlite/src/db.d.ts.map +1 -1
  1363. package/out/zqlite/src/db.js +241 -192
  1364. package/out/zqlite/src/db.js.map +1 -1
  1365. package/out/zqlite/src/explain-queries.js +13 -16
  1366. package/out/zqlite/src/explain-queries.js.map +1 -1
  1367. package/out/zqlite/src/internal/sql.js +15 -10
  1368. package/out/zqlite/src/internal/sql.js.map +1 -1
  1369. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1370. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1371. package/out/zqlite/src/query-builder.js +172 -143
  1372. package/out/zqlite/src/query-builder.js.map +1 -1
  1373. package/out/zqlite/src/query-delegate.d.ts +5 -19
  1374. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1375. package/out/zqlite/src/query-delegate.js +56 -70
  1376. package/out/zqlite/src/query-delegate.js.map +1 -1
  1377. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
  1378. package/out/zqlite/src/sqlite-cost-model.js +96 -120
  1379. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1380. package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
  1381. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
  1382. package/out/zqlite/src/sqlite-stat-fanout.js +301 -0
  1383. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  1384. package/out/zqlite/src/table-source.d.ts +9 -4
  1385. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1386. package/out/zqlite/src/table-source.js +424 -311
  1387. package/out/zqlite/src/table-source.js.map +1 -1
  1388. package/package.json +27 -27
  1389. package/out/chunk-424PT5DM.js +0 -23
  1390. package/out/chunk-424PT5DM.js.map +0 -7
  1391. package/out/chunk-55BOUNXO.js.map +0 -7
  1392. package/out/chunk-AFADJQ2O.js +0 -1
  1393. package/out/chunk-AFADJQ2O.js.map +0 -7
  1394. package/out/chunk-AIPM77UE.js +0 -18139
  1395. package/out/chunk-AIPM77UE.js.map +0 -7
  1396. package/out/chunk-ASRS2LFV.js.map +0 -7
  1397. package/out/chunk-ECUMGQGC.js.map +0 -7
  1398. package/out/chunk-EZM3XBAB.js.map +0 -7
  1399. package/out/chunk-TJFNGO7E.js +0 -4126
  1400. package/out/chunk-TJFNGO7E.js.map +0 -7
  1401. package/out/chunk-VZOYWIRW.js.map +0 -7
  1402. package/out/chunk-ZZXMKAAG.js.map +0 -7
  1403. package/out/expo-sqlite.js +0 -11
  1404. package/out/expo-sqlite.js.map +0 -7
  1405. package/out/inspector-IU2HG74I.js.map +0 -7
  1406. package/out/lazy-inspector-OXIFYSSQ.js +0 -574
  1407. package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
  1408. package/out/op-sqlite.js.map +0 -7
  1409. package/out/react-native.js +0 -25
  1410. package/out/react-native.js.map +0 -7
  1411. package/out/react.js +0 -460
  1412. package/out/react.js.map +0 -7
  1413. package/out/shared/src/enum.js +0 -2
  1414. package/out/shared/src/enum.js.map +0 -1
  1415. package/out/shared/src/expand.js +0 -2
  1416. package/out/shared/src/expand.js.map +0 -1
  1417. package/out/shared/src/immutable.js +0 -2
  1418. package/out/shared/src/immutable.js.map +0 -1
  1419. package/out/shared/src/types.js +0 -2
  1420. package/out/shared/src/types.js.map +0 -1
  1421. package/out/shared/src/writable.js +0 -2
  1422. package/out/shared/src/writable.js.map +0 -1
  1423. package/out/solid.js.map +0 -7
  1424. package/out/sqlite.js +0 -15
  1425. package/out/sqlite.js.map +0 -7
  1426. package/out/zero/package.json +0 -193
  1427. package/out/zero/src/server/change-streamer.js +0 -2
  1428. package/out/zero/src/server/change-streamer.js.map +0 -1
  1429. package/out/zero/src/server/main.js +0 -2
  1430. package/out/zero/src/server/main.js.map +0 -1
  1431. package/out/zero/src/server/reaper.js +0 -2
  1432. package/out/zero/src/server/reaper.js.map +0 -1
  1433. package/out/zero/src/server/replicator.js +0 -2
  1434. package/out/zero/src/server/replicator.js.map +0 -1
  1435. package/out/zero/src/server/runner/main.js +0 -2
  1436. package/out/zero/src/server/runner/main.js.map +0 -1
  1437. package/out/zero/src/server/syncer.js +0 -2
  1438. package/out/zero/src/server/syncer.js.map +0 -1
  1439. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1440. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1441. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1442. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1443. package/out/zero-cache/src/services/service.js +0 -2
  1444. package/out/zero-cache/src/services/service.js.map +0 -1
  1445. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1446. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1447. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1448. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1449. package/out/zero-cache/src/types/satisfies.js +0 -2
  1450. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1451. package/out/zero-client/src/client/on-error.d.ts +0 -15
  1452. package/out/zero-client/src/client/on-error.d.ts.map +0 -1
  1453. package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
  1454. package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
  1455. package/out/zero-events/src/index.js +0 -2
  1456. package/out/zero-events/src/index.js.map +0 -1
  1457. package/out/zero-events/src/json.js +0 -2
  1458. package/out/zero-events/src/json.js.map +0 -1
  1459. package/out/zero-events/src/status.js +0 -3
  1460. package/out/zero-events/src/status.js.map +0 -1
  1461. package/out/zero-pg/src/mod.js +0 -6
  1462. package/out/zero-pg/src/mod.js.map +0 -1
  1463. package/out/zero-protocol/src/error-kind.js +0 -3
  1464. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1465. package/out/zero-protocol/src/error-origin.js +0 -3
  1466. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1467. package/out/zero-protocol/src/error-reason.js +0 -3
  1468. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1469. package/out/zero-schema/src/server-schema.d.ts.map +0 -1
  1470. package/out/zero-schema/src/server-schema.js +0 -2
  1471. package/out/zero-schema/src/server-schema.js.map +0 -1
  1472. package/out/zero-schema/src/table-schema.js +0 -7
  1473. package/out/zero-schema/src/table-schema.js.map +0 -1
  1474. package/out/zero-server/src/mod.js +0 -8
  1475. package/out/zero-server/src/mod.js.map +0 -1
  1476. package/out/zero-server/src/query.d.ts +0 -22
  1477. package/out/zero-server/src/query.d.ts.map +0 -1
  1478. package/out/zero-server/src/query.js +0 -61
  1479. package/out/zero-server/src/query.js.map +0 -1
  1480. package/out/zero-types/src/schema-value.js +0 -2
  1481. package/out/zero-types/src/schema-value.js.map +0 -1
  1482. package/out/zero-types/src/schema.js +0 -2
  1483. package/out/zero-types/src/schema.js.map +0 -1
  1484. package/out/zero.js +0 -79
  1485. package/out/zero.js.map +0 -7
  1486. package/out/zql/src/ivm/change.js +0 -2
  1487. package/out/zql/src/ivm/change.js.map +0 -1
  1488. package/out/zql/src/ivm/default-format.js +0 -2
  1489. package/out/zql/src/ivm/default-format.js.map +0 -1
  1490. package/out/zql/src/ivm/schema.js +0 -2
  1491. package/out/zql/src/ivm/schema.js.map +0 -1
  1492. package/out/zql/src/ivm/source.js +0 -2
  1493. package/out/zql/src/ivm/source.js.map +0 -1
  1494. package/out/zql/src/ivm/view.js +0 -2
  1495. package/out/zql/src/ivm/view.js.map +0 -1
  1496. package/out/zql/src/query/query-delegate.js +0 -2
  1497. package/out/zql/src/query/query-delegate.js.map +0 -1
  1498. package/out/zql/src/query/query.js +0 -9
  1499. package/out/zql/src/query/query.js.map +0 -1
  1500. package/out/zql/src/query/typed-view.js +0 -2
  1501. package/out/zql/src/query/typed-view.js.map +0 -1
  1502. package/out/zqlite/src/mod.js +0 -5
  1503. package/out/zqlite/src/mod.js.map +0 -1
  1504. /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
@@ -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":"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"}
@@ -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;"}