@rocicorp/zero 0.25.0-canary.6 → 0.25.0-canary.8

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 (1367) hide show
  1. package/out/analyze-query/src/bin-analyze.js +258 -236
  2. package/out/analyze-query/src/bin-analyze.js.map +1 -1
  3. package/out/analyze-query/src/bin-transform.js +31 -23
  4. package/out/analyze-query/src/bin-transform.js.map +1 -1
  5. package/out/analyze-query/src/explain-queries.js +13 -16
  6. package/out/analyze-query/src/explain-queries.js.map +1 -1
  7. package/out/analyze-query/src/run-ast.d.ts +3 -2
  8. package/out/analyze-query/src/run-ast.d.ts.map +1 -1
  9. package/out/analyze-query/src/run-ast.js +79 -73
  10. package/out/analyze-query/src/run-ast.js.map +1 -1
  11. package/out/ast-to-zql/src/ast-to-zql.js +146 -180
  12. package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
  13. package/out/ast-to-zql/src/bin.js +51 -54
  14. package/out/ast-to-zql/src/bin.js.map +1 -1
  15. package/out/ast-to-zql/src/format.js +15 -14
  16. package/out/ast-to-zql/src/format.js.map +1 -1
  17. package/out/datadog/src/datadog-log-sink.js +223 -0
  18. package/out/datadog/src/datadog-log-sink.js.map +1 -0
  19. package/out/otel/src/enabled.js +15 -15
  20. package/out/otel/src/enabled.js.map +1 -1
  21. package/out/otel/src/log-options.js +36 -31
  22. package/out/otel/src/log-options.js.map +1 -1
  23. package/out/otel/src/maybe-time.js +14 -11
  24. package/out/otel/src/maybe-time.js.map +1 -1
  25. package/out/otel/src/span.js +30 -27
  26. package/out/otel/src/span.js.map +1 -1
  27. package/out/otel/src/test-log-config.js +10 -7
  28. package/out/otel/src/test-log-config.js.map +1 -1
  29. package/out/otel/src/version.js +5 -2
  30. package/out/otel/src/version.js.map +1 -1
  31. package/out/replicache/src/async-iterable-to-array.js +11 -0
  32. package/out/replicache/src/async-iterable-to-array.js.map +1 -0
  33. package/out/replicache/src/bg-interval.js +38 -0
  34. package/out/replicache/src/bg-interval.js.map +1 -0
  35. package/out/replicache/src/btree/diff.js +8 -0
  36. package/out/replicache/src/btree/diff.js.map +1 -0
  37. package/out/replicache/src/btree/node.js +400 -0
  38. package/out/replicache/src/btree/node.js.map +1 -0
  39. package/out/replicache/src/btree/read.d.ts +3 -2
  40. package/out/replicache/src/btree/read.d.ts.map +1 -1
  41. package/out/replicache/src/btree/read.js +266 -0
  42. package/out/replicache/src/btree/read.js.map +1 -0
  43. package/out/replicache/src/btree/splice.js +83 -0
  44. package/out/replicache/src/btree/splice.js.map +1 -0
  45. package/out/replicache/src/btree/write.d.ts +1 -1
  46. package/out/replicache/src/btree/write.d.ts.map +1 -1
  47. package/out/replicache/src/btree/write.js +163 -0
  48. package/out/replicache/src/btree/write.js.map +1 -0
  49. package/out/replicache/src/call-default-fetch.js +34 -0
  50. package/out/replicache/src/call-default-fetch.js.map +1 -0
  51. package/out/replicache/src/connection-loop-delegates.js +34 -0
  52. package/out/replicache/src/connection-loop-delegates.js.map +1 -0
  53. package/out/replicache/src/connection-loop.js +251 -0
  54. package/out/replicache/src/connection-loop.js.map +1 -0
  55. package/out/replicache/src/cookies.js +40 -0
  56. package/out/replicache/src/cookies.js.map +1 -0
  57. package/out/replicache/src/dag/chunk.js +59 -0
  58. package/out/replicache/src/dag/chunk.js.map +1 -0
  59. package/out/replicache/src/dag/gc.js +117 -0
  60. package/out/replicache/src/dag/gc.js.map +1 -0
  61. package/out/replicache/src/dag/key.js +20 -0
  62. package/out/replicache/src/dag/key.js.map +1 -0
  63. package/out/replicache/src/dag/lazy-store.d.ts +2 -1
  64. package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
  65. package/out/replicache/src/dag/lazy-store.js +515 -0
  66. package/out/replicache/src/dag/lazy-store.js.map +1 -0
  67. package/out/replicache/src/dag/store-impl.js +183 -0
  68. package/out/replicache/src/dag/store-impl.js.map +1 -0
  69. package/out/replicache/src/dag/store.js +27 -0
  70. package/out/replicache/src/dag/store.js.map +1 -0
  71. package/out/replicache/src/dag/visitor.js +22 -0
  72. package/out/replicache/src/dag/visitor.js.map +1 -0
  73. package/out/replicache/src/db/commit.js +358 -0
  74. package/out/replicache/src/db/commit.js.map +1 -0
  75. package/out/replicache/src/db/index-operation-enum.js +7 -0
  76. package/out/replicache/src/db/index-operation-enum.js.map +1 -0
  77. package/out/replicache/src/db/index.js +134 -0
  78. package/out/replicache/src/db/index.js.map +1 -0
  79. package/out/replicache/src/db/meta-type-enum.js +7 -0
  80. package/out/replicache/src/db/meta-type-enum.js.map +1 -0
  81. package/out/replicache/src/db/read.d.ts +3 -2
  82. package/out/replicache/src/db/read.d.ts.map +1 -1
  83. package/out/replicache/src/db/read.js +72 -0
  84. package/out/replicache/src/db/read.js.map +1 -0
  85. package/out/replicache/src/db/rebase.d.ts +2 -2
  86. package/out/replicache/src/db/rebase.d.ts.map +1 -1
  87. package/out/replicache/src/db/rebase.js +85 -0
  88. package/out/replicache/src/db/rebase.js.map +1 -0
  89. package/out/replicache/src/db/write.d.ts +2 -1
  90. package/out/replicache/src/db/write.d.ts.map +1 -1
  91. package/out/replicache/src/db/write.js +296 -0
  92. package/out/replicache/src/db/write.js.map +1 -0
  93. package/out/replicache/src/deleted-clients.js +104 -0
  94. package/out/replicache/src/deleted-clients.js.map +1 -0
  95. package/out/replicache/src/error-responses.js +34 -0
  96. package/out/replicache/src/error-responses.js.map +1 -0
  97. package/out/replicache/src/format-version-enum.js +11 -0
  98. package/out/replicache/src/format-version-enum.js.map +1 -0
  99. package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
  100. package/out/replicache/src/frozen-json.js.map +1 -0
  101. package/out/replicache/src/get-default-puller.js +61 -0
  102. package/out/replicache/src/get-default-puller.js.map +1 -0
  103. package/out/replicache/src/get-default-pusher.js +39 -0
  104. package/out/replicache/src/get-default-pusher.js.map +1 -0
  105. package/out/replicache/src/get-kv-store-provider.js +23 -0
  106. package/out/replicache/src/get-kv-store-provider.js.map +1 -0
  107. package/out/replicache/src/hash.js +38 -0
  108. package/out/replicache/src/hash.js.map +1 -0
  109. package/out/replicache/src/http-request-info.js +10 -0
  110. package/out/replicache/src/http-request-info.js.map +1 -0
  111. package/out/replicache/src/http-status-unauthorized.js +5 -0
  112. package/out/replicache/src/http-status-unauthorized.js.map +1 -0
  113. package/out/replicache/src/index-defs.js +32 -0
  114. package/out/replicache/src/index-defs.js.map +1 -0
  115. package/out/replicache/src/invoke-kind-enum.js +7 -0
  116. package/out/replicache/src/invoke-kind-enum.js.map +1 -0
  117. package/out/{chunk-HCZQVP5R.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
  118. package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
  119. package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
  120. package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
  121. package/out/replicache/src/kv/idb-store.js +183 -0
  122. package/out/replicache/src/kv/idb-store.js.map +1 -0
  123. package/out/replicache/src/kv/mem-store.js +51 -0
  124. package/out/replicache/src/kv/mem-store.js.map +1 -0
  125. package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
  126. package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
  127. package/out/replicache/src/kv/op-sqlite/types.js +6 -0
  128. package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
  129. package/out/replicache/src/kv/read-impl.js +27 -0
  130. package/out/replicache/src/kv/read-impl.js.map +1 -0
  131. package/out/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
  132. package/out/replicache/src/kv/sqlite-store.js.map +1 -0
  133. package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
  134. package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
  135. package/out/replicache/src/kv/write-impl-base.js +57 -0
  136. package/out/replicache/src/kv/write-impl-base.js.map +1 -0
  137. package/out/replicache/src/kv/write-impl.js +30 -0
  138. package/out/replicache/src/kv/write-impl.js.map +1 -0
  139. package/out/replicache/src/lazy.js +13 -0
  140. package/out/replicache/src/lazy.js.map +1 -0
  141. package/out/replicache/src/log-options.js +9 -0
  142. package/out/replicache/src/log-options.js.map +1 -0
  143. package/out/replicache/src/make-idb-name.js +13 -0
  144. package/out/replicache/src/make-idb-name.js.map +1 -0
  145. package/out/replicache/src/new-client-channel.js +51 -0
  146. package/out/replicache/src/new-client-channel.js.map +1 -0
  147. package/out/replicache/src/on-persist-channel.js +36 -0
  148. package/out/replicache/src/on-persist-channel.js.map +1 -0
  149. package/out/replicache/src/patch-operation.js +42 -0
  150. package/out/replicache/src/patch-operation.js.map +1 -0
  151. package/out/replicache/src/pending-mutations.js +16 -0
  152. package/out/replicache/src/pending-mutations.js.map +1 -0
  153. package/out/replicache/src/persist/client-gc.js +58 -0
  154. package/out/replicache/src/persist/client-gc.js.map +1 -0
  155. package/out/replicache/src/persist/client-group-gc.js +43 -0
  156. package/out/replicache/src/persist/client-group-gc.js.map +1 -0
  157. package/out/replicache/src/persist/client-groups.js +184 -0
  158. package/out/replicache/src/persist/client-groups.js.map +1 -0
  159. package/out/replicache/src/persist/clients.d.ts +3 -2
  160. package/out/replicache/src/persist/clients.d.ts.map +1 -1
  161. package/out/replicache/src/persist/clients.js +353 -0
  162. package/out/replicache/src/persist/clients.js.map +1 -0
  163. package/out/replicache/src/persist/collect-idb-databases.js +188 -0
  164. package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
  165. package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
  166. package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
  167. package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
  168. package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
  169. package/out/replicache/src/persist/heartbeat.js +48 -0
  170. package/out/replicache/src/persist/heartbeat.js.map +1 -0
  171. package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
  172. package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
  173. package/out/replicache/src/persist/idb-databases-store.js +92 -0
  174. package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
  175. package/out/replicache/src/persist/make-client-id.js +12 -0
  176. package/out/replicache/src/persist/make-client-id.js.map +1 -0
  177. package/out/replicache/src/persist/persist.d.ts +2 -2
  178. package/out/replicache/src/persist/persist.d.ts.map +1 -1
  179. package/out/replicache/src/persist/persist.js +183 -0
  180. package/out/replicache/src/persist/persist.js.map +1 -0
  181. package/out/replicache/src/persist/refresh.d.ts +4 -3
  182. package/out/replicache/src/persist/refresh.d.ts.map +1 -1
  183. package/out/replicache/src/persist/refresh.js +198 -0
  184. package/out/replicache/src/persist/refresh.js.map +1 -0
  185. package/out/replicache/src/process-scheduler.js +96 -0
  186. package/out/replicache/src/process-scheduler.js.map +1 -0
  187. package/out/replicache/src/pusher.js +33 -0
  188. package/out/replicache/src/pusher.js.map +1 -0
  189. package/out/replicache/src/replicache-impl.d.ts +1 -1
  190. package/out/replicache/src/replicache-impl.d.ts.map +1 -1
  191. package/out/replicache/src/replicache-impl.js +1200 -0
  192. package/out/replicache/src/replicache-impl.js.map +1 -0
  193. package/out/replicache/src/report-error.js +6 -0
  194. package/out/replicache/src/report-error.js.map +1 -0
  195. package/out/replicache/src/request-idle.js +13 -0
  196. package/out/replicache/src/request-idle.js.map +1 -0
  197. package/out/replicache/src/scan-iterator.js +146 -0
  198. package/out/replicache/src/scan-iterator.js.map +1 -0
  199. package/out/replicache/src/scan-options.js +45 -0
  200. package/out/replicache/src/scan-options.js.map +1 -0
  201. package/out/replicache/src/set-interval-with-signal.js +12 -0
  202. package/out/replicache/src/set-interval-with-signal.js.map +1 -0
  203. package/out/replicache/src/subscriptions.js +355 -0
  204. package/out/replicache/src/subscriptions.js.map +1 -0
  205. package/out/replicache/src/sync/diff.d.ts +3 -2
  206. package/out/replicache/src/sync/diff.d.ts.map +1 -1
  207. package/out/replicache/src/sync/diff.js +72 -0
  208. package/out/replicache/src/sync/diff.js.map +1 -0
  209. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
  210. package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
  211. package/out/replicache/src/sync/ids.js +9 -0
  212. package/out/replicache/src/sync/ids.js.map +1 -0
  213. package/out/replicache/src/sync/patch.js +49 -0
  214. package/out/replicache/src/sync/patch.js.map +1 -0
  215. package/out/replicache/src/sync/pull-error.js +16 -0
  216. package/out/replicache/src/sync/pull-error.js.map +1 -0
  217. package/out/replicache/src/sync/pull.d.ts +3 -2
  218. package/out/replicache/src/sync/pull.d.ts.map +1 -1
  219. package/out/replicache/src/sync/pull.js +301 -0
  220. package/out/replicache/src/sync/pull.js.map +1 -0
  221. package/out/replicache/src/sync/push.js +88 -0
  222. package/out/replicache/src/sync/push.js.map +1 -0
  223. package/out/replicache/src/sync/request-id.js +20 -0
  224. package/out/replicache/src/sync/request-id.js.map +1 -0
  225. package/out/replicache/src/sync/sync-head-name.js +5 -0
  226. package/out/replicache/src/sync/sync-head-name.js.map +1 -0
  227. package/out/replicache/src/to-error.js +10 -0
  228. package/out/replicache/src/to-error.js.map +1 -0
  229. package/out/replicache/src/transaction-closed-error.js +19 -0
  230. package/out/replicache/src/transaction-closed-error.js.map +1 -0
  231. package/out/replicache/src/transactions.js +152 -0
  232. package/out/replicache/src/transactions.js.map +1 -0
  233. package/out/replicache/src/version.js +5 -0
  234. package/out/replicache/src/version.js.map +1 -0
  235. package/out/replicache/src/with-transactions.js +28 -0
  236. package/out/replicache/src/with-transactions.js.map +1 -0
  237. package/out/shared/src/abort-error.js +6 -3
  238. package/out/shared/src/abort-error.js.map +1 -1
  239. package/out/shared/src/arrays.js +45 -43
  240. package/out/shared/src/arrays.js.map +1 -1
  241. package/out/shared/src/asserts.js +64 -68
  242. package/out/shared/src/asserts.js.map +1 -1
  243. package/out/shared/src/bigint-json.js +38 -42
  244. package/out/shared/src/bigint-json.js.map +1 -1
  245. package/out/shared/src/binary-search.js +18 -29
  246. package/out/shared/src/binary-search.js.map +1 -1
  247. package/out/shared/src/broadcast-channel.js +24 -0
  248. package/out/shared/src/broadcast-channel.js.map +1 -0
  249. package/out/shared/src/browser-env.js +25 -0
  250. package/out/shared/src/browser-env.js.map +1 -0
  251. package/out/shared/src/btree-set.js +464 -507
  252. package/out/shared/src/btree-set.js.map +1 -1
  253. package/out/shared/src/cache.js +34 -38
  254. package/out/shared/src/cache.js.map +1 -1
  255. package/out/shared/src/centroid.js +24 -24
  256. package/out/shared/src/centroid.js.map +1 -1
  257. package/out/shared/src/config.js +6 -3
  258. package/out/shared/src/config.js.map +1 -1
  259. package/out/shared/src/custom-key-map.js +58 -64
  260. package/out/shared/src/custom-key-map.js.map +1 -1
  261. package/out/shared/src/custom-key-set.js +51 -57
  262. package/out/shared/src/custom-key-set.js.map +1 -1
  263. package/out/shared/src/deep-clone.js +46 -0
  264. package/out/shared/src/deep-clone.js.map +1 -0
  265. package/out/shared/src/document-visible.js +74 -0
  266. package/out/shared/src/document-visible.js.map +1 -0
  267. package/out/shared/src/dotenv.js +5 -7
  268. package/out/shared/src/dotenv.js.map +1 -1
  269. package/out/shared/src/error.js +57 -56
  270. package/out/shared/src/error.js.map +1 -1
  271. package/out/shared/src/has-own.js +5 -3
  272. package/out/shared/src/has-own.js.map +1 -1
  273. package/out/shared/src/hash.js +15 -14
  274. package/out/shared/src/hash.js.map +1 -1
  275. package/out/shared/src/iterables.js +71 -73
  276. package/out/shared/src/iterables.js.map +1 -1
  277. package/out/shared/src/json-schema.js +30 -33
  278. package/out/shared/src/json-schema.js.map +1 -1
  279. package/out/shared/src/json.js +128 -143
  280. package/out/shared/src/json.js.map +1 -1
  281. package/out/shared/src/logging-test-utils.js +12 -19
  282. package/out/shared/src/logging-test-utils.js.map +1 -1
  283. package/out/shared/src/logging.js +83 -83
  284. package/out/shared/src/logging.js.map +1 -1
  285. package/out/shared/src/must.js +9 -7
  286. package/out/shared/src/must.js.map +1 -1
  287. package/out/shared/src/navigator.js +5 -0
  288. package/out/shared/src/navigator.js.map +1 -0
  289. package/out/shared/src/objects.js +21 -22
  290. package/out/shared/src/objects.js.map +1 -1
  291. package/out/shared/src/options.d.ts +2 -0
  292. package/out/shared/src/options.d.ts.map +1 -1
  293. package/out/shared/src/options.js +289 -318
  294. package/out/shared/src/options.js.map +1 -1
  295. package/out/shared/src/parse-big-int.js +12 -10
  296. package/out/shared/src/parse-big-int.js.map +1 -1
  297. package/out/shared/src/promise-race.js +20 -0
  298. package/out/shared/src/promise-race.js.map +1 -0
  299. package/out/shared/src/queue.js +119 -122
  300. package/out/shared/src/queue.js.map +1 -1
  301. package/out/shared/src/rand.js +8 -10
  302. package/out/shared/src/rand.js.map +1 -1
  303. package/out/shared/src/random-uint64.js +9 -0
  304. package/out/shared/src/random-uint64.js.map +1 -0
  305. package/out/shared/src/random-values.js +13 -0
  306. package/out/shared/src/random-values.js.map +1 -0
  307. package/out/shared/src/resolved-promises.js +12 -9
  308. package/out/shared/src/resolved-promises.js.map +1 -1
  309. package/out/shared/src/sentinels.js +13 -6
  310. package/out/shared/src/sentinels.js.map +1 -1
  311. package/out/shared/src/set-utils.js +63 -62
  312. package/out/shared/src/set-utils.js.map +1 -1
  313. package/out/shared/src/size-of-value.js +58 -0
  314. package/out/shared/src/size-of-value.js.map +1 -0
  315. package/out/shared/src/sleep.js +45 -53
  316. package/out/shared/src/sleep.js.map +1 -1
  317. package/out/shared/src/string-compare.js +12 -9
  318. package/out/shared/src/string-compare.js.map +1 -1
  319. package/out/shared/src/subscribable.js +34 -0
  320. package/out/shared/src/subscribable.js.map +1 -0
  321. package/out/shared/src/tdigest-schema.js +7 -7
  322. package/out/shared/src/tdigest-schema.js.map +1 -1
  323. package/out/shared/src/tdigest.js +247 -271
  324. package/out/shared/src/tdigest.js.map +1 -1
  325. package/out/shared/src/valita.js +195 -207
  326. package/out/shared/src/valita.js.map +1 -1
  327. package/out/z2s/src/compiler.d.ts.map +1 -1
  328. package/out/z2s/src/compiler.js +437 -310
  329. package/out/z2s/src/compiler.js.map +1 -1
  330. package/out/z2s/src/sql.js +186 -218
  331. package/out/z2s/src/sql.js.map +1 -1
  332. package/out/zero/package.json.js +9 -0
  333. package/out/zero/package.json.js.map +1 -0
  334. package/out/zero/src/adapters/drizzle.js +5 -2
  335. package/out/zero/src/adapters/drizzle.js.map +1 -1
  336. package/out/zero/src/adapters/pg.js +7 -2
  337. package/out/zero/src/adapters/pg.js.map +1 -1
  338. package/out/zero/src/adapters/postgresjs.js +7 -2
  339. package/out/zero/src/adapters/postgresjs.js.map +1 -1
  340. package/out/zero/src/analyze-query.js +1 -1
  341. package/out/zero/src/analyze-query.js.map +1 -1
  342. package/out/zero/src/ast-to-zql.js +1 -1
  343. package/out/zero/src/ast-to-zql.js.map +1 -1
  344. package/out/zero/src/build-schema.js +3 -5
  345. package/out/zero/src/build-schema.js.map +1 -1
  346. package/out/zero/src/change-protocol/v0.js +5 -3
  347. package/out/zero/src/change-protocol/v0.js.map +1 -1
  348. package/out/zero/src/cli.js +2 -2
  349. package/out/zero/src/cli.js.map +1 -1
  350. package/out/zero/src/deploy-permissions.js +1 -1
  351. package/out/zero/src/deploy-permissions.js.map +1 -1
  352. package/out/zero/src/expo-sqlite.js +5 -0
  353. package/out/zero/src/expo-sqlite.js.map +1 -0
  354. package/out/zero/src/op-sqlite.js +5 -0
  355. package/out/zero/src/op-sqlite.js.map +1 -0
  356. package/out/zero/src/pg.js +31 -3
  357. package/out/zero/src/pg.js.map +1 -1
  358. package/out/zero/src/react-native.js +13 -0
  359. package/out/zero/src/react-native.js.map +1 -0
  360. package/out/zero/src/react.js +17 -0
  361. package/out/zero/src/react.js.map +1 -0
  362. package/out/zero/src/server.js +27 -3
  363. package/out/zero/src/server.js.map +1 -1
  364. package/out/zero/src/solid.js +15 -0
  365. package/out/zero/src/solid.js.map +1 -0
  366. package/out/zero/src/sqlite.js +7 -0
  367. package/out/zero/src/sqlite.js.map +1 -0
  368. package/out/zero/src/transform-query.js +1 -1
  369. package/out/zero/src/transform-query.js.map +1 -1
  370. package/out/zero/src/zero-cache-dev.js +135 -124
  371. package/out/zero/src/zero-cache-dev.js.map +1 -1
  372. package/out/zero/src/zero-out.js +6 -6
  373. package/out/zero/src/zero-out.js.map +1 -1
  374. package/out/zero/src/zero.js +55 -0
  375. package/out/zero/src/zero.js.map +1 -0
  376. package/out/zero/src/zqlite.js +11 -3
  377. package/out/zero/src/zqlite.js.map +1 -1
  378. package/out/zero-cache/src/auth/jwt.js +33 -38
  379. package/out/zero-cache/src/auth/jwt.js.map +1 -1
  380. package/out/zero-cache/src/auth/load-permissions.js +61 -45
  381. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  382. package/out/zero-cache/src/auth/read-authorizer.js +79 -91
  383. package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
  384. package/out/zero-cache/src/auth/write-authorizer.d.ts +2 -2
  385. package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
  386. package/out/zero-cache/src/auth/write-authorizer.js +394 -349
  387. package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
  388. package/out/zero-cache/src/config/network.js +42 -45
  389. package/out/zero-cache/src/config/network.js.map +1 -1
  390. package/out/zero-cache/src/config/normalize.js +86 -83
  391. package/out/zero-cache/src/config/normalize.js.map +1 -1
  392. package/out/zero-cache/src/config/zero-config.js +676 -682
  393. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  394. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  395. package/out/zero-cache/src/custom/fetch.js +166 -162
  396. package/out/zero-cache/src/custom/fetch.js.map +1 -1
  397. package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
  398. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  399. package/out/zero-cache/src/custom-queries/transform-query.js +101 -106
  400. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  401. package/out/zero-cache/src/db/create.js +32 -36
  402. package/out/zero-cache/src/db/create.js.map +1 -1
  403. package/out/zero-cache/src/db/delete-lite-db.js +9 -6
  404. package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
  405. package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
  406. package/out/zero-cache/src/db/lite-tables.js +150 -174
  407. package/out/zero-cache/src/db/lite-tables.js.map +1 -1
  408. package/out/zero-cache/src/db/migration-lite.js +170 -165
  409. package/out/zero-cache/src/db/migration-lite.js.map +1 -1
  410. package/out/zero-cache/src/db/migration.js +157 -137
  411. package/out/zero-cache/src/db/migration.js.map +1 -1
  412. package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
  413. package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
  414. package/out/zero-cache/src/db/mode-enum.js +9 -3
  415. package/out/zero-cache/src/db/mode-enum.js.map +1 -1
  416. package/out/zero-cache/src/db/pg-copy.js +51 -90
  417. package/out/zero-cache/src/db/pg-copy.js.map +1 -1
  418. package/out/zero-cache/src/db/pg-to-lite.js +114 -109
  419. package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
  420. package/out/zero-cache/src/db/pg-type-parser.js +27 -39
  421. package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
  422. package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
  423. package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
  424. package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
  425. package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
  426. package/out/zero-cache/src/db/specs.d.ts +0 -6
  427. package/out/zero-cache/src/db/specs.d.ts.map +1 -1
  428. package/out/zero-cache/src/db/specs.js +66 -40
  429. package/out/zero-cache/src/db/specs.js.map +1 -1
  430. package/out/zero-cache/src/db/statements.d.ts +1 -1
  431. package/out/zero-cache/src/db/statements.d.ts.map +1 -1
  432. package/out/zero-cache/src/db/statements.js +59 -52
  433. package/out/zero-cache/src/db/statements.js.map +1 -1
  434. package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
  435. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  436. package/out/zero-cache/src/db/transaction-pool.js +375 -501
  437. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  438. package/out/zero-cache/src/db/warmup.js +25 -12
  439. package/out/zero-cache/src/db/warmup.js.map +1 -1
  440. package/out/zero-cache/src/observability/events.js +71 -82
  441. package/out/zero-cache/src/observability/events.js.map +1 -1
  442. package/out/zero-cache/src/observability/metrics.js +54 -32
  443. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  444. package/out/zero-cache/src/scripts/decommission.js +47 -43
  445. package/out/zero-cache/src/scripts/decommission.js.map +1 -1
  446. package/out/zero-cache/src/scripts/deploy-permissions.js +128 -118
  447. package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
  448. package/out/zero-cache/src/scripts/permissions.js +107 -99
  449. package/out/zero-cache/src/scripts/permissions.js.map +1 -1
  450. package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
  451. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  452. package/out/zero-cache/src/server/change-streamer.js +104 -60
  453. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  454. package/out/zero-cache/src/server/inspector-delegate.js +112 -109
  455. package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
  456. package/out/zero-cache/src/server/logging.d.ts +1 -1
  457. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  458. package/out/zero-cache/src/server/logging.js +26 -19
  459. package/out/zero-cache/src/server/logging.js.map +1 -1
  460. package/out/zero-cache/src/server/main.d.ts.map +1 -1
  461. package/out/zero-cache/src/server/main.js +137 -120
  462. package/out/zero-cache/src/server/main.js.map +1 -1
  463. package/out/zero-cache/src/server/mutator.js +19 -0
  464. package/out/zero-cache/src/server/mutator.js.map +1 -0
  465. package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
  466. package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
  467. package/out/zero-cache/src/server/otel-diag-logger.js +67 -70
  468. package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
  469. package/out/zero-cache/src/server/otel-log-sink.js +40 -41
  470. package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
  471. package/out/zero-cache/src/server/otel-start.d.ts +1 -1
  472. package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
  473. package/out/zero-cache/src/server/otel-start.js +57 -68
  474. package/out/zero-cache/src/server/otel-start.js.map +1 -1
  475. package/out/zero-cache/src/server/reaper.js +34 -26
  476. package/out/zero-cache/src/server/reaper.js.map +1 -1
  477. package/out/zero-cache/src/server/replicator.js +53 -31
  478. package/out/zero-cache/src/server/replicator.js.map +1 -1
  479. package/out/zero-cache/src/server/runner/main.js +6 -4
  480. package/out/zero-cache/src/server/runner/main.js.map +1 -1
  481. package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
  482. package/out/zero-cache/src/server/runner/run-worker.js +46 -50
  483. package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
  484. package/out/zero-cache/src/server/runner/runtime.js +33 -32
  485. package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
  486. package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
  487. package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
  488. package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
  489. package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
  490. package/out/zero-cache/src/server/syncer.js +112 -63
  491. package/out/zero-cache/src/server/syncer.js.map +1 -1
  492. package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
  493. package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
  494. package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
  495. package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
  496. package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
  497. package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
  498. package/out/zero-cache/src/server/worker-urls.js +21 -0
  499. package/out/zero-cache/src/server/worker-urls.js.map +1 -0
  500. package/out/zero-cache/src/services/analyze.d.ts +3 -4
  501. package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
  502. package/out/zero-cache/src/services/analyze.js +96 -122
  503. package/out/zero-cache/src/services/analyze.js.map +1 -1
  504. package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
  505. package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
  506. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
  507. package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
  508. package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
  509. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  510. package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
  511. package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
  512. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +1 -1
  513. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  514. package/out/zero-cache/src/services/change-source/pg/change-source.js +601 -622
  515. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  516. package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
  517. package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
  518. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
  519. package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
  520. package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
  521. package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
  522. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
  523. package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
  524. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
  525. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
  526. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
  527. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
  528. package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
  529. package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
  530. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
  531. package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
  532. package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
  533. package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
  534. package/out/zero-cache/src/services/change-source/pg/schema/published.js +67 -74
  535. package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
  536. package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
  537. package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
  538. package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
  539. package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
  540. package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
  541. package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
  542. package/out/zero-cache/src/services/change-source/protocol/current/control.js +9 -19
  543. package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
  544. package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
  545. package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
  546. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
  547. package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
  548. package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
  549. package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
  550. package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
  551. package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
  552. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
  553. package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
  554. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
  555. package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
  556. package/out/zero-cache/src/services/change-source/protocol/current.js +35 -7
  557. package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
  558. package/out/zero-cache/src/services/change-source/replica-schema.js +64 -47
  559. package/out/zero-cache/src/services/change-source/replica-schema.js.map +1 -1
  560. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  561. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  562. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +139 -157
  563. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  564. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -2
  565. package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
  566. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +178 -158
  567. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  568. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +1 -1
  569. package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
  570. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +235 -349
  571. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  572. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +5 -1
  573. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  574. package/out/zero-cache/src/services/change-streamer/change-streamer.js +24 -22
  575. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  576. package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
  577. package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
  578. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
  579. package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
  580. package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
  581. package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
  582. package/out/zero-cache/src/services/change-streamer/replica-monitor.js +40 -44
  583. package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
  584. package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
  585. package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
  586. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
  587. package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
  588. package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
  589. package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
  590. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
  591. package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
  592. package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -18
  593. package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
  594. package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
  595. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  596. package/out/zero-cache/src/services/change-streamer/storer.js +309 -367
  597. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  598. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
  599. package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
  600. package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
  601. package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
  602. package/out/zero-cache/src/services/heapz.js +21 -25
  603. package/out/zero-cache/src/services/heapz.js.map +1 -1
  604. package/out/zero-cache/src/services/http-service.d.ts +1 -1
  605. package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
  606. package/out/zero-cache/src/services/http-service.js +56 -59
  607. package/out/zero-cache/src/services/http-service.js.map +1 -1
  608. package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
  609. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  610. package/out/zero-cache/src/services/life-cycle.js +216 -255
  611. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  612. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
  613. package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
  614. package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
  615. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  616. package/out/zero-cache/src/services/litestream/commands.js +201 -154
  617. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  618. package/out/zero-cache/src/services/mutagen/error.js +11 -6
  619. package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
  620. package/out/zero-cache/src/services/mutagen/mutagen.js +270 -267
  621. package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
  622. package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
  623. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  624. package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
  625. package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
  626. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +1 -1
  627. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  628. package/out/zero-cache/src/services/replicator/incremental-sync.js +97 -97
  629. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  630. package/out/zero-cache/src/services/replicator/notifier.js +28 -52
  631. package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
  632. package/out/zero-cache/src/services/replicator/replication-status.js +100 -83
  633. package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
  634. package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
  635. package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
  636. package/out/zero-cache/src/services/replicator/replicator.js +33 -26
  637. package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
  638. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
  639. package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
  640. package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
  641. package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
  642. package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
  643. package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
  644. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
  645. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  646. package/out/zero-cache/src/services/replicator/schema/replication-state.js +70 -74
  647. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  648. package/out/zero-cache/src/services/run-ast.d.ts +5 -3
  649. package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
  650. package/out/zero-cache/src/services/run-ast.js +80 -79
  651. package/out/zero-cache/src/services/run-ast.js.map +1 -1
  652. package/out/zero-cache/src/services/runner.d.ts +1 -1
  653. package/out/zero-cache/src/services/runner.d.ts.map +1 -1
  654. package/out/zero-cache/src/services/runner.js +40 -40
  655. package/out/zero-cache/src/services/runner.js.map +1 -1
  656. package/out/zero-cache/src/services/running-state.d.ts +1 -1
  657. package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
  658. package/out/zero-cache/src/services/running-state.js +122 -119
  659. package/out/zero-cache/src/services/running-state.js.map +1 -1
  660. package/out/zero-cache/src/services/statz.js +184 -162
  661. package/out/zero-cache/src/services/statz.js.map +1 -1
  662. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +40 -39
  663. package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
  664. package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
  665. package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
  666. package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
  667. package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
  668. package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
  669. package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
  670. package/out/zero-cache/src/services/view-syncer/cvr-purger.js +84 -94
  671. package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
  672. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +2 -4
  673. package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
  674. package/out/zero-cache/src/services/view-syncer/cvr-store.js +628 -612
  675. package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
  676. package/out/zero-cache/src/services/view-syncer/cvr.d.ts +1 -1
  677. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  678. package/out/zero-cache/src/services/view-syncer/cvr.js +631 -694
  679. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  680. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
  681. package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
  682. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
  683. package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
  684. package/out/zero-cache/src/services/view-syncer/inspect-handler.js +168 -158
  685. package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
  686. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +14 -13
  687. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  688. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +529 -467
  689. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  690. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts +1 -1
  691. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  692. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +229 -277
  693. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  694. package/out/zero-cache/src/services/view-syncer/schema/cvr.js +53 -120
  695. package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
  696. package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
  697. package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
  698. package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
  699. package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
  700. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +3 -3
  701. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  702. package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
  703. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  704. package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
  705. package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
  706. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -3
  707. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  708. package/out/zero-cache/src/services/view-syncer/view-syncer.js +1485 -1307
  709. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  710. package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
  711. package/out/zero-cache/src/types/error-with-level.js +29 -25
  712. package/out/zero-cache/src/types/error-with-level.js.map +1 -1
  713. package/out/zero-cache/src/types/http.js +27 -14
  714. package/out/zero-cache/src/types/http.js.map +1 -1
  715. package/out/zero-cache/src/types/lexi-version.js +46 -31
  716. package/out/zero-cache/src/types/lexi-version.js.map +1 -1
  717. package/out/zero-cache/src/types/lite.js +118 -125
  718. package/out/zero-cache/src/types/lite.js.map +1 -1
  719. package/out/zero-cache/src/types/names.js +6 -3
  720. package/out/zero-cache/src/types/names.js.map +1 -1
  721. package/out/zero-cache/src/types/pg-data-type.js +74 -68
  722. package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
  723. package/out/zero-cache/src/types/pg-types.js +17 -72
  724. package/out/zero-cache/src/types/pg-types.js.map +1 -1
  725. package/out/zero-cache/src/types/pg.d.ts +1 -1
  726. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  727. package/out/zero-cache/src/types/pg.js +213 -233
  728. package/out/zero-cache/src/types/pg.js.map +1 -1
  729. package/out/zero-cache/src/types/processes.d.ts +2 -2
  730. package/out/zero-cache/src/types/processes.d.ts.map +1 -1
  731. package/out/zero-cache/src/types/processes.js +95 -143
  732. package/out/zero-cache/src/types/processes.js.map +1 -1
  733. package/out/zero-cache/src/types/profiler.js +29 -30
  734. package/out/zero-cache/src/types/profiler.js.map +1 -1
  735. package/out/zero-cache/src/types/row-key.js +30 -68
  736. package/out/zero-cache/src/types/row-key.js.map +1 -1
  737. package/out/zero-cache/src/types/schema-versions.js +25 -19
  738. package/out/zero-cache/src/types/schema-versions.js.map +1 -1
  739. package/out/zero-cache/src/types/shards.js +50 -36
  740. package/out/zero-cache/src/types/shards.js.map +1 -1
  741. package/out/zero-cache/src/types/sql.js +9 -13
  742. package/out/zero-cache/src/types/sql.js.map +1 -1
  743. package/out/zero-cache/src/types/streams.js +245 -254
  744. package/out/zero-cache/src/types/streams.js.map +1 -1
  745. package/out/zero-cache/src/types/strings.js +14 -11
  746. package/out/zero-cache/src/types/strings.js.map +1 -1
  747. package/out/zero-cache/src/types/subscription.js +200 -259
  748. package/out/zero-cache/src/types/subscription.js.map +1 -1
  749. package/out/zero-cache/src/types/url-params.js +35 -30
  750. package/out/zero-cache/src/types/url-params.js.map +1 -1
  751. package/out/zero-cache/src/types/websocket-handoff.d.ts +5 -4
  752. package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
  753. package/out/zero-cache/src/types/websocket-handoff.js +68 -76
  754. package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
  755. package/out/zero-cache/src/types/ws.js +56 -59
  756. package/out/zero-cache/src/types/ws.js.map +1 -1
  757. package/out/zero-cache/src/workers/connect-params.js +44 -40
  758. package/out/zero-cache/src/workers/connect-params.js.map +1 -1
  759. package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
  760. package/out/zero-cache/src/workers/connection.js +277 -243
  761. package/out/zero-cache/src/workers/connection.js.map +1 -1
  762. package/out/zero-cache/src/workers/mutator.js +24 -0
  763. package/out/zero-cache/src/workers/mutator.js.map +1 -0
  764. package/out/zero-cache/src/workers/replicator.d.ts +1 -1
  765. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  766. package/out/zero-cache/src/workers/replicator.js +103 -106
  767. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  768. package/out/zero-cache/src/workers/syncer-ws-message-handler.js +179 -147
  769. package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
  770. package/out/zero-cache/src/workers/syncer.d.ts +3 -3
  771. package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
  772. package/out/zero-cache/src/workers/syncer.js +192 -169
  773. package/out/zero-cache/src/workers/syncer.js.map +1 -1
  774. package/out/zero-client/src/client/active-clients-manager.js +199 -0
  775. package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
  776. package/out/zero-client/src/client/bindings.d.ts +8 -7
  777. package/out/zero-client/src/client/bindings.d.ts.map +1 -1
  778. package/out/zero-client/src/client/bindings.js +33 -0
  779. package/out/zero-client/src/client/bindings.js.map +1 -0
  780. package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
  781. package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
  782. package/out/zero-client/src/client/connection-manager.d.ts +12 -31
  783. package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
  784. package/out/zero-client/src/client/connection-manager.js +310 -0
  785. package/out/zero-client/src/client/connection-manager.js.map +1 -0
  786. package/out/zero-client/src/client/connection-status-enum.js +15 -0
  787. package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
  788. package/out/zero-client/src/client/connection.d.ts +47 -4
  789. package/out/zero-client/src/client/connection.d.ts.map +1 -1
  790. package/out/zero-client/src/client/connection.js +103 -0
  791. package/out/zero-client/src/client/connection.js.map +1 -0
  792. package/out/zero-client/src/client/context.d.ts +4 -7
  793. package/out/zero-client/src/client/context.d.ts.map +1 -1
  794. package/out/zero-client/src/client/context.js +104 -0
  795. package/out/zero-client/src/client/context.js.map +1 -0
  796. package/out/zero-client/src/client/crud.js +225 -0
  797. package/out/zero-client/src/client/crud.js.map +1 -0
  798. package/out/zero-client/src/client/custom.d.ts +12 -15
  799. package/out/zero-client/src/client/custom.d.ts.map +1 -1
  800. package/out/zero-client/src/client/custom.js +123 -0
  801. package/out/zero-client/src/client/custom.js.map +1 -0
  802. package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
  803. package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
  804. package/out/zero-client/src/client/delete-clients-manager.js +71 -0
  805. package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
  806. package/out/zero-client/src/client/enable-analytics.js +18 -0
  807. package/out/zero-client/src/client/enable-analytics.js.map +1 -0
  808. package/out/zero-client/src/client/error.d.ts +2 -1
  809. package/out/zero-client/src/client/error.d.ts.map +1 -1
  810. package/out/zero-client/src/client/error.js +148 -0
  811. package/out/zero-client/src/client/error.js.map +1 -0
  812. package/out/zero-client/src/client/http-string.js +11 -0
  813. package/out/zero-client/src/client/http-string.js.map +1 -0
  814. package/out/zero-client/src/client/inspector/client-group.js +27 -0
  815. package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
  816. package/out/zero-client/src/client/inspector/client.js +28 -0
  817. package/out/zero-client/src/client/inspector/client.js.map +1 -0
  818. package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
  819. package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
  820. package/out/zero-client/src/client/inspector/inspector.d.ts +1 -1
  821. package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
  822. package/out/zero-client/src/client/inspector/inspector.js +47 -0
  823. package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
  824. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -1
  825. package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
  826. package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
  827. package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
  828. package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
  829. package/out/zero-client/src/client/inspector/query.js +82 -0
  830. package/out/zero-client/src/client/inspector/query.js.map +1 -0
  831. package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
  832. package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
  833. package/out/zero-client/src/client/ivm-branch.js +149 -0
  834. package/out/zero-client/src/client/ivm-branch.js.map +1 -0
  835. package/out/zero-client/src/client/keys.js +45 -0
  836. package/out/zero-client/src/client/keys.js.map +1 -0
  837. package/out/zero-client/src/client/log-options.js +60 -0
  838. package/out/zero-client/src/client/log-options.js.map +1 -0
  839. package/out/zero-client/src/client/metric-name-enum.js +15 -0
  840. package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
  841. package/out/zero-client/src/client/metrics.d.ts +2 -2
  842. package/out/zero-client/src/client/metrics.d.ts.map +1 -1
  843. package/out/zero-client/src/client/metrics.js +249 -0
  844. package/out/zero-client/src/client/metrics.js.map +1 -0
  845. package/out/zero-client/src/client/mutation-tracker.d.ts +2 -2
  846. package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
  847. package/out/zero-client/src/client/mutation-tracker.js +363 -0
  848. package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
  849. package/out/zero-client/src/client/mutator-proxy.d.ts +1 -2
  850. package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
  851. package/out/zero-client/src/client/mutator-proxy.js +132 -0
  852. package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
  853. package/out/zero-client/src/client/options.d.ts +36 -19
  854. package/out/zero-client/src/client/options.d.ts.map +1 -1
  855. package/out/zero-client/src/client/options.js +11 -0
  856. package/out/zero-client/src/client/options.js.map +1 -0
  857. package/out/zero-client/src/client/query-manager.d.ts +5 -5
  858. package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
  859. package/out/zero-client/src/client/query-manager.js +377 -0
  860. package/out/zero-client/src/client/query-manager.js.map +1 -0
  861. package/out/zero-client/src/client/reload-error-handler.d.ts +4 -4
  862. package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
  863. package/out/zero-client/src/client/reload-error-handler.js +114 -0
  864. package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
  865. package/out/zero-client/src/client/server-option.js +64 -0
  866. package/out/zero-client/src/client/server-option.js.map +1 -0
  867. package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
  868. package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
  869. package/out/zero-client/src/client/version.js +5 -0
  870. package/out/zero-client/src/client/version.js.map +1 -0
  871. package/out/zero-client/src/client/zero-poke-handler.d.ts +2 -2
  872. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  873. package/out/zero-client/src/client/zero-poke-handler.js +303 -0
  874. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
  875. package/out/zero-client/src/client/zero-rep.d.ts +2 -2
  876. package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
  877. package/out/zero-client/src/client/zero-rep.js +72 -0
  878. package/out/zero-client/src/client/zero-rep.js.map +1 -0
  879. package/out/zero-client/src/client/zero.d.ts +28 -11
  880. package/out/zero-client/src/client/zero.d.ts.map +1 -1
  881. package/out/zero-client/src/client/zero.js +1825 -0
  882. package/out/zero-client/src/client/zero.js.map +1 -0
  883. package/out/zero-client/src/mod.d.ts +4 -12
  884. package/out/zero-client/src/mod.d.ts.map +1 -1
  885. package/out/zero-client/src/util/nanoid.js +21 -0
  886. package/out/zero-client/src/util/nanoid.js.map +1 -0
  887. package/out/zero-client/src/util/socket.js +7 -0
  888. package/out/zero-client/src/util/socket.js.map +1 -0
  889. package/out/zero-protocol/src/analyze-query-result.js +32 -24
  890. package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
  891. package/out/zero-protocol/src/application-error.js +35 -37
  892. package/out/zero-protocol/src/application-error.js.map +1 -1
  893. package/out/zero-protocol/src/ast.d.ts +1 -1
  894. package/out/zero-protocol/src/ast.js +296 -277
  895. package/out/zero-protocol/src/ast.js.map +1 -1
  896. package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
  897. package/out/zero-protocol/src/change-desired-queries.js +11 -7
  898. package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
  899. package/out/zero-protocol/src/client-schema.d.ts +2 -2
  900. package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
  901. package/out/zero-protocol/src/client-schema.js +40 -26
  902. package/out/zero-protocol/src/client-schema.js.map +1 -1
  903. package/out/zero-protocol/src/close-connection.js +11 -18
  904. package/out/zero-protocol/src/close-connection.js.map +1 -1
  905. package/out/zero-protocol/src/connect.d.ts +4 -4
  906. package/out/zero-protocol/src/connect.js +46 -51
  907. package/out/zero-protocol/src/connect.js.map +1 -1
  908. package/out/zero-protocol/src/custom-queries.d.ts +4 -4
  909. package/out/zero-protocol/src/custom-queries.js +61 -39
  910. package/out/zero-protocol/src/custom-queries.js.map +1 -1
  911. package/out/zero-protocol/src/data.js +9 -4
  912. package/out/zero-protocol/src/data.js.map +1 -1
  913. package/out/zero-protocol/src/delete-clients.js +16 -9
  914. package/out/zero-protocol/src/delete-clients.js.map +1 -1
  915. package/out/zero-protocol/src/down.d.ts +6 -6
  916. package/out/zero-protocol/src/down.js +20 -4
  917. package/out/zero-protocol/src/down.js.map +1 -1
  918. package/out/zero-protocol/src/error-kind-enum.js +41 -23
  919. package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
  920. package/out/zero-protocol/src/error-origin-enum.js +9 -4
  921. package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
  922. package/out/zero-protocol/src/error-reason-enum.js +17 -8
  923. package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
  924. package/out/zero-protocol/src/error.d.ts +17 -17
  925. package/out/zero-protocol/src/error.js +151 -89
  926. package/out/zero-protocol/src/error.js.map +1 -1
  927. package/out/zero-protocol/src/inspect-down.d.ts +18 -18
  928. package/out/zero-protocol/src/inspect-down.js +72 -54
  929. package/out/zero-protocol/src/inspect-down.js.map +1 -1
  930. package/out/zero-protocol/src/inspect-up.d.ts +6 -6
  931. package/out/zero-protocol/src/inspect-up.js +38 -26
  932. package/out/zero-protocol/src/inspect-up.js.map +1 -1
  933. package/out/zero-protocol/src/mutation-id.js +9 -5
  934. package/out/zero-protocol/src/mutation-id.js.map +1 -1
  935. package/out/zero-protocol/src/mutation-type-enum.js +7 -3
  936. package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
  937. package/out/zero-protocol/src/mutations-patch.js +16 -17
  938. package/out/zero-protocol/src/mutations-patch.js.map +1 -1
  939. package/out/zero-protocol/src/ping.js +9 -4
  940. package/out/zero-protocol/src/ping.js.map +1 -1
  941. package/out/zero-protocol/src/poke.js +55 -72
  942. package/out/zero-protocol/src/poke.js.map +1 -1
  943. package/out/zero-protocol/src/pong.js +9 -4
  944. package/out/zero-protocol/src/pong.js.map +1 -1
  945. package/out/zero-protocol/src/primary-key.js +19 -5
  946. package/out/zero-protocol/src/primary-key.js.map +1 -1
  947. package/out/zero-protocol/src/protocol-version.d.ts +2 -2
  948. package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
  949. package/out/zero-protocol/src/protocol-version.js +7 -59
  950. package/out/zero-protocol/src/protocol-version.js.map +1 -1
  951. package/out/zero-protocol/src/pull.js +26 -19
  952. package/out/zero-protocol/src/pull.js.map +1 -1
  953. package/out/zero-protocol/src/push.d.ts +4 -4
  954. package/out/zero-protocol/src/push.js +179 -176
  955. package/out/zero-protocol/src/push.js.map +1 -1
  956. package/out/zero-protocol/src/queries-patch.d.ts +3 -3
  957. package/out/zero-protocol/src/queries-patch.js +29 -22
  958. package/out/zero-protocol/src/queries-patch.js.map +1 -1
  959. package/out/zero-protocol/src/query-hash.js +18 -14
  960. package/out/zero-protocol/src/query-hash.js.map +1 -1
  961. package/out/zero-protocol/src/row-patch.js +29 -20
  962. package/out/zero-protocol/src/row-patch.js.map +1 -1
  963. package/out/zero-protocol/src/up.d.ts +5 -5
  964. package/out/zero-protocol/src/up.js +18 -4
  965. package/out/zero-protocol/src/up.js.map +1 -1
  966. package/out/zero-protocol/src/version.js +9 -4
  967. package/out/zero-protocol/src/version.js.map +1 -1
  968. package/out/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
  969. package/out/zero-react/src/components/inspector.js.map +1 -0
  970. package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
  971. package/out/zero-react/src/components/mark-icon.js.map +1 -0
  972. package/out/zero-react/src/components/zero-inspector.js +44 -0
  973. package/out/zero-react/src/components/zero-inspector.js.map +1 -0
  974. package/out/zero-react/src/mod.d.ts +1 -3
  975. package/out/zero-react/src/mod.d.ts.map +1 -1
  976. package/out/zero-react/src/use-query.d.ts +4 -4
  977. package/out/zero-react/src/use-query.d.ts.map +1 -1
  978. package/out/{react.js → zero-react/src/use-query.js} +25 -217
  979. package/out/zero-react/src/use-query.js.map +1 -0
  980. package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
  981. package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
  982. package/out/zero-react/src/use-zero-connection-state.js +14 -0
  983. package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
  984. package/out/zero-react/src/use-zero-online.js +14 -0
  985. package/out/zero-react/src/use-zero-online.js.map +1 -0
  986. package/out/zero-react/src/zero-provider.d.ts +7 -6
  987. package/out/zero-react/src/zero-provider.d.ts.map +1 -1
  988. package/out/zero-react/src/zero-provider.js +59 -0
  989. package/out/zero-react/src/zero-provider.js.map +1 -0
  990. package/out/zero-schema/src/builder/relationship-builder.js +27 -0
  991. package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
  992. package/out/zero-schema/src/builder/schema-builder.js +88 -0
  993. package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
  994. package/out/zero-schema/src/builder/table-builder.js +129 -0
  995. package/out/zero-schema/src/builder/table-builder.js.map +1 -0
  996. package/out/zero-schema/src/compiled-permissions.js +23 -19
  997. package/out/zero-schema/src/compiled-permissions.js.map +1 -1
  998. package/out/zero-schema/src/name-mapper.js +43 -38
  999. package/out/zero-schema/src/name-mapper.js.map +1 -1
  1000. package/out/zero-schema/src/permissions.d.ts.map +1 -1
  1001. package/out/zero-schema/src/permissions.js +199 -0
  1002. package/out/zero-schema/src/permissions.js.map +1 -0
  1003. package/out/zero-schema/src/schema-config.js +35 -51
  1004. package/out/zero-schema/src/schema-config.js.map +1 -1
  1005. package/out/zero-server/src/adapters/drizzle.d.ts +1 -1
  1006. package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
  1007. package/out/zero-server/src/adapters/drizzle.js +83 -100
  1008. package/out/zero-server/src/adapters/drizzle.js.map +1 -1
  1009. package/out/zero-server/src/adapters/pg.d.ts +4 -3
  1010. package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
  1011. package/out/zero-server/src/adapters/pg.js +53 -77
  1012. package/out/zero-server/src/adapters/pg.js.map +1 -1
  1013. package/out/zero-server/src/adapters/postgresjs.d.ts +2 -2
  1014. package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
  1015. package/out/zero-server/src/adapters/postgresjs.js +39 -57
  1016. package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
  1017. package/out/zero-server/src/custom.d.ts +6 -6
  1018. package/out/zero-server/src/custom.d.ts.map +1 -1
  1019. package/out/zero-server/src/custom.js +185 -117
  1020. package/out/zero-server/src/custom.js.map +1 -1
  1021. package/out/zero-server/src/logging.js +7 -4
  1022. package/out/zero-server/src/logging.js.map +1 -1
  1023. package/out/zero-server/src/mod.d.ts +2 -0
  1024. package/out/zero-server/src/mod.d.ts.map +1 -1
  1025. package/out/zero-server/src/pg-query-executor.js +17 -14
  1026. package/out/zero-server/src/pg-query-executor.js.map +1 -1
  1027. package/out/zero-server/src/process-mutations.js +293 -274
  1028. package/out/zero-server/src/process-mutations.js.map +1 -1
  1029. package/out/zero-server/src/push-processor.js +55 -31
  1030. package/out/zero-server/src/push-processor.js.map +1 -1
  1031. package/out/zero-server/src/queries/process-queries.d.ts +63 -2
  1032. package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
  1033. package/out/zero-server/src/queries/process-queries.js +101 -95
  1034. package/out/zero-server/src/queries/process-queries.js.map +1 -1
  1035. package/out/zero-server/src/query-registry.d.ts +10 -0
  1036. package/out/zero-server/src/query-registry.d.ts.map +1 -0
  1037. package/out/zero-server/src/query-registry.js +35 -0
  1038. package/out/zero-server/src/query-registry.js.map +1 -0
  1039. package/out/zero-server/src/schema.js +136 -124
  1040. package/out/zero-server/src/schema.js.map +1 -1
  1041. package/out/zero-server/src/zql-database.d.ts +4 -4
  1042. package/out/zero-server/src/zql-database.d.ts.map +1 -1
  1043. package/out/zero-server/src/zql-database.js +66 -47
  1044. package/out/zero-server/src/zql-database.js.map +1 -1
  1045. package/out/zero-solid/src/mod.d.ts +1 -2
  1046. package/out/zero-solid/src/mod.d.ts.map +1 -1
  1047. package/out/zero-solid/src/solid-view.d.ts +1 -1
  1048. package/out/zero-solid/src/solid-view.d.ts.map +1 -1
  1049. package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
  1050. package/out/zero-solid/src/solid-view.js.map +1 -0
  1051. package/out/zero-solid/src/use-query.d.ts +1 -1
  1052. package/out/zero-solid/src/use-query.d.ts.map +1 -1
  1053. package/out/zero-solid/src/use-query.js +70 -0
  1054. package/out/zero-solid/src/use-query.js.map +1 -0
  1055. package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
  1056. package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
  1057. package/out/zero-solid/src/use-zero-connection-state.js +15 -0
  1058. package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
  1059. package/out/zero-solid/src/use-zero-online.js +13 -0
  1060. package/out/zero-solid/src/use-zero-online.js.map +1 -0
  1061. package/out/zero-solid/src/use-zero.d.ts +1 -1
  1062. package/out/zero-solid/src/use-zero.d.ts.map +1 -1
  1063. package/out/zero-solid/src/use-zero.js +74 -0
  1064. package/out/zero-solid/src/use-zero.js.map +1 -0
  1065. package/out/zero-types/src/format.js +7 -4
  1066. package/out/zero-types/src/format.js.map +1 -1
  1067. package/out/zero-types/src/name-mapper.js +43 -40
  1068. package/out/zero-types/src/name-mapper.js.map +1 -1
  1069. package/out/zql/src/builder/builder.d.ts +2 -1
  1070. package/out/zql/src/builder/builder.d.ts.map +1 -1
  1071. package/out/zql/src/builder/builder.js +486 -428
  1072. package/out/zql/src/builder/builder.js.map +1 -1
  1073. package/out/zql/src/builder/debug-delegate.js +68 -64
  1074. package/out/zql/src/builder/debug-delegate.js.map +1 -1
  1075. package/out/zql/src/builder/filter.js +132 -138
  1076. package/out/zql/src/builder/filter.js.map +1 -1
  1077. package/out/zql/src/builder/like.js +44 -51
  1078. package/out/zql/src/builder/like.js.map +1 -1
  1079. package/out/zql/src/error.d.ts +5 -0
  1080. package/out/zql/src/error.d.ts.map +1 -1
  1081. package/out/zql/src/error.js +18 -6
  1082. package/out/zql/src/error.js.map +1 -1
  1083. package/out/zql/src/ivm/array-view.js +86 -92
  1084. package/out/zql/src/ivm/array-view.js.map +1 -1
  1085. package/out/zql/src/ivm/constraint.js +74 -127
  1086. package/out/zql/src/ivm/constraint.js.map +1 -1
  1087. package/out/zql/src/ivm/data.js +59 -85
  1088. package/out/zql/src/ivm/data.js.map +1 -1
  1089. package/out/zql/src/ivm/exists.js +236 -243
  1090. package/out/zql/src/ivm/exists.js.map +1 -1
  1091. package/out/zql/src/ivm/fan-in.js +50 -51
  1092. package/out/zql/src/ivm/fan-in.js.map +1 -1
  1093. package/out/zql/src/ivm/fan-out.js +48 -50
  1094. package/out/zql/src/ivm/fan-out.js.map +1 -1
  1095. package/out/zql/src/ivm/filter-operators.js +87 -87
  1096. package/out/zql/src/ivm/filter-operators.js.map +1 -1
  1097. package/out/zql/src/ivm/filter-push.js +26 -23
  1098. package/out/zql/src/ivm/filter-push.js.map +1 -1
  1099. package/out/zql/src/ivm/filter.js +30 -32
  1100. package/out/zql/src/ivm/filter.js.map +1 -1
  1101. package/out/zql/src/ivm/flipped-join.js +343 -326
  1102. package/out/zql/src/ivm/flipped-join.js.map +1 -1
  1103. package/out/zql/src/ivm/join-utils.js +85 -79
  1104. package/out/zql/src/ivm/join-utils.js.map +1 -1
  1105. package/out/zql/src/ivm/join.js +287 -207
  1106. package/out/zql/src/ivm/join.js.map +1 -1
  1107. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
  1108. package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
  1109. package/out/zql/src/ivm/memory-source.d.ts +2 -2
  1110. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  1111. package/out/zql/src/ivm/memory-source.js +471 -489
  1112. package/out/zql/src/ivm/memory-source.js.map +1 -1
  1113. package/out/zql/src/ivm/memory-storage.js +32 -31
  1114. package/out/zql/src/ivm/memory-storage.js.map +1 -1
  1115. package/out/zql/src/ivm/operator.js +8 -9
  1116. package/out/zql/src/ivm/operator.js.map +1 -1
  1117. package/out/zql/src/ivm/push-accumulated.js +236 -305
  1118. package/out/zql/src/ivm/push-accumulated.js.map +1 -1
  1119. package/out/zql/src/ivm/skip.js +92 -106
  1120. package/out/zql/src/ivm/skip.js.map +1 -1
  1121. package/out/zql/src/ivm/source.d.ts +3 -1
  1122. package/out/zql/src/ivm/source.d.ts.map +1 -1
  1123. package/out/zql/src/ivm/stream.js +20 -16
  1124. package/out/zql/src/ivm/stream.js.map +1 -1
  1125. package/out/zql/src/ivm/take.js +502 -456
  1126. package/out/zql/src/ivm/take.js.map +1 -1
  1127. package/out/zql/src/ivm/union-fan-in.js +156 -134
  1128. package/out/zql/src/ivm/union-fan-in.js.map +1 -1
  1129. package/out/zql/src/ivm/union-fan-out.js +46 -45
  1130. package/out/zql/src/ivm/union-fan-out.js.map +1 -1
  1131. package/out/zql/src/ivm/view-apply-change.js +246 -216
  1132. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  1133. package/out/zql/src/ivm/view.d.ts +2 -2
  1134. package/out/zql/src/ivm/view.d.ts.map +1 -1
  1135. package/out/zql/src/mutate/custom.d.ts +11 -11
  1136. package/out/zql/src/mutate/custom.d.ts.map +1 -1
  1137. package/out/zql/src/mutate/custom.js +15 -7
  1138. package/out/zql/src/mutate/custom.js.map +1 -1
  1139. package/out/zql/src/planner/planner-builder.js +238 -172
  1140. package/out/zql/src/planner/planner-builder.js.map +1 -1
  1141. package/out/zql/src/planner/planner-connection.d.ts +7 -0
  1142. package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
  1143. package/out/zql/src/planner/planner-connection.js +202 -250
  1144. package/out/zql/src/planner/planner-connection.js.map +1 -1
  1145. package/out/zql/src/planner/planner-constraint.js +8 -11
  1146. package/out/zql/src/planner/planner-constraint.js.map +1 -1
  1147. package/out/zql/src/planner/planner-debug.d.ts +2 -1
  1148. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  1149. package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
  1150. package/out/zql/src/planner/planner-fan-in.js +154 -159
  1151. package/out/zql/src/planner/planner-fan-in.js.map +1 -1
  1152. package/out/zql/src/planner/planner-fan-out.js +71 -60
  1153. package/out/zql/src/planner/planner-fan-out.js.map +1 -1
  1154. package/out/zql/src/planner/planner-graph.d.ts +7 -8
  1155. package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
  1156. package/out/zql/src/planner/planner-graph.js +315 -357
  1157. package/out/zql/src/planner/planner-graph.js.map +1 -1
  1158. package/out/zql/src/planner/planner-join.d.ts +6 -2
  1159. package/out/zql/src/planner/planner-join.d.ts.map +1 -1
  1160. package/out/zql/src/planner/planner-join.js +234 -326
  1161. package/out/zql/src/planner/planner-join.js.map +1 -1
  1162. package/out/zql/src/planner/planner-node.d.ts +2 -1
  1163. package/out/zql/src/planner/planner-node.d.ts.map +1 -1
  1164. package/out/zql/src/planner/planner-source.js +23 -12
  1165. package/out/zql/src/planner/planner-source.js.map +1 -1
  1166. package/out/zql/src/planner/planner-terminus.js +28 -27
  1167. package/out/zql/src/planner/planner-terminus.js.map +1 -1
  1168. package/out/zql/src/query/complete-ordering.d.ts +5 -0
  1169. package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
  1170. package/out/zql/src/query/complete-ordering.js +71 -0
  1171. package/out/zql/src/query/complete-ordering.js.map +1 -0
  1172. package/out/zql/src/query/define-query.d.ts +47 -23
  1173. package/out/zql/src/query/define-query.d.ts.map +1 -1
  1174. package/out/zql/src/query/define-query.js +45 -51
  1175. package/out/zql/src/query/define-query.js.map +1 -1
  1176. package/out/zql/src/query/error.js +12 -8
  1177. package/out/zql/src/query/error.js.map +1 -1
  1178. package/out/zql/src/query/escape-like.js +7 -0
  1179. package/out/zql/src/query/escape-like.js.map +1 -0
  1180. package/out/zql/src/query/expression.js +153 -151
  1181. package/out/zql/src/query/expression.js.map +1 -1
  1182. package/out/zql/src/query/measure-push-operator.js +42 -35
  1183. package/out/zql/src/query/measure-push-operator.js.map +1 -1
  1184. package/out/zql/src/query/metrics-delegate.js +9 -5
  1185. package/out/zql/src/query/metrics-delegate.js.map +1 -1
  1186. package/out/zql/src/query/named.d.ts +9 -5
  1187. package/out/zql/src/query/named.d.ts.map +1 -1
  1188. package/out/zql/src/query/named.js +70 -85
  1189. package/out/zql/src/query/named.js.map +1 -1
  1190. package/out/zql/src/query/query-definitions.d.ts +32 -0
  1191. package/out/zql/src/query/query-definitions.d.ts.map +1 -0
  1192. package/out/zql/src/query/query-delegate-base.d.ts +6 -14
  1193. package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
  1194. package/out/zql/src/query/query-delegate-base.js +118 -134
  1195. package/out/zql/src/query/query-delegate-base.js.map +1 -1
  1196. package/out/zql/src/query/query-delegate.d.ts +6 -8
  1197. package/out/zql/src/query/query-delegate.d.ts.map +1 -1
  1198. package/out/zql/src/query/query-impl.d.ts +17 -18
  1199. package/out/zql/src/query/query-impl.d.ts.map +1 -1
  1200. package/out/zql/src/query/query-impl.js +511 -433
  1201. package/out/zql/src/query/query-impl.js.map +1 -1
  1202. package/out/zql/src/query/query-internals.d.ts +11 -13
  1203. package/out/zql/src/query/query-internals.d.ts.map +1 -1
  1204. package/out/zql/src/query/query-internals.js +13 -19
  1205. package/out/zql/src/query/query-internals.js.map +1 -1
  1206. package/out/zql/src/query/query.d.ts +15 -16
  1207. package/out/zql/src/query/query.d.ts.map +1 -1
  1208. package/out/zql/src/query/static-query.d.ts +3 -3
  1209. package/out/zql/src/query/static-query.d.ts.map +1 -1
  1210. package/out/zql/src/query/static-query.js +41 -18
  1211. package/out/zql/src/query/static-query.js.map +1 -1
  1212. package/out/zql/src/query/ttl.js +69 -62
  1213. package/out/zql/src/query/ttl.js.map +1 -1
  1214. package/out/zql/src/query/validate-input.d.ts +15 -0
  1215. package/out/zql/src/query/validate-input.d.ts.map +1 -0
  1216. package/out/zql/src/query/validate-input.js +25 -0
  1217. package/out/zql/src/query/validate-input.js.map +1 -0
  1218. package/out/zqlite/src/database-storage.d.ts +1 -1
  1219. package/out/zqlite/src/database-storage.d.ts.map +1 -1
  1220. package/out/zqlite/src/database-storage.js +99 -102
  1221. package/out/zqlite/src/database-storage.js.map +1 -1
  1222. package/out/zqlite/src/db.js +241 -194
  1223. package/out/zqlite/src/db.js.map +1 -1
  1224. package/out/zqlite/src/explain-queries.js +13 -16
  1225. package/out/zqlite/src/explain-queries.js.map +1 -1
  1226. package/out/zqlite/src/internal/sql.js +15 -10
  1227. package/out/zqlite/src/internal/sql.js.map +1 -1
  1228. package/out/zqlite/src/internal/statement-cache.js +86 -110
  1229. package/out/zqlite/src/internal/statement-cache.js.map +1 -1
  1230. package/out/zqlite/src/query-builder.js +172 -143
  1231. package/out/zqlite/src/query-builder.js.map +1 -1
  1232. package/out/zqlite/src/query-delegate.d.ts +2 -2
  1233. package/out/zqlite/src/query-delegate.d.ts.map +1 -1
  1234. package/out/zqlite/src/query-delegate.js +53 -43
  1235. package/out/zqlite/src/query-delegate.js.map +1 -1
  1236. package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
  1237. package/out/zqlite/src/sqlite-cost-model.js +96 -120
  1238. package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
  1239. package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
  1240. package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
  1241. package/out/zqlite/src/sqlite-stat-fanout.js +301 -0
  1242. package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
  1243. package/out/zqlite/src/table-source.d.ts +9 -4
  1244. package/out/zqlite/src/table-source.d.ts.map +1 -1
  1245. package/out/zqlite/src/table-source.js +424 -327
  1246. package/out/zqlite/src/table-source.js.map +1 -1
  1247. package/package.json +23 -26
  1248. package/out/chunk-424PT5DM.js +0 -23
  1249. package/out/chunk-424PT5DM.js.map +0 -7
  1250. package/out/chunk-AFADJQ2O.js +0 -1
  1251. package/out/chunk-AFADJQ2O.js.map +0 -7
  1252. package/out/chunk-ASRS2LFV.js.map +0 -7
  1253. package/out/chunk-EZM3XBAB.js.map +0 -7
  1254. package/out/chunk-HCZQVP5R.js.map +0 -7
  1255. package/out/chunk-PFM5IJC4.js +0 -495
  1256. package/out/chunk-PFM5IJC4.js.map +0 -7
  1257. package/out/chunk-TAUDS4QP.js +0 -4129
  1258. package/out/chunk-TAUDS4QP.js.map +0 -7
  1259. package/out/chunk-VZOYWIRW.js.map +0 -7
  1260. package/out/chunk-WPAQ4EPM.js.map +0 -7
  1261. package/out/chunk-WWNKZSEE.js +0 -18857
  1262. package/out/chunk-WWNKZSEE.js.map +0 -7
  1263. package/out/expo-sqlite.js +0 -11
  1264. package/out/expo-sqlite.js.map +0 -7
  1265. package/out/inspector-GP3CBZRU.js.map +0 -7
  1266. package/out/lazy-inspector-XLKVABX2.js +0 -575
  1267. package/out/lazy-inspector-XLKVABX2.js.map +0 -7
  1268. package/out/op-sqlite.js.map +0 -7
  1269. package/out/react-native.js +0 -25
  1270. package/out/react-native.js.map +0 -7
  1271. package/out/react.js.map +0 -7
  1272. package/out/shared/src/enum.js +0 -2
  1273. package/out/shared/src/enum.js.map +0 -1
  1274. package/out/shared/src/expand.js +0 -2
  1275. package/out/shared/src/expand.js.map +0 -1
  1276. package/out/shared/src/immutable.js +0 -2
  1277. package/out/shared/src/immutable.js.map +0 -1
  1278. package/out/shared/src/types.js +0 -2
  1279. package/out/shared/src/types.js.map +0 -1
  1280. package/out/shared/src/writable.js +0 -2
  1281. package/out/shared/src/writable.js.map +0 -1
  1282. package/out/solid.js.map +0 -7
  1283. package/out/sqlite.js +0 -15
  1284. package/out/sqlite.js.map +0 -7
  1285. package/out/zero/package.json +0 -195
  1286. package/out/zero/src/server/change-streamer.js +0 -2
  1287. package/out/zero/src/server/change-streamer.js.map +0 -1
  1288. package/out/zero/src/server/main.js +0 -2
  1289. package/out/zero/src/server/main.js.map +0 -1
  1290. package/out/zero/src/server/reaper.js +0 -2
  1291. package/out/zero/src/server/reaper.js.map +0 -1
  1292. package/out/zero/src/server/replicator.js +0 -2
  1293. package/out/zero/src/server/replicator.js.map +0 -1
  1294. package/out/zero/src/server/runner/main.js +0 -2
  1295. package/out/zero/src/server/runner/main.js.map +0 -1
  1296. package/out/zero/src/server/syncer.js +0 -2
  1297. package/out/zero/src/server/syncer.js.map +0 -1
  1298. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
  1299. package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
  1300. package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
  1301. package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
  1302. package/out/zero-cache/src/services/service.js +0 -2
  1303. package/out/zero-cache/src/services/service.js.map +0 -1
  1304. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
  1305. package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
  1306. package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
  1307. package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
  1308. package/out/zero-cache/src/types/satisfies.js +0 -2
  1309. package/out/zero-cache/src/types/satisfies.js.map +0 -1
  1310. package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
  1311. package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
  1312. package/out/zero-events/src/index.js +0 -2
  1313. package/out/zero-events/src/index.js.map +0 -1
  1314. package/out/zero-events/src/json.js +0 -2
  1315. package/out/zero-events/src/json.js.map +0 -1
  1316. package/out/zero-events/src/status.js +0 -3
  1317. package/out/zero-events/src/status.js.map +0 -1
  1318. package/out/zero-pg/src/mod.js +0 -6
  1319. package/out/zero-pg/src/mod.js.map +0 -1
  1320. package/out/zero-protocol/src/error-kind.js +0 -3
  1321. package/out/zero-protocol/src/error-kind.js.map +0 -1
  1322. package/out/zero-protocol/src/error-origin.js +0 -3
  1323. package/out/zero-protocol/src/error-origin.js.map +0 -1
  1324. package/out/zero-protocol/src/error-reason.js +0 -3
  1325. package/out/zero-protocol/src/error-reason.js.map +0 -1
  1326. package/out/zero-schema/src/table-schema.js +0 -7
  1327. package/out/zero-schema/src/table-schema.js.map +0 -1
  1328. package/out/zero-server/src/mod.js +0 -8
  1329. package/out/zero-server/src/mod.js.map +0 -1
  1330. package/out/zero-types/src/schema-value.js +0 -2
  1331. package/out/zero-types/src/schema-value.js.map +0 -1
  1332. package/out/zero-types/src/schema.js +0 -2
  1333. package/out/zero-types/src/schema.js.map +0 -1
  1334. package/out/zero-types/src/server-schema.js +0 -2
  1335. package/out/zero-types/src/server-schema.js.map +0 -1
  1336. package/out/zero.js +0 -95
  1337. package/out/zero.js.map +0 -7
  1338. package/out/zql/src/ivm/change.js +0 -2
  1339. package/out/zql/src/ivm/change.js.map +0 -1
  1340. package/out/zql/src/ivm/default-format.js +0 -2
  1341. package/out/zql/src/ivm/default-format.js.map +0 -1
  1342. package/out/zql/src/ivm/schema.js +0 -2
  1343. package/out/zql/src/ivm/schema.js.map +0 -1
  1344. package/out/zql/src/ivm/source.js +0 -2
  1345. package/out/zql/src/ivm/source.js.map +0 -1
  1346. package/out/zql/src/ivm/view.js +0 -2
  1347. package/out/zql/src/ivm/view.js.map +0 -1
  1348. package/out/zql/src/planner/planner-debug.js +0 -176
  1349. package/out/zql/src/planner/planner-debug.js.map +0 -1
  1350. package/out/zql/src/planner/planner-node.js +0 -2
  1351. package/out/zql/src/planner/planner-node.js.map +0 -1
  1352. package/out/zql/src/query/chained-query.d.ts +0 -35
  1353. package/out/zql/src/query/chained-query.d.ts.map +0 -1
  1354. package/out/zql/src/query/chained-query.js +0 -66
  1355. package/out/zql/src/query/chained-query.js.map +0 -1
  1356. package/out/zql/src/query/query-delegate.js +0 -2
  1357. package/out/zql/src/query/query-delegate.js.map +0 -1
  1358. package/out/zql/src/query/query.js +0 -8
  1359. package/out/zql/src/query/query.js.map +0 -1
  1360. package/out/zql/src/query/root-named-query.d.ts +0 -33
  1361. package/out/zql/src/query/root-named-query.d.ts.map +0 -1
  1362. package/out/zql/src/query/root-named-query.js +0 -95
  1363. package/out/zql/src/query/root-named-query.js.map +0 -1
  1364. package/out/zql/src/query/typed-view.js +0 -2
  1365. package/out/zql/src/query/typed-view.js.map +0 -1
  1366. package/out/zqlite/src/mod.js +0 -5
  1367. package/out/zqlite/src/mod.js.map +0 -1
@@ -0,0 +1,515 @@
1
+ import { RWLock } from "@rocicorp/lock";
2
+ import { joinIterables } from "../../../shared/src/iterables.js";
3
+ import { promiseVoid } from "../../../shared/src/resolved-promises.js";
4
+ import { getSizeOfValue } from "../../../shared/src/size-of-value.js";
5
+ import { createChunk } from "./chunk.js";
6
+ import { computeRefCountUpdates } from "./gc.js";
7
+ import { mustGetChunk } from "./store.js";
8
+ class LazyStore {
9
+ /**
10
+ * This lock is used to ensure correct isolation of Reads and Writes.
11
+ * Multiple Reads are allowed in parallel but only a single Write. Reads and
12
+ * Writes see an isolated view of the store (corresponding to the Serializable
13
+ * level of transaction isolation defined in the SQL standard).
14
+ *
15
+ * To ensure these semantics the read lock must be acquired when a Read is
16
+ * created and held til it is closed, and a Write lock must be acquired when a
17
+ * Write is created and held til it is committed or closed.
18
+ *
19
+ * Code must have a read or write lock to
20
+ * - read `_heads`
21
+ * - read `_memOnlyChunks`
22
+ * - read `_sourceStore`
23
+ * - read and write `_sourceChunksCache`
24
+ * - read and write `_refCounts`
25
+ * - read and write `_refs`
26
+ * and must have a write lock to
27
+ * - write `_heads`
28
+ * - write `_memOnlyChunks`
29
+ */
30
+ #rwLock = new RWLock();
31
+ #heads = /* @__PURE__ */ new Map();
32
+ #sourceStore;
33
+ #chunkHasher;
34
+ #assertValidHash;
35
+ /** The following are protected so testing subclass can access. */
36
+ _memOnlyChunks = /* @__PURE__ */ new Map();
37
+ _sourceChunksCache;
38
+ /**
39
+ * Ref counts are maintained so that chunks which are unreachable
40
+ * from this stores heads can be eagerly and deterministically deleted from
41
+ * `this._memOnlyChunks` and `this._sourceChunksCache`.
42
+ *
43
+ * These ref counts are independent from `this._sourceStore`'s ref counts.
44
+ * These ref counts are based on reachability from `this._heads`.
45
+ * A chunk is deleted from `this._memOnlyChunks` or
46
+ * `this._sourceChunksCache` (which ever it is in) when its ref count becomes
47
+ * zero.
48
+ * These ref counts count the refs in `this._heads` and `this._refs`.
49
+ *
50
+ * Not all reachable chunk's refs are included in `this._refs`, because this
51
+ * would require loading all chunks reachable in the source store in a
52
+ * non-lazy manner. `this._refs` contains the refs of all currently reachable
53
+ * chunks that were ever in `this._memOnlyChunks` or
54
+ * `this._sourceChunksCache` (even if they have been evicted). A
55
+ * chunk's ref information is lazily discovered and stored in `this._refs` and
56
+ * counted in `this._refCounts`. A chunk's entries in `this._refs` and
57
+ * `this._refCounts` are only deleted when a chunk is deleted due to it
58
+ * becoming unreachable (it is not deleted if the chunk is evicted from the
59
+ * source-store cache).
60
+ *
61
+ * The major implication of this lazy discovery of source store refs, is that
62
+ * a reachable source store chunk may not be cached when loaded, because it is
63
+ * not known to be reachable because some of the pertinent refs have not been
64
+ * discovered. However, in practice chunks are read by traversing the graph
65
+ * starting from a head, and all pertinent refs are discovered as part of the
66
+ * traversal.
67
+ *
68
+ * These ref counts can be changed in two ways:
69
+ * 1. A LazyRead has a cache miss and loads a chunk from the source store that
70
+ * is reachable from this._heads. If this chunk's refs are not currently
71
+ * counted, it will not have an entry in `this._refs`. In this case, the
72
+ * chunks refs will be put in `this._refs` and `this._refCounts` will be
73
+ * updated to count them.
74
+ * 2. A LazyWrite commit updates a head (which can result in increasing or
75
+ * decreasing ref count) or puts a reachable chunk (either a `memory-only` or
76
+ * `source` chunk) that references this hash (increasing ref count). The
77
+ * computation of these ref count changes is delegated to the
78
+ * `computeRefCountUpdates` shared with dag.StoreImpl. In order to
79
+ * delegate determining reachability to `computeRefCountUpdates` and defer
80
+ * this determination until commit time, LazyWrite treats cache misses
81
+ * as a 'put' of the lazily-loaded chunk.
82
+ *
83
+ * A chunk's hash may have an entry in `this._refCounts` without that
84
+ * chunk have ever been in `this._memOnlyChunks` or `this._sourceChunksCache`.
85
+ * This is the case when a head or a reachable chunk that was ever in
86
+ * `this._memOnlyChunks` or `this._sourceChunksCache` references a chunk
87
+ * which is not currently cached (either because it has not been read, or
88
+ * because it has been evicted).
89
+ */
90
+ _refCounts = /* @__PURE__ */ new Map();
91
+ _refs = /* @__PURE__ */ new Map();
92
+ constructor(sourceStore, sourceCacheSizeLimit, chunkHasher, assertValidHash, getSizeOfChunk = getSizeOfValue) {
93
+ this._sourceChunksCache = new ChunksCache(
94
+ sourceCacheSizeLimit,
95
+ getSizeOfChunk,
96
+ this._refCounts,
97
+ this._refs
98
+ );
99
+ this.#sourceStore = sourceStore;
100
+ this.#chunkHasher = chunkHasher;
101
+ this.#assertValidHash = assertValidHash;
102
+ }
103
+ async read(sourceRead) {
104
+ const release = await this.#rwLock.read();
105
+ return new LazyRead(
106
+ this.#heads,
107
+ this._memOnlyChunks,
108
+ this._sourceChunksCache,
109
+ this.#sourceStore,
110
+ release,
111
+ this.#assertValidHash,
112
+ sourceRead
113
+ );
114
+ }
115
+ async write() {
116
+ const release = await this.#rwLock.write();
117
+ return new LazyWrite(
118
+ this.#heads,
119
+ this._memOnlyChunks,
120
+ this._sourceChunksCache,
121
+ this.#sourceStore,
122
+ this._refCounts,
123
+ this._refs,
124
+ release,
125
+ this.#chunkHasher,
126
+ this.#assertValidHash
127
+ );
128
+ }
129
+ close() {
130
+ return promiseVoid;
131
+ }
132
+ /**
133
+ * Does not acquire any lock on the store.
134
+ */
135
+ isCached(chunkHash) {
136
+ return this._sourceChunksCache.getWithoutUpdatingLRU(chunkHash) !== void 0;
137
+ }
138
+ withSuspendedSourceCacheEvictsAndDeletes(fn) {
139
+ return this._sourceChunksCache.withSuspendedEvictsAndDeletes(fn);
140
+ }
141
+ }
142
+ class LazyRead {
143
+ _heads;
144
+ _memOnlyChunks;
145
+ _sourceChunksCache;
146
+ _sourceStore;
147
+ #sourceRead = void 0;
148
+ #release;
149
+ #closed = false;
150
+ assertValidHash;
151
+ #sourceReadOwnedByCaller;
152
+ constructor(heads, memOnlyChunks, sourceChunksCache, sourceStore, release, assertValidHash, sourceRead) {
153
+ this._heads = heads;
154
+ this._memOnlyChunks = memOnlyChunks;
155
+ this._sourceChunksCache = sourceChunksCache;
156
+ this._sourceStore = sourceStore;
157
+ this.#release = release;
158
+ this.assertValidHash = assertValidHash;
159
+ this.#sourceRead = sourceRead !== void 0 ? Promise.resolve(sourceRead) : void 0;
160
+ this.#sourceReadOwnedByCaller = sourceRead !== void 0;
161
+ }
162
+ isMemOnlyChunkHash(hash) {
163
+ return this._memOnlyChunks.has(hash);
164
+ }
165
+ async hasChunk(hash) {
166
+ return await this.getChunk(hash) !== void 0;
167
+ }
168
+ async getChunk(hash) {
169
+ const memOnlyChunk = this._memOnlyChunks.get(hash);
170
+ if (memOnlyChunk !== void 0) {
171
+ return memOnlyChunk;
172
+ }
173
+ let chunk = this._sourceChunksCache.get(hash);
174
+ if (chunk === void 0) {
175
+ chunk = await (await this._getSourceRead()).getChunk(hash);
176
+ if (chunk !== void 0) {
177
+ this._sourceChunksCache.put(chunk);
178
+ }
179
+ }
180
+ return chunk;
181
+ }
182
+ mustGetChunk(hash) {
183
+ return mustGetChunk(this, hash);
184
+ }
185
+ getHead(name) {
186
+ return Promise.resolve(this._heads.get(name));
187
+ }
188
+ release() {
189
+ if (!this.#closed) {
190
+ this.#release();
191
+ if (!this.#sourceReadOwnedByCaller) {
192
+ this.#sourceRead?.then((read) => read.release()).catch((_) => {
193
+ });
194
+ }
195
+ this.#closed = true;
196
+ }
197
+ }
198
+ get closed() {
199
+ return this.#closed;
200
+ }
201
+ _getSourceRead() {
202
+ if (!this.#sourceRead) {
203
+ this.#sourceRead = this._sourceStore.read();
204
+ }
205
+ return this.#sourceRead;
206
+ }
207
+ }
208
+ class LazyWrite extends LazyRead {
209
+ #refCounts;
210
+ #refs;
211
+ #chunkHasher;
212
+ _pendingHeadChanges = /* @__PURE__ */ new Map();
213
+ _pendingMemOnlyChunks = /* @__PURE__ */ new Map();
214
+ _pendingCachedChunks = /* @__PURE__ */ new Map();
215
+ #createdChunks = /* @__PURE__ */ new Set();
216
+ constructor(heads, memOnlyChunks, sourceChunksCache, sourceStore, refCounts, refs, release, chunkHasher, assertValidHash) {
217
+ super(
218
+ heads,
219
+ memOnlyChunks,
220
+ sourceChunksCache,
221
+ sourceStore,
222
+ release,
223
+ assertValidHash
224
+ );
225
+ this.#refCounts = refCounts;
226
+ this.#refs = refs;
227
+ this.#chunkHasher = chunkHasher;
228
+ }
229
+ createChunk = (data, refs) => {
230
+ const chunk = createChunk(data, refs, this.#chunkHasher);
231
+ this.#createdChunks.add(chunk.hash);
232
+ return chunk;
233
+ };
234
+ putChunk(c, size) {
235
+ const { hash, meta } = c;
236
+ this.assertValidHash(hash);
237
+ if (meta.length > 0) {
238
+ for (const h of meta) {
239
+ this.assertValidHash(h);
240
+ }
241
+ }
242
+ if (this.#createdChunks.has(hash) || this.isMemOnlyChunkHash(hash)) {
243
+ this._pendingMemOnlyChunks.set(hash, c);
244
+ } else {
245
+ this._pendingCachedChunks.set(hash, { chunk: c, size: size ?? -1 });
246
+ }
247
+ return promiseVoid;
248
+ }
249
+ async setHead(name, hash) {
250
+ await this.#setHead(name, hash);
251
+ }
252
+ async removeHead(name) {
253
+ await this.#setHead(name, void 0);
254
+ }
255
+ async #setHead(name, hash) {
256
+ const oldHash = await this.getHead(name);
257
+ const v = this._pendingHeadChanges.get(name);
258
+ if (v === void 0) {
259
+ this._pendingHeadChanges.set(name, { new: hash, old: oldHash });
260
+ } else {
261
+ v.new = hash;
262
+ }
263
+ }
264
+ isMemOnlyChunkHash(hash) {
265
+ return this._pendingMemOnlyChunks.has(hash) || super.isMemOnlyChunkHash(hash);
266
+ }
267
+ async getChunk(hash) {
268
+ const pendingMemOnlyChunk = this._pendingMemOnlyChunks.get(hash);
269
+ if (pendingMemOnlyChunk !== void 0) {
270
+ return pendingMemOnlyChunk;
271
+ }
272
+ const memOnlyChunk = this._memOnlyChunks.get(hash);
273
+ if (memOnlyChunk !== void 0) {
274
+ return memOnlyChunk;
275
+ }
276
+ const pendingCachedChunk = this._pendingCachedChunks.get(hash);
277
+ if (pendingCachedChunk !== void 0) {
278
+ return pendingCachedChunk.chunk;
279
+ }
280
+ let chunk = this._sourceChunksCache.get(hash);
281
+ if (chunk === void 0) {
282
+ chunk = await (await this._getSourceRead()).getChunk(hash);
283
+ if (chunk !== void 0) {
284
+ this._pendingCachedChunks.set(chunk.hash, { chunk, size: -1 });
285
+ }
286
+ }
287
+ return chunk;
288
+ }
289
+ getHead(name) {
290
+ const headChange = this._pendingHeadChanges.get(name);
291
+ if (headChange) {
292
+ return Promise.resolve(headChange.new);
293
+ }
294
+ return super.getHead(name);
295
+ }
296
+ async commit() {
297
+ const pendingChunks = new Set(
298
+ joinIterables(
299
+ this._pendingMemOnlyChunks.keys(),
300
+ this._pendingCachedChunks.keys()
301
+ )
302
+ );
303
+ const refCountUpdates = await computeRefCountUpdates(
304
+ this._pendingHeadChanges.values(),
305
+ pendingChunks,
306
+ this
307
+ );
308
+ for (const [hash, count] of refCountUpdates) {
309
+ if (this.isMemOnlyChunkHash(hash)) {
310
+ if (count === 0) {
311
+ this.#refCounts.delete(hash);
312
+ this._memOnlyChunks.delete(hash);
313
+ this.#refs.delete(hash);
314
+ } else {
315
+ this.#refCounts.set(hash, count);
316
+ const chunk = this._pendingMemOnlyChunks.get(hash);
317
+ if (chunk) {
318
+ this.#refs.set(hash, chunk.meta);
319
+ this._memOnlyChunks.set(hash, chunk);
320
+ }
321
+ }
322
+ refCountUpdates.delete(hash);
323
+ }
324
+ }
325
+ this._sourceChunksCache.updateForCommit(
326
+ this._pendingCachedChunks,
327
+ refCountUpdates
328
+ );
329
+ for (const [name, headChange] of this._pendingHeadChanges) {
330
+ if (headChange.new) {
331
+ this._heads.set(name, headChange.new);
332
+ } else {
333
+ this._heads.delete(name);
334
+ }
335
+ }
336
+ this._pendingMemOnlyChunks.clear();
337
+ this._pendingCachedChunks.clear();
338
+ this._pendingHeadChanges.clear();
339
+ this.release();
340
+ }
341
+ getRefCount(hash) {
342
+ return this.#refCounts.get(hash);
343
+ }
344
+ getRefs(hash) {
345
+ const pendingMemOnlyChunk = this._pendingMemOnlyChunks.get(hash);
346
+ if (pendingMemOnlyChunk) {
347
+ return pendingMemOnlyChunk.meta;
348
+ }
349
+ const memOnlyChunk = this._memOnlyChunks.get(hash);
350
+ if (memOnlyChunk) {
351
+ return memOnlyChunk.meta;
352
+ }
353
+ const pendingCachedChunk = this._pendingCachedChunks.get(hash);
354
+ if (pendingCachedChunk !== void 0) {
355
+ return pendingCachedChunk.chunk.meta;
356
+ }
357
+ return this.#refs.get(hash);
358
+ }
359
+ areRefsCounted(hash) {
360
+ return this.#refs.has(hash);
361
+ }
362
+ chunksPersisted(chunkHashes) {
363
+ const chunksToCache = [];
364
+ for (const chunkHash of chunkHashes) {
365
+ const chunk = this._memOnlyChunks.get(chunkHash);
366
+ if (chunk) {
367
+ this._memOnlyChunks.delete(chunkHash);
368
+ chunksToCache.push(chunk);
369
+ }
370
+ }
371
+ this._sourceChunksCache.persisted(chunksToCache);
372
+ }
373
+ }
374
+ class ChunksCache {
375
+ #cacheSizeLimit;
376
+ #getSizeOfChunk;
377
+ #refCounts;
378
+ #refs;
379
+ #size = 0;
380
+ #evictsAndDeletesSuspended = false;
381
+ #suspendedDeletes = [];
382
+ /**
383
+ * Iteration order is from least to most recently used.
384
+ *
385
+ * Public so that testing subclass can access.
386
+ */
387
+ cacheEntries = /* @__PURE__ */ new Map();
388
+ constructor(cacheSizeLimit, getSizeOfChunk, refCounts, refs) {
389
+ this.#cacheSizeLimit = cacheSizeLimit;
390
+ this.#getSizeOfChunk = getSizeOfChunk;
391
+ this.#refCounts = refCounts;
392
+ this.#refs = refs;
393
+ }
394
+ get(hash) {
395
+ const cacheEntry = this.cacheEntries.get(hash);
396
+ if (cacheEntry) {
397
+ this.cacheEntries.delete(hash);
398
+ this.cacheEntries.set(hash, cacheEntry);
399
+ }
400
+ return cacheEntry?.chunk;
401
+ }
402
+ getWithoutUpdatingLRU(hash) {
403
+ return this.cacheEntries.get(hash)?.chunk;
404
+ }
405
+ put(chunk) {
406
+ const { hash } = chunk;
407
+ const oldCacheEntry = this.cacheEntries.get(hash);
408
+ if (oldCacheEntry) {
409
+ this.cacheEntries.delete(hash);
410
+ this.cacheEntries.set(hash, oldCacheEntry);
411
+ return;
412
+ }
413
+ const refCount = this.#refCounts.get(hash);
414
+ if (refCount === void 0 || refCount < 1) {
415
+ return;
416
+ }
417
+ if (!this.#cacheChunk(chunk)) {
418
+ return;
419
+ }
420
+ if (!this.#refs.has(hash)) {
421
+ for (const refHash of chunk.meta) {
422
+ this.#refCounts.set(refHash, (this.#refCounts.get(refHash) || 0) + 1);
423
+ }
424
+ this.#refs.set(hash, chunk.meta);
425
+ }
426
+ this.#ensureCacheSizeLimit();
427
+ }
428
+ #ensureCacheSizeLimit() {
429
+ if (this.#evictsAndDeletesSuspended) {
430
+ return;
431
+ }
432
+ for (const entry of this.cacheEntries.values()) {
433
+ if (this.#size <= this.#cacheSizeLimit) {
434
+ break;
435
+ }
436
+ this.#evict(entry);
437
+ }
438
+ }
439
+ #cacheChunk(chunk, size) {
440
+ const chunkSize = size ?? this.#getSizeOfChunk(chunk);
441
+ if (chunkSize > this.#cacheSizeLimit) {
442
+ return false;
443
+ }
444
+ this.#size += chunkSize;
445
+ this.cacheEntries.set(chunk.hash, { chunk, size: chunkSize });
446
+ return true;
447
+ }
448
+ #evict(cacheEntry) {
449
+ const { hash } = cacheEntry.chunk;
450
+ this.#size -= cacheEntry.size;
451
+ this.cacheEntries.delete(hash);
452
+ }
453
+ #deleteEntryByHash(hash) {
454
+ this.#refCounts.delete(hash);
455
+ this.#refs.delete(hash);
456
+ const cacheEntry = this.cacheEntries.get(hash);
457
+ if (cacheEntry) {
458
+ this.#size -= cacheEntry.size;
459
+ this.cacheEntries.delete(hash);
460
+ }
461
+ }
462
+ updateForCommit(chunksToPut, refCountUpdates) {
463
+ for (const [hash, count] of refCountUpdates) {
464
+ if (count === 0) {
465
+ if (!this.#evictsAndDeletesSuspended) {
466
+ this.#deleteEntryByHash(hash);
467
+ } else {
468
+ this.#refCounts.set(hash, 0);
469
+ this.#suspendedDeletes.push(hash);
470
+ }
471
+ } else {
472
+ this.#refCounts.set(hash, count);
473
+ const chunkAndSize = chunksToPut.get(hash);
474
+ if (chunkAndSize) {
475
+ const { chunk, size } = chunkAndSize;
476
+ const oldCacheEntry = this.cacheEntries.get(hash);
477
+ if (oldCacheEntry) {
478
+ this.cacheEntries.delete(hash);
479
+ this.cacheEntries.set(hash, oldCacheEntry);
480
+ } else {
481
+ this.#cacheChunk(chunk, size !== -1 ? size : void 0);
482
+ this.#refs.set(hash, chunk.meta);
483
+ }
484
+ }
485
+ }
486
+ }
487
+ this.#ensureCacheSizeLimit();
488
+ }
489
+ persisted(chunks) {
490
+ for (const chunk of chunks) {
491
+ this.#cacheChunk(chunk);
492
+ }
493
+ this.#ensureCacheSizeLimit();
494
+ }
495
+ async withSuspendedEvictsAndDeletes(fn) {
496
+ this.#evictsAndDeletesSuspended = true;
497
+ try {
498
+ return await fn();
499
+ } finally {
500
+ this.#evictsAndDeletesSuspended = false;
501
+ for (const hash of this.#suspendedDeletes) {
502
+ if (this.#refCounts.get(hash) === 0) {
503
+ this.#deleteEntryByHash(hash);
504
+ }
505
+ }
506
+ this.#ensureCacheSizeLimit();
507
+ }
508
+ }
509
+ }
510
+ export {
511
+ LazyRead,
512
+ LazyStore,
513
+ LazyWrite
514
+ };
515
+ //# sourceMappingURL=lazy-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-store.js","sources":["../../../../../replicache/src/dag/lazy-store.ts"],"sourcesContent":["import {RWLock} from '@rocicorp/lock';\nimport {joinIterables} from '../../../shared/src/iterables.ts';\nimport {promiseVoid} from '../../../shared/src/resolved-promises.ts';\nimport {getSizeOfValue} from '../../../shared/src/size-of-value.ts';\nimport type {MaybePromise} from '../../../shared/src/types.ts';\nimport type {Hash} from '../hash.ts';\nimport type {Chunk} from './chunk.ts';\nimport {type ChunkHasher, type Refs, createChunk} from './chunk.ts';\nimport {\n type HeadChange,\n type RefCountUpdatesDelegate,\n computeRefCountUpdates,\n} from './gc.ts';\nimport {type Read, type Store, type Write, mustGetChunk} from './store.ts';\n\n/**\n * Dag Store which lazily loads values from a source store and then caches\n * them in an LRU cache. The memory cache for chunks from the source store\n * size is limited to `sourceCacheSizeLimit` bytes, and values are evicted in an\n * LRU fashion. The purpose of this store is to avoid holding the entire client\n * view (i.e. the source store's content) in each tab's JavaScript heap.\n *\n * This store's heads are independent from the heads of source store, and are\n * only stored in memory.\n *\n * Chunks which are created via this store's {@link Write} transaction's\n * {@link createChunk} method are assumed to not be persisted to the source\n * store and thus are cached separately from the source store chunks. These\n * memory-only chunks will not be evicted, and their sizes are not counted\n * towards the source chunk cache size. A memory-only chunk will be deleted if\n * it is no longer reachable from one of this store's heads.\n *\n * Writes only manipulate the in memory state of this store and do not alter the\n * source store. Thus values must be written to the source store through a\n * separate process (see {@link persist}).\n *\n * Intended use:\n * 1. source store is the 'perdag', a slower persistent store (i.e.\n * dag.StoreImpl using a kv.IDBStore)\n * 2. this store's 'main' head is initialized to the hash of a chunk containing\n * a commit in the source store\n * 3. reads lazily read chunks from the source store and cache them\n * 3. writes are initially made to this store with memory-only chunks\n * 4. writes are asynchronously persisted to the source store through a separate\n * process (see {@link persist}}. This process gathers memory-only chunks\n * from this store and then writes them to the source store. It then informs\n * this store that these chunks are no longer memory-only by calling\n * {@link chunksPersisted}, which move these chunks\n * to this store's LRU cache of source chunks (making them eligible for\n * eviction).\n *\n * @param sourceStore Store to lazy load and cache values from.\n * @param sourceCacheSizeLimit Size limit in bytes for cache of chunks loaded\n * from `sourceStore`. This size of a value is determined using\n * `getSizeOfValue`. Keys do not count towards cache size. Memory-only chunks\n * do not count towards cache size.\n * @param getSizeOfValue Function for measuring the size in bytes of a value.\n */\nexport class LazyStore implements Store {\n /**\n * This lock is used to ensure correct isolation of Reads and Writes.\n * Multiple Reads are allowed in parallel but only a single Write. Reads and\n * Writes see an isolated view of the store (corresponding to the Serializable\n * level of transaction isolation defined in the SQL standard).\n *\n * To ensure these semantics the read lock must be acquired when a Read is\n * created and held til it is closed, and a Write lock must be acquired when a\n * Write is created and held til it is committed or closed.\n *\n * Code must have a read or write lock to\n * - read `_heads`\n * - read `_memOnlyChunks`\n * - read `_sourceStore`\n * - read and write `_sourceChunksCache`\n * - read and write `_refCounts`\n * - read and write `_refs`\n * and must have a write lock to\n * - write `_heads`\n * - write `_memOnlyChunks`\n */\n readonly #rwLock = new RWLock();\n readonly #heads = new Map<string, Hash>();\n readonly #sourceStore: Store;\n readonly #chunkHasher: ChunkHasher;\n readonly #assertValidHash: (hash: Hash) => void;\n\n /** The following are protected so testing subclass can access. */\n protected readonly _memOnlyChunks = new Map<Hash, Chunk>();\n protected readonly _sourceChunksCache: ChunksCache;\n /**\n * Ref counts are maintained so that chunks which are unreachable\n * from this stores heads can be eagerly and deterministically deleted from\n * `this._memOnlyChunks` and `this._sourceChunksCache`.\n *\n * These ref counts are independent from `this._sourceStore`'s ref counts.\n * These ref counts are based on reachability from `this._heads`.\n * A chunk is deleted from `this._memOnlyChunks` or\n * `this._sourceChunksCache` (which ever it is in) when its ref count becomes\n * zero.\n * These ref counts count the refs in `this._heads` and `this._refs`.\n *\n * Not all reachable chunk's refs are included in `this._refs`, because this\n * would require loading all chunks reachable in the source store in a\n * non-lazy manner. `this._refs` contains the refs of all currently reachable\n * chunks that were ever in `this._memOnlyChunks` or\n * `this._sourceChunksCache` (even if they have been evicted). A\n * chunk's ref information is lazily discovered and stored in `this._refs` and\n * counted in `this._refCounts`. A chunk's entries in `this._refs` and\n * `this._refCounts` are only deleted when a chunk is deleted due to it\n * becoming unreachable (it is not deleted if the chunk is evicted from the\n * source-store cache).\n *\n * The major implication of this lazy discovery of source store refs, is that\n * a reachable source store chunk may not be cached when loaded, because it is\n * not known to be reachable because some of the pertinent refs have not been\n * discovered. However, in practice chunks are read by traversing the graph\n * starting from a head, and all pertinent refs are discovered as part of the\n * traversal.\n *\n * These ref counts can be changed in two ways:\n * 1. A LazyRead has a cache miss and loads a chunk from the source store that\n * is reachable from this._heads. If this chunk's refs are not currently\n * counted, it will not have an entry in `this._refs`. In this case, the\n * chunks refs will be put in `this._refs` and `this._refCounts` will be\n * updated to count them.\n * 2. A LazyWrite commit updates a head (which can result in increasing or\n * decreasing ref count) or puts a reachable chunk (either a `memory-only` or\n * `source` chunk) that references this hash (increasing ref count). The\n * computation of these ref count changes is delegated to the\n * `computeRefCountUpdates` shared with dag.StoreImpl. In order to\n * delegate determining reachability to `computeRefCountUpdates` and defer\n * this determination until commit time, LazyWrite treats cache misses\n * as a 'put' of the lazily-loaded chunk.\n *\n * A chunk's hash may have an entry in `this._refCounts` without that\n * chunk have ever been in `this._memOnlyChunks` or `this._sourceChunksCache`.\n * This is the case when a head or a reachable chunk that was ever in\n * `this._memOnlyChunks` or `this._sourceChunksCache` references a chunk\n * which is not currently cached (either because it has not been read, or\n * because it has been evicted).\n */\n protected readonly _refCounts = new Map<Hash, number>();\n protected readonly _refs = new Map<Hash, readonly Hash[]>();\n\n constructor(\n sourceStore: Store,\n sourceCacheSizeLimit: number,\n chunkHasher: ChunkHasher,\n assertValidHash: (hash: Hash) => void,\n getSizeOfChunk: (chunk: Chunk) => number = getSizeOfValue,\n ) {\n this._sourceChunksCache = new ChunksCache(\n sourceCacheSizeLimit,\n getSizeOfChunk,\n this._refCounts,\n this._refs,\n );\n this.#sourceStore = sourceStore;\n this.#chunkHasher = chunkHasher;\n this.#assertValidHash = assertValidHash;\n }\n\n async read(sourceRead?: Read): Promise<LazyRead> {\n const release = await this.#rwLock.read();\n return new LazyRead(\n this.#heads,\n this._memOnlyChunks,\n this._sourceChunksCache,\n this.#sourceStore,\n release,\n this.#assertValidHash,\n sourceRead,\n );\n }\n\n async write(): Promise<LazyWrite> {\n const release = await this.#rwLock.write();\n return new LazyWrite(\n this.#heads,\n this._memOnlyChunks,\n this._sourceChunksCache,\n this.#sourceStore,\n this._refCounts,\n this._refs,\n release,\n this.#chunkHasher,\n this.#assertValidHash,\n );\n }\n\n close(): Promise<void> {\n return promiseVoid;\n }\n\n /**\n * Does not acquire any lock on the store.\n */\n isCached(chunkHash: Hash): boolean {\n return (\n this._sourceChunksCache.getWithoutUpdatingLRU(chunkHash) !== undefined\n );\n }\n\n withSuspendedSourceCacheEvictsAndDeletes<T>(\n fn: () => MaybePromise<T>,\n ): Promise<T> {\n return this._sourceChunksCache.withSuspendedEvictsAndDeletes(fn);\n }\n}\n\nexport class LazyRead implements Read {\n protected readonly _heads: Map<string, Hash>;\n protected readonly _memOnlyChunks: Map<Hash, Chunk>;\n protected readonly _sourceChunksCache: ChunksCache;\n protected readonly _sourceStore: Store;\n #sourceRead: Promise<Read> | undefined = undefined;\n readonly #release: () => void;\n #closed = false;\n readonly assertValidHash: (hash: Hash) => void;\n readonly #sourceReadOwnedByCaller: boolean;\n\n constructor(\n heads: Map<string, Hash>,\n memOnlyChunks: Map<Hash, Chunk>,\n sourceChunksCache: ChunksCache,\n sourceStore: Store,\n release: () => void,\n assertValidHash: (hash: Hash) => void,\n // If the lazyRead is being run in the context of an existing\n // read, or write, from the perdag then we must use _that_\n // transaction's read. Trying to open our own `sourceRead` will\n // cause the outer transaction to auto-commit.\n sourceRead?: Read,\n ) {\n this._heads = heads;\n this._memOnlyChunks = memOnlyChunks;\n this._sourceChunksCache = sourceChunksCache;\n this._sourceStore = sourceStore;\n this.#release = release;\n this.assertValidHash = assertValidHash;\n this.#sourceRead =\n sourceRead !== undefined ? Promise.resolve(sourceRead) : undefined;\n this.#sourceReadOwnedByCaller = sourceRead !== undefined;\n }\n\n isMemOnlyChunkHash(hash: Hash): boolean {\n return this._memOnlyChunks.has(hash);\n }\n\n async hasChunk(hash: Hash): Promise<boolean> {\n return (await this.getChunk(hash)) !== undefined;\n }\n\n async getChunk(hash: Hash): Promise<Chunk | undefined> {\n const memOnlyChunk = this._memOnlyChunks.get(hash);\n if (memOnlyChunk !== undefined) {\n return memOnlyChunk;\n }\n let chunk = this._sourceChunksCache.get(hash);\n if (chunk === undefined) {\n chunk = await (await this._getSourceRead()).getChunk(hash);\n if (chunk !== undefined) {\n this._sourceChunksCache.put(chunk);\n }\n }\n return chunk;\n }\n\n mustGetChunk(hash: Hash): Promise<Chunk> {\n return mustGetChunk(this, hash);\n }\n\n getHead(name: string): Promise<Hash | undefined> {\n return Promise.resolve(this._heads.get(name));\n }\n\n release(): void {\n if (!this.#closed) {\n this.#release();\n if (!this.#sourceReadOwnedByCaller) {\n this.#sourceRead\n ?.then(read => read.release())\n // If creation of the read failed there is nothing to release.\n // Catch to avoid `Uncaught (in promise)` errors being reported.\n .catch(_ => {});\n }\n this.#closed = true;\n }\n }\n\n get closed(): boolean {\n return this.#closed;\n }\n\n protected _getSourceRead(): Promise<Read> {\n if (!this.#sourceRead) {\n this.#sourceRead = this._sourceStore.read();\n }\n return this.#sourceRead;\n }\n}\n\nexport class LazyWrite\n extends LazyRead\n implements Write, RefCountUpdatesDelegate\n{\n readonly #refCounts: Map<Hash, number>;\n readonly #refs: Map<Hash, readonly Hash[]>;\n readonly #chunkHasher: ChunkHasher;\n protected readonly _pendingHeadChanges = new Map<string, HeadChange>();\n protected readonly _pendingMemOnlyChunks = new Map<Hash, Chunk>();\n protected readonly _pendingCachedChunks = new Map<\n Hash,\n {chunk: Chunk; size: number}\n >();\n readonly #createdChunks = new Set<Hash>();\n\n constructor(\n heads: Map<string, Hash>,\n memOnlyChunks: Map<Hash, Chunk>,\n sourceChunksCache: ChunksCache,\n sourceStore: Store,\n refCounts: Map<Hash, number>,\n refs: Map<Hash, readonly Hash[]>,\n release: () => void,\n chunkHasher: ChunkHasher,\n assertValidHash: (hash: Hash) => void,\n ) {\n super(\n heads,\n memOnlyChunks,\n sourceChunksCache,\n sourceStore,\n release,\n assertValidHash,\n );\n this.#refCounts = refCounts;\n this.#refs = refs;\n this.#chunkHasher = chunkHasher;\n }\n\n createChunk = <V>(data: V, refs: Refs): Chunk<V> => {\n const chunk = createChunk(data, refs, this.#chunkHasher);\n this.#createdChunks.add(chunk.hash);\n return chunk;\n };\n\n putChunk<V>(c: Chunk<V>, size?: number): Promise<void> {\n const {hash, meta} = c;\n this.assertValidHash(hash);\n if (meta.length > 0) {\n for (const h of meta) {\n this.assertValidHash(h);\n }\n }\n if (this.#createdChunks.has(hash) || this.isMemOnlyChunkHash(hash)) {\n this._pendingMemOnlyChunks.set(hash, c);\n } else {\n this._pendingCachedChunks.set(hash, {chunk: c, size: size ?? -1});\n }\n return promiseVoid;\n }\n\n async setHead(name: string, hash: Hash): Promise<void> {\n await this.#setHead(name, hash);\n }\n\n async removeHead(name: string): Promise<void> {\n await this.#setHead(name, undefined);\n }\n\n async #setHead(name: string, hash: Hash | undefined): Promise<void> {\n const oldHash = await this.getHead(name);\n const v = this._pendingHeadChanges.get(name);\n if (v === undefined) {\n this._pendingHeadChanges.set(name, {new: hash, old: oldHash});\n } else {\n // Keep old if existing\n v.new = hash;\n }\n }\n\n override isMemOnlyChunkHash(hash: Hash): boolean {\n return (\n this._pendingMemOnlyChunks.has(hash) || super.isMemOnlyChunkHash(hash)\n );\n }\n\n override async getChunk(hash: Hash): Promise<Chunk | undefined> {\n const pendingMemOnlyChunk = this._pendingMemOnlyChunks.get(hash);\n if (pendingMemOnlyChunk !== undefined) {\n return pendingMemOnlyChunk;\n }\n const memOnlyChunk = this._memOnlyChunks.get(hash);\n if (memOnlyChunk !== undefined) {\n return memOnlyChunk;\n }\n // In order to delegate determining reachability to `computeRefCountUpdates`\n // and defer this determination until commit time, treat cache misses\n // as a 'put' of the lazily-loaded chunk.\n const pendingCachedChunk = this._pendingCachedChunks.get(hash);\n if (pendingCachedChunk !== undefined) {\n return pendingCachedChunk.chunk;\n }\n let chunk = this._sourceChunksCache.get(hash);\n if (chunk === undefined) {\n chunk = await (await this._getSourceRead()).getChunk(hash);\n if (chunk !== undefined) {\n this._pendingCachedChunks.set(chunk.hash, {chunk, size: -1});\n }\n }\n return chunk;\n }\n\n override getHead(name: string): Promise<Hash | undefined> {\n const headChange = this._pendingHeadChanges.get(name);\n if (headChange) {\n return Promise.resolve(headChange.new);\n }\n return super.getHead(name);\n }\n\n async commit(): Promise<void> {\n const pendingChunks = new Set(\n joinIterables(\n this._pendingMemOnlyChunks.keys(),\n this._pendingCachedChunks.keys(),\n ),\n );\n const refCountUpdates = await computeRefCountUpdates(\n this._pendingHeadChanges.values(),\n pendingChunks,\n this,\n );\n\n for (const [hash, count] of refCountUpdates) {\n if (this.isMemOnlyChunkHash(hash)) {\n if (count === 0) {\n this.#refCounts.delete(hash);\n this._memOnlyChunks.delete(hash);\n this.#refs.delete(hash);\n } else {\n this.#refCounts.set(hash, count);\n const chunk = this._pendingMemOnlyChunks.get(hash);\n if (chunk) {\n this.#refs.set(hash, chunk.meta);\n this._memOnlyChunks.set(hash, chunk);\n }\n }\n refCountUpdates.delete(hash);\n }\n }\n\n this._sourceChunksCache.updateForCommit(\n this._pendingCachedChunks,\n refCountUpdates,\n );\n\n for (const [name, headChange] of this._pendingHeadChanges) {\n if (headChange.new) {\n this._heads.set(name, headChange.new);\n } else {\n this._heads.delete(name);\n }\n }\n\n this._pendingMemOnlyChunks.clear();\n this._pendingCachedChunks.clear();\n this._pendingHeadChanges.clear();\n this.release();\n }\n\n getRefCount(hash: Hash): number | undefined {\n return this.#refCounts.get(hash);\n }\n\n getRefs(hash: Hash): readonly Hash[] | undefined {\n const pendingMemOnlyChunk = this._pendingMemOnlyChunks.get(hash);\n if (pendingMemOnlyChunk) {\n return pendingMemOnlyChunk.meta;\n }\n const memOnlyChunk = this._memOnlyChunks.get(hash);\n if (memOnlyChunk) {\n return memOnlyChunk.meta;\n }\n const pendingCachedChunk = this._pendingCachedChunks.get(hash);\n if (pendingCachedChunk !== undefined) {\n return pendingCachedChunk.chunk.meta;\n }\n return this.#refs.get(hash);\n }\n\n areRefsCounted(hash: Hash): boolean {\n return this.#refs.has(hash);\n }\n\n chunksPersisted(chunkHashes: readonly Hash[]): void {\n const chunksToCache = [];\n for (const chunkHash of chunkHashes) {\n const chunk = this._memOnlyChunks.get(chunkHash);\n if (chunk) {\n this._memOnlyChunks.delete(chunkHash);\n chunksToCache.push(chunk);\n }\n }\n this._sourceChunksCache.persisted(chunksToCache);\n }\n}\n\ntype CacheEntry = {\n chunk: Chunk;\n size: number;\n};\n\nclass ChunksCache {\n readonly #cacheSizeLimit: number;\n readonly #getSizeOfChunk: (chunk: Chunk) => number;\n readonly #refCounts: Map<Hash, number>;\n readonly #refs: Map<Hash, readonly Hash[]>;\n #size = 0;\n #evictsAndDeletesSuspended = false;\n readonly #suspendedDeletes: Hash[] = [];\n\n /**\n * Iteration order is from least to most recently used.\n *\n * Public so that testing subclass can access.\n */\n readonly cacheEntries = new Map<Hash, CacheEntry>();\n\n constructor(\n cacheSizeLimit: number,\n getSizeOfChunk: (v: Chunk) => number,\n refCounts: Map<Hash, number>,\n refs: Map<Hash, readonly Hash[]>,\n ) {\n this.#cacheSizeLimit = cacheSizeLimit;\n this.#getSizeOfChunk = getSizeOfChunk;\n this.#refCounts = refCounts;\n this.#refs = refs;\n }\n\n get(hash: Hash): Chunk | undefined {\n const cacheEntry = this.cacheEntries.get(hash);\n if (cacheEntry) {\n // Update order in map for LRU tracking.\n this.cacheEntries.delete(hash);\n this.cacheEntries.set(hash, cacheEntry);\n }\n return cacheEntry?.chunk;\n }\n\n getWithoutUpdatingLRU(hash: Hash): Chunk | undefined {\n return this.cacheEntries.get(hash)?.chunk;\n }\n\n put(chunk: Chunk): void {\n const {hash} = chunk;\n // If there is an existing cache entry then the cached value must be\n // equivalent. Update order in map for LRU tracking and early return.\n const oldCacheEntry = this.cacheEntries.get(hash);\n if (oldCacheEntry) {\n this.cacheEntries.delete(hash);\n this.cacheEntries.set(hash, oldCacheEntry);\n return;\n }\n\n // Only cache if there is a ref from a head to this chunk\n const refCount = this.#refCounts.get(hash);\n if (refCount === undefined || refCount < 1) {\n return;\n }\n if (!this.#cacheChunk(chunk)) {\n return;\n }\n if (!this.#refs.has(hash)) {\n for (const refHash of chunk.meta) {\n this.#refCounts.set(refHash, (this.#refCounts.get(refHash) || 0) + 1);\n }\n this.#refs.set(hash, chunk.meta);\n }\n\n this.#ensureCacheSizeLimit();\n }\n\n #ensureCacheSizeLimit() {\n if (this.#evictsAndDeletesSuspended) {\n return;\n }\n for (const entry of this.cacheEntries.values()) {\n if (this.#size <= this.#cacheSizeLimit) {\n break;\n }\n this.#evict(entry);\n }\n }\n\n #cacheChunk(chunk: Chunk, size?: number): boolean {\n const chunkSize = size ?? this.#getSizeOfChunk(chunk);\n if (chunkSize > this.#cacheSizeLimit) {\n // This value cannot be cached due to its size exceeding the\n // cache size limit, don't evict other entries to try to make\n // room for it.\n return false;\n }\n this.#size += chunkSize;\n this.cacheEntries.set(chunk.hash, {chunk, size: chunkSize});\n return true;\n }\n\n #evict(cacheEntry: CacheEntry): void {\n const {hash} = cacheEntry.chunk;\n this.#size -= cacheEntry.size;\n this.cacheEntries.delete(hash);\n }\n\n #deleteEntryByHash(hash: Hash): void {\n this.#refCounts.delete(hash);\n this.#refs.delete(hash);\n const cacheEntry = this.cacheEntries.get(hash);\n if (cacheEntry) {\n this.#size -= cacheEntry.size;\n this.cacheEntries.delete(hash);\n }\n }\n\n updateForCommit(\n chunksToPut: Map<Hash, {chunk: Chunk; size: number}>,\n refCountUpdates: Map<Hash, number>,\n ): void {\n for (const [hash, count] of refCountUpdates) {\n if (count === 0) {\n if (!this.#evictsAndDeletesSuspended) {\n this.#deleteEntryByHash(hash);\n } else {\n this.#refCounts.set(hash, 0);\n this.#suspendedDeletes.push(hash);\n }\n } else {\n this.#refCounts.set(hash, count);\n const chunkAndSize = chunksToPut.get(hash);\n if (chunkAndSize) {\n const {chunk, size} = chunkAndSize;\n const oldCacheEntry = this.cacheEntries.get(hash);\n if (oldCacheEntry) {\n // If there is an existing cache entry then the cached value must be\n // equivalent. Update order in map for LRU tracking but avoid\n // recomputing size and creating a new cache entry.\n this.cacheEntries.delete(hash);\n this.cacheEntries.set(hash, oldCacheEntry);\n } else {\n this.#cacheChunk(chunk, size !== -1 ? size : undefined);\n this.#refs.set(hash, chunk.meta);\n }\n }\n }\n }\n this.#ensureCacheSizeLimit();\n }\n\n persisted(chunks: Iterable<Chunk>) {\n for (const chunk of chunks) {\n this.#cacheChunk(chunk);\n }\n this.#ensureCacheSizeLimit();\n }\n\n async withSuspendedEvictsAndDeletes<T>(\n fn: () => MaybePromise<T>,\n ): Promise<T> {\n this.#evictsAndDeletesSuspended = true;\n try {\n return await fn();\n } finally {\n this.#evictsAndDeletesSuspended = false;\n for (const hash of this.#suspendedDeletes) {\n if (this.#refCounts.get(hash) === 0) {\n this.#deleteEntryByHash(hash);\n }\n }\n this.#ensureCacheSizeLimit();\n }\n }\n}\n"],"names":[],"mappings":"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"}